properties.schema.json 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. {
  2. "definitions": {
  3. "propertyList": {
  4. "type": "array",
  5. "minItems": 1,
  6. "uniqueItems": true,
  7. "items": {
  8. "type": "string",
  9. "property-reference": {
  10. "comment": "property-reference is an extension to the JSON schema validator. Here it jumps to the root level of the hierarchy and tests if a value is an existing key there (i.e a defined property). See test/validate-schema.js for implementation details.",
  11. "$data": "/"
  12. }
  13. }
  14. },
  15. "animationType": {
  16. "enum": [
  17. "angleBasicShapeOrPath",
  18. "angleOrBasicShapeOrPath",
  19. "asIfPossibleOtherwiseDiscrete",
  20. "basicShapeOtherwiseNo",
  21. "byComputedValue",
  22. "byComputedValueType",
  23. "byComputedValueTypeNormalAnimatesAsObliqueZeroDeg",
  24. "byDynamicRangeLimitMix",
  25. "color",
  26. "discrete",
  27. "discreteButVisibleForDurationWhenAnimatedHidden",
  28. "discreteButVisibleForDurationWhenAnimatedNone",
  29. "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection",
  30. "filterList",
  31. "integer",
  32. "length",
  33. "lpc",
  34. "notAnimatable",
  35. "numberOrLength",
  36. "number",
  37. "position",
  38. "rectangle",
  39. "repeatableList",
  40. "shadowList",
  41. "simpleListOfLpc",
  42. "simpleListOfLpcDifferenceLpc",
  43. "superellipseInterpolation",
  44. "transform",
  45. "visibility"
  46. ]
  47. },
  48. "percentages": {
  49. "enum": [
  50. "blockSizeOfContainingBlock",
  51. "convertedToNumber",
  52. "dependsOnLayoutModel",
  53. "inlineSizeOfContainingBlock",
  54. "lengthsAsPercentages",
  55. "logicalHeightOfContainingBlock",
  56. "logicalWidthOfContainingBlock",
  57. "logicalHeightOrWidthOfContainingBlock",
  58. "mapToRange0To1",
  59. "maxZoomFactor",
  60. "minZoomFactor",
  61. "no",
  62. "referToBorderBox",
  63. "referToContainingBlockHeight",
  64. "referToDimensionOfBorderBox",
  65. "referToDimensionOfContentArea",
  66. "referToElementFontSize",
  67. "referToFlexContainersInnerMainSize",
  68. "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight",
  69. "referToLineBoxWidth",
  70. "referToLineHeight",
  71. "referToParentElementsFontSize",
  72. "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize",
  73. "referToSizeOfBorderImage",
  74. "referToSizeOfBoundingBox",
  75. "referToSizeOfContainingBlock",
  76. "referToSizeOfElement",
  77. "referToSizeOfFont",
  78. "referToSizeOfMaskBorderImage",
  79. "referToSizeOfMaskPaintingArea",
  80. "referToSVGViewportHeight",
  81. "referToSVGViewportSize",
  82. "referToSVGViewportWidth",
  83. "referToSVGViewportDiagonal",
  84. "referToTheUsedValueOfLineHeight",
  85. "referToTotalPathLength",
  86. "referToWidthAndHeightOfElement",
  87. "referToWidthOfAffectedGlyph",
  88. "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageWidth",
  89. "referToWidthOfContainingBlock",
  90. "referToWidthOrHeightOfBorderImageArea",
  91. "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox",
  92. "regardingHeightOfGeneratedBoxContainingBlockPercentages0",
  93. "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone",
  94. "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock",
  95. "relativeToBackgroundPositioningArea",
  96. "relativeToCorrespondingDimensionOfRelevantScrollport",
  97. "relativeToMaskBorderImageArea",
  98. "relativeToScrollContainerPaddingBoxAxis",
  99. "relativeToTheScrollContainersScrollport",
  100. "relativeToTimelineRangeIfSpecifiedOtherwiseEntireTimeline",
  101. "relativeToWidthAndHeight"
  102. ]
  103. },
  104. "computed": {
  105. "enum": [
  106. "absoluteLength",
  107. "absoluteLength0ForNone",
  108. "absoluteLength0IfColumnRuleStyleNoneOrHidden",
  109. "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden",
  110. "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden",
  111. "absoluteLengthOr0IfBorderRightStyleNoneOrHidden",
  112. "absoluteLengthOr0IfBorderTopStyleNoneOrHidden",
  113. "absoluteLengthOrAsSpecified",
  114. "absoluteLengthOrKeyword",
  115. "absoluteLengthOrNone",
  116. "absoluteLengthOrNormal",
  117. "absoluteLengthOrPercentage",
  118. "absoluteLengthOrPercentageNumbersConverted",
  119. "absoluteLengthsSpecifiedColorAsSpecified",
  120. "absoluteLengthZeroIfBorderStyleNoneOrHidden",
  121. "absoluteLengthZeroOrLarger",
  122. "absoluteURIOrNone",
  123. "angleRoundedToNextQuarter",
  124. "asAutoOrColor",
  125. "asColorOrAbsoluteURL",
  126. "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified",
  127. "asLength",
  128. "asLonghands",
  129. "asSpecified",
  130. "asSpecifiedAppliesToEachProperty",
  131. "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
  132. "asSpecifiedButWithPercentageConvertedToTheEquivalentNumber",
  133. "asSpecifiedExceptMatchParent",
  134. "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent",
  135. "asSpecifiedRelativeToAbsoluteLengths",
  136. "asSpecifiedURLsAbsolute",
  137. "asSpecifiedWithExceptionOfResolution",
  138. "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
  139. "asSpecifiedWithLengthValuesComputed",
  140. "asSpecifiedWithVarsSubstituted",
  141. "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent",
  142. "autoOrRectangle",
  143. "autoOrAbsoluteLength",
  144. "colorPlusThreeAbsoluteLengths",
  145. "computedColor",
  146. "computedValueForDynamicRangeLimit",
  147. "consistsOfTwoDimensionKeywords",
  148. "consistsOfTwoKeywordsForOriginAndOffsets",
  149. "correspondingSuperellipse",
  150. "forLengthAbsoluteValueOtherwisePercentage",
  151. "autoForTranslucentColorRGBAOtherwiseRGB",
  152. "keywordOrNumericalValueBolderLighterTransformedToRealValue",
  153. "keywordPlusIntegerIfDigits",
  154. "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
  155. "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
  156. "listEachItemConsistingOfAbsoluteLengthPercentageOrKeyword",
  157. "listEachItemConsistingOfNormalLengthPercentageOrNameLengthPercentage",
  158. "listEachItemConsistingOfPairsOfAutoOrLengthPercentage",
  159. "listEachItemHasTwoKeywordsOnePerDimension",
  160. "listEachItemIdentifierOrNoneAuto",
  161. "listEachItemTwoKeywordsOriginOffsets",
  162. "listOfNoneAutoIdentScrollOrView",
  163. "noneOrImageWithAbsoluteURI",
  164. "noneOrOrderedListOfIdentifiers",
  165. "normalizedAngle",
  166. "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified",
  167. "normalOrComputedTime",
  168. "oneToFourPercentagesOrAbsoluteLengthsPlusFill",
  169. "optimumValueOfAbsoluteLengthOrNormal",
  170. "percentage",
  171. "percentageAsSpecifiedAbsoluteLengthOrNone",
  172. "percentageAsSpecifiedOrAbsoluteLength",
  173. "percentageAutoOrAbsoluteLength",
  174. "percentageOrAbsoluteLengthPlusKeywords",
  175. "sameAsBoxOffsets",
  176. "sameAsMaxWidthAndMaxHeight",
  177. "sameAsMinWidthAndMinHeight",
  178. "sameAsWidthAndHeight",
  179. "specifiedInteger",
  180. "specifiedIntegerOrAbsoluteLength",
  181. "specifiedKeywordOrComputedFunction",
  182. "specifiedValue",
  183. "specifiedValueClipped0To1",
  184. "specifiedValueNumberClipped0To1",
  185. "theComputedLengthAndVisualBox",
  186. "theKeywordListStyleImageNoneOrComputedValue",
  187. "theSpecifiedKeyword",
  188. "theSpecifiedKeywordOrAComputedLengthPercentageValue",
  189. "translucentValuesRGBAOtherwiseRGB",
  190. "twoAbsoluteLengthOrPercentages",
  191. "twoAbsoluteLengths"
  192. ]
  193. },
  194. "appliesto": {
  195. "enum": [
  196. "absolutelyPositionedElements",
  197. "allElements",
  198. "allElementsAcceptingWidthOrHeight",
  199. "allElementsAndPseudos",
  200. "allElementsAndText",
  201. "allElementsButNonReplacedAndTableColumns",
  202. "allElementsButNonReplacedAndTableRows",
  203. "allElementsCreatingNativeWindows",
  204. "allElementsExceptGeneratedContentOrPseudoElements",
  205. "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes",
  206. "allElementsExceptInternalTableDisplayTypes",
  207. "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups",
  208. "allElementsExceptTableDisplayTypes",
  209. "allElementsExceptTableElementsWhenCollapse",
  210. "allElementsExceptTableRowColumnGroupsTableRowsColumns",
  211. "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns",
  212. "allElementsNoEffectIfDisplayNone",
  213. "allElementsSomeValuesNoEffectOnNonInlineElements",
  214. "allElementsSVGContainerElements",
  215. "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
  216. "allElementsThatCanReferenceImages",
  217. "allElementsThatGenerateAPrincipalBox",
  218. "allElementsTreeAbidingPseudoElementsPageMarginBoxes",
  219. "allElementsUAsNotRequiredWhenCollapse",
  220. "anyElementEffectOnProgressAndMeter",
  221. "asLonghands",
  222. "beforeAndAfterPseudos",
  223. "blockContainerElements",
  224. "blockContainers",
  225. "blockContainersAndInlineBoxes",
  226. "blockContainersAndMultiColumnContainers",
  227. "blockContainersExceptMultiColumnContainers",
  228. "blockContainersExceptTableWrappers",
  229. "blockContainersFlexContainersGridContainers",
  230. "blockContainersFlexContainersGridContainersInlineBoxesTableRowsSVGTextContentElements",
  231. "blockContainersMultiColumnContainersFlexContainersGridContainers",
  232. "blockElementsInNormalFlow",
  233. "blockLevelElements",
  234. "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
  235. "boxElements",
  236. "childrenOfBoxElements",
  237. "directChildrenOfElementsWithDisplayMozBoxMozInlineBox",
  238. "elementsForWhichLayoutContainmentCanApply",
  239. "elementsForWhichSizeContainmentCanApply",
  240. "elementsThatAcceptInput",
  241. "elementsWithDefaultPreferredSize",
  242. "elementsWithDisplayBoxOrInlineBox",
  243. "elementsWithDisplayMarker",
  244. "elementsWithDisplayMozBoxMozInlineBox",
  245. "elementsWithOverflowNotVisibleAndReplacedElements",
  246. "exclusionElements",
  247. "firstLetterPseudoElementsAndInlineLevelFirstChildren",
  248. "flexContainers",
  249. "flexItemsAndAbsolutelyPositionedFlexContainerChildren",
  250. "flexItemsAndInFlowPseudos",
  251. "flexItemsGridItemsAbsolutelyPositionedContainerChildren",
  252. "flexItemsGridItemsAndAbsolutelyPositionedBoxes",
  253. "floats",
  254. "gridContainers",
  255. "gridContainersWithMasonryLayout",
  256. "gridContainersWithMasonryLayoutInTheirBlockAxis",
  257. "gridContainersWithMasonryLayoutInTheirInlineAxis",
  258. "gridItemsAndBoxesWithinGridContainer",
  259. "iframeElements",
  260. "images",
  261. "inFlowBlockLevelElements",
  262. "inlineBoxesAndBlockContainers",
  263. "inFlowChildrenOfBoxElements",
  264. "inlineLevelAndTableCellElements",
  265. "inlineLevelBoxes",
  266. "inlineLevelBoxesAndSVGTextContentElements",
  267. "inlineLevelBoxesFlexItemsGridItemsTableCellsAndSVGTextContentElements",
  268. "limitedSVGElements",
  269. "limitedSVGElementsCircle",
  270. "limitedSVGElementsEllipse",
  271. "limitedSVGElementsEllipseRect",
  272. "limitedSVGElementsFilterPrimitives",
  273. "limitedSVGElementsFloodAndDropShadow",
  274. "limitedSVGElementsGeometry",
  275. "limitedSVGElementsGraphics",
  276. "limitedSVGElementsGraphicsAndUse",
  277. "limitedSVGElementsLightSource",
  278. "limitedSVGElementsPath",
  279. "limitedSVGElementsShapes",
  280. "limitedSVGElementsShapesAndTextContent",
  281. "limitedSVGElementsShapeText",
  282. "limitedSVGElementsStop",
  283. "limitedSVGElementsTextContent",
  284. "listItems",
  285. "maskElements",
  286. "multicolElements",
  287. "multiColumnElementsFlexContainersGridContainers",
  288. "multilineFlexContainers",
  289. "nonReplacedBlockAndInlineBlockElements",
  290. "nonReplacedBlockElements",
  291. "nonReplacedElements",
  292. "nonReplacedInlineElements",
  293. "positionedElements",
  294. "positionedElementsWithADefaultAnchorElement",
  295. "replacedElements",
  296. "rubyAnnotationContainers",
  297. "rubyBasesAnnotationsBaseAnnotationContainers",
  298. "sameAsMargin",
  299. "sameAsWidthAndHeight",
  300. "scrollContainers",
  301. "scrollingBoxes",
  302. "tableCaptionElements",
  303. "tableCellElements",
  304. "tableElements",
  305. "textAndBlockContainers",
  306. "textAndSVGShapes",
  307. "textElements",
  308. "textOrElementsThatAcceptInput",
  309. "textFields",
  310. "transformableElements"
  311. ]
  312. },
  313. "alsoApplyTo": {
  314. "type": "array",
  315. "minItems": 1,
  316. "uniqueItems": true,
  317. "items": {
  318. "enum": [
  319. "::first-letter",
  320. "::first-line",
  321. "::placeholder"
  322. ]
  323. }
  324. },
  325. "order": {
  326. "enum": [
  327. "canonicalOrder",
  328. "lengthOrPercentageBeforeKeywordIfBothPresent",
  329. "lengthOrPercentageBeforeKeywords",
  330. "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
  331. "orderOfAppearance",
  332. "percentagesOrLengthsFollowedByFill",
  333. "perGrammar",
  334. "uniqueOrder"
  335. ]
  336. },
  337. "status": {
  338. "enum": [
  339. "standard",
  340. "nonstandard",
  341. "experimental",
  342. "obsolete"
  343. ]
  344. },
  345. "mdn_url": {
  346. "type": "string",
  347. "pattern": "^https://developer.mozilla.org/docs/"
  348. }
  349. },
  350. "type": "object",
  351. "additionalProperties": {
  352. "type": "object",
  353. "additionalProperties": false,
  354. "required": [
  355. "syntax",
  356. "inherited",
  357. "animationType",
  358. "percentages",
  359. "groups",
  360. "initial",
  361. "appliesto",
  362. "computed",
  363. "order",
  364. "status"
  365. ],
  366. "properties": {
  367. "syntax": {
  368. "type": "string"
  369. },
  370. "media": {
  371. "oneOf": [
  372. {
  373. "type": "string",
  374. "enum": [
  375. "all",
  376. "aural",
  377. "continuous",
  378. "interactive",
  379. "none",
  380. "noPracticalMedia",
  381. "paged",
  382. "visual",
  383. "visualInContinuousMediaNoEffectInOverflowColumns"
  384. ]
  385. },
  386. {
  387. "type": "array",
  388. "minItems": 2,
  389. "uniqueItems": true,
  390. "items": {
  391. "type": "string",
  392. "enum": [
  393. "interactive",
  394. "paged",
  395. "visual"
  396. ]
  397. }
  398. }
  399. ]
  400. },
  401. "inherited": {
  402. "type": "boolean"
  403. },
  404. "animationType": {
  405. "oneOf": [
  406. {
  407. "$ref": "#/definitions/animationType"
  408. },
  409. {
  410. "$ref": "#/definitions/propertyList"
  411. }
  412. ]
  413. },
  414. "percentages": {
  415. "oneOf": [
  416. {
  417. "$ref": "#/definitions/percentages"
  418. },
  419. {
  420. "$ref": "#/definitions/propertyList"
  421. }
  422. ]
  423. },
  424. "groups": {
  425. "type": "array",
  426. "minitems": 1,
  427. "uniqueItems": true,
  428. "items": {
  429. "$ref": "definitions.json#/groupList"
  430. }
  431. },
  432. "initial": {
  433. "oneOf": [
  434. {
  435. "type": "string"
  436. },
  437. {
  438. "$ref": "#/definitions/propertyList"
  439. }
  440. ]
  441. },
  442. "appliesto": {
  443. "$ref": "#/definitions/appliesto"
  444. },
  445. "alsoAppliesTo": {
  446. "$ref": "#/definitions/alsoApplyTo"
  447. },
  448. "computed": {
  449. "oneOf": [
  450. {
  451. "$ref": "#/definitions/computed"
  452. },
  453. {
  454. "$ref": "#/definitions/propertyList"
  455. }
  456. ]
  457. },
  458. "order": {
  459. "$ref": "#/definitions/order"
  460. },
  461. "stacking": {
  462. "type": "boolean"
  463. },
  464. "status": {
  465. "$ref": "#/definitions/status"
  466. },
  467. "mdn_url": {
  468. "$ref": "#/definitions/mdn_url"
  469. }
  470. }
  471. }
  472. }