properties.schema.json 15 KB

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