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.
396 lines (315 loc) • 13.6 kB
JavaScript
"use strict";
exports.id = 156;
exports.ids = [156];
exports.modules = {
/***/ 1711:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ isCustomMediaQuery)
/* harmony export */ });
/**
* Check whether a media query is a custom
* @param {string} mediaQuery
* @returns {boolean}
*/
function isCustomMediaQuery(mediaQuery) {
return mediaQuery.startsWith('--');
}
/***/ }),
/***/ 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;
}
/***/ }),
/***/ 1721:
/***/ ((__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_parser_algorithms__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1647);
/* harmony import */ var _csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1710);
/* harmony import */ var _utils_validateTypes_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(579);
/* harmony import */ var _utils_nodeFieldIndices_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1519);
/* harmony import */ var _utils_regexes_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1535);
/* harmony import */ var _utils_isCustomMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1711);
/* harmony import */ var _utils_optionsMatches_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(869);
/* harmony import */ var _utils_parseMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1717);
/* harmony import */ var _reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1714);
/* 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);
const ruleName = 'media-query-no-invalid';
const messages = (0,_utils_ruleMessages_mjs__WEBPACK_IMPORTED_MODULE_10__["default"])(ruleName, {
rejected: (query, reason) => {
if (!reason) return `Unexpected invalid media query "${query}"`;
return `Unexpected invalid media query "${query}", ${reason}`;
},
});
const reasons = {
custom: 'custom media queries can only be used in boolean queries',
min_max_in_range: '"min-" and "max-" prefixes are not needed when using range queries',
min_max_in_boolean: '"min-" and "max-" prefixes are not needed in boolean queries',
discrete: 'discrete features can only be used in plain and boolean queries',
};
const HAS_MIN_MAX_PREFIX = /^(?:min|max)-/i;
const meta = {
url: 'https://stylelint.io/user-guide/rules/media-query-no-invalid',
};
/** @typedef {import('stylelint').CoreRules[ruleName]} Rule */
/** @type {Rule} */
const rule = (primary, secondaryOptions) => {
return (root, result) => {
const validOptions = (0,_utils_validateOptions_mjs__WEBPACK_IMPORTED_MODULE_11__["default"])(
result,
ruleName,
{ actual: primary },
{
actual: secondaryOptions,
possible: {
ignoreFunctions: [_utils_validateTypes_mjs__WEBPACK_IMPORTED_MODULE_2__.isString, _utils_validateTypes_mjs__WEBPACK_IMPORTED_MODULE_2__.isRegExp],
},
optional: true,
},
);
if (!validOptions) {
return;
}
root.walkAtRules(_utils_regexes_mjs__WEBPACK_IMPORTED_MODULE_4__.atRuleRegexes.mediaName, (atRule) => {
const atRuleParamIndexValue = (0,_utils_nodeFieldIndices_mjs__WEBPACK_IMPORTED_MODULE_3__.atRuleParamIndex)(atRule);
(0,_utils_parseMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_7__["default"])(atRule).forEach((mediaQuery) => {
if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__.isMediaQueryInvalid)(mediaQuery)) {
if (shouldIgnoreNode(mediaQuery, secondaryOptions)) return;
// Queries that fail to parse are invalid.
complain(atRule, atRuleParamIndexValue, mediaQuery);
return;
}
mediaQuery.walk(({ node, parent }) => {
// All general enclosed nodes are invalid.
if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__.isGeneralEnclosed)(node)) {
if (shouldIgnoreNode(mediaQuery, secondaryOptions)) return;
complain(atRule, atRuleParamIndexValue, node);
return;
}
// Invalid plain media features.
if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__.isMediaFeaturePlain)(node)) {
const name = node.getName();
if ((0,_utils_isCustomMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_5__["default"])(name)) {
// In a plain context, custom media queries are invalid.
complain(atRule, atRuleParamIndexValue, parent, 'custom');
return;
}
return;
}
// Invalid range media features.
if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__.isMediaFeatureRange)(node)) {
const name = node.getName().toLowerCase();
if ((0,_utils_isCustomMediaQuery_mjs__WEBPACK_IMPORTED_MODULE_5__["default"])(name)) {
// In a range context, custom media queries are invalid.
complain(atRule, atRuleParamIndexValue, parent, 'custom');
return;
}
if (HAS_MIN_MAX_PREFIX.test(name)) {
// In a range context, min- and max- prefixed feature names are invalid.
complain(atRule, atRuleParamIndexValue, parent, 'min_max_in_range');
return;
}
if (!_reference_mediaFeatures_mjs__WEBPACK_IMPORTED_MODULE_8__.rangeTypeMediaFeatureNames.has(name)) {
// In a range context, non-range typed features are invalid.
complain(atRule, atRuleParamIndexValue, parent, 'discrete');
return;
}
return;
}
// Invalid boolean media features.
if ((0,_csstools_media_query_list_parser__WEBPACK_IMPORTED_MODULE_1__.isMediaFeatureBoolean)(node)) {
const name = node.getName();
if (HAS_MIN_MAX_PREFIX.test(name)) {
// In a boolean feature, min- and max- prefixed feature names are invalid
complain(atRule, atRuleParamIndexValue, parent, 'min_max_in_boolean');
}
}
});
});
});
/**
* @param {import('postcss').AtRule} atRule
* @param {number} index
* @param {{tokens(): Array<import('@csstools/css-tokenizer').CSSToken>}} node
* @param {keyof reasons} [reason]
*/
function complain(atRule, index, node, reason) {
const [start, end] = (0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_0__.sourceIndices)(node);
(0,_utils_report_mjs__WEBPACK_IMPORTED_MODULE_9__["default"])({
message: messages.rejected,
messageArgs: [node.toString(), reason ? reasons[reason] : ''],
index: index + start,
endIndex: index + end + 1,
node: atRule,
ruleName,
result,
});
}
};
};
/**
* @param {import('@csstools/media-query-list-parser').MediaQuery|import('@csstools/media-query-list-parser').GeneralEnclosed} node
* @param {Parameters<Rule>[1]} secondaryOptions
* @returns {boolean}
*/
function shouldIgnoreNode(node, secondaryOptions) {
if (!secondaryOptions?.ignoreFunctions) return false;
let ignored = false;
node.walk(({ node: childNode }) => {
if (!(0,_csstools_css_parser_algorithms__WEBPACK_IMPORTED_MODULE_0__.isFunctionNode)(childNode)) {
return;
}
ignored = (0,_utils_optionsMatches_mjs__WEBPACK_IMPORTED_MODULE_6__["default"])(secondaryOptions, 'ignoreFunctions', childNode.getName());
if (ignored) {
return false; // Stop iteration if an ignored function is found
}
});
return ignored;
}
rule.ruleName = ruleName;
rule.messages = messages;
rule.meta = meta;
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rule);
/***/ })
};
;
//# sourceMappingURL=156.extension.js.map