@json-layout/core 0.1.0 → 0.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-layout/core",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Compilation and state management utilities for JSON Layout.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -19,7 +19,8 @@
19
19
  },
20
20
  "files": [
21
21
  "src",
22
- "types"
22
+ "types",
23
+ "LICENSE"
23
24
  ],
24
25
  "scripts": {
25
26
  "test:single": "node --no-experimental-fetch --test --test-only test/*.spec.js",
@@ -46,7 +47,7 @@
46
47
  },
47
48
  "homepage": "https://github.com/json-layout/json-layout#readme",
48
49
  "dependencies": {
49
- "@json-layout/vocabulary": "^0.1.0",
50
+ "@json-layout/vocabulary": "^0.2.0",
50
51
  "@types/markdown-it": "^13.0.1",
51
52
  "ajv": "^8.12.0",
52
53
  "ajv-errors": "^3.0.0",
@@ -27,7 +27,7 @@ const Ajv = /** @type {typeof ajvModule.default} */ (ajvModule)
27
27
  // @ts-ignore
28
28
  const ajvLocalize = /** @type {typeof ajvLocalizeModule.default} */ (ajvLocalizeModule)
29
29
 
30
- const expressionsParams = ['data', 'options', 'display']
30
+ const expressionsParams = ['data', 'options', 'context', 'display']
31
31
 
32
32
  const clone = rfdc()
33
33
  // const exprEvalParser = new ExprEvalParser()
@@ -87,8 +87,19 @@ export function compile (_schema, partialOptions = {}) {
87
87
  const normalizedLayouts = {}
88
88
  /** @type {import('@json-layout/vocabulary').Expression[]} */
89
89
  const expressionsDefinitions = []
90
+ /** @type {Record<string, string[]>} */
91
+ const validationErrors = {}
90
92
 
91
- const skeletonTree = makeSkeletonTree(schema, options, validatePointers, normalizedLayouts, expressionsDefinitions, `${schema.$id}#`, 'main')
93
+ const skeletonTree = makeSkeletonTree(
94
+ schema,
95
+ options,
96
+ validatePointers,
97
+ validationErrors,
98
+ normalizedLayouts,
99
+ expressionsDefinitions,
100
+ `${schema.$id}#`,
101
+ 'main'
102
+ )
92
103
 
93
104
  options.ajv.addSchema(schema)
94
105
 
@@ -126,6 +137,7 @@ export function compile (_schema, partialOptions = {}) {
126
137
  schema,
127
138
  skeletonTree,
128
139
  validates,
140
+ validationErrors,
129
141
  normalizedLayouts,
130
142
  expressions,
131
143
  locale: options.locale,
@@ -26,7 +26,7 @@ export function serialize (compiledLayout) {
26
26
 
27
27
  code = code.replace('"use strict";', '')
28
28
 
29
- // some internal imports to ajv are not translated to asm, we do it here
29
+ // some internal imports to ajv are not translated to esm, we do it here
30
30
  // cf https://github.com/ajv-validator/ajv-formats/pull/73
31
31
  if (code.includes('require("ajv-formats/dist/formats")')) {
32
32
  code = 'import { fullFormats } from "ajv-formats/dist/formats.js";\n' + code
@@ -37,7 +37,7 @@ export function serialize (compiledLayout) {
37
37
  code = code.replace(/require\("ajv\/dist\/runtime\/ucs2length"\)/g, 'ucs2length')
38
38
  }
39
39
 
40
- // importe only the current locale from ajv-i18n
40
+ // import only the current locale from ajv-i18n
41
41
  code = `import localizeErrors from "ajv-i18n/localize/${compiledLayout.locale}/index.js";
42
42
  export const exportLocalizeErrors = localizeErrors;\n` + code
43
43
 
@@ -55,6 +55,7 @@ export const exportLocalizeErrors = localizeErrors;\n` + code
55
55
  skeletonTree: compiledLayout.skeletonTree,
56
56
  normalizedLayouts: compiledLayout.normalizedLayouts,
57
57
  validates: {},
58
+ validationErrors: compiledLayout.validationErrors,
58
59
  expressions: expressionsNodes,
59
60
  locale: compiledLayout.locale,
60
61
  messages: compiledLayout.messages,
@@ -1,5 +1,5 @@
1
1
  // import Debug from 'debug'
2
- import { normalizeLayoutFragment, isSwitchStruct, isGetItemsExpression, isSelectLayout, isGetItemsFetch } from '@json-layout/vocabulary'
2
+ import { normalizeLayoutFragment, isSwitchStruct, isGetItemsExpression, isGetItemsFetch, isItemsLayout } from '@json-layout/vocabulary'
3
3
  import { makeSkeletonTree } from './skeleton-tree.js'
4
4
 
5
5
  /**
@@ -20,6 +20,7 @@ const pushExpression = (expressions, expression) => {
20
20
  * @param {any} schema
21
21
  * @param {import('./index.js').CompileOptions} options
22
22
  * @param {string[]} validates
23
+ * @param {Record<string, string[]>} validationErrors
23
24
  * @param {Record<string, import('@json-layout/vocabulary').NormalizedLayout>} normalizedLayouts
24
25
  * @param {import('@json-layout/vocabulary').Expression[]} expressions
25
26
  * @param {string | number} key
@@ -32,6 +33,7 @@ export function makeSkeletonNode (
32
33
  schema,
33
34
  options,
34
35
  validates,
36
+ validationErrors,
35
37
  normalizedLayouts,
36
38
  expressions,
37
39
  key,
@@ -44,20 +46,26 @@ export function makeSkeletonNode (
44
46
 
45
47
  // improve on ajv error messages based on ajv-errors (https://ajv.js.org/packages/ajv-errors.html)
46
48
  schema.errorMessage = schema.errorMessage ?? {}
47
- /** @type {import('@json-layout/vocabulary').NormalizedLayout} */
48
- const normalizedLayout = normalizedLayouts[pointer] ?? normalizeLayoutFragment(/** @type {import('@json-layout/vocabulary').SchemaFragment} */(schema), pointer, options.markdown)
49
- normalizedLayouts[pointer] = normalizedLayout
49
+ if (!normalizedLayouts[pointer]) {
50
+ const normalizationResult = normalizeLayoutFragment(/** @type {import('@json-layout/vocabulary').SchemaFragment} */(schema), pointer, options.markdown)
51
+ normalizedLayouts[pointer] = normalizationResult.layout
52
+ if (normalizationResult.errors.length) {
53
+ validationErrors[pointer.replace('_jl#', '/')] = normalizationResult.errors
54
+ }
55
+ }
56
+ const normalizedLayout = normalizedLayouts[pointer]
50
57
 
51
58
  const compObjects = isSwitchStruct(normalizedLayout) ? normalizedLayout.switch : [normalizedLayout]
52
59
  for (const compObject of compObjects) {
53
60
  if (schema.description && !compObject.help) compObject.help = schema.description
54
61
  if (compObject.if) pushExpression(expressions, compObject.if)
55
- if (isSelectLayout(compObject) && compObject.getItems) {
62
+ if (isItemsLayout(compObject) && compObject.getItems) {
56
63
  if (isGetItemsExpression(compObject.getItems)) pushExpression(expressions, compObject.getItems)
57
64
  if (isGetItemsFetch(compObject.getItems)) pushExpression(expressions, compObject.getItems.url)
58
65
  if (compObject.getItems.itemTitle) pushExpression(expressions, compObject.getItems.itemTitle)
59
66
  if (compObject.getItems.itemKey) pushExpression(expressions, compObject.getItems.itemKey)
60
67
  if (compObject.getItems.itemValue) pushExpression(expressions, compObject.getItems.itemValue)
68
+ if (compObject.getItems.itemIcon) pushExpression(expressions, compObject.getItems.itemIcon)
61
69
  if (compObject.getItems.itemsResults) pushExpression(expressions, compObject.getItems.itemsResults)
62
70
  }
63
71
  }
@@ -82,6 +90,7 @@ export function makeSkeletonNode (
82
90
  schema.properties[propertyKey],
83
91
  options,
84
92
  validates,
93
+ validationErrors,
85
94
  normalizedLayouts,
86
95
  expressions,
87
96
  propertyKey,
@@ -102,6 +111,7 @@ export function makeSkeletonNode (
102
111
  schema.allOf[i],
103
112
  options,
104
113
  validates,
114
+ validationErrors,
105
115
  normalizedLayouts,
106
116
  expressions,
107
117
  `$allOf-${i}`,
@@ -113,14 +123,29 @@ export function makeSkeletonNode (
113
123
  }
114
124
  if (schema.oneOf) {
115
125
  const oneOfPointer = `${pointer}/oneOf`
116
- normalizedLayouts[oneOfPointer] = normalizedLayouts[oneOfPointer] ?? normalizeLayoutFragment(schema, oneOfPointer, options.markdown, 'oneOf')
126
+ if (!normalizedLayouts[oneOfPointer]) {
127
+ const normalizationResult = normalizeLayoutFragment(schema, oneOfPointer, options.markdown, 'oneOf')
128
+ normalizedLayouts[oneOfPointer] = normalizationResult.layout
129
+ if (normalizationResult.errors.length) {
130
+ validationErrors[oneOfPointer.replace('_jl#', '/')] = normalizationResult.errors
131
+ }
132
+ }
117
133
  /** @type {import('./types.js').SkeletonTree[]} */
118
134
  const childrenTrees = []
119
135
  for (let i = 0; i < schema.oneOf.length; i++) {
120
136
  if (!schema.oneOf[i].type) schema.oneOf[i].type = schema.type
121
137
  const title = schema.oneOf[i].title ?? `option ${i}`
122
138
  delete schema.oneOf[i].title
123
- childrenTrees.push(makeSkeletonTree(schema.oneOf[i], options, validates, normalizedLayouts, expressions, `${oneOfPointer}/${i}`, title))
139
+ childrenTrees.push(makeSkeletonTree(
140
+ schema.oneOf[i],
141
+ options,
142
+ validates,
143
+ validationErrors,
144
+ normalizedLayouts,
145
+ expressions,
146
+ `${oneOfPointer}/${i}`,
147
+ title
148
+ ))
124
149
  }
125
150
  node.children = node.children ?? []
126
151
  node.children.push({ key: '$oneOf', pointer: `${pointer}/oneOf`, parentPointer: pointer, childrenTrees })
@@ -136,6 +161,7 @@ export function makeSkeletonNode (
136
161
  itemSchema,
137
162
  options,
138
163
  validates,
164
+ validationErrors,
139
165
  normalizedLayouts,
140
166
  expressions,
141
167
  i,
@@ -150,6 +176,7 @@ export function makeSkeletonNode (
150
176
  schema.items,
151
177
  options,
152
178
  validates,
179
+ validationErrors,
153
180
  normalizedLayouts,
154
181
  expressions,
155
182
  `${pointer}/items`,
@@ -7,6 +7,7 @@ import { makeSkeletonNode } from './skeleton-node.js'
7
7
  * @param {any} schema
8
8
  * @param {import('./index.js').CompileOptions} options
9
9
  * @param {string[]} validates
10
+ * @param {Record<string, string[]>} validationErrors
10
11
  * @param {Record<string, import('@json-layout/vocabulary').NormalizedLayout>} normalizedLayouts
11
12
  * @param {import('@json-layout/vocabulary').Expression[]} expressions
12
13
  * @param {string} pointer
@@ -17,12 +18,13 @@ export function makeSkeletonTree (
17
18
  schema,
18
19
  options,
19
20
  validates,
21
+ validationErrors,
20
22
  normalizedLayouts,
21
23
  expressions,
22
24
  pointer,
23
25
  title
24
26
  ) {
25
- const root = makeSkeletonNode(schema, options, validates, normalizedLayouts, expressions, '', pointer, null, true)
27
+ const root = makeSkeletonNode(schema, options, validates, validationErrors, normalizedLayouts, expressions, '', pointer, null, true)
26
28
  validates.push(pointer)
27
29
  return { title, root }
28
30
  }
@@ -1,11 +1,11 @@
1
1
  import type ajvModule from 'ajv'
2
2
  import type MarkdownIt from 'markdown-it'
3
3
  import { type NormalizedLayout, type StateNodeOptions } from '@json-layout/vocabulary'
4
- import { type ValidateFunction, type SchemaObject } from 'ajv'
4
+ import { type ValidateFunction, type SchemaObject, type ErrorObject } from 'ajv'
5
5
  import { type Display } from '../state/utils/display.js'
6
6
  import { type LocaleMessages } from '../i18n/types.js'
7
7
 
8
- export type CompiledExpression = (data: any, options: StateNodeOptions, display: Display) => any
8
+ export type CompiledExpression = (data: any, options: StateNodeOptions, context: object, display: Display) => any
9
9
 
10
10
  export interface CompileOptions {
11
11
  ajv: ajvModule.default
@@ -23,6 +23,7 @@ export interface CompiledLayout {
23
23
  schema?: SchemaObject
24
24
  skeletonTree: SkeletonTree
25
25
  validates: Record<string, ValidateFunction>
26
+ validationErrors: Record<string, string[]>
26
27
  normalizedLayouts: Record<string, NormalizedLayout>
27
28
  expressions: CompiledExpression[]
28
29
  locale: string
package/src/i18n/en.js CHANGED
@@ -6,5 +6,6 @@ export default {
6
6
  delete: 'Delete',
7
7
  edit: 'Edit',
8
8
  duplicate: 'Duplicate',
9
- sort: 'Sort'
9
+ sort: 'Sort',
10
+ showHelp: 'Show a help message'
10
11
  }
package/src/i18n/fr.js CHANGED
@@ -6,5 +6,6 @@ export default {
6
6
  delete: 'Supprimer',
7
7
  edit: 'Éditer',
8
8
  duplicate: 'Dupliquer',
9
- sort: 'Trier'
9
+ sort: 'Trier',
10
+ showHelp: 'Afficher un message d\'aide'
10
11
  }
package/src/i18n/types.ts CHANGED
@@ -9,6 +9,7 @@ export interface StateOptionsMessages {
9
9
  edit: string
10
10
  duplicate: string
11
11
  sort: string
12
+ showHelp: string
12
13
  }
13
14
 
14
15
  export type LocaleMessages = CompileOptionsMessages & StateOptionsMessages
@@ -4,7 +4,7 @@ import debug from 'debug'
4
4
  import { evalExpression, producePatchedData } from './state-node.js'
5
5
  import { createStateTree } from './state-tree.js'
6
6
  import { Display } from './utils/display.js'
7
- import { isGetItemsExpression, isGetItemsFetch } from '@json-layout/vocabulary'
7
+ import { isGetItemsExpression, isGetItemsFetch, isItemsLayout } from '@json-layout/vocabulary'
8
8
 
9
9
  export { Display } from './utils/display.js'
10
10
 
@@ -20,6 +20,8 @@ export { Display } from './utils/display.js'
20
20
  * @typedef {import('./types.js').SliderNode} SliderNode
21
21
  * @typedef {import('./types.js').SectionNode} SectionNode
22
22
  * @typedef {import('./types.js').SelectNode} SelectNode
23
+ * @typedef {import('./types.js').AutocompleteNode} AutocompleteNode
24
+ * @typedef {import('./types.js').ComboboxNode} ComboboxNode
23
25
  * @typedef {import('./types.js').CheckboxNode} CheckboxNode
24
26
  * @typedef {import('./types.js').SwitchNode} SwitchNode
25
27
  * @typedef {import('./types.js').ColorPickerNode} ColorPickerNode
@@ -36,8 +38,8 @@ export { Display } from './utils/display.js'
36
38
  /** @type {(node: StateNode | undefined) => node is SectionNode} */
37
39
  export const isSection = (node) => !!node && node.layout.comp === 'section'
38
40
 
39
- /** @type {(node: StateNode | undefined) => node is SelectNode} */
40
- export const isSelect = (node) => !!node && node.layout.comp === 'select'
41
+ /** @type {(node: StateNode | undefined) => node is SelectNode | ComboboxNode | AutocompleteNode} */
42
+ export const isItemsNode = (node) => !!node && isItemsLayout(node.layout)
41
43
 
42
44
  const logDataBinding = debug('jl:data-binding')
43
45
 
@@ -303,12 +305,15 @@ export class StatefulLayout {
303
305
  }
304
306
 
305
307
  /**
308
+ * @private
306
309
  * @param {StateNode} node
307
- * @returns {Promise<import('@json-layout/vocabulary').SelectItems>}
310
+ * @param {string} q
311
+ * @returns {Promise<[import('@json-layout/vocabulary').SelectItems, boolean]>}
308
312
  */
309
- async getSelectItems (node) {
310
- if (!isSelect(node)) throw new Error('node is not a select component')
311
- if (node.layout.items) return node.layout.items
313
+ async getSourceItems (node, q = '') {
314
+ if (!isItemsNode(node)) throw new Error('node is not a component with an items list')
315
+
316
+ if (node.layout.items) return [node.layout.items, false]
312
317
 
313
318
  /** @type {(expression: import('@json-layout/vocabulary').Expression, data: any) => any} */
314
319
  const evalSelectExpression = (expression, data) => {
@@ -316,12 +321,24 @@ export class StatefulLayout {
316
321
  }
317
322
 
318
323
  let rawItems
324
+ let appliedQ = false
319
325
  if (node.layout.getItems && isGetItemsExpression(node.layout.getItems)) {
320
326
  rawItems = evalSelectExpression(node.layout.getItems, null)
321
327
  if (!Array.isArray(rawItems)) throw new Error('getItems expression didn\'t return an array')
322
328
  }
323
329
  if (node.layout.getItems && isGetItemsFetch(node.layout.getItems)) {
324
- const url = evalSelectExpression(node.layout.getItems.url, null)
330
+ const url = new URL(evalSelectExpression(node.layout.getItems.url, null))
331
+ let qSearchParam = node.layout.getItems.qSearchParam
332
+ if (!qSearchParam) {
333
+ for (const searchParam of url.searchParams.entries()) {
334
+ if (searchParam[1] === '{q}') qSearchParam = searchParam[0]
335
+ }
336
+ }
337
+ if (qSearchParam) {
338
+ appliedQ = true
339
+ if (q) url.searchParams.set(qSearchParam, q)
340
+ else url.searchParams.delete(qSearchParam)
341
+ }
325
342
  rawItems = await (await fetch(url)).json()
326
343
  }
327
344
 
@@ -329,28 +346,40 @@ export class StatefulLayout {
329
346
  if (node.layout.getItems?.itemsResults) {
330
347
  rawItems = evalSelectExpression(node.layout.getItems.itemsResults, rawItems)
331
348
  }
332
- return rawItems.map((/** @type {any} */ rawItem) => {
349
+ /** @type {import('@json-layout/vocabulary').SelectItems} */
350
+ const items = rawItems.map((/** @type {any} */ rawItem) => {
351
+ /** @type {Partial<import('@json-layout/vocabulary').SelectItem>} */
352
+ const item = {}
333
353
  if (typeof rawItem === 'object') {
334
- /** @type {Partial<import('@json-layout/vocabulary').SelectItem>} */
335
- const item = {}
336
354
  item.value = node.layout.getItems?.itemValue ? evalSelectExpression(node.layout.getItems.itemValue, rawItem) : (node.layout.getItems?.returnObjects ? rawItem : rawItem.value)
337
355
  item.key = node.layout.getItems?.itemKey ? evalSelectExpression(node.layout.getItems.itemKey, rawItem) : rawItem.key
338
356
  item.title = node.layout.getItems?.itemTitle ? evalSelectExpression(node.layout.getItems.itemTitle, rawItem) : rawItem.title
339
357
  item.value = item.value ?? item.key
340
358
  item.key = item.key ?? item.value + ''
341
359
  item.title = item.title ?? item.key
342
- return item
360
+ if (!item.icon && rawItem.icon) item.icon = rawItem.icon
343
361
  } else {
344
- /** @type {Partial<import('@json-layout/vocabulary').SelectItem>} */
345
- const item = {}
346
362
  item.value = node.layout.getItems?.itemValue ? evalSelectExpression(node.layout.getItems.itemValue, rawItem) : rawItem
347
363
  item.key = node.layout.getItems?.itemKey ? evalSelectExpression(node.layout.getItems.itemKey, rawItem) : item.value
348
364
  item.title = node.layout.getItems?.itemTitle ? evalSelectExpression(node.layout.getItems.itemTitle, rawItem) : item.value
349
- return item
350
365
  }
366
+ if (node.layout.getItems?.itemIcon) item.icon = evalSelectExpression(node.layout.getItems?.itemIcon, rawItem)
367
+ return item
351
368
  })
369
+ return [items, appliedQ]
352
370
  }
353
- throw new Error('node is missing items or getItems parameters')
371
+ throw new Error(`node ${node.fullKey} is missing items or getItems parameters`)
372
+ }
373
+
374
+ /**
375
+ * @param {StateNode} node
376
+ * @param {string} q
377
+ * @returns {Promise<import('@json-layout/vocabulary').SelectItems>}
378
+ */
379
+ async getItems (node, q = '') {
380
+ const [sourceItems, appliedQ] = await this.getSourceItems(node, q)
381
+ if (q && !appliedQ) return sourceItems.filter(item => item.title.toLowerCase().includes(q.toLowerCase()))
382
+ return sourceItems
354
383
  }
355
384
 
356
385
  /**
@@ -125,7 +125,7 @@ export function evalExpression (expressions, expression, data, options, display)
125
125
  if (expression.ref === undefined) throw new Error('expression was not compiled : ' + JSON.stringify(expression))
126
126
  const compiledExpression = expressions[expression.ref]
127
127
  // console.log(expression.expr, context, mode, display)
128
- return compiledExpression(data, options, display)
128
+ return compiledExpression(data, options, options.context, display)
129
129
  }
130
130
 
131
131
  /**
@@ -192,7 +192,8 @@ export function createStateNode (
192
192
  const options = produceNodeOptions(
193
193
  reusedNode?.options ?? /** @type {import('./types.js').StatefulLayoutOptions} */({}),
194
194
  parentOptions,
195
- layout.options, display.width
195
+ layout.options,
196
+ display.width
196
197
  )
197
198
 
198
199
  /** @type {import('./types.js').StateNode[] | undefined} */
@@ -1,5 +1,28 @@
1
1
  import { type ErrorObject } from 'ajv'
2
- import { type CompObject, type Cols, type StateNodeOptions, type TextField, type Textarea, type NumberField, type Slider, type Checkbox, type Switch, type DatePicker, type DateTimePicker, type TimePicker, type ColorPicker, type Section, type OneOfSelect, type Select, type Tabs, type VerticalTabs, type ExpansionPanels, type List } from '@json-layout/vocabulary'
2
+ import {
3
+ type CompObject,
4
+ type Cols,
5
+ type StateNodeOptions,
6
+ type TextField,
7
+ type Textarea,
8
+ type NumberField,
9
+ type Slider,
10
+ type Checkbox,
11
+ type Switch,
12
+ type DatePicker,
13
+ type DateTimePicker,
14
+ type TimePicker,
15
+ type ColorPicker,
16
+ type Section,
17
+ type OneOfSelect,
18
+ type Select,
19
+ type Autocomplete,
20
+ type Tabs,
21
+ type VerticalTabs,
22
+ type ExpansionPanels,
23
+ type List,
24
+ type Combobox
25
+ } from '@json-layout/vocabulary'
3
26
  import { type SkeletonTree, type SkeletonNode, type StatefulLayout } from '../index.js'
4
27
  import { type LocaleMessages } from '../i18n/types.js'
5
28
 
@@ -80,6 +103,8 @@ export type OneOfSelectNode = StateNode & { layout: OneOfSelect, data: Record<st
80
103
 
81
104
  export type SelectNode = Omit<StateNode, 'children'> & { layout: Select, data: any }
82
105
 
106
+ export type AutocompleteNode = Omit<StateNode, 'children'> & { layout: Autocomplete, data: any }
107
+
83
108
  export type TabsNode = StateNode & { layout: Tabs, children: StateNode[] }
84
109
 
85
110
  export type VerticalTabsNode = StateNode & { layout: VerticalTabs, children: StateNode[] }
@@ -87,3 +112,5 @@ export type VerticalTabsNode = StateNode & { layout: VerticalTabs, children: Sta
87
112
  export type ExpansionPanelsNode = StateNode & { layout: ExpansionPanels, children: StateNode[] }
88
113
 
89
114
  export type ListNode = StateNode & { layout: List, data: any[], children: StateNode[], childrenTrees: SkeletonTree[] }
115
+
116
+ export type ComboboxNode = Omit<StateNode, 'children'> & { layout: Combobox, data: any[] }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compile/index.js"],"names":[],"mappings":"AAsEA;;;;GAIG;AACH,iCAJW,MAAM,4EAEJ,cAAc,CA8D1B;;2BAvHY,OAAO,YAAY,EAAE,YAAY;2BACjC,OAAO,YAAY,EAAE,YAAY;6BACjC,OAAO,YAAY,EAAE,cAAc;6BACnC,OAAO,YAAY,EAAE,cAAc;oCACnC,OAAO,YAAY,EAAE,qBAAqB;iCAC1C,OAAO,YAAY,EAAE,kBAAkB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compile/index.js"],"names":[],"mappings":"AAsEA;;;;GAIG;AACH,iCAJW,MAAM,4EAEJ,cAAc,CA0E1B;;2BAnIY,OAAO,YAAY,EAAE,YAAY;2BACjC,OAAO,YAAY,EAAE,YAAY;6BACjC,OAAO,YAAY,EAAE,cAAc;6BACnC,OAAO,YAAY,EAAE,cAAc;oCACnC,OAAO,YAAY,EAAE,qBAAqB;iCAC1C,OAAO,YAAY,EAAE,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/compile/serialize.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,OAAO,YAAY,EAAE,cAAc,GACjC,MAAM,CAmElB"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/compile/serialize.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,OAAO,YAAY,EAAE,cAAc,GACjC,MAAM,CAoElB"}
@@ -2,6 +2,7 @@
2
2
  * @param {any} schema
3
3
  * @param {import('./index.js').CompileOptions} options
4
4
  * @param {string[]} validates
5
+ * @param {Record<string, string[]>} validationErrors
5
6
  * @param {Record<string, import('@json-layout/vocabulary').NormalizedLayout>} normalizedLayouts
6
7
  * @param {import('@json-layout/vocabulary').Expression[]} expressions
7
8
  * @param {string | number} key
@@ -10,5 +11,5 @@
10
11
  * @param {boolean} required
11
12
  * @returns {import('./types.js').SkeletonNode}
12
13
  */
13
- export function makeSkeletonNode(schema: any, options: import('./index.js').CompileOptions, validates: string[], normalizedLayouts: Record<string, import('@json-layout/vocabulary').NormalizedLayout>, expressions: import('@json-layout/vocabulary').Expression[], key: string | number, pointer: string, parentPointer: string | null, required: boolean): import('./types.js').SkeletonNode;
14
+ export function makeSkeletonNode(schema: any, options: import('./index.js').CompileOptions, validates: string[], validationErrors: Record<string, string[]>, normalizedLayouts: Record<string, import('@json-layout/vocabulary').NormalizedLayout>, expressions: import('@json-layout/vocabulary').Expression[], key: string | number, pointer: string, parentPointer: string | null, required: boolean): import('./types.js').SkeletonNode;
14
15
  //# sourceMappingURL=skeleton-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-node.d.ts","sourceRoot":"","sources":["../../src/compile/skeleton-node.js"],"names":[],"mappings":"AAkBA;;;;;;;;;;;GAWG;AACH,yCAXW,GAAG,WACH,OAAO,YAAY,EAAE,cAAc,aACnC,MAAM,EAAE,qBACR,OAAO,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,eAClE,OAAO,yBAAyB,EAAE,UAAU,EAAE,OAC9C,MAAM,GAAG,MAAM,WACf,MAAM,iBACN,MAAM,GAAG,IAAI,YACb,OAAO,GACL,OAAO,YAAY,EAAE,YAAY,CAqI7C"}
1
+ {"version":3,"file":"skeleton-node.d.ts","sourceRoot":"","sources":["../../src/compile/skeleton-node.js"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;GAYG;AACH,yCAZW,GAAG,WACH,OAAO,YAAY,EAAE,cAAc,aACnC,MAAM,EAAE,oBACR,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC,qBACxB,OAAO,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,eAClE,OAAO,yBAAyB,EAAE,UAAU,EAAE,OAC9C,MAAM,GAAG,MAAM,WACf,MAAM,iBACN,MAAM,GAAG,IAAI,YACb,OAAO,GACL,OAAO,YAAY,EAAE,YAAY,CA+J7C"}
@@ -2,11 +2,12 @@
2
2
  * @param {any} schema
3
3
  * @param {import('./index.js').CompileOptions} options
4
4
  * @param {string[]} validates
5
+ * @param {Record<string, string[]>} validationErrors
5
6
  * @param {Record<string, import('@json-layout/vocabulary').NormalizedLayout>} normalizedLayouts
6
7
  * @param {import('@json-layout/vocabulary').Expression[]} expressions
7
8
  * @param {string} pointer
8
9
  * @param {string} title
9
10
  * @returns {import('./types.js').SkeletonTree}
10
11
  */
11
- export function makeSkeletonTree(schema: any, options: import('./index.js').CompileOptions, validates: string[], normalizedLayouts: Record<string, import('@json-layout/vocabulary').NormalizedLayout>, expressions: import('@json-layout/vocabulary').Expression[], pointer: string, title: string): import('./types.js').SkeletonTree;
12
+ export function makeSkeletonTree(schema: any, options: import('./index.js').CompileOptions, validates: string[], validationErrors: Record<string, string[]>, normalizedLayouts: Record<string, import('@json-layout/vocabulary').NormalizedLayout>, expressions: import('@json-layout/vocabulary').Expression[], pointer: string, title: string): import('./types.js').SkeletonTree;
12
13
  //# sourceMappingURL=skeleton-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-tree.d.ts","sourceRoot":"","sources":["../../src/compile/skeleton-tree.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,yCATW,GAAG,WACH,OAAO,YAAY,EAAE,cAAc,aACnC,MAAM,EAAE,qBACR,OAAO,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,eAClE,OAAO,yBAAyB,EAAE,UAAU,EAAE,WAC9C,MAAM,SACN,MAAM,GACJ,OAAO,YAAY,EAAE,YAAY,CAc7C"}
1
+ {"version":3,"file":"skeleton-tree.d.ts","sourceRoot":"","sources":["../../src/compile/skeleton-tree.js"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,yCAVW,GAAG,WACH,OAAO,YAAY,EAAE,cAAc,aACnC,MAAM,EAAE,oBACR,OAAO,MAAM,EAAE,MAAM,EAAE,CAAC,qBACxB,OAAO,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,eAClE,OAAO,yBAAyB,EAAE,UAAU,EAAE,WAC9C,MAAM,SACN,MAAM,GACJ,OAAO,YAAY,EAAE,YAAY,CAe7C"}
@@ -4,7 +4,7 @@ import { type NormalizedLayout, type StateNodeOptions } from '@json-layout/vocab
4
4
  import { type ValidateFunction, type SchemaObject } from 'ajv';
5
5
  import { type Display } from '../state/utils/display.js';
6
6
  import { type LocaleMessages } from '../i18n/types.js';
7
- export type CompiledExpression = (data: any, options: StateNodeOptions, display: Display) => any;
7
+ export type CompiledExpression = (data: any, options: StateNodeOptions, context: object, display: Display) => any;
8
8
  export interface CompileOptions {
9
9
  ajv: ajvModule.default;
10
10
  code: boolean;
@@ -21,6 +21,7 @@ export interface CompiledLayout {
21
21
  schema?: SchemaObject;
22
22
  skeletonTree: SkeletonTree;
23
23
  validates: Record<string, ValidateFunction>;
24
+ validationErrors: Record<string, string[]>;
24
25
  normalizedLayouts: Record<string, NormalizedLayout>;
25
26
  expressions: CompiledExpression[];
26
27
  locale: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compile/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,KAAK,CAAA;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,KAAK,CAAA;AAC9D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,CAAA;AAEhG,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,SAAS,CAAC,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAAE,CAAA;AAEtH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACnD,WAAW,EAAE,kBAAkB,EAAE,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAA;CAC1D;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;CACnB;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compile/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,KAAK,CAAA;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAoB,MAAM,KAAK,CAAA;AAChF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,CAAA;AAEjH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,SAAS,CAAC,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAAE,CAAA;AAEtH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACnD,WAAW,EAAE,kBAAkB,EAAE,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAA;CAC1D;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;CACnB;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;CAC/B"}
@@ -8,6 +8,7 @@ export interface StateOptionsMessages {
8
8
  edit: string;
9
9
  duplicate: string;
10
10
  sort: string;
11
+ showHelp: string;
11
12
  }
12
13
  export type LocaleMessages = CompileOptionsMessages & StateOptionsMessages;
13
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,oBAAoB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,oBAAoB,CAAA"}
@@ -11,6 +11,8 @@ export { Display } from "./utils/display.js";
11
11
  * @typedef {import('./types.js').SliderNode} SliderNode
12
12
  * @typedef {import('./types.js').SectionNode} SectionNode
13
13
  * @typedef {import('./types.js').SelectNode} SelectNode
14
+ * @typedef {import('./types.js').AutocompleteNode} AutocompleteNode
15
+ * @typedef {import('./types.js').ComboboxNode} ComboboxNode
14
16
  * @typedef {import('./types.js').CheckboxNode} CheckboxNode
15
17
  * @typedef {import('./types.js').SwitchNode} SwitchNode
16
18
  * @typedef {import('./types.js').ColorPickerNode} ColorPickerNode
@@ -25,8 +27,8 @@ export { Display } from "./utils/display.js";
25
27
  */
26
28
  /** @type {(node: StateNode | undefined) => node is SectionNode} */
27
29
  export const isSection: (node: StateNode | undefined) => node is import("./types.js").SectionNode;
28
- /** @type {(node: StateNode | undefined) => node is SelectNode} */
29
- export const isSelect: (node: StateNode | undefined) => node is import("./types.js").SelectNode;
30
+ /** @type {(node: StateNode | undefined) => node is SelectNode | ComboboxNode | AutocompleteNode} */
31
+ export const isItemsNode: (node: StateNode | undefined) => node is import("./types.js").SelectNode | import("./types.js").AutocompleteNode | import("./types.js").ComboboxNode;
30
32
  export class StatefulLayout {
31
33
  /**
32
34
  * @param {import("../index.js").CompiledLayout} compiledLayout
@@ -144,11 +146,19 @@ export class StatefulLayout {
144
146
  * @param {StateNode} node
145
147
  */
146
148
  blur(node: StateNode): void;
149
+ /**
150
+ * @private
151
+ * @param {StateNode} node
152
+ * @param {string} q
153
+ * @returns {Promise<[import('@json-layout/vocabulary').SelectItems, boolean]>}
154
+ */
155
+ private getSourceItems;
147
156
  /**
148
157
  * @param {StateNode} node
158
+ * @param {string} q
149
159
  * @returns {Promise<import('@json-layout/vocabulary').SelectItems>}
150
160
  */
151
- getSelectItems(node: StateNode): Promise<import('@json-layout/vocabulary').SelectItems>;
161
+ getItems(node: StateNode, q?: string): Promise<import('@json-layout/vocabulary').SelectItems>;
152
162
  /**
153
163
  * @param {StateNode} node
154
164
  * @param {number} key
@@ -170,6 +180,8 @@ export type NumberFieldNode = import('./types.js').NumberFieldNode;
170
180
  export type SliderNode = import('./types.js').SliderNode;
171
181
  export type SectionNode = import('./types.js').SectionNode;
172
182
  export type SelectNode = import('./types.js').SelectNode;
183
+ export type AutocompleteNode = import('./types.js').AutocompleteNode;
184
+ export type ComboboxNode = import('./types.js').ComboboxNode;
173
185
  export type CheckboxNode = import('./types.js').CheckboxNode;
174
186
  export type SwitchNode = import('./types.js').SwitchNode;
175
187
  export type ColorPickerNode = import('./types.js').ColorPickerNode;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.js"],"names":[],"mappings":";AAUA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,mEAAmE;AACnE,+BADkB,SAAS,GAAG,SAAS,8CACoC;AAE3E,kEAAkE;AAClE,8BADkB,SAAS,GAAG,SAAS,6CACkC;AA6BzE;IAoGE;;;;;OAKG;IACH,4BALW,OAAO,aAAa,EAAE,cAAc,gBACpC,OAAO,aAAa,EAAE,YAAY,WAClC,QAAQ,qBAAqB,CAAC,SAC9B,OAAO,EAYjB;IAnHD;;;OAGG;IACH,iBAFU,OAAO,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAEhD;IAEN;;;;OAIG;IACH,iCAAe;IACf,mEAAqD;IAErD;;;OAGG;IAEH,mBAAU;IACV,gDAA2C;IAE3C;;;OAGG;IACH,uBAFU,OAAO,aAAa,EAAE,YAAY,CAEhC;IAEZ;;;OAGG;IAEH,iBAAQ;IACR,uBAAuC;IAEvC;;;OAGG;IAEH,yBAAgB;IAQhB;;;OAGG;IACH,+DAOC;IAlBD;;OAEG;IACH,4DAEC;IAeD;;;OAGG;IAEH,iBAAQ;IAKR;;OAEG;IACH,6DAGC;IAVD;;OAEG;IACH,0DAAuC;IASvC;;;OAGG;IACH,cAAK;IAEL,uBAIC;IALD,oBAAiC;IAOjC;;;OAGG;IAEH,oCAA2B;IA6L3B;;OAEG;IACH,aAFU,OAAO,MAAM,EAAE,MAAM,CAAC,CAErB;IA5KX;;;OAGG;IACH,uBAGC;IAED;;OAEG;IACH,4BAOC;IAED;;OAEG;IACH,oBAUC;IAED;;OAEG;IACH,wBAiBC;IAED,iBAEC;IAED,wBAGC;IAED;;OAEG;IACH,qBAEC;IAED;;OAEG;IACH,8BAEC;IAED;;;;OAIG;IACH,YAJW,SAAS,QACT,OAAO,0CAoBjB;IAED;;OAEG;IACH,WAFW,SAAS,QAUnB;IAED;;;OAGG;IACH,qBAHW,SAAS,GACP,QAAQ,OAAO,yBAAyB,EAAE,WAAW,CAAC,CA+ClE;IAOD;;;OAGG;IACH,mBAHW,SAAS,OACT,MAAM,QAShB;IAED;;OAEG;IACH,qBAFW,SAAS,QAKnB;CACF;wBAjXY,OAAO,YAAY,EAAE,SAAS;wBAC9B,OAAO,YAAY,EAAE,SAAS;oCAC9B,OAAO,YAAY,EAAE,qBAAqB;mCAC1C,OAAO,YAAY,EAAE,oBAAoB;qCACzC,OAAO,YAAY,EAAE,sBAAsB;4BAC3C,OAAO,YAAY,EAAE,aAAa;2BAClC,OAAO,YAAY,EAAE,YAAY;8BACjC,OAAO,YAAY,EAAE,eAAe;yBACpC,OAAO,YAAY,EAAE,UAAU;0BAC/B,OAAO,YAAY,EAAE,WAAW;yBAChC,OAAO,YAAY,EAAE,UAAU;2BAC/B,OAAO,YAAY,EAAE,YAAY;yBACjC,OAAO,YAAY,EAAE,UAAU;8BAC/B,OAAO,YAAY,EAAE,eAAe;6BACpC,OAAO,YAAY,EAAE,cAAc;iCACnC,OAAO,YAAY,EAAE,kBAAkB;6BACvC,OAAO,YAAY,EAAE,cAAc;kCACnC,OAAO,YAAY,EAAE,mBAAmB;uBACxC,OAAO,YAAY,EAAE,QAAQ;+BAC7B,OAAO,YAAY,EAAE,gBAAgB;8BACrC,OAAO,YAAY,EAAE,eAAe;uBACpC,OAAO,YAAY,EAAE,QAAQ;wBA3BlB,oBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.js"],"names":[],"mappings":";AAUA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,mEAAmE;AACnE,+BADkB,SAAS,GAAG,SAAS,8CACoC;AAE3E,oGAAoG;AACpG,iCADkB,SAAS,GAAG,SAAS,yHACkC;AA6BzE;IAoGE;;;;;OAKG;IACH,4BALW,OAAO,aAAa,EAAE,cAAc,gBACpC,OAAO,aAAa,EAAE,YAAY,WAClC,QAAQ,qBAAqB,CAAC,SAC9B,OAAO,EAYjB;IAnHD;;;OAGG;IACH,iBAFU,OAAO,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAEhD;IAEN;;;;OAIG;IACH,iCAAe;IACf,mEAAqD;IAErD;;;OAGG;IAEH,mBAAU;IACV,gDAA2C;IAE3C;;;OAGG;IACH,uBAFU,OAAO,aAAa,EAAE,YAAY,CAEhC;IAEZ;;;OAGG;IAEH,iBAAQ;IACR,uBAAuC;IAEvC;;;OAGG;IAEH,yBAAgB;IAQhB;;;OAGG;IACH,+DAOC;IAlBD;;OAEG;IACH,4DAEC;IAeD;;;OAGG;IAEH,iBAAQ;IAKR;;OAEG;IACH,6DAGC;IAVD;;OAEG;IACH,0DAAuC;IASvC;;;OAGG;IACH,cAAK;IAEL,uBAIC;IALD,oBAAiC;IAOjC;;;OAGG;IAEH,oCAA2B;IAwN3B;;OAEG;IACH,aAFU,OAAO,MAAM,EAAE,MAAM,CAAC,CAErB;IAvMX;;;OAGG;IACH,uBAGC;IAED;;OAEG;IACH,4BAOC;IAED;;OAEG;IACH,oBAUC;IAED;;OAEG;IACH,wBAiBC;IAED,iBAEC;IAED,wBAGC;IAED;;OAEG;IACH,qBAEC;IAED;;OAEG;IACH,8BAEC;IAED;;;;OAIG;IACH,YAJW,SAAS,QACT,OAAO,0CAoBjB;IAED;;OAEG;IACH,WAFW,SAAS,QAUnB;IAED;;;;;OAKG;IACH,uBA2DC;IAED;;;;OAIG;IACH,eAJW,SAAS,MACT,MAAM,GACJ,QAAQ,OAAO,yBAAyB,EAAE,WAAW,CAAC,CAMlE;IAOD;;;OAGG;IACH,mBAHW,SAAS,OACT,MAAM,QAShB;IAED;;OAEG;IACH,qBAFW,SAAS,QAKnB;CACF;wBA9YY,OAAO,YAAY,EAAE,SAAS;wBAC9B,OAAO,YAAY,EAAE,SAAS;oCAC9B,OAAO,YAAY,EAAE,qBAAqB;mCAC1C,OAAO,YAAY,EAAE,oBAAoB;qCACzC,OAAO,YAAY,EAAE,sBAAsB;4BAC3C,OAAO,YAAY,EAAE,aAAa;2BAClC,OAAO,YAAY,EAAE,YAAY;8BACjC,OAAO,YAAY,EAAE,eAAe;yBACpC,OAAO,YAAY,EAAE,UAAU;0BAC/B,OAAO,YAAY,EAAE,WAAW;yBAChC,OAAO,YAAY,EAAE,UAAU;+BAC/B,OAAO,YAAY,EAAE,gBAAgB;2BACrC,OAAO,YAAY,EAAE,YAAY;2BACjC,OAAO,YAAY,EAAE,YAAY;yBACjC,OAAO,YAAY,EAAE,UAAU;8BAC/B,OAAO,YAAY,EAAE,eAAe;6BACpC,OAAO,YAAY,EAAE,cAAc;iCACnC,OAAO,YAAY,EAAE,kBAAkB;6BACvC,OAAO,YAAY,EAAE,cAAc;kCACnC,OAAO,YAAY,EAAE,mBAAmB;uBACxC,OAAO,YAAY,EAAE,QAAQ;+BAC7B,OAAO,YAAY,EAAE,gBAAgB;8BACrC,OAAO,YAAY,EAAE,eAAe;uBACpC,OAAO,YAAY,EAAE,QAAQ;wBA7BlB,oBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"state-node.d.ts","sourceRoot":"","sources":["../../src/state/state-node.js"],"names":[],"mappings":"AAmHA;;;;;;;GAOG;AACH,4CAPW,OAAO,aAAa,EAAE,kBAAkB,EAAE,cAC1C,OAAO,yBAAyB,EAAE,UAAU,QAC5C,GAAG,WACH,OAAO,YAAY,EAAE,qBAAqB,WAC1C,OAAO,oBAAoB,EAAE,OAAO,GAClC,GAAG,CAOf;AAuBD;;;;;;;;;;;;;;;;;GAiBG;AACH,yCAhBW,OAAO,YAAY,EAAE,sBAAsB,iBAC3C,OAAO,YAAY,EAAE,qBAAqB,kBAC1C,OAAO,aAAa,EAAE,cAAc,OACpC,MAAM,GAAG,MAAM,WACf,MAAM,iBACN,MAAM,GAAG,IAAI,YACb,MAAM,kBACN,MAAM,GAAG,IAAI,YACb,OAAO,aAAa,EAAE,YAAY,mBAClC,OAAO,yBAAyB,EAAE,KAAK,GAAG,IAAI,iBAC9C,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,mBACP,OAAO,YAAY,EAAE,eAAe,4DAElC,OAAO,YAAY,EAAE,SAAS,CA2I1C;AAED,uFAAuF;AACvF,yCADmB,GAAG,QAAQ,OAAO,YAAY,EAAE,SAAS,QAAQ,OAAO,KAAK,GAAG,CAQlF"}
1
+ {"version":3,"file":"state-node.d.ts","sourceRoot":"","sources":["../../src/state/state-node.js"],"names":[],"mappings":"AAmHA;;;;;;;GAOG;AACH,4CAPW,OAAO,aAAa,EAAE,kBAAkB,EAAE,cAC1C,OAAO,yBAAyB,EAAE,UAAU,QAC5C,GAAG,WACH,OAAO,YAAY,EAAE,qBAAqB,WAC1C,OAAO,oBAAoB,EAAE,OAAO,GAClC,GAAG,CAOf;AAuBD;;;;;;;;;;;;;;;;;GAiBG;AACH,yCAhBW,OAAO,YAAY,EAAE,sBAAsB,iBAC3C,OAAO,YAAY,EAAE,qBAAqB,kBAC1C,OAAO,aAAa,EAAE,cAAc,OACpC,MAAM,GAAG,MAAM,WACf,MAAM,iBACN,MAAM,GAAG,IAAI,YACb,MAAM,kBACN,MAAM,GAAG,IAAI,YACb,OAAO,aAAa,EAAE,YAAY,mBAClC,OAAO,yBAAyB,EAAE,KAAK,GAAG,IAAI,iBAC9C,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,mBACP,OAAO,YAAY,EAAE,eAAe,4DAElC,OAAO,YAAY,EAAE,SAAS,CA4I1C;AAED,uFAAuF;AACvF,yCADmB,GAAG,QAAQ,OAAO,YAAY,EAAE,SAAS,QAAQ,OAAO,KAAK,GAAG,CAQlF"}
@@ -1,5 +1,5 @@
1
1
  import { type ErrorObject } from 'ajv';
2
- import { type CompObject, type Cols, type StateNodeOptions, type TextField, type Textarea, type NumberField, type Slider, type Checkbox, type Switch, type DatePicker, type DateTimePicker, type TimePicker, type ColorPicker, type Section, type OneOfSelect, type Select, type Tabs, type VerticalTabs, type ExpansionPanels, type List } from '@json-layout/vocabulary';
2
+ import { type CompObject, type Cols, type StateNodeOptions, type TextField, type Textarea, type NumberField, type Slider, type Checkbox, type Switch, type DatePicker, type DateTimePicker, type TimePicker, type ColorPicker, type Section, type OneOfSelect, type Select, type Autocomplete, type Tabs, type VerticalTabs, type ExpansionPanels, type List, type Combobox } from '@json-layout/vocabulary';
3
3
  import { type SkeletonTree, type SkeletonNode, type StatefulLayout } from '../index.js';
4
4
  import { type LocaleMessages } from '../i18n/types.js';
5
5
  export interface StateNode {
@@ -98,6 +98,10 @@ export type SelectNode = Omit<StateNode, 'children'> & {
98
98
  layout: Select;
99
99
  data: any;
100
100
  };
101
+ export type AutocompleteNode = Omit<StateNode, 'children'> & {
102
+ layout: Autocomplete;
103
+ data: any;
104
+ };
101
105
  export type TabsNode = StateNode & {
102
106
  layout: Tabs;
103
107
  children: StateNode[];
@@ -116,4 +120,8 @@ export type ListNode = StateNode & {
116
120
  children: StateNode[];
117
121
  childrenTrees: SkeletonTree[];
118
122
  };
123
+ export type ComboboxNode = Omit<StateNode, 'children'> & {
124
+ layout: Combobox;
125
+ data: any[];
126
+ };
119
127
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,EAAE,cAAc,CAAA;IACxB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAGD,MAAM,MAAM,oBAAoB,GAAG;IAEjC,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;IACvC,iBAAiB,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;IAClD,QAAQ,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAEhH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE9G,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAEpH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE1G,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE/G,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE3G,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAElH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE1H,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAElH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAEpH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAEhF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AAE/H,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAA;AAEpF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE1E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE1F,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AAEtH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAAA"}