properties.schema.json 13 KB

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