UNPKG

ocrmnav

Version:

DevStack - The Complete Developer Toolkit - Virtual file system, workflow automation, and more than 65+ other development tools / features in one seamless extension. Cutting down dev times never before seen.

682 lines (567 loc) 20.7 kB
"use strict"; exports.id = 121; exports.ids = [121]; exports.modules = { /***/ 1533: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * Contains helpers for working with vendor prefixes. * * Copied from https://github.com/postcss/postcss/commit/777c55b5d2a10605313a4972888f4f32005f5ac2 * * @namespace vendor */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ /** * Returns the vendor prefix extracted from an input string. * * @param {string} prop String with or without vendor prefix. * * @returns {string} vendor prefix or empty string * * @example * vendor.prefix('-moz-tab-size') //=> '-moz-' * vendor.prefix('tab-size') //=> '' */ prefix(prop) { const match = prop.match(/^(-\w+-)/); if (match) { return match[0] || ''; } return ''; }, /** * Returns the input string stripped of its vendor prefix. * * @param {string} prop String with or without vendor prefix. * * @returns {string} String name without vendor prefixes. * * @example * vendor.unprefixed('-moz-tab-size') //=> 'tab-size' */ unprefixed(prop) { return prop.replace(/^-\w+-/, ''); }, }); /***/ }), /***/ 1589: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ camelCaseFunctions: () => (/* binding */ camelCaseFunctions), /* harmony export */ colorFunctions: () => (/* binding */ colorFunctions), /* harmony export */ mathFunctions: () => (/* binding */ mathFunctions) /* harmony export */ }); /** @type {ReadonlySet<string>} */ const camelCaseFunctions = new Set([ 'translateX', 'translateY', 'translateZ', 'scaleX', 'scaleY', 'scaleZ', 'rotateX', 'rotateY', 'rotateZ', 'skewX', 'skewY', ]); /** @type {ReadonlySet<string>} */ const colorFunctions = new Set([ 'color', 'color-mix', 'hsl', 'hsla', 'hwb', 'lab', 'lch', 'oklab', 'oklch', 'rgb', 'rgba', ]); /** @type {ReadonlySet<string>} */ const singleArgumentMathFunctions = new Set([ 'abs', 'acos', 'asin', 'atan', 'calc', 'cos', 'exp', 'sign', 'sin', 'sqrt', 'tan', ]); /** @type {ReadonlySet<string>} */ const mathFunctions = new Set([ ...singleArgumentMathFunctions, 'atan2', 'calc-size', 'clamp', 'hypot', 'log', 'max', 'min', 'mod', 'pow', 'rem', 'round', ]); /***/ }), /***/ 1640: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ lengthUnits: () => (/* binding */ lengthUnits), /* harmony export */ resolutionUnits: () => (/* binding */ resolutionUnits), /* harmony export */ units: () => (/* binding */ units) /* harmony export */ }); /* harmony import */ var _utils_uniteSets_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1537); /** @type {ReadonlySet<string>} */ const lengthUnits = new Set([ // Font-relative length units 'cap', 'ch', 'em', 'ex', 'ic', 'lh', 'rcap', 'rch', 'rem', 'rex', 'ric', 'rlh', // Viewport-percentage lengths 'dvb', 'dvh', 'dvi', 'dvmax', 'dvmin', 'dvw', 'lvb', 'lvh', 'lvi', 'lvmax', 'lvmin', 'lvw', 'svb', 'svh', 'svi', 'svmax', 'svmin', 'svw', 'vb', 'vh', 'vi', 'vw', 'vmin', 'vmax', 'vm', // Absolute length units 'px', 'mm', 'cm', 'in', 'pt', 'pc', 'q', 'mozmm', // Flexible length units 'fr', // Container query units 'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax', ]); /** @type {ReadonlySet<string>} */ const resolutionUnits = new Set(['dpi', 'dpcm', 'dppx', 'x']); /** @type {ReadonlySet<string>} */ const units = (0,_utils_uniteSets_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(lengthUnits, resolutionUnits, [ // Relative length units '%', // Time length units 's', 'ms', // Angle 'deg', 'grad', 'turn', 'rad', // Frequency 'Hz', 'kHz', ]); /***/ }), /***/ 1714: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ mediaFeatureNameAllowedValueKeywords: () => (/* binding */ mediaFeatureNameAllowedValueKeywords), /* harmony export */ mediaFeatureNameAllowedValueTypes: () => (/* binding */ mediaFeatureNameAllowedValueTypes), /* harmony export */ mediaFeatureNames: () => (/* binding */ mediaFeatureNames), /* harmony export */ rangeTypeMediaFeatureNames: () => (/* binding */ rangeTypeMediaFeatureNames), /* harmony export */ rangeTypeMediaFeatureNamesWithMinMaxPrefix: () => (/* binding */ rangeTypeMediaFeatureNamesWithMinMaxPrefix) /* harmony export */ }); /* harmony import */ var _utils_uniteSets_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1537); /** @type {ReadonlySet<string>} */ const deprecatedMediaFeatureNames = new Set([ 'device-aspect-ratio', 'device-height', 'device-width', ]); /** @type {ReadonlySet<string>} */ const rangeTypeMediaFeatureNames = (0,_utils_uniteSets_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(deprecatedMediaFeatureNames, [ 'aspect-ratio', 'color', 'color-index', 'height', 'horizontal-viewport-segments', 'monochrome', 'resolution', 'vertical-viewport-segments', 'width', ]); /** @type {ReadonlySet<string>} */ const rangeTypeMediaFeatureNamesWithMinMaxPrefix = new Set( [...rangeTypeMediaFeatureNames].flatMap((name) => { return [`min-${name}`, `max-${name}`]; }), ); /** @type {ReadonlySet<string>} */ const discreteTypeMediaFeatureNames = new Set([ 'any-hover', 'any-pointer', 'color-gamut', 'display-mode', 'dynamic-range', 'environment-blending', 'forced-colors', 'grid', 'hover', 'inverted-colors', 'light-level', 'nav-controls', 'orientation', 'overflow-block', 'overflow-inline', 'pointer', 'prefers-color-scheme', 'prefers-contrast', 'prefers-reduced-data', 'prefers-reduced-motion', 'prefers-reduced-transparency', 'scan', 'scripting', 'update', 'video-color-gamut', 'video-dynamic-range', ]); /** @type {ReadonlySet<string>} */ const mediaFeatureNames = (0,_utils_uniteSets_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])( deprecatedMediaFeatureNames, rangeTypeMediaFeatureNames, rangeTypeMediaFeatureNamesWithMinMaxPrefix, discreteTypeMediaFeatureNames, ); /** @type {ReadonlyMap<string, ReadonlySet<string>>} */ const mediaFeatureNameAllowedValueKeywords = new Map([ ['any-hover', new Set(['none', 'hover'])], ['any-pointer', new Set(['none', 'coarse', 'fine'])], ['color-gamut', new Set(['srgb', 'p3', 'rec2020'])], [ 'display-mode', new Set(['fullscreen', 'standalone', 'minimal-ui', 'browser', 'picture-in-picture']), ], ['dynamic-range', new Set(['standard', 'high'])], ['environment-blending', new Set(['opaque', 'additive', 'subtractive'])], ['forced-colors', new Set(['none', 'active'])], ['hover', new Set(['none', 'hover'])], ['inverted-colors', new Set(['none', 'inverted'])], ['nav-controls', new Set(['none', 'back'])], ['orientation', new Set(['portrait', 'landscape'])], ['overflow-block', new Set(['none', 'scroll', 'paged'])], ['overflow-inline', new Set(['none', 'scroll'])], ['pointer', new Set(['none', 'coarse', 'fine'])], ['prefers-color-scheme', new Set(['light', 'dark'])], ['prefers-contrast', new Set(['no-preference', 'less', 'more', 'custom'])], ['prefers-reduced-data', new Set(['no-preference', 'reduce'])], ['prefers-reduced-motion', new Set(['no-preference', 'reduce'])], ['prefers-reduced-transparency', new Set(['no-preference', 'reduce'])], ['resolution', new Set(['infinite'])], ['scan', new Set(['interlace', 'progressive'])], ['scripting', new Set(['none', 'initial-only', 'enabled'])], ['update', new Set(['none', 'slow', 'fast'])], ['video-color-gamut', new Set(['srgb', 'p3', 'rec2020'])], ['video-dynamic-range', new Set(['standard', 'high'])], ]); /** @type {ReadonlyMap<string, ReadonlySet<string>>} */ const mediaFeatureNameAllowedValueTypes = new Map([ ['aspect-ratio', new Set(['ratio'])], ['color', new Set(['integer'])], ['color-index', new Set(['integer'])], ['device-aspect-ratio', new Set(['ratio'])], ['device-height', new Set(['length'])], ['device-width', new Set(['length'])], ['grid', new Set(['mq-boolean'])], ['height', new Set(['length'])], ['horizontal-viewport-segments', new Set(['integer'])], ['monochrome', new Set(['integer'])], ['resolution', new Set(['resolution'])], ['vertical-viewport-segments', new Set(['integer'])], ['width', new Set(['length'])], ]); /***/ }), /***/ 1717: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ parseMediaQuery) /* harmony export */ }); /* harmony import */ var _csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1710); /* harmony import */ var _getAtRuleParams_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1520); /** * @param {import('postcss').AtRule} atRule * @returns {ReturnType<typeof import('@csstools/media-query-list-parser').parse>} */ function parseMediaQuery(atRule) { const mediaQueries = (0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_0__.parse)((0,_getAtRuleParams_mjs__WEBPACK_IMPORTED_MODULE_1__["default"])(atRule), { preserveInvalidMediaQueries: true, }); return mediaQueries; } /***/ }), /***/ 1719: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _csstools_css_tokenizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(889); /* harmony import */ var _csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1647); /* harmony import */ var _csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1710); /* harmony import */ var _reference_units_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1640); /* harmony import */ var _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1714); /* harmony import */ var _reference_functions_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1589); /* harmony import */ var _utils_nodeFieldIndices_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1519); /* harmony import */ var _utils_regexes_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1535); /* harmony import */ var _utils_parseMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1717); /* harmony import */ var _utils_report_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(945); /* harmony import */ var _utils_ruleMessages_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(950); /* harmony import */ var _utils_validateOptions_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(873); /* harmony import */ var _utils_vendor_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(1533); const ruleName = 'media-feature-name-value-no-unknown'; const messages = (0,_utils_ruleMessages_mjs__WEBPACK_IMPORTED_MODULE_10__["default"])(ruleName, { rejected: (name, value) => `Unexpected unknown media feature value "${value}" for name "${name}"`, }); const HAS_MIN_MAX_PREFIX = /^(?:min|max)-/i; const meta = { url: 'https://stylelint.io/user-guide/rules/media-feature-name-value-no-unknown', }; /** @typedef {{ mediaFeatureName: string, mediaFeatureNameRaw: string }} State */ /** @typedef { (state: State, valuePart: string, start: number, end: number) => void } Reporter */ /** @type {import('stylelint').CoreRules[ruleName]} */ const rule = (primary) => { return (root, result) => { const validOptions = (0,_utils_validateOptions_mjs__WEBPACK_IMPORTED_MODULE_11__["default"])(result, ruleName, { actual: primary }); if (!validOptions) { return; } /** * Check that a single token value is valid for a given media feature name. * * @param {State} state * @param {import('@csstools/css-tokenizer').CSSToken} token * @param {Reporter} reporter * @returns {void} */ function checkSingleToken(state, token, reporter) { const [type, raw, start, end, parsed] = token; if (type === _csstools_css_tokenizer__WEBPACK_IMPORTED_MODULE_0__.TokenType.Ident) { const supportedKeywords = _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__.mediaFeatureNameAllowedValueKeywords.get(state.mediaFeatureName); if (supportedKeywords) { const keyword = _utils_vendor_mjs__WEBPACK_IMPORTED_MODULE_12__["default"].unprefixed(parsed.value.toLowerCase()); if (supportedKeywords.has(keyword)) return; } // An ident that isn't expected for the given media feature name reporter(state, raw, start, end); return; } const supportedValueTypes = _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__.mediaFeatureNameAllowedValueTypes.get(state.mediaFeatureName); if (!supportedValueTypes) { // The given media feature name doesn't support any single token values. reporter(state, raw, start, end); return; } if (type === _csstools_css_tokenizer__WEBPACK_IMPORTED_MODULE_0__.TokenType.Number) { if (parsed.type === _csstools_css_tokenizer__WEBPACK_IMPORTED_MODULE_0__.NumberType.Integer) { if ( // Integer values are valid for types "integer" and "ratio". supportedValueTypes.has('integer') || supportedValueTypes.has('ratio') || // Integer values of "0" are also valid for "length", "resolution" and "mq-boolean". (parsed.value === 0 && (supportedValueTypes.has('length') || supportedValueTypes.has('resolution') || supportedValueTypes.has('mq-boolean'))) || // Integer values of "1" are also valid for "mq-boolean". (parsed.value === 1 && supportedValueTypes.has('mq-boolean')) ) { return; } // An integer when the media feature doesn't support integers. reporter(state, raw, start, end); return; } if ( // Numbers are valid for "ratio". supportedValueTypes.has('ratio') || // Numbers with value "0" are also valid for "length". (parsed.value === 0 && (supportedValueTypes.has('length') || supportedValueTypes.has('resolution'))) ) { return; } // A number when the media feature doesn't support numbers. reporter(state, raw, start, end); return; } if (type === _csstools_css_tokenizer__WEBPACK_IMPORTED_MODULE_0__.TokenType.Dimension) { const unit = parsed.unit.toLowerCase(); if (supportedValueTypes.has('resolution') && _reference_units_mjs__WEBPACK_IMPORTED_MODULE_3__.resolutionUnits.has(unit)) return; if (supportedValueTypes.has('length') && _reference_units_mjs__WEBPACK_IMPORTED_MODULE_3__.lengthUnits.has(unit)) return; // An unexpected dimension or a media feature that doesn't support dimensions. reporter(state, raw, start, end); } } /** * Check that a function node is valid for a given media feature name. * * @param {State} state * @param {import('@csstools/css-parser-algorithms').FunctionNode} functionNode * @param {Reporter} reporter * @returns {void} */ function checkFunction(state, functionNode, reporter) { const functionName = functionNode.getName().toLowerCase(); // "env()" can represent any value, it is treated as valid for static analysis. if (functionName === 'env') return; const supportedValueTypes = _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__.mediaFeatureNameAllowedValueTypes.get(state.mediaFeatureName); if ( supportedValueTypes && _reference_functions_mjs__WEBPACK_IMPORTED_MODULE_5__.mathFunctions.has(functionName) && (supportedValueTypes.has('integer') || supportedValueTypes.has('length') || supportedValueTypes.has('ratio') || supportedValueTypes.has('resolution')) ) { return; } // An unexpected function or a media feature that doesn't support types that can be the result of a function. reporter(state, functionNode.toString(), ...(0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_1__.sourceIndices)(functionNode)); } /** * Check that an array of component values is valid for a given media feature name. * * @param {State} state * @param {Array<import('@csstools/css-parser-algorithms').ComponentValue>} componentValues * @param {Reporter} reporter * @returns {void} */ function checkListOfComponentValues(state, componentValues, reporter) { const supportedValueTypes = _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__.mediaFeatureNameAllowedValueTypes.get(state.mediaFeatureName); if ( supportedValueTypes && supportedValueTypes.has('ratio') && (0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_2__.matchesRatioExactly)(componentValues) !== -1 ) { return; } // An invalid aspect ratio or a media feature that doesn't support aspect ratios. reporter( state, componentValues.map((x) => x.toString()).join(''), ...(0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_1__.sourceIndices)(componentValues), ); } /** * @param {State} state * @param {import('@csstools/media-query-list-parser').MediaFeatureValue} valueNode * @param {Reporter} reporter * @returns {void} */ function checkMediaFeatureValue(state, valueNode, reporter) { if ((0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_1__.isTokenNode)(valueNode.value)) { checkSingleToken(state, valueNode.value.value, reporter); return; } if ((0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_1__.isFunctionNode)(valueNode.value)) { checkFunction(state, valueNode.value, reporter); return; } if (Array.isArray(valueNode.value)) { checkListOfComponentValues(state, valueNode.value, reporter); } } root.walkAtRules(_utils_regexes_mjs__WEBPACK_IMPORTED_MODULE_7__.atRuleRegexes.mediaName, (atRule) => { /** * @type {Reporter} */ const reporter = (state, valuePart, start, end) => { const atRuleParamIndexValue = (0,_utils_nodeFieldIndices_mjs__WEBPACK_IMPORTED_MODULE_6__.atRuleParamIndex)(atRule); (0,_utils_report_mjs__WEBPACK_IMPORTED_MODULE_9__["default"])({ message: messages.rejected, messageArgs: [state.mediaFeatureNameRaw, valuePart], index: atRuleParamIndexValue + start, endIndex: atRuleParamIndexValue + end + 1, node: atRule, ruleName, result, }); }; /** @type {State} */ const initialState = { mediaFeatureName: '', mediaFeatureNameRaw: '', }; (0,_utils_parseMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_8__["default"])(atRule).forEach((mediaQuery) => { if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_2__.isMediaQueryInvalid)(mediaQuery)) return; mediaQuery.walk(({ node, state }) => { if (!state) return; if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_2__.isMediaFeature)(node)) { const mediaFeatureNameRaw = node.getName(); let mediaFeatureName = _utils_vendor_mjs__WEBPACK_IMPORTED_MODULE_12__["default"].unprefixed(mediaFeatureNameRaw.toLowerCase()); // Unknown media feature names are handled by "media-feature-name-no-unknown". if (!_reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_4__.mediaFeatureNames.has(mediaFeatureName)) return; mediaFeatureName = mediaFeatureName.replace(HAS_MIN_MAX_PREFIX, ''); state.mediaFeatureName = mediaFeatureName; state.mediaFeatureNameRaw = mediaFeatureNameRaw; return; } if (!state.mediaFeatureName || !state.mediaFeatureNameRaw) return; if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_2__.isMediaFeatureValue)(node)) { checkMediaFeatureValue(state, node, reporter); } }, initialState); }); }); }; }; rule.ruleName = ruleName; rule.messages = messages; rule.meta = meta; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rule); /***/ }) }; ; //# sourceMappingURL=121.extension.js.map