@furo/open-models 1.20.2 → 1.21.0

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.
@@ -2627,15 +2627,284 @@
2627
2627
  },
2628
2628
  {
2629
2629
  "kind": "javascript-module",
2630
- "path": "dist/web-components/furo-type-renderer.js",
2630
+ "path": "dist/decorators/DefaultServiceEventHandlers.js",
2631
+ "declarations": [
2632
+ {
2633
+ "kind": "function",
2634
+ "name": "DefaultServiceEventHandlers",
2635
+ "parameters": [
2636
+ {
2637
+ "name": "dispatch",
2638
+ "type": {
2639
+ "text": "DispatchFn"
2640
+ },
2641
+ "description": "Function to dispatch events (typically bound to the service's dispatchEvent)"
2642
+ },
2643
+ {
2644
+ "name": "options",
2645
+ "default": "{}",
2646
+ "type": {
2647
+ "text": "DefaultServiceEventHandlersOptions"
2648
+ },
2649
+ "description": "Optional configuration"
2650
+ }
2651
+ ],
2652
+ "description": "### DefaultServiceEventHandlers\n\nCreates default service handlers that dispatch standard events.\nUse this to reduce boilerplate when setting up service handlers.\n\nThe `onResponse` handler is intentionally NOT included - you must provide your own\nimplementation since response handling is typically service-specific.\n\nUsage:\n```typescript\nclass MyEntityService extends EventTarget {\n private dispatch = createDispatch(this);\n\n setupHandlers() {\n this.service.Get.setHandlers({\n ...DefaultServiceEventHandlers(this.dispatch),\n onResponse: (response, serverResponse) => {\n // Your custom response handling\n this.entity.fromLiteral(response.entity);\n this.dispatch(\"response-received\", { response, serverResponse });\n },\n });\n }\n}\n```\n\nWith loading check:\n```typescript\nthis.service.Get.setHandlers({\n ...DefaultServiceEventHandlers(this.dispatch, {\n isLoading: () => this.service.Get.isLoading || this.service.Update.isLoading,\n }),\n onResponse: (response, serverResponse) => { ... },\n});\n```",
2653
+ "return": {
2654
+ "type": {
2655
+ "text": ""
2656
+ }
2657
+ }
2658
+ },
2659
+ {
2660
+ "kind": "function",
2661
+ "name": "CreateDispatch",
2662
+ "return": {
2663
+ "type": {
2664
+ "text": ""
2665
+ }
2666
+ },
2667
+ "parameters": [
2668
+ {
2669
+ "name": "target",
2670
+ "type": {
2671
+ "text": "EventTarget"
2672
+ },
2673
+ "description": "The EventTarget to dispatch events on"
2674
+ }
2675
+ ],
2676
+ "description": "### createDispatch\n\nHelper to create a typed dispatch function for an EventTarget.\n\nUsage:\n```typescript\nclass MyService extends EventTarget {\n private dispatch = createDispatch(this);\n\n doSomething() {\n this.dispatch(\"busy-changed\", { busy: true });\n }\n}\n```"
2677
+ }
2678
+ ],
2679
+ "exports": [
2680
+ {
2681
+ "kind": "js",
2682
+ "name": "DefaultServiceEventHandlers",
2683
+ "declaration": {
2684
+ "name": "DefaultServiceEventHandlers",
2685
+ "module": "src/decorators/DefaultServiceEventHandlers.ts"
2686
+ }
2687
+ },
2688
+ {
2689
+ "kind": "js",
2690
+ "name": "CreateDispatch",
2691
+ "declaration": {
2692
+ "name": "CreateDispatch",
2693
+ "module": "src/decorators/DefaultServiceEventHandlers.ts"
2694
+ }
2695
+ }
2696
+ ]
2697
+ },
2698
+ {
2699
+ "kind": "javascript-module",
2700
+ "path": "dist/decorators/EntityServiceTypes.js",
2631
2701
  "declarations": [],
2702
+ "exports": []
2703
+ },
2704
+ {
2705
+ "kind": "javascript-module",
2706
+ "path": "dist/decorators/FieldBindings.js",
2707
+ "declarations": [
2708
+ {
2709
+ "kind": "variable",
2710
+ "name": "fieldBindings",
2711
+ "type": {
2712
+ "text": "object"
2713
+ },
2714
+ "default": "{ /** * Decorator for the `model` property. * * Handles: * - Binding/unbinding when model changes * - Resolving reader/writer functions based on model type * - Calling reader on model value changes * - Providing `writeToModel()` method */ model() { return function modelDecorator(target: object, propertyKey: string) { const ctor = target.constructor as typeof ReactiveElement; // Patch lifecycle patchLifecycle(ctor); // Add writeToModel helper method if (!Object.prototype.hasOwnProperty.call(target, \"writeToModel\")) { Object.defineProperty(target, \"writeToModel\", { value: function writeToModel(this: LitElement & Record<symbol, (() => void) | undefined>) { const writeFn = this[MODEL_WRITE_FN]; if (writeFn) { try { writeFn(); } catch (e) { console.error(\"Failed to write to model:\", e); } } }, writable: false, enumerable: false, configurable: true, }); } // Create getter/setter for the model property Object.defineProperty(target, propertyKey, { get(this: LitElement & Record<symbol, FieldNodeLike | undefined>): FieldNodeLike | undefined { return this[CURRENT_MODEL]; }, set(this: LitElement & BindableComponent & Record<symbol, FieldNodeLike | (() => void) | undefined>, value: FieldNodeLike | undefined) { const oldModel = this[CURRENT_MODEL] as FieldNodeLike | undefined; if (value === oldModel) return; // Unbind from old model if (oldModel) { unbindFromModel(this, oldModel); } // Store new model this[CURRENT_MODEL] = value; // Resolve reader/writer functions based on type if (value) { const typeName = value.__meta?.typeName ?? \"primitives.STRING\"; // Resolve reader // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) const reader = this.modelReaders?.get(typeName); if (reader) { this[MODEL_READ_FN] = reader.bind(this); } else { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) console.warn(`No modelReader for type \"${typeName}\". Available: ${[...(this.modelReaders?.keys() ?? [])].join(\", \")}`); this[MODEL_READ_FN] = undefined; } // Resolve writer // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) const writer = this.modelWriters?.get(typeName); if (writer) { this[MODEL_WRITE_FN] = writer.bind(this); } else { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) console.warn(`No modelWriter for type \"${typeName}\". Available: ${[...(this.modelWriters?.keys() ?? [])].join(\", \")}`); this[MODEL_WRITE_FN] = undefined; } } else { this[MODEL_READ_FN] = undefined; this[MODEL_WRITE_FN] = undefined; } // Bind to new model (if connected) if (value && this.isConnected) { bindToModel(this, value); } // Trigger Lit update this.requestUpdate(); }, enumerable: true, configurable: true, }); }; }, /** * Binds a method to an event on the model. * When the event fires, the method is called with the event detail. * * @param eventType - The event type to listen for */ onEvent(eventType: ModelEventType) { return function onEventDecorator(target: object, propertyKey: string, descriptor: PropertyDescriptor) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const originalMethod = descriptor.value; const ctor = target.constructor as typeof ReactiveElement; let events = (ctor as unknown as Record<symbol, FieldEventMeta[]>)[FIELD_EVENTS]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) if (!events) { events = []; (ctor as unknown as Record<symbol, FieldEventMeta[]>)[FIELD_EVENTS] = events; } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment events.push({ propertyKey, eventType, method: originalMethod }); patchLifecycle(ctor); }; }, /** * Decorator that marks a method to be called once after a new model is assigned and bound. * * Useful for one-time setup like setting a11y attributes, placeholders, or constraints * based on the model's type. * * @example * ```typescript * @fieldBindings.onInit() * protected init() { * this.accessibleName = this.model?.__label ?? \"Toggle\"; * } * ``` */ onInit() { return function onInitDecorator(target: object, propertyKey: string, descriptor: PropertyDescriptor) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const originalMethod = descriptor.value; const ctor = target.constructor as typeof ReactiveElement; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type let inits = (ctor as unknown as Record<symbol, { propertyKey: string; method: Function }[]>)[FIELD_INIT_METHODS]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) if (!inits) { inits = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type (ctor as unknown as Record<symbol, { propertyKey: string; method: Function }[]>)[FIELD_INIT_METHODS] = inits; } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment inits.push({ propertyKey, method: originalMethod }); patchLifecycle(ctor); }; }, }",
2715
+ "description": "### fieldBindings\n\nDecorators for creating reusable components that bind to FieldNode models.\n\nThe component provides `modelReaders` and `modelWriters` maps keyed by\n`__meta.typeName`. The decorator handles:\n- Binding/unbinding on model change\n- Calling the correct reader when model value changes\n- Providing `writeToModel()` method that calls the correct writer"
2716
+ }
2717
+ ],
2632
2718
  "exports": [
2633
2719
  {
2634
- "kind": "custom-element-definition",
2635
- "name": "furo-type-renderer",
2720
+ "kind": "js",
2721
+ "name": "fieldBindings",
2636
2722
  "declaration": {
2637
- "name": "TypeRenderer",
2638
- "module": "/src/web-components/impl/TypeRenderer/TypeRenderer"
2723
+ "name": "fieldBindings",
2724
+ "module": "src/decorators/FieldBindings.ts"
2725
+ }
2726
+ }
2727
+ ]
2728
+ },
2729
+ {
2730
+ "kind": "javascript-module",
2731
+ "path": "dist/decorators/ModelDecorators.js",
2732
+ "declarations": [
2733
+ {
2734
+ "kind": "function",
2735
+ "name": "ModelBindings",
2736
+ "parameters": [
2737
+ {
2738
+ "name": "model",
2739
+ "type": {
2740
+ "text": "FieldNodeLike"
2741
+ },
2742
+ "description": "The FieldNode model to bind to"
2743
+ }
2744
+ ],
2745
+ "description": "### ModelBindings Factory\n\nCreates type-safe decorators bound to a specific FieldNode model.\nUse this to bind component properties and methods to model events.\n\nUsage:\n```typescript\nimport { ModelBindings } from \"@x/furo/open-models/ModelDecorators\";\nimport { CubeEntityModel } from \"./CubeEntityModel\";\n\nconst cubeModel = ModelBindings(CubeEntityModel.model);\n\nclass MyComponent extends LitElement {\n // Triggers re-render on any model update",
2746
+ "return": {
2747
+ "type": {
2748
+ "text": ""
2749
+ }
2750
+ }
2751
+ }
2752
+ ],
2753
+ "exports": [
2754
+ {
2755
+ "kind": "js",
2756
+ "name": "ModelBindings",
2757
+ "declaration": {
2758
+ "name": "ModelBindings",
2759
+ "module": "src/decorators/ModelDecorators.ts"
2760
+ }
2761
+ }
2762
+ ]
2763
+ },
2764
+ {
2765
+ "kind": "javascript-module",
2766
+ "path": "dist/decorators/SchemaBuilder.js",
2767
+ "declarations": [
2768
+ {
2769
+ "kind": "class",
2770
+ "description": "",
2771
+ "name": "SchemaBuilder",
2772
+ "members": [
2773
+ {
2774
+ "kind": "method",
2775
+ "name": "generate",
2776
+ "privacy": "public",
2777
+ "static": true,
2778
+ "return": {
2779
+ "type": {
2780
+ "text": "JSONSchema7"
2781
+ }
2782
+ },
2783
+ "parameters": [
2784
+ {
2785
+ "name": "model",
2786
+ "type": {
2787
+ "text": "FieldNode"
2788
+ }
2789
+ }
2790
+ ]
2791
+ },
2792
+ {
2793
+ "kind": "method",
2794
+ "name": "getProps",
2795
+ "privacy": "private",
2796
+ "static": true,
2797
+ "return": {
2798
+ "type": {
2799
+ "text": "Record<string, JSONSchema7Definition>"
2800
+ }
2801
+ },
2802
+ "parameters": [
2803
+ {
2804
+ "name": "model",
2805
+ "type": {
2806
+ "text": "FieldNode"
2807
+ }
2808
+ }
2809
+ ]
2810
+ },
2811
+ {
2812
+ "kind": "method",
2813
+ "name": "getRequiredFields",
2814
+ "privacy": "private",
2815
+ "static": true,
2816
+ "return": {
2817
+ "type": {
2818
+ "text": "string[]"
2819
+ }
2820
+ },
2821
+ "parameters": [
2822
+ {
2823
+ "name": "descriptors",
2824
+ "type": {
2825
+ "text": "FieldDescriptor[]"
2826
+ }
2827
+ }
2828
+ ]
2829
+ },
2830
+ {
2831
+ "kind": "method",
2832
+ "name": "getConstraints",
2833
+ "privacy": "private",
2834
+ "static": true,
2835
+ "parameters": [
2836
+ {
2837
+ "name": "constraints",
2838
+ "type": {
2839
+ "text": "FieldConstraints | undefined"
2840
+ }
2841
+ }
2842
+ ]
2843
+ },
2844
+ {
2845
+ "kind": "method",
2846
+ "name": "createFieldNodeFromSchema",
2847
+ "privacy": "public",
2848
+ "static": true,
2849
+ "return": {
2850
+ "type": {
2851
+ "text": "FieldNode"
2852
+ }
2853
+ },
2854
+ "parameters": [
2855
+ {
2856
+ "name": "schema",
2857
+ "type": {
2858
+ "text": "FieldNodeSchema"
2859
+ }
2860
+ }
2861
+ ]
2862
+ }
2863
+ ]
2864
+ }
2865
+ ],
2866
+ "exports": [
2867
+ {
2868
+ "kind": "js",
2869
+ "name": "SchemaBuilder",
2870
+ "declaration": {
2871
+ "name": "SchemaBuilder",
2872
+ "module": "src/decorators/SchemaBuilder.ts"
2873
+ }
2874
+ }
2875
+ ]
2876
+ },
2877
+ {
2878
+ "kind": "javascript-module",
2879
+ "path": "dist/decorators/ServiceDecorators.js",
2880
+ "declarations": [
2881
+ {
2882
+ "kind": "function",
2883
+ "name": "ServiceBindings",
2884
+ "parameters": [
2885
+ {
2886
+ "name": "service",
2887
+ "type": {
2888
+ "text": "EventTarget"
2889
+ },
2890
+ "description": "The EventTarget service to bind to"
2891
+ }
2892
+ ],
2893
+ "description": "### ServiceBindings Factory\n\nCreates type-safe decorators bound to a specific service instance.\nUse this to bind component properties and methods to service events.\n\nThe factory is generic and works with any `EventTarget`.\nEvent types and their detail payloads are type-checked at compile time\nvia the `TEventMap` type parameter.\n\nUsage:\n```typescript\nimport { cubeEntityService } from \"./CubeEntityService\";\nimport { ServiceBindings } from \"./ServiceDecorators\";\n\nconst cube = ServiceBindings(cubeEntityService);\n\nclass MyComponent extends LitElement {\n // Property binding - type-safe event name, auto-extracts from detail",
2894
+ "return": {
2895
+ "type": {
2896
+ "text": ""
2897
+ }
2898
+ }
2899
+ }
2900
+ ],
2901
+ "exports": [
2902
+ {
2903
+ "kind": "js",
2904
+ "name": "ServiceBindings",
2905
+ "declaration": {
2906
+ "name": "ServiceBindings",
2907
+ "module": "src/decorators/ServiceDecorators.ts"
2639
2908
  }
2640
2909
  }
2641
2910
  ]
@@ -6963,215 +7232,14 @@
6963
7232
  "description": "The field of a FieldNode"
6964
7233
  },
6965
7234
  {
6966
- "name": "literalData",
6967
- "type": {
6968
- "text": ""
6969
- },
6970
- "description": "The literal type matches the interface from ITypeName."
6971
- }
6972
- ],
6973
- "description": "Helper method to update a field of a type. Used by the generated models.\nTriggers also the validation and clearance, if needed.",
6974
- "inheritedFrom": {
6975
- "name": "FieldNode",
6976
- "module": "dist/FieldNode.js"
6977
- }
6978
- },
6979
- {
6980
- "kind": "method",
6981
- "name": "__notifyFieldValueChange",
6982
- "privacy": "protected",
6983
- "parameters": [
6984
- {
6985
- "name": "bubbles",
6986
- "optional": true,
6987
- "type": {
6988
- "text": "boolean"
6989
- }
6990
- }
6991
- ],
6992
- "description": "Notifies field changes",
6993
- "inheritedFrom": {
6994
- "name": "FieldNode",
6995
- "module": "dist/FieldNode.js"
6996
- }
6997
- },
6998
- {
6999
- "kind": "field",
7000
- "name": "__childNodes",
7001
- "type": {
7002
- "text": "any[]"
7003
- },
7004
- "privacy": "public",
7005
- "description": "Returns the child nodes of a node.",
7006
- "readonly": true,
7007
- "inheritedFrom": {
7008
- "name": "FieldNode",
7009
- "module": "dist/FieldNode.js"
7010
- }
7011
- },
7012
- {
7013
- "kind": "method",
7014
- "name": "__broadcastEvent",
7015
- "parameters": [
7016
- {
7017
- "name": "event",
7018
- "type": {
7019
- "text": "CustomEvent"
7020
- }
7021
- }
7022
- ],
7023
- "description": "Broadcast an event to all child nodes of a field node.",
7024
- "inheritedFrom": {
7025
- "name": "FieldNode",
7026
- "module": "dist/FieldNode.js"
7027
- }
7028
- },
7029
- {
7030
- "kind": "method",
7031
- "name": "__dispatchEvent",
7032
- "return": {
7033
- "type": {
7034
- "text": "CustomEvent"
7035
- }
7036
- },
7037
- "parameters": [
7038
- {
7039
- "name": "event",
7040
- "type": {
7041
- "text": "CustomEvent"
7042
- },
7043
- "description": "A generic custom event."
7044
- }
7045
- ],
7046
- "description": "Dispatches a custom event on a FieldNode",
7047
- "inheritedFrom": {
7048
- "name": "FieldNode",
7049
- "module": "dist/FieldNode.js"
7050
- }
7051
- },
7052
- {
7053
- "kind": "method",
7054
- "name": "__triggerNodeEvents",
7055
- "privacy": "protected",
7056
- "parameters": [
7057
- {
7058
- "name": "event",
7059
- "type": {
7060
- "text": "CustomEvent<FieldNode>"
7061
- }
7062
- }
7063
- ],
7064
- "description": "Helper method to invoke/execute the event on the current node",
7065
- "inheritedFrom": {
7066
- "name": "FieldNode",
7067
- "module": "dist/FieldNode.js"
7068
- }
7069
- },
7070
- {
7071
- "kind": "method",
7072
- "name": "__addEventListener",
7073
- "privacy": "public",
7074
- "return": {
7075
- "type": {
7076
- "text": "void"
7077
- }
7078
- },
7079
- "parameters": [
7080
- {
7081
- "name": "type",
7082
- "type": {
7083
- "text": "string"
7084
- },
7085
- "description": "A case-sensitive string representing the event type to listen for."
7086
- },
7087
- {
7088
- "name": "listener",
7089
- "type": {
7090
- "text": "function"
7091
- },
7092
- "description": "The object that receives a notification (an object that implements the Event interface) when an event of the specified type occurs. This must be null, an object with a handleEvent() method, or a JavaScript function. See The event listener callback for details on the callback itself."
7093
- },
7094
- {
7095
- "name": "options",
7096
- "optional": true,
7097
- "type": {
7098
- "text": ""
7099
- },
7100
- "description": "An object that specifies characteristics about the event listener. \\n\\nThe available option is `once:boolean`"
7101
- }
7102
- ],
7103
- "description": "Add a handler to a node",
7104
- "inheritedFrom": {
7105
- "name": "FieldNode",
7106
- "module": "dist/FieldNode.js"
7107
- }
7108
- },
7109
- {
7110
- "kind": "method",
7111
- "name": "__addCustomEventListener",
7112
- "privacy": "public",
7113
- "return": {
7114
- "type": {
7115
- "text": "void"
7116
- }
7117
- },
7118
- "parameters": [
7119
- {
7120
- "name": "type",
7121
- "type": {
7122
- "text": "string"
7123
- }
7124
- },
7125
- {
7126
- "name": "handler",
7127
- "type": {
7128
- "text": "CustomEventListener"
7129
- }
7130
- },
7131
- {
7132
- "name": "options",
7133
- "optional": true,
7134
- "type": {
7135
- "text": "boolean | AddEventListenerOptions"
7136
- }
7137
- }
7138
- ],
7139
- "inheritedFrom": {
7140
- "name": "FieldNode",
7141
- "module": "dist/FieldNode.js"
7142
- }
7143
- },
7144
- {
7145
- "kind": "method",
7146
- "name": "__removeEventListener",
7147
- "privacy": "public",
7148
- "return": {
7149
- "type": {
7150
- "text": "void"
7151
- }
7152
- },
7153
- "parameters": [
7154
- {
7155
- "name": "type",
7156
- "type": {
7157
- "text": "ModelEventType"
7158
- }
7159
- },
7160
- {
7161
- "name": "handler",
7162
- "type": {
7163
- "text": "CustomEventListener"
7164
- }
7165
- },
7166
- {
7167
- "name": "_options",
7168
- "optional": true,
7235
+ "name": "literalData",
7169
7236
  "type": {
7170
- "text": "boolean | EventListenerOptions"
7171
- }
7237
+ "text": ""
7238
+ },
7239
+ "description": "The literal type matches the interface from ITypeName."
7172
7240
  }
7173
7241
  ],
7174
- "description": "Removes the handler from a node",
7242
+ "description": "Helper method to update a field of a type. Used by the generated models.\nTriggers also the validation and clearance, if needed.",
7175
7243
  "inheritedFrom": {
7176
7244
  "name": "FieldNode",
7177
7245
  "module": "dist/FieldNode.js"
@@ -7179,45 +7247,32 @@
7179
7247
  },
7180
7248
  {
7181
7249
  "kind": "method",
7182
- "name": "__removeCustomEventListener",
7183
- "privacy": "public",
7184
- "return": {
7185
- "type": {
7186
- "text": "void"
7187
- }
7188
- },
7250
+ "name": "__notifyFieldValueChange",
7251
+ "privacy": "protected",
7189
7252
  "parameters": [
7190
7253
  {
7191
- "name": "type",
7192
- "type": {
7193
- "text": "string"
7194
- }
7195
- },
7196
- {
7197
- "name": "handler",
7198
- "type": {
7199
- "text": "CustomEventListener"
7200
- }
7201
- },
7202
- {
7203
- "name": "_options",
7254
+ "name": "bubbles",
7204
7255
  "optional": true,
7205
7256
  "type": {
7206
- "text": "boolean | EventListenerOptions"
7257
+ "text": "boolean"
7207
7258
  }
7208
7259
  }
7209
7260
  ],
7210
- "description": "Removes the handler from a node",
7261
+ "description": "Notifies field changes",
7211
7262
  "inheritedFrom": {
7212
7263
  "name": "FieldNode",
7213
7264
  "module": "dist/FieldNode.js"
7214
7265
  }
7215
7266
  },
7216
7267
  {
7217
- "kind": "method",
7218
- "name": "___updateNotEmptyPath",
7219
- "privacy": "private",
7220
- "description": "if some child is not empty, set isEmpty to false, all the way up to the root node",
7268
+ "kind": "field",
7269
+ "name": "__childNodes",
7270
+ "type": {
7271
+ "text": "any[]"
7272
+ },
7273
+ "privacy": "public",
7274
+ "description": "Returns the child nodes of a node.",
7275
+ "readonly": true,
7221
7276
  "inheritedFrom": {
7222
7277
  "name": "FieldNode",
7223
7278
  "module": "dist/FieldNode.js"
@@ -7225,21 +7280,16 @@
7225
7280
  },
7226
7281
  {
7227
7282
  "kind": "method",
7228
- "name": "__checkConstraints",
7229
- "privacy": "protected",
7230
- "return": {
7231
- "type": {
7232
- "text": "string[] | undefined"
7233
- }
7234
- },
7283
+ "name": "__broadcastEvent",
7235
7284
  "parameters": [
7236
7285
  {
7237
- "name": "fieldConstraints",
7286
+ "name": "event",
7238
7287
  "type": {
7239
- "text": "FieldConstraints"
7288
+ "text": "CustomEvent"
7240
7289
  }
7241
7290
  }
7242
7291
  ],
7292
+ "description": "Broadcast an event to all child nodes of a field node.",
7243
7293
  "inheritedFrom": {
7244
7294
  "name": "FieldNode",
7245
7295
  "module": "dist/FieldNode.js"
@@ -7247,16 +7297,22 @@
7247
7297
  },
7248
7298
  {
7249
7299
  "kind": "method",
7250
- "name": "__toLowerCamelCase",
7251
- "privacy": "private",
7300
+ "name": "__dispatchEvent",
7301
+ "return": {
7302
+ "type": {
7303
+ "text": "CustomEvent"
7304
+ }
7305
+ },
7252
7306
  "parameters": [
7253
7307
  {
7254
- "name": "string",
7308
+ "name": "event",
7255
7309
  "type": {
7256
- "text": "string"
7257
- }
7310
+ "text": "CustomEvent"
7311
+ },
7312
+ "description": "A generic custom event."
7258
7313
  }
7259
7314
  ],
7315
+ "description": "Dispatches a custom event on a FieldNode",
7260
7316
  "inheritedFrom": {
7261
7317
  "name": "FieldNode",
7262
7318
  "module": "dist/FieldNode.js"
@@ -7264,16 +7320,17 @@
7264
7320
  },
7265
7321
  {
7266
7322
  "kind": "method",
7267
- "name": "__toLowerCamelCaseWithoutXPrefix",
7323
+ "name": "__triggerNodeEvents",
7268
7324
  "privacy": "protected",
7269
7325
  "parameters": [
7270
7326
  {
7271
- "name": "string",
7327
+ "name": "event",
7272
7328
  "type": {
7273
- "text": "string"
7329
+ "text": "CustomEvent<FieldNode>"
7274
7330
  }
7275
7331
  }
7276
7332
  ],
7333
+ "description": "Helper method to invoke/execute the event on the current node",
7277
7334
  "inheritedFrom": {
7278
7335
  "name": "FieldNode",
7279
7336
  "module": "dist/FieldNode.js"
@@ -7281,333 +7338,261 @@
7281
7338
  },
7282
7339
  {
7283
7340
  "kind": "method",
7284
- "name": "__toSnakeCase",
7285
- "privacy": "private",
7341
+ "name": "__addEventListener",
7342
+ "privacy": "public",
7286
7343
  "return": {
7287
7344
  "type": {
7288
- "text": "string"
7345
+ "text": "void"
7289
7346
  }
7290
7347
  },
7291
7348
  "parameters": [
7292
7349
  {
7293
- "name": "string",
7350
+ "name": "type",
7294
7351
  "type": {
7295
7352
  "text": "string"
7296
- }
7353
+ },
7354
+ "description": "A case-sensitive string representing the event type to listen for."
7355
+ },
7356
+ {
7357
+ "name": "listener",
7358
+ "type": {
7359
+ "text": "function"
7360
+ },
7361
+ "description": "The object that receives a notification (an object that implements the Event interface) when an event of the specified type occurs. This must be null, an object with a handleEvent() method, or a JavaScript function. See The event listener callback for details on the callback itself."
7362
+ },
7363
+ {
7364
+ "name": "options",
7365
+ "optional": true,
7366
+ "type": {
7367
+ "text": ""
7368
+ },
7369
+ "description": "An object that specifies characteristics about the event listener. \\n\\nThe available option is `once:boolean`"
7297
7370
  }
7298
7371
  ],
7372
+ "description": "Add a handler to a node",
7299
7373
  "inheritedFrom": {
7300
7374
  "name": "FieldNode",
7301
7375
  "module": "dist/FieldNode.js"
7302
7376
  }
7303
7377
  },
7304
7378
  {
7305
- "kind": "field",
7306
- "name": "fieldName",
7307
- "default": "parentAttributeName",
7308
- "inheritedFrom": {
7309
- "name": "FieldNode",
7310
- "module": "dist/FieldNode.js"
7311
- }
7312
- }
7313
- ],
7314
- "superclass": {
7315
- "name": "FieldNode",
7316
- "module": "/src/FieldNode"
7317
- }
7318
- }
7319
- ],
7320
- "exports": [
7321
- {
7322
- "kind": "js",
7323
- "name": "RECURSION",
7324
- "declaration": {
7325
- "name": "RECURSION",
7326
- "module": "src/proxies/RECURSION.ts"
7327
- }
7328
- }
7329
- ]
7330
- },
7331
- {
7332
- "kind": "javascript-module",
7333
- "path": "dist/decorators/DefaultServiceEventHandlers.js",
7334
- "declarations": [
7335
- {
7336
- "kind": "function",
7337
- "name": "DefaultServiceEventHandlers",
7338
- "parameters": [
7339
- {
7340
- "name": "dispatch",
7341
- "type": {
7342
- "text": "DispatchFn"
7343
- },
7344
- "description": "Function to dispatch events (typically bound to the service's dispatchEvent)"
7345
- },
7346
- {
7347
- "name": "options",
7348
- "default": "{}",
7349
- "type": {
7350
- "text": "DefaultServiceEventHandlersOptions"
7351
- },
7352
- "description": "Optional configuration"
7353
- }
7354
- ],
7355
- "description": "### DefaultServiceEventHandlers\n\nCreates default service handlers that dispatch standard events.\nUse this to reduce boilerplate when setting up service handlers.\n\nThe `onResponse` handler is intentionally NOT included - you must provide your own\nimplementation since response handling is typically service-specific.\n\nUsage:\n```typescript\nclass MyEntityService extends EventTarget {\n private dispatch = createDispatch(this);\n\n setupHandlers() {\n this.service.Get.setHandlers({\n ...DefaultServiceEventHandlers(this.dispatch),\n onResponse: (response, serverResponse) => {\n // Your custom response handling\n this.entity.fromLiteral(response.entity);\n this.dispatch(\"response-received\", { response, serverResponse });\n },\n });\n }\n}\n```\n\nWith loading check:\n```typescript\nthis.service.Get.setHandlers({\n ...DefaultServiceEventHandlers(this.dispatch, {\n isLoading: () => this.service.Get.isLoading || this.service.Update.isLoading,\n }),\n onResponse: (response, serverResponse) => { ... },\n});\n```",
7356
- "return": {
7357
- "type": {
7358
- "text": ""
7359
- }
7360
- }
7361
- },
7362
- {
7363
- "kind": "function",
7364
- "name": "CreateDispatch",
7365
- "return": {
7366
- "type": {
7367
- "text": ""
7368
- }
7369
- },
7370
- "parameters": [
7371
- {
7372
- "name": "target",
7373
- "type": {
7374
- "text": "EventTarget"
7375
- },
7376
- "description": "The EventTarget to dispatch events on"
7377
- }
7378
- ],
7379
- "description": "### createDispatch\n\nHelper to create a typed dispatch function for an EventTarget.\n\nUsage:\n```typescript\nclass MyService extends EventTarget {\n private dispatch = createDispatch(this);\n\n doSomething() {\n this.dispatch(\"busy-changed\", { busy: true });\n }\n}\n```"
7380
- }
7381
- ],
7382
- "exports": [
7383
- {
7384
- "kind": "js",
7385
- "name": "DefaultServiceEventHandlers",
7386
- "declaration": {
7387
- "name": "DefaultServiceEventHandlers",
7388
- "module": "src/decorators/DefaultServiceEventHandlers.ts"
7389
- }
7390
- },
7391
- {
7392
- "kind": "js",
7393
- "name": "CreateDispatch",
7394
- "declaration": {
7395
- "name": "CreateDispatch",
7396
- "module": "src/decorators/DefaultServiceEventHandlers.ts"
7397
- }
7398
- }
7399
- ]
7400
- },
7401
- {
7402
- "kind": "javascript-module",
7403
- "path": "dist/decorators/EntityServiceTypes.js",
7404
- "declarations": [],
7405
- "exports": []
7406
- },
7407
- {
7408
- "kind": "javascript-module",
7409
- "path": "dist/decorators/FieldBindings.js",
7410
- "declarations": [
7411
- {
7412
- "kind": "variable",
7413
- "name": "fieldBindings",
7414
- "type": {
7415
- "text": "object"
7416
- },
7417
- "default": "{ /** * Decorator for the `model` property. * * Handles: * - Binding/unbinding when model changes * - Resolving reader/writer functions based on model type * - Calling reader on model value changes * - Providing `writeToModel()` method */ model() { return function modelDecorator(target: object, propertyKey: string) { const ctor = target.constructor as typeof ReactiveElement; // Patch lifecycle patchLifecycle(ctor); // Add writeToModel helper method if (!Object.prototype.hasOwnProperty.call(target, \"writeToModel\")) { Object.defineProperty(target, \"writeToModel\", { value: function writeToModel(this: LitElement & Record<symbol, (() => void) | undefined>) { const writeFn = this[MODEL_WRITE_FN]; if (writeFn) { try { writeFn(); } catch (e) { console.error(\"Failed to write to model:\", e); } } }, writable: false, enumerable: false, configurable: true, }); } // Create getter/setter for the model property Object.defineProperty(target, propertyKey, { get(this: LitElement & Record<symbol, FieldNodeLike | undefined>): FieldNodeLike | undefined { return this[CURRENT_MODEL]; }, set(this: LitElement & BindableComponent & Record<symbol, FieldNodeLike | (() => void) | undefined>, value: FieldNodeLike | undefined) { const oldModel = this[CURRENT_MODEL] as FieldNodeLike | undefined; if (value === oldModel) return; // Unbind from old model if (oldModel) { unbindFromModel(this, oldModel); } // Store new model this[CURRENT_MODEL] = value; // Resolve reader/writer functions based on type if (value) { const typeName = value.__meta?.typeName ?? \"primitives.STRING\"; // Resolve reader // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) const reader = this.modelReaders?.get(typeName); if (reader) { this[MODEL_READ_FN] = reader.bind(this); } else { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) console.warn(`No modelReader for type \"${typeName}\". Available: ${[...(this.modelReaders?.keys() ?? [])].join(\", \")}`); this[MODEL_READ_FN] = undefined; } // Resolve writer // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) const writer = this.modelWriters?.get(typeName); if (writer) { this[MODEL_WRITE_FN] = writer.bind(this); } else { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) console.warn(`No modelWriter for type \"${typeName}\". Available: ${[...(this.modelWriters?.keys() ?? [])].join(\", \")}`); this[MODEL_WRITE_FN] = undefined; } } else { this[MODEL_READ_FN] = undefined; this[MODEL_WRITE_FN] = undefined; } // Bind to new model (if connected) if (value && this.isConnected) { bindToModel(this, value); } // Trigger Lit update this.requestUpdate(); }, enumerable: true, configurable: true, }); }; }, /** * Binds a method to an event on the model. * When the event fires, the method is called with the event detail. * * @param eventType - The event type to listen for */ onEvent(eventType: ModelEventType) { return function onEventDecorator(target: object, propertyKey: string, descriptor: PropertyDescriptor) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const originalMethod = descriptor.value; const ctor = target.constructor as typeof ReactiveElement; let events = (ctor as unknown as Record<symbol, FieldEventMeta[]>)[FIELD_EVENTS]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) if (!events) { events = []; (ctor as unknown as Record<symbol, FieldEventMeta[]>)[FIELD_EVENTS] = events; } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment events.push({ propertyKey, eventType, method: originalMethod }); patchLifecycle(ctor); }; }, /** * Decorator that marks a method to be called once after a new model is assigned and bound. * * Useful for one-time setup like setting a11y attributes, placeholders, or constraints * based on the model's type. * * @example * ```typescript * @fieldBindings.onInit() * protected init() { * this.accessibleName = this.model?.__label ?? \"Toggle\"; * } * ``` */ onInit() { return function onInitDecorator(target: object, propertyKey: string, descriptor: PropertyDescriptor) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const originalMethod = descriptor.value; const ctor = target.constructor as typeof ReactiveElement; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type let inits = (ctor as unknown as Record<symbol, { propertyKey: string; method: Function }[]>)[FIELD_INIT_METHODS]; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input) if (!inits) { inits = []; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type (ctor as unknown as Record<symbol, { propertyKey: string; method: Function }[]>)[FIELD_INIT_METHODS] = inits; } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment inits.push({ propertyKey, method: originalMethod }); patchLifecycle(ctor); }; }, }",
7418
- "description": "### fieldBindings\n\nDecorators for creating reusable components that bind to FieldNode models.\n\nThe component provides `modelReaders` and `modelWriters` maps keyed by\n`__meta.typeName`. The decorator handles:\n- Binding/unbinding on model change\n- Calling the correct reader when model value changes\n- Providing `writeToModel()` method that calls the correct writer"
7419
- }
7420
- ],
7421
- "exports": [
7422
- {
7423
- "kind": "js",
7424
- "name": "fieldBindings",
7425
- "declaration": {
7426
- "name": "fieldBindings",
7427
- "module": "src/decorators/FieldBindings.ts"
7428
- }
7429
- }
7430
- ]
7431
- },
7432
- {
7433
- "kind": "javascript-module",
7434
- "path": "dist/decorators/ModelDecorators.js",
7435
- "declarations": [
7436
- {
7437
- "kind": "function",
7438
- "name": "ModelBindings",
7439
- "parameters": [
7440
- {
7441
- "name": "model",
7442
- "type": {
7443
- "text": "FieldNodeLike"
7379
+ "kind": "method",
7380
+ "name": "__addCustomEventListener",
7381
+ "privacy": "public",
7382
+ "return": {
7383
+ "type": {
7384
+ "text": "void"
7385
+ }
7444
7386
  },
7445
- "description": "The FieldNode model to bind to"
7446
- }
7447
- ],
7448
- "description": "### ModelBindings Factory\n\nCreates type-safe decorators bound to a specific FieldNode model.\nUse this to bind component properties and methods to model events.\n\nUsage:\n```typescript\nimport { ModelBindings } from \"@x/furo/open-models/ModelDecorators\";\nimport { CubeEntityModel } from \"./CubeEntityModel\";\n\nconst cubeModel = ModelBindings(CubeEntityModel.model);\n\nclass MyComponent extends LitElement {\n // Triggers re-render on any model update",
7449
- "return": {
7450
- "type": {
7451
- "text": ""
7452
- }
7453
- }
7454
- }
7455
- ],
7456
- "exports": [
7457
- {
7458
- "kind": "js",
7459
- "name": "ModelBindings",
7460
- "declaration": {
7461
- "name": "ModelBindings",
7462
- "module": "src/decorators/ModelDecorators.ts"
7463
- }
7464
- }
7465
- ]
7466
- },
7467
- {
7468
- "kind": "javascript-module",
7469
- "path": "dist/decorators/SchemaBuilder.js",
7470
- "declarations": [
7471
- {
7472
- "kind": "class",
7473
- "description": "",
7474
- "name": "SchemaBuilder",
7475
- "members": [
7387
+ "parameters": [
7388
+ {
7389
+ "name": "type",
7390
+ "type": {
7391
+ "text": "string"
7392
+ }
7393
+ },
7394
+ {
7395
+ "name": "handler",
7396
+ "type": {
7397
+ "text": "CustomEventListener"
7398
+ }
7399
+ },
7400
+ {
7401
+ "name": "options",
7402
+ "optional": true,
7403
+ "type": {
7404
+ "text": "boolean | AddEventListenerOptions"
7405
+ }
7406
+ }
7407
+ ],
7408
+ "inheritedFrom": {
7409
+ "name": "FieldNode",
7410
+ "module": "dist/FieldNode.js"
7411
+ }
7412
+ },
7476
7413
  {
7477
7414
  "kind": "method",
7478
- "name": "generate",
7415
+ "name": "__removeEventListener",
7479
7416
  "privacy": "public",
7480
- "static": true,
7481
7417
  "return": {
7482
7418
  "type": {
7483
- "text": "JSONSchema7"
7419
+ "text": "void"
7484
7420
  }
7485
7421
  },
7486
7422
  "parameters": [
7487
7423
  {
7488
- "name": "model",
7424
+ "name": "type",
7489
7425
  "type": {
7490
- "text": "FieldNode"
7426
+ "text": "ModelEventType"
7427
+ }
7428
+ },
7429
+ {
7430
+ "name": "handler",
7431
+ "type": {
7432
+ "text": "CustomEventListener"
7433
+ }
7434
+ },
7435
+ {
7436
+ "name": "_options",
7437
+ "optional": true,
7438
+ "type": {
7439
+ "text": "boolean | EventListenerOptions"
7491
7440
  }
7492
7441
  }
7493
- ]
7442
+ ],
7443
+ "description": "Removes the handler from a node",
7444
+ "inheritedFrom": {
7445
+ "name": "FieldNode",
7446
+ "module": "dist/FieldNode.js"
7447
+ }
7494
7448
  },
7495
7449
  {
7496
7450
  "kind": "method",
7497
- "name": "getProps",
7498
- "privacy": "private",
7499
- "static": true,
7451
+ "name": "__removeCustomEventListener",
7452
+ "privacy": "public",
7500
7453
  "return": {
7501
7454
  "type": {
7502
- "text": "Record<string, JSONSchema7Definition>"
7455
+ "text": "void"
7503
7456
  }
7504
7457
  },
7505
7458
  "parameters": [
7506
7459
  {
7507
- "name": "model",
7460
+ "name": "type",
7508
7461
  "type": {
7509
- "text": "FieldNode"
7462
+ "text": "string"
7463
+ }
7464
+ },
7465
+ {
7466
+ "name": "handler",
7467
+ "type": {
7468
+ "text": "CustomEventListener"
7469
+ }
7470
+ },
7471
+ {
7472
+ "name": "_options",
7473
+ "optional": true,
7474
+ "type": {
7475
+ "text": "boolean | EventListenerOptions"
7510
7476
  }
7511
7477
  }
7512
- ]
7478
+ ],
7479
+ "description": "Removes the handler from a node",
7480
+ "inheritedFrom": {
7481
+ "name": "FieldNode",
7482
+ "module": "dist/FieldNode.js"
7483
+ }
7513
7484
  },
7514
7485
  {
7515
7486
  "kind": "method",
7516
- "name": "getRequiredFields",
7487
+ "name": "___updateNotEmptyPath",
7517
7488
  "privacy": "private",
7518
- "static": true,
7489
+ "description": "if some child is not empty, set isEmpty to false, all the way up to the root node",
7490
+ "inheritedFrom": {
7491
+ "name": "FieldNode",
7492
+ "module": "dist/FieldNode.js"
7493
+ }
7494
+ },
7495
+ {
7496
+ "kind": "method",
7497
+ "name": "__checkConstraints",
7498
+ "privacy": "protected",
7519
7499
  "return": {
7520
7500
  "type": {
7521
- "text": "string[]"
7501
+ "text": "string[] | undefined"
7522
7502
  }
7523
7503
  },
7524
7504
  "parameters": [
7525
7505
  {
7526
- "name": "descriptors",
7506
+ "name": "fieldConstraints",
7527
7507
  "type": {
7528
- "text": "FieldDescriptor[]"
7508
+ "text": "FieldConstraints"
7529
7509
  }
7530
7510
  }
7531
- ]
7511
+ ],
7512
+ "inheritedFrom": {
7513
+ "name": "FieldNode",
7514
+ "module": "dist/FieldNode.js"
7515
+ }
7532
7516
  },
7533
7517
  {
7534
7518
  "kind": "method",
7535
- "name": "getConstraints",
7519
+ "name": "__toLowerCamelCase",
7536
7520
  "privacy": "private",
7537
- "static": true,
7538
7521
  "parameters": [
7539
7522
  {
7540
- "name": "constraints",
7523
+ "name": "string",
7541
7524
  "type": {
7542
- "text": "FieldConstraints | undefined"
7525
+ "text": "string"
7543
7526
  }
7544
7527
  }
7545
- ]
7528
+ ],
7529
+ "inheritedFrom": {
7530
+ "name": "FieldNode",
7531
+ "module": "dist/FieldNode.js"
7532
+ }
7546
7533
  },
7547
7534
  {
7548
7535
  "kind": "method",
7549
- "name": "createFieldNodeFromSchema",
7550
- "privacy": "public",
7551
- "static": true,
7536
+ "name": "__toLowerCamelCaseWithoutXPrefix",
7537
+ "privacy": "protected",
7538
+ "parameters": [
7539
+ {
7540
+ "name": "string",
7541
+ "type": {
7542
+ "text": "string"
7543
+ }
7544
+ }
7545
+ ],
7546
+ "inheritedFrom": {
7547
+ "name": "FieldNode",
7548
+ "module": "dist/FieldNode.js"
7549
+ }
7550
+ },
7551
+ {
7552
+ "kind": "method",
7553
+ "name": "__toSnakeCase",
7554
+ "privacy": "private",
7552
7555
  "return": {
7553
7556
  "type": {
7554
- "text": "FieldNode"
7557
+ "text": "string"
7555
7558
  }
7556
7559
  },
7557
7560
  "parameters": [
7558
7561
  {
7559
- "name": "schema",
7562
+ "name": "string",
7560
7563
  "type": {
7561
- "text": "FieldNodeSchema"
7564
+ "text": "string"
7562
7565
  }
7563
7566
  }
7564
- ]
7565
- }
7566
- ]
7567
- }
7568
- ],
7569
- "exports": [
7570
- {
7571
- "kind": "js",
7572
- "name": "SchemaBuilder",
7573
- "declaration": {
7574
- "name": "SchemaBuilder",
7575
- "module": "src/decorators/SchemaBuilder.ts"
7576
- }
7577
- }
7578
- ]
7579
- },
7580
- {
7581
- "kind": "javascript-module",
7582
- "path": "dist/decorators/ServiceDecorators.js",
7583
- "declarations": [
7584
- {
7585
- "kind": "function",
7586
- "name": "ServiceBindings",
7587
- "parameters": [
7567
+ ],
7568
+ "inheritedFrom": {
7569
+ "name": "FieldNode",
7570
+ "module": "dist/FieldNode.js"
7571
+ }
7572
+ },
7588
7573
  {
7589
- "name": "service",
7590
- "type": {
7591
- "text": "EventTarget"
7592
- },
7593
- "description": "The EventTarget service to bind to"
7574
+ "kind": "field",
7575
+ "name": "fieldName",
7576
+ "default": "parentAttributeName",
7577
+ "inheritedFrom": {
7578
+ "name": "FieldNode",
7579
+ "module": "dist/FieldNode.js"
7580
+ }
7594
7581
  }
7595
7582
  ],
7596
- "description": "### ServiceBindings Factory\n\nCreates type-safe decorators bound to a specific service instance.\nUse this to bind component properties and methods to service events.\n\nThe factory is generic and works with any `EventTarget`.\nEvent types and their detail payloads are type-checked at compile time\nvia the `TEventMap` type parameter.\n\nUsage:\n```typescript\nimport { cubeEntityService } from \"./CubeEntityService\";\nimport { ServiceBindings } from \"./ServiceDecorators\";\n\nconst cube = ServiceBindings(cubeEntityService);\n\nclass MyComponent extends LitElement {\n // Property binding - type-safe event name, auto-extracts from detail",
7597
- "return": {
7598
- "type": {
7599
- "text": ""
7600
- }
7583
+ "superclass": {
7584
+ "name": "FieldNode",
7585
+ "module": "/src/FieldNode"
7601
7586
  }
7602
7587
  }
7603
7588
  ],
7604
7589
  "exports": [
7605
7590
  {
7606
7591
  "kind": "js",
7607
- "name": "ServiceBindings",
7592
+ "name": "RECURSION",
7608
7593
  "declaration": {
7609
- "name": "ServiceBindings",
7610
- "module": "src/decorators/ServiceDecorators.ts"
7594
+ "name": "RECURSION",
7595
+ "module": "src/proxies/RECURSION.ts"
7611
7596
  }
7612
7597
  }
7613
7598
  ]
@@ -22804,6 +22789,21 @@
22804
22789
  }
22805
22790
  ]
22806
22791
  },
22792
+ {
22793
+ "kind": "javascript-module",
22794
+ "path": "dist/web-components/furo-type-renderer.js",
22795
+ "declarations": [],
22796
+ "exports": [
22797
+ {
22798
+ "kind": "custom-element-definition",
22799
+ "name": "furo-type-renderer",
22800
+ "declaration": {
22801
+ "name": "TypeRenderer",
22802
+ "module": "/src/web-components/impl/TypeRenderer/TypeRenderer"
22803
+ }
22804
+ }
22805
+ ]
22806
+ },
22807
22807
  {
22808
22808
  "kind": "javascript-module",
22809
22809
  "path": "dist/well_known/ANY.js",