properties.schema.json 12 KB

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