Document application modes (development/debug/production) Add global file drop handler, order column normalization, SPA hash fix Serve CDN assets via /_vendor/ URLs instead of merging into bundles Add production minification with license preservation Improve JSON formatting for debugging and production optimization Add CDN asset caching with CSS URL inlining for production builds Add three-mode system (development, debug, production) Update Manifest CLAUDE.md to reflect helper class architecture Refactor Manifest.php into helper classes for better organization Pre-manifest-refactor checkpoint: Add app_mode documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
151 lines
6.0 KiB
JavaScript
Executable File
151 lines
6.0 KiB
JavaScript
Executable File
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.compileToken = exports.compileUnsafe = exports.compile = void 0;
|
|
var css_what_1 = require("css-what");
|
|
var boolbase_1 = __importDefault(require("boolbase"));
|
|
var sort_js_1 = __importStar(require("./sort.js"));
|
|
var general_js_1 = require("./general.js");
|
|
var subselects_js_1 = require("./pseudo-selectors/subselects.js");
|
|
/**
|
|
* Compiles a selector to an executable function.
|
|
*
|
|
* @param selector Selector to compile.
|
|
* @param options Compilation options.
|
|
* @param context Optional context for the selector.
|
|
*/
|
|
function compile(selector, options, context) {
|
|
var next = compileUnsafe(selector, options, context);
|
|
return (0, subselects_js_1.ensureIsTag)(next, options.adapter);
|
|
}
|
|
exports.compile = compile;
|
|
function compileUnsafe(selector, options, context) {
|
|
var token = typeof selector === "string" ? (0, css_what_1.parse)(selector) : selector;
|
|
return compileToken(token, options, context);
|
|
}
|
|
exports.compileUnsafe = compileUnsafe;
|
|
function includesScopePseudo(t) {
|
|
return (t.type === css_what_1.SelectorType.Pseudo &&
|
|
(t.name === "scope" ||
|
|
(Array.isArray(t.data) &&
|
|
t.data.some(function (data) { return data.some(includesScopePseudo); }))));
|
|
}
|
|
var DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant };
|
|
var FLEXIBLE_DESCENDANT_TOKEN = {
|
|
type: "_flexibleDescendant",
|
|
};
|
|
var SCOPE_TOKEN = {
|
|
type: css_what_1.SelectorType.Pseudo,
|
|
name: "scope",
|
|
data: null,
|
|
};
|
|
/*
|
|
* CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector
|
|
* http://www.w3.org/TR/selectors4/#absolutizing
|
|
*/
|
|
function absolutize(token, _a, context) {
|
|
var adapter = _a.adapter;
|
|
// TODO Use better check if the context is a document
|
|
var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function (e) {
|
|
var parent = adapter.isTag(e) && adapter.getParent(e);
|
|
return e === subselects_js_1.PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));
|
|
}));
|
|
for (var _i = 0, token_1 = token; _i < token_1.length; _i++) {
|
|
var t = token_1[_i];
|
|
if (t.length > 0 &&
|
|
(0, sort_js_1.isTraversal)(t[0]) &&
|
|
t[0].type !== css_what_1.SelectorType.Descendant) {
|
|
// Don't continue in else branch
|
|
}
|
|
else if (hasContext && !t.some(includesScopePseudo)) {
|
|
t.unshift(DESCENDANT_TOKEN);
|
|
}
|
|
else {
|
|
continue;
|
|
}
|
|
t.unshift(SCOPE_TOKEN);
|
|
}
|
|
}
|
|
function compileToken(token, options, context) {
|
|
var _a;
|
|
token.forEach(sort_js_1.default);
|
|
context = (_a = options.context) !== null && _a !== void 0 ? _a : context;
|
|
var isArrayContext = Array.isArray(context);
|
|
var finalContext = context && (Array.isArray(context) ? context : [context]);
|
|
// Check if the selector is relative
|
|
if (options.relativeSelector !== false) {
|
|
absolutize(token, options, finalContext);
|
|
}
|
|
else if (token.some(function (t) { return t.length > 0 && (0, sort_js_1.isTraversal)(t[0]); })) {
|
|
throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
|
|
}
|
|
var shouldTestNextSiblings = false;
|
|
var query = token
|
|
.map(function (rules) {
|
|
if (rules.length >= 2) {
|
|
var first = rules[0], second = rules[1];
|
|
if (first.type !== css_what_1.SelectorType.Pseudo ||
|
|
first.name !== "scope") {
|
|
// Ignore
|
|
}
|
|
else if (isArrayContext &&
|
|
second.type === css_what_1.SelectorType.Descendant) {
|
|
rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
|
|
}
|
|
else if (second.type === css_what_1.SelectorType.Adjacent ||
|
|
second.type === css_what_1.SelectorType.Sibling) {
|
|
shouldTestNextSiblings = true;
|
|
}
|
|
}
|
|
return compileRules(rules, options, finalContext);
|
|
})
|
|
.reduce(reduceRules, boolbase_1.default.falseFunc);
|
|
query.shouldTestNextSiblings = shouldTestNextSiblings;
|
|
return query;
|
|
}
|
|
exports.compileToken = compileToken;
|
|
function compileRules(rules, options, context) {
|
|
var _a;
|
|
return rules.reduce(function (previous, rule) {
|
|
return previous === boolbase_1.default.falseFunc
|
|
? boolbase_1.default.falseFunc
|
|
: (0, general_js_1.compileGeneralSelector)(previous, rule, options, context, compileToken);
|
|
}, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.default.trueFunc);
|
|
}
|
|
function reduceRules(a, b) {
|
|
if (b === boolbase_1.default.falseFunc || a === boolbase_1.default.trueFunc) {
|
|
return a;
|
|
}
|
|
if (a === boolbase_1.default.falseFunc || b === boolbase_1.default.trueFunc) {
|
|
return b;
|
|
}
|
|
return function combine(elem) {
|
|
return a(elem) || b(elem);
|
|
};
|
|
}
|
|
//# sourceMappingURL=compile.js.map
|