| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 | {  "definitions": {    "propertyList": {      "type": "array",      "minItems": 1,      "uniqueItems": true,      "items": {        "type": "string",        "property-reference": {          "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.",          "$data": "/"        }      }    },    "animationType": {      "enum": [        "angleBasicShapeOrPath",        "angleOrBasicShapeOrPath",        "basicShapeOtherwiseNo",        "byComputedValueType",        "color",        "discrete",        "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection",        "filterList",        "fontStretch",        "fontWeight",        "integer",        "length",        "lpc",        "numberOrLength",        "number",        "position",        "rectangle",        "repeatableListOfSimpleListOfLpc",        "shadowList",        "simpleListOfLpc",        "simpleListOfLpcDifferenceLpc",        "transform",        "visibility"      ]    },    "percentages": {      "enum": [        "blockSizeOfContainingBlock",        "dependsOnLayoutModel",        "inlineSizeOfContainingBlock",        "lengthsAsPercentages",        "logicalHeightOfContainingBlock",        "logicalWidthOfContainingBlock",        "maxZoomFactor",        "minZoomFactor",        "no",        "referToBorderBox",        "referToContainingBlockHeight",        "referToDimensionOfBorderBox",        "referToDimensionOfContentArea",        "referToElementFontSize",        "referToFlexContainersInnerMainSize",        "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight",        "referToLineBoxWidth",        "referToLineHeight",        "referToParentElementsFontSize",        "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize",        "referToSizeOfBorderImage",        "referToSizeOfBoundingBox",        "referToSizeOfContainingBlock",        "referToSizeOfElement",        "referToSizeOfFont",        "referToSizeOfMaskBorderImage",        "referToSizeOfMaskPaintingArea",        "referToTotalPathLength",        "referToWidthAndHeightOfElement",        "referToWidthOfAffectedGlyph",        "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight",        "referToWidthOfContainingBlock",        "referToWidthOrHeightOfBorderImageArea",        "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox",        "regardingHeightOfGeneratedBoxContainingBlockPercentages0",        "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone",        "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock",        "relativeToBackgroundPositioningArea",        "relativeToMaskBorderImageArea",        "relativeToScrollContainerPaddingBoxAxis",        "relativeToTheScrollContainersScrollport",        "relativeToWidthAndHeight"      ]    },    "computed": {      "enum": [        "absoluteLength",        "absoluteLength0ForNone",        "absoluteLength0IfColumnRuleStyleNoneOrHidden",        "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden",        "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden",        "absoluteLengthOr0IfBorderRightStyleNoneOrHidden",        "absoluteLengthOr0IfBorderTopStyleNoneOrHidden",        "absoluteLengthOrAsSpecified",        "absoluteLengthOrKeyword",        "absoluteLengthOrNone",        "absoluteLengthOrNormal",        "absoluteLengthOrPercentage",        "absoluteLengthsSpecifiedColorAsSpecified",        "absoluteLengthZeroIfBorderStyleNoneOrHidden",        "absoluteLengthZeroOrLarger",        "absoluteURIOrNone",        "angleRoundedToNextQuarter",        "asAutoOrColor",        "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified",        "asLength",        "asSpecified",        "asSpecifiedAppliesToEachProperty",        "asSpecifiedExceptMatchParent",        "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent",        "asSpecifiedRelativeToAbsoluteLengths",        "asSpecifiedURLsAbsolute",        "asSpecifiedWithExceptionOfResolution",        "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",        "asSpecifiedWithVarsSubstituted",        "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent",        "autoOrRectangle",        "colorPlusThreeAbsoluteLengths",        "computedColor",        "consistsOfTwoDimensionKeywords",        "consistsOfTwoKeywordsForOriginAndOffsets",        "forLengthAbsoluteValueOtherwisePercentage",        "invertForTranslucentColorRGBAOtherwiseRGB",        "keywordOrNumericalValueBolderLighterTransformedToRealValue",        "keywordPlusIntegerIfDigits",        "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",        "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",        "listEachItemHasTwoKeywordsOnePerDimension",        "listEachItemTwoKeywordsOriginOffsets",        "noneOrImageWithAbsoluteURI",        "normalizedAngle",        "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified",        "oneToFourPercentagesOrAbsoluteLengthsPlusFill",        "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal",        "optimumValueOfAbsoluteLengthOrNormal",        "percentageAsSpecifiedAbsoluteLengthOrNone",        "percentageAsSpecifiedOrAbsoluteLength",        "percentageAutoOrAbsoluteLength",        "percentageOrAbsoluteLengthPlusKeywords",        "sameAsBoxOffsets",        "sameAsMaxWidthAndMaxHeight",        "sameAsMinWidthAndMinHeight",        "sameAsWidthAndHeight",        "specifiedIntegerOrAbsoluteLength",        "specifiedValueClipped0To1",        "specifiedValueNumberClipped0To1",        "translucentValuesRGBAOtherwiseRGB",        "twoAbsoluteLengthOrPercentages",        "twoAbsoluteLengths"      ]    },    "appliesto": {      "enum": [        "absolutelyPositionedElements",        "allElements",        "allElementsAcceptingWidthOrHeight",        "allElementsAndPseudos",        "allElementsButNonReplacedAndTableColumns",        "allElementsButNonReplacedAndTableRows",        "allElementsCreatingNativeWindows",        "allElementsExceptGeneratedContentOrPseudoElements",        "allElementsExceptInternalTableDisplayTypes",        "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups",        "allElementsExceptTableDisplayTypes",        "allElementsExceptTableElementsWhenCollapse",        "allElementsExceptTableRowColumnGroupsTableRowsColumns",        "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns",        "allElementsNoEffectIfDisplayNone",        "allElementsSomeValuesNoEffectOnNonInlineElements",        "allElementsSVGContainerElements",        "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",        "allElementsThatCanReferenceImages",        "allElementsUAsNotRequiredWhenCollapse",        "anyElementEffectOnProgressAndMeter",        "beforeAndAfterPseudos",        "blockContainerElements",        "blockContainers",        "blockContainersExceptMultiColumnContainers",        "blockContainersExceptTableWrappers",        "blockContainersFlexContainersGridContainers",        "blockElementsInNormalFlow",        "blockLevelElements",        "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",        "boxElements",        "childrenOfBoxElements",        "directChildrenOfElementsWithDisplayMozBoxMozInlineBox",        "elementsWithDisplayBoxOrInlineBox",        "elementsWithDisplayMarker",        "elementsWithDisplayMozBoxMozInlineBox",        "elementsWithOverflowNotVisibleAndReplacedElements",        "exclusionElements",        "firstLetterPseudoElementsAndInlineLevelFirstChildren",        "flexContainers",        "flexItemsAndAbsolutelyPositionedFlexContainerChildren",        "flexItemsAndInFlowPseudos",        "flexItemsGridItemsAndAbsolutelyPositionedBoxes",        "floats",        "gridContainers",        "gridItemsAndBoxesWithinGridContainer",        "iframeElements",        "images",        "inFlowBlockLevelElements",        "inFlowChildrenOfBoxElements",        "inlineLevelAndTableCellElements",        "listItems",        "maskElements",        "multicolElements",        "multiColumnElementsFlexContainersGridContainers",        "multilineFlexContainers",        "nonReplacedBlockAndInlineBlockElements",        "nonReplacedBlockElements",        "nonReplacedElements",        "nonReplacedInlineElements",        "positionedElements",        "replacedElements",        "rubyAnnotationsContainers",        "rubyBasesAnnotationsBaseAnnotationContainers",        "sameAsMargin",        "sameAsWidthAndHeight",        "scrollContainers",        "scrollingBoxes",        "tableCaptionElements",        "tableCellElements",        "tableElements",        "textElements",        "textFields",        "transformableElements",        "xulImageElements"      ]    },    "alsoApplyTo": {      "type": "array",      "minItems": 1,      "uniqueItems": true,      "items": {        "enum": [          "::first-letter",          "::first-line",          "::placeholder"        ]      }    },    "order": {      "enum": [        "canonicalOrder",        "lengthOrPercentageBeforeKeywordIfBothPresent",        "lengthOrPercentageBeforeKeywords",        "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",        "orderOfAppearance",        "percentagesOrLengthsFollowedByFill",        "perGrammar",        "uniqueOrder"      ]    },    "status": {      "enum": [        "standard",        "nonstandard",        "experimental",        "obsolete"      ]    },    "mdn_url": {      "type": "string",      "pattern": "^https://developer.mozilla.org/docs/"    }  },  "type": "object",  "additionalProperties": {    "type": "object",    "additionalProperties": false,    "required": [      "syntax",      "media",      "inherited",      "animationType",      "percentages",      "groups",      "initial",      "appliesto",      "computed",      "order",      "status"    ],    "properties": {      "syntax": {        "type": "string"      },      "media": {        "oneOf": [          {            "type": "string",            "enum": [              "all",              "aural",              "continuous",              "interactive",              "none",              "noPracticalMedia",              "paged",              "visual",              "visualInContinuousMediaNoEffectInOverflowColumns"            ]          },          {            "type": "array",            "minItems": 2,            "uniqueItems": true,            "items": {              "type": "string",              "enum": [                "interactive",                "paged",                "visual"              ]            }          }        ]      },      "inherited": {        "type": "boolean"      },      "animationType": {        "oneOf": [          {            "$ref": "#/definitions/animationType"          },          {            "$ref": "#/definitions/propertyList"          }        ]      },      "percentages": {        "oneOf": [          {            "$ref": "#/definitions/percentages"          },          {            "$ref": "#/definitions/propertyList"          }        ]      },      "groups": {        "type": "array",        "minitems": 1,        "uniqueItems": true,        "items": {          "$ref": "definitions.json#/groupList"        }      },      "initial": {        "oneOf": [          {            "type": "string"          },          {            "$ref": "#/definitions/propertyList"          }        ]      },      "appliesto": {        "$ref": "#/definitions/appliesto"      },      "alsoAppliesTo": {        "$ref": "#/definitions/alsoApplyTo"      },      "computed": {        "oneOf": [          {            "$ref": "#/definitions/computed"          },          {            "$ref": "#/definitions/propertyList"          }        ]      },      "order": {        "$ref": "#/definitions/order"      },      "stacking": {        "type": "boolean"      },      "status": {        "$ref": "#/definitions/status"      },      "mdn_url": {        "$ref": "#/definitions/mdn_url"      }    }  }}
 |