@koumoul/vjsf 4.1.1 → 4.1.2

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.
Files changed (44) hide show
  1. package/package.json +4 -1
  2. package/src/components/fragments/help-message.vue +2 -2
  3. package/src/components/fragments/section-header.vue +5 -5
  4. package/src/components/node-content.vue +137 -0
  5. package/src/components/node.vue +35 -121
  6. package/src/components/nodes/autocomplete.vue +3 -2
  7. package/src/components/nodes/checkbox.vue +6 -5
  8. package/src/components/nodes/color-picker.vue +4 -4
  9. package/src/components/nodes/combobox.vue +3 -1
  10. package/src/components/nodes/date-time-picker.vue +3 -1
  11. package/src/components/nodes/file-input.vue +3 -1
  12. package/src/components/nodes/list.vue +1 -1
  13. package/src/components/nodes/number-combobox.vue +3 -1
  14. package/src/components/nodes/number-field.vue +6 -6
  15. package/src/components/nodes/radio-group.vue +1 -5
  16. package/src/components/nodes/select.vue +3 -2
  17. package/src/components/nodes/slider.vue +6 -5
  18. package/src/components/nodes/switch.vue +6 -5
  19. package/src/components/nodes/text-field.vue +4 -2
  20. package/src/components/nodes/textarea.vue +7 -6
  21. package/src/components/nodes/time-picker.vue +3 -1
  22. package/src/composables/use-vjsf.js +26 -9
  23. package/src/types.ts +1 -1
  24. package/types/components/fragments/help-message.vue.d.ts.map +1 -1
  25. package/types/components/node-content.vue.d.ts +26 -0
  26. package/types/components/node-content.vue.d.ts.map +1 -0
  27. package/types/components/node.vue.d.ts +3 -1
  28. package/types/components/node.vue.d.ts.map +1 -1
  29. package/types/components/nodes/autocomplete.vue.d.ts.map +1 -1
  30. package/types/components/nodes/checkbox.vue.d.ts.map +1 -1
  31. package/types/components/nodes/combobox.vue.d.ts.map +1 -1
  32. package/types/components/nodes/date-time-picker.vue.d.ts.map +1 -1
  33. package/types/components/nodes/file-input.vue.d.ts.map +1 -1
  34. package/types/components/nodes/number-combobox.vue.d.ts.map +1 -1
  35. package/types/components/nodes/radio-group.vue.d.ts.map +1 -1
  36. package/types/components/nodes/select.vue.d.ts.map +1 -1
  37. package/types/components/nodes/slider.vue.d.ts.map +1 -1
  38. package/types/components/nodes/switch.vue.d.ts.map +1 -1
  39. package/types/components/nodes/text-field.vue.d.ts.map +1 -1
  40. package/types/components/nodes/textarea.vue.d.ts.map +1 -1
  41. package/types/components/nodes/time-picker.vue.d.ts.map +1 -1
  42. package/types/composables/use-vjsf.d.ts.map +1 -1
  43. package/types/types.d.ts +1 -0
  44. package/types/types.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koumoul/vjsf",
3
- "version": "4.1.1",
3
+ "version": "4.1.2",
4
4
  "description": "Generate forms for the vuetify UI library (vuejs) based on annotated JSON schemas.",
5
5
  "scripts": {
6
6
  "test-tz1": "TZ=Europe/Paris vitest run",
@@ -79,6 +79,9 @@
79
79
  },
80
80
  "devDependencies": {
81
81
  "@types/debug": "^4.1.8",
82
+ "@vitejs/plugin-vue": "^5.0.0",
83
+ "@vue/test-utils": "^2.4.6",
84
+ "happy-dom": "^15.0.0",
82
85
  "vitest": "^1.1.1",
83
86
  "vue": "^3.5.6",
84
87
  "vue-tsc": "^3.2.2"
@@ -45,7 +45,7 @@ import { VBtn } from 'vuetify/components/VBtn'
45
45
  import { ref } from 'vue'
46
46
  import useZIndexStack from '../../composables/use-z-index-stack.js'
47
47
 
48
- const props = defineProps({
48
+ const { node } = defineProps({
49
49
  node: {
50
50
  /** @type import('vue').PropType<import('../../types.js').VjsfNode> */
51
51
  type: Object,
@@ -53,7 +53,7 @@ const props = defineProps({
53
53
  }
54
54
  })
55
55
 
56
- const zIndex = useZIndexStack(props.node.fullKey)
56
+ const zIndex = useZIndexStack(node.fullKey)
57
57
 
58
58
  const show = ref(false)
59
59
  </script>
@@ -22,7 +22,7 @@ const titleDepthBase = computed(() => {
22
22
 
23
23
  const classes = ['text-display-large', 'text-display-medium', 'text-display-small', 'text-headline-large', 'text-headline-medium', 'text-headline-small', 'text-body-large', 'text-body-large']
24
24
  const titleClass = computed(() => {
25
- const index = props.node.options.titleDepth
25
+ const index = props.node.titleDepth
26
26
  if (props.node.options.density === 'compact') return classes[index + 2]
27
27
  if (props.node.options.density === 'comfortable') return classes[index + 1]
28
28
  return classes[index]
@@ -32,10 +32,10 @@ const titleClass = computed(() => {
32
32
  <template>
33
33
  <div
34
34
  v-if="(node.layout.title && !hideTitle) || node.layout.subtitle || (node.error && node.validated)"
35
- :class="`mb-${titleDepthBase - node.options.titleDepth} mt-${hideTitle ? 0 : (titleDepthBase - node.options.titleDepth)}`"
35
+ :class="`mb-${titleDepthBase - node.titleDepth} mt-${hideTitle ? 0 : (titleDepthBase - node.titleDepth)}`"
36
36
  >
37
37
  <component
38
- :is="`h${node.options.titleDepth}`"
38
+ :is="`h${node.titleDepth}`"
39
39
  v-if="node.layout.title && !hideTitle"
40
40
  :class="`${titleClass}`"
41
41
  >
@@ -43,13 +43,13 @@ const titleClass = computed(() => {
43
43
  </component>
44
44
  <p
45
45
  v-if="node.layout.subtitle"
46
- :class="`text-subtitle mt-${hideTitle ? 0 : (titleDepthBase - node.options.titleDepth)}`"
46
+ :class="`text-subtitle mt-${hideTitle ? 0 : (titleDepthBase - node.titleDepth)}`"
47
47
  v-html="node.layout.subtitle"
48
48
  />
49
49
  <v-alert
50
50
  v-if="node.error && node.validated"
51
51
  type="error"
52
- :class="`mt-${titleDepthBase - node.options.titleDepth}`"
52
+ :class="`mt-${titleDepthBase - node.titleDepth}`"
53
53
  >
54
54
  {{ node.error }}
55
55
  </v-alert>
@@ -0,0 +1,137 @@
1
+ <script setup>
2
+ import Debug from 'debug'
3
+ import { computed, onRenderTriggered, onUpdated } from 'vue'
4
+ import { useTheme, useDefaults } from 'vuetify'
5
+ import { VCol } from 'vuetify/components/VGrid'
6
+ import { VDefaultsProvider } from 'vuetify/components/VDefaultsProvider'
7
+ import NodeSlot from './fragments/node-slot.vue'
8
+ import HelpMessage from './fragments/help-message.vue'
9
+
10
+ const debugRender = Debug('vjsf:render')
11
+
12
+ useDefaults({}, 'VjsfNode')
13
+
14
+ const props = defineProps({
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../types.js').VjsfNode> */
17
+ type: Object,
18
+ required: true
19
+ },
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../types.js').VjsfStatefulLayout> */
22
+ type: Object,
23
+ required: true
24
+ }
25
+ })
26
+
27
+ /** @type Record<import('../types.js').Density, string> */
28
+ const beforeAfterClasses = {
29
+ compact: 'my-1',
30
+ comfortable: 'my-2',
31
+ default: 'my-3'
32
+ }
33
+
34
+ const theme = useTheme()
35
+
36
+ if (debugRender.enabled) {
37
+ debugRender('setup node', props.modelValue.fullKey, props.modelValue.layout.comp)
38
+ onRenderTriggered(() => {
39
+ debugRender('render node', props.modelValue.fullKey, props.modelValue.layout.comp)
40
+ })
41
+ }
42
+
43
+ // dev/test render counting: track how many times each node re-renders
44
+ if (props.statefulLayout._renderCounts) {
45
+ const renderCounts = props.statefulLayout._renderCounts
46
+ const fullKey = props.modelValue.fullKey
47
+ renderCounts.set(fullKey, (renderCounts.get(fullKey) ?? 0))
48
+ onUpdated(() => {
49
+ renderCounts.set(fullKey, (renderCounts.get(fullKey) ?? 0) + 1)
50
+ })
51
+ }
52
+
53
+ const densityDefaults = computed(() => ({ global: { density: props.modelValue.options.density } }))
54
+
55
+ const indent = computed(() => {
56
+ if (props.modelValue.parentFullKey === null) return 0
57
+ if (!props.modelValue.options.indent) return 0
58
+ if (props.modelValue.layout.comp !== 'section') return 0
59
+ if (!props.modelValue.layout.title) return 0
60
+ if (typeof props.modelValue.options.indent === 'number') return props.modelValue.options.indent
61
+ if (props.modelValue.options.density === 'compact') return 2
62
+ if (props.modelValue.options.density === 'comfortable') return 4
63
+ return 6
64
+ })
65
+
66
+ const showHelp = computed(() => {
67
+ return (props.modelValue.layout.help || props.modelValue.layout.warning) && !props.modelValue.options.summary
68
+ })
69
+
70
+ const nodeClasses = computed(() => {
71
+ let classes = `vjsf-node vjsf-node-${props.modelValue.layout.comp} vjsf-density-${props.modelValue.options.density}`
72
+ if (props.modelValue.options.readOnly) classes += ' vjsf-readonly'
73
+ if (props.modelValue.options.summary) classes += ' vjsf-summary'
74
+ if (theme.current.value.dark) classes += ' vjsf-dark'
75
+ if (indent.value) classes += ' ml-' + indent.value
76
+ if (showHelp.value) classes += ' vjsf-has-help'
77
+ return classes
78
+ })
79
+
80
+ if (props.modelValue.layout.comp !== 'none' && !props.modelValue.slots?.component && !props.modelValue.slots?.compositeComponent && !props.statefulLayout.options.nodeComponents[props.modelValue.layout.comp]) {
81
+ console.error(`vjsf: missing component to render vjsf node "${props.modelValue.layout.comp}", maybe you forgot to register a component from a plugin ?`)
82
+ }
83
+
84
+ </script>
85
+
86
+ <template>
87
+ <v-defaults-provider :defaults="densityDefaults">
88
+ <v-col
89
+ v-if="modelValue.layout.comp !== 'none'"
90
+ :cols="modelValue.cols"
91
+ :class="nodeClasses"
92
+ >
93
+ <node-slot
94
+ v-if="modelValue.slots?.before"
95
+ key="before"
96
+ :layout-slot="modelValue.slots?.before"
97
+ :node="modelValue"
98
+ :stateful-layout="statefulLayout"
99
+ :class="beforeAfterClasses[modelValue.options.density]"
100
+ />
101
+
102
+ <help-message
103
+ v-if="showHelp"
104
+ :node="modelValue"
105
+ />
106
+ <node-slot
107
+ v-if="modelValue.slots?.component"
108
+ key="component"
109
+ :layout-slot="modelValue.slots?.component"
110
+ :node="modelValue"
111
+ :stateful-layout="statefulLayout"
112
+ />
113
+ <node-slot
114
+ v-else-if="modelValue.slots?.compositeComponent"
115
+ key="compositeComponent"
116
+ :layout-slot="modelValue.slots?.compositeComponent"
117
+ :node="modelValue"
118
+ :stateful-layout="statefulLayout"
119
+ />
120
+ <component
121
+ :is="props.statefulLayout.options.nodeComponents[modelValue.layout.comp]"
122
+ v-else
123
+ :model-value="modelValue"
124
+ :stateful-layout="statefulLayout"
125
+ />
126
+
127
+ <node-slot
128
+ v-if="modelValue.slots?.after"
129
+ key="after"
130
+ :layout-slot="modelValue.slots?.after"
131
+ :node="modelValue"
132
+ :stateful-layout="statefulLayout"
133
+ :class="beforeAfterClasses[modelValue.options.density]"
134
+ />
135
+ </v-col>
136
+ </v-defaults-provider>
137
+ </template>
@@ -1,125 +1,39 @@
1
- <script setup>
2
- import Debug from 'debug'
3
- import { computed, onRenderTriggered } from 'vue'
4
- import { useTheme, useDefaults } from 'vuetify'
5
- import { VCol } from 'vuetify/components/VGrid'
6
- import { VDefaultsProvider } from 'vuetify/components/VDefaultsProvider'
7
- import NodeSlot from './fragments/node-slot.vue'
8
- import HelpMessage from './fragments/help-message.vue'
9
-
10
- const debugRender = Debug('vjsf:render')
11
-
12
- useDefaults({}, 'VjsfNode')
13
-
14
- const props = defineProps({
15
- modelValue: {
16
- /** @type import('vue').PropType<import('../types.js').VjsfNode> */
17
- type: Object,
18
- required: true
1
+ <script>
2
+ import { defineComponent, h } from 'vue'
3
+ import NodeContent from './node-content.vue'
4
+
5
+ export default defineComponent({
6
+ name: 'VjsfNode',
7
+ props: {
8
+ modelValue: {
9
+ /** @type import('vue').PropType<import('../types.js').VjsfNode> */
10
+ type: Object,
11
+ required: true
12
+ },
13
+ statefulLayout: {
14
+ /** @type import('vue').PropType<import('../types.js').VjsfStatefulLayout> */
15
+ type: Object,
16
+ required: true
17
+ }
19
18
  },
20
- statefulLayout: {
21
- /** @type import('vue').PropType<import('../types.js').VjsfStatefulLayout> */
22
- type: Object,
23
- required: true
19
+ setup (props) {
20
+ /** @type import('../types.js').VjsfNode | null */
21
+ let prevModelValue = null
22
+ /** @type import('vue').VNode | null */
23
+ let cachedVNode = null
24
+
25
+ // this component acts as a simple wrapper that prevents re-rendering of unchanged immutable node
26
+ return () => {
27
+ if (props.modelValue === prevModelValue && cachedVNode) {
28
+ return cachedVNode
29
+ }
30
+ prevModelValue = props.modelValue
31
+ cachedVNode = h(NodeContent, {
32
+ modelValue: props.modelValue,
33
+ statefulLayout: props.statefulLayout
34
+ })
35
+ return cachedVNode
36
+ }
24
37
  }
25
38
  })
26
-
27
- /** @type Record<import('../types.js').Density, string> */
28
- const beforeAfterClasses = {
29
- compact: 'my-1',
30
- comfortable: 'my-2',
31
- default: 'my-3'
32
- }
33
-
34
- const theme = useTheme()
35
-
36
- if (debugRender.enabled) {
37
- debugRender('setup node', props.modelValue.fullKey, props.modelValue.layout.comp)
38
- onRenderTriggered(() => {
39
- debugRender('render node', props.modelValue.fullKey, props.modelValue.layout.comp)
40
- })
41
- }
42
-
43
- const indent = computed(() => {
44
- if (props.modelValue.parentFullKey === null) return 0
45
- if (!props.modelValue.options.indent) return 0
46
- if (props.modelValue.layout.comp !== 'section') return 0
47
- if (!props.modelValue.layout.title) return 0
48
- if (typeof props.modelValue.options.indent === 'number') return props.modelValue.options.indent
49
- if (props.modelValue.options.density === 'compact') return 2
50
- if (props.modelValue.options.density === 'comfortable') return 4
51
- return 6
52
- })
53
-
54
- const showHelp = computed(() => {
55
- return (props.modelValue.layout.help || props.modelValue.layout.warning) && !props.modelValue.options.summary
56
- })
57
-
58
- const nodeClasses = computed(() => {
59
- let classes = `vjsf-node vjsf-node-${props.modelValue.layout.comp} vjsf-density-${props.modelValue.options.density}`
60
- if (props.modelValue.options.readOnly) classes += ' vjsf-readonly'
61
- if (props.modelValue.options.summary) classes += ' vjsf-summary'
62
- if (theme.current.value.dark) classes += ' vjsf-dark'
63
- if (indent.value) classes += ' ml-' + indent.value
64
- if (showHelp.value) classes += ' vjsf-has-help'
65
- return classes
66
- })
67
-
68
- if (props.modelValue.layout.comp !== 'none' && !props.modelValue.slots?.component && !props.modelValue.slots?.compositeComponent && !props.statefulLayout.options.nodeComponents[props.modelValue.layout.comp]) {
69
- console.error(`vjsf: missing component to render vjsf node "${props.modelValue.layout.comp}", maybe you forgot to register a component from a plugin ?`)
70
- }
71
-
72
39
  </script>
73
-
74
- <template>
75
- <v-defaults-provider :defaults="{global: { density: props.modelValue.options.density }}">
76
- <v-col
77
- v-if="modelValue.layout.comp !== 'none'"
78
- :cols="modelValue.cols"
79
- :class="nodeClasses"
80
- >
81
- <node-slot
82
- v-if="modelValue.slots?.before"
83
- key="before"
84
- :layout-slot="modelValue.slots?.before"
85
- :node="modelValue"
86
- :stateful-layout="statefulLayout"
87
- :class="beforeAfterClasses[modelValue.options.density]"
88
- />
89
-
90
- <help-message
91
- v-if="showHelp"
92
- :node="modelValue"
93
- />
94
- <node-slot
95
- v-if="modelValue.slots?.component"
96
- key="component"
97
- :layout-slot="modelValue.slots?.component"
98
- :node="modelValue"
99
- :stateful-layout="statefulLayout"
100
- />
101
- <node-slot
102
- v-else-if="modelValue.slots?.compositeComponent"
103
- key="compositeComponent"
104
- :layout-slot="modelValue.slots?.compositeComponent"
105
- :node="modelValue"
106
- :stateful-layout="statefulLayout"
107
- />
108
- <component
109
- :is="props.statefulLayout.options.nodeComponents[modelValue.layout.comp]"
110
- v-else
111
- :model-value="modelValue"
112
- :stateful-layout="statefulLayout"
113
- />
114
-
115
- <node-slot
116
- v-if="modelValue.slots?.after"
117
- key="after"
118
- :layout-slot="modelValue.slots?.after"
119
- :node="modelValue"
120
- :stateful-layout="statefulLayout"
121
- :class="beforeAfterClasses[modelValue.options.density]"
122
- />
123
- </v-col>
124
- </v-defaults-provider>
125
- </template>
@@ -32,12 +32,13 @@ export default defineComponent({
32
32
  }
33
33
  fieldProps.items = getItems.items.value
34
34
  fieldProps.loading = getItems.loading.value
35
- fieldProps.modelValue = localData.value
36
35
  return fieldProps
37
36
  })
38
37
 
38
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
39
+
39
40
  // @ts-ignore
40
- return () => h(VAutocomplete, fieldProps.value, selectSlots.value)
41
+ return () => h(VAutocomplete, fullProps.value, selectSlots.value)
41
42
  }
42
43
  })
43
44
 
@@ -22,14 +22,15 @@ export default defineComponent({
22
22
 
23
23
  const { inputProps, localData, compSlots } = useNode(toRef(props, 'modelValue'), props.statefulLayout)
24
24
 
25
- const fullProps = computed(() => {
26
- const fullProps = { ...inputProps.value }
25
+ const fieldProps = computed(() => {
26
+ const fieldProps = { ...inputProps.value }
27
27
  // it is not very common to show an error below checkboxes and switches and without hide-details=auto they take a lot of space
28
- if (!('hideDetails' in inputProps)) fullProps.hideDetails = 'auto'
29
- fullProps.modelValue = localData.value
30
- return fullProps
28
+ if (!('hideDetails' in inputProps)) fieldProps.hideDetails = 'auto'
29
+ return fieldProps
31
30
  })
32
31
 
32
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
33
+
33
34
  return () => h(VCheckbox, fullProps.value, compSlots.value)
34
35
  }
35
36
  })
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import { defineComponent, h, toRef, watch, computed } from 'vue'
2
+ import { defineComponent, h, toRef, computed } from 'vue'
3
3
  import { VColorInput } from 'vuetify/labs/VColorInput'
4
4
  import useNode from '../../composables/use-node.js'
5
5
  import { useDefaults } from 'vuetify'
@@ -26,11 +26,11 @@ export default defineComponent({
26
26
  toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['placeholder'] }
27
27
  )
28
28
 
29
- const colorInputProps = computed(() => ({
30
- ...vColorInputDefaults.value, ...inputProps.value, modelValue: localData.value
29
+ const fieldProps = computed(() => ({
30
+ ...vColorInputDefaults.value, ...inputProps.value
31
31
  }))
32
- watch(colorInputProps, () => console.log('colorInputProps', colorInputProps.value), { immediate: true })
33
32
 
33
+ const colorInputProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
34
34
  return () => h(VColorInput, colorInputProps.value, compSlots.value)
35
35
  }
36
36
  })
@@ -47,8 +47,10 @@ export default defineComponent({
47
47
  return fieldProps
48
48
  })
49
49
 
50
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
51
+
50
52
  // @ts-ignore
51
- return () => h(VCombobox, { ...fieldProps.value, modelValue: localData.value }, compSlots.value)
53
+ return () => h(VCombobox, fullProps.value, compSlots.value)
52
54
  }
53
55
  })
54
56
 
@@ -29,6 +29,8 @@ const props = defineProps({
29
29
  }
30
30
  })
31
31
 
32
+ const defaultDensityDefaults = { global: { density: 'default' } }
33
+
32
34
  const vDate = useDate()
33
35
 
34
36
  const tab = ref('date')
@@ -98,7 +100,7 @@ const timePickerProps = computed(() => {
98
100
  <v-date-picker v-bind="datePickerProps" />
99
101
  </v-tabs-window-item>
100
102
  <v-tabs-window-item value="time">
101
- <v-defaults-provider :defaults="{global: { density: 'default' }}">
103
+ <v-defaults-provider :defaults="defaultDensityDefaults">
102
104
  <v-time-picker v-bind="timePickerProps" />
103
105
  </v-defaults-provider>
104
106
  </v-tabs-window-item>
@@ -33,8 +33,10 @@ export default defineComponent({
33
33
  return fieldProps
34
34
  })
35
35
 
36
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
37
+
36
38
  // @ts-ignore
37
- return () => h(VFileInput, { ...fieldProps.value, modelValue: localData.value }, compSlots.value)
39
+ return () => h(VFileInput, fullProps.value, compSlots.value)
38
40
  }
39
41
  })
40
42
 
@@ -241,7 +241,7 @@ const toggleDialog = (/** @type {boolean} */value) => {
241
241
  </v-list-subheader>
242
242
  <template
243
243
  v-for="(child, childIndex) of sortableArray"
244
- :key="children.findIndex(c => c === child)"
244
+ :key="child.fullKey"
245
245
  >
246
246
  <v-list-item
247
247
  v-bind="itemBind(childIndex, vListItemProps)"
@@ -49,8 +49,10 @@ export default defineComponent({
49
49
  return fieldProps
50
50
  })
51
51
 
52
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
53
+
52
54
  // @ts-ignore
53
- return () => h(VCombobox, { ...fieldProps.value, modelValue: localData.value }, compSlots.value)
55
+ return () => h(VCombobox, fullProps.value, compSlots.value)
54
56
  }
55
57
  })
56
58
 
@@ -24,14 +24,14 @@ export default defineComponent({
24
24
  toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['step', 'min', 'max', 'precision', 'placeholder'] }
25
25
  )
26
26
 
27
- const fullProps = computed(() => {
28
- const fullProps = { ...inputProps.value }
29
- fullProps.modelValue = localData.value
30
- if (fullProps.precision === undefined) fullProps.precision = null
31
-
32
- return fullProps
27
+ const fieldProps = computed(() => {
28
+ const fieldProps = { ...inputProps.value }
29
+ if (fieldProps.precision === undefined) fieldProps.precision = null
30
+ return fieldProps
33
31
  })
34
32
 
33
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
34
+
35
35
  return () => h(VNumberInput, fullProps.value, compSlots.value)
36
36
  }
37
37
  })
@@ -27,11 +27,7 @@ export default defineComponent({
27
27
  const getItems = useGetItems(nodeRef, props.statefulLayout)
28
28
  const { inputProps, compSlots, localData } = useNode(nodeRef, props.statefulLayout)
29
29
 
30
- const fieldProps = computed(() => {
31
- const fieldProps = { ...inputProps.value }
32
- fieldProps.modelValue = localData.value
33
- return fieldProps
34
- })
30
+ const fieldProps = computed(() => ({ ...inputProps.value, modelValue: localData.value }))
35
31
 
36
32
  const fieldSlots = computed(() => {
37
33
  const slots = { ...compSlots.value }
@@ -28,12 +28,13 @@ export default defineComponent({
28
28
  const fieldProps = { ...selectProps.value }
29
29
  fieldProps.loading = getItems.loading.value
30
30
  fieldProps.items = getItems.items.value
31
- fieldProps.modelValue = localData.value
32
31
  return fieldProps
33
32
  })
34
33
 
34
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
35
+
35
36
  // @ts-ignore
36
- return () => h(VSelect, fieldProps.value, selectSlots.value)
37
+ return () => h(VSelect, fullProps.value, selectSlots.value)
37
38
  }
38
39
  })
39
40
 
@@ -24,17 +24,18 @@ export default defineComponent({
24
24
  toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['step', 'min', 'max'] }
25
25
  )
26
26
 
27
- const fullProps = computed(() => {
28
- const fullProps = { ...inputProps.value }
29
- fullProps.modelValue = localData.value
30
- fullProps['onUpdate:modelValue'] = (/** @type string */value) => {
27
+ const fieldProps = computed(() => {
28
+ const fieldProps = { ...inputProps.value }
29
+ fieldProps['onUpdate:modelValue'] = (/** @type string */value) => {
31
30
  const newData = value && Number(value)
32
31
  localData.value = newData
33
32
  props.statefulLayout.input(props.modelValue, newData)
34
33
  }
35
- return fullProps
34
+ return fieldProps
36
35
  })
37
36
 
37
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
38
+
38
39
  return () => h(VSlider, fullProps.value, compSlots.value)
39
40
  }
40
41
  })
@@ -22,14 +22,15 @@ export default defineComponent({
22
22
 
23
23
  const { inputProps, localData, compSlots } = useNode(toRef(props, 'modelValue'), props.statefulLayout)
24
24
 
25
- const fullProps = computed(() => {
26
- const fullProps = { ...inputProps.value }
25
+ const fieldProps = computed(() => {
26
+ const fieldProps = { ...inputProps.value }
27
27
  // it is not very common to show an error below checkboxes and switches and without hide-details=auto they take a lot of space
28
- if (!('hideDetails' in inputProps)) fullProps.hideDetails = 'auto'
29
- fullProps.modelValue = localData.value
30
- return fullProps
28
+ if (!('hideDetails' in inputProps)) fieldProps.hideDetails = 'auto'
29
+ return fieldProps
31
30
  })
32
31
 
32
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
33
+
33
34
  return () => h(VSwitch, fullProps.value, compSlots.value)
34
35
  }
35
36
  })
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import { defineComponent, h, toRef } from 'vue'
2
+ import { defineComponent, h, toRef, computed } from 'vue'
3
3
  import { VTextField } from 'vuetify/components/VTextField'
4
4
  import useNode from '../../composables/use-node.js'
5
5
  import { useDefaults } from 'vuetify'
@@ -24,7 +24,9 @@ export default defineComponent({
24
24
  toRef(props, 'modelValue'), props.statefulLayout, { layoutPropsMap: ['placeholder'] }
25
25
  )
26
26
 
27
- return () => h(VTextField, { ...inputProps.value, modelValue: localData.value }, compSlots.value)
27
+ const fullProps = computed(() => ({ ...inputProps.value, modelValue: localData.value }))
28
+
29
+ return () => h(VTextField, fullProps.value, compSlots.value)
28
30
  }
29
31
  })
30
32
 
@@ -29,14 +29,15 @@ export default defineComponent({
29
29
 
30
30
  const defaultRows = computed(() => options.value.readOnly && options.value.summary ? 3 : undefined)
31
31
 
32
- const fullProps = computed(() => {
33
- const fullProps = { ...inputProps.value }
34
- fullProps.ref = textarea
35
- fullProps.rows = fullProps.rows ?? defaultRows.value
36
- fullProps.modelValue = localData.value
37
- return fullProps
32
+ const fieldProps = computed(() => {
33
+ const fieldProps = { ...inputProps.value }
34
+ fieldProps.ref = textarea
35
+ fieldProps.rows = fieldProps.rows ?? defaultRows.value
36
+ return fieldProps
38
37
  })
39
38
 
39
+ const fullProps = computed(() => ({ ...fieldProps.value, modelValue: localData.value }))
40
+
40
41
  watch(() => options.value.readOnly, (readOnly) => {
41
42
  if (readOnly && textarea.value) {
42
43
  textarea.value.scrollTop = 0
@@ -26,6 +26,8 @@ const props = defineProps({
26
26
  }
27
27
  })
28
28
 
29
+ const defaultDensityDefaults = { global: { density: 'default' } }
30
+
29
31
  const vDate = useDate()
30
32
 
31
33
  const { compProps, localData } = useNode(toRef(props, 'modelValue'), props.statefulLayout)
@@ -48,7 +50,7 @@ const timePickerProps = computed(() => {
48
50
  <v-icon :icon="statefulLayout.options.icons.clock" />
49
51
  </template>
50
52
  <v-sheet>
51
- <v-defaults-provider :defaults="{global: { density: 'default' }}">
53
+ <v-defaults-provider :defaults="defaultDensityDefaults">
52
54
  <v-time-picker
53
55
  v-bind="timePickerProps"
54
56
  @update:model-value="value => {statefulLayout.input(props.modelValue, value && getLongTime(value))}"
@@ -1,6 +1,6 @@
1
1
  import { useDefaults, useLocale } from 'vuetify'
2
2
  import { StatefulLayout } from '@json-layout/core/state'
3
- import { inject, toRaw, shallowRef, computed, ref, watch, useSlots, getCurrentInstance, nextTick } from 'vue'
3
+ import { inject, provide, toRaw, shallowRef, computed, ref, watch, useSlots, getCurrentInstance, nextTick } from 'vue'
4
4
  import { useElementSize } from '@vueuse/core'
5
5
  import { getFullOptions } from '../options.js'
6
6
  import { createClipboard } from './use-clipboard.js'
@@ -48,8 +48,16 @@ export const useVjsf = (schema, modelValue, options, nodeComponents, emit, compi
48
48
  const defaults = (inject(Symbol.for('vuetify:defaults')))?.value
49
49
  debug('provided defaults', defaults)
50
50
 
51
- // TODO: apply a debounce to width ?
52
- const { width } = useElementSize(el)
51
+ const { width: rawWidth } = useElementSize(el)
52
+ // quantize width to avoid triggering full state updates on every pixel change during resize
53
+ const width = computed(() => {
54
+ const w = rawWidth.value
55
+ if (!w) return 0
56
+ // use the same breakpoints as json-layout's Display class
57
+ if (w < 600) return w // xs: small screens, keep exact width
58
+ if (w < 960) return Math.round(w / 20) * 20 // sm: quantize to 20px
59
+ return Math.round(w / 50) * 50 // md+: quantize to 50px
60
+ })
53
61
 
54
62
  /** @type import('vue').ShallowRef<import('../types.js').VjsfStatefulLayout | null> */
55
63
  const statefulLayout = shallowRef(null)
@@ -75,12 +83,18 @@ export const useVjsf = (schema, modelValue, options, nodeComponents, emit, compi
75
83
  console.warn('Vjsf should be wrapped in VForm')
76
84
  }
77
85
 
86
+ // Prevent individual Vuetify form components (VTextField/VInput) inside vjsf
87
+ // from registering with the outer VForm. VJSF manages validation itself and
88
+ // registers as a single form member above. Without this, each VInput registers
89
+ // separately, causing VForm to cascade updates to all N fields on every keystroke.
90
+ provide(Symbol.for('vuetify:form'), null)
91
+
78
92
  const slots = useSlots()
79
93
 
80
94
  /* Callbacks from json layout stateful layout */
81
- /**
82
- * @param {import('@json-layout/core').StatefulLayout} statefulLayout
83
- */
95
+ /** @type {boolean | null | undefined} */
96
+ let lastFormValidationState
97
+ /** @param {import('@json-layout/core').StatefulLayout} statefulLayout */
84
98
  const onStatefulLayoutUpdate = (statefulLayout) => {
85
99
  debug('onStatefulLayoutUpdate', statefulLayout)
86
100
  if (!statefulLayout) return
@@ -89,9 +103,12 @@ export const useVjsf = (schema, modelValue, options, nodeComponents, emit, compi
89
103
  emit('update:state', statefulLayout)
90
104
  if (form) {
91
105
  // cf https://vuetifyjs.com/en/components/forms/#validation-state
92
- if (statefulLayout.valid) form.update(formMemberId, true, [])
93
- else if (statefulLayout.hasHiddenError) form.update(formMemberId, null, [])
94
- else form.update(formMemberId, false, [])
106
+ /** @type {boolean | null} */
107
+ const validationState = statefulLayout.valid ? true : (statefulLayout.hasHiddenError ? null : false)
108
+ if (validationState !== lastFormValidationState) {
109
+ lastFormValidationState = validationState
110
+ form.update(formMemberId, validationState, validationState === true ? [] : statefulLayout.errors)
111
+ }
95
112
  }
96
113
  }
97
114
 
package/src/types.ts CHANGED
@@ -78,7 +78,7 @@ export type VjsfOptions = PartialVjsfCompileOptions & VjsfStatefulLayoutOptions
78
78
  export type PartialVjsfOptions = PartialVjsfCompileOptions & Partial<Omit<VjsfStatefulLayoutOptions, 'width' | 'vjsfSlots' | 'onData' | 'onUpdate' | 'onAutofocus'>>
79
79
  export type FullVjsfNodeOptions = Required<VjsfOptions>
80
80
 
81
- export type VjsfStatefulLayout = Omit<StatefulLayout, 'options'> & {options: VjsfStatefulLayoutOptions}
81
+ export type VjsfStatefulLayout = Omit<StatefulLayout, 'options'> & {options: VjsfStatefulLayoutOptions, _renderCounts?: Map<string, number>}
82
82
 
83
83
  export type VjsfNode = Omit<StateNode, 'options'> & {options: FullVjsfNodeOptions}
84
84
  export type VjsfTabsNode = Omit<TabsNode, 'options'> & {options: FullVjsfNodeOptions}
@@ -1 +1 @@
1
- {"version":3,"file":"help-message.vue.d.ts","sourceRoot":"","sources":["../../../src/components/fragments/help-message.vue"],"names":[],"mappings":"wBA0NqB,OAAO,YAAY;;AATxC;;QAGI,sEAAsE;cAA5D,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,QAAQ,CAAC;;;;;QAAnE,sEAAsE;cAA5D,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,QAAQ,CAAC;;;6IAKpE"}
1
+ {"version":3,"file":"help-message.vue.d.ts","sourceRoot":"","sources":["../../../src/components/fragments/help-message.vue"],"names":[],"mappings":"wBA2NqB,OAAO,YAAY;;AATxC;;QAGI,sEAAsE;cAA5D,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,QAAQ,CAAC;;;;;QAAnE,sEAAsE;cAA5D,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,QAAQ,CAAC;;;6IAKpE"}
@@ -0,0 +1,26 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<import("vue", { with: { "resolution-mode": "import" } }).ExtractPropTypes<{
4
+ modelValue: {
5
+ /** @type import('vue').PropType<import('../types.js').VjsfNode> */
6
+ type: import("vue").PropType<import("../types.js").VjsfNode>;
7
+ required: true;
8
+ };
9
+ statefulLayout: {
10
+ /** @type import('vue').PropType<import('../types.js').VjsfStatefulLayout> */
11
+ type: import("vue").PropType<import("../types.js").VjsfStatefulLayout>;
12
+ required: true;
13
+ };
14
+ }>, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<import("vue", { with: { "resolution-mode": "import" } }).ExtractPropTypes<{
15
+ modelValue: {
16
+ /** @type import('vue').PropType<import('../types.js').VjsfNode> */
17
+ type: import("vue").PropType<import("../types.js").VjsfNode>;
18
+ required: true;
19
+ };
20
+ statefulLayout: {
21
+ /** @type import('vue').PropType<import('../types.js').VjsfStatefulLayout> */
22
+ type: import("vue").PropType<import("../types.js").VjsfStatefulLayout>;
23
+ required: true;
24
+ };
25
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, true, {}, any>;
26
+ //# sourceMappingURL=node-content.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-content.vue.d.ts","sourceRoot":"","sources":["../../src/components/node-content.vue"],"names":[],"mappings":"wBAiYqB,OAAO,YAAY;;AAdxC;;QAGI,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;;;QAL1E,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;6IAK3E"}
@@ -11,7 +11,9 @@ declare const __VLS_export: import("vue", { with: { "resolution-mode": "import"
11
11
  type: import("vue").PropType<import("../types.js").VjsfStatefulLayout>;
12
12
  required: true;
13
13
  };
14
- }>, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<import("vue", { with: { "resolution-mode": "import" } }).ExtractPropTypes<{
14
+ }>, () => import("vue", { with: { "resolution-mode": "import" } }).VNode<import("vue", { with: { "resolution-mode": "import" } }).RendererNode, import("vue", { with: { "resolution-mode": "import" } }).RendererElement, {
15
+ [key: string]: any;
16
+ }>, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<import("vue", { with: { "resolution-mode": "import" } }).ExtractPropTypes<{
15
17
  modelValue: {
16
18
  /** @type import('vue').PropType<import('../types.js').VjsfNode> */
17
19
  type: import("vue").PropType<import("../types.js").VjsfNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"node.vue.d.ts","sourceRoot":"","sources":["../../src/components/node.vue"],"names":[],"mappings":"wBAwWqB,OAAO,YAAY;;AAdxC;;QAGI,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;;;QAL1E,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;6IAK3E"}
1
+ {"version":3,"file":"node.vue.d.ts","sourceRoot":"","sources":["../../src/components/node.vue"],"names":[],"mappings":"wBA6CqB,OAAO,YAAY;;AAQxC;;QAIM,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;;;;;QAL1E,mEAAmE;cAAzD,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,QAAQ,CAAC;;;;QAKhE,6EAA6E;cAAnE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC;;;6IAwB7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/autocomplete.vue"],"names":[],"mappings":"wBAqDqB,OAAO,YAAY;;AAQxC;;QAGI,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKvE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL/E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKvE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IA0BhF"}
1
+ {"version":3,"file":"autocomplete.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/autocomplete.vue"],"names":[],"mappings":"wBAsDqB,OAAO,YAAY;;AAQxC;;QAGI,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKvE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL/E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKvE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IA2BhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/checkbox.vue"],"names":[],"mappings":"wBA6CqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAoBhF"}
1
+ {"version":3,"file":"checkbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/checkbox.vue"],"names":[],"mappings":"wBA8CqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAqBhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/combobox.vue"],"names":[],"mappings":"wBAiEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAoChF"}
1
+ {"version":3,"file":"combobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/combobox.vue"],"names":[],"mappings":"wBAmEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAsChF"}
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-picker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/date-time-picker.vue"],"names":[],"mappings":"wBA8ZqB,OAAO,YAAY;;AAdxC;;QAGI,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAK9E"}
1
+ {"version":3,"file":"date-time-picker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/date-time-picker.vue"],"names":[],"mappings":"wBAmaqB,OAAO,YAAY;;AAdxC;;QAGI,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAK9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/file-input.vue"],"names":[],"mappings":"wBAuDqB,OAAO,YAAY;;AAQxC;;QAGM,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAwBhF"}
1
+ {"version":3,"file":"file-input.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/file-input.vue"],"names":[],"mappings":"wBAyDqB,OAAO,YAAY;;AAQxC;;QAGM,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IA0BhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"number-combobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/number-combobox.vue"],"names":[],"mappings":"wBAmEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAsChF"}
1
+ {"version":3,"file":"number-combobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/number-combobox.vue"],"names":[],"mappings":"wBAqEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAwChF"}
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/radio-group.vue"],"names":[],"mappings":"wBAqEqB,OAAO,YAAY;;AAQxC;;QAGM,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAsChF"}
1
+ {"version":3,"file":"radio-group.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/radio-group.vue"],"names":[],"mappings":"wBAiEqB,OAAO,YAAY;;AAQxC;;QAGM,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAkChF"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/select.vue"],"names":[],"mappings":"wBAiDqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAsBhF"}
1
+ {"version":3,"file":"select.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/select.vue"],"names":[],"mappings":"wBAkDqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAuBhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/slider.vue"],"names":[],"mappings":"wBAiDqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAyBhF"}
1
+ {"version":3,"file":"slider.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/slider.vue"],"names":[],"mappings":"wBAkDqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IA0BhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"switch.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/switch.vue"],"names":[],"mappings":"wBA6CqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAoBhF"}
1
+ {"version":3,"file":"switch.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/switch.vue"],"names":[],"mappings":"wBA8CqB,OAAO,YAAY;;AAQxC;;QAGM,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,4EAA4E;cAAlE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,cAAc,CAAC;;;;QAKzE,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAqBhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/text-field.vue"],"names":[],"mappings":"wBA6CqB,OAAO,YAAY;;AAQxC;;QAGM,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAchF"}
1
+ {"version":3,"file":"text-field.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/text-field.vue"],"names":[],"mappings":"wBA+CqB,OAAO,YAAY;;AAQxC;;QAGM,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,+EAA+E;cAArE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;;;;QAK5E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAgBhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/textarea.vue"],"names":[],"mappings":"wBAqEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAiChF"}
1
+ {"version":3,"file":"textarea.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/textarea.vue"],"names":[],"mappings":"wBAsEqB,OAAO,YAAY;;AAQxC;;QAGM,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;;;QAL7E,8EAA8E;cAApE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,gBAAgB,CAAC;;;;QAK3E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAkChF"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/time-picker.vue"],"names":[],"mappings":"wBAwNqB,OAAO,YAAY;;AAdxC;;QAGI,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAK9E"}
1
+ {"version":3,"file":"time-picker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/nodes/time-picker.vue"],"names":[],"mappings":"wBA6NqB,OAAO,YAAY;;AAdxC;;QAGI,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;;QAL7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;;QAK7E,gFAAgF;cAAtE,OAAO,KAAK,EAAE,QAAQ,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;;;6IAK9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-vjsf.d.ts","sourceRoot":"","sources":["../../src/composables/use-vjsf.js"],"names":[],"mappings":"AAcA;IACE;;MAEE;gCADO,GAAG;IAGZ;;MAEE;4BADO,OAAO,aAAa,EAAE,kBAAkB;EAGlD;AAiBM,gCAdI,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,cACzB,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WACtB,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,kBAClE,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,CAAC,QACvC,GAAG,YACH,cAAc,2BAA2B,EAAE,OAAO,0BAClD,cAAc,2BAA2B,EAAE,qBAAqB,sBAChE,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,mBAAmB,EAAE,cAAc,CAAC,GAC3D;IACV,EAAE,EAAE,OAAO,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,EAAE,OAAO,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC1F,SAAS,EAAE,OAAO,KAAK,EAAE,UAAU,CAAC,OAAO,mBAAmB,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;CAChF,CAsJH"}
1
+ {"version":3,"file":"use-vjsf.d.ts","sourceRoot":"","sources":["../../src/composables/use-vjsf.js"],"names":[],"mappings":"AAcA;IACE;;MAEE;gCADO,GAAG;IAGZ;;MAEE;4BADO,OAAO,aAAa,EAAE,kBAAkB;EAGlD;AAiBM,gCAdI,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,cACzB,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WACtB,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,kBAClE,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,SAAS,CAAC,QACvC,GAAG,YACH,cAAc,2BAA2B,EAAE,OAAO,0BAClD,cAAc,2BAA2B,EAAE,qBAAqB,sBAChE,OAAO,KAAK,EAAE,GAAG,CAAC,OAAO,mBAAmB,EAAE,cAAc,CAAC,GAC3D;IACV,EAAE,EAAE,OAAO,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,EAAE,OAAO,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC1F,SAAS,EAAE,OAAO,KAAK,EAAE,UAAU,CAAC,OAAO,mBAAmB,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;CAChF,CAuKH"}
package/types/types.d.ts CHANGED
@@ -40,6 +40,7 @@ export type PartialVjsfOptions = PartialVjsfCompileOptions & Partial<Omit<VjsfSt
40
40
  export type FullVjsfNodeOptions = Required<VjsfOptions>;
41
41
  export type VjsfStatefulLayout = Omit<StatefulLayout, 'options'> & {
42
42
  options: VjsfStatefulLayoutOptions;
43
+ _renderCounts?: Map<string, number>;
43
44
  };
44
45
  export type VjsfNode = Omit<StateNode, 'options'> & {
45
46
  options: FullVjsfNodeOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}