@versa-stack/v-craft 1.1.0-alpha.2 → 1.1.0-alpha.4

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.
@@ -13,12 +13,16 @@ export interface EditorState {
13
13
  eventsContext: Record<string, any>;
14
14
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
15
15
  draggingDisabled: boolean;
16
+ /** Live runtime props written by event handlers or captured from value-bearing nodes, by uuid. */
17
+ nodeRuntimeProps: Record<string, Record<string, any>>;
18
+ /** Page-scoped bag shared across event handlers, e.g. a pending flag. */
19
+ pageState: Record<string, any>;
16
20
  }
17
21
  export declare const useEditor: import('pinia').StoreDefinition<"editor", EditorState, {
18
22
  hasNodes: (state: {
19
23
  nodeMap: Map<string, {
20
24
  slots: Record<string, CraftNode[]>;
21
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
25
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
22
26
  componentName: string;
23
27
  parentUuid?: string | null | undefined;
24
28
  props: any;
@@ -37,7 +41,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
37
41
  selectedUuid: string | null;
38
42
  draggedNode: {
39
43
  slots: Record<string, CraftNode[]>;
40
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
44
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
41
45
  componentName: string;
42
46
  parentUuid?: string | null | undefined;
43
47
  props: any;
@@ -58,6 +62,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
58
62
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
59
63
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
60
64
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
65
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
66
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
61
67
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
62
68
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
63
69
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -70,11 +76,13 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
70
76
  eventsContext: Record<string, any>;
71
77
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
72
78
  draggingDisabled: boolean;
79
+ nodeRuntimeProps: Record<string, Record<string, any>>;
80
+ pageState: Record<string, any>;
73
81
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => boolean;
74
82
  selectedNode: (state: {
75
83
  nodeMap: Map<string, {
76
84
  slots: Record<string, CraftNode[]>;
77
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
85
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
78
86
  componentName: string;
79
87
  parentUuid?: string | null | undefined;
80
88
  props: any;
@@ -93,7 +101,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
93
101
  selectedUuid: string | null;
94
102
  draggedNode: {
95
103
  slots: Record<string, CraftNode[]>;
96
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
104
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
97
105
  componentName: string;
98
106
  parentUuid?: string | null | undefined;
99
107
  props: any;
@@ -114,6 +122,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
114
122
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
115
123
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
116
124
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
125
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
126
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
117
127
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
118
128
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
119
129
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -126,11 +136,13 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
126
136
  eventsContext: Record<string, any>;
127
137
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
128
138
  draggingDisabled: boolean;
139
+ nodeRuntimeProps: Record<string, Record<string, any>>;
140
+ pageState: Record<string, any>;
129
141
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => CraftNode | null;
130
142
  selectedRef: (state: {
131
143
  nodeMap: Map<string, {
132
144
  slots: Record<string, CraftNode[]>;
133
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
145
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
134
146
  componentName: string;
135
147
  parentUuid?: string | null | undefined;
136
148
  props: any;
@@ -149,7 +161,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
149
161
  selectedUuid: string | null;
150
162
  draggedNode: {
151
163
  slots: Record<string, CraftNode[]>;
152
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
164
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
153
165
  componentName: string;
154
166
  parentUuid?: string | null | undefined;
155
167
  props: any;
@@ -170,6 +182,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
170
182
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
171
183
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
172
184
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
185
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
186
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
173
187
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
174
188
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
175
189
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -182,11 +196,13 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
182
196
  eventsContext: Record<string, any>;
183
197
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
184
198
  draggingDisabled: boolean;
199
+ nodeRuntimeProps: Record<string, Record<string, any>>;
200
+ pageState: Record<string, any>;
185
201
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => HTMLElement | null;
186
202
  getRef: (state: {
187
203
  nodeMap: Map<string, {
188
204
  slots: Record<string, CraftNode[]>;
189
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
205
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
190
206
  componentName: string;
191
207
  parentUuid?: string | null | undefined;
192
208
  props: any;
@@ -205,7 +221,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
205
221
  selectedUuid: string | null;
206
222
  draggedNode: {
207
223
  slots: Record<string, CraftNode[]>;
208
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
224
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
209
225
  componentName: string;
210
226
  parentUuid?: string | null | undefined;
211
227
  props: any;
@@ -226,6 +242,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
226
242
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
227
243
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
228
244
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
245
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
246
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
229
247
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
230
248
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
231
249
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -238,11 +256,13 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
238
256
  eventsContext: Record<string, any>;
239
257
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
240
258
  draggingDisabled: boolean;
259
+ nodeRuntimeProps: Record<string, Record<string, any>>;
260
+ pageState: Record<string, any>;
241
261
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => (uuid: string) => HTMLElement;
242
262
  allNodes: (state: {
243
263
  nodeMap: Map<string, {
244
264
  slots: Record<string, CraftNode[]>;
245
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
265
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
246
266
  componentName: string;
247
267
  parentUuid?: string | null | undefined;
248
268
  props: any;
@@ -261,7 +281,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
261
281
  selectedUuid: string | null;
262
282
  draggedNode: {
263
283
  slots: Record<string, CraftNode[]>;
264
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
284
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
265
285
  componentName: string;
266
286
  parentUuid?: string | null | undefined;
267
287
  props: any;
@@ -282,6 +302,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
282
302
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
283
303
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
284
304
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
305
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
306
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
285
307
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
286
308
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
287
309
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -294,11 +316,13 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
294
316
  eventsContext: Record<string, any>;
295
317
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
296
318
  draggingDisabled: boolean;
319
+ nodeRuntimeProps: Record<string, Record<string, any>>;
320
+ pageState: Record<string, any>;
297
321
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => CraftNode[];
298
322
  getDraggedNode: (state: {
299
323
  nodeMap: Map<string, {
300
324
  slots: Record<string, CraftNode[]>;
301
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
325
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
302
326
  componentName: string;
303
327
  parentUuid?: string | null | undefined;
304
328
  props: any;
@@ -317,7 +341,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
317
341
  selectedUuid: string | null;
318
342
  draggedNode: {
319
343
  slots: Record<string, CraftNode[]>;
320
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
344
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
321
345
  componentName: string;
322
346
  parentUuid?: string | null | undefined;
323
347
  props: any;
@@ -338,6 +362,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
338
362
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
339
363
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
340
364
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
365
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
366
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
341
367
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
342
368
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
343
369
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -350,9 +376,11 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
350
376
  eventsContext: Record<string, any>;
351
377
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
352
378
  draggingDisabled: boolean;
379
+ nodeRuntimeProps: Record<string, Record<string, any>>;
380
+ pageState: Record<string, any>;
353
381
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => {
354
382
  slots: Record<string, CraftNode[]>;
355
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
383
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
356
384
  componentName: string;
357
385
  parentUuid?: string | null | undefined;
358
386
  props: any;
@@ -370,7 +398,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
370
398
  nodeTree: (state: {
371
399
  nodeMap: Map<string, {
372
400
  slots: Record<string, CraftNode[]>;
373
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
401
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
374
402
  componentName: string;
375
403
  parentUuid?: string | null | undefined;
376
404
  props: any;
@@ -389,7 +417,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
389
417
  selectedUuid: string | null;
390
418
  draggedNode: {
391
419
  slots: Record<string, CraftNode[]>;
392
- slotsPropsPropsMap?: Record<string, Record<string, string>> | undefined;
420
+ slotsPropsPropsMap?: Record<string, Record<string, unknown>> | undefined;
393
421
  componentName: string;
394
422
  parentUuid?: string | null | undefined;
395
423
  props: any;
@@ -410,6 +438,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
410
438
  resolverMap: import('../lib/CraftNodeResolver').CraftNodeResolverMap<FormKitSchemaDefinition>;
411
439
  setResolverMap: (resolverMap: Record<string, import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>>) => void;
412
440
  onResolveComponent: (hook: import('../lib/CraftNodeResolver').ResolveComponentHook) => void;
441
+ onResolvePropertyValue: (hook: import('../lib/CraftNodeResolver').ResolvePropertyValueHook) => void;
442
+ resolvePropertyValue: (mapping: unknown, contextData: any) => unknown;
413
443
  resolve: (name: string) => import('../lib/CraftNodeResolver').CraftNodeComponentMap<FormKitSchemaDefinition>;
414
444
  resolveComponent: (craftNode: CraftNode) => import('vue').Component | undefined;
415
445
  getDefaultProps: (craftNode: CraftNode) => Record<string, any>;
@@ -422,6 +452,8 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
422
452
  eventsContext: Record<string, any>;
423
453
  nodeDataMap: Record<string, CraftNodeDatasource | null>;
424
454
  draggingDisabled: boolean;
455
+ nodeRuntimeProps: Record<string, Record<string, any>>;
456
+ pageState: Record<string, any>;
425
457
  } & import('pinia').PiniaCustomStateProperties<EditorState>) => CraftNode[];
426
458
  }, {
427
459
  clear(): void;
@@ -435,7 +467,7 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
435
467
  setNodeData(uuid: string, data: CraftNodeDatasource | null): void;
436
468
  updateNodeProps(nodeUuid: string, newProps: Record<string, any>): void;
437
469
  updateNodeEvents(nodeUuid: string, newEvents: Record<string, string>): void;
438
- updateNodeSlotsPropsPropsMap(nodeUuid: string, slotsPropsPropsMap: Record<string, Record<string, string>>): void;
470
+ updateNodeSlotsPropsPropsMap(nodeUuid: string, slotsPropsPropsMap: Record<string, Record<string, unknown>>): void;
439
471
  setNodes(nodes: CraftNode[]): void;
440
472
  addNodeRecursively(node: CraftNode, parentUuid?: string | null): void;
441
473
  selectNode(craftNode: CraftNode | null): void;
@@ -448,4 +480,5 @@ export declare const useEditor: import('pinia').StoreDefinition<"editor", Editor
448
480
  insertNodeBefore(node: CraftNode, targetNode: CraftNode, slotName?: string): void;
449
481
  insertNodeAfter(node: CraftNode, targetNode: CraftNode, slotName?: string): void;
450
482
  setEventsContext(context: Record<string, any>): void;
483
+ setNodeRuntimeProps(uuid: string, patch: Record<string, any>): void;
451
484
  }>;
package/dist/v-craft.css CHANGED
@@ -1 +1 @@
1
- .pre-wrap{white-space:pre-wrap}.editable-text.is-editable:hover{background-color:#0000000d;cursor:pointer}.editable-text.is-editing{display:inline-block;width:100%}.editable-text__textarea{font:inherit;border:none;background:none;outline:none;width:100%;resize:none;overflow:hidden;min-height:1em;line-height:inherit;padding:.12em;margin:0}.editable-text__textarea:focus{border:none}.v-craft-blueprints-panel[data-v-a6de4dca]{min-width:15em;max-width:15em;width:15em}.v-craft-blueprints-panel[data-v-a6de4dca] .v-craft-blueprint{text-align:center;padding:.25em;position:relative;border:1px solid var(--v-craft-gray-medium);border-radius:3px;display:flex;align-items:center;cursor:pointer;background-color:var(--v-craft-background-color-lighter-10)}.v-craft-blueprints-panel[data-v-a6de4dca] .v-craft-blueprint-label{font-size:.8em;text-transform:uppercase;font-weight:700;color:var(--v-craft-gray-darker)}.v-craft-blueprints-panel h4[data-v-a6de4dca]{font-size:.8em;text-transform:uppercase;font-weight:700;color:var(--v-craft-gray-medium);margin-bottom:.75em;margin-top:2em}.v-craft-panel.v-craft-layers-panel[data-v-ab795ec3]{padding:10px;display:flex;flex-direction:column;height:auto;position:relative;width:23rem}.v-craft-layers[data-v-ab795ec3]{overflow-y:auto}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar{width:8px}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-track{background:var(--v-craft-scrollbar-track)}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-thumb{background:var(--v-craft-scrollbar-thumb);border-radius:4px}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-thumb:hover{background:var(--v-craft-scrollbar-thumb-hover)}.v-craft-layers[data-v-ab795ec3]{max-height:300px;overflow-y:auto;margin-top:10px}ul.v-craft-node-layers[data-v-ab795ec3]{margin:0;padding:0;list-style-type:none}.v-craft-panel-manager .v-craft-panel[data-v-7dd1d43b]{padding:.75em;margin-bottom:1.25em;box-shadow:0 2px 2px #00000009,0 4px 4px #0000000c,0 6px 6px #0000000f,0 8px 8px #00000012,0 10px 10px #00000016,0 15px 15px #0000001f;border-radius:3px}.v-craft-panel-manager[data-v-7dd1d43b] .v-craft-panel .v-craft-title{margin:0;padding:.125em;border-bottom:1px solid var(--v-craft-gray-medium)}.v-craft-data-source-error[data-v-7c1c5696]{color:var(--v-craft-red, #e5484d)}.v-craft-node-layer[data-v-208a4e02]{padding:5px 0;border-bottom:1px solid var(--v-craft-gray-dark);list-style-type:none}.v-craft-node-layer.v-craft-node-layer-selected>.v-craft-component-layer-face[data-v-208a4e02]{background-color:var(--v-craft-blue-lighter-5)}.v-craft-node-layer.v-craft-node-layer-selected>.v-craft-component-layer-face[data-v-208a4e02]:hover{background-color:var(--v-craft-blue-lighter-15)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face{display:flex;align-items:center;padding:2px 5px;background-color:var(--v-craft-gray-medium);border-radius:3px;transition:background-color .2s ease;position:relative}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face:before{position:absolute;background-color:var(--v-craft-gray-medium);width:.5em;height:1px;top:50%;left:-.5em;content:" "}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face:hover{background-color:var(--v-craft-gray-medium-lighter-15)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-name{flex-grow:1;font-size:12px;cursor:pointer}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon{font-size:12px;cursor:pointer;margin-left:5px;transition:color .2s ease}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon:hover{color:var(--v-craft-blue)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon{border:none;padding:.12em}.v-craft-node-layer[data-v-208a4e02] .nested-layers{margin-left:15px;border-left:1px solid var(--v-craft-gray-medium);padding-left:5px}.v-craft-slot-props-map-group[data-v-f762baf8]{border:1px solid var(--v-craft-gray-medium, #ccc);border-radius:4px;padding:.75em;margin-bottom:1em}.v-craft-slot-props-remove[data-v-f762baf8],.v-craft-slot-props-add[data-v-f762baf8]{width:100%;margin-top:.25em}:root{--v-craft-indicator-bg-allowed: var(--v-craft-green);--v-craft-indicator-bg-forbidden: var(--v-craft-red);--v-craft-indicator-transition-duration: .125s;--v-craft-indicator-z-index: 10000}.v-craft-indicator{position:fixed;background-color:var(--v-craft-indicator-bg-allowed);transition:top var(--v-craft-indicator-transition-duration) ease,left var(--v-craft-indicator-transition-duration) ease,right var(--v-craft-indicator-transition-duration) ease,bottom var(--v-craft-indicator-transition-duration) ease,width var(--v-craft-indicator-transition-duration) ease,height var(--v-craft-indicator-transition-duration) ease,background-color var(--v-craft-indicator-transition-duration) ease-in-out;z-index:var(--v-craft-indicator-z-index)}.v-craft-indicator:after{content:" "}.v-craft-indicator.v-craft-forbidden{background-color:var(--v-craft-indicator-bg-forbidden)}.v-craft-node{position:relative;transition:all var(--v-craft-transition-duration) ease;cursor:pointer;box-sizing:border-box}.v-craft-node:after{content:"";position:absolute;top:calc(-1 * var(--v-craft-node-editor-border-padding));left:calc(-1 * var(--v-craft-node-editor-border-padding));right:calc(-1 * var(--v-craft-node-editor-border-padding));bottom:calc(-1 * var(--v-craft-node-editor-border-padding));border:1px solid transparent;border-radius:4px;transition:border-color var(--v-craft-transition-duration) ease-in-out,box-shadow var(--v-craft-transition-duration) ease-in-out;pointer-events:none;z-index:10}.v-craft-node:before{content:"";align-items:center;background-color:var(--node-color, var(--v-craft-blue));bottom:calc(-20px - var(--v-craft-node-editor-border-padding));color:var(--v-craft-white);display:flex;font-family:Arial,sans-serif;font-size:12px;font-weight:400;height:20px;left:calc(-1 * var(--v-craft-node-editor-border-padding) + 3px);line-height:1.4em;opacity:0;padding:0 5px!important;pointer-events:none;position:absolute;text-align:center;text-transform:none;transition:opacity var(--v-craft-transition-duration) ease-in-out;z-index:100}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged:before{opacity:.5}.v-craft-node:hover:not(:has(.v-craft-node:hover)):not(.v-craft-node-selected):before{opacity:1}.v-craft-node-selected:before{opacity:1}.v-craft-node:hover:not(:has(.v-craft-node:hover)):after{border-color:var(--node-color, var(--v-craft-blue-lighter-20));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.dark .v-craft-node:hover:not(:has(.v-craft-node:hover)):after{border-color:var(--node-color, var(--v-craft-blue-darker-25));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas:hover:not(:has(.v-craft-node:hover)):not(.v-craft-node-selected):after{box-shadow:0 0 .5em .1em rgba(var(--node-color),.2)}.v-craft-node-selected:not(:hover):after{border:1px solid var(--node-color, var(--v-craft-blue));box-shadow:0 0 .5em .1em rgba(var(--node-color),.2)}.v-craft-node-selected:after{border:1px solid var(--node-color, var(--v-craft-blue));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged:after{border:2px dashed var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas .v-craft-drop-text{border:2px dashed var(--v-craft-gray-medium);color:var(--v-craft-text-color);padding:1.25em;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5em;min-height:60px;box-sizing:border-box;pointer-events:auto;position:relative;margin:4px 0}.v-craft-node.v-craft-canvas .v-craft-slot-name{position:absolute;bottom:4px;left:8px;font-weight:400;font-size:.75em;color:var(--v-craft-gray-medium);text-transform:uppercase;letter-spacing:.05em}.v-craft-node.v-craft-canvas .v-craft-drop-text-label{font-size:.85em;color:var(--v-craft-gray-medium)}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged{padding:10px!important;margin-bottom:25px!important}.v-craft-node-selected{z-index:1}.v-craft-node.v-craft-drag-over{box-shadow:0 0 0 2px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-dragging{opacity:.7}.v-craft-node:before{content:attr(data-node-name)}:root{--v-craft-blue: #1473e6;--v-craft-red: #ff3366;--v-craft-green: rgb(15, 177, 88);--v-craft-gray-dark: #f8f8f8;--v-craft-gray-medium: rgb(202.5, 202.5, 202.5);--v-craft-gray-light: rgb(167.5, 167.5, 167.5);--v-craft-gray-darkest: hsl(0, 0%, 101.7647058824%);--v-craft-white: #ffffff;--v-craft-background-color: hsl(0, 0%, 106.7647058824%);--v-craft-background-color-lighter-10: #ffffff;--v-craft-background-color-darker-10: hsl(0, 0%, 101.7647058824%);--v-craft-input-background: hsl(0, 0%, 109.7647058824%);--v-craft-input-border: #eaeaea;--v-craft-text-color: rgb(55.5, 55.5, 55.5);--v-craft-text-color-blue: #e0e0e0;--v-craft-error-color: #ff3366;--v-craft-blue-darker-25: rgb(9.8, 56.35, 112.7);--v-craft-blue-darker-30: rgb(7.76, 44.62, 89.24);--v-craft-blue-lighter-5: rgb(39.26, 128.37, 236.24);--v-craft-blue-lighter-10: rgb(62.72, 142.14, 238.28);--v-craft-blue-lighter-15: rgb(86.18, 155.91, 240.32);--v-craft-blue-lighter-20: rgb(109.64, 169.68, 242.36);--v-craft-blue-transparent-70: rgba(20, 115, 230, .7);--v-craft-blue-transparent-20: rgba(20, 115, 230, .2);--v-craft-gray-dark-darker-10: rgb(222.5, 222.5, 222.5);--v-craft-gray-dark-darker-5: rgb(235.25, 235.25, 235.25);--v-craft-gray-dark-lighter-10: hsl(0, 0%, 107.2549019608%);--v-craft-gray-dark-transparent-50: rgba(248, 248, 248, .5);--v-craft-gray-medium-darker-10: #b1b1b1;--v-craft-gray-medium-lighter-15: rgb(240.75, 240.75, 240.75);--v-craft-transition-duration: .3s;--v-craft-node-editor-border-padding: .2rem}html.dark{--v-craft-blue: #1473e6;--v-craft-red: #ff3366;--v-craft-green: rgb(15, 177, 88);--v-craft-gray-dark: #2c2c2c;--v-craft-gray-medium: #4b4b4b;--v-craft-gray-light: #8e8e8e;--v-craft-gray-darkest: #1e1e1e;--v-craft-white: #ffffff;--v-craft-background-color: #1e1e1e;--v-craft-background-color-lighter-10: rgb(55.5, 55.5, 55.5);--v-craft-background-color-darker-10: rgb(4.5, 4.5, 4.5);--v-craft-input-background: #2d2d2d;--v-craft-input-border: #3a3a3a;--v-craft-text-color: #e0e0e0;--v-craft-text-color-blue: #e0e0e0;--v-craft-error-color: #ff3366;--v-craft-blue-darker-25: rgb(9.8, 56.35, 112.7);--v-craft-blue-darker-30: rgb(7.76, 44.62, 89.24);--v-craft-blue-lighter-5: rgb(39.26, 128.37, 236.24);--v-craft-blue-lighter-10: rgb(62.72, 142.14, 238.28);--v-craft-blue-lighter-15: rgb(86.18, 155.91, 240.32);--v-craft-blue-lighter-20: rgb(109.64, 169.68, 242.36);--v-craft-blue-transparent-20: rgba(20, 115, 230, .2);--v-craft-blue-transparent-70: rgba(20, 115, 230, .7);--v-craft-gray-dark-darker-10: rgb(18.5, 18.5, 18.5);--v-craft-gray-dark-darker-5: rgb(31.25, 31.25, 31.25);--v-craft-gray-dark-lighter-10: rgb(69.5, 69.5, 69.5);--v-craft-gray-dark-transparent-50: rgba(44, 44, 44, .5);--v-craft-gray-medium-darker-10: rgb(49.5, 49.5, 49.5);--v-craft-gray-medium-lighter-15: rgb(113.25, 113.25, 113.25)}
1
+ .pre-wrap{white-space:pre-wrap}.editable-text.is-editable:hover{background-color:#0000000d;cursor:pointer}.editable-text.is-editing{display:inline-block;width:100%}.editable-text__textarea{font:inherit;border:none;background:none;outline:none;width:100%;resize:none;overflow:hidden;min-height:1em;line-height:inherit;padding:.12em;margin:0}.editable-text__textarea:focus{border:none}.v-craft-blueprints-panel[data-v-a6de4dca]{min-width:15em;max-width:15em;width:15em}.v-craft-blueprints-panel[data-v-a6de4dca] .v-craft-blueprint{text-align:center;padding:.25em;position:relative;border:1px solid var(--v-craft-gray-medium);border-radius:3px;display:flex;align-items:center;cursor:pointer;background-color:var(--v-craft-background-color-lighter-10)}.v-craft-blueprints-panel[data-v-a6de4dca] .v-craft-blueprint-label{font-size:.8em;text-transform:uppercase;font-weight:700;color:var(--v-craft-gray-darker)}.v-craft-blueprints-panel h4[data-v-a6de4dca]{font-size:.8em;text-transform:uppercase;font-weight:700;color:var(--v-craft-gray-medium);margin-bottom:.75em;margin-top:2em}.v-craft-panel.v-craft-layers-panel[data-v-ab795ec3]{padding:10px;display:flex;flex-direction:column;height:auto;position:relative;width:23rem}.v-craft-layers[data-v-ab795ec3]{overflow-y:auto}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar{width:8px}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-track{background:var(--v-craft-scrollbar-track)}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-thumb{background:var(--v-craft-scrollbar-thumb);border-radius:4px}.v-craft-layers[data-v-ab795ec3]::-webkit-scrollbar-thumb:hover{background:var(--v-craft-scrollbar-thumb-hover)}.v-craft-layers[data-v-ab795ec3]{max-height:300px;overflow-y:auto;margin-top:10px}ul.v-craft-node-layers[data-v-ab795ec3]{margin:0;padding:0;list-style-type:none}.v-craft-panel-manager .v-craft-panel[data-v-7dd1d43b]{padding:.75em;margin-bottom:1.25em;box-shadow:0 2px 2px #00000009,0 4px 4px #0000000c,0 6px 6px #0000000f,0 8px 8px #00000012,0 10px 10px #00000016,0 15px 15px #0000001f;border-radius:3px}.v-craft-panel-manager[data-v-7dd1d43b] .v-craft-panel .v-craft-title{margin:0;padding:.125em;border-bottom:1px solid var(--v-craft-gray-medium)}.v-craft-data-source-error[data-v-7c1c5696]{color:var(--v-craft-red, #e5484d)}.v-craft-node-layer[data-v-208a4e02]{padding:5px 0;border-bottom:1px solid var(--v-craft-gray-dark);list-style-type:none}.v-craft-node-layer.v-craft-node-layer-selected>.v-craft-component-layer-face[data-v-208a4e02]{background-color:var(--v-craft-blue-lighter-5)}.v-craft-node-layer.v-craft-node-layer-selected>.v-craft-component-layer-face[data-v-208a4e02]:hover{background-color:var(--v-craft-blue-lighter-15)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face{display:flex;align-items:center;padding:2px 5px;background-color:var(--v-craft-gray-medium);border-radius:3px;transition:background-color .2s ease;position:relative}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face:before{position:absolute;background-color:var(--v-craft-gray-medium);width:.5em;height:1px;top:50%;left:-.5em;content:" "}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-layer-face:hover{background-color:var(--v-craft-gray-medium-lighter-15)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-name{flex-grow:1;font-size:12px;cursor:pointer}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon{font-size:12px;cursor:pointer;margin-left:5px;transition:color .2s ease}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon:hover{color:var(--v-craft-blue)}.v-craft-node-layer[data-v-208a4e02] .v-craft-component-icon{border:none;padding:.12em}.v-craft-node-layer[data-v-208a4e02] .nested-layers{margin-left:15px;border-left:1px solid var(--v-craft-gray-medium);padding-left:5px}.v-craft-slot-props-map-group[data-v-74ec0ff3]{border:1px solid var(--v-craft-gray-medium, #ccc);border-radius:4px;padding:.75em;margin-bottom:1em}.v-craft-slot-props-remove[data-v-74ec0ff3],.v-craft-slot-props-add[data-v-74ec0ff3]{width:100%;margin-top:.25em}:root{--v-craft-indicator-bg-allowed: var(--v-craft-green);--v-craft-indicator-bg-forbidden: var(--v-craft-red);--v-craft-indicator-transition-duration: .125s;--v-craft-indicator-z-index: 10000}.v-craft-indicator{position:fixed;background-color:var(--v-craft-indicator-bg-allowed);transition:top var(--v-craft-indicator-transition-duration) ease,left var(--v-craft-indicator-transition-duration) ease,right var(--v-craft-indicator-transition-duration) ease,bottom var(--v-craft-indicator-transition-duration) ease,width var(--v-craft-indicator-transition-duration) ease,height var(--v-craft-indicator-transition-duration) ease,background-color var(--v-craft-indicator-transition-duration) ease-in-out;z-index:var(--v-craft-indicator-z-index)}.v-craft-indicator:after{content:" "}.v-craft-indicator.v-craft-forbidden{background-color:var(--v-craft-indicator-bg-forbidden)}.v-craft-node{position:relative;transition:all var(--v-craft-transition-duration) ease;cursor:pointer;box-sizing:border-box}.v-craft-node:after{content:"";position:absolute;top:calc(-1 * var(--v-craft-node-editor-border-padding));left:calc(-1 * var(--v-craft-node-editor-border-padding));right:calc(-1 * var(--v-craft-node-editor-border-padding));bottom:calc(-1 * var(--v-craft-node-editor-border-padding));border:1px solid transparent;border-radius:4px;transition:border-color var(--v-craft-transition-duration) ease-in-out,box-shadow var(--v-craft-transition-duration) ease-in-out;pointer-events:none;z-index:10}.v-craft-node:before{content:"";align-items:center;background-color:var(--node-color, var(--v-craft-blue));bottom:calc(-20px - var(--v-craft-node-editor-border-padding));color:var(--v-craft-white);display:flex;font-family:Arial,sans-serif;font-size:12px;font-weight:400;height:20px;left:calc(-1 * var(--v-craft-node-editor-border-padding) + 3px);line-height:1.4em;opacity:0;padding:0 5px!important;pointer-events:none;position:absolute;text-align:center;text-transform:none;transition:opacity var(--v-craft-transition-duration) ease-in-out;z-index:100}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged:before{opacity:.5}.v-craft-node:hover:not(:has(.v-craft-node:hover)):not(.v-craft-node-selected):before{opacity:1}.v-craft-node-selected:before{opacity:1}.v-craft-node:hover:not(:has(.v-craft-node:hover)):after{border-color:var(--node-color, var(--v-craft-blue-lighter-20));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.dark .v-craft-node:hover:not(:has(.v-craft-node:hover)):after{border-color:var(--node-color, var(--v-craft-blue-darker-25));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas:hover:not(:has(.v-craft-node:hover)):not(.v-craft-node-selected):after{box-shadow:0 0 .5em .1em rgba(var(--node-color),.2)}.v-craft-node-selected:not(:hover):after{border:1px solid var(--node-color, var(--v-craft-blue));box-shadow:0 0 .5em .1em rgba(var(--node-color),.2)}.v-craft-node-selected:after{border:1px solid var(--node-color, var(--v-craft-blue));box-shadow:0 0 0 1px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged:after{border:2px dashed var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-canvas .v-craft-drop-text{border:2px dashed var(--v-craft-gray-medium);color:var(--v-craft-text-color);padding:1.25em;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5em;min-height:60px;box-sizing:border-box;pointer-events:auto;position:relative;margin:4px 0}.v-craft-node.v-craft-canvas .v-craft-slot-name{position:absolute;bottom:4px;left:8px;font-weight:400;font-size:.75em;color:var(--v-craft-gray-medium);text-transform:uppercase;letter-spacing:.05em}.v-craft-node.v-craft-canvas .v-craft-drop-text-label{font-size:.85em;color:var(--v-craft-gray-medium)}.v-craft-node.v-craft-canvas.v-craft-other-node-dragged{padding:10px!important;margin-bottom:25px!important}.v-craft-node-selected{z-index:1}.v-craft-node.v-craft-drag-over{box-shadow:0 0 0 2px var(--node-color, var(--v-craft-blue))}.v-craft-node.v-craft-dragging{opacity:.7}.v-craft-node:before{content:attr(data-node-name)}:root{--v-craft-blue: #1473e6;--v-craft-red: #ff3366;--v-craft-green: rgb(15, 177, 88);--v-craft-gray-dark: #f8f8f8;--v-craft-gray-medium: rgb(202.5, 202.5, 202.5);--v-craft-gray-light: rgb(167.5, 167.5, 167.5);--v-craft-gray-darkest: hsl(0, 0%, 101.7647058824%);--v-craft-white: #ffffff;--v-craft-background-color: hsl(0, 0%, 106.7647058824%);--v-craft-background-color-lighter-10: #ffffff;--v-craft-background-color-darker-10: hsl(0, 0%, 101.7647058824%);--v-craft-input-background: hsl(0, 0%, 109.7647058824%);--v-craft-input-border: #eaeaea;--v-craft-text-color: rgb(55.5, 55.5, 55.5);--v-craft-text-color-blue: #e0e0e0;--v-craft-error-color: #ff3366;--v-craft-blue-darker-25: rgb(9.8, 56.35, 112.7);--v-craft-blue-darker-30: rgb(7.76, 44.62, 89.24);--v-craft-blue-lighter-5: rgb(39.26, 128.37, 236.24);--v-craft-blue-lighter-10: rgb(62.72, 142.14, 238.28);--v-craft-blue-lighter-15: rgb(86.18, 155.91, 240.32);--v-craft-blue-lighter-20: rgb(109.64, 169.68, 242.36);--v-craft-blue-transparent-70: rgba(20, 115, 230, .7);--v-craft-blue-transparent-20: rgba(20, 115, 230, .2);--v-craft-gray-dark-darker-10: rgb(222.5, 222.5, 222.5);--v-craft-gray-dark-darker-5: rgb(235.25, 235.25, 235.25);--v-craft-gray-dark-lighter-10: hsl(0, 0%, 107.2549019608%);--v-craft-gray-dark-transparent-50: rgba(248, 248, 248, .5);--v-craft-gray-medium-darker-10: #b1b1b1;--v-craft-gray-medium-lighter-15: rgb(240.75, 240.75, 240.75);--v-craft-transition-duration: .3s;--v-craft-node-editor-border-padding: .2rem}html.dark{--v-craft-blue: #1473e6;--v-craft-red: #ff3366;--v-craft-green: rgb(15, 177, 88);--v-craft-gray-dark: #2c2c2c;--v-craft-gray-medium: #4b4b4b;--v-craft-gray-light: #8e8e8e;--v-craft-gray-darkest: #1e1e1e;--v-craft-white: #ffffff;--v-craft-background-color: #1e1e1e;--v-craft-background-color-lighter-10: rgb(55.5, 55.5, 55.5);--v-craft-background-color-darker-10: rgb(4.5, 4.5, 4.5);--v-craft-input-background: #2d2d2d;--v-craft-input-border: #3a3a3a;--v-craft-text-color: #e0e0e0;--v-craft-text-color-blue: #e0e0e0;--v-craft-error-color: #ff3366;--v-craft-blue-darker-25: rgb(9.8, 56.35, 112.7);--v-craft-blue-darker-30: rgb(7.76, 44.62, 89.24);--v-craft-blue-lighter-5: rgb(39.26, 128.37, 236.24);--v-craft-blue-lighter-10: rgb(62.72, 142.14, 238.28);--v-craft-blue-lighter-15: rgb(86.18, 155.91, 240.32);--v-craft-blue-lighter-20: rgb(109.64, 169.68, 242.36);--v-craft-blue-transparent-20: rgba(20, 115, 230, .2);--v-craft-blue-transparent-70: rgba(20, 115, 230, .7);--v-craft-gray-dark-darker-10: rgb(18.5, 18.5, 18.5);--v-craft-gray-dark-darker-5: rgb(31.25, 31.25, 31.25);--v-craft-gray-dark-lighter-10: rgb(69.5, 69.5, 69.5);--v-craft-gray-dark-transparent-50: rgba(44, 44, 44, .5);--v-craft-gray-medium-darker-10: rgb(49.5, 49.5, 49.5);--v-craft-gray-medium-lighter-15: rgb(113.25, 113.25, 113.25)}