@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 @@
|
|
|
1
|
+
{"version":3,"file":"selector-interpolated.js","sourceRoot":"","sources":["../../src/tree/selector-interpolated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAStD;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAA4B;IACpE,IAAI,GAAG,sBAA+B,CAAC;IACvC,SAAS,GAAG,uBAAgC,CAAC;IAE7C,IAAI,OAAO;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAEQ,QAAQ,CAAC,OAAgB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Context } from '../context.js';
|
|
2
|
+
import { Selector } from './selector.js';
|
|
3
|
+
import { type PrintOptions } from './util/print.js';
|
|
4
|
+
import { type MaybePromise } from '@jesscss/awaitable-pipe';
|
|
5
|
+
/** Constructs */
|
|
6
|
+
export declare class SelectorList extends Selector<Selector[]> {
|
|
7
|
+
type: string;
|
|
8
|
+
shortType: string;
|
|
9
|
+
protected _computeKeySetAndFastReject(): void;
|
|
10
|
+
/** Normalize selectors on separate lines with indentation */
|
|
11
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
12
|
+
valueOf(): string;
|
|
13
|
+
compare(b: Selector): 0 | 1 | -1 | undefined;
|
|
14
|
+
evalNode(context: Context): MaybePromise<SelectorList | Selector>;
|
|
15
|
+
}
|
|
16
|
+
export declare const sellist: (value?: Selector<any, import("./node-base.js").NodeOptions>[] | undefined, options?: import("./node-base.js").NodeOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => SelectorList;
|
|
17
|
+
//# sourceMappingURL=selector-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-list.d.ts","sourceRoot":"","sources":["../../src/tree/selector-list.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,yBAAyB,CAAC;AAI7F,iBAAiB;AACjB,qBAAa,YAAa,SAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACpD,IAAI,SAAkB;IACtB,SAAS,SAAa;cAEH,2BAA2B,IAAI,IAAI;IAkBtD,6DAA6D;IACpD,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAgFtC,OAAO;IAKP,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;IAW5C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;CAkE3E;AAED,eAAO,MAAM,OAAO,uNAAsD,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { defineType, F_EXTENDED, F_EXTEND_TARGET } from './node.js';
|
|
2
|
+
import { Selector } from './selector.js';
|
|
3
|
+
import { getEntries } from './util/collections.js';
|
|
4
|
+
import { getPrintOptions } from './util/print.js';
|
|
5
|
+
import { pipe, isThenable, serialForEach } from '@jesscss/awaitable-pipe';
|
|
6
|
+
import { isNode } from './util/is-node.js';
|
|
7
|
+
import { selectorCompare } from './util/compare.js';
|
|
8
|
+
/** Constructs */
|
|
9
|
+
export class SelectorList extends Selector {
|
|
10
|
+
type = 'SelectorList';
|
|
11
|
+
shortType = 'sellist';
|
|
12
|
+
_computeKeySetAndFastReject() {
|
|
13
|
+
let combinedKeySet = new Set();
|
|
14
|
+
let combinedVisibleKeySet = new Set();
|
|
15
|
+
for (const selector of this.value) {
|
|
16
|
+
for (const key of selector.keySet) {
|
|
17
|
+
combinedKeySet.add(key);
|
|
18
|
+
}
|
|
19
|
+
for (const key of selector.visibleKeySet) {
|
|
20
|
+
combinedVisibleKeySet.add(key);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
this._keySet = combinedKeySet;
|
|
24
|
+
this._visibleKeySet = combinedVisibleKeySet;
|
|
25
|
+
// SelectorLists represent alternatives - can't use fast rejection
|
|
26
|
+
this._canFastReject = false;
|
|
27
|
+
}
|
|
28
|
+
/** Normalize selectors on separate lines with indentation */
|
|
29
|
+
toTrimmedString(options) {
|
|
30
|
+
options = getPrintOptions(options);
|
|
31
|
+
const w = options.writer;
|
|
32
|
+
let depth = options.depth;
|
|
33
|
+
let space = ''.padStart(depth * 2);
|
|
34
|
+
// Flatten generated top-level `:is(...)` items into the selector list.
|
|
35
|
+
// This matches Less output expectations when an extend created an :is() and it ended up being
|
|
36
|
+
// the whole selector-list item.
|
|
37
|
+
const value = [];
|
|
38
|
+
for (const item of this.value) {
|
|
39
|
+
// Flatten `:is(a, b)` selector-list items into `a, b`.
|
|
40
|
+
// Also handle `:is(...)` wrapped in a single-item CompoundSelector.
|
|
41
|
+
if (isNode(item, 'PseudoSelector') && item.value.name === ':is') {
|
|
42
|
+
const arg = item.value.arg;
|
|
43
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
44
|
+
value.push(...arg.value);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (isNode(item, 'CompoundSelector') && item.value.length === 1) {
|
|
49
|
+
const only = item.value[0];
|
|
50
|
+
if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
|
|
51
|
+
const arg = only.value.arg;
|
|
52
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
53
|
+
value.push(...arg.value);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (isNode(item, 'ComplexSelector') && item.value.length === 1) {
|
|
59
|
+
const only = item.value[0];
|
|
60
|
+
if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
|
|
61
|
+
const arg = only.value.arg;
|
|
62
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
63
|
+
value.push(...arg.value);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
value.push(item);
|
|
69
|
+
}
|
|
70
|
+
if (options.referenceMode === true
|
|
71
|
+
&& options.referenceRenderEnabled === true
|
|
72
|
+
&& options.referenceFilterTargets === true) {
|
|
73
|
+
const hasTargetItems = value.some(item => item.hasFlag(F_EXTEND_TARGET));
|
|
74
|
+
if (hasTargetItems) {
|
|
75
|
+
const filtered = value.filter(item => !item.hasFlag(F_EXTEND_TARGET));
|
|
76
|
+
if (filtered.length > 0) {
|
|
77
|
+
value.splice(0, value.length, ...filtered);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Fallback for wrappers that only carry "extended" provenance.
|
|
82
|
+
const extendedOnly = value.filter(item => item.hasFlag(F_EXTENDED));
|
|
83
|
+
if (extendedOnly.length > 0) {
|
|
84
|
+
value.splice(0, value.length, ...extendedOnly);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
let length = value.length;
|
|
89
|
+
if (length === 0) {
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
const mark = w.mark();
|
|
93
|
+
let item = value[0];
|
|
94
|
+
let out = w.capture(() => item.toString(options));
|
|
95
|
+
w.add(out.trim(), item);
|
|
96
|
+
// Subsequent items: emit sep; capture next item to decide spacing precisely
|
|
97
|
+
for (let i = 1; i < length; i++) {
|
|
98
|
+
item = value[i];
|
|
99
|
+
w.add(`,\n${space}`);
|
|
100
|
+
out = (w.capture(() => item.toString(options))).trim();
|
|
101
|
+
w.add(out);
|
|
102
|
+
}
|
|
103
|
+
return w.getSince(mark);
|
|
104
|
+
}
|
|
105
|
+
valueOf() {
|
|
106
|
+
const itemValues = this.value.map(item => item.valueOf());
|
|
107
|
+
return itemValues.join(',');
|
|
108
|
+
}
|
|
109
|
+
compare(b) {
|
|
110
|
+
if (!isNode(b, 'Selector')) {
|
|
111
|
+
return super.compare(b);
|
|
112
|
+
}
|
|
113
|
+
const semantic = selectorCompare(this, b);
|
|
114
|
+
if (semantic.isEquivalent) {
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
return super.compare(b);
|
|
118
|
+
}
|
|
119
|
+
evalNode(context) {
|
|
120
|
+
return pipe(() => {
|
|
121
|
+
const list = this;
|
|
122
|
+
const { value } = list;
|
|
123
|
+
const maybe = serialForEach(Array.from(getEntries(value)), ([item, i]) => {
|
|
124
|
+
const out = item.eval(context);
|
|
125
|
+
if (isThenable(out)) {
|
|
126
|
+
return out.then((res) => {
|
|
127
|
+
value[i] = res;
|
|
128
|
+
return undefined;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
value[i] = out;
|
|
132
|
+
return undefined;
|
|
133
|
+
});
|
|
134
|
+
if (isThenable(maybe)) {
|
|
135
|
+
return maybe.then(() => list);
|
|
136
|
+
}
|
|
137
|
+
return list;
|
|
138
|
+
}, (list) => {
|
|
139
|
+
const { value } = list;
|
|
140
|
+
// Flatten top-level `:is(a, b)` items into the selector list.
|
|
141
|
+
// This is safe in SelectorList context (it is equivalent to `a, b`).
|
|
142
|
+
const flattened = [];
|
|
143
|
+
for (const item of value) {
|
|
144
|
+
if (isNode(item, 'PseudoSelector') && item.value.name === ':is') {
|
|
145
|
+
const arg = item.value.arg;
|
|
146
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
147
|
+
flattened.push(...arg.value);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (isNode(item, 'CompoundSelector') && item.value.length === 1) {
|
|
152
|
+
const only = item.value[0];
|
|
153
|
+
if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
|
|
154
|
+
const arg = only.value.arg;
|
|
155
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
156
|
+
flattened.push(...arg.value);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (isNode(item, 'ComplexSelector') && item.value.length === 1) {
|
|
162
|
+
const only = item.value[0];
|
|
163
|
+
if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
|
|
164
|
+
const arg = only.value.arg;
|
|
165
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
166
|
+
flattened.push(...arg.value);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
flattened.push(item);
|
|
172
|
+
}
|
|
173
|
+
if (flattened.length !== value.length) {
|
|
174
|
+
list.value = flattened;
|
|
175
|
+
}
|
|
176
|
+
if (value.length === 1) {
|
|
177
|
+
return value[0];
|
|
178
|
+
}
|
|
179
|
+
return list;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export const sellist = defineType(SelectorList, 'SelectorList', 'sellist');
|
|
184
|
+
//# sourceMappingURL=selector-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-list.js","sourceRoot":"","sources":["../../src/tree/selector-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type Node } from './node.js';
|
|
2
|
+
import { SimpleSelector } from './selector-simple.js';
|
|
3
|
+
import { type Context } from '../context.js';
|
|
4
|
+
import { Selector } from './selector.js';
|
|
5
|
+
import { type PrintOptions } from './util/print.js';
|
|
6
|
+
import { type MaybePromise } from '@jesscss/awaitable-pipe';
|
|
7
|
+
export type PseudoSelectorValue = {
|
|
8
|
+
/**
|
|
9
|
+
* The name of the pseudo-selector
|
|
10
|
+
* @note - this will contain the `:` prefix,
|
|
11
|
+
* to support `::before` and `::after`
|
|
12
|
+
*/
|
|
13
|
+
name: string;
|
|
14
|
+
arg?: Node;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A pseudo selector
|
|
18
|
+
* @see https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements
|
|
19
|
+
* e.g. :hover, :focus, :active
|
|
20
|
+
*/
|
|
21
|
+
export declare class PseudoSelector extends SimpleSelector<PseudoSelectorValue> {
|
|
22
|
+
type: string;
|
|
23
|
+
shortType: string;
|
|
24
|
+
get keySet(): Set<string>;
|
|
25
|
+
protected _computeKeySetAndFastReject(): void;
|
|
26
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
27
|
+
/**
|
|
28
|
+
* @todo - This should be vastly simplifiable. For
|
|
29
|
+
*
|
|
30
|
+
* Also, :is()
|
|
31
|
+
*/
|
|
32
|
+
valueOf(): string;
|
|
33
|
+
evalNode(context: Context): MaybePromise<PseudoSelector>;
|
|
34
|
+
}
|
|
35
|
+
export declare const pseudo: (value?: PseudoSelectorValue | undefined, options?: import("./node-base.js").NodeOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => PseudoSelector;
|
|
36
|
+
/**
|
|
37
|
+
* Convenience function to create a :is() pseudo-selector
|
|
38
|
+
* @param arg The selector that goes inside :is()
|
|
39
|
+
* @returns A PseudoSelector with name ":is" and the provided selector as argument
|
|
40
|
+
*/
|
|
41
|
+
export declare function is(arg: Selector): PseudoSelector;
|
|
42
|
+
//# sourceMappingURL=selector-pseudo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-pseudo.d.ts","sourceRoot":"","sources":["../../src/tree/selector-pseudo.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,yBAAyB,CAAC;AAMlE,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;;;EAIE;AACF,qBAAa,cAAe,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACrE,IAAI,SAAoB;IACxB,SAAS,SAAY;IAErB,IAAa,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAKjC;cAEkB,2BAA2B,IAAI,IAAI;IAoC7C,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAoB/C;;;;OAIG;IA2CM,OAAO,IAAI,MAAM;IAoBjB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC;CAkBlE;AA8BD,eAAO,MAAM,MAAM,uLAAqG,CAAC;AAEzH;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,cAAc,CAKhD"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { defineType } from './node.js';
|
|
2
|
+
import { SimpleSelector } from './selector-simple.js';
|
|
3
|
+
import { isNode } from './util/is-node.js';
|
|
4
|
+
import { getPrintOptions } from './util/print.js';
|
|
5
|
+
import { pipe } from '@jesscss/awaitable-pipe';
|
|
6
|
+
function isSelectorNode(value) {
|
|
7
|
+
return !!value && typeof value === 'object' && value.isSelector === true;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A pseudo selector
|
|
11
|
+
* @see https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements
|
|
12
|
+
* e.g. :hover, :focus, :active
|
|
13
|
+
*/
|
|
14
|
+
export class PseudoSelector extends SimpleSelector {
|
|
15
|
+
type = 'PseudoSelector';
|
|
16
|
+
shortType = 'pseudo';
|
|
17
|
+
get keySet() {
|
|
18
|
+
if (this._keySet === undefined) {
|
|
19
|
+
this._computeKeySetAndFastReject();
|
|
20
|
+
}
|
|
21
|
+
return this._keySet;
|
|
22
|
+
}
|
|
23
|
+
_computeKeySetAndFastReject() {
|
|
24
|
+
const { name, arg } = this.value;
|
|
25
|
+
// Check if this is a pseudo-selector that contains selectors
|
|
26
|
+
const hasSelectorListArg = isNode(arg, 'SelectorList');
|
|
27
|
+
const hasSelectorArg = isSelectorNode(arg);
|
|
28
|
+
if (hasSelectorArg || hasSelectorListArg) {
|
|
29
|
+
if (hasSelectorListArg) {
|
|
30
|
+
// SelectorList argument - union all selector keySets
|
|
31
|
+
let combinedKeySet = new Set();
|
|
32
|
+
let combinedVisibleKeySet = new Set();
|
|
33
|
+
for (const selector of arg.value) {
|
|
34
|
+
combinedKeySet = combinedKeySet.union(selector.keySet);
|
|
35
|
+
combinedVisibleKeySet = combinedVisibleKeySet.union(selector.visibleKeySet);
|
|
36
|
+
}
|
|
37
|
+
// Trust the SelectorList's canFastReject (should be false for alternatives)
|
|
38
|
+
this._keySet = combinedKeySet;
|
|
39
|
+
this._visibleKeySet = combinedVisibleKeySet;
|
|
40
|
+
this._canFastReject = arg.canFastReject;
|
|
41
|
+
}
|
|
42
|
+
else if (hasSelectorArg) {
|
|
43
|
+
// Single Selector argument - use its keySet
|
|
44
|
+
this._keySet = arg.keySet;
|
|
45
|
+
this._visibleKeySet = arg.visibleKeySet;
|
|
46
|
+
// Trust the selector's canFastReject
|
|
47
|
+
this._canFastReject = arg.canFastReject;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// For other pseudo-selectors (like :hover, :focus), use valueOf
|
|
52
|
+
this._keySet = new Set([this.valueOf()]);
|
|
53
|
+
this._visibleKeySet = this._keySet;
|
|
54
|
+
// Other pseudo-selectors are safe for fast rejection
|
|
55
|
+
this._canFastReject = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
toTrimmedString(options) {
|
|
59
|
+
options = getPrintOptions(options);
|
|
60
|
+
const w = options.writer;
|
|
61
|
+
let { name, arg } = this.value;
|
|
62
|
+
const mark = w.mark();
|
|
63
|
+
w.add(name, this);
|
|
64
|
+
if (arg) {
|
|
65
|
+
w.add('(');
|
|
66
|
+
if (isNode(arg, 'SelectorList')) {
|
|
67
|
+
let out = w.capture(() => arg.toString(options));
|
|
68
|
+
out = out.replace(/\n\s*/g, ' ');
|
|
69
|
+
w.add(out, arg);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
arg.toString(options);
|
|
73
|
+
}
|
|
74
|
+
w.add(')');
|
|
75
|
+
}
|
|
76
|
+
return w.getSince(mark);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @todo - This should be vastly simplifiable. For
|
|
80
|
+
*
|
|
81
|
+
* Also, :is()
|
|
82
|
+
*/
|
|
83
|
+
// get keys() {
|
|
84
|
+
// let keys = this._keys
|
|
85
|
+
// if (!keys) {
|
|
86
|
+
// let { arg } = this
|
|
87
|
+
// if (arg && (arg instanceof Selector || isNode(arg, 'SelectorList'))) {
|
|
88
|
+
// if (isNode(arg, 'SelectorList')) {
|
|
89
|
+
// /**
|
|
90
|
+
// * If an :is starts with an ampersand with no eval'd selector,
|
|
91
|
+
// * it's relative, and can't be flattened.
|
|
92
|
+
// *
|
|
93
|
+
// * @note As far as I can tell, starting with a combinator
|
|
94
|
+
// * is allowed / legal for :is() and :where() but won't
|
|
95
|
+
// * actually apply to anything.
|
|
96
|
+
// */
|
|
97
|
+
// /**
|
|
98
|
+
// * Push the first selectors of the inner list to an array
|
|
99
|
+
// * at the front of the return array.
|
|
100
|
+
// */
|
|
101
|
+
// const selKeys = arg.value.map(sel => {
|
|
102
|
+
// const childKeys = sel.keys
|
|
103
|
+
// return isArray(childKeys) ? childKeys.flat(Infinity) : [childKeys]
|
|
104
|
+
// }) as string[][]
|
|
105
|
+
// const returnKeys: [string[], ...string[]] = [[]]
|
|
106
|
+
// selKeys.forEach(keys => {
|
|
107
|
+
// const [first, ...rest] = keys
|
|
108
|
+
// returnKeys[0].push(first!)
|
|
109
|
+
// returnKeys.push(...rest)
|
|
110
|
+
// })
|
|
111
|
+
// keys = returnKeys
|
|
112
|
+
// } else {
|
|
113
|
+
// keys = arg.keys
|
|
114
|
+
// }
|
|
115
|
+
// Object.defineProperty(this, '_keys', { value: keys })
|
|
116
|
+
// return keys
|
|
117
|
+
// } else {
|
|
118
|
+
// keys = this.valueOf()
|
|
119
|
+
// }
|
|
120
|
+
// Object.defineProperty(this, '_keys', { value: keys })
|
|
121
|
+
// }
|
|
122
|
+
// return keys
|
|
123
|
+
// }
|
|
124
|
+
valueOf() {
|
|
125
|
+
let valueOf = this._valueOf;
|
|
126
|
+
if (!valueOf) {
|
|
127
|
+
let { name, arg } = this.value;
|
|
128
|
+
// For :is() with SelectorList, use valueOf() to avoid newlines
|
|
129
|
+
/**
|
|
130
|
+
* Normalizes :nth-child(n + 1) to match :nth-child(n+1)
|
|
131
|
+
* That is, anything that doesn't hold a selector as a value
|
|
132
|
+
* is, by definition, not space-sensitive.
|
|
133
|
+
*
|
|
134
|
+
* @todo 1n === n, 2n + 0 === 2n
|
|
135
|
+
*/
|
|
136
|
+
valueOf = `${name}${arg ? `(${arg.valueOf()})` : ''}`;
|
|
137
|
+
this._valueOf = valueOf;
|
|
138
|
+
}
|
|
139
|
+
return valueOf;
|
|
140
|
+
}
|
|
141
|
+
evalNode(context) {
|
|
142
|
+
const currentArg = this.value.arg;
|
|
143
|
+
const node = this;
|
|
144
|
+
if (!currentArg) {
|
|
145
|
+
return node;
|
|
146
|
+
}
|
|
147
|
+
return pipe(() => {
|
|
148
|
+
context.parenFrames.push(false);
|
|
149
|
+
return currentArg.eval(context);
|
|
150
|
+
}, (evaluatedArg) => {
|
|
151
|
+
context.parenFrames.pop();
|
|
152
|
+
node.value.arg = evaluatedArg;
|
|
153
|
+
return node;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Some experiments with type narrowing
|
|
158
|
+
// type SelectorValue = {
|
|
159
|
+
// value: ':is' | ':where'
|
|
160
|
+
// arg: Selector
|
|
161
|
+
// }
|
|
162
|
+
// type PseudoFunctionValue = {
|
|
163
|
+
// value: string
|
|
164
|
+
// arg: Node
|
|
165
|
+
// }
|
|
166
|
+
// type GetType<T extends Array<[string, any]>> = TupleToUnion<{
|
|
167
|
+
// [K in keyof T]: T[K][0] extends 'arg'
|
|
168
|
+
// ? T[K][1]
|
|
169
|
+
// : never
|
|
170
|
+
// }>
|
|
171
|
+
// type PseudoFunctionClass<T extends PseudoFunctionValue = PseudoFunctionValue> =
|
|
172
|
+
// Class<PseudoSelector<T>, ConstructorParameters<typeof PseudoSelector<T>>>
|
|
173
|
+
// export const PseudoFunction = PseudoSelector as unknown as (new<const T extends Array<[string, any]>>(value: T, opts?: NodeOptions) => Omit<PseudoFunctionClass, 'arg'> & { arg: GetType<T> }) // Omit<PseudoFunctionClass, 'arg'> & GetType<T>)
|
|
174
|
+
// const foo = new PseudoFunction([
|
|
175
|
+
// ['value', ':is'],
|
|
176
|
+
// ['arg', new BasicSelector([['value', 'div']])]
|
|
177
|
+
// ])
|
|
178
|
+
// foo.arg
|
|
179
|
+
export const pseudo = defineType(PseudoSelector, 'PseudoSelector', 'pseudo');
|
|
180
|
+
/**
|
|
181
|
+
* Convenience function to create a :is() pseudo-selector
|
|
182
|
+
* @param arg The selector that goes inside :is()
|
|
183
|
+
* @returns A PseudoSelector with name ":is" and the provided selector as argument
|
|
184
|
+
*/
|
|
185
|
+
export function is(arg) {
|
|
186
|
+
return pseudo({
|
|
187
|
+
name: ':is',
|
|
188
|
+
arg: arg
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=selector-pseudo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-pseudo.js","sourceRoot":"","sources":["../../src/tree/selector-pseudo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-simple.d.ts","sourceRoot":"","sources":["../../src/tree/selector-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,8BAAsB,cAAc,CAClC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,WAAW,GAAG,WAAW,CACnC,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-simple.js","sourceRoot":"","sources":["../../src/tree/selector-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAgB,cAGpB,SAAQ,QAAc;CAAG;AAE3B,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { MaybePromise } from 'awaitable-pipe';
|
|
2
|
+
import { Node, type NodeOptions, type NodeValue } from './node.js';
|
|
3
|
+
import type { IfAny } from 'type-fest';
|
|
4
|
+
import type { Context } from '../context.js';
|
|
5
|
+
import type { Nil } from './nil.js';
|
|
6
|
+
/**
|
|
7
|
+
* This represents anything that is valid in a selector
|
|
8
|
+
*
|
|
9
|
+
* @todo - Add Sass private / placeholder selectors?
|
|
10
|
+
* e.g. `\\foo` instead of `%foo`
|
|
11
|
+
* private = `\\_foo`
|
|
12
|
+
*/
|
|
13
|
+
export interface Selector<T = any, O extends NodeOptions = NodeOptions> extends Node<IfAny<T, NodeValue, T>, O> {
|
|
14
|
+
valueOf(): string;
|
|
15
|
+
eval(context: Context): MaybePromise<Selector<T>> | MaybePromise<Nil>;
|
|
16
|
+
}
|
|
17
|
+
export declare abstract class Selector<T = any, O extends NodeOptions = NodeOptions> extends Node<IfAny<T, NodeValue, T>, O> {
|
|
18
|
+
isSelector: boolean;
|
|
19
|
+
protected _valueOf: string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* A set of all simplified (valueOf) selectors,
|
|
22
|
+
* for easy lookup to see if the selector is extendable
|
|
23
|
+
* by the key sets in the extend scope.
|
|
24
|
+
*/
|
|
25
|
+
protected _keySet: Set<string> | undefined;
|
|
26
|
+
/** Used for mixin registry indexing - only includes visible selectors */
|
|
27
|
+
protected _visibleKeySet: Set<string> | undefined;
|
|
28
|
+
get keySet(): Set<string>;
|
|
29
|
+
get visibleKeySet(): Set<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Cached computation: can this selector's keySet be trusted for disjoint rejection?
|
|
32
|
+
* True = keySet represents exact requirements (no alternatives)
|
|
33
|
+
* False = keySet contains alternatives/unions, disjoint check unreliable
|
|
34
|
+
*/
|
|
35
|
+
protected _canFastReject: boolean | undefined;
|
|
36
|
+
get canFastReject(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Computes both keySet and canFastReject in one pass for efficiency.
|
|
39
|
+
* Subclasses should override this to implement their specific logic.
|
|
40
|
+
*/
|
|
41
|
+
protected _computeKeySetAndFastReject(): void;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/tree/selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAa,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAc,MAAM,WAAW,CAAC;AAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;;GAMG;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7G,OAAO,IAAI,MAAM,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;CACvE;AAED,8BAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClH,UAAU,UAAQ;IAElB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3C,yEAAyE;IACzE,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAKxB;IAED,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC,CAK/B;IAED;;;;OAIG;IACH,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IAE9C,IAAI,aAAa,IAAI,OAAO,CAM3B;IAED;;;OAGG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;CAW9C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { F_VISIBLE, Node, defineType } from './node.js';
|
|
2
|
+
export class Selector extends Node {
|
|
3
|
+
isSelector = true;
|
|
4
|
+
_valueOf;
|
|
5
|
+
/**
|
|
6
|
+
* A set of all simplified (valueOf) selectors,
|
|
7
|
+
* for easy lookup to see if the selector is extendable
|
|
8
|
+
* by the key sets in the extend scope.
|
|
9
|
+
*/
|
|
10
|
+
_keySet;
|
|
11
|
+
/** Used for mixin registry indexing - only includes visible selectors */
|
|
12
|
+
_visibleKeySet;
|
|
13
|
+
get keySet() {
|
|
14
|
+
if (!this._keySet) {
|
|
15
|
+
this._computeKeySetAndFastReject();
|
|
16
|
+
}
|
|
17
|
+
return this._keySet;
|
|
18
|
+
}
|
|
19
|
+
get visibleKeySet() {
|
|
20
|
+
if (!this._visibleKeySet) {
|
|
21
|
+
this._computeKeySetAndFastReject();
|
|
22
|
+
}
|
|
23
|
+
return this._visibleKeySet;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Cached computation: can this selector's keySet be trusted for disjoint rejection?
|
|
27
|
+
* True = keySet represents exact requirements (no alternatives)
|
|
28
|
+
* False = keySet contains alternatives/unions, disjoint check unreliable
|
|
29
|
+
*/
|
|
30
|
+
_canFastReject;
|
|
31
|
+
get canFastReject() {
|
|
32
|
+
if (this._canFastReject === undefined) {
|
|
33
|
+
// Trigger computation of both keySet and canFastReject together
|
|
34
|
+
this._computeKeySetAndFastReject();
|
|
35
|
+
}
|
|
36
|
+
return this._canFastReject;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Computes both keySet and canFastReject in one pass for efficiency.
|
|
40
|
+
* Subclasses should override this to implement their specific logic.
|
|
41
|
+
*/
|
|
42
|
+
_computeKeySetAndFastReject() {
|
|
43
|
+
// Default implementation - subclasses override
|
|
44
|
+
let value = String(this.valueOf());
|
|
45
|
+
this._keySet = new Set([value]);
|
|
46
|
+
if (this.hasFlag(F_VISIBLE)) {
|
|
47
|
+
this._visibleKeySet = this._keySet;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this._visibleKeySet = new Set();
|
|
51
|
+
}
|
|
52
|
+
this._canFastReject = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
defineType(Selector, 'Selector');
|
|
56
|
+
//# sourceMappingURL=selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/tree/selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAoC,UAAU,EAAE,MAAM,WAAW,CAAC;AAkB1F,MAAM,OAAgB,QAAuD,SAAQ,IAA+B;IAClH,UAAU,GAAG,IAAI,CAAC;IAER,QAAQ,CAAqB;IAEvC;;;;OAIG;IACO,OAAO,CAA0B;IAC3C,yEAAyE;IAC/D,cAAc,CAA0B;IAClD,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,OAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAe,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAsB;IAE9C,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,gEAAgE;YAChE,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACO,2BAA2B;QACnC,+CAA+C;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF;AAED,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Node } from './node.js';
|
|
2
|
+
import { List } from './list.js';
|
|
3
|
+
import type { Context } from '../context.js';
|
|
4
|
+
import { type MaybePromise } from '@jesscss/awaitable-pipe';
|
|
5
|
+
import { type PrintOptions } from './util/print.js';
|
|
6
|
+
export type SequenceOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* CSS values are typically spaced,
|
|
9
|
+
* because of how they're parsed.
|
|
10
|
+
*/
|
|
11
|
+
/** Used with custom properties */
|
|
12
|
+
preserveWhitespace?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* A continuous collection of nodes. Historically in Less,
|
|
16
|
+
* these were termed "expressions", but in computer science,
|
|
17
|
+
* an expression will yield a value, and a CSS value can
|
|
18
|
+
* actually be a sequence of values (like for shorthand)
|
|
19
|
+
*/
|
|
20
|
+
export declare class Sequence extends Node<Node[], SequenceOptions> {
|
|
21
|
+
type: string;
|
|
22
|
+
shortType: string;
|
|
23
|
+
compare(other: Node): 0 | 1 | -1 | undefined;
|
|
24
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
25
|
+
operate(b: Node, op: string, context: Context): Sequence | List;
|
|
26
|
+
/**
|
|
27
|
+
* During evaluation of sequences,
|
|
28
|
+
* Jess may find values that are lists.
|
|
29
|
+
*
|
|
30
|
+
* In this case, we need to create a single
|
|
31
|
+
* list that contains members of the expanded lists.
|
|
32
|
+
*
|
|
33
|
+
* @todo - If this is a selector sequence, and we've
|
|
34
|
+
* evaluated an expression to an inner sequence,
|
|
35
|
+
* then we should be inserting white-space combinators?
|
|
36
|
+
*
|
|
37
|
+
* @todo - REWRITE
|
|
38
|
+
*/
|
|
39
|
+
evalNode(context: Context): MaybePromise<Node>;
|
|
40
|
+
}
|
|
41
|
+
export declare const seq: (value?: Node<unknown, import("./node-base.js").NodeOptions>[] | undefined, options?: SequenceOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => Sequence;
|
|
42
|
+
export declare const spaced: (value: Node[], options?: SequenceOptions) => Sequence;
|
|
43
|
+
//# sourceMappingURL=sequence.d.ts.map
|