@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,66 @@
|
|
|
1
|
+
import { Node } from './node.js';
|
|
2
|
+
import { type Context } from '../context.js';
|
|
3
|
+
import { type PrintOptions } from './util/print.js';
|
|
4
|
+
import { type Rules } from './rules.js';
|
|
5
|
+
import { List } from './list.js';
|
|
6
|
+
export type CallValue = {
|
|
7
|
+
/**
|
|
8
|
+
* Can be an identifier or something like a mixin or variable lookup
|
|
9
|
+
* e.g. $|#mixin|.class() is -> [Call name: [Ref (#mixin.class)], args: []]
|
|
10
|
+
*/
|
|
11
|
+
name: string | Node;
|
|
12
|
+
args?: List<Node>;
|
|
13
|
+
/**
|
|
14
|
+
* Optional content node, used for passing blocks to mixins/functions.
|
|
15
|
+
* This is how Jess represents "call with content block" forms like:
|
|
16
|
+
* $ > foo(): @{ ... }
|
|
17
|
+
* or:
|
|
18
|
+
* $ > foo(): @($x) { ... }
|
|
19
|
+
*/
|
|
20
|
+
contentNode?: Node;
|
|
21
|
+
};
|
|
22
|
+
export type CallOptions = {
|
|
23
|
+
/**
|
|
24
|
+
* Legacy Less feature -- if a ruleset is returned,
|
|
25
|
+
* all the properties can be marked as important.
|
|
26
|
+
*/
|
|
27
|
+
markImportant?: boolean;
|
|
28
|
+
silentFail?: boolean;
|
|
29
|
+
/** Parser-provided hint for modern color-call syntax (space/slash form). */
|
|
30
|
+
modernSyntax?: boolean;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* This is an exported type that allows extra properties
|
|
34
|
+
* and specifies the shape of `this` for a function call.
|
|
35
|
+
*/
|
|
36
|
+
export type ExtendedFn<T extends any[] = any[], R = any> = ((this: Context, ...args: T) => R) & {
|
|
37
|
+
/**
|
|
38
|
+
* Allow for optional calling, which means an optional
|
|
39
|
+
* reference to a function will output a stringified
|
|
40
|
+
* function representation if there's an evaluation error.
|
|
41
|
+
*
|
|
42
|
+
* This is done for Less, which sets this for functions
|
|
43
|
+
* that have a CSS equivalent.
|
|
44
|
+
*/
|
|
45
|
+
allowOptional?: boolean;
|
|
46
|
+
evalArgs?: boolean;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* @note In Less, the ref for something like `rgb`
|
|
50
|
+
* is not a string, but is an (optional) variable reference.
|
|
51
|
+
*/
|
|
52
|
+
export declare class Call extends Node<CallValue, CallOptions> {
|
|
53
|
+
type: "Call";
|
|
54
|
+
shortType: "call";
|
|
55
|
+
_requiredSemi: boolean;
|
|
56
|
+
constructor(value: CallValue, options?: CallOptions, location?: any, treeContext?: any);
|
|
57
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
58
|
+
/** Recursively makes declarations important */
|
|
59
|
+
makeImportant(rules: Rules): Rules;
|
|
60
|
+
/** Come back and redo -- too hard to reason about as a MaybePromise */
|
|
61
|
+
evalNode(context: Context): Promise<Node>;
|
|
62
|
+
}
|
|
63
|
+
type Params = ConstructorParameters<typeof Call>;
|
|
64
|
+
export declare const call: (value: Params[0], options?: Params[1], location?: Params[2], treeContext?: Params[3]) => Call;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/tree/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoD,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAGhF,OAAO,EAAE,IAAI,EAAQ,MAAM,WAAW,CAAC;AAYvC,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;IAC9F;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,qBAAa,IAAK,SAAQ,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;IACpD,IAAI,EAAG,MAAM,CAAU;IACvB,SAAS,EAAG,MAAM,CAAU;IACnB,aAAa,UAAQ;gBAElB,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG;IAM7E,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAwC/C,+CAA+C;IAC/C,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAgBlC,uEAAuE;IACxD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAmNzD;AAED,KAAK,MAAM,GAAG,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC;AAEjD,eAAO,MAAM,IAAI,EAA+B,CAC9C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KACpB,IAAI,CAAC"}
|
package/lib/tree/call.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { Node, defineType, F_VISIBLE, F_NON_STATIC, F_MAY_ASYNC } from './node.js';
|
|
2
|
+
import { isNode } from './util/is-node.js';
|
|
3
|
+
import { cast } from './util/cast.js';
|
|
4
|
+
import { callWithContext } from '../define-function.js';
|
|
5
|
+
import { getPrintOptions } from './util/print.js';
|
|
6
|
+
import { Paren } from './paren.js';
|
|
7
|
+
import { isThenable } from '@jesscss/awaitable-pipe';
|
|
8
|
+
import { getFunctionFromMixins } from './rules.js';
|
|
9
|
+
import { Any } from './any.js';
|
|
10
|
+
import { freezeChildren } from './util/cloning.js';
|
|
11
|
+
import { list } from './list.js';
|
|
12
|
+
let rulesCtorPromise;
|
|
13
|
+
// Lazy getter for Rules to break circular dependency:
|
|
14
|
+
// rules.ts → cast.ts → color.ts → call.ts → rules.ts
|
|
15
|
+
async function getRules() {
|
|
16
|
+
if (!rulesCtorPromise) {
|
|
17
|
+
rulesCtorPromise = import('./rules.js').then(({ Rules }) => Rules);
|
|
18
|
+
}
|
|
19
|
+
return rulesCtorPromise;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @note In Less, the ref for something like `rgb`
|
|
23
|
+
* is not a string, but is an (optional) variable reference.
|
|
24
|
+
*/
|
|
25
|
+
export class Call extends Node {
|
|
26
|
+
type = 'Call';
|
|
27
|
+
shortType = 'call';
|
|
28
|
+
_requiredSemi = true;
|
|
29
|
+
constructor(value, options, location, treeContext) {
|
|
30
|
+
super(value, options, location, treeContext);
|
|
31
|
+
// Function calls are always non-static and may be async
|
|
32
|
+
this.addFlags(F_VISIBLE, F_NON_STATIC, F_MAY_ASYNC);
|
|
33
|
+
}
|
|
34
|
+
toTrimmedString(options) {
|
|
35
|
+
const { silentFail } = this.options;
|
|
36
|
+
options = getPrintOptions(options);
|
|
37
|
+
const w = options.writer;
|
|
38
|
+
const mark = w.mark();
|
|
39
|
+
const { name, contentNode } = this.value;
|
|
40
|
+
const args = this.value.args;
|
|
41
|
+
if (typeof name === 'string') {
|
|
42
|
+
w.add(name, this);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
name.toString(options);
|
|
46
|
+
}
|
|
47
|
+
if (silentFail) {
|
|
48
|
+
w.add('?');
|
|
49
|
+
}
|
|
50
|
+
w.add('(');
|
|
51
|
+
if (args) {
|
|
52
|
+
const normalizedArgs = args.value.filter(Boolean);
|
|
53
|
+
const last = normalizedArgs.length - 1;
|
|
54
|
+
for (let i = 0; i <= last; i++) {
|
|
55
|
+
const arg = normalizedArgs[i];
|
|
56
|
+
const argOut = w.capture(() => arg.toString(options));
|
|
57
|
+
// Normalize boundary whitespace so calls serialize with stable comma spacing.
|
|
58
|
+
w.add(argOut.replace(/^[ \t\r\f]+|[ \t\r\f]+$/g, ''), arg);
|
|
59
|
+
if (i < last) {
|
|
60
|
+
w.add(', ');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
w.add(')');
|
|
65
|
+
if (this.options?.markImportant) {
|
|
66
|
+
w.add(' !important');
|
|
67
|
+
}
|
|
68
|
+
if (contentNode) {
|
|
69
|
+
w.add(': ');
|
|
70
|
+
contentNode.toString(options);
|
|
71
|
+
}
|
|
72
|
+
return w.getSince(mark);
|
|
73
|
+
}
|
|
74
|
+
/** Recursively makes declarations important */
|
|
75
|
+
makeImportant(rules) {
|
|
76
|
+
let important = Any.create('!important', { role: 'flag' });
|
|
77
|
+
for (const rule of rules.value) {
|
|
78
|
+
if (isNode(rule, 'Declaration')) {
|
|
79
|
+
rule.value.important = important;
|
|
80
|
+
}
|
|
81
|
+
else if (isNode(rule, 'Rules')) {
|
|
82
|
+
this.makeImportant(rule);
|
|
83
|
+
}
|
|
84
|
+
else if (isNode(rule, ['AtRule', 'Ruleset'])) {
|
|
85
|
+
if (rule.value.rules) {
|
|
86
|
+
this.makeImportant(rule.value.rules);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return rules;
|
|
91
|
+
}
|
|
92
|
+
/** Come back and redo -- too hard to reason about as a MaybePromise */
|
|
93
|
+
async evalNode(context) {
|
|
94
|
+
let { name } = this.value;
|
|
95
|
+
let args = this.value.args;
|
|
96
|
+
let { markImportant } = this.options;
|
|
97
|
+
const adoptCallWhitespace = (node) => {
|
|
98
|
+
node.pre = this.pre;
|
|
99
|
+
node.post = this.post;
|
|
100
|
+
node.sourceParent = this;
|
|
101
|
+
return node;
|
|
102
|
+
};
|
|
103
|
+
const evalArgNodes = async (nodes) => {
|
|
104
|
+
if (!nodes) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const out = [];
|
|
108
|
+
for (const node of nodes.value) {
|
|
109
|
+
out.push(await node.eval(context));
|
|
110
|
+
}
|
|
111
|
+
return list(out, nodes.options);
|
|
112
|
+
};
|
|
113
|
+
context.callStack.push(this);
|
|
114
|
+
context.parenFrames.push(false);
|
|
115
|
+
let n = typeof name === 'string' ? name : await name.eval(context);
|
|
116
|
+
// Resolve mixin reference only at call time (same as variable refs: evaluate when used, not when stored).
|
|
117
|
+
if (isNode(n, 'Reference') && n.options?.type === 'mixin-ruleset') {
|
|
118
|
+
n = await n.eval(context);
|
|
119
|
+
}
|
|
120
|
+
// Note: Stylesheet-defined functions should be represented as a Reference(type='function')
|
|
121
|
+
// by parsers that support them. We intentionally avoid implicit string→function lookup here
|
|
122
|
+
// to prevent surprising behavior for plain CSS function-like calls.
|
|
123
|
+
// If the evaluated name is a Call node, execute it directly
|
|
124
|
+
// This handles cases like @alias: .something(foo); @alias();
|
|
125
|
+
if (isNode(n, 'Call')) {
|
|
126
|
+
// Execute the inner Call node (it will handle its own callStack push/pop)
|
|
127
|
+
const result = await n.eval(context);
|
|
128
|
+
// Apply markImportant if needed
|
|
129
|
+
if (markImportant && isNode(result, 'Rules')) {
|
|
130
|
+
this.makeImportant(result);
|
|
131
|
+
}
|
|
132
|
+
// Always pop the outer call's stack entries
|
|
133
|
+
context.callStack.pop();
|
|
134
|
+
context.parenFrames.pop();
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
else if (isNode(n, 'Mixin') || isNode(n, 'Ruleset') || Array.isArray(n)) {
|
|
138
|
+
n = cast(getFunctionFromMixins(n));
|
|
139
|
+
}
|
|
140
|
+
else if (isNode(n, 'Func')) {
|
|
141
|
+
// Execute stylesheet-defined functions via their evalCall behavior.
|
|
142
|
+
const argNodes = await evalArgNodes(args) ?? list([]);
|
|
143
|
+
const result = await n.evalCall(context, argNodes);
|
|
144
|
+
context.callStack.pop();
|
|
145
|
+
context.parenFrames.pop();
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
else if (isNode(n, 'Collection')) {
|
|
149
|
+
// If the evaluated name is Rules or Collection (detached rulesets),
|
|
150
|
+
// return those rules directly, but only if args are empty
|
|
151
|
+
// If args are provided, throw an error - you can't call Rules/Collection with arguments
|
|
152
|
+
if (args && args.value.length > 0) {
|
|
153
|
+
context.callStack.pop();
|
|
154
|
+
context.parenFrames.pop();
|
|
155
|
+
throw new ReferenceError(`Cannot call ${n.type} with arguments`);
|
|
156
|
+
}
|
|
157
|
+
const Rules = await getRules();
|
|
158
|
+
let rules = Rules.create(n.value, n.options);
|
|
159
|
+
// Inherit from Collection (n) to preserve definition-scope parent chain
|
|
160
|
+
// This ensures variables like @a resolve from where the detached ruleset was defined
|
|
161
|
+
// Also copies sourceParent from the Collection (which was set by Reference when it resolved)
|
|
162
|
+
rules.inherit(n);
|
|
163
|
+
// Keep definition-site `parent` for primary lookup, but anchor `sourceParent`
|
|
164
|
+
// to this call so leaky fallback can resolve call-site variables (e.g. @d).
|
|
165
|
+
rules.sourceParent = this;
|
|
166
|
+
rules = await rules.eval(context);
|
|
167
|
+
context.callStack.pop();
|
|
168
|
+
context.parenFrames.pop();
|
|
169
|
+
// Apply markImportant if needed
|
|
170
|
+
if (markImportant) {
|
|
171
|
+
this.makeImportant(n);
|
|
172
|
+
}
|
|
173
|
+
return rules;
|
|
174
|
+
}
|
|
175
|
+
let fn = isNode(n, 'JsFunction') ? n.value : n;
|
|
176
|
+
if (typeof fn === 'function') {
|
|
177
|
+
const originalCaller = context.caller;
|
|
178
|
+
context.caller = this;
|
|
179
|
+
let didPopCallStack = false;
|
|
180
|
+
try {
|
|
181
|
+
/** Freeze args */
|
|
182
|
+
if (args) {
|
|
183
|
+
const copiedArgs = args.copy(true, freezeChildren);
|
|
184
|
+
for (const copied of copiedArgs.value) {
|
|
185
|
+
// Anchor copied references to this Call so nested property refs
|
|
186
|
+
// (e.g. $list-1) can walk back to call-site Rules.
|
|
187
|
+
// Also anchor copied Mixin callback args to call-site source scope
|
|
188
|
+
// so callback bodies can resolve surrounding variables.
|
|
189
|
+
if (isNode(copied, 'Reference') && copied.options?.type === 'property') {
|
|
190
|
+
copied.sourceParent = this;
|
|
191
|
+
}
|
|
192
|
+
else if (isNode(copied, 'Mixin')) {
|
|
193
|
+
copied.sourceParent = this;
|
|
194
|
+
}
|
|
195
|
+
copied.frozen = true;
|
|
196
|
+
}
|
|
197
|
+
args = copiedArgs;
|
|
198
|
+
}
|
|
199
|
+
const shouldPassListArgs = Boolean(fn?._internal || fn?.options?.params);
|
|
200
|
+
const result = await (args
|
|
201
|
+
? (shouldPassListArgs
|
|
202
|
+
? callWithContext(context, fn, args)
|
|
203
|
+
: callWithContext(context, fn, ...args.value))
|
|
204
|
+
: callWithContext(context, fn));
|
|
205
|
+
context.caller = originalCaller;
|
|
206
|
+
context.callStack.pop();
|
|
207
|
+
didPopCallStack = true;
|
|
208
|
+
if (isNode(result)) {
|
|
209
|
+
let evald = result.eval(context);
|
|
210
|
+
if (isThenable(evald)) {
|
|
211
|
+
evald = await evald;
|
|
212
|
+
if (markImportant && isNode(evald, 'Rules')) {
|
|
213
|
+
this.makeImportant(evald);
|
|
214
|
+
}
|
|
215
|
+
return adoptCallWhitespace(evald);
|
|
216
|
+
}
|
|
217
|
+
if (markImportant && isNode(evald, 'Rules')) {
|
|
218
|
+
this.makeImportant(evald);
|
|
219
|
+
}
|
|
220
|
+
return adoptCallWhitespace(evald);
|
|
221
|
+
}
|
|
222
|
+
let castResult = cast(result);
|
|
223
|
+
if (isNode(castResult, 'Rules') && castResult.value.length === 1) {
|
|
224
|
+
return adoptCallWhitespace(castResult.value[0]);
|
|
225
|
+
}
|
|
226
|
+
return adoptCallWhitespace(castResult);
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
const unitMode = context?.opts?.unitMode ?? 'loose';
|
|
230
|
+
const shouldRethrowForMode = unitMode === 'strict';
|
|
231
|
+
if (e instanceof ReferenceError && e.message.includes('No matching mixins')) {
|
|
232
|
+
if (this.parent?.type === 'SelectorCapture') {
|
|
233
|
+
return adoptCallWhitespace(new Any(String(n.valueOf()), { role: 'ident' }).inherit(this));
|
|
234
|
+
}
|
|
235
|
+
if (isNode(name, 'Reference')) {
|
|
236
|
+
throw new ReferenceError(`No matching mixins found for '${name.value.key.valueOf()}'`);
|
|
237
|
+
}
|
|
238
|
+
throw e;
|
|
239
|
+
}
|
|
240
|
+
if (!this.options?.silentFail || shouldRethrowForMode) {
|
|
241
|
+
throw e;
|
|
242
|
+
}
|
|
243
|
+
let newCall = this.clone().inherit(this);
|
|
244
|
+
/** Remove this flag for serialization */
|
|
245
|
+
newCall.options.silentFail = false;
|
|
246
|
+
newCall.value.name = isNode(name, 'Reference') && name.options.fallbackValue === true
|
|
247
|
+
? String(name.value.key)
|
|
248
|
+
: String(n.valueOf());
|
|
249
|
+
newCall.value.args = await evalArgNodes(args);
|
|
250
|
+
newCall.value.args?.value.forEach((arg, argIndex) => {
|
|
251
|
+
// Normalize fallback-call arg spacing to Less-style call serialization.
|
|
252
|
+
arg.pre = argIndex === 0 ? 0 : 1;
|
|
253
|
+
if (isNode(arg, 'Sequence')) {
|
|
254
|
+
arg.value.forEach((child, childIndex) => {
|
|
255
|
+
child.pre = childIndex === 0 ? 0 : 1;
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
else if (isNode(arg, 'List')) {
|
|
259
|
+
arg.value.forEach((child) => {
|
|
260
|
+
if (isNode(child, 'Sequence')) {
|
|
261
|
+
child.value.forEach((nested, nestedIndex) => {
|
|
262
|
+
nested.pre = nestedIndex === 0 ? 0 : 1;
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
return adoptCallWhitespace(newCall);
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
context.caller = originalCaller;
|
|
272
|
+
context.parenFrames.pop();
|
|
273
|
+
if (!didPopCallStack) {
|
|
274
|
+
context.callStack.pop();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
if (n === 'calc') {
|
|
280
|
+
context.calcFrames++;
|
|
281
|
+
}
|
|
282
|
+
const evaluatedArgs = await evalArgNodes(args);
|
|
283
|
+
if (n === 'calc') {
|
|
284
|
+
context.calcFrames--;
|
|
285
|
+
}
|
|
286
|
+
context.parenFrames.pop();
|
|
287
|
+
context.callStack.pop();
|
|
288
|
+
const node = this.clone();
|
|
289
|
+
node.options.silentFail = false;
|
|
290
|
+
if (n === 'calc' && evaluatedArgs) {
|
|
291
|
+
if (isNode(evaluatedArgs.value[0], 'Dimension')) {
|
|
292
|
+
return evaluatedArgs.value[0];
|
|
293
|
+
}
|
|
294
|
+
else if (context.calcFrames !== 0) {
|
|
295
|
+
return new Paren(evaluatedArgs.value[0]);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
node.value.name = n;
|
|
299
|
+
node.value.args = evaluatedArgs;
|
|
300
|
+
return adoptCallWhitespace(node);
|
|
301
|
+
}
|
|
302
|
+
;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
export const call = defineType(Call, 'Call');
|
|
306
|
+
//# sourceMappingURL=call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/tree/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MaybePromise } from 'awaitable-pipe/lib/utils';
|
|
2
|
+
import { Rules } from './rules.js';
|
|
3
|
+
import { type PrintOptions } from './util/print.js';
|
|
4
|
+
import type { Context } from '../context.js';
|
|
5
|
+
/**
|
|
6
|
+
* A collection is essentially like an anonymous mixin,
|
|
7
|
+
* except that properties are arbitrary, so its intended
|
|
8
|
+
* for map data.
|
|
9
|
+
*
|
|
10
|
+
* Even though it doesn't allow everything that a regular set
|
|
11
|
+
* of rules does, we extend Rules just to make evaluation easier.
|
|
12
|
+
*
|
|
13
|
+
* Can be used like Sass property nesting.
|
|
14
|
+
* @see https://sass-lang.com/documentation/style-rules/declarations/#nesting
|
|
15
|
+
*/
|
|
16
|
+
export declare class Collection extends Rules {
|
|
17
|
+
type: "Collection";
|
|
18
|
+
shortType: "coll";
|
|
19
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
20
|
+
/**
|
|
21
|
+
* Collection rules aren't evaluated by default. They're evaluated
|
|
22
|
+
* at access time OR if assigned to a property.
|
|
23
|
+
*/
|
|
24
|
+
evalNode(context: Context): MaybePromise<this>;
|
|
25
|
+
preEval(context: Context): this | Promise<this>;
|
|
26
|
+
}
|
|
27
|
+
type Params = ConstructorParameters<typeof Collection>;
|
|
28
|
+
export declare const coll: (value: Params[0], options?: Params[1], location?: Params[2], treeContext?: Params[3]) => Collection;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/tree/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAC1B,IAAI,EAAG,YAAY,CAAU;IAC7B,SAAS,EAAG,MAAM,CAAU;IAE5B,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAI/C;;;OAGG;IACM,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC;IAI9C,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzD;AAED,KAAK,MAAM,GAAG,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC;AAEvD,eAAO,MAAM,IAAI,EAAmD,CAClE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KACpB,UAAU,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { defineType } from './node.js';
|
|
2
|
+
import { Rules } from './rules.js';
|
|
3
|
+
/**
|
|
4
|
+
* A collection is essentially like an anonymous mixin,
|
|
5
|
+
* except that properties are arbitrary, so its intended
|
|
6
|
+
* for map data.
|
|
7
|
+
*
|
|
8
|
+
* Even though it doesn't allow everything that a regular set
|
|
9
|
+
* of rules does, we extend Rules just to make evaluation easier.
|
|
10
|
+
*
|
|
11
|
+
* Can be used like Sass property nesting.
|
|
12
|
+
* @see https://sass-lang.com/documentation/style-rules/declarations/#nesting
|
|
13
|
+
*/
|
|
14
|
+
export class Collection extends Rules {
|
|
15
|
+
type = 'Collection';
|
|
16
|
+
shortType = 'coll';
|
|
17
|
+
toTrimmedString(options) {
|
|
18
|
+
return this.toBraced(options);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Collection rules aren't evaluated by default. They're evaluated
|
|
22
|
+
* at access time OR if assigned to a property.
|
|
23
|
+
*/
|
|
24
|
+
evalNode(context) {
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
preEval(context) {
|
|
28
|
+
if (this.preEvaluated) {
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
const node = this.maybeClone(context);
|
|
32
|
+
node.preEvaluated = true;
|
|
33
|
+
return node;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const coll = defineType(Collection, 'Collection', 'coll');
|
|
37
|
+
//# sourceMappingURL=collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/tree/collection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,YAAqB,CAAC;IAC7B,SAAS,GAAG,MAAe,CAAC;IAE5B,eAAe,CAAC,OAAsB;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACM,QAAQ,CAAC,OAAgB;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,OAAO,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAS,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAID,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAKhD,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Node, type NodeOptions } from './node.js';
|
|
2
|
+
import { type Operator } from './util/calculate.js';
|
|
3
|
+
import { type Context } from '../context.js';
|
|
4
|
+
import { type PrintOptions } from './util/print.js';
|
|
5
|
+
type ColorValues = [number, number, number, number] | number[];
|
|
6
|
+
type ChannelTuple = [number, string];
|
|
7
|
+
type ChannelValue = number | ChannelTuple;
|
|
8
|
+
type AlphaValue = number | ChannelTuple;
|
|
9
|
+
type RGBChannels = [ChannelValue, ChannelValue, ChannelValue];
|
|
10
|
+
type HSLChannels = [ChannelValue, ChannelValue, ChannelValue];
|
|
11
|
+
export declare enum ColorFormat {
|
|
12
|
+
HEX = 0,
|
|
13
|
+
RGB = 1,
|
|
14
|
+
HSL = 2
|
|
15
|
+
}
|
|
16
|
+
export interface ColorData {
|
|
17
|
+
node?: string | Node;
|
|
18
|
+
/** Legacy field; format now lives on Color options. */
|
|
19
|
+
format?: ColorFormat;
|
|
20
|
+
rgb?: RGBChannels;
|
|
21
|
+
hsl?: HSLChannels;
|
|
22
|
+
alpha?: AlphaValue;
|
|
23
|
+
}
|
|
24
|
+
export interface ColorOptions extends NodeOptions {
|
|
25
|
+
format?: ColorFormat;
|
|
26
|
+
modernSyntax?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface Color extends Node<ColorData, ColorOptions> {
|
|
29
|
+
eval(context: Context): Color;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Color's `value` will store RGB, HSL, and alpha separately to avoid unnecessary conversions.
|
|
33
|
+
* Conversion only happens when modifying colors or when explicitly requested.
|
|
34
|
+
*/
|
|
35
|
+
export declare class Color extends Node<ColorData, ColorOptions> {
|
|
36
|
+
type: "Color";
|
|
37
|
+
shortType: "color";
|
|
38
|
+
constructor(value: ColorData | string | ColorValues, options?: ConstructorParameters<typeof Node<ColorData, ColorOptions>>[1], location?: ConstructorParameters<typeof Node<ColorData, ColorOptions>>[2], context?: ConstructorParameters<typeof Node<ColorData, ColorOptions>>[3]);
|
|
39
|
+
private normalizeChannelValue;
|
|
40
|
+
private hueToDegrees;
|
|
41
|
+
private percentToUnit;
|
|
42
|
+
private rgbChannelToNumber;
|
|
43
|
+
private alphaToNumber;
|
|
44
|
+
private getSerializedAlphaText;
|
|
45
|
+
private getSerializedRgbText;
|
|
46
|
+
/**
|
|
47
|
+
* Get RGB values, converting from HSL if needed.
|
|
48
|
+
* Returns clamped values (0-255) for better developer experience.
|
|
49
|
+
* For internal calculations, use _rgb instead.
|
|
50
|
+
*/
|
|
51
|
+
get rgb(): [number, number, number];
|
|
52
|
+
/**
|
|
53
|
+
* Internal getter for unclamped RGB values.
|
|
54
|
+
* Use this for calculations and conversions.
|
|
55
|
+
*/
|
|
56
|
+
get _rgb(): [number, number, number];
|
|
57
|
+
set rgb(rgb: [number, number, number] | RGBChannels);
|
|
58
|
+
/**
|
|
59
|
+
* Get HSL values, converting from RGB if needed.
|
|
60
|
+
* Returns clamped values (hue: 0-360, saturation/lightness: 0-1) for better developer experience.
|
|
61
|
+
* For internal calculations, use _hsl instead.
|
|
62
|
+
*/
|
|
63
|
+
get hsl(): [number, number, number];
|
|
64
|
+
/**
|
|
65
|
+
* Internal getter for unclamped HSL values.
|
|
66
|
+
* Use this for calculations and conversions.
|
|
67
|
+
*/
|
|
68
|
+
get _hsl(): [number, number, number];
|
|
69
|
+
set hsl(hsl: [number, number, number] | HSLChannels);
|
|
70
|
+
/**
|
|
71
|
+
* Get alpha value.
|
|
72
|
+
* Returns clamped value (0-1) for better developer experience.
|
|
73
|
+
* For internal calculations, use _alpha instead.
|
|
74
|
+
*/
|
|
75
|
+
get alpha(): number;
|
|
76
|
+
/**
|
|
77
|
+
* Internal getter for unclamped alpha value.
|
|
78
|
+
* Use this for calculations and conversions.
|
|
79
|
+
*/
|
|
80
|
+
get _alpha(): number;
|
|
81
|
+
set alpha(alpha: AlphaValue);
|
|
82
|
+
/**
|
|
83
|
+
* Get RGBA values for backward compatibility.
|
|
84
|
+
* Returns clamped values for better developer experience.
|
|
85
|
+
*/
|
|
86
|
+
get rgba(): ColorValues;
|
|
87
|
+
set rgba(rgba: ColorValues);
|
|
88
|
+
/**
|
|
89
|
+
* Get HSLA values for backward compatibility.
|
|
90
|
+
* Returns clamped values for better developer experience.
|
|
91
|
+
*/
|
|
92
|
+
get hsla(): [number, number, number, number];
|
|
93
|
+
set hsla(hsla: [number, number, number, number]);
|
|
94
|
+
toHSL(): [number, number, number];
|
|
95
|
+
toHex(): string;
|
|
96
|
+
toTrimmedString(options?: PrintOptions): string;
|
|
97
|
+
operate(b: Node, op: Operator, context?: Context | undefined): Color;
|
|
98
|
+
}
|
|
99
|
+
export declare const color: (value?: string | ColorValues | ColorData | undefined, options?: ColorOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => Color;
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/tree/color.ts"],"names":[],"mappings":"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"}
|