@tachui/core 0.7.0-alpha1 → 0.7.1-alpha
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/README.md +195 -0
- package/dist/ScrollView-h-6wYMAm.js +515 -0
- package/dist/Spacer-BbteDQ9I.js +5337 -0
- package/dist/binding-CmdpowkI.js +2276 -0
- package/dist/bundles/minimal.d.ts +30 -4
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/common.js +825 -954
- package/dist/compiler/index.js +1386 -10
- package/dist/components/index.js +4166 -101
- package/dist/concatenated-component-DPcl2TEO.js +6779 -0
- package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
- package/dist/debug.js +0 -1
- package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
- package/dist/effect-CytAc9em.js +66 -0
- package/dist/essential.js +825 -954
- package/dist/index-Nfi2SBQh.js +3268 -0
- package/dist/index.js +825 -954
- package/dist/minimal-prod.js +162 -191
- package/dist/minimal.js +183 -957
- package/dist/modifiers/responsive/index.d.ts +10 -9
- package/dist/modifiers/responsive/index.d.ts.map +1 -1
- package/dist/plugins/index.js +543 -32
- package/dist/reactive/index.js +490 -93
- package/dist/runtime/dom-bridge.js +12 -239
- package/dist/runtime/renderer.js +8 -388
- package/dist/scheduler-7SvC3a21.js +814 -0
- package/dist/validation/index.js +6614 -198
- package/dist/viewport/index.js +2002 -83
- package/package.json +3 -4
- package/dist/assets/Asset.cjs +0 -2
- package/dist/assets/Asset.cjs.map +0 -1
- package/dist/assets/Asset.js +0 -9
- package/dist/assets/Asset.js.map +0 -1
- package/dist/assets/AssetCollection.cjs +0 -2
- package/dist/assets/AssetCollection.cjs.map +0 -1
- package/dist/assets/AssetCollection.js +0 -44
- package/dist/assets/AssetCollection.js.map +0 -1
- package/dist/assets/ColorAsset.cjs +0 -2
- package/dist/assets/ColorAsset.cjs.map +0 -1
- package/dist/assets/ColorAsset.js +0 -114
- package/dist/assets/ColorAsset.js.map +0 -1
- package/dist/assets/FontAsset.cjs +0 -9
- package/dist/assets/FontAsset.cjs.map +0 -1
- package/dist/assets/FontAsset.js +0 -173
- package/dist/assets/FontAsset.js.map +0 -1
- package/dist/assets/ImageAsset.cjs +0 -2
- package/dist/assets/ImageAsset.cjs.map +0 -1
- package/dist/assets/ImageAsset.js +0 -39
- package/dist/assets/ImageAsset.js.map +0 -1
- package/dist/assets/index.cjs +0 -2
- package/dist/assets/index.cjs.map +0 -1
- package/dist/assets/index.js +0 -119
- package/dist/assets/index.js.map +0 -1
- package/dist/common.cjs +0 -2
- package/dist/common.cjs.map +0 -1
- package/dist/common.js.map +0 -1
- package/dist/compiler/advanced-parser.cjs +0 -5
- package/dist/compiler/advanced-parser.cjs.map +0 -1
- package/dist/compiler/advanced-parser.js +0 -440
- package/dist/compiler/advanced-parser.js.map +0 -1
- package/dist/compiler/codegen.cjs +0 -6
- package/dist/compiler/codegen.cjs.map +0 -1
- package/dist/compiler/codegen.js +0 -241
- package/dist/compiler/codegen.js.map +0 -1
- package/dist/compiler/enhanced-codegen.cjs +0 -6
- package/dist/compiler/enhanced-codegen.cjs.map +0 -1
- package/dist/compiler/enhanced-codegen.js +0 -347
- package/dist/compiler/enhanced-codegen.js.map +0 -1
- package/dist/compiler/index.cjs +0 -2
- package/dist/compiler/index.cjs.map +0 -1
- package/dist/compiler/index.js.map +0 -1
- package/dist/compiler/parser.cjs +0 -5
- package/dist/compiler/parser.cjs.map +0 -1
- package/dist/compiler/parser.js +0 -275
- package/dist/compiler/parser.js.map +0 -1
- package/dist/compiler/plugin.cjs +0 -33
- package/dist/compiler/plugin.cjs.map +0 -1
- package/dist/compiler/plugin.js +0 -103
- package/dist/compiler/plugin.js.map +0 -1
- package/dist/components/BasicInput.cjs +0 -2
- package/dist/components/BasicInput.cjs.map +0 -1
- package/dist/components/BasicInput.js +0 -182
- package/dist/components/BasicInput.js.map +0 -1
- package/dist/components/Button.cjs +0 -7
- package/dist/components/Button.cjs.map +0 -1
- package/dist/components/Button.js +0 -408
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Divider.cjs +0 -2
- package/dist/components/Divider.cjs.map +0 -1
- package/dist/components/Divider.js +0 -187
- package/dist/components/Divider.js.map +0 -1
- package/dist/components/EnhancedLink.cjs +0 -2
- package/dist/components/EnhancedLink.cjs.map +0 -1
- package/dist/components/EnhancedLink.js +0 -345
- package/dist/components/EnhancedLink.js.map +0 -1
- package/dist/components/Form.cjs +0 -2
- package/dist/components/Form.cjs.map +0 -1
- package/dist/components/Form.js +0 -244
- package/dist/components/Form.js.map +0 -1
- package/dist/components/Grid.cjs +0 -2
- package/dist/components/Grid.cjs.map +0 -1
- package/dist/components/Grid.js +0 -1045
- package/dist/components/Grid.js.map +0 -1
- package/dist/components/GridResponsive.cjs +0 -2
- package/dist/components/GridResponsive.cjs.map +0 -1
- package/dist/components/GridResponsive.js +0 -382
- package/dist/components/GridResponsive.js.map +0 -1
- package/dist/components/Image.cjs +0 -2
- package/dist/components/Image.cjs.map +0 -1
- package/dist/components/Image.js +0 -212
- package/dist/components/Image.js.map +0 -1
- package/dist/components/List.cjs +0 -2
- package/dist/components/List.cjs.map +0 -1
- package/dist/components/List.js +0 -561
- package/dist/components/List.js.map +0 -1
- package/dist/components/Menu.cjs +0 -2
- package/dist/components/Menu.cjs.map +0 -1
- package/dist/components/Menu.js +0 -443
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/Picker.cjs +0 -2
- package/dist/components/Picker.cjs.map +0 -1
- package/dist/components/Picker.js +0 -478
- package/dist/components/Picker.js.map +0 -1
- package/dist/components/ScrollView.cjs +0 -6
- package/dist/components/ScrollView.cjs.map +0 -1
- package/dist/components/ScrollView.js +0 -363
- package/dist/components/ScrollView.js.map +0 -1
- package/dist/components/Section.cjs +0 -2
- package/dist/components/Section.cjs.map +0 -1
- package/dist/components/Section.js +0 -323
- package/dist/components/Section.js.map +0 -1
- package/dist/components/Show.cjs +0 -2
- package/dist/components/Show.cjs.map +0 -1
- package/dist/components/Show.js +0 -112
- package/dist/components/Show.js.map +0 -1
- package/dist/components/Spacer.cjs +0 -2
- package/dist/components/Spacer.cjs.map +0 -1
- package/dist/components/Spacer.js +0 -53
- package/dist/components/Spacer.js.map +0 -1
- package/dist/components/Text.cjs +0 -2
- package/dist/components/Text.cjs.map +0 -1
- package/dist/components/Text.js +0 -193
- package/dist/components/Text.js.map +0 -1
- package/dist/components/Toggle.cjs +0 -2
- package/dist/components/Toggle.cjs.map +0 -1
- package/dist/components/Toggle.js +0 -477
- package/dist/components/Toggle.js.map +0 -1
- package/dist/components/index.cjs +0 -2
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/wrapper.cjs +0 -2
- package/dist/components/wrapper.cjs.map +0 -1
- package/dist/components/wrapper.js +0 -484
- package/dist/components/wrapper.js.map +0 -1
- package/dist/concatenation/concatenatable.cjs +0 -2
- package/dist/concatenation/concatenatable.cjs.map +0 -1
- package/dist/concatenation/concatenatable.js +0 -118
- package/dist/concatenation/concatenatable.js.map +0 -1
- package/dist/concatenation/concatenated-component.cjs +0 -2
- package/dist/concatenation/concatenated-component.cjs.map +0 -1
- package/dist/concatenation/concatenated-component.js +0 -276
- package/dist/concatenation/concatenated-component.js.map +0 -1
- package/dist/concatenation/text-optimizer.cjs +0 -2
- package/dist/concatenation/text-optimizer.cjs.map +0 -1
- package/dist/concatenation/text-optimizer.js +0 -236
- package/dist/concatenation/text-optimizer.js.map +0 -1
- package/dist/concatenation/types.cjs +0 -2
- package/dist/concatenation/types.cjs.map +0 -1
- package/dist/concatenation/types.js +0 -13
- package/dist/concatenation/types.js.map +0 -1
- package/dist/constants/frame-utils.cjs +0 -2
- package/dist/constants/frame-utils.cjs.map +0 -1
- package/dist/constants/frame-utils.js +0 -116
- package/dist/constants/frame-utils.js.map +0 -1
- package/dist/constants/layout.cjs +0 -2
- package/dist/constants/layout.cjs.map +0 -1
- package/dist/constants/layout.js +0 -46
- package/dist/constants/layout.js.map +0 -1
- package/dist/css-classes/component-base.cjs +0 -2
- package/dist/css-classes/component-base.cjs.map +0 -1
- package/dist/css-classes/component-base.js +0 -62
- package/dist/css-classes/component-base.js.map +0 -1
- package/dist/css-classes/css-class-manager.cjs +0 -2
- package/dist/css-classes/css-class-manager.cjs.map +0 -1
- package/dist/css-classes/css-class-manager.js +0 -209
- package/dist/css-classes/css-class-manager.js.map +0 -1
- package/dist/css-classes/dom-integration.cjs +0 -2
- package/dist/css-classes/dom-integration.cjs.map +0 -1
- package/dist/css-classes/dom-integration.js +0 -67
- package/dist/css-classes/dom-integration.js.map +0 -1
- package/dist/css-classes/enhanced-renderer.cjs +0 -2
- package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
- package/dist/css-classes/enhanced-renderer.js +0 -73
- package/dist/css-classes/enhanced-renderer.js.map +0 -1
- package/dist/css-classes/utilities.cjs +0 -2
- package/dist/css-classes/utilities.cjs.map +0 -1
- package/dist/css-classes/utilities.js +0 -41
- package/dist/css-classes/utilities.js.map +0 -1
- package/dist/debug.cjs +0 -52
- package/dist/debug.cjs.map +0 -1
- package/dist/debug.js.map +0 -1
- package/dist/essential.cjs +0 -2
- package/dist/essential.cjs.map +0 -1
- package/dist/essential.js.map +0 -1
- package/dist/gradients/css-generator.cjs +0 -2
- package/dist/gradients/css-generator.cjs.map +0 -1
- package/dist/gradients/css-generator.js +0 -100
- package/dist/gradients/css-generator.js.map +0 -1
- package/dist/gradients/examples.cjs +0 -2
- package/dist/gradients/examples.cjs.map +0 -1
- package/dist/gradients/examples.js +0 -555
- package/dist/gradients/examples.js.map +0 -1
- package/dist/gradients/gradient-asset.cjs +0 -2
- package/dist/gradients/gradient-asset.cjs.map +0 -1
- package/dist/gradients/gradient-asset.js +0 -22
- package/dist/gradients/gradient-asset.js.map +0 -1
- package/dist/gradients/index.cjs +0 -2
- package/dist/gradients/index.cjs.map +0 -1
- package/dist/gradients/index.js +0 -78
- package/dist/gradients/index.js.map +0 -1
- package/dist/gradients/performance.cjs +0 -2
- package/dist/gradients/performance.cjs.map +0 -1
- package/dist/gradients/performance.js +0 -237
- package/dist/gradients/performance.js.map +0 -1
- package/dist/gradients/presets.cjs +0 -2
- package/dist/gradients/presets.cjs.map +0 -1
- package/dist/gradients/presets.js +0 -254
- package/dist/gradients/presets.js.map +0 -1
- package/dist/gradients/reactive.cjs +0 -2
- package/dist/gradients/reactive.cjs.map +0 -1
- package/dist/gradients/reactive.js +0 -239
- package/dist/gradients/reactive.js.map +0 -1
- package/dist/gradients/state-gradient-asset.cjs +0 -2
- package/dist/gradients/state-gradient-asset.cjs.map +0 -1
- package/dist/gradients/state-gradient-asset.js +0 -111
- package/dist/gradients/state-gradient-asset.js.map +0 -1
- package/dist/gradients/utils.cjs +0 -2
- package/dist/gradients/utils.cjs.map +0 -1
- package/dist/gradients/utils.js +0 -385
- package/dist/gradients/utils.js.map +0 -1
- package/dist/gradients/validation.cjs +0 -2
- package/dist/gradients/validation.cjs.map +0 -1
- package/dist/gradients/validation.js +0 -209
- package/dist/gradients/validation.js.map +0 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index2.cjs +0 -2
- package/dist/index2.cjs.map +0 -1
- package/dist/index2.js +0 -293
- package/dist/index2.js.map +0 -1
- package/dist/lifecycle/hooks.cjs +0 -2
- package/dist/lifecycle/hooks.cjs.map +0 -1
- package/dist/lifecycle/hooks.js +0 -159
- package/dist/lifecycle/hooks.js.map +0 -1
- package/dist/minimal-prod.cjs +0 -2
- package/dist/minimal-prod.cjs.map +0 -1
- package/dist/minimal-prod.js.map +0 -1
- package/dist/minimal.cjs +0 -2
- package/dist/minimal.cjs.map +0 -1
- package/dist/minimal.js.map +0 -1
- package/dist/modifiers/as-html-validator.cjs +0 -2
- package/dist/modifiers/as-html-validator.cjs.map +0 -1
- package/dist/modifiers/as-html-validator.js +0 -47
- package/dist/modifiers/as-html-validator.js.map +0 -1
- package/dist/modifiers/as-html.cjs +0 -2
- package/dist/modifiers/as-html.cjs.map +0 -1
- package/dist/modifiers/as-html.js +0 -71
- package/dist/modifiers/as-html.js.map +0 -1
- package/dist/modifiers/attributes.cjs +0 -2
- package/dist/modifiers/attributes.cjs.map +0 -1
- package/dist/modifiers/attributes.js +0 -272
- package/dist/modifiers/attributes.js.map +0 -1
- package/dist/modifiers/backdrop.cjs +0 -2
- package/dist/modifiers/backdrop.cjs.map +0 -1
- package/dist/modifiers/backdrop.js +0 -109
- package/dist/modifiers/backdrop.js.map +0 -1
- package/dist/modifiers/background.cjs +0 -2
- package/dist/modifiers/background.cjs.map +0 -1
- package/dist/modifiers/background.js +0 -67
- package/dist/modifiers/background.js.map +0 -1
- package/dist/modifiers/base.cjs +0 -25
- package/dist/modifiers/base.cjs.map +0 -1
- package/dist/modifiers/base.js +0 -745
- package/dist/modifiers/base.js.map +0 -1
- package/dist/modifiers/basic-sanitizer.cjs +0 -2
- package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
- package/dist/modifiers/basic-sanitizer.js +0 -162
- package/dist/modifiers/basic-sanitizer.js.map +0 -1
- package/dist/modifiers/border.cjs +0 -2
- package/dist/modifiers/border.cjs.map +0 -1
- package/dist/modifiers/border.js +0 -160
- package/dist/modifiers/border.js.map +0 -1
- package/dist/modifiers/builder.cjs +0 -2
- package/dist/modifiers/builder.cjs.map +0 -1
- package/dist/modifiers/builder.js +0 -930
- package/dist/modifiers/builder.js.map +0 -1
- package/dist/modifiers/core.cjs +0 -2
- package/dist/modifiers/core.cjs.map +0 -1
- package/dist/modifiers/core.js +0 -398
- package/dist/modifiers/core.js.map +0 -1
- package/dist/modifiers/css.cjs +0 -2
- package/dist/modifiers/css.cjs.map +0 -1
- package/dist/modifiers/css.js +0 -50
- package/dist/modifiers/css.js.map +0 -1
- package/dist/modifiers/effects.cjs +0 -2
- package/dist/modifiers/effects.cjs.map +0 -1
- package/dist/modifiers/effects.js +0 -178
- package/dist/modifiers/effects.js.map +0 -1
- package/dist/modifiers/elements.cjs +0 -2
- package/dist/modifiers/elements.cjs.map +0 -1
- package/dist/modifiers/elements.js +0 -216
- package/dist/modifiers/elements.js.map +0 -1
- package/dist/modifiers/filters.cjs +0 -2
- package/dist/modifiers/filters.cjs.map +0 -1
- package/dist/modifiers/filters.js +0 -223
- package/dist/modifiers/filters.js.map +0 -1
- package/dist/modifiers/flexbox.cjs +0 -2
- package/dist/modifiers/flexbox.cjs.map +0 -1
- package/dist/modifiers/flexbox.js +0 -56
- package/dist/modifiers/flexbox.js.map +0 -1
- package/dist/modifiers/font.cjs +0 -2
- package/dist/modifiers/font.cjs.map +0 -1
- package/dist/modifiers/font.js +0 -60
- package/dist/modifiers/font.js.map +0 -1
- package/dist/modifiers/grid.cjs +0 -2
- package/dist/modifiers/grid.cjs.map +0 -1
- package/dist/modifiers/grid.js +0 -92
- package/dist/modifiers/grid.js.map +0 -1
- package/dist/modifiers/margin.cjs +0 -2
- package/dist/modifiers/margin.cjs.map +0 -1
- package/dist/modifiers/margin.js +0 -65
- package/dist/modifiers/margin.js.map +0 -1
- package/dist/modifiers/padding.cjs +0 -2
- package/dist/modifiers/padding.cjs.map +0 -1
- package/dist/modifiers/padding.js +0 -109
- package/dist/modifiers/padding.js.map +0 -1
- package/dist/modifiers/registry.cjs +0 -2
- package/dist/modifiers/registry.cjs.map +0 -1
- package/dist/modifiers/registry.js +0 -163
- package/dist/modifiers/registry.js.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
- package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.js +0 -291
- package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
- package/dist/modifiers/responsive/breakpoints.cjs +0 -2
- package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
- package/dist/modifiers/responsive/breakpoints.js +0 -168
- package/dist/modifiers/responsive/breakpoints.js.map +0 -1
- package/dist/modifiers/responsive/css-generator.cjs +0 -5
- package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
- package/dist/modifiers/responsive/css-generator.js +0 -261
- package/dist/modifiers/responsive/css-generator.js.map +0 -1
- package/dist/modifiers/responsive/dev-tools.cjs +0 -77
- package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
- package/dist/modifiers/responsive/dev-tools.js +0 -380
- package/dist/modifiers/responsive/dev-tools.js.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
- package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.js +0 -254
- package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
- package/dist/modifiers/responsive/performance.cjs +0 -3
- package/dist/modifiers/responsive/performance.cjs.map +0 -1
- package/dist/modifiers/responsive/performance.js +0 -212
- package/dist/modifiers/responsive/performance.js.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
- package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.js +0 -272
- package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
- package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.js +0 -204
- package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
- package/dist/modifiers/responsive/types.cjs +0 -2
- package/dist/modifiers/responsive/types.cjs.map +0 -1
- package/dist/modifiers/responsive/types.js +0 -26
- package/dist/modifiers/responsive/types.js.map +0 -1
- package/dist/modifiers/responsive/utilities.cjs +0 -16
- package/dist/modifiers/responsive/utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/utilities.js +0 -273
- package/dist/modifiers/responsive/utilities.js.map +0 -1
- package/dist/modifiers/scroll.cjs +0 -2
- package/dist/modifiers/scroll.cjs.map +0 -1
- package/dist/modifiers/scroll.js +0 -82
- package/dist/modifiers/scroll.js.map +0 -1
- package/dist/modifiers/shadows.cjs +0 -2
- package/dist/modifiers/shadows.cjs.map +0 -1
- package/dist/modifiers/shadows.js +0 -147
- package/dist/modifiers/shadows.js.map +0 -1
- package/dist/modifiers/size.cjs +0 -2
- package/dist/modifiers/size.cjs.map +0 -1
- package/dist/modifiers/size.js +0 -74
- package/dist/modifiers/size.js.map +0 -1
- package/dist/modifiers/text.cjs +0 -2
- package/dist/modifiers/text.cjs.map +0 -1
- package/dist/modifiers/text.js +0 -166
- package/dist/modifiers/text.js.map +0 -1
- package/dist/modifiers/transformations.cjs +0 -2
- package/dist/modifiers/transformations.cjs.map +0 -1
- package/dist/modifiers/transformations.js +0 -216
- package/dist/modifiers/transformations.js.map +0 -1
- package/dist/modifiers/transitions.cjs +0 -2
- package/dist/modifiers/transitions.cjs.map +0 -1
- package/dist/modifiers/transitions.js +0 -102
- package/dist/modifiers/transitions.js.map +0 -1
- package/dist/modifiers/types.cjs +0 -2
- package/dist/modifiers/types.cjs.map +0 -1
- package/dist/modifiers/types.js +0 -5
- package/dist/modifiers/types.js.map +0 -1
- package/dist/modifiers/typography.cjs +0 -2
- package/dist/modifiers/typography.cjs.map +0 -1
- package/dist/modifiers/typography.js +0 -76
- package/dist/modifiers/typography.js.map +0 -1
- package/dist/modifiers/utility.cjs +0 -2
- package/dist/modifiers/utility.cjs.map +0 -1
- package/dist/modifiers/utility.js +0 -71
- package/dist/modifiers/utility.js.map +0 -1
- package/dist/modifiers/utils.cjs +0 -2
- package/dist/modifiers/utils.cjs.map +0 -1
- package/dist/modifiers/utils.js +0 -250
- package/dist/modifiers/utils.js.map +0 -1
- package/dist/plugins/index.cjs +0 -2
- package/dist/plugins/index.cjs.map +0 -1
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/legacy-adapter.cjs +0 -2
- package/dist/plugins/legacy-adapter.cjs.map +0 -1
- package/dist/plugins/legacy-adapter.js +0 -30
- package/dist/plugins/legacy-adapter.js.map +0 -1
- package/dist/plugins/simplified-component-registry.cjs +0 -2
- package/dist/plugins/simplified-component-registry.cjs.map +0 -1
- package/dist/plugins/simplified-component-registry.js +0 -71
- package/dist/plugins/simplified-component-registry.js.map +0 -1
- package/dist/plugins/simplified-error-handler.cjs +0 -2
- package/dist/plugins/simplified-error-handler.cjs.map +0 -1
- package/dist/plugins/simplified-error-handler.js +0 -154
- package/dist/plugins/simplified-error-handler.js.map +0 -1
- package/dist/plugins/simplified-lazy-loader.cjs +0 -2
- package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
- package/dist/plugins/simplified-lazy-loader.js +0 -129
- package/dist/plugins/simplified-lazy-loader.js.map +0 -1
- package/dist/plugins/simplified-plugin-manager.cjs +0 -2
- package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
- package/dist/plugins/simplified-plugin-manager.js +0 -51
- package/dist/plugins/simplified-plugin-manager.js.map +0 -1
- package/dist/plugins/simplified-tachui-instance.cjs +0 -2
- package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
- package/dist/plugins/simplified-tachui-instance.js +0 -88
- package/dist/plugins/simplified-tachui-instance.js.map +0 -1
- package/dist/plugins/simplified-types.cjs +0 -2
- package/dist/plugins/simplified-types.cjs.map +0 -1
- package/dist/plugins/simplified-types.js +0 -9
- package/dist/plugins/simplified-types.js.map +0 -1
- package/dist/plugins/simplified-utils.cjs +0 -2
- package/dist/plugins/simplified-utils.cjs.map +0 -1
- package/dist/plugins/simplified-utils.js +0 -40
- package/dist/plugins/simplified-utils.js.map +0 -1
- package/dist/reactive/cleanup.cjs +0 -2
- package/dist/reactive/cleanup.cjs.map +0 -1
- package/dist/reactive/cleanup.js +0 -62
- package/dist/reactive/cleanup.js.map +0 -1
- package/dist/reactive/computed.cjs +0 -2
- package/dist/reactive/computed.cjs.map +0 -1
- package/dist/reactive/computed.js +0 -121
- package/dist/reactive/computed.js.map +0 -1
- package/dist/reactive/context.cjs +0 -2
- package/dist/reactive/context.cjs.map +0 -1
- package/dist/reactive/context.js +0 -143
- package/dist/reactive/context.js.map +0 -1
- package/dist/reactive/effect.cjs +0 -2
- package/dist/reactive/effect.cjs.map +0 -1
- package/dist/reactive/effect.js +0 -67
- package/dist/reactive/effect.js.map +0 -1
- package/dist/reactive/enhanced-effect.cjs +0 -2
- package/dist/reactive/enhanced-effect.cjs.map +0 -1
- package/dist/reactive/enhanced-effect.js +0 -153
- package/dist/reactive/enhanced-effect.js.map +0 -1
- package/dist/reactive/enhanced-signal.cjs +0 -2
- package/dist/reactive/enhanced-signal.cjs.map +0 -1
- package/dist/reactive/enhanced-signal.js +0 -117
- package/dist/reactive/enhanced-signal.js.map +0 -1
- package/dist/reactive/equality.cjs +0 -2
- package/dist/reactive/equality.cjs.map +0 -1
- package/dist/reactive/equality.js +0 -66
- package/dist/reactive/equality.js.map +0 -1
- package/dist/reactive/index.cjs +0 -2
- package/dist/reactive/index.cjs.map +0 -1
- package/dist/reactive/index.js.map +0 -1
- package/dist/reactive/migration.cjs +0 -18
- package/dist/reactive/migration.cjs.map +0 -1
- package/dist/reactive/migration.js +0 -164
- package/dist/reactive/migration.js.map +0 -1
- package/dist/reactive/ownership.cjs +0 -2
- package/dist/reactive/ownership.cjs.map +0 -1
- package/dist/reactive/ownership.js +0 -34
- package/dist/reactive/ownership.js.map +0 -1
- package/dist/reactive/scheduler.cjs +0 -2
- package/dist/reactive/scheduler.cjs.map +0 -1
- package/dist/reactive/scheduler.js +0 -111
- package/dist/reactive/scheduler.js.map +0 -1
- package/dist/reactive/signal.cjs +0 -2
- package/dist/reactive/signal.cjs.map +0 -1
- package/dist/reactive/signal.js +0 -96
- package/dist/reactive/signal.js.map +0 -1
- package/dist/reactive/theme.cjs +0 -2
- package/dist/reactive/theme.cjs.map +0 -1
- package/dist/reactive/theme.js +0 -27
- package/dist/reactive/theme.js.map +0 -1
- package/dist/reactive/types.cjs +0 -2
- package/dist/reactive/types.cjs.map +0 -1
- package/dist/reactive/types.js +0 -5
- package/dist/reactive/types.js.map +0 -1
- package/dist/reactive/unified-scheduler.cjs +0 -2
- package/dist/reactive/unified-scheduler.cjs.map +0 -1
- package/dist/reactive/unified-scheduler.js +0 -219
- package/dist/reactive/unified-scheduler.js.map +0 -1
- package/dist/runtime/component-context.cjs +0 -2
- package/dist/runtime/component-context.cjs.map +0 -1
- package/dist/runtime/component-context.js +0 -177
- package/dist/runtime/component-context.js.map +0 -1
- package/dist/runtime/component.cjs +0 -2
- package/dist/runtime/component.cjs.map +0 -1
- package/dist/runtime/component.js +0 -238
- package/dist/runtime/component.js.map +0 -1
- package/dist/runtime/context.cjs +0 -2
- package/dist/runtime/context.cjs.map +0 -1
- package/dist/runtime/context.js.map +0 -1
- package/dist/runtime/dev-tools.cjs +0 -2
- package/dist/runtime/dev-tools.cjs.map +0 -1
- package/dist/runtime/dev-tools.js +0 -391
- package/dist/runtime/dev-tools.js.map +0 -1
- package/dist/runtime/development-warnings.cjs +0 -2
- package/dist/runtime/development-warnings.cjs.map +0 -1
- package/dist/runtime/development-warnings.js +0 -69
- package/dist/runtime/development-warnings.js.map +0 -1
- package/dist/runtime/dom-bridge.cjs +0 -2
- package/dist/runtime/dom-bridge.cjs.map +0 -1
- package/dist/runtime/dom-bridge.js.map +0 -1
- package/dist/runtime/element-override.cjs +0 -2
- package/dist/runtime/element-override.cjs.map +0 -1
- package/dist/runtime/element-override.js +0 -214
- package/dist/runtime/element-override.js.map +0 -1
- package/dist/runtime/error-boundary.cjs +0 -2
- package/dist/runtime/error-boundary.cjs.map +0 -1
- package/dist/runtime/error-boundary.js +0 -559
- package/dist/runtime/error-boundary.js.map +0 -1
- package/dist/runtime/error-recovery.cjs +0 -2
- package/dist/runtime/error-recovery.cjs.map +0 -1
- package/dist/runtime/error-recovery.js +0 -385
- package/dist/runtime/error-recovery.js.map +0 -1
- package/dist/runtime/error-reporting.cjs +0 -3
- package/dist/runtime/error-reporting.cjs.map +0 -1
- package/dist/runtime/error-reporting.js +0 -479
- package/dist/runtime/error-reporting.js.map +0 -1
- package/dist/runtime/error-utils.cjs +0 -3
- package/dist/runtime/error-utils.cjs.map +0 -1
- package/dist/runtime/error-utils.js +0 -352
- package/dist/runtime/error-utils.js.map +0 -1
- package/dist/runtime/lazy-component.cjs +0 -2
- package/dist/runtime/lazy-component.cjs.map +0 -1
- package/dist/runtime/lazy-component.js +0 -129
- package/dist/runtime/lazy-component.js.map +0 -1
- package/dist/runtime/lifecycle.cjs +0 -2
- package/dist/runtime/lifecycle.cjs.map +0 -1
- package/dist/runtime/lifecycle.js +0 -7
- package/dist/runtime/lifecycle.js.map +0 -1
- package/dist/runtime/mounting.cjs +0 -2
- package/dist/runtime/mounting.cjs.map +0 -1
- package/dist/runtime/mounting.js +0 -12
- package/dist/runtime/mounting.js.map +0 -1
- package/dist/runtime/optimization.cjs +0 -2
- package/dist/runtime/optimization.cjs.map +0 -1
- package/dist/runtime/optimization.js +0 -6
- package/dist/runtime/optimization.js.map +0 -1
- package/dist/runtime/performance.cjs +0 -2
- package/dist/runtime/performance.cjs.map +0 -1
- package/dist/runtime/performance.js +0 -399
- package/dist/runtime/performance.js.map +0 -1
- package/dist/runtime/props.cjs +0 -2
- package/dist/runtime/props.cjs.map +0 -1
- package/dist/runtime/props.js +0 -265
- package/dist/runtime/props.js.map +0 -1
- package/dist/runtime/renderer.cjs +0 -2
- package/dist/runtime/renderer.cjs.map +0 -1
- package/dist/runtime/renderer.js.map +0 -1
- package/dist/runtime/semantic-role-manager.cjs +0 -2
- package/dist/runtime/semantic-role-manager.cjs.map +0 -1
- package/dist/runtime/semantic-role-manager.js +0 -82
- package/dist/runtime/semantic-role-manager.js.map +0 -1
- package/dist/state/binding.cjs +0 -2
- package/dist/state/binding.cjs.map +0 -1
- package/dist/state/binding.js +0 -155
- package/dist/state/binding.js.map +0 -1
- package/dist/state/environment.cjs +0 -2
- package/dist/state/environment.cjs.map +0 -1
- package/dist/state/environment.js +0 -115
- package/dist/state/environment.js.map +0 -1
- package/dist/state/index.cjs +0 -2
- package/dist/state/index.cjs.map +0 -1
- package/dist/state/index.js +0 -63
- package/dist/state/index.js.map +0 -1
- package/dist/state/observed-object.cjs +0 -2
- package/dist/state/observed-object.cjs.map +0 -1
- package/dist/state/observed-object.js +0 -163
- package/dist/state/observed-object.js.map +0 -1
- package/dist/state/state-manager.cjs +0 -2
- package/dist/state/state-manager.cjs.map +0 -1
- package/dist/state/state-manager.js +0 -233
- package/dist/state/state-manager.js.map +0 -1
- package/dist/state/state.cjs +0 -2
- package/dist/state/state.cjs.map +0 -1
- package/dist/state/state.js +0 -159
- package/dist/state/state.js.map +0 -1
- package/dist/sui-compat.cjs +0 -2
- package/dist/sui-compat.cjs.map +0 -1
- package/dist/sui-compat.js +0 -88
- package/dist/sui-compat.js.map +0 -1
- package/dist/validation/advanced-debugging.cjs +0 -44
- package/dist/validation/advanced-debugging.cjs.map +0 -1
- package/dist/validation/advanced-debugging.js +0 -455
- package/dist/validation/advanced-debugging.js.map +0 -1
- package/dist/validation/build-time/detection.cjs +0 -2
- package/dist/validation/build-time/detection.cjs.map +0 -1
- package/dist/validation/build-time/detection.js +0 -199
- package/dist/validation/build-time/detection.js.map +0 -1
- package/dist/validation/build-time/index.cjs +0 -2
- package/dist/validation/build-time/index.cjs.map +0 -1
- package/dist/validation/build-time/index.js +0 -122
- package/dist/validation/build-time/index.js.map +0 -1
- package/dist/validation/build-time/plugins.cjs +0 -3
- package/dist/validation/build-time/plugins.cjs.map +0 -1
- package/dist/validation/build-time/plugins.js +0 -282
- package/dist/validation/build-time/plugins.js.map +0 -1
- package/dist/validation/build-time/rules.cjs +0 -2
- package/dist/validation/build-time/rules.cjs.map +0 -1
- package/dist/validation/build-time/rules.js +0 -576
- package/dist/validation/build-time/rules.js.map +0 -1
- package/dist/validation/build-time/transformer.cjs +0 -3
- package/dist/validation/build-time/transformer.cjs.map +0 -1
- package/dist/validation/build-time/transformer.js +0 -177
- package/dist/validation/build-time/transformer.js.map +0 -1
- package/dist/validation/comprehensive.cjs +0 -9
- package/dist/validation/comprehensive.cjs.map +0 -1
- package/dist/validation/comprehensive.js +0 -916
- package/dist/validation/comprehensive.js.map +0 -1
- package/dist/validation/debug-tools.cjs +0 -16
- package/dist/validation/debug-tools.cjs.map +0 -1
- package/dist/validation/debug-tools.js +0 -405
- package/dist/validation/debug-tools.js.map +0 -1
- package/dist/validation/developer-experience.cjs +0 -17
- package/dist/validation/developer-experience.cjs.map +0 -1
- package/dist/validation/developer-experience.js +0 -433
- package/dist/validation/developer-experience.js.map +0 -1
- package/dist/validation/documentation-integration.cjs +0 -7
- package/dist/validation/documentation-integration.cjs.map +0 -1
- package/dist/validation/documentation-integration.js +0 -440
- package/dist/validation/documentation-integration.js.map +0 -1
- package/dist/validation/enhanced-runtime.cjs +0 -6
- package/dist/validation/enhanced-runtime.cjs.map +0 -1
- package/dist/validation/enhanced-runtime.js +0 -465
- package/dist/validation/enhanced-runtime.js.map +0 -1
- package/dist/validation/error-reporting.cjs +0 -32
- package/dist/validation/error-reporting.cjs.map +0 -1
- package/dist/validation/error-reporting.js +0 -370
- package/dist/validation/error-reporting.js.map +0 -1
- package/dist/validation/ide-integration.cjs +0 -85
- package/dist/validation/ide-integration.cjs.map +0 -1
- package/dist/validation/ide-integration.js +0 -557
- package/dist/validation/ide-integration.js.map +0 -1
- package/dist/validation/index.cjs +0 -6
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/lifecycle-validation.cjs +0 -2
- package/dist/validation/lifecycle-validation.cjs.map +0 -1
- package/dist/validation/lifecycle-validation.js +0 -314
- package/dist/validation/lifecycle-validation.js.map +0 -1
- package/dist/validation/performance-optimizer.cjs +0 -2
- package/dist/validation/performance-optimizer.cjs.map +0 -1
- package/dist/validation/performance-optimizer.js +0 -338
- package/dist/validation/performance-optimizer.js.map +0 -1
- package/dist/validation/plugin-registration.cjs +0 -2
- package/dist/validation/plugin-registration.cjs.map +0 -1
- package/dist/validation/plugin-registration.js +0 -126
- package/dist/validation/plugin-registration.js.map +0 -1
- package/dist/validation/production-bypass.cjs +0 -2
- package/dist/validation/production-bypass.cjs.map +0 -1
- package/dist/validation/production-bypass.js +0 -218
- package/dist/validation/production-bypass.js.map +0 -1
- package/dist/validation/simple.cjs +0 -9
- package/dist/validation/simple.cjs.map +0 -1
- package/dist/validation/simple.js +0 -146
- package/dist/validation/simple.js.map +0 -1
- package/dist/viewport/adapters/web-adapter.cjs +0 -70
- package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
- package/dist/viewport/adapters/web-adapter.js +0 -823
- package/dist/viewport/adapters/web-adapter.js.map +0 -1
- package/dist/viewport/components.cjs +0 -2
- package/dist/viewport/components.cjs.map +0 -1
- package/dist/viewport/components.js +0 -298
- package/dist/viewport/components.js.map +0 -1
- package/dist/viewport/environment.cjs +0 -2
- package/dist/viewport/environment.cjs.map +0 -1
- package/dist/viewport/environment.js +0 -86
- package/dist/viewport/environment.js.map +0 -1
- package/dist/viewport/index.cjs +0 -2
- package/dist/viewport/index.cjs.map +0 -1
- package/dist/viewport/index.js.map +0 -1
- package/dist/viewport/platform-detection.cjs +0 -2
- package/dist/viewport/platform-detection.cjs.map +0 -1
- package/dist/viewport/platform-detection.js +0 -205
- package/dist/viewport/platform-detection.js.map +0 -1
- package/dist/viewport/types.cjs +0 -2
- package/dist/viewport/types.cjs.map +0 -1
- package/dist/viewport/types.js +0 -13
- package/dist/viewport/types.js.map +0 -1
- package/dist/viewport/viewport-manager.cjs +0 -2
- package/dist/viewport/viewport-manager.cjs.map +0 -1
- package/dist/viewport/viewport-manager.js +0 -524
- package/dist/viewport/viewport-manager.js.map +0 -1
- package/src/assets/Asset.ts +0 -11
- package/src/assets/AssetCollection.ts +0 -99
- package/src/assets/ColorAsset.ts +0 -210
- package/src/assets/FontAsset.ts +0 -380
- package/src/assets/ImageAsset.ts +0 -91
- package/src/assets/README.md +0 -190
- package/src/assets/index.ts +0 -175
- package/src/assets/test-assets.ts +0 -69
- package/src/assets/test-integration.ts +0 -46
- package/src/assets/test-simple.ts +0 -28
- package/src/assets/types.ts +0 -79
- package/src/bundles/common.ts +0 -30
- package/src/bundles/complete.ts +0 -29
- package/src/bundles/essential.ts +0 -26
- package/src/bundles/minimal.ts +0 -26
- package/src/bundles/production-minimal.ts +0 -67
- package/src/compiler/advanced-parser.ts +0 -871
- package/src/compiler/codegen.ts +0 -450
- package/src/compiler/enhanced-codegen.ts +0 -729
- package/src/compiler/index.ts +0 -25
- package/src/compiler/parser.ts +0 -461
- package/src/compiler/plugin.ts +0 -181
- package/src/compiler/types.ts +0 -177
- package/src/components/BasicInput.ts +0 -352
- package/src/components/Button.ts +0 -963
- package/src/components/Divider.ts +0 -341
- package/src/components/EnhancedLink.ts +0 -676
- package/src/components/Form.ts +0 -414
- package/src/components/Grid.ts +0 -2507
- package/src/components/GridResponsive.ts +0 -637
- package/src/components/Image.ts +0 -426
- package/src/components/List.ts +0 -1084
- package/src/components/Menu.ts +0 -807
- package/src/components/Picker.ts +0 -678
- package/src/components/ScrollView.ts +0 -725
- package/src/components/Section.ts +0 -472
- package/src/components/Show.ts +0 -205
- package/src/components/Spacer.ts +0 -93
- package/src/components/Text.ts +0 -447
- package/src/components/Toggle.ts +0 -700
- package/src/components/index.ts +0 -231
- package/src/components/wrapper.ts +0 -828
- package/src/concatenation/concatenatable.ts +0 -211
- package/src/concatenation/concatenated-component.ts +0 -471
- package/src/concatenation/index.ts +0 -41
- package/src/concatenation/styles.css +0 -120
- package/src/concatenation/text-optimizer.ts +0 -440
- package/src/concatenation/types.ts +0 -116
- package/src/constants/README.md +0 -339
- package/src/constants/__tests__/frame-utils.test.ts +0 -276
- package/src/constants/__tests__/layout.test.ts +0 -215
- package/src/constants/frame-utils.ts +0 -174
- package/src/constants/index.ts +0 -8
- package/src/constants/layout.ts +0 -120
- package/src/css-classes/component-base.ts +0 -117
- package/src/css-classes/css-class-manager.ts +0 -372
- package/src/css-classes/dom-integration.ts +0 -162
- package/src/css-classes/enhanced-renderer.ts +0 -166
- package/src/css-classes/index.ts +0 -45
- package/src/css-classes/types.ts +0 -73
- package/src/css-classes/utilities.ts +0 -175
- package/src/debug/index.ts +0 -267
- package/src/developer-experience/enhanced-errors.ts +0 -556
- package/src/developer-experience/enhanced-types.ts +0 -427
- package/src/developer-experience/index.ts +0 -220
- package/src/globals.d.ts +0 -43
- package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
- package/src/gradients/__tests__/background-modifier.test.ts +0 -81
- package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
- package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
- package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
- package/src/gradients/__tests__/phase4-features.test.ts +0 -386
- package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
- package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
- package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
- package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
- package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
- package/src/gradients/css-generator.ts +0 -158
- package/src/gradients/examples.ts +0 -632
- package/src/gradients/gradient-asset.ts +0 -30
- package/src/gradients/index.ts +0 -85
- package/src/gradients/performance.ts +0 -521
- package/src/gradients/presets.ts +0 -422
- package/src/gradients/reactive.ts +0 -470
- package/src/gradients/state-gradient-asset.ts +0 -179
- package/src/gradients/types.ts +0 -148
- package/src/gradients/utils.ts +0 -579
- package/src/gradients/validation.ts +0 -489
- package/src/index.ts +0 -168
- package/src/lifecycle/hooks.ts +0 -332
- package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
- package/src/modifiers/__tests__/as-html.test.ts +0 -437
- package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
- package/src/modifiers/__tests__/border.test.ts +0 -371
- package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
- package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
- package/src/modifiers/as-html-validator.ts +0 -68
- package/src/modifiers/as-html.ts +0 -216
- package/src/modifiers/attributes.ts +0 -574
- package/src/modifiers/backdrop.ts +0 -290
- package/src/modifiers/background.ts +0 -165
- package/src/modifiers/base.ts +0 -1815
- package/src/modifiers/basic-sanitizer.ts +0 -227
- package/src/modifiers/border.ts +0 -574
- package/src/modifiers/builder.ts +0 -1747
- package/src/modifiers/core.ts +0 -521
- package/src/modifiers/css.ts +0 -148
- package/src/modifiers/effects.ts +0 -412
- package/src/modifiers/elements.ts +0 -541
- package/src/modifiers/filters.ts +0 -501
- package/src/modifiers/flexbox.ts +0 -180
- package/src/modifiers/font.ts +0 -149
- package/src/modifiers/grid.ts +0 -238
- package/src/modifiers/index.ts +0 -481
- package/src/modifiers/margin.ts +0 -218
- package/src/modifiers/padding.ts +0 -318
- package/src/modifiers/registry.ts +0 -444
- package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
- package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
- package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
- package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
- package/src/modifiers/responsive/advanced-utilities.ts +0 -562
- package/src/modifiers/responsive/breakpoints.ts +0 -330
- package/src/modifiers/responsive/css-generator.ts +0 -432
- package/src/modifiers/responsive/dev-tools.ts +0 -650
- package/src/modifiers/responsive/index.ts +0 -119
- package/src/modifiers/responsive/layout-patterns.ts +0 -592
- package/src/modifiers/responsive/performance.ts +0 -385
- package/src/modifiers/responsive/responsive-builder.ts +0 -620
- package/src/modifiers/responsive/responsive-modifier.ts +0 -410
- package/src/modifiers/responsive/types.ts +0 -226
- package/src/modifiers/responsive/utilities.ts +0 -478
- package/src/modifiers/scroll.ts +0 -297
- package/src/modifiers/shadows.ts +0 -321
- package/src/modifiers/size.ts +0 -208
- package/src/modifiers/text.ts +0 -416
- package/src/modifiers/transformations.ts +0 -640
- package/src/modifiers/transitions.ts +0 -218
- package/src/modifiers/types.ts +0 -889
- package/src/modifiers/typography.ts +0 -341
- package/src/modifiers/utility.ts +0 -209
- package/src/modifiers/utils.ts +0 -413
- package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
- package/src/plugins/component-loader-registry.ts +0 -371
- package/src/plugins/index.ts +0 -61
- package/src/plugins/legacy-adapter.ts +0 -84
- package/src/plugins/simplified-component-registry.ts +0 -130
- package/src/plugins/simplified-error-handler.ts +0 -372
- package/src/plugins/simplified-index.ts +0 -61
- package/src/plugins/simplified-lazy-loader.ts +0 -242
- package/src/plugins/simplified-plugin-manager.ts +0 -93
- package/src/plugins/simplified-tachui-instance.ts +0 -142
- package/src/plugins/simplified-types.ts +0 -79
- package/src/plugins/simplified-utils.ts +0 -118
- package/src/reactive/cleanup.ts +0 -241
- package/src/reactive/computed.ts +0 -281
- package/src/reactive/context.ts +0 -287
- package/src/reactive/effect.ts +0 -194
- package/src/reactive/enhanced-effect.ts +0 -318
- package/src/reactive/enhanced-signal.ts +0 -227
- package/src/reactive/equality.ts +0 -188
- package/src/reactive/globals.d.ts +0 -5
- package/src/reactive/index.ts +0 -150
- package/src/reactive/migration.ts +0 -335
- package/src/reactive/ownership.ts +0 -182
- package/src/reactive/scheduler.ts +0 -300
- package/src/reactive/signal.ts +0 -201
- package/src/reactive/theme.ts +0 -49
- package/src/reactive/types.ts +0 -103
- package/src/reactive/unified-scheduler.ts +0 -357
- package/src/runtime/component-context.ts +0 -343
- package/src/runtime/component.ts +0 -499
- package/src/runtime/context.ts +0 -527
- package/src/runtime/dev-tools.ts +0 -752
- package/src/runtime/development-warnings.ts +0 -114
- package/src/runtime/dom-bridge.ts +0 -570
- package/src/runtime/element-override.ts +0 -282
- package/src/runtime/error-boundary.ts +0 -955
- package/src/runtime/error-recovery.ts +0 -638
- package/src/runtime/error-reporting.ts +0 -808
- package/src/runtime/error-utils.ts +0 -698
- package/src/runtime/index.ts +0 -202
- package/src/runtime/lazy-component.ts +0 -268
- package/src/runtime/lifecycle.ts +0 -10
- package/src/runtime/mounting.ts +0 -17
- package/src/runtime/optimization.ts +0 -13
- package/src/runtime/performance.ts +0 -693
- package/src/runtime/props.ts +0 -434
- package/src/runtime/refs.ts +0 -13
- package/src/runtime/renderer.ts +0 -674
- package/src/runtime/semantic-role-manager.ts +0 -140
- package/src/runtime/types.ts +0 -282
- package/src/state/binding.ts +0 -381
- package/src/state/environment-object.ts +0 -444
- package/src/state/environment.ts +0 -351
- package/src/state/index.ts +0 -179
- package/src/state/observed-object.ts +0 -405
- package/src/state/state-manager.ts +0 -366
- package/src/state/state.ts +0 -339
- package/src/state/types.ts +0 -192
- package/src/sui-compat.ts +0 -163
- package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
- package/src/validation/advanced-debugging.ts +0 -860
- package/src/validation/build-time/detection.ts +0 -373
- package/src/validation/build-time/index.ts +0 -222
- package/src/validation/build-time/plugins.ts +0 -515
- package/src/validation/build-time/rules.ts +0 -624
- package/src/validation/build-time/transformer.ts +0 -372
- package/src/validation/build-time/types.ts +0 -232
- package/src/validation/comprehensive.ts +0 -1272
- package/src/validation/debug-tools.ts +0 -724
- package/src/validation/developer-experience.ts +0 -712
- package/src/validation/documentation-integration.ts +0 -835
- package/src/validation/enhanced-runtime.ts +0 -765
- package/src/validation/error-reporting.ts +0 -587
- package/src/validation/ide-integration.ts +0 -845
- package/src/validation/index.ts +0 -353
- package/src/validation/lifecycle-validation.ts +0 -636
- package/src/validation/performance-optimizer.ts +0 -599
- package/src/validation/plugin-registration.ts +0 -249
- package/src/validation/production-bypass.ts +0 -466
- package/src/validation/simple.ts +0 -465
- package/src/viewport/adapters/web-adapter.ts +0 -1385
- package/src/viewport/components.ts +0 -505
- package/src/viewport/environment.ts +0 -173
- package/src/viewport/index.ts +0 -290
- package/src/viewport/platform-detection.ts +0 -431
- package/src/viewport/types.ts +0 -371
- package/src/viewport/viewport-manager.ts +0 -979
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binding.cjs","sources":["../../src/state/binding.ts"],"sourcesContent":["/**\n * @Binding Property Wrapper Implementation\n *\n * Implements SwiftUI's @Binding property wrapper for two-way data binding.\n * Provides reactive binding with automatic component re-rendering on changes.\n */\n\nimport type { Accessor, Setter } from '../reactive/types'\nimport { getCurrentComponentContext } from '../runtime/component-context'\nimport type { ComponentContext } from '../runtime/types'\nimport type * as Types from './types'\nimport type { Binding } from './types'\n\n/**\n * Enhanced binding implementation with proper reactive updates\n */\nexport class BindingImpl<T> implements Binding<T> {\n private _get: Accessor<T>\n private _set: Setter<T>\n private _options: { name?: string }\n private _componentContext: ComponentContext\n private _propertyName: string\n\n constructor(\n get: Accessor<T>,\n set: Setter<T>,\n componentContext: ComponentContext,\n propertyName: string,\n options: { name?: string } = {}\n ) {\n this._get = get\n this._set = set\n this._componentContext = componentContext\n this._propertyName = propertyName\n this._options = options\n\n // Store binding in component context for lifecycle management\n componentContext.setBinding(propertyName, this)\n }\n\n get wrappedValue(): T {\n return this._get()\n }\n\n set wrappedValue(value: T) {\n this._set(value)\n // Trigger component re-render by updating component context\n this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now())\n }\n\n get projectedValue(): Binding<T> {\n return this\n }\n\n get(): T {\n return this._get()\n }\n\n set(value: T | ((prev: T) => T)): void {\n this._set(value as any)\n // Trigger component re-render\n this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now())\n }\n\n /**\n * Create a derived binding with transformation\n */\n map<U>(getter: (value: T) => U, setter: (newValue: U, oldValue: T) => T): Binding<U> {\n const mappedGet = () => getter(this._get())\n const mappedSet = (value: U | ((prev: U) => U)) => {\n const currentValue = this._get()\n const currentMapped = getter(currentValue)\n const newMapped =\n typeof value === 'function' ? (value as (prev: U) => U)(currentMapped) : value\n const newOriginal = setter(newMapped, currentValue)\n this._set(newOriginal as any)\n // Trigger re-render\n this._componentContext.setState(`_binding_${this._propertyName}_mapped_trigger`, Date.now())\n }\n\n return new BindingImpl(\n mappedGet as Accessor<U>,\n mappedSet as Setter<U>,\n this._componentContext,\n `${this._propertyName}_mapped`,\n { name: `${this._options.name || 'binding'}_mapped` }\n )\n }\n\n /**\n * Create a constant binding (read-only)\n */\n constant(): Binding<T> {\n const readOnlySet: Setter<T> = () => {\n console.warn('Attempted to set value on constant binding')\n return this._get()\n }\n\n return new BindingImpl(\n this._get,\n readOnlySet,\n this._componentContext,\n `${this._propertyName}_constant`,\n { name: `${this._options.name || 'binding'}_constant` }\n )\n }\n\n /**\n * Create a binding with validation\n */\n withValidation(validator: (value: T) => boolean, errorMessage?: string): Binding<T> {\n const validatingSet: Setter<T> = (value: T | ((prev: T) => T)) => {\n const newValue = typeof value === 'function' ? (value as (prev: T) => T)(this._get()) : value\n\n if (validator(newValue)) {\n this._set(newValue as any)\n // Trigger re-render\n this._componentContext.setState(\n `_binding_${this._propertyName}_validated_trigger`,\n Date.now()\n )\n } else {\n console.warn(errorMessage || `Validation failed for binding ${this._propertyName}`)\n }\n\n return newValue\n }\n\n return new BindingImpl(\n this._get,\n validatingSet,\n this._componentContext,\n `${this._propertyName}_validated`,\n { name: `${this._options.name || 'binding'}_validated` }\n )\n }\n\n /**\n * Create a debounced binding\n */\n debounced(delay: number = 300): Binding<T> {\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const debouncedSet: Setter<T> = (value: T | ((prev: T) => T)) => {\n const newValue = typeof value === 'function' ? (value as (prev: T) => T)(this._get()) : value\n\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n this._set(newValue as any)\n // Trigger re-render\n this._componentContext.setState(\n `_binding_${this._propertyName}_debounced_trigger`,\n Date.now()\n )\n timeoutId = null\n }, delay)\n\n return newValue\n }\n\n return new BindingImpl(\n this._get,\n debouncedSet,\n this._componentContext,\n `${this._propertyName}_debounced`,\n { name: `${this._options.name || 'binding'}_debounced` }\n )\n }\n}\n\n/**\n * Create a binding from external getter/setter functions\n */\nexport function createBinding<T>(\n get: Accessor<T>,\n set: Setter<T>,\n options: { name?: string } = {}\n): Binding<T> {\n const componentContext = getCurrentComponentContext()\n const propertyName = getCallerPropertyName() || 'binding'\n\n return new BindingImpl(get, set, componentContext, propertyName, options)\n}\n\n/**\n * Create a binding from a State property wrapper\n */\nexport function createStateBinding<T>(\n state: Types.State<T>,\n options: { name?: string } = {}\n): Binding<T> {\n // Cast to implementation type to access internal methods\n const stateImpl = state as any\n\n const setter: Setter<T> = (value: T | ((prev: T) => T)) => {\n if (typeof value === 'function') {\n state.wrappedValue = (value as (prev: T) => T)(state.wrappedValue)\n } else {\n state.wrappedValue = value\n }\n return state.wrappedValue\n }\n\n return createBinding(() => state.wrappedValue, setter, {\n ...options,\n name: options.name || `${stateImpl.metadata?.propertyName || 'state'}Binding`,\n })\n}\n\n/**\n * Create a binding to a specific property of an object\n */\nexport function createPropertyBinding<T, K extends keyof T>(\n object: Accessor<T>,\n setObject: Setter<T>,\n property: K,\n options: { name?: string } = {}\n): Binding<T[K]> {\n const get = () => object()[property]\n const set = (value: T[K] | ((prev: T[K]) => T[K])) => {\n const currentObject = object()\n const newValue =\n typeof value === 'function' ? (value as (prev: T[K]) => T[K])(currentObject[property]) : value\n const newObject = { ...currentObject, [property]: newValue }\n setObject(newObject as any)\n }\n\n return createBinding(get, set as Setter<T[K]>, {\n ...options,\n name: options.name || `${String(property)}PropertyBinding`,\n })\n}\n\n/**\n * Create a two-way binding between two state sources\n */\nexport function createTwoWayBinding<T>(\n source1: Types.State<T>,\n source2: Types.State<T>,\n options: {\n name?: string\n transform?: (value: T) => T\n reverseTransform?: (value: T) => T\n } = {}\n): [Binding<T>, Binding<T>] {\n const transform = options.transform || ((v: T) => v)\n const reverseTransform = options.reverseTransform || options.transform || ((v: T) => v)\n\n const binding1 = createBinding(\n () => transform(source1.wrappedValue),\n (value: T | ((prev: T) => T)) => {\n const newValue =\n typeof value === 'function' ? (value as (prev: T) => T)(source1.wrappedValue) : value\n const transformedValue = reverseTransform(newValue)\n source1.wrappedValue = transformedValue\n source2.wrappedValue = transformedValue\n return transformedValue\n },\n { name: `${options.name || 'twoWay'}Binding1` }\n )\n\n const binding2 = createBinding(\n () => transform(source2.wrappedValue),\n (value: T | ((prev: T) => T)) => {\n const newValue =\n typeof value === 'function' ? (value as (prev: T) => T)(source2.wrappedValue) : value\n const transformedValue = reverseTransform(newValue)\n source1.wrappedValue = transformedValue\n source2.wrappedValue = transformedValue\n return transformedValue\n },\n { name: `${options.name || 'twoWay'}Binding2` }\n )\n\n return [binding1, binding2]\n}\n\n/**\n * Helper to get the property name of the caller (used for metadata)\n */\nfunction getCallerPropertyName(): string | null {\n try {\n const stack = new Error().stack\n if (stack) {\n // Parse stack to get property name - this is a fallback for debugging\n const match = stack.match(/at (\\w+)\\./)?.[1]\n return match || null\n }\n } catch {\n // Ignore errors in stack parsing\n }\n return null\n}\n\n/**\n * Type guard for Binding property wrappers\n */\nexport function isBinding<T>(value: any): value is Binding<T> {\n return (\n value &&\n typeof value === 'object' &&\n 'get' in value &&\n 'set' in value &&\n 'wrappedValue' in value &&\n value instanceof BindingImpl\n )\n}\n\n/**\n * Utility functions for binding management\n */\nexport const BindingUtils = {\n /**\n * Check if a binding is read-only\n */\n isReadOnly<T>(binding: Binding<T>): boolean {\n if (binding instanceof BindingImpl) {\n // Check if it's a constant binding by testing the setter\n try {\n const originalValue = binding.get()\n const consoleWarn = console.warn\n let warningCalled = false\n console.warn = (...args) => {\n if (args[0] === 'Attempted to set value on constant binding') {\n warningCalled = true\n }\n }\n\n binding.set(originalValue)\n console.warn = consoleWarn\n\n return warningCalled\n } catch {\n return true\n }\n }\n return false\n },\n\n /**\n * Create a computed binding from multiple sources\n */\n computed<T, Args extends readonly any[]>(\n sources: { [K in keyof Args]: Binding<Args[K]> },\n compute: (...values: Args) => T,\n options: { name?: string } = {}\n ): Binding<T> {\n const get = () => {\n const values = sources.map((source) => source.get()) as any as Args\n return compute(...values)\n }\n\n const set = () => {\n console.warn('Cannot set computed binding value')\n return get()\n }\n\n return createBinding(get, set, options)\n },\n\n /**\n * Chain multiple bindings together\n */\n chain<T>(bindings: Binding<T>[], options: { name?: string } = {}): Binding<T[]> {\n const get = () => bindings.map((binding) => binding.get())\n const set = (values: T[] | ((prev: T[]) => T[])) => {\n const newValues = typeof values === 'function' ? values(get()) : values\n bindings.forEach((binding, index) => {\n if (index < newValues.length) {\n binding.set(newValues[index])\n }\n })\n return newValues\n }\n\n return createBinding(get, set as Setter<T[]>, options)\n },\n}\n"],"names":["BindingImpl","get","set","componentContext","propertyName","options","__publicField","value","getter","setter","mappedGet","mappedSet","currentValue","currentMapped","newMapped","newOriginal","readOnlySet","validator","errorMessage","validatingSet","newValue","delay","timeoutId","debouncedSet","createBinding","getCurrentComponentContext","getCallerPropertyName","stack","isBinding","BindingUtils","binding","originalValue","consoleWarn","warningCalled","args","sources","compute","values","source","bindings","newValues","index"],"mappings":"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"}
|
package/dist/state/binding.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { getCurrentComponentContext as u } from "../runtime/component-context.js";
|
|
2
|
-
var m = Object.defineProperty, g = (e, t, n) => t in e ? m(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, c = (e, t, n) => g(e, typeof t != "symbol" ? t + "" : t, n);
|
|
3
|
-
class s {
|
|
4
|
-
constructor(t, n, r, o, i = {}) {
|
|
5
|
-
c(this, "_get"), c(this, "_set"), c(this, "_options"), c(this, "_componentContext"), c(this, "_propertyName"), this._get = t, this._set = n, this._componentContext = r, this._propertyName = o, this._options = i, r.setBinding(o, this);
|
|
6
|
-
}
|
|
7
|
-
get wrappedValue() {
|
|
8
|
-
return this._get();
|
|
9
|
-
}
|
|
10
|
-
set wrappedValue(t) {
|
|
11
|
-
this._set(t), this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now());
|
|
12
|
-
}
|
|
13
|
-
get projectedValue() {
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
get() {
|
|
17
|
-
return this._get();
|
|
18
|
-
}
|
|
19
|
-
set(t) {
|
|
20
|
-
this._set(t), this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now());
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Create a derived binding with transformation
|
|
24
|
-
*/
|
|
25
|
-
map(t, n) {
|
|
26
|
-
const r = () => t(this._get()), o = (i) => {
|
|
27
|
-
const a = this._get(), p = t(a), h = typeof i == "function" ? i(p) : i, d = n(h, a);
|
|
28
|
-
this._set(d), this._componentContext.setState(`_binding_${this._propertyName}_mapped_trigger`, Date.now());
|
|
29
|
-
};
|
|
30
|
-
return new s(
|
|
31
|
-
r,
|
|
32
|
-
o,
|
|
33
|
-
this._componentContext,
|
|
34
|
-
`${this._propertyName}_mapped`,
|
|
35
|
-
{ name: `${this._options.name || "binding"}_mapped` }
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Create a constant binding (read-only)
|
|
40
|
-
*/
|
|
41
|
-
constant() {
|
|
42
|
-
const t = () => (console.warn("Attempted to set value on constant binding"), this._get());
|
|
43
|
-
return new s(
|
|
44
|
-
this._get,
|
|
45
|
-
t,
|
|
46
|
-
this._componentContext,
|
|
47
|
-
`${this._propertyName}_constant`,
|
|
48
|
-
{ name: `${this._options.name || "binding"}_constant` }
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Create a binding with validation
|
|
53
|
-
*/
|
|
54
|
-
withValidation(t, n) {
|
|
55
|
-
const r = (o) => {
|
|
56
|
-
const i = typeof o == "function" ? o(this._get()) : o;
|
|
57
|
-
return t(i) ? (this._set(i), this._componentContext.setState(
|
|
58
|
-
`_binding_${this._propertyName}_validated_trigger`,
|
|
59
|
-
Date.now()
|
|
60
|
-
)) : console.warn(n || `Validation failed for binding ${this._propertyName}`), i;
|
|
61
|
-
};
|
|
62
|
-
return new s(
|
|
63
|
-
this._get,
|
|
64
|
-
r,
|
|
65
|
-
this._componentContext,
|
|
66
|
-
`${this._propertyName}_validated`,
|
|
67
|
-
{ name: `${this._options.name || "binding"}_validated` }
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Create a debounced binding
|
|
72
|
-
*/
|
|
73
|
-
debounced(t = 300) {
|
|
74
|
-
let n = null;
|
|
75
|
-
const r = (o) => {
|
|
76
|
-
const i = typeof o == "function" ? o(this._get()) : o;
|
|
77
|
-
return n && clearTimeout(n), n = setTimeout(() => {
|
|
78
|
-
this._set(i), this._componentContext.setState(
|
|
79
|
-
`_binding_${this._propertyName}_debounced_trigger`,
|
|
80
|
-
Date.now()
|
|
81
|
-
), n = null;
|
|
82
|
-
}, t), i;
|
|
83
|
-
};
|
|
84
|
-
return new s(
|
|
85
|
-
this._get,
|
|
86
|
-
r,
|
|
87
|
-
this._componentContext,
|
|
88
|
-
`${this._propertyName}_debounced`,
|
|
89
|
-
{ name: `${this._options.name || "binding"}_debounced` }
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
function _(e, t, n = {}) {
|
|
94
|
-
const r = u(), o = l() || "binding";
|
|
95
|
-
return new s(e, t, r, o, n);
|
|
96
|
-
}
|
|
97
|
-
function l() {
|
|
98
|
-
try {
|
|
99
|
-
const e = new Error().stack;
|
|
100
|
-
if (e)
|
|
101
|
-
return e.match(/at (\w+)\./)?.[1] || null;
|
|
102
|
-
} catch {
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
function w(e) {
|
|
107
|
-
return e && typeof e == "object" && "get" in e && "set" in e && "wrappedValue" in e && e instanceof s;
|
|
108
|
-
}
|
|
109
|
-
const b = {
|
|
110
|
-
/**
|
|
111
|
-
* Check if a binding is read-only
|
|
112
|
-
*/
|
|
113
|
-
isReadOnly(e) {
|
|
114
|
-
if (e instanceof s)
|
|
115
|
-
try {
|
|
116
|
-
const t = e.get(), n = console.warn;
|
|
117
|
-
let r = !1;
|
|
118
|
-
return console.warn = (...o) => {
|
|
119
|
-
o[0] === "Attempted to set value on constant binding" && (r = !0);
|
|
120
|
-
}, e.set(t), console.warn = n, r;
|
|
121
|
-
} catch {
|
|
122
|
-
return !0;
|
|
123
|
-
}
|
|
124
|
-
return !1;
|
|
125
|
-
},
|
|
126
|
-
/**
|
|
127
|
-
* Create a computed binding from multiple sources
|
|
128
|
-
*/
|
|
129
|
-
computed(e, t, n = {}) {
|
|
130
|
-
const r = () => {
|
|
131
|
-
const i = e.map((a) => a.get());
|
|
132
|
-
return t(...i);
|
|
133
|
-
};
|
|
134
|
-
return _(r, () => (console.warn("Cannot set computed binding value"), r()), n);
|
|
135
|
-
},
|
|
136
|
-
/**
|
|
137
|
-
* Chain multiple bindings together
|
|
138
|
-
*/
|
|
139
|
-
chain(e, t = {}) {
|
|
140
|
-
const n = () => e.map((o) => o.get());
|
|
141
|
-
return _(n, (o) => {
|
|
142
|
-
const i = typeof o == "function" ? o(n()) : o;
|
|
143
|
-
return e.forEach((a, p) => {
|
|
144
|
-
p < i.length && a.set(i[p]);
|
|
145
|
-
}), i;
|
|
146
|
-
}, t);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
export {
|
|
150
|
-
s as BindingImpl,
|
|
151
|
-
b as BindingUtils,
|
|
152
|
-
_ as createBinding,
|
|
153
|
-
w as isBinding
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=binding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sources":["../../src/state/binding.ts"],"sourcesContent":["/**\n * @Binding Property Wrapper Implementation\n *\n * Implements SwiftUI's @Binding property wrapper for two-way data binding.\n * Provides reactive binding with automatic component re-rendering on changes.\n */\n\nimport type { Accessor, Setter } from '../reactive/types'\nimport { getCurrentComponentContext } from '../runtime/component-context'\nimport type { ComponentContext } from '../runtime/types'\nimport type * as Types from './types'\nimport type { Binding } from './types'\n\n/**\n * Enhanced binding implementation with proper reactive updates\n */\nexport class BindingImpl<T> implements Binding<T> {\n private _get: Accessor<T>\n private _set: Setter<T>\n private _options: { name?: string }\n private _componentContext: ComponentContext\n private _propertyName: string\n\n constructor(\n get: Accessor<T>,\n set: Setter<T>,\n componentContext: ComponentContext,\n propertyName: string,\n options: { name?: string } = {}\n ) {\n this._get = get\n this._set = set\n this._componentContext = componentContext\n this._propertyName = propertyName\n this._options = options\n\n // Store binding in component context for lifecycle management\n componentContext.setBinding(propertyName, this)\n }\n\n get wrappedValue(): T {\n return this._get()\n }\n\n set wrappedValue(value: T) {\n this._set(value)\n // Trigger component re-render by updating component context\n this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now())\n }\n\n get projectedValue(): Binding<T> {\n return this\n }\n\n get(): T {\n return this._get()\n }\n\n set(value: T | ((prev: T) => T)): void {\n this._set(value as any)\n // Trigger component re-render\n this._componentContext.setState(`_binding_${this._propertyName}_trigger`, Date.now())\n }\n\n /**\n * Create a derived binding with transformation\n */\n map<U>(getter: (value: T) => U, setter: (newValue: U, oldValue: T) => T): Binding<U> {\n const mappedGet = () => getter(this._get())\n const mappedSet = (value: U | ((prev: U) => U)) => {\n const currentValue = this._get()\n const currentMapped = getter(currentValue)\n const newMapped =\n typeof value === 'function' ? (value as (prev: U) => U)(currentMapped) : value\n const newOriginal = setter(newMapped, currentValue)\n this._set(newOriginal as any)\n // Trigger re-render\n this._componentContext.setState(`_binding_${this._propertyName}_mapped_trigger`, Date.now())\n }\n\n return new BindingImpl(\n mappedGet as Accessor<U>,\n mappedSet as Setter<U>,\n this._componentContext,\n `${this._propertyName}_mapped`,\n { name: `${this._options.name || 'binding'}_mapped` }\n )\n }\n\n /**\n * Create a constant binding (read-only)\n */\n constant(): Binding<T> {\n const readOnlySet: Setter<T> = () => {\n console.warn('Attempted to set value on constant binding')\n return this._get()\n }\n\n return new BindingImpl(\n this._get,\n readOnlySet,\n this._componentContext,\n `${this._propertyName}_constant`,\n { name: `${this._options.name || 'binding'}_constant` }\n )\n }\n\n /**\n * Create a binding with validation\n */\n withValidation(validator: (value: T) => boolean, errorMessage?: string): Binding<T> {\n const validatingSet: Setter<T> = (value: T | ((prev: T) => T)) => {\n const newValue = typeof value === 'function' ? (value as (prev: T) => T)(this._get()) : value\n\n if (validator(newValue)) {\n this._set(newValue as any)\n // Trigger re-render\n this._componentContext.setState(\n `_binding_${this._propertyName}_validated_trigger`,\n Date.now()\n )\n } else {\n console.warn(errorMessage || `Validation failed for binding ${this._propertyName}`)\n }\n\n return newValue\n }\n\n return new BindingImpl(\n this._get,\n validatingSet,\n this._componentContext,\n `${this._propertyName}_validated`,\n { name: `${this._options.name || 'binding'}_validated` }\n )\n }\n\n /**\n * Create a debounced binding\n */\n debounced(delay: number = 300): Binding<T> {\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const debouncedSet: Setter<T> = (value: T | ((prev: T) => T)) => {\n const newValue = typeof value === 'function' ? (value as (prev: T) => T)(this._get()) : value\n\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n this._set(newValue as any)\n // Trigger re-render\n this._componentContext.setState(\n `_binding_${this._propertyName}_debounced_trigger`,\n Date.now()\n )\n timeoutId = null\n }, delay)\n\n return newValue\n }\n\n return new BindingImpl(\n this._get,\n debouncedSet,\n this._componentContext,\n `${this._propertyName}_debounced`,\n { name: `${this._options.name || 'binding'}_debounced` }\n )\n }\n}\n\n/**\n * Create a binding from external getter/setter functions\n */\nexport function createBinding<T>(\n get: Accessor<T>,\n set: Setter<T>,\n options: { name?: string } = {}\n): Binding<T> {\n const componentContext = getCurrentComponentContext()\n const propertyName = getCallerPropertyName() || 'binding'\n\n return new BindingImpl(get, set, componentContext, propertyName, options)\n}\n\n/**\n * Create a binding from a State property wrapper\n */\nexport function createStateBinding<T>(\n state: Types.State<T>,\n options: { name?: string } = {}\n): Binding<T> {\n // Cast to implementation type to access internal methods\n const stateImpl = state as any\n\n const setter: Setter<T> = (value: T | ((prev: T) => T)) => {\n if (typeof value === 'function') {\n state.wrappedValue = (value as (prev: T) => T)(state.wrappedValue)\n } else {\n state.wrappedValue = value\n }\n return state.wrappedValue\n }\n\n return createBinding(() => state.wrappedValue, setter, {\n ...options,\n name: options.name || `${stateImpl.metadata?.propertyName || 'state'}Binding`,\n })\n}\n\n/**\n * Create a binding to a specific property of an object\n */\nexport function createPropertyBinding<T, K extends keyof T>(\n object: Accessor<T>,\n setObject: Setter<T>,\n property: K,\n options: { name?: string } = {}\n): Binding<T[K]> {\n const get = () => object()[property]\n const set = (value: T[K] | ((prev: T[K]) => T[K])) => {\n const currentObject = object()\n const newValue =\n typeof value === 'function' ? (value as (prev: T[K]) => T[K])(currentObject[property]) : value\n const newObject = { ...currentObject, [property]: newValue }\n setObject(newObject as any)\n }\n\n return createBinding(get, set as Setter<T[K]>, {\n ...options,\n name: options.name || `${String(property)}PropertyBinding`,\n })\n}\n\n/**\n * Create a two-way binding between two state sources\n */\nexport function createTwoWayBinding<T>(\n source1: Types.State<T>,\n source2: Types.State<T>,\n options: {\n name?: string\n transform?: (value: T) => T\n reverseTransform?: (value: T) => T\n } = {}\n): [Binding<T>, Binding<T>] {\n const transform = options.transform || ((v: T) => v)\n const reverseTransform = options.reverseTransform || options.transform || ((v: T) => v)\n\n const binding1 = createBinding(\n () => transform(source1.wrappedValue),\n (value: T | ((prev: T) => T)) => {\n const newValue =\n typeof value === 'function' ? (value as (prev: T) => T)(source1.wrappedValue) : value\n const transformedValue = reverseTransform(newValue)\n source1.wrappedValue = transformedValue\n source2.wrappedValue = transformedValue\n return transformedValue\n },\n { name: `${options.name || 'twoWay'}Binding1` }\n )\n\n const binding2 = createBinding(\n () => transform(source2.wrappedValue),\n (value: T | ((prev: T) => T)) => {\n const newValue =\n typeof value === 'function' ? (value as (prev: T) => T)(source2.wrappedValue) : value\n const transformedValue = reverseTransform(newValue)\n source1.wrappedValue = transformedValue\n source2.wrappedValue = transformedValue\n return transformedValue\n },\n { name: `${options.name || 'twoWay'}Binding2` }\n )\n\n return [binding1, binding2]\n}\n\n/**\n * Helper to get the property name of the caller (used for metadata)\n */\nfunction getCallerPropertyName(): string | null {\n try {\n const stack = new Error().stack\n if (stack) {\n // Parse stack to get property name - this is a fallback for debugging\n const match = stack.match(/at (\\w+)\\./)?.[1]\n return match || null\n }\n } catch {\n // Ignore errors in stack parsing\n }\n return null\n}\n\n/**\n * Type guard for Binding property wrappers\n */\nexport function isBinding<T>(value: any): value is Binding<T> {\n return (\n value &&\n typeof value === 'object' &&\n 'get' in value &&\n 'set' in value &&\n 'wrappedValue' in value &&\n value instanceof BindingImpl\n )\n}\n\n/**\n * Utility functions for binding management\n */\nexport const BindingUtils = {\n /**\n * Check if a binding is read-only\n */\n isReadOnly<T>(binding: Binding<T>): boolean {\n if (binding instanceof BindingImpl) {\n // Check if it's a constant binding by testing the setter\n try {\n const originalValue = binding.get()\n const consoleWarn = console.warn\n let warningCalled = false\n console.warn = (...args) => {\n if (args[0] === 'Attempted to set value on constant binding') {\n warningCalled = true\n }\n }\n\n binding.set(originalValue)\n console.warn = consoleWarn\n\n return warningCalled\n } catch {\n return true\n }\n }\n return false\n },\n\n /**\n * Create a computed binding from multiple sources\n */\n computed<T, Args extends readonly any[]>(\n sources: { [K in keyof Args]: Binding<Args[K]> },\n compute: (...values: Args) => T,\n options: { name?: string } = {}\n ): Binding<T> {\n const get = () => {\n const values = sources.map((source) => source.get()) as any as Args\n return compute(...values)\n }\n\n const set = () => {\n console.warn('Cannot set computed binding value')\n return get()\n }\n\n return createBinding(get, set, options)\n },\n\n /**\n * Chain multiple bindings together\n */\n chain<T>(bindings: Binding<T>[], options: { name?: string } = {}): Binding<T[]> {\n const get = () => bindings.map((binding) => binding.get())\n const set = (values: T[] | ((prev: T[]) => T[])) => {\n const newValues = typeof values === 'function' ? values(get()) : values\n bindings.forEach((binding, index) => {\n if (index < newValues.length) {\n binding.set(newValues[index])\n }\n })\n return newValues\n }\n\n return createBinding(get, set as Setter<T[]>, options)\n },\n}\n"],"names":["BindingImpl","get","set","componentContext","propertyName","options","__publicField","value","getter","setter","mappedGet","mappedSet","currentValue","currentMapped","newMapped","newOriginal","readOnlySet","validator","errorMessage","validatingSet","newValue","delay","timeoutId","debouncedSet","createBinding","getCurrentComponentContext","getCallerPropertyName","stack","isBinding","BindingUtils","binding","originalValue","consoleWarn","warningCalled","args","sources","compute","values","source","bindings","newValues","index"],"mappings":";;AAgBO,MAAMA,EAAqC;AAAA,EAOhD,YACEC,GACAC,GACAC,GACAC,GACAC,IAA6B,IAC7B;AAZF,IAAAC,EAAA,MAAQ,MAAA,GACRA,EAAA,MAAQ,MAAA,GACRA,EAAA,MAAQ,UAAA,GACRA,EAAA,MAAQ,mBAAA,GACRA,EAAA,MAAQ,eAAA,GASN,KAAK,OAAOL,GACZ,KAAK,OAAOC,GACZ,KAAK,oBAAoBC,GACzB,KAAK,gBAAgBC,GACrB,KAAK,WAAWC,GAGhBF,EAAiB,WAAWC,GAAc,IAAI;AAAA,EAChD;AAAA,EAEA,IAAI,eAAkB;AACpB,WAAO,KAAK,KAAA;AAAA,EACd;AAAA,EAEA,IAAI,aAAaG,GAAU;AACzB,SAAK,KAAKA,CAAK,GAEf,KAAK,kBAAkB,SAAS,YAAY,KAAK,aAAa,YAAY,KAAK,KAAK;AAAA,EACtF;AAAA,EAEA,IAAI,iBAA6B;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,MAAS;AACP,WAAO,KAAK,KAAA;AAAA,EACd;AAAA,EAEA,IAAIA,GAAmC;AACrC,SAAK,KAAKA,CAAY,GAEtB,KAAK,kBAAkB,SAAS,YAAY,KAAK,aAAa,YAAY,KAAK,KAAK;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAOC,GAAyBC,GAAqD;AACnF,UAAMC,IAAY,MAAMF,EAAO,KAAK,MAAM,GACpCG,IAAY,CAACJ,MAAgC;AACjD,YAAMK,IAAe,KAAK,KAAA,GACpBC,IAAgBL,EAAOI,CAAY,GACnCE,IACJ,OAAOP,KAAU,aAAcA,EAAyBM,CAAa,IAAIN,GACrEQ,IAAcN,EAAOK,GAAWF,CAAY;AAClD,WAAK,KAAKG,CAAkB,GAE5B,KAAK,kBAAkB,SAAS,YAAY,KAAK,aAAa,mBAAmB,KAAK,KAAK;AAAA,IAC7F;AAEA,WAAO,IAAIf;AAAA,MACTU;AAAA,MACAC;AAAA,MACA,KAAK;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB,EAAE,MAAM,GAAG,KAAK,SAAS,QAAQ,SAAS,UAAA;AAAA,IAAU;AAAA,EAExD;AAAA;AAAA;AAAA;AAAA,EAKA,WAAuB;AACrB,UAAMK,IAAyB,OAC7B,QAAQ,KAAK,4CAA4C,GAClD,KAAK,KAAA;AAGd,WAAO,IAAIhB;AAAA,MACT,KAAK;AAAA,MACLgB;AAAA,MACA,KAAK;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB,EAAE,MAAM,GAAG,KAAK,SAAS,QAAQ,SAAS,YAAA;AAAA,IAAY;AAAA,EAE1D;AAAA;AAAA;AAAA;AAAA,EAKA,eAAeC,GAAkCC,GAAmC;AAClF,UAAMC,IAA2B,CAACZ,MAAgC;AAChE,YAAMa,IAAW,OAAOb,KAAU,aAAcA,EAAyB,KAAK,KAAA,CAAM,IAAIA;AAExF,aAAIU,EAAUG,CAAQ,KACpB,KAAK,KAAKA,CAAe,GAEzB,KAAK,kBAAkB;AAAA,QACrB,YAAY,KAAK,aAAa;AAAA,QAC9B,KAAK,IAAA;AAAA,MAAI,KAGX,QAAQ,KAAKF,KAAgB,iCAAiC,KAAK,aAAa,EAAE,GAG7EE;AAAA,IACT;AAEA,WAAO,IAAIpB;AAAA,MACT,KAAK;AAAA,MACLmB;AAAA,MACA,KAAK;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB,EAAE,MAAM,GAAG,KAAK,SAAS,QAAQ,SAAS,aAAA;AAAA,IAAa;AAAA,EAE3D;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUE,IAAgB,KAAiB;AACzC,QAAIC,IAAkD;AAEtD,UAAMC,IAA0B,CAAChB,MAAgC;AAC/D,YAAMa,IAAW,OAAOb,KAAU,aAAcA,EAAyB,KAAK,KAAA,CAAM,IAAIA;AAExF,aAAIe,KACF,aAAaA,CAAS,GAGxBA,IAAY,WAAW,MAAM;AAC3B,aAAK,KAAKF,CAAe,GAEzB,KAAK,kBAAkB;AAAA,UACrB,YAAY,KAAK,aAAa;AAAA,UAC9B,KAAK,IAAA;AAAA,QAAI,GAEXE,IAAY;AAAA,MACd,GAAGD,CAAK,GAEDD;AAAA,IACT;AAEA,WAAO,IAAIpB;AAAA,MACT,KAAK;AAAA,MACLuB;AAAA,MACA,KAAK;AAAA,MACL,GAAG,KAAK,aAAa;AAAA,MACrB,EAAE,MAAM,GAAG,KAAK,SAAS,QAAQ,SAAS,aAAA;AAAA,IAAa;AAAA,EAE3D;AACF;AAKO,SAASC,EACdvB,GACAC,GACAG,IAA6B,CAAA,GACjB;AACZ,QAAMF,IAAmBsB,EAAA,GACnBrB,IAAesB,OAA2B;AAEhD,SAAO,IAAI1B,EAAYC,GAAKC,GAAKC,GAAkBC,GAAcC,CAAO;AAC1E;AAkGA,SAASqB,IAAuC;AAC9C,MAAI;AACF,UAAMC,IAAQ,IAAI,MAAA,EAAQ;AAC1B,QAAIA;AAGF,aADcA,EAAM,MAAM,YAAY,IAAI,CAAC,KAC3B;AAAA,EAEpB,QAAQ;AAAA,EAER;AACA,SAAO;AACT;AAKO,SAASC,EAAarB,GAAiC;AAC5D,SACEA,KACA,OAAOA,KAAU,YACjB,SAASA,KACT,SAASA,KACT,kBAAkBA,KAClBA,aAAiBP;AAErB;AAKO,MAAM6B,IAAe;AAAA;AAAA;AAAA;AAAA,EAI1B,WAAcC,GAA8B;AAC1C,QAAIA,aAAmB9B;AAErB,UAAI;AACF,cAAM+B,IAAgBD,EAAQ,IAAA,GACxBE,IAAc,QAAQ;AAC5B,YAAIC,IAAgB;AACpB,uBAAQ,OAAO,IAAIC,MAAS;AAC1B,UAAIA,EAAK,CAAC,MAAM,iDACdD,IAAgB;AAAA,QAEpB,GAEAH,EAAQ,IAAIC,CAAa,GACzB,QAAQ,OAAOC,GAERC;AAAA,MACT,QAAQ;AACN,eAAO;AAAA,MACT;AAEF,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,SACEE,GACAC,GACA/B,IAA6B,CAAA,GACjB;AACZ,UAAMJ,IAAM,MAAM;AAChB,YAAMoC,IAASF,EAAQ,IAAI,CAACG,MAAWA,EAAO,KAAK;AACnD,aAAOF,EAAQ,GAAGC,CAAM;AAAA,IAC1B;AAOA,WAAOb,EAAcvB,GALT,OACV,QAAQ,KAAK,mCAAmC,GACzCA,EAAA,IAGsBI,CAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAASkC,GAAwBlC,IAA6B,IAAkB;AAC9E,UAAMJ,IAAM,MAAMsC,EAAS,IAAI,CAACT,MAAYA,EAAQ,KAAK;AAWzD,WAAON,EAAcvB,GAVT,CAACoC,MAAuC;AAClD,YAAMG,IAAY,OAAOH,KAAW,aAAaA,EAAOpC,EAAA,CAAK,IAAIoC;AACjE,aAAAE,EAAS,QAAQ,CAACT,GAASW,MAAU;AACnC,QAAIA,IAAQD,EAAU,UACpBV,EAAQ,IAAIU,EAAUC,CAAK,CAAC;AAAA,MAEhC,CAAC,GACMD;AAAA,IACT,GAE8CnC,CAAO;AAAA,EACvD;AACF;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../reactive/effect.cjs"),b=require("../reactive/signal.cjs"),r=require("../runtime/component-context.cjs");var l=Object.defineProperty,h=(t,e,n)=>e in t?l(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,i=(t,e,n)=>h(t,typeof e!="symbol"?e+"":e,n);class s{constructor(e){i(this,"_signal"),i(this,"_setter"),i(this,"_subscribers",new Set);const[n,o]=b.createSignal(e);this._signal=n,this._setter=o}get value(){return this._signal()}set value(e){this._setter(e),this.notifySubscribers()}updateProperty(e,n){const a={...this._signal(),[e]:n};this._setter(a),this.notifySubscribers()}subscribe(e){return this._subscribers.add(e),()=>this._subscribers.delete(e)}notifySubscribers(){for(const e of this._subscribers)try{e()}catch(n){console.error("Error in environment object subscriber:",n)}}onChange(e){const n=u.createEffect(()=>{e(this._signal())});return()=>n.dispose()}}class c{constructor(e,n){i(this,"key"),i(this,"componentContext"),i(this,"_cachedValue"),i(this,"_subscriptionCleanup"),this.key=e,this.componentContext=n,n.onCleanup(()=>{this._subscriptionCleanup&&this._subscriptionCleanup()})}get wrappedValue(){if(this._cachedValue===void 0&&(this._cachedValue=r.consumeEnvironmentValue(this.key),this._cachedValue&&typeof this._cachedValue=="object"&&"subscribe"in this._cachedValue)){const e=this._cachedValue;typeof e.subscribe=="function"&&(this._subscriptionCleanup=e.subscribe(()=>{this.componentContext.setState(`_env_${this.key.name}_trigger`,Date.now())}))}return this._cachedValue}get projectedValue(){return this}}function m(t){const e=r.getCurrentComponentContext();return new c(t,e)}function p(t,e){r.provideEnvironmentValue(t,e)}function v(t,e){return new s(e)}function _(t){return t&&typeof t=="object"&&"wrappedValue"in t&&"key"in t&&"componentContext"in t&&t instanceof c}const f={Theme:r.createEnvironmentKey("Theme",{mode:"light",primaryColor:"#007AFF",secondaryColor:"#5856D6"}),Localization:r.createEnvironmentKey("Localization"),Navigation:r.createEnvironmentKey("Navigation"),Config:r.createEnvironmentKey("Config"),Auth:r.createEnvironmentKey("Auth")};exports.createEnvironmentKey=r.createEnvironmentKey;exports.CommonEnvironmentKeys=f;exports.EnvironmentObject=m;exports.ObservableEnvironmentObject=s;exports.createObservableEnvironmentObject=v;exports.isEnvironmentObject=_;exports.provideEnvironmentObject=p;
|
|
2
|
-
//# sourceMappingURL=environment.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.cjs","sources":["../../src/state/environment.ts"],"sourcesContent":["/**\n * @EnvironmentObject Property Wrapper Implementation\n *\n * Implements SwiftUI's @EnvironmentObject property wrapper for dependency injection.\n * Provides reactive environment objects with automatic component re-rendering on changes.\n */\n\nimport { createEffect } from '../reactive/effect'\nimport { createSignal } from '../reactive/signal'\nimport type { Accessor, Setter } from '../reactive/types'\nimport {\n consumeEnvironmentValue,\n createEnvironmentKey,\n type EnvironmentKey,\n getCurrentComponentContext,\n provideEnvironmentValue,\n} from '../runtime/component-context'\nimport type { ComponentContext } from '../runtime/types'\n\n/**\n * Environment object wrapper interface\n */\nexport interface EnvironmentObject<T> {\n readonly wrappedValue: T\n readonly projectedValue: EnvironmentObject<T>\n readonly key: EnvironmentKey<T>\n readonly componentContext: ComponentContext\n}\n\n/**\n * Observable environment object that can notify subscribers of changes\n */\nexport class ObservableEnvironmentObject<T extends object> {\n private _signal: Accessor<T>\n private _setter: Setter<T>\n public _subscribers = new Set<() => void>()\n\n constructor(initialValue: T) {\n const [signal, setter] = createSignal(initialValue)\n this._signal = signal\n this._setter = setter\n }\n\n get value(): T {\n return this._signal()\n }\n\n set value(newValue: T) {\n this._setter(newValue)\n this.notifySubscribers()\n }\n\n /**\n * Update a property of the environment object\n */\n updateProperty<K extends keyof T>(key: K, value: T[K]): void {\n const currentValue = this._signal()\n const newValue = { ...currentValue, [key]: value }\n this._setter(newValue)\n this.notifySubscribers()\n }\n\n /**\n * Subscribe to changes\n */\n subscribe(callback: () => void): () => void {\n this._subscribers.add(callback)\n return () => this._subscribers.delete(callback)\n }\n\n private notifySubscribers(): void {\n for (const callback of this._subscribers) {\n try {\n callback()\n } catch (error) {\n console.error('Error in environment object subscriber:', error)\n }\n }\n }\n\n /**\n * Create a reactive effect that runs when this object changes\n */\n onChange(effect: (value: T) => void): () => void {\n const cleanup = createEffect(() => {\n effect(this._signal())\n })\n return () => cleanup.dispose()\n }\n}\n\n/**\n * Environment object implementation\n */\nclass EnvironmentObjectImpl<T> implements EnvironmentObject<T> {\n readonly key: EnvironmentKey<T>\n readonly componentContext: ComponentContext\n private _cachedValue: T | undefined\n private _subscriptionCleanup: (() => void) | undefined\n\n constructor(key: EnvironmentKey<T>, componentContext: ComponentContext) {\n this.key = key\n this.componentContext = componentContext\n\n // Set up cleanup on component unmount\n componentContext.onCleanup(() => {\n if (this._subscriptionCleanup) {\n this._subscriptionCleanup()\n }\n })\n }\n\n get wrappedValue(): T {\n if (this._cachedValue === undefined) {\n this._cachedValue = consumeEnvironmentValue(this.key)\n\n // Subscribe to changes if it's an observable environment object\n if (\n this._cachedValue &&\n typeof this._cachedValue === 'object' &&\n 'subscribe' in this._cachedValue\n ) {\n const observableObject = this._cachedValue as any\n if (typeof observableObject.subscribe === 'function') {\n this._subscriptionCleanup = observableObject.subscribe(() => {\n // Trigger component re-render when environment object changes\n this.componentContext.setState(`_env_${this.key.name}_trigger`, Date.now())\n })\n }\n }\n }\n\n return this._cachedValue\n }\n\n get projectedValue(): EnvironmentObject<T> {\n return this\n }\n}\n\n/**\n * @EnvironmentObject property wrapper factory\n *\n * Creates an @EnvironmentObject property wrapper for dependency injection.\n *\n * @param key - The environment key to look up\n * @returns An EnvironmentObject property wrapper\n *\n * @example\n * ```typescript\n * // Define environment key\n * const UserServiceKey = createEnvironmentKey<UserService>('UserService')\n *\n * class MyComponent {\n * @EnvironmentObject(UserServiceKey)\n * private userService: UserService\n *\n * render() {\n * const user = this.userService.getCurrentUser()\n * return Text(`Hello, ${user.name}!`)\n * }\n * }\n * ```\n */\nexport function EnvironmentObject<T>(key: EnvironmentKey<T>): EnvironmentObject<T> {\n const componentContext = getCurrentComponentContext()\n return new EnvironmentObjectImpl(key, componentContext)\n}\n\n/**\n * Provide an environment object to child components\n *\n * @param key - The environment key\n * @param value - The value to provide\n *\n * @example\n * ```typescript\n * const userService = new UserService()\n * provideEnvironmentObject(UserServiceKey, userService)\n * ```\n */\nexport function provideEnvironmentObject<T>(key: EnvironmentKey<T>, value: T): void {\n provideEnvironmentValue(key, value)\n}\n\n/**\n * Create an observable environment object\n *\n * @param key - The environment key\n * @param initialValue - The initial value\n * @returns An observable environment object\n *\n * @example\n * ```typescript\n * const ThemeKey = createEnvironmentKey<Theme>('Theme')\n * const theme = createObservableEnvironmentObject(ThemeKey, { mode: 'light' })\n * provideEnvironmentObject(ThemeKey, theme)\n * ```\n */\nexport function createObservableEnvironmentObject<T extends object>(\n _key: EnvironmentKey<ObservableEnvironmentObject<T>>,\n initialValue: T\n): ObservableEnvironmentObject<T> {\n return new ObservableEnvironmentObject(initialValue)\n}\n\n/**\n * Create and provide an environment object in one step\n *\n * @param key - The environment key\n * @param value - The value to provide\n * @returns The provided value for chaining\n */\nexport function createEnvironmentObject<T>(key: EnvironmentKey<T>, value: T): T {\n provideEnvironmentObject(key, value)\n return value\n}\n\n/**\n * Type guard for EnvironmentObject property wrappers\n */\nexport function isEnvironmentObject<T>(value: any): value is EnvironmentObject<T> {\n return (\n value &&\n typeof value === 'object' &&\n 'wrappedValue' in value &&\n 'key' in value &&\n 'componentContext' in value &&\n value instanceof EnvironmentObjectImpl\n )\n}\n\n/**\n * Environment object utilities\n */\nexport const EnvironmentObjectUtils = {\n /**\n * Check if an environment object is available\n */\n isAvailable<T>(key: EnvironmentKey<T>): boolean {\n try {\n const context = getCurrentComponentContext()\n return context.consume(key.symbol) !== undefined\n } catch {\n return false\n }\n },\n\n /**\n * Get environment object value without creating a dependency\n */\n peek<T>(key: EnvironmentKey<T>): T | undefined {\n try {\n const context = getCurrentComponentContext()\n return context.consume(key.symbol)\n } catch {\n return undefined\n }\n },\n\n /**\n * Create a derived environment object\n */\n derived<T, U>(\n sourceKey: EnvironmentKey<T>,\n targetKey: EnvironmentKey<U>,\n transform: (value: T) => U\n ): void {\n const sourceValue = consumeEnvironmentValue(sourceKey)\n const derivedValue = transform(sourceValue)\n provideEnvironmentObject(targetKey, derivedValue)\n },\n\n /**\n * Create a scoped environment context\n */\n scoped(setup: () => void, cleanup?: () => void): () => void {\n const context = getCurrentComponentContext()\n\n // Run setup\n setup()\n\n // Register cleanup\n if (cleanup) {\n context.onCleanup(cleanup)\n }\n\n return () => {\n if (cleanup) {\n cleanup()\n }\n }\n },\n}\n\n/**\n * Common environment keys for built-in services\n */\nexport const CommonEnvironmentKeys = {\n /**\n * Application theme\n */\n Theme: createEnvironmentKey<{\n mode: 'light' | 'dark'\n primaryColor: string\n secondaryColor: string\n }>('Theme', {\n mode: 'light',\n primaryColor: '#007AFF',\n secondaryColor: '#5856D6',\n }),\n\n /**\n * Localization service\n */\n Localization: createEnvironmentKey<{\n locale: string\n t: (key: string, params?: Record<string, any>) => string\n }>('Localization'),\n\n /**\n * Navigation service\n */\n Navigation: createEnvironmentKey<{\n navigate: (path: string) => void\n goBack: () => void\n getCurrentRoute: () => string\n }>('Navigation'),\n\n /**\n * Application configuration\n */\n Config: createEnvironmentKey<{\n apiUrl: string\n version: string\n environment: 'development' | 'staging' | 'production'\n }>('Config'),\n\n /**\n * User authentication\n */\n Auth: createEnvironmentKey<{\n isAuthenticated: boolean\n user?: { id: string; name: string; email: string }\n login: (credentials: any) => Promise<void>\n logout: () => Promise<void>\n }>('Auth'),\n}\n\n// Re-export environment key creation function\nexport { createEnvironmentKey }\n"],"names":["ObservableEnvironmentObject","initialValue","__publicField","signal","setter","createSignal","newValue","key","value","callback","error","effect","cleanup","createEffect","EnvironmentObjectImpl","componentContext","consumeEnvironmentValue","observableObject","EnvironmentObject","getCurrentComponentContext","provideEnvironmentObject","provideEnvironmentValue","createObservableEnvironmentObject","_key","isEnvironmentObject","CommonEnvironmentKeys","createEnvironmentKey"],"mappings":"wWAgCO,MAAMA,CAA8C,CAKzD,YAAYC,EAAiB,CAJ7BC,EAAA,KAAQ,SAAA,EACRA,EAAA,KAAQ,SAAA,EACRA,EAAA,KAAO,mBAAmB,GAAgB,EAGxC,KAAM,CAACC,EAAQC,CAAM,EAAIC,EAAAA,aAAaJ,CAAY,EAClD,KAAK,QAAUE,EACf,KAAK,QAAUC,CACjB,CAEA,IAAI,OAAW,CACb,OAAO,KAAK,QAAA,CACd,CAEA,IAAI,MAAME,EAAa,CACrB,KAAK,QAAQA,CAAQ,EACrB,KAAK,kBAAA,CACP,CAKA,eAAkCC,EAAQC,EAAmB,CAE3D,MAAMF,EAAW,CAAE,GADE,KAAK,QAAA,EACU,CAACC,CAAG,EAAGC,CAAA,EAC3C,KAAK,QAAQF,CAAQ,EACrB,KAAK,kBAAA,CACP,CAKA,UAAUG,EAAkC,CAC1C,YAAK,aAAa,IAAIA,CAAQ,EACvB,IAAM,KAAK,aAAa,OAAOA,CAAQ,CAChD,CAEQ,mBAA0B,CAChC,UAAWA,KAAY,KAAK,aAC1B,GAAI,CACFA,EAAA,CACF,OAASC,EAAO,CACd,QAAQ,MAAM,0CAA2CA,CAAK,CAChE,CAEJ,CAKA,SAASC,EAAwC,CAC/C,MAAMC,EAAUC,EAAAA,aAAa,IAAM,CACjCF,EAAO,KAAK,SAAS,CACvB,CAAC,EACD,MAAO,IAAMC,EAAQ,QAAA,CACvB,CACF,CAKA,MAAME,CAAyD,CAM7D,YAAYP,EAAwBQ,EAAoC,CALxEb,EAAA,KAAS,KAAA,EACTA,EAAA,KAAS,kBAAA,EACTA,EAAA,KAAQ,cAAA,EACRA,EAAA,KAAQ,sBAAA,EAGN,KAAK,IAAMK,EACX,KAAK,iBAAmBQ,EAGxBA,EAAiB,UAAU,IAAM,CAC3B,KAAK,sBACP,KAAK,qBAAA,CAET,CAAC,CACH,CAEA,IAAI,cAAkB,CACpB,GAAI,KAAK,eAAiB,SACxB,KAAK,aAAeC,0BAAwB,KAAK,GAAG,EAIlD,KAAK,cACL,OAAO,KAAK,cAAiB,UAC7B,cAAe,KAAK,cACpB,CACA,MAAMC,EAAmB,KAAK,aAC1B,OAAOA,EAAiB,WAAc,aACxC,KAAK,qBAAuBA,EAAiB,UAAU,IAAM,CAE3D,KAAK,iBAAiB,SAAS,QAAQ,KAAK,IAAI,IAAI,WAAY,KAAK,IAAA,CAAK,CAC5E,CAAC,EAEL,CAGF,OAAO,KAAK,YACd,CAEA,IAAI,gBAAuC,CACzC,OAAO,IACT,CACF,CA0BO,SAASC,EAAqBX,EAA8C,CACjF,MAAMQ,EAAmBI,EAAAA,2BAAA,EACzB,OAAO,IAAIL,EAAsBP,EAAKQ,CAAgB,CACxD,CAcO,SAASK,EAA4Bb,EAAwBC,EAAgB,CAClFa,EAAAA,wBAAwBd,EAAKC,CAAK,CACpC,CAgBO,SAASc,EACdC,EACAtB,EACgC,CAChC,OAAO,IAAID,EAA4BC,CAAY,CACrD,CAiBO,SAASuB,EAAuBhB,EAA2C,CAChF,OACEA,GACA,OAAOA,GAAU,UACjB,iBAAkBA,GAClB,QAASA,GACT,qBAAsBA,GACtBA,aAAiBM,CAErB,CAoEO,MAAMW,EAAwB,CAInC,MAAOC,EAAAA,qBAIJ,QAAS,CACV,KAAM,QACN,aAAc,UACd,eAAgB,SAAA,CACjB,EAKD,aAAcA,EAAAA,qBAGX,cAAc,EAKjB,WAAYA,EAAAA,qBAIT,YAAY,EAKf,OAAQA,EAAAA,qBAIL,QAAQ,EAKX,KAAMA,EAAAA,qBAKH,MAAM,CACX"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { createEffect as a } from "../reactive/effect.js";
|
|
2
|
-
import { createSignal as u } from "../reactive/signal.js";
|
|
3
|
-
import { createEnvironmentKey as i, getCurrentComponentContext as h, provideEnvironmentValue as b, consumeEnvironmentValue as l } from "../runtime/component-context.js";
|
|
4
|
-
var p = Object.defineProperty, _ = (t, e, n) => e in t ? p(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, r = (t, e, n) => _(t, typeof e != "symbol" ? e + "" : e, n);
|
|
5
|
-
class m {
|
|
6
|
-
constructor(e) {
|
|
7
|
-
r(this, "_signal"), r(this, "_setter"), r(this, "_subscribers", /* @__PURE__ */ new Set());
|
|
8
|
-
const [n, s] = u(e);
|
|
9
|
-
this._signal = n, this._setter = s;
|
|
10
|
-
}
|
|
11
|
-
get value() {
|
|
12
|
-
return this._signal();
|
|
13
|
-
}
|
|
14
|
-
set value(e) {
|
|
15
|
-
this._setter(e), this.notifySubscribers();
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Update a property of the environment object
|
|
19
|
-
*/
|
|
20
|
-
updateProperty(e, n) {
|
|
21
|
-
const c = { ...this._signal(), [e]: n };
|
|
22
|
-
this._setter(c), this.notifySubscribers();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Subscribe to changes
|
|
26
|
-
*/
|
|
27
|
-
subscribe(e) {
|
|
28
|
-
return this._subscribers.add(e), () => this._subscribers.delete(e);
|
|
29
|
-
}
|
|
30
|
-
notifySubscribers() {
|
|
31
|
-
for (const e of this._subscribers)
|
|
32
|
-
try {
|
|
33
|
-
e();
|
|
34
|
-
} catch (n) {
|
|
35
|
-
console.error("Error in environment object subscriber:", n);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Create a reactive effect that runs when this object changes
|
|
40
|
-
*/
|
|
41
|
-
onChange(e) {
|
|
42
|
-
const n = a(() => {
|
|
43
|
-
e(this._signal());
|
|
44
|
-
});
|
|
45
|
-
return () => n.dispose();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
class o {
|
|
49
|
-
constructor(e, n) {
|
|
50
|
-
r(this, "key"), r(this, "componentContext"), r(this, "_cachedValue"), r(this, "_subscriptionCleanup"), this.key = e, this.componentContext = n, n.onCleanup(() => {
|
|
51
|
-
this._subscriptionCleanup && this._subscriptionCleanup();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
get wrappedValue() {
|
|
55
|
-
if (this._cachedValue === void 0 && (this._cachedValue = l(this.key), this._cachedValue && typeof this._cachedValue == "object" && "subscribe" in this._cachedValue)) {
|
|
56
|
-
const e = this._cachedValue;
|
|
57
|
-
typeof e.subscribe == "function" && (this._subscriptionCleanup = e.subscribe(() => {
|
|
58
|
-
this.componentContext.setState(`_env_${this.key.name}_trigger`, Date.now());
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
return this._cachedValue;
|
|
62
|
-
}
|
|
63
|
-
get projectedValue() {
|
|
64
|
-
return this;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
function v(t) {
|
|
68
|
-
const e = h();
|
|
69
|
-
return new o(t, e);
|
|
70
|
-
}
|
|
71
|
-
function C(t, e) {
|
|
72
|
-
b(t, e);
|
|
73
|
-
}
|
|
74
|
-
function y(t, e) {
|
|
75
|
-
return new m(e);
|
|
76
|
-
}
|
|
77
|
-
function V(t) {
|
|
78
|
-
return t && typeof t == "object" && "wrappedValue" in t && "key" in t && "componentContext" in t && t instanceof o;
|
|
79
|
-
}
|
|
80
|
-
const E = {
|
|
81
|
-
/**
|
|
82
|
-
* Application theme
|
|
83
|
-
*/
|
|
84
|
-
Theme: i("Theme", {
|
|
85
|
-
mode: "light",
|
|
86
|
-
primaryColor: "#007AFF",
|
|
87
|
-
secondaryColor: "#5856D6"
|
|
88
|
-
}),
|
|
89
|
-
/**
|
|
90
|
-
* Localization service
|
|
91
|
-
*/
|
|
92
|
-
Localization: i("Localization"),
|
|
93
|
-
/**
|
|
94
|
-
* Navigation service
|
|
95
|
-
*/
|
|
96
|
-
Navigation: i("Navigation"),
|
|
97
|
-
/**
|
|
98
|
-
* Application configuration
|
|
99
|
-
*/
|
|
100
|
-
Config: i("Config"),
|
|
101
|
-
/**
|
|
102
|
-
* User authentication
|
|
103
|
-
*/
|
|
104
|
-
Auth: i("Auth")
|
|
105
|
-
};
|
|
106
|
-
export {
|
|
107
|
-
E as CommonEnvironmentKeys,
|
|
108
|
-
v as EnvironmentObject,
|
|
109
|
-
m as ObservableEnvironmentObject,
|
|
110
|
-
i as createEnvironmentKey,
|
|
111
|
-
y as createObservableEnvironmentObject,
|
|
112
|
-
V as isEnvironmentObject,
|
|
113
|
-
C as provideEnvironmentObject
|
|
114
|
-
};
|
|
115
|
-
//# sourceMappingURL=environment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sources":["../../src/state/environment.ts"],"sourcesContent":["/**\n * @EnvironmentObject Property Wrapper Implementation\n *\n * Implements SwiftUI's @EnvironmentObject property wrapper for dependency injection.\n * Provides reactive environment objects with automatic component re-rendering on changes.\n */\n\nimport { createEffect } from '../reactive/effect'\nimport { createSignal } from '../reactive/signal'\nimport type { Accessor, Setter } from '../reactive/types'\nimport {\n consumeEnvironmentValue,\n createEnvironmentKey,\n type EnvironmentKey,\n getCurrentComponentContext,\n provideEnvironmentValue,\n} from '../runtime/component-context'\nimport type { ComponentContext } from '../runtime/types'\n\n/**\n * Environment object wrapper interface\n */\nexport interface EnvironmentObject<T> {\n readonly wrappedValue: T\n readonly projectedValue: EnvironmentObject<T>\n readonly key: EnvironmentKey<T>\n readonly componentContext: ComponentContext\n}\n\n/**\n * Observable environment object that can notify subscribers of changes\n */\nexport class ObservableEnvironmentObject<T extends object> {\n private _signal: Accessor<T>\n private _setter: Setter<T>\n public _subscribers = new Set<() => void>()\n\n constructor(initialValue: T) {\n const [signal, setter] = createSignal(initialValue)\n this._signal = signal\n this._setter = setter\n }\n\n get value(): T {\n return this._signal()\n }\n\n set value(newValue: T) {\n this._setter(newValue)\n this.notifySubscribers()\n }\n\n /**\n * Update a property of the environment object\n */\n updateProperty<K extends keyof T>(key: K, value: T[K]): void {\n const currentValue = this._signal()\n const newValue = { ...currentValue, [key]: value }\n this._setter(newValue)\n this.notifySubscribers()\n }\n\n /**\n * Subscribe to changes\n */\n subscribe(callback: () => void): () => void {\n this._subscribers.add(callback)\n return () => this._subscribers.delete(callback)\n }\n\n private notifySubscribers(): void {\n for (const callback of this._subscribers) {\n try {\n callback()\n } catch (error) {\n console.error('Error in environment object subscriber:', error)\n }\n }\n }\n\n /**\n * Create a reactive effect that runs when this object changes\n */\n onChange(effect: (value: T) => void): () => void {\n const cleanup = createEffect(() => {\n effect(this._signal())\n })\n return () => cleanup.dispose()\n }\n}\n\n/**\n * Environment object implementation\n */\nclass EnvironmentObjectImpl<T> implements EnvironmentObject<T> {\n readonly key: EnvironmentKey<T>\n readonly componentContext: ComponentContext\n private _cachedValue: T | undefined\n private _subscriptionCleanup: (() => void) | undefined\n\n constructor(key: EnvironmentKey<T>, componentContext: ComponentContext) {\n this.key = key\n this.componentContext = componentContext\n\n // Set up cleanup on component unmount\n componentContext.onCleanup(() => {\n if (this._subscriptionCleanup) {\n this._subscriptionCleanup()\n }\n })\n }\n\n get wrappedValue(): T {\n if (this._cachedValue === undefined) {\n this._cachedValue = consumeEnvironmentValue(this.key)\n\n // Subscribe to changes if it's an observable environment object\n if (\n this._cachedValue &&\n typeof this._cachedValue === 'object' &&\n 'subscribe' in this._cachedValue\n ) {\n const observableObject = this._cachedValue as any\n if (typeof observableObject.subscribe === 'function') {\n this._subscriptionCleanup = observableObject.subscribe(() => {\n // Trigger component re-render when environment object changes\n this.componentContext.setState(`_env_${this.key.name}_trigger`, Date.now())\n })\n }\n }\n }\n\n return this._cachedValue\n }\n\n get projectedValue(): EnvironmentObject<T> {\n return this\n }\n}\n\n/**\n * @EnvironmentObject property wrapper factory\n *\n * Creates an @EnvironmentObject property wrapper for dependency injection.\n *\n * @param key - The environment key to look up\n * @returns An EnvironmentObject property wrapper\n *\n * @example\n * ```typescript\n * // Define environment key\n * const UserServiceKey = createEnvironmentKey<UserService>('UserService')\n *\n * class MyComponent {\n * @EnvironmentObject(UserServiceKey)\n * private userService: UserService\n *\n * render() {\n * const user = this.userService.getCurrentUser()\n * return Text(`Hello, ${user.name}!`)\n * }\n * }\n * ```\n */\nexport function EnvironmentObject<T>(key: EnvironmentKey<T>): EnvironmentObject<T> {\n const componentContext = getCurrentComponentContext()\n return new EnvironmentObjectImpl(key, componentContext)\n}\n\n/**\n * Provide an environment object to child components\n *\n * @param key - The environment key\n * @param value - The value to provide\n *\n * @example\n * ```typescript\n * const userService = new UserService()\n * provideEnvironmentObject(UserServiceKey, userService)\n * ```\n */\nexport function provideEnvironmentObject<T>(key: EnvironmentKey<T>, value: T): void {\n provideEnvironmentValue(key, value)\n}\n\n/**\n * Create an observable environment object\n *\n * @param key - The environment key\n * @param initialValue - The initial value\n * @returns An observable environment object\n *\n * @example\n * ```typescript\n * const ThemeKey = createEnvironmentKey<Theme>('Theme')\n * const theme = createObservableEnvironmentObject(ThemeKey, { mode: 'light' })\n * provideEnvironmentObject(ThemeKey, theme)\n * ```\n */\nexport function createObservableEnvironmentObject<T extends object>(\n _key: EnvironmentKey<ObservableEnvironmentObject<T>>,\n initialValue: T\n): ObservableEnvironmentObject<T> {\n return new ObservableEnvironmentObject(initialValue)\n}\n\n/**\n * Create and provide an environment object in one step\n *\n * @param key - The environment key\n * @param value - The value to provide\n * @returns The provided value for chaining\n */\nexport function createEnvironmentObject<T>(key: EnvironmentKey<T>, value: T): T {\n provideEnvironmentObject(key, value)\n return value\n}\n\n/**\n * Type guard for EnvironmentObject property wrappers\n */\nexport function isEnvironmentObject<T>(value: any): value is EnvironmentObject<T> {\n return (\n value &&\n typeof value === 'object' &&\n 'wrappedValue' in value &&\n 'key' in value &&\n 'componentContext' in value &&\n value instanceof EnvironmentObjectImpl\n )\n}\n\n/**\n * Environment object utilities\n */\nexport const EnvironmentObjectUtils = {\n /**\n * Check if an environment object is available\n */\n isAvailable<T>(key: EnvironmentKey<T>): boolean {\n try {\n const context = getCurrentComponentContext()\n return context.consume(key.symbol) !== undefined\n } catch {\n return false\n }\n },\n\n /**\n * Get environment object value without creating a dependency\n */\n peek<T>(key: EnvironmentKey<T>): T | undefined {\n try {\n const context = getCurrentComponentContext()\n return context.consume(key.symbol)\n } catch {\n return undefined\n }\n },\n\n /**\n * Create a derived environment object\n */\n derived<T, U>(\n sourceKey: EnvironmentKey<T>,\n targetKey: EnvironmentKey<U>,\n transform: (value: T) => U\n ): void {\n const sourceValue = consumeEnvironmentValue(sourceKey)\n const derivedValue = transform(sourceValue)\n provideEnvironmentObject(targetKey, derivedValue)\n },\n\n /**\n * Create a scoped environment context\n */\n scoped(setup: () => void, cleanup?: () => void): () => void {\n const context = getCurrentComponentContext()\n\n // Run setup\n setup()\n\n // Register cleanup\n if (cleanup) {\n context.onCleanup(cleanup)\n }\n\n return () => {\n if (cleanup) {\n cleanup()\n }\n }\n },\n}\n\n/**\n * Common environment keys for built-in services\n */\nexport const CommonEnvironmentKeys = {\n /**\n * Application theme\n */\n Theme: createEnvironmentKey<{\n mode: 'light' | 'dark'\n primaryColor: string\n secondaryColor: string\n }>('Theme', {\n mode: 'light',\n primaryColor: '#007AFF',\n secondaryColor: '#5856D6',\n }),\n\n /**\n * Localization service\n */\n Localization: createEnvironmentKey<{\n locale: string\n t: (key: string, params?: Record<string, any>) => string\n }>('Localization'),\n\n /**\n * Navigation service\n */\n Navigation: createEnvironmentKey<{\n navigate: (path: string) => void\n goBack: () => void\n getCurrentRoute: () => string\n }>('Navigation'),\n\n /**\n * Application configuration\n */\n Config: createEnvironmentKey<{\n apiUrl: string\n version: string\n environment: 'development' | 'staging' | 'production'\n }>('Config'),\n\n /**\n * User authentication\n */\n Auth: createEnvironmentKey<{\n isAuthenticated: boolean\n user?: { id: string; name: string; email: string }\n login: (credentials: any) => Promise<void>\n logout: () => Promise<void>\n }>('Auth'),\n}\n\n// Re-export environment key creation function\nexport { createEnvironmentKey }\n"],"names":["ObservableEnvironmentObject","initialValue","__publicField","signal","setter","createSignal","newValue","key","value","callback","error","effect","cleanup","createEffect","EnvironmentObjectImpl","componentContext","consumeEnvironmentValue","observableObject","EnvironmentObject","getCurrentComponentContext","provideEnvironmentObject","provideEnvironmentValue","createObservableEnvironmentObject","_key","isEnvironmentObject","CommonEnvironmentKeys","createEnvironmentKey"],"mappings":";;;;AAgCO,MAAMA,EAA8C;AAAA,EAKzD,YAAYC,GAAiB;AAJ7B,IAAAC,EAAA,MAAQ,SAAA,GACRA,EAAA,MAAQ,SAAA,GACRA,EAAA,MAAO,oCAAmB,IAAA,CAAgB;AAGxC,UAAM,CAACC,GAAQC,CAAM,IAAIC,EAAaJ,CAAY;AAClD,SAAK,UAAUE,GACf,KAAK,UAAUC;AAAA,EACjB;AAAA,EAEA,IAAI,QAAW;AACb,WAAO,KAAK,QAAA;AAAA,EACd;AAAA,EAEA,IAAI,MAAME,GAAa;AACrB,SAAK,QAAQA,CAAQ,GACrB,KAAK,kBAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA,EAKA,eAAkCC,GAAQC,GAAmB;AAE3D,UAAMF,IAAW,EAAE,GADE,KAAK,QAAA,GACU,CAACC,CAAG,GAAGC,EAAA;AAC3C,SAAK,QAAQF,CAAQ,GACrB,KAAK,kBAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUG,GAAkC;AAC1C,gBAAK,aAAa,IAAIA,CAAQ,GACvB,MAAM,KAAK,aAAa,OAAOA,CAAQ;AAAA,EAChD;AAAA,EAEQ,oBAA0B;AAChC,eAAWA,KAAY,KAAK;AAC1B,UAAI;AACF,QAAAA,EAAA;AAAA,MACF,SAASC,GAAO;AACd,gBAAQ,MAAM,2CAA2CA,CAAK;AAAA,MAChE;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,SAASC,GAAwC;AAC/C,UAAMC,IAAUC,EAAa,MAAM;AACjC,MAAAF,EAAO,KAAK,SAAS;AAAA,IACvB,CAAC;AACD,WAAO,MAAMC,EAAQ,QAAA;AAAA,EACvB;AACF;AAKA,MAAME,EAAyD;AAAA,EAM7D,YAAYP,GAAwBQ,GAAoC;AALxE,IAAAb,EAAA,MAAS,KAAA,GACTA,EAAA,MAAS,kBAAA,GACTA,EAAA,MAAQ,cAAA,GACRA,EAAA,MAAQ,sBAAA,GAGN,KAAK,MAAMK,GACX,KAAK,mBAAmBQ,GAGxBA,EAAiB,UAAU,MAAM;AAC/B,MAAI,KAAK,wBACP,KAAK,qBAAA;AAAA,IAET,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,eAAkB;AACpB,QAAI,KAAK,iBAAiB,WACxB,KAAK,eAAeC,EAAwB,KAAK,GAAG,GAIlD,KAAK,gBACL,OAAO,KAAK,gBAAiB,YAC7B,eAAe,KAAK,eACpB;AACA,YAAMC,IAAmB,KAAK;AAC9B,MAAI,OAAOA,EAAiB,aAAc,eACxC,KAAK,uBAAuBA,EAAiB,UAAU,MAAM;AAE3D,aAAK,iBAAiB,SAAS,QAAQ,KAAK,IAAI,IAAI,YAAY,KAAK,IAAA,CAAK;AAAA,MAC5E,CAAC;AAAA,IAEL;AAGF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,iBAAuC;AACzC,WAAO;AAAA,EACT;AACF;AA0BO,SAASC,EAAqBX,GAA8C;AACjF,QAAMQ,IAAmBI,EAAA;AACzB,SAAO,IAAIL,EAAsBP,GAAKQ,CAAgB;AACxD;AAcO,SAASK,EAA4Bb,GAAwBC,GAAgB;AAClF,EAAAa,EAAwBd,GAAKC,CAAK;AACpC;AAgBO,SAASc,EACdC,GACAtB,GACgC;AAChC,SAAO,IAAID,EAA4BC,CAAY;AACrD;AAiBO,SAASuB,EAAuBhB,GAA2C;AAChF,SACEA,KACA,OAAOA,KAAU,YACjB,kBAAkBA,KAClB,SAASA,KACT,sBAAsBA,KACtBA,aAAiBM;AAErB;AAoEO,MAAMW,IAAwB;AAAA;AAAA;AAAA;AAAA,EAInC,OAAOC,EAIJ,SAAS;AAAA,IACV,MAAM;AAAA,IACN,cAAc;AAAA,IACd,gBAAgB;AAAA,EAAA,CACjB;AAAA;AAAA;AAAA;AAAA,EAKD,cAAcA,EAGX,cAAc;AAAA;AAAA;AAAA;AAAA,EAKjB,YAAYA,EAIT,YAAY;AAAA;AAAA;AAAA;AAAA,EAKf,QAAQA,EAIL,QAAQ;AAAA;AAAA;AAAA;AAAA,EAKX,MAAMA,EAKH,MAAM;AACX;"}
|
package/dist/state/index.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./environment.cjs"),o=require("../reactive/signal.cjs");require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const r=require("./state-manager.cjs"),s=a.provideEnvironmentObject;function c(e){return console.warn("useEnvironmentObject is deprecated, use EnvironmentObject instead"),a.EnvironmentObject(e)}const b={isPropertyWrapper(e){return e&&typeof e=="object"&&"wrappedValue"in e&&"projectedValue"in e},unwrap(e){return this.isPropertyWrapper(e)?e.wrappedValue:e},createDebugSnapshot(e){if(typeof window<"u"){const n=window.__TACHUI_DEBUG__;if(n)return{states:n.states?Object.keys(n.states).filter(t=>t.startsWith(e)).reduce((t,i)=>(t[i]=n.states[i].getValue(),t),{}):{},observedObjects:n.observedObjects?Object.keys(n.observedObjects).filter(t=>t.startsWith(e)).reduce((t,i)=>(t[i]={notificationCount:n.observedObjects[i].getNotificationCount(),object:n.observedObjects[i].getObject()},t),{}):{}}}return null}};exports.CommonEnvironmentKeys=a.CommonEnvironmentKeys;exports.EnvironmentObject=a.EnvironmentObject;exports.createObservableEnvironmentObject=a.createObservableEnvironmentObject;exports.isEnvironmentObject=a.isEnvironmentObject;exports.provideEnvironmentObject=a.provideEnvironmentObject;exports.createSignal=o.createSignal;exports.StateManagerImpl=r.StateManagerImpl;exports.createStateManager=r.createStateManager;exports.getAllStateManagers=r.getAllStateManagers;exports.getStateManager=r.getStateManager;exports.getStateManagerDebugInfo=r.getStateManagerDebugInfo;exports.initializeStateDebugging=r.initializeStateDebugging;exports.registerStateManager=r.registerStateManager;exports.unregisterStateManager=r.unregisterStateManager;exports.StateUtils=b;exports.createEnvironmentObjectProvider=s;exports.useEnvironmentObject=c;
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/state/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/state/index.ts"],"sourcesContent":["/**\n * SwiftUI-Style State Management\n *\n * This module provides SwiftUI-compatible property wrappers for state management:\n * - @State: Local component state with automatic reactivity\n * - @Binding: Two-way data binding between parent and child components\n * - @ObservedObject: Observation of external objects that implement ObservableObject\n * - @EnvironmentObject: Dependency injection through environment context\n */\n\nimport {\n CommonEnvironmentKeys,\n createEnvironmentKey,\n createObservableEnvironmentObject,\n EnvironmentObject,\n provideEnvironmentObject,\n} from './environment'\nimport { makeObservable, observable } from './observed-object'\n// Import actual implementations\nimport { createBinding, createStateBinding, State } from './state'\n\n// Enhanced @Binding property wrapper\nexport {\n BindingImpl,\n BindingUtils,\n createBinding as createEnhancedBinding,\n isBinding as isEnhancedBinding,\n} from './binding'\n// @EnvironmentObject property wrapper\nexport {\n CommonEnvironmentKeys,\n createEnvironmentKey,\n createObservableEnvironmentObject,\n EnvironmentObject,\n isEnvironmentObject,\n provideEnvironmentObject,\n} from './environment'\n\n// @ObservedObject property wrapper\nexport {\n createObservableStore,\n isObservableObject,\n isObservedObject,\n makeObservable,\n ObservableObjectBase,\n ObservedObjectWrapper as ObservedObject,\n observable,\n} from './observed-object'\n// @State property wrapper\nexport {\n createBinding,\n createStateBinding,\n isBinding,\n isState,\n State,\n unwrapValue,\n} from './state'\n// Core types\nexport type {\n Binding,\n BindingFactory,\n BindingOptions,\n BindingValue,\n ComputedProperty,\n EnvironmentKey,\n EnvironmentObject as IEnvironmentObject,\n EnvironmentObjectFactory,\n EnvironmentObjectOptions,\n EnvironmentObjectProvider,\n ObservableObject,\n ObservableObjectOptions,\n ObservedObject as IObservedObject,\n ObservedObjectFactory,\n PropertyWrapper,\n PropertyWrapperMetadata,\n PropertyWrapperRegistry,\n State as IState,\n StateBinding,\n StateFactory,\n StateManager,\n StateWrapperOptions,\n} from './types'\n\n// Legacy compatibility exports (for failing tests)\nexport const createEnvironmentObjectProvider = provideEnvironmentObject\nexport function useEnvironmentObject(key: any) {\n console.warn('useEnvironmentObject is deprecated, use EnvironmentObject instead')\n return EnvironmentObject(key)\n}\n\n/**\n * Re-export commonly used reactive primitives from the reactive system\n */\nexport { createComputed, createEffect, createMemo, createSignal } from '../reactive'\n// State manager\nexport {\n createStateManager,\n getAllStateManagers,\n getStateManager,\n getStateManagerDebugInfo,\n initializeStateDebugging,\n registerStateManager,\n StateManagerImpl,\n unregisterStateManager,\n} from './state-manager'\n\n/**\n * Utility functions for working with property wrappers\n */\nexport const StateUtils = {\n /**\n * Check if a value is any kind of property wrapper\n */\n isPropertyWrapper(value: any): value is { wrappedValue: any; projectedValue: any } {\n return (\n value && typeof value === 'object' && 'wrappedValue' in value && 'projectedValue' in value\n )\n },\n\n /**\n * Extract the wrapped value from any property wrapper\n */\n unwrap<T>(wrapper: any): T {\n if (this.isPropertyWrapper(wrapper)) {\n return wrapper.wrappedValue\n }\n return wrapper\n },\n\n /**\n * Create a debug snapshot of all property wrappers in a component\n */\n createDebugSnapshot(componentId: string): any {\n if (typeof window !== 'undefined') {\n const debug = (window as any).__TACHUI_DEBUG__\n if (debug) {\n return {\n states: debug.states\n ? Object.keys(debug.states)\n .filter((key: string) => key.startsWith(componentId))\n .reduce((acc: any, key: string) => {\n acc[key] = debug.states[key].getValue()\n return acc\n }, {})\n : {},\n observedObjects: debug.observedObjects\n ? Object.keys(debug.observedObjects)\n .filter((key: string) => key.startsWith(componentId))\n .reduce((acc: any, key: string) => {\n acc[key] = {\n notificationCount: debug.observedObjects[key].getNotificationCount(),\n object: debug.observedObjects[key].getObject(),\n }\n return acc\n }, {})\n : {},\n }\n }\n }\n return null\n },\n}\n\n/**\n * Default export with all property wrappers\n */\nexport default {\n State,\n EnvironmentObject,\n createStateBinding,\n createBinding,\n makeObservable,\n observable,\n createEnvironmentKey,\n provideEnvironmentObject,\n createObservableEnvironmentObject,\n CommonEnvironmentKeys,\n StateUtils,\n}\n"],"names":["createEnvironmentObjectProvider","provideEnvironmentObject","useEnvironmentObject","key","EnvironmentObject","StateUtils","value","wrapper","componentId","debug","acc"],"mappings":"sVAoFaA,EAAkCC,EAAAA,yBACxC,SAASC,EAAqBC,EAAU,CAC7C,eAAQ,KAAK,mEAAmE,EACzEC,EAAAA,kBAAkBD,CAAG,CAC9B,CAqBO,MAAME,EAAa,CAIxB,kBAAkBC,EAAiE,CACjF,OACEA,GAAS,OAAOA,GAAU,UAAY,iBAAkBA,GAAS,mBAAoBA,CAEzF,EAKA,OAAUC,EAAiB,CACzB,OAAI,KAAK,kBAAkBA,CAAO,EACzBA,EAAQ,aAEVA,CACT,EAKA,oBAAoBC,EAA0B,CAC5C,GAAI,OAAO,OAAW,IAAa,CACjC,MAAMC,EAAS,OAAe,iBAC9B,GAAIA,EACF,MAAO,CACL,OAAQA,EAAM,OACV,OAAO,KAAKA,EAAM,MAAM,EACrB,OAAQN,GAAgBA,EAAI,WAAWK,CAAW,CAAC,EACnD,OAAO,CAACE,EAAUP,KACjBO,EAAIP,CAAG,EAAIM,EAAM,OAAON,CAAG,EAAE,SAAA,EACtBO,GACN,CAAA,CAAE,EACP,CAAA,EACJ,gBAAiBD,EAAM,gBACnB,OAAO,KAAKA,EAAM,eAAe,EAC9B,OAAQN,GAAgBA,EAAI,WAAWK,CAAW,CAAC,EACnD,OAAO,CAACE,EAAUP,KACjBO,EAAIP,CAAG,EAAI,CACT,kBAAmBM,EAAM,gBAAgBN,CAAG,EAAE,qBAAA,EAC9C,OAAQM,EAAM,gBAAgBN,CAAG,EAAE,UAAA,CAAU,EAExCO,GACN,CAAA,CAAE,EACP,CAAA,CAAC,CAGX,CACA,OAAO,IACT,CACF"}
|
package/dist/state/index.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { provideEnvironmentObject as o, EnvironmentObject as i } from "./environment.js";
|
|
2
|
-
import { CommonEnvironmentKeys as O, createObservableEnvironmentObject as f, isEnvironmentObject as v } from "./environment.js";
|
|
3
|
-
import { createSignal as S } from "../reactive/signal.js";
|
|
4
|
-
import "../reactive/cleanup.js";
|
|
5
|
-
import "../reactive/unified-scheduler.js";
|
|
6
|
-
import "../reactive/scheduler.js";
|
|
7
|
-
import "../reactive/theme.js";
|
|
8
|
-
import { StateManagerImpl as M, createStateManager as w, getAllStateManagers as _, getStateManager as h, getStateManagerDebugInfo as x, initializeStateDebugging as y, registerStateManager as C, unregisterStateManager as D } from "./state-manager.js";
|
|
9
|
-
const g = o;
|
|
10
|
-
function p(e) {
|
|
11
|
-
return console.warn("useEnvironmentObject is deprecated, use EnvironmentObject instead"), i(e);
|
|
12
|
-
}
|
|
13
|
-
const m = {
|
|
14
|
-
/**
|
|
15
|
-
* Check if a value is any kind of property wrapper
|
|
16
|
-
*/
|
|
17
|
-
isPropertyWrapper(e) {
|
|
18
|
-
return e && typeof e == "object" && "wrappedValue" in e && "projectedValue" in e;
|
|
19
|
-
},
|
|
20
|
-
/**
|
|
21
|
-
* Extract the wrapped value from any property wrapper
|
|
22
|
-
*/
|
|
23
|
-
unwrap(e) {
|
|
24
|
-
return this.isPropertyWrapper(e) ? e.wrappedValue : e;
|
|
25
|
-
},
|
|
26
|
-
/**
|
|
27
|
-
* Create a debug snapshot of all property wrappers in a component
|
|
28
|
-
*/
|
|
29
|
-
createDebugSnapshot(e) {
|
|
30
|
-
if (typeof window < "u") {
|
|
31
|
-
const r = window.__TACHUI_DEBUG__;
|
|
32
|
-
if (r)
|
|
33
|
-
return {
|
|
34
|
-
states: r.states ? Object.keys(r.states).filter((t) => t.startsWith(e)).reduce((t, n) => (t[n] = r.states[n].getValue(), t), {}) : {},
|
|
35
|
-
observedObjects: r.observedObjects ? Object.keys(r.observedObjects).filter((t) => t.startsWith(e)).reduce((t, n) => (t[n] = {
|
|
36
|
-
notificationCount: r.observedObjects[n].getNotificationCount(),
|
|
37
|
-
object: r.observedObjects[n].getObject()
|
|
38
|
-
}, t), {}) : {}
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
export {
|
|
45
|
-
O as CommonEnvironmentKeys,
|
|
46
|
-
i as EnvironmentObject,
|
|
47
|
-
M as StateManagerImpl,
|
|
48
|
-
m as StateUtils,
|
|
49
|
-
g as createEnvironmentObjectProvider,
|
|
50
|
-
f as createObservableEnvironmentObject,
|
|
51
|
-
S as createSignal,
|
|
52
|
-
w as createStateManager,
|
|
53
|
-
_ as getAllStateManagers,
|
|
54
|
-
h as getStateManager,
|
|
55
|
-
x as getStateManagerDebugInfo,
|
|
56
|
-
y as initializeStateDebugging,
|
|
57
|
-
v as isEnvironmentObject,
|
|
58
|
-
o as provideEnvironmentObject,
|
|
59
|
-
C as registerStateManager,
|
|
60
|
-
D as unregisterStateManager,
|
|
61
|
-
p as useEnvironmentObject
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=index.js.map
|
package/dist/state/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/state/index.ts"],"sourcesContent":["/**\n * SwiftUI-Style State Management\n *\n * This module provides SwiftUI-compatible property wrappers for state management:\n * - @State: Local component state with automatic reactivity\n * - @Binding: Two-way data binding between parent and child components\n * - @ObservedObject: Observation of external objects that implement ObservableObject\n * - @EnvironmentObject: Dependency injection through environment context\n */\n\nimport {\n CommonEnvironmentKeys,\n createEnvironmentKey,\n createObservableEnvironmentObject,\n EnvironmentObject,\n provideEnvironmentObject,\n} from './environment'\nimport { makeObservable, observable } from './observed-object'\n// Import actual implementations\nimport { createBinding, createStateBinding, State } from './state'\n\n// Enhanced @Binding property wrapper\nexport {\n BindingImpl,\n BindingUtils,\n createBinding as createEnhancedBinding,\n isBinding as isEnhancedBinding,\n} from './binding'\n// @EnvironmentObject property wrapper\nexport {\n CommonEnvironmentKeys,\n createEnvironmentKey,\n createObservableEnvironmentObject,\n EnvironmentObject,\n isEnvironmentObject,\n provideEnvironmentObject,\n} from './environment'\n\n// @ObservedObject property wrapper\nexport {\n createObservableStore,\n isObservableObject,\n isObservedObject,\n makeObservable,\n ObservableObjectBase,\n ObservedObjectWrapper as ObservedObject,\n observable,\n} from './observed-object'\n// @State property wrapper\nexport {\n createBinding,\n createStateBinding,\n isBinding,\n isState,\n State,\n unwrapValue,\n} from './state'\n// Core types\nexport type {\n Binding,\n BindingFactory,\n BindingOptions,\n BindingValue,\n ComputedProperty,\n EnvironmentKey,\n EnvironmentObject as IEnvironmentObject,\n EnvironmentObjectFactory,\n EnvironmentObjectOptions,\n EnvironmentObjectProvider,\n ObservableObject,\n ObservableObjectOptions,\n ObservedObject as IObservedObject,\n ObservedObjectFactory,\n PropertyWrapper,\n PropertyWrapperMetadata,\n PropertyWrapperRegistry,\n State as IState,\n StateBinding,\n StateFactory,\n StateManager,\n StateWrapperOptions,\n} from './types'\n\n// Legacy compatibility exports (for failing tests)\nexport const createEnvironmentObjectProvider = provideEnvironmentObject\nexport function useEnvironmentObject(key: any) {\n console.warn('useEnvironmentObject is deprecated, use EnvironmentObject instead')\n return EnvironmentObject(key)\n}\n\n/**\n * Re-export commonly used reactive primitives from the reactive system\n */\nexport { createComputed, createEffect, createMemo, createSignal } from '../reactive'\n// State manager\nexport {\n createStateManager,\n getAllStateManagers,\n getStateManager,\n getStateManagerDebugInfo,\n initializeStateDebugging,\n registerStateManager,\n StateManagerImpl,\n unregisterStateManager,\n} from './state-manager'\n\n/**\n * Utility functions for working with property wrappers\n */\nexport const StateUtils = {\n /**\n * Check if a value is any kind of property wrapper\n */\n isPropertyWrapper(value: any): value is { wrappedValue: any; projectedValue: any } {\n return (\n value && typeof value === 'object' && 'wrappedValue' in value && 'projectedValue' in value\n )\n },\n\n /**\n * Extract the wrapped value from any property wrapper\n */\n unwrap<T>(wrapper: any): T {\n if (this.isPropertyWrapper(wrapper)) {\n return wrapper.wrappedValue\n }\n return wrapper\n },\n\n /**\n * Create a debug snapshot of all property wrappers in a component\n */\n createDebugSnapshot(componentId: string): any {\n if (typeof window !== 'undefined') {\n const debug = (window as any).__TACHUI_DEBUG__\n if (debug) {\n return {\n states: debug.states\n ? Object.keys(debug.states)\n .filter((key: string) => key.startsWith(componentId))\n .reduce((acc: any, key: string) => {\n acc[key] = debug.states[key].getValue()\n return acc\n }, {})\n : {},\n observedObjects: debug.observedObjects\n ? Object.keys(debug.observedObjects)\n .filter((key: string) => key.startsWith(componentId))\n .reduce((acc: any, key: string) => {\n acc[key] = {\n notificationCount: debug.observedObjects[key].getNotificationCount(),\n object: debug.observedObjects[key].getObject(),\n }\n return acc\n }, {})\n : {},\n }\n }\n }\n return null\n },\n}\n\n/**\n * Default export with all property wrappers\n */\nexport default {\n State,\n EnvironmentObject,\n createStateBinding,\n createBinding,\n makeObservable,\n observable,\n createEnvironmentKey,\n provideEnvironmentObject,\n createObservableEnvironmentObject,\n CommonEnvironmentKeys,\n StateUtils,\n}\n"],"names":["createEnvironmentObjectProvider","provideEnvironmentObject","useEnvironmentObject","key","EnvironmentObject","StateUtils","value","wrapper","componentId","debug","acc"],"mappings":";;;;;;;;AAoFO,MAAMA,IAAkCC;AACxC,SAASC,EAAqBC,GAAU;AAC7C,iBAAQ,KAAK,mEAAmE,GACzEC,EAAkBD,CAAG;AAC9B;AAqBO,MAAME,IAAa;AAAA;AAAA;AAAA;AAAA,EAIxB,kBAAkBC,GAAiE;AACjF,WACEA,KAAS,OAAOA,KAAU,YAAY,kBAAkBA,KAAS,oBAAoBA;AAAA,EAEzF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAUC,GAAiB;AACzB,WAAI,KAAK,kBAAkBA,CAAO,IACzBA,EAAQ,eAEVA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoBC,GAA0B;AAC5C,QAAI,OAAO,SAAW,KAAa;AACjC,YAAMC,IAAS,OAAe;AAC9B,UAAIA;AACF,eAAO;AAAA,UACL,QAAQA,EAAM,SACV,OAAO,KAAKA,EAAM,MAAM,EACrB,OAAO,CAACN,MAAgBA,EAAI,WAAWK,CAAW,CAAC,EACnD,OAAO,CAACE,GAAUP,OACjBO,EAAIP,CAAG,IAAIM,EAAM,OAAON,CAAG,EAAE,SAAA,GACtBO,IACN,CAAA,CAAE,IACP,CAAA;AAAA,UACJ,iBAAiBD,EAAM,kBACnB,OAAO,KAAKA,EAAM,eAAe,EAC9B,OAAO,CAACN,MAAgBA,EAAI,WAAWK,CAAW,CAAC,EACnD,OAAO,CAACE,GAAUP,OACjBO,EAAIP,CAAG,IAAI;AAAA,YACT,mBAAmBM,EAAM,gBAAgBN,CAAG,EAAE,qBAAA;AAAA,YAC9C,QAAQM,EAAM,gBAAgBN,CAAG,EAAE,UAAA;AAAA,UAAU,GAExCO,IACN,CAAA,CAAE,IACP,CAAA;AAAA,QAAC;AAAA,IAGX;AACA,WAAO;AAAA,EACT;AACF;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../reactive/context.cjs"),g=require("../reactive/effect.cjs"),C=require("../reactive/signal.cjs");var O=Object.defineProperty,d=(e,t,n)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,s=(e,t,n)=>d(e,typeof t!="symbol"?t+"":t,n);class c{constructor(){s(this,"_objectWillChange"),s(this,"_notifyCount",0);const[t,n]=C.createSignal(void 0);this._objectWillChange={getValue:t,peek:t},this._notifySetter=n}get objectWillChange(){return this._objectWillChange}notifyChange(){this._notifyCount++;const t=this._notifySetter;t&&t(void 0)}get notificationCount(){return this._notifyCount}}class y{constructor(t,n,i,r={}){s(this,"_object"),s(this,"_metadata"),s(this,"_effectCleanup"),this._object=t,this._metadata={type:"ObservedObject",propertyName:i,componentId:n.id,options:r},this.setupObservation();const o=f.getCurrentOwner();o&&o.cleanups.push(()=>{this.cleanup()})}get wrappedValue(){return this._object}get projectedValue(){return this}get metadata(){return this._metadata}setupObservation(){const t=g.createEffect(()=>{this._object.objectWillChange()});this._effectCleanup=()=>t.dispose()}cleanup(){this._effectCleanup&&(this._effectCleanup(),this._effectCleanup=void 0)}updateObject(t){this.cleanup(),this._object=t,this.setupObservation()}}const j=(e,t={})=>{const n=m(),i=v()||"observedObject";return new y(e,n,i,t)};function l(e,t={}){const n=new c;return new Proxy(e,{set(r,o,a){const p=r[o],b=Reflect.set(r,o,a);return b&&p!==a&&t.autoNotify!==!1&&n.notifyChange(),b},get(r,o){return o==="objectWillChange"?n.objectWillChange:o==="notifyChange"?()=>n.notifyChange():o==="notificationCount"?n.notificationCount:Reflect.get(r,o)}})}function _(e={}){return t=>class extends t{constructor(...n){super(...n),s(this,"_observableBase",new c),e.autoNotify!==!1&&this.setupAutoNotification()}get objectWillChange(){return this._observableBase.objectWillChange}get notificationCount(){return this._observableBase.notificationCount}notifyChange(){this._observableBase.notifyChange()}setupAutoNotification(){const n=Object.getOwnPropertyNames(this);for(const i of n){if(i.startsWith("_")||typeof this[i]=="function")continue;let r=this[i];Object.defineProperty(this,i,{get:()=>r,set:o=>{r!==o&&(r=o,this.notifyChange())},enumerable:!0,configurable:!0})}}}}function m(){const e=f.getCurrentOwner();if(!e?.context.has(u))throw new Error("@ObservedObject can only be used within a component context");return e.context.get(u)}function v(){try{const e=new Error().stack;if(e)return e.match(/at (\w+)\./)?.[1]||null}catch{}return null}const u=Symbol("TachUI.ComponentContext");function h(e){return e&&typeof e=="object"&&"objectWillChange"in e&&"notifyChange"in e}function w(e){return e&&typeof e=="object"&&"wrappedValue"in e&&"projectedValue"in e&&h(e.wrappedValue)}function W(e,t={}){return l({...e},t)}const x=j;exports.ObservableObjectBase=c;exports.ObservedObjectWrapper=x;exports.createObservableStore=W;exports.isObservableObject=h;exports.isObservedObject=w;exports.makeObservable=l;exports.observable=_;
|
|
2
|
-
//# sourceMappingURL=observed-object.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observed-object.cjs","sources":["../../src/state/observed-object.ts"],"sourcesContent":["/**\n * @ObservedObject Property Wrapper Implementation\n *\n * Implements SwiftUI's @ObservedObject property wrapper for observing external objects\n * that conform to the ObservableObject protocol. Automatically triggers component\n * re-renders when the observed object changes.\n */\n\nimport { getCurrentOwner } from '../reactive/context'\nimport { createEffect } from '../reactive/effect'\nimport { createSignal } from '../reactive/signal'\nimport type { Signal } from '../reactive/types'\nimport type { ComponentContext } from '../runtime/types'\nimport type {\n ObservableObject,\n ObservableObjectOptions,\n ObservedObject,\n ObservedObjectFactory,\n PropertyWrapperMetadata,\n} from './types'\n\n/**\n * Base class for objects that can be observed\n * Provides the foundation for SwiftUI's ObservableObject protocol\n */\nexport class ObservableObjectBase implements ObservableObject {\n private _objectWillChange: Signal<void>\n private _notifyCount = 0\n\n constructor() {\n const [getNotify, setNotify] = createSignal<void>(undefined)\n this._objectWillChange = {\n getValue: getNotify,\n peek: getNotify,\n } as unknown as Signal<void>\n\n // Track notification setter for manual triggering\n ;(this as any)._notifySetter = setNotify\n }\n\n get objectWillChange(): Signal<void> {\n return this._objectWillChange\n }\n\n /**\n * Notify observers that the object has changed\n * Call this method whenever properties of the object change\n */\n notifyChange(): void {\n this._notifyCount++\n const setter = (this as any)._notifySetter\n if (setter) {\n setter(undefined)\n }\n }\n\n /**\n * Get the current notification count (for debugging)\n */\n get notificationCount(): number {\n return this._notifyCount\n }\n}\n\n/**\n * Internal observed object wrapper implementation\n */\nclass ObservedObjectImpl<T extends ObservableObject> implements ObservedObject<T> {\n private _object: T\n private _metadata: PropertyWrapperMetadata\n private _effectCleanup?: () => void\n\n constructor(\n object: T,\n componentContext: ComponentContext,\n propertyName: string,\n options: ObservableObjectOptions = {}\n ) {\n this._object = object\n\n // Store metadata for introspection\n this._metadata = {\n type: 'ObservedObject',\n propertyName,\n componentId: componentContext.id,\n options,\n }\n\n // Register with component context for lifecycle management\n // TODO: Integrate StateManager with ComponentContext in future version\n // if (componentContext.stateManager) {\n // componentContext.stateManager.registerObservedObject(this, options)\n // }\n\n // Set up observation effect\n this.setupObservation()\n\n // Set up cleanup on component unmount\n const owner = getCurrentOwner()\n if (owner) {\n owner.cleanups.push(() => {\n this.cleanup()\n })\n }\n }\n\n get wrappedValue(): T {\n return this._object\n }\n\n get projectedValue(): ObservedObject<T> {\n return this\n }\n\n /**\n * Get property wrapper metadata\n */\n get metadata(): PropertyWrapperMetadata {\n return this._metadata\n }\n\n /**\n * Set up reactive observation of the object\n */\n private setupObservation(): void {\n // Create an effect that tracks the object's objectWillChange signal\n const effect = createEffect(() => {\n // Access the objectWillChange signal to create dependency\n this._object.objectWillChange()\n\n // The effect will re-run whenever the object notifies changes\n // This will trigger component re-renders automatically\n })\n this._effectCleanup = () => effect.dispose()\n }\n\n /**\n * Cleanup observation\n */\n private cleanup(): void {\n if (this._effectCleanup) {\n this._effectCleanup()\n this._effectCleanup = undefined\n }\n }\n\n /**\n * Replace the observed object (advanced usage)\n */\n updateObject(newObject: T): void {\n this.cleanup()\n this._object = newObject\n this.setupObservation()\n }\n}\n\n/**\n * @ObservedObject property wrapper factory\n *\n * Creates an @ObservedObject property wrapper for observing external objects.\n * The observed object must implement the ObservableObject interface.\n *\n * @param object - The observable object to observe\n * @param options - Configuration options for the observed object wrapper\n * @returns An ObservedObject property wrapper\n *\n * @example\n * ```typescript\n * class UserData extends ObservableObjectBase {\n * private _name = 'Unknown'\n * private _age = 0\n *\n * get name() { return this._name }\n * set name(value: string) {\n * this._name = value\n * this.notifyChange()\n * }\n *\n * get age() { return this._age }\n * set age(value: number) {\n * this._age = value\n * this.notifyChange()\n * }\n * }\n *\n * class UserProfile {\n * @ObservedObject(userData)\n * private user: UserData\n *\n * render() {\n * return Text(`${this.user.name}, age ${this.user.age}`)\n * }\n * }\n * ```\n */\nconst ObservedObjectFactory: ObservedObjectFactory = <T extends ObservableObject>(\n object: T,\n options: ObservableObjectOptions = {}\n): ObservedObject<T> => {\n // This will be replaced by the decorator transformer during compilation\n const componentContext = getCurrentComponentContext()\n const propertyName = getCallerPropertyName() || 'observedObject'\n\n return new ObservedObjectImpl(object, componentContext, propertyName, options)\n}\n\n/**\n * Create an observable object with automatic change notification\n *\n * @param target - The target object to make observable\n * @param options - Configuration options\n * @returns An observable version of the target object\n *\n * @example\n * ```typescript\n * const observableData = makeObservable({\n * count: 0,\n * name: 'Test'\n * })\n *\n * // Changes to properties will automatically trigger notifications\n * observableData.count = 10 // Triggers objectWillChange\n * ```\n */\nexport function makeObservable<T extends Record<string, any>>(\n target: T,\n options: ObservableObjectOptions = {}\n): T & ObservableObject {\n const observableBase = new ObservableObjectBase()\n\n // Create a proxy that intercepts property changes\n const proxy = new Proxy(target, {\n set(obj, prop, value) {\n const oldValue = obj[prop as keyof T]\n const result = Reflect.set(obj, prop, value)\n\n // Only notify if the value actually changed\n if (result && oldValue !== value && options.autoNotify !== false) {\n observableBase.notifyChange()\n }\n\n return result\n },\n\n get(obj, prop) {\n // Provide access to ObservableObject methods\n if (prop === 'objectWillChange') {\n return observableBase.objectWillChange\n }\n if (prop === 'notifyChange') {\n return () => observableBase.notifyChange()\n }\n if (prop === 'notificationCount') {\n return observableBase.notificationCount\n }\n\n return Reflect.get(obj, prop)\n },\n })\n\n return proxy as T & ObservableObject\n}\n\n/**\n * Create an observable class decorator\n *\n * @param options - Configuration options\n * @returns A class decorator that makes the class observable\n *\n * @example\n * ```typescript\n * @observable()\n * class TodoItem {\n * text: string = ''\n * completed: boolean = false\n *\n * toggle() {\n * this.completed = !this.completed\n * // Change notification happens automatically\n * }\n * }\n * ```\n */\nexport function observable(options: ObservableObjectOptions = {}) {\n return <T extends new (...args: any[]) => any>(constructor: T) =>\n class extends constructor implements ObservableObject {\n private _observableBase = new ObservableObjectBase()\n\n get objectWillChange(): Signal<void> {\n return this._observableBase.objectWillChange\n }\n\n get notificationCount(): number {\n return this._observableBase.notificationCount\n }\n\n notifyChange(): void {\n this._observableBase.notifyChange()\n }\n\n constructor(...args: any[]) {\n super(...args)\n\n // If auto-notify is enabled, set up property interception\n if (options.autoNotify !== false) {\n this.setupAutoNotification()\n }\n }\n\n private setupAutoNotification(): void {\n const propertyNames = Object.getOwnPropertyNames(this)\n\n for (const propName of propertyNames) {\n if (propName.startsWith('_') || typeof this[propName as keyof this] === 'function') {\n continue\n }\n\n let value = this[propName as keyof this]\n\n Object.defineProperty(this, propName, {\n get: () => value,\n set: (newValue) => {\n if (value !== newValue) {\n value = newValue\n this.notifyChange()\n }\n },\n enumerable: true,\n configurable: true,\n })\n }\n }\n } as any\n}\n\n/**\n * Helper to get current component context (will be injected by compiler)\n */\nfunction getCurrentComponentContext(): ComponentContext {\n const owner = getCurrentOwner()\n if (!owner?.context.has(ComponentContextSymbol)) {\n throw new Error('@ObservedObject can only be used within a component context')\n }\n return owner.context.get(ComponentContextSymbol) as ComponentContext\n}\n\n/**\n * Helper to get the property name of the caller (used for metadata)\n */\nfunction getCallerPropertyName(): string | null {\n try {\n const stack = new Error().stack\n if (stack) {\n const match = stack.match(/at (\\w+)\\./)?.[1]\n return match || null\n }\n } catch {\n // Ignore errors in stack parsing\n }\n return null\n}\n\n/**\n * Symbol for component context storage\n */\nconst ComponentContextSymbol = Symbol('TachUI.ComponentContext')\n\n/**\n * Type guard for ObservableObject\n */\nexport function isObservableObject(value: any): value is ObservableObject {\n return (\n value && typeof value === 'object' && 'objectWillChange' in value && 'notifyChange' in value\n )\n}\n\n/**\n * Type guard for ObservedObject property wrapper\n */\nexport function isObservedObject<T extends ObservableObject>(\n value: any\n): value is ObservedObject<T> {\n return (\n value &&\n typeof value === 'object' &&\n 'wrappedValue' in value &&\n 'projectedValue' in value &&\n isObservableObject(value.wrappedValue)\n )\n}\n\n/**\n * Utility to create a simple observable store\n */\nexport function createObservableStore<T extends Record<string, any>>(\n initialState: T,\n options: ObservableObjectOptions = {}\n): T & ObservableObject {\n return makeObservable({ ...initialState }, options)\n}\n\n/**\n * Export the ObservedObject factory function\n */\nexport const ObservedObjectWrapper = ObservedObjectFactory\n"],"names":["ObservableObjectBase","__publicField","getNotify","setNotify","createSignal","setter","ObservedObjectImpl","object","componentContext","propertyName","options","owner","getCurrentOwner","effect","createEffect","newObject","ObservedObjectFactory","getCurrentComponentContext","getCallerPropertyName","makeObservable","target","observableBase","obj","prop","value","oldValue","result","observable","constructor","args","propertyNames","propName","newValue","ComponentContextSymbol","stack","isObservableObject","isObservedObject","createObservableStore","initialState","ObservedObjectWrapper"],"mappings":"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"}
|