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
JavaScript
"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