@jesscss/core 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/lib/context.d.ts +352 -0
- package/lib/context.d.ts.map +1 -0
- package/lib/context.js +636 -0
- package/lib/context.js.map +1 -0
- package/lib/conversions.d.ts +73 -0
- package/lib/conversions.d.ts.map +1 -0
- package/lib/conversions.js +253 -0
- package/lib/conversions.js.map +1 -0
- package/lib/debug-log.d.ts +2 -0
- package/lib/debug-log.d.ts.map +1 -0
- package/lib/debug-log.js +27 -0
- package/lib/debug-log.js.map +1 -0
- package/lib/define-function.d.ts +587 -0
- package/lib/define-function.d.ts.map +1 -0
- package/lib/define-function.js +726 -0
- package/lib/define-function.js.map +1 -0
- package/lib/deprecation.d.ts +34 -0
- package/lib/deprecation.d.ts.map +1 -0
- package/lib/deprecation.js +57 -0
- package/lib/deprecation.js.map +1 -0
- package/lib/index.d.ts +22 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -0
- package/lib/index.js.map +1 -0
- package/lib/jess-error.d.ts +343 -0
- package/lib/jess-error.d.ts.map +1 -0
- package/lib/jess-error.js +508 -0
- package/lib/jess-error.js.map +1 -0
- package/lib/logger/deprecation-processing.d.ts +41 -0
- package/lib/logger/deprecation-processing.d.ts.map +1 -0
- package/lib/logger/deprecation-processing.js +81 -0
- package/lib/logger/deprecation-processing.js.map +1 -0
- package/lib/logger.d.ts +10 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +20 -0
- package/lib/logger.js.map +1 -0
- package/lib/plugin.d.ts +94 -0
- package/lib/plugin.d.ts.map +1 -0
- package/lib/plugin.js +174 -0
- package/lib/plugin.js.map +1 -0
- package/lib/tree/ampersand.d.ts +94 -0
- package/lib/tree/ampersand.d.ts.map +1 -0
- package/lib/tree/ampersand.js +269 -0
- package/lib/tree/ampersand.js.map +1 -0
- package/lib/tree/any.d.ts +58 -0
- package/lib/tree/any.d.ts.map +1 -0
- package/lib/tree/any.js +101 -0
- package/lib/tree/any.js.map +1 -0
- package/lib/tree/at-rule.d.ts +53 -0
- package/lib/tree/at-rule.d.ts.map +1 -0
- package/lib/tree/at-rule.js +503 -0
- package/lib/tree/at-rule.js.map +1 -0
- package/lib/tree/block.d.ts +22 -0
- package/lib/tree/block.d.ts.map +1 -0
- package/lib/tree/block.js +24 -0
- package/lib/tree/block.js.map +1 -0
- package/lib/tree/bool.d.ts +17 -0
- package/lib/tree/bool.d.ts.map +1 -0
- package/lib/tree/bool.js +24 -0
- package/lib/tree/bool.js.map +1 -0
- package/lib/tree/call.d.ts +66 -0
- package/lib/tree/call.d.ts.map +1 -0
- package/lib/tree/call.js +306 -0
- package/lib/tree/call.js.map +1 -0
- package/lib/tree/collection.d.ts +30 -0
- package/lib/tree/collection.d.ts.map +1 -0
- package/lib/tree/collection.js +37 -0
- package/lib/tree/collection.js.map +1 -0
- package/lib/tree/color.d.ts +101 -0
- package/lib/tree/color.d.ts.map +1 -0
- package/lib/tree/color.js +513 -0
- package/lib/tree/color.js.map +1 -0
- package/lib/tree/combinator.d.ts +12 -0
- package/lib/tree/combinator.d.ts.map +1 -0
- package/lib/tree/combinator.js +8 -0
- package/lib/tree/combinator.js.map +1 -0
- package/lib/tree/comment.d.ts +20 -0
- package/lib/tree/comment.d.ts.map +1 -0
- package/lib/tree/comment.js +18 -0
- package/lib/tree/comment.js.map +1 -0
- package/lib/tree/condition.d.ts +31 -0
- package/lib/tree/condition.d.ts.map +1 -0
- package/lib/tree/condition.js +103 -0
- package/lib/tree/condition.js.map +1 -0
- package/lib/tree/control.d.ts +104 -0
- package/lib/tree/control.d.ts.map +1 -0
- package/lib/tree/control.js +430 -0
- package/lib/tree/control.js.map +1 -0
- package/lib/tree/declaration-custom.d.ts +18 -0
- package/lib/tree/declaration-custom.d.ts.map +1 -0
- package/lib/tree/declaration-custom.js +24 -0
- package/lib/tree/declaration-custom.js.map +1 -0
- package/lib/tree/declaration-var.d.ts +36 -0
- package/lib/tree/declaration-var.d.ts.map +1 -0
- package/lib/tree/declaration-var.js +63 -0
- package/lib/tree/declaration-var.js.map +1 -0
- package/lib/tree/declaration.d.ts +78 -0
- package/lib/tree/declaration.d.ts.map +1 -0
- package/lib/tree/declaration.js +289 -0
- package/lib/tree/declaration.js.map +1 -0
- package/lib/tree/default-guard.d.ts +15 -0
- package/lib/tree/default-guard.d.ts.map +1 -0
- package/lib/tree/default-guard.js +19 -0
- package/lib/tree/default-guard.js.map +1 -0
- package/lib/tree/dimension.d.ts +33 -0
- package/lib/tree/dimension.d.ts.map +1 -0
- package/lib/tree/dimension.js +291 -0
- package/lib/tree/dimension.js.map +1 -0
- package/lib/tree/expression.d.ts +24 -0
- package/lib/tree/expression.d.ts.map +1 -0
- package/lib/tree/expression.js +28 -0
- package/lib/tree/expression.js.map +1 -0
- package/lib/tree/extend-list.d.ts +23 -0
- package/lib/tree/extend-list.d.ts.map +1 -0
- package/lib/tree/extend-list.js +20 -0
- package/lib/tree/extend-list.js.map +1 -0
- package/lib/tree/extend.d.ts +47 -0
- package/lib/tree/extend.d.ts.map +1 -0
- package/lib/tree/extend.js +292 -0
- package/lib/tree/extend.js.map +1 -0
- package/lib/tree/function.d.ts +48 -0
- package/lib/tree/function.d.ts.map +1 -0
- package/lib/tree/function.js +74 -0
- package/lib/tree/function.js.map +1 -0
- package/lib/tree/import-js.d.ts +35 -0
- package/lib/tree/import-js.d.ts.map +1 -0
- package/lib/tree/import-js.js +45 -0
- package/lib/tree/import-js.js.map +1 -0
- package/lib/tree/import-style.d.ts +156 -0
- package/lib/tree/import-style.d.ts.map +1 -0
- package/lib/tree/import-style.js +556 -0
- package/lib/tree/import-style.js.map +1 -0
- package/lib/tree/index.d.ts +71 -0
- package/lib/tree/index.d.ts.map +1 -0
- package/lib/tree/index.js +95 -0
- package/lib/tree/index.js.map +1 -0
- package/lib/tree/interpolated-reference.d.ts +24 -0
- package/lib/tree/interpolated-reference.d.ts.map +1 -0
- package/lib/tree/interpolated-reference.js +37 -0
- package/lib/tree/interpolated-reference.js.map +1 -0
- package/lib/tree/interpolated.d.ts +62 -0
- package/lib/tree/interpolated.d.ts.map +1 -0
- package/lib/tree/interpolated.js +204 -0
- package/lib/tree/interpolated.js.map +1 -0
- package/lib/tree/js-array.d.ts +10 -0
- package/lib/tree/js-array.d.ts.map +1 -0
- package/lib/tree/js-array.js +10 -0
- package/lib/tree/js-array.js.map +1 -0
- package/lib/tree/js-expr.d.ts +23 -0
- package/lib/tree/js-expr.d.ts.map +1 -0
- package/lib/tree/js-expr.js +28 -0
- package/lib/tree/js-expr.js.map +1 -0
- package/lib/tree/js-function.d.ts +20 -0
- package/lib/tree/js-function.d.ts.map +1 -0
- package/lib/tree/js-function.js +16 -0
- package/lib/tree/js-function.js.map +1 -0
- package/lib/tree/js-object.d.ts +10 -0
- package/lib/tree/js-object.d.ts.map +1 -0
- package/lib/tree/js-object.js +10 -0
- package/lib/tree/js-object.js.map +1 -0
- package/lib/tree/list.d.ts +38 -0
- package/lib/tree/list.d.ts.map +1 -0
- package/lib/tree/list.js +83 -0
- package/lib/tree/list.js.map +1 -0
- package/lib/tree/log.d.ts +29 -0
- package/lib/tree/log.d.ts.map +1 -0
- package/lib/tree/log.js +56 -0
- package/lib/tree/log.js.map +1 -0
- package/lib/tree/mixin.d.ts +87 -0
- package/lib/tree/mixin.d.ts.map +1 -0
- package/lib/tree/mixin.js +112 -0
- package/lib/tree/mixin.js.map +1 -0
- package/lib/tree/negative.d.ts +17 -0
- package/lib/tree/negative.d.ts.map +1 -0
- package/lib/tree/negative.js +22 -0
- package/lib/tree/negative.js.map +1 -0
- package/lib/tree/nil.d.ts +31 -0
- package/lib/tree/nil.d.ts.map +1 -0
- package/lib/tree/nil.js +36 -0
- package/lib/tree/nil.js.map +1 -0
- package/lib/tree/node-base.d.ts +359 -0
- package/lib/tree/node-base.d.ts.map +1 -0
- package/lib/tree/node-base.js +884 -0
- package/lib/tree/node-base.js.map +1 -0
- package/lib/tree/node.d.ts +10 -0
- package/lib/tree/node.d.ts.map +1 -0
- package/lib/tree/node.js +45 -0
- package/lib/tree/node.js.map +1 -0
- package/lib/tree/number.d.ts +21 -0
- package/lib/tree/number.d.ts.map +1 -0
- package/lib/tree/number.js +27 -0
- package/lib/tree/number.js.map +1 -0
- package/lib/tree/operation.d.ts +26 -0
- package/lib/tree/operation.d.ts.map +1 -0
- package/lib/tree/operation.js +103 -0
- package/lib/tree/operation.js.map +1 -0
- package/lib/tree/paren.d.ts +18 -0
- package/lib/tree/paren.d.ts.map +1 -0
- package/lib/tree/paren.js +86 -0
- package/lib/tree/paren.js.map +1 -0
- package/lib/tree/query-condition.d.ts +17 -0
- package/lib/tree/query-condition.d.ts.map +1 -0
- package/lib/tree/query-condition.js +39 -0
- package/lib/tree/query-condition.js.map +1 -0
- package/lib/tree/quoted.d.ts +27 -0
- package/lib/tree/quoted.d.ts.map +1 -0
- package/lib/tree/quoted.js +66 -0
- package/lib/tree/quoted.js.map +1 -0
- package/lib/tree/range.d.ts +33 -0
- package/lib/tree/range.d.ts.map +1 -0
- package/lib/tree/range.js +47 -0
- package/lib/tree/range.js.map +1 -0
- package/lib/tree/reference.d.ts +76 -0
- package/lib/tree/reference.d.ts.map +1 -0
- package/lib/tree/reference.js +521 -0
- package/lib/tree/reference.js.map +1 -0
- package/lib/tree/rest.d.ts +15 -0
- package/lib/tree/rest.d.ts.map +1 -0
- package/lib/tree/rest.js +32 -0
- package/lib/tree/rest.js.map +1 -0
- package/lib/tree/rules-raw.d.ts +17 -0
- package/lib/tree/rules-raw.d.ts.map +1 -0
- package/lib/tree/rules-raw.js +37 -0
- package/lib/tree/rules-raw.js.map +1 -0
- package/lib/tree/rules.d.ts +255 -0
- package/lib/tree/rules.d.ts.map +1 -0
- package/lib/tree/rules.js +2293 -0
- package/lib/tree/rules.js.map +1 -0
- package/lib/tree/ruleset.d.ts +91 -0
- package/lib/tree/ruleset.d.ts.map +1 -0
- package/lib/tree/ruleset.js +506 -0
- package/lib/tree/ruleset.js.map +1 -0
- package/lib/tree/selector-attr.d.ts +31 -0
- package/lib/tree/selector-attr.d.ts.map +1 -0
- package/lib/tree/selector-attr.js +99 -0
- package/lib/tree/selector-attr.js.map +1 -0
- package/lib/tree/selector-basic.d.ts +23 -0
- package/lib/tree/selector-basic.d.ts.map +1 -0
- package/lib/tree/selector-basic.js +34 -0
- package/lib/tree/selector-basic.js.map +1 -0
- package/lib/tree/selector-capture.d.ts +23 -0
- package/lib/tree/selector-capture.d.ts.map +1 -0
- package/lib/tree/selector-capture.js +34 -0
- package/lib/tree/selector-capture.js.map +1 -0
- package/lib/tree/selector-complex.d.ts +40 -0
- package/lib/tree/selector-complex.d.ts.map +1 -0
- package/lib/tree/selector-complex.js +143 -0
- package/lib/tree/selector-complex.js.map +1 -0
- package/lib/tree/selector-compound.d.ts +16 -0
- package/lib/tree/selector-compound.d.ts.map +1 -0
- package/lib/tree/selector-compound.js +114 -0
- package/lib/tree/selector-compound.js.map +1 -0
- package/lib/tree/selector-interpolated.d.ts +23 -0
- package/lib/tree/selector-interpolated.d.ts.map +1 -0
- package/lib/tree/selector-interpolated.js +27 -0
- package/lib/tree/selector-interpolated.js.map +1 -0
- package/lib/tree/selector-list.d.ts +17 -0
- package/lib/tree/selector-list.d.ts.map +1 -0
- package/lib/tree/selector-list.js +184 -0
- package/lib/tree/selector-list.js.map +1 -0
- package/lib/tree/selector-pseudo.d.ts +42 -0
- package/lib/tree/selector-pseudo.d.ts.map +1 -0
- package/lib/tree/selector-pseudo.js +191 -0
- package/lib/tree/selector-pseudo.js.map +1 -0
- package/lib/tree/selector-simple.d.ts +5 -0
- package/lib/tree/selector-simple.d.ts.map +1 -0
- package/lib/tree/selector-simple.js +6 -0
- package/lib/tree/selector-simple.js.map +1 -0
- package/lib/tree/selector.d.ts +43 -0
- package/lib/tree/selector.d.ts.map +1 -0
- package/lib/tree/selector.js +56 -0
- package/lib/tree/selector.js.map +1 -0
- package/lib/tree/sequence.d.ts +43 -0
- package/lib/tree/sequence.d.ts.map +1 -0
- package/lib/tree/sequence.js +148 -0
- package/lib/tree/sequence.js.map +1 -0
- package/lib/tree/tree.d.ts +87 -0
- package/lib/tree/tree.d.ts.map +1 -0
- package/lib/tree/tree.js +2 -0
- package/lib/tree/tree.js.map +1 -0
- package/lib/tree/url.d.ts +18 -0
- package/lib/tree/url.d.ts.map +1 -0
- package/lib/tree/url.js +35 -0
- package/lib/tree/url.js.map +1 -0
- package/lib/tree/util/__tests__/debug-log.d.ts +1 -0
- package/lib/tree/util/__tests__/debug-log.d.ts.map +1 -0
- package/lib/tree/util/__tests__/debug-log.js +36 -0
- package/lib/tree/util/__tests__/debug-log.js.map +1 -0
- package/lib/tree/util/calculate.d.ts +3 -0
- package/lib/tree/util/calculate.d.ts.map +1 -0
- package/lib/tree/util/calculate.js +10 -0
- package/lib/tree/util/calculate.js.map +1 -0
- package/lib/tree/util/cast.d.ts +10 -0
- package/lib/tree/util/cast.d.ts.map +1 -0
- package/lib/tree/util/cast.js +87 -0
- package/lib/tree/util/cast.js.map +1 -0
- package/lib/tree/util/cloning.d.ts +4 -0
- package/lib/tree/util/cloning.d.ts.map +1 -0
- package/lib/tree/util/cloning.js +8 -0
- package/lib/tree/util/cloning.js.map +1 -0
- package/lib/tree/util/collections.d.ts +57 -0
- package/lib/tree/util/collections.d.ts.map +1 -0
- package/lib/tree/util/collections.js +136 -0
- package/lib/tree/util/collections.js.map +1 -0
- package/lib/tree/util/compare.d.ts +11 -0
- package/lib/tree/util/compare.d.ts.map +1 -0
- package/lib/tree/util/compare.js +89 -0
- package/lib/tree/util/compare.js.map +1 -0
- package/lib/tree/util/extend-helpers.d.ts +2 -0
- package/lib/tree/util/extend-helpers.d.ts.map +1 -0
- package/lib/tree/util/extend-helpers.js +2 -0
- package/lib/tree/util/extend-helpers.js.map +1 -0
- package/lib/tree/util/extend-roots.d.ts +37 -0
- package/lib/tree/util/extend-roots.d.ts.map +1 -0
- package/lib/tree/util/extend-roots.js +682 -0
- package/lib/tree/util/extend-roots.js.map +1 -0
- package/lib/tree/util/extend-roots.old.d.ts +132 -0
- package/lib/tree/util/extend-roots.old.d.ts.map +1 -0
- package/lib/tree/util/extend-roots.old.js +2272 -0
- package/lib/tree/util/extend-roots.old.js.map +1 -0
- package/lib/tree/util/extend-trace-debug.d.ts +13 -0
- package/lib/tree/util/extend-trace-debug.d.ts.map +1 -0
- package/lib/tree/util/extend-trace-debug.js +34 -0
- package/lib/tree/util/extend-trace-debug.js.map +1 -0
- package/lib/tree/util/extend.d.ts +218 -0
- package/lib/tree/util/extend.d.ts.map +1 -0
- package/lib/tree/util/extend.js +3033 -0
- package/lib/tree/util/extend.js.map +1 -0
- package/lib/tree/util/find-extendable-locations.d.ts +2 -0
- package/lib/tree/util/find-extendable-locations.d.ts.map +1 -0
- package/lib/tree/util/find-extendable-locations.js +2 -0
- package/lib/tree/util/find-extendable-locations.js.map +1 -0
- package/lib/tree/util/format.d.ts +20 -0
- package/lib/tree/util/format.d.ts.map +1 -0
- package/lib/tree/util/format.js +67 -0
- package/lib/tree/util/format.js.map +1 -0
- package/lib/tree/util/is-node.d.ts +13 -0
- package/lib/tree/util/is-node.d.ts.map +1 -0
- package/lib/tree/util/is-node.js +43 -0
- package/lib/tree/util/is-node.js.map +1 -0
- package/lib/tree/util/print.d.ts +80 -0
- package/lib/tree/util/print.d.ts.map +1 -0
- package/lib/tree/util/print.js +205 -0
- package/lib/tree/util/print.js.map +1 -0
- package/lib/tree/util/process-leading-is.d.ts +25 -0
- package/lib/tree/util/process-leading-is.d.ts.map +1 -0
- package/lib/tree/util/process-leading-is.js +364 -0
- package/lib/tree/util/process-leading-is.js.map +1 -0
- package/lib/tree/util/recursion-helper.d.ts +15 -0
- package/lib/tree/util/recursion-helper.d.ts.map +1 -0
- package/lib/tree/util/recursion-helper.js +43 -0
- package/lib/tree/util/recursion-helper.js.map +1 -0
- package/lib/tree/util/regex.d.ts +4 -0
- package/lib/tree/util/regex.d.ts.map +1 -0
- package/lib/tree/util/regex.js +4 -0
- package/lib/tree/util/regex.js.map +1 -0
- package/lib/tree/util/registry-utils.d.ts +192 -0
- package/lib/tree/util/registry-utils.d.ts.map +1 -0
- package/lib/tree/util/registry-utils.js +1242 -0
- package/lib/tree/util/registry-utils.js.map +1 -0
- package/lib/tree/util/ruleset-trace.d.ts +4 -0
- package/lib/tree/util/ruleset-trace.d.ts.map +1 -0
- package/lib/tree/util/ruleset-trace.js +14 -0
- package/lib/tree/util/ruleset-trace.js.map +1 -0
- package/lib/tree/util/selector-compare.d.ts +2 -0
- package/lib/tree/util/selector-compare.d.ts.map +1 -0
- package/lib/tree/util/selector-compare.js +2 -0
- package/lib/tree/util/selector-compare.js.map +1 -0
- package/lib/tree/util/selector-match-core.d.ts +171 -0
- package/lib/tree/util/selector-match-core.d.ts.map +1 -0
- package/lib/tree/util/selector-match-core.js +1578 -0
- package/lib/tree/util/selector-match-core.js.map +1 -0
- package/lib/tree/util/selector-utils.d.ts +30 -0
- package/lib/tree/util/selector-utils.d.ts.map +1 -0
- package/lib/tree/util/selector-utils.js +100 -0
- package/lib/tree/util/selector-utils.js.map +1 -0
- package/lib/tree/util/serialize-helper.d.ts +13 -0
- package/lib/tree/util/serialize-helper.d.ts.map +1 -0
- package/lib/tree/util/serialize-helper.js +387 -0
- package/lib/tree/util/serialize-helper.js.map +1 -0
- package/lib/tree/util/serialize-types.d.ts +9 -0
- package/lib/tree/util/serialize-types.d.ts.map +1 -0
- package/lib/tree/util/serialize-types.js +216 -0
- package/lib/tree/util/serialize-types.js.map +1 -0
- package/lib/tree/util/should-operate.d.ts +23 -0
- package/lib/tree/util/should-operate.d.ts.map +1 -0
- package/lib/tree/util/should-operate.js +46 -0
- package/lib/tree/util/should-operate.js.map +1 -0
- package/lib/tree/util/sourcemap.d.ts +7 -0
- package/lib/tree/util/sourcemap.d.ts.map +1 -0
- package/lib/tree/util/sourcemap.js +25 -0
- package/lib/tree/util/sourcemap.js.map +1 -0
- package/lib/types/config.d.ts +205 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/config.js +2 -0
- package/lib/types/config.js.map +1 -0
- package/lib/types/index.d.ts +15 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +3 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/modes.d.ts +24 -0
- package/lib/types/modes.d.ts.map +1 -0
- package/lib/types/modes.js +2 -0
- package/lib/types/modes.js.map +1 -0
- package/lib/types.d.ts +61 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/use-webpack-resolver.d.ts +9 -0
- package/lib/use-webpack-resolver.d.ts.map +1 -0
- package/lib/use-webpack-resolver.js +41 -0
- package/lib/use-webpack-resolver.js.map +1 -0
- package/lib/visitor/index.d.ts +136 -0
- package/lib/visitor/index.d.ts.map +1 -0
- package/lib/visitor/index.js +135 -0
- package/lib/visitor/index.js.map +1 -0
- package/lib/visitor/less-visitor.d.ts +7 -0
- package/lib/visitor/less-visitor.d.ts.map +1 -0
- package/lib/visitor/less-visitor.js +7 -0
- package/lib/visitor/less-visitor.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { defineType, F_AMPERSAND, F_IMPLICIT_AMPERSAND } from './node.js';
|
|
2
|
+
import { Nil } from './nil.js';
|
|
3
|
+
import { SimpleSelector } from './selector-simple.js';
|
|
4
|
+
import { PseudoSelector } from './selector-pseudo.js';
|
|
5
|
+
import { SelectorList } from './selector-list.js';
|
|
6
|
+
import { BasicSelector } from './selector-basic.js';
|
|
7
|
+
import { isNode } from './util/is-node.js';
|
|
8
|
+
import { atIndex } from './util/collections.js';
|
|
9
|
+
import { getPrintOptions } from './util/print.js';
|
|
10
|
+
import { F_VISIBLE } from './node.js';
|
|
11
|
+
/**
|
|
12
|
+
* The '&' selector element
|
|
13
|
+
*/
|
|
14
|
+
export class Ampersand extends SimpleSelector {
|
|
15
|
+
type = 'Ampersand';
|
|
16
|
+
shortType = 'amp';
|
|
17
|
+
_storedSelector;
|
|
18
|
+
_selectorContainer;
|
|
19
|
+
constructor(value, options, location, treeContext) {
|
|
20
|
+
let finalValue = {};
|
|
21
|
+
if (typeof value === 'string') {
|
|
22
|
+
finalValue.appendValue = value;
|
|
23
|
+
super(finalValue, options, location, treeContext);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
finalValue = value ? { appendValue: value.appendValue } : {};
|
|
27
|
+
super(finalValue, options, location, treeContext);
|
|
28
|
+
const selectorContainer = value?.selectorContainer;
|
|
29
|
+
if (selectorContainer) {
|
|
30
|
+
this._selectorContainer = selectorContainer;
|
|
31
|
+
this._storedSelector = selectorContainer?.selector;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Set the F_AMPERSAND flag so it bubbles up to parent selectors
|
|
35
|
+
this.addFlag(F_AMPERSAND);
|
|
36
|
+
}
|
|
37
|
+
get keySet() {
|
|
38
|
+
const stored = this._storedSelector;
|
|
39
|
+
const current = this._selectorContainer?.selector;
|
|
40
|
+
if (!current || isNode(current, 'Nil')) {
|
|
41
|
+
return new Set(['&']);
|
|
42
|
+
}
|
|
43
|
+
let keySet = this._keySet;
|
|
44
|
+
if (!keySet || stored !== current) {
|
|
45
|
+
this._computeKeySetAndFastReject();
|
|
46
|
+
return this._keySet;
|
|
47
|
+
}
|
|
48
|
+
return keySet;
|
|
49
|
+
}
|
|
50
|
+
/** The keys of an ampersand are the keys of the selector it contains */
|
|
51
|
+
_computeKeySetAndFastReject() {
|
|
52
|
+
const selector = this._selectorContainer?.selector;
|
|
53
|
+
if (selector && 'keySet' in selector) {
|
|
54
|
+
this._keySet = selector.keySet;
|
|
55
|
+
// For visibleKeySet, if this ampersand has a selector value, it's an implicit ampersand
|
|
56
|
+
// (added by getImplicitSelector). For indexing purposes, we want to exclude implicit ampersands
|
|
57
|
+
// regardless of visibility, so always set visibleKeySet to empty when there's a selector value
|
|
58
|
+
if (this.hasFlag(F_VISIBLE) && !selector) {
|
|
59
|
+
// Only include visibleKeySet if visible AND no selector value (explicit ampersand)
|
|
60
|
+
this._visibleKeySet = new Set();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Implicit ampersand (has selector value) or invisible - exclude from visibleKeySet
|
|
64
|
+
this._visibleKeySet = new Set();
|
|
65
|
+
}
|
|
66
|
+
this._canFastReject = selector.canFastReject;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
this._keySet = new Set(['&']);
|
|
70
|
+
this._visibleKeySet = new Set();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns the current selector from the selector container (live when container is ruleset value).
|
|
74
|
+
* Used by extend, serialization, and matching so nested rules see the parent after extend.
|
|
75
|
+
*/
|
|
76
|
+
getResolvedSelector() {
|
|
77
|
+
const selector = this._selectorContainer?.selector;
|
|
78
|
+
if (selector && isNode(selector, 'SelectorList') && this.hasFlag(F_IMPLICIT_AMPERSAND)) {
|
|
79
|
+
const wrapped = PseudoSelector.create({ name: ':is', arg: selector.copy(true) });
|
|
80
|
+
wrapped.generated = true;
|
|
81
|
+
return wrapped;
|
|
82
|
+
}
|
|
83
|
+
return selector;
|
|
84
|
+
}
|
|
85
|
+
valueOf() {
|
|
86
|
+
const selector = this._selectorContainer?.selector;
|
|
87
|
+
if (selector) {
|
|
88
|
+
return selector.valueOf();
|
|
89
|
+
}
|
|
90
|
+
return '&';
|
|
91
|
+
}
|
|
92
|
+
toTrimmedString(options) {
|
|
93
|
+
options = getPrintOptions(options);
|
|
94
|
+
const w = options.writer;
|
|
95
|
+
const mark = w.mark();
|
|
96
|
+
const { appendValue } = this.value;
|
|
97
|
+
if (appendValue) {
|
|
98
|
+
w.add('&(');
|
|
99
|
+
if (appendValue) {
|
|
100
|
+
w.add(appendValue, this);
|
|
101
|
+
}
|
|
102
|
+
w.add(')');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
w.add('&', this);
|
|
106
|
+
}
|
|
107
|
+
return w.getSince(mark);
|
|
108
|
+
}
|
|
109
|
+
/** Hmm this should never return Extend */
|
|
110
|
+
evalNode(context) {
|
|
111
|
+
const { appendValue } = this.value;
|
|
112
|
+
const selectorContainer = this._selectorContainer;
|
|
113
|
+
const storedSelector = selectorContainer?.selector;
|
|
114
|
+
// Check if appendValue is defined (including empty string), or if hoistToRoot/collapseNesting is set
|
|
115
|
+
if (appendValue !== undefined || this.hoistToRoot || context.opts.collapseNesting) {
|
|
116
|
+
// Use the stored selector if available, otherwise fall back to frame selector
|
|
117
|
+
let frame = atIndex(context.rulesetFrames, -1);
|
|
118
|
+
let selector = storedSelector ?? frame?.selector;
|
|
119
|
+
if (!selector) {
|
|
120
|
+
return new Nil();
|
|
121
|
+
}
|
|
122
|
+
// Never mutate the frame selector in-place for append forms (&-foo / &()).
|
|
123
|
+
if (appendValue !== undefined && !isNode(selector, 'Nil')) {
|
|
124
|
+
selector = selector.clone(true);
|
|
125
|
+
}
|
|
126
|
+
/** Remove any surrounding whitespace */
|
|
127
|
+
selector.pre = undefined;
|
|
128
|
+
selector.post = undefined;
|
|
129
|
+
if (appendValue && !isNode(selector, 'Nil')) {
|
|
130
|
+
const isTemplateMerge = appendValue.includes('&');
|
|
131
|
+
if (isTemplateMerge) {
|
|
132
|
+
const isIdentJoinChar = (char) => {
|
|
133
|
+
return !!char && /[a-zA-Z0-9_-]/.test(char);
|
|
134
|
+
};
|
|
135
|
+
const assertValidTemplateJoin = (template, replacement) => {
|
|
136
|
+
if (!replacement) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
let searchFrom = 0;
|
|
140
|
+
while (true) {
|
|
141
|
+
const idx = template.indexOf('&', searchFrom);
|
|
142
|
+
if (idx === -1) {
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
const before = idx > 0 ? template[idx - 1] : undefined;
|
|
146
|
+
const after = idx < template.length - 1 ? template[idx + 1] : undefined;
|
|
147
|
+
const first = replacement[0];
|
|
148
|
+
const last = replacement[replacement.length - 1];
|
|
149
|
+
const invalidHeadJoin = (first === '.' || first === '#') && isIdentJoinChar(before);
|
|
150
|
+
const invalidTailJoin = (last === '.' || last === '#') && isIdentJoinChar(after);
|
|
151
|
+
if (invalidHeadJoin || invalidTailJoin) {
|
|
152
|
+
throw new SyntaxError(`Invalid ampersand merge template "${template}" with parent selector "${replacement}"`);
|
|
153
|
+
}
|
|
154
|
+
searchFrom = idx + 1;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const mergeTemplate = (baseSelector) => {
|
|
158
|
+
const baseSelectors = [];
|
|
159
|
+
if (isNode(baseSelector, 'PseudoSelector')
|
|
160
|
+
&& baseSelector.value.name === ':is'
|
|
161
|
+
&& baseSelector.value.arg
|
|
162
|
+
&& isNode(baseSelector.value.arg, 'SelectorList')) {
|
|
163
|
+
baseSelectors.push(...baseSelector.value.arg.value.map(item => item));
|
|
164
|
+
}
|
|
165
|
+
else if (isNode(baseSelector, 'SelectorList')) {
|
|
166
|
+
baseSelectors.push(...baseSelector.value.map(item => item));
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
baseSelectors.push(baseSelector);
|
|
170
|
+
}
|
|
171
|
+
const merged = baseSelectors.map((item) => {
|
|
172
|
+
const value = item.toTrimmedString();
|
|
173
|
+
assertValidTemplateJoin(appendValue, value);
|
|
174
|
+
return new BasicSelector(appendValue.split('&').join(value)).inherit(baseSelector);
|
|
175
|
+
});
|
|
176
|
+
if (merged.length === 1) {
|
|
177
|
+
return merged[0];
|
|
178
|
+
}
|
|
179
|
+
return new SelectorList(merged).inherit(baseSelector);
|
|
180
|
+
};
|
|
181
|
+
if (isNode(selector, 'SelectorList')) {
|
|
182
|
+
const mergedItems = [];
|
|
183
|
+
for (const item of selector.value) {
|
|
184
|
+
const merged = mergeTemplate(item);
|
|
185
|
+
if (isNode(merged, 'SelectorList')) {
|
|
186
|
+
mergedItems.push(...merged.value);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
mergedItems.push(merged);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
selector = new SelectorList(mergedItems).inherit(selector);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
selector = mergeTemplate(selector);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
let doAppendValue = (n) => {
|
|
200
|
+
let appended = false;
|
|
201
|
+
for (let s of n.nodes(true)) {
|
|
202
|
+
/** Find the last simple selector and attempt to append */
|
|
203
|
+
if (isNode(s, 'SimpleSelector')) {
|
|
204
|
+
if (typeof s.value === 'string') {
|
|
205
|
+
s.value += appendValue;
|
|
206
|
+
appended = true;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
throw new SyntaxError(`Cannot append "${appendValue}" to this type of selector`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (!appended) {
|
|
213
|
+
throw new SyntaxError(`Cannot append "${appendValue}" to this type of selector`);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
if (isNode(selector, 'SelectorList')) {
|
|
217
|
+
selector.value.forEach(doAppendValue);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
doAppendValue(selector);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
let result;
|
|
225
|
+
const shouldWrapSelectorList = isNode(selector, 'SelectorList') && (context.opts.collapseNesting || this.hoistToRoot || appendValue !== undefined);
|
|
226
|
+
const shouldWrapComplexSelector = isNode(selector, 'ComplexSelector');
|
|
227
|
+
if (shouldWrapSelectorList || shouldWrapComplexSelector) {
|
|
228
|
+
result = PseudoSelector.create({ name: ':is', arg: selector });
|
|
229
|
+
// When create() is invoked from this eval path, generated is not set on the instance
|
|
230
|
+
// (repro: process-leading-is test "unwraps evaled &[e] with frame * b"). Set explicitly.
|
|
231
|
+
result.generated = true;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
result = selector;
|
|
235
|
+
}
|
|
236
|
+
// If we're appending (e.g. `&-1`), we must hoist this selector out of its parent frames
|
|
237
|
+
// because it materially changes the inherited selector.
|
|
238
|
+
if (appendValue !== undefined) {
|
|
239
|
+
result.hoistToRoot = true;
|
|
240
|
+
}
|
|
241
|
+
// Only set hoistToRoot if we actually wrapped or if it was already set
|
|
242
|
+
if (shouldWrapSelectorList || shouldWrapComplexSelector || this.hoistToRoot) {
|
|
243
|
+
result.hoistToRoot = true;
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
const amp = this.maybeClone(context);
|
|
248
|
+
let frame = atIndex(context.rulesetFrames, -1);
|
|
249
|
+
/**
|
|
250
|
+
* Attach the current context selector if we need it later, for extends and such.
|
|
251
|
+
* The frame is constant, so we can use the selector directly.
|
|
252
|
+
* If the ampersand already has a stored selector (from getImplicitSelector),
|
|
253
|
+
* preserve it instead of overwriting with the frame selector.
|
|
254
|
+
*/
|
|
255
|
+
if (!amp._selectorContainer && frame && frame.selector) {
|
|
256
|
+
amp._selectorContainer = frame;
|
|
257
|
+
}
|
|
258
|
+
return amp;
|
|
259
|
+
}
|
|
260
|
+
clone(deep, cloneFn) {
|
|
261
|
+
const newNode = super.clone(deep, cloneFn);
|
|
262
|
+
if (this._selectorContainer) {
|
|
263
|
+
newNode._selectorContainer = this._selectorContainer;
|
|
264
|
+
}
|
|
265
|
+
return newNode;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
export const amp = defineType(Ampersand, 'Ampersand', 'amp');
|
|
269
|
+
//# sourceMappingURL=ampersand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ampersand.js","sourceRoot":"","sources":["../../src/tree/ampersand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import from node-base to avoid circular dependency.
|
|
3
|
+
* The patching happens in node.ts
|
|
4
|
+
*/
|
|
5
|
+
import { Node, type LocationInfo, type NodeOptions } from './node-base.js';
|
|
6
|
+
import type { Context, TreeContext } from '../context.js';
|
|
7
|
+
import { type MaybePromise } from '@jesscss/awaitable-pipe';
|
|
8
|
+
import { Nil } from './nil.js';
|
|
9
|
+
export type AnyRole = 'ident' | 'name' | 'charset' | 'keyword' | 'property' | 'atkeyword' | 'urlvalue' | 'flag' | 'customprop' | 'semi' | 'operator' | 'any';
|
|
10
|
+
/** Doesn't get assigned but can be used for inference? */
|
|
11
|
+
export type AnyOptions<T extends string> = NodeOptions & {
|
|
12
|
+
role?: T;
|
|
13
|
+
};
|
|
14
|
+
export interface Any<Role extends AnyRole = AnyRole> extends Node<string, AnyOptions<Role>> {
|
|
15
|
+
eval(context: Context): Any<Role>;
|
|
16
|
+
valueOf(): string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Any is a simple token that has a string value and a role.
|
|
20
|
+
* Sometimes that role is unspecified. Think of it as a generic,
|
|
21
|
+
* and a placeholder for tokens that don't have anything special
|
|
22
|
+
* to do during evaluation.
|
|
23
|
+
*
|
|
24
|
+
* Called "Anonymous" in Less's original tree, but "anonymous"
|
|
25
|
+
* was somewhat a counter-intuitive name.
|
|
26
|
+
*/
|
|
27
|
+
export declare class Any<Role extends AnyRole = AnyRole> extends Node<string, AnyOptions<Role>> {
|
|
28
|
+
type: string;
|
|
29
|
+
shortType: string;
|
|
30
|
+
state: number;
|
|
31
|
+
preEval(context: Context): this | Nil;
|
|
32
|
+
evalNode(context: Context): MaybePromise<Node>;
|
|
33
|
+
compare(other: Node): 0 | 1 | -1 | undefined;
|
|
34
|
+
}
|
|
35
|
+
export declare function any<Role extends AnyRole = AnyRole>(value: string, options?: AnyOptions<Role>): Any<Role>;
|
|
36
|
+
/** Legacy class - remove? */
|
|
37
|
+
export declare class Anonymous<Role extends AnyRole = AnyRole> extends Any<Role> {
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Keyword represents a CSS keyword value (e.g., 'auto', 'none', 'inherit', 'and', 'or').
|
|
41
|
+
*
|
|
42
|
+
* This is a convenience class that extends Any with role: 'keyword' fixed.
|
|
43
|
+
* It provides better type safety and aligns with Less.js's Keyword node type
|
|
44
|
+
* for compatibility purposes.
|
|
45
|
+
*
|
|
46
|
+
* Note: In Jess, boolean values ('true', 'false') are represented as Bool nodes,
|
|
47
|
+
* not Keyword nodes, unlike Less.js where they are Keyword instances.
|
|
48
|
+
*/
|
|
49
|
+
export declare class Keyword extends Any<'keyword'> {
|
|
50
|
+
type: "Keyword";
|
|
51
|
+
shortType: string;
|
|
52
|
+
constructor(value: string, options?: Omit<NodeOptions, 'role'>, location?: LocationInfo, context?: TreeContext);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Helper function to create a Keyword node
|
|
56
|
+
*/
|
|
57
|
+
export declare function keyword(value: string, options?: Omit<NodeOptions, 'role'>, location?: LocationInfo, context?: TreeContext): Keyword;
|
|
58
|
+
//# sourceMappingURL=any.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../src/tree/any.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAc,KAAK,YAAY,EAAE,KAAK,WAAW,EAAuB,MAAM,gBAAgB,CAAC;AAC5G,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,MAAM,OAAO,GACjB,OAAO,GACL,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,GACV,WAAW,GACX,UAAU,GACV,MAAM,GACN,YAAY,GACZ,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,GAAG;IACvD,IAAI,CAAC,EAAE,CAAC,CAAC;CACV,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,IAAI,SAAS,OAAO,GAAG,OAAO,CAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,IAAI,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,GAAG,CACd,IAAI,SAAS,OAAO,GAAG,OAAO,CAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,SAAS;IACb,SAAS,SAAS;IACT,KAAK,SAAwB;IAE7B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,GAAG;IAcrC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;CA8BtD;AAGD,wBAAgB,GAAG,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAChD,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,GACzB,GAAG,CAAC,IAAI,CAAC,CAEX;AAGD,6BAA6B;AAC7B,qBAAa,SAAS,CACpB,IAAI,SAAS,OAAO,GAAG,OAAO,CAC9B,SAAQ,GAAG,CAAC,IAAI,CAAC;CAAG;AAGtB;;;;;;;;;GASG;AACH,qBAAa,OAAQ,SAAQ,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,EAAG,SAAS,CAAU;IAC1B,SAAS,SAAa;gBAG7B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EACnC,QAAQ,CAAC,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,WAAW;CAKxB;AAGD;;GAEG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EACnC,QAAQ,CAAC,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAET"}
|
package/lib/tree/any.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import from node-base to avoid circular dependency.
|
|
3
|
+
* The patching happens in node.ts
|
|
4
|
+
*/
|
|
5
|
+
import { Node, defineType, F_STATIC, F_VISIBLE } from './node-base.js';
|
|
6
|
+
import { Nil } from './nil.js';
|
|
7
|
+
/**
|
|
8
|
+
* Any is a simple token that has a string value and a role.
|
|
9
|
+
* Sometimes that role is unspecified. Think of it as a generic,
|
|
10
|
+
* and a placeholder for tokens that don't have anything special
|
|
11
|
+
* to do during evaluation.
|
|
12
|
+
*
|
|
13
|
+
* Called "Anonymous" in Less's original tree, but "anonymous"
|
|
14
|
+
* was somewhat a counter-intuitive name.
|
|
15
|
+
*/
|
|
16
|
+
export class Any extends Node {
|
|
17
|
+
type = 'Any';
|
|
18
|
+
shortType = 'any';
|
|
19
|
+
state = F_VISIBLE | F_STATIC;
|
|
20
|
+
preEval(context) {
|
|
21
|
+
this.preEvaluated = true;
|
|
22
|
+
// Index should already be assigned by parent Rules
|
|
23
|
+
if (this.options.role === 'charset') {
|
|
24
|
+
if (!context.currentCharset) {
|
|
25
|
+
/** @todo - Throw error in the future? */
|
|
26
|
+
context.currentCharset = this;
|
|
27
|
+
}
|
|
28
|
+
return new Nil();
|
|
29
|
+
}
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
// Any values are static and don't need evaluation
|
|
33
|
+
evalNode(context) {
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
compare(other) {
|
|
37
|
+
// In Less guards, quoted strings are distinct from bare identifiers.
|
|
38
|
+
if (other.type === 'Quoted') {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
if (other.type === 'Any' || other.type === 'Keyword') {
|
|
42
|
+
return this.value === String(other.valueOf?.() ?? '') ? 0 : undefined;
|
|
43
|
+
}
|
|
44
|
+
if (other.type === 'Number' || other.type === 'Dimension') {
|
|
45
|
+
const text = this.value.trim();
|
|
46
|
+
if (!/^[-+]?(?:\d+\.?\d*|\.\d+)$/.test(text)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const otherValue = other.value;
|
|
50
|
+
const otherNumber = otherValue?.number;
|
|
51
|
+
const otherUnit = otherValue?.unit;
|
|
52
|
+
if (typeof otherNumber !== 'number') {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
if (other.type === 'Dimension' && otherUnit) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return Number(text) === otherNumber ? 0 : undefined;
|
|
59
|
+
}
|
|
60
|
+
if (other.toString) {
|
|
61
|
+
const normalize = (s) => s.replace(/;\s*/g, ', ').replace(/\s+/g, ' ').trim();
|
|
62
|
+
return normalize(this.toString()) === normalize(other.toString()) ? 0 : undefined;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Custom any function that properly handles role narrowing
|
|
68
|
+
export function any(value, options) {
|
|
69
|
+
return new Any(value, options);
|
|
70
|
+
}
|
|
71
|
+
defineType(Any, 'Any');
|
|
72
|
+
/** Legacy class - remove? */
|
|
73
|
+
export class Anonymous extends Any {
|
|
74
|
+
}
|
|
75
|
+
defineType(Anonymous, 'Anonymous');
|
|
76
|
+
/**
|
|
77
|
+
* Keyword represents a CSS keyword value (e.g., 'auto', 'none', 'inherit', 'and', 'or').
|
|
78
|
+
*
|
|
79
|
+
* This is a convenience class that extends Any with role: 'keyword' fixed.
|
|
80
|
+
* It provides better type safety and aligns with Less.js's Keyword node type
|
|
81
|
+
* for compatibility purposes.
|
|
82
|
+
*
|
|
83
|
+
* Note: In Jess, boolean values ('true', 'false') are represented as Bool nodes,
|
|
84
|
+
* not Keyword nodes, unlike Less.js where they are Keyword instances.
|
|
85
|
+
*/
|
|
86
|
+
export class Keyword extends Any {
|
|
87
|
+
type = 'Keyword';
|
|
88
|
+
shortType = 'keyword';
|
|
89
|
+
constructor(value, options, location, context) {
|
|
90
|
+
// Force role to 'keyword'
|
|
91
|
+
super(value, { ...options, role: 'keyword' }, location, context);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
defineType(Keyword, 'Keyword');
|
|
95
|
+
/**
|
|
96
|
+
* Helper function to create a Keyword node
|
|
97
|
+
*/
|
|
98
|
+
export function keyword(value, options, location, context) {
|
|
99
|
+
return new Keyword(value, options, location, context);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=any.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/tree/any.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Node, type NodeOptions } from './node.js';
|
|
2
|
+
import { Ruleset } from './ruleset.js';
|
|
3
|
+
import { Any } from './any.js';
|
|
4
|
+
import { Rules } from './rules.js';
|
|
5
|
+
import type { Context } from '../context.js';
|
|
6
|
+
import { type FinalPrintOptions, type PrintOptions } from './util/print.js';
|
|
7
|
+
import { type MaybePromise } from '@jesscss/awaitable-pipe';
|
|
8
|
+
import { Nil } from './nil.js';
|
|
9
|
+
export type AtRuleValue = {
|
|
10
|
+
name: Any<'atkeyword'>;
|
|
11
|
+
/** The prelude */
|
|
12
|
+
prelude?: Node;
|
|
13
|
+
rules?: Rules;
|
|
14
|
+
};
|
|
15
|
+
export declare const NESTABLE_AT_RULES: readonly ["@media", "@supports", "@layer", "@container", "@scope"];
|
|
16
|
+
export declare const ROOT_ONLY_AT_RULES: readonly ["@charset", "@import", "@namespace", "@font-face", "@keyframes", "@page", "@property", "@counter-style", "@viewport"];
|
|
17
|
+
export type AtRuleOptions = NodeOptions;
|
|
18
|
+
/**
|
|
19
|
+
* A rule like @charset or @media
|
|
20
|
+
*/
|
|
21
|
+
export declare class AtRule extends Node<AtRuleValue, AtRuleOptions> {
|
|
22
|
+
type: "AtRule";
|
|
23
|
+
shortType: "atrule";
|
|
24
|
+
allowRoot: boolean;
|
|
25
|
+
frames: (Ruleset | AtRule)[] | undefined;
|
|
26
|
+
protected _valueOf: string | undefined;
|
|
27
|
+
/** Used for equality comparison with other at-rules */
|
|
28
|
+
valueOf(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Means: can bubble ruleset parents to children.
|
|
31
|
+
*/
|
|
32
|
+
isNestable(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* For legacy collapseNesting, will push ruleset to root silently.
|
|
35
|
+
*/
|
|
36
|
+
isRootOnly(): boolean;
|
|
37
|
+
isHoisted(opts: {
|
|
38
|
+
collapseNesting?: boolean;
|
|
39
|
+
}): boolean;
|
|
40
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
41
|
+
/**
|
|
42
|
+
* Pre-evaluate name and prelude (similar to Ruleset.preEval)
|
|
43
|
+
* This allows us to extract layer names before rules are evaluated
|
|
44
|
+
*/
|
|
45
|
+
preEval(context: Context): MaybePromise<AtRule | Nil>;
|
|
46
|
+
private _preEvalPrelude;
|
|
47
|
+
private _extractAndStoreLayerName;
|
|
48
|
+
/** Render the opening of this at-rule (name and prelude) */
|
|
49
|
+
getHeaderString(options: FinalPrintOptions, withoutComments?: boolean): string;
|
|
50
|
+
evalNode(context: Context): MaybePromise<AtRule | Nil>;
|
|
51
|
+
}
|
|
52
|
+
export declare const atrule: (value?: AtRuleValue | undefined, options?: NodeOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => AtRule;
|
|
53
|
+
//# sourceMappingURL=at-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at-rule.d.ts","sourceRoot":"","sources":["../../src/tree/at-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAyB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA0B7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAc,KAAK,YAAY,EAAQ,MAAM,yBAAyB,CAAC;AAK9E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,kBAAkB;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,iBAAiB,oEAAqE,CAAC;AACpG,eAAO,MAAM,kBAAkB,iIAUrB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC;AAExC;;GAEG;AACH,qBAAa,MAAO,SAAQ,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;IAC1D,IAAI,EAAG,QAAQ,CAAU;IACzB,SAAS,EAAG,QAAQ,CAAU;IACrB,SAAS,UAAQ;IAE1B,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;IAEzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,uDAAuD;IAC9C,OAAO;IAIhB;;OAEG;IACH,UAAU;IAIV;;OAEG;IACH,UAAU;IAIV,SAAS,CAAC,IAAI,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IAIpC,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAKxD;;;OAGG;IACM,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC;IAyB9D,OAAO,CAAC,eAAe;IAkFvB,OAAO,CAAC,yBAAyB;IAqBjC,4DAA4D;IAC5D,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAqDrE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC;CAiThE;AAED,eAAO,MAAM,MAAM,8IAA+B,CAAC"}
|