@things-factory/figure-ui 10.1.248 → 10.1.253

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.
@@ -1 +1 @@
1
- {"version":3,"file":"figure-data-panel.js","sourceRoot":"","sources":["../../client/modeller/figure-data-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { unitWord } from './unit-words.js'\nimport { FIGURE_UNITS, figureDataExample, inferFigureDataSchema } from '@hatiolab/figure-model'\nimport type {\n FigureAsset,\n FigureDataBinding,\n FigureDataField,\n FigureDataNode,\n FigureDataRow,\n FigureDataTableBinding,\n FigureDataTableEntry,\n FigureDataValueBinding\n} from '@hatiolab/figure-model'\n\nimport {\n accessorOfRow,\n behaviorKeyOf,\n behaviorsOf,\n bindingDraftOf,\n domainOf,\n endlessJointsOf,\n fieldAt,\n fieldOfKind,\n fitsField,\n freeCodeOf,\n legendRoleOf,\n methodOf,\n methodsOf,\n partsOf,\n rotationStepsOf,\n sampleOf,\n schemaRowsOf,\n type RotationChoice,\n schemaWithField,\n schemaWithFieldReplaced,\n schemaWithoutField,\n schemaFollowingCodes,\n stateInputsOf,\n tableColumnsOf,\n tableDraftOf,\n tableWithKeys,\n tableWithLook,\n tableWithTargets,\n type BehaviorChoice,\n type DataMethod,\n type TableColumn\n} from './data-interface.js'\nimport { SidePanelStyles } from '@things-factory/figure-viewer/dist-client/side-panel-styles.js'\nimport { figureBindingsTakenOver, figureCapabilityDescriptorOf, type FigureRestingBinding } from '@hatiolab/things-scene'\nimport { consumerDescriptors } from './consumer-capabilities.js'\nimport { HelpToggles } from './help.js'\n\nconst KINDS: FigureDataNode['kind'][] = ['number', 'boolean', 'text', 'object', 'list']\n\n/**\n * 데이터 -- the data a site sends this figure, in its own names, and what each value moves (ADR-0051 §8, data binding\n * design decision 4). The schema is free: fields the author names, a tree of objects and lists. A binding reads one place\n * of it and shows it in the figure (ADR-0166): as it is or scaled, it moves one thing -- a control, a colour, a motion\n * group's clip, speed or pause, its position, the items in its places; by a code table or a range table, each value's\n * look goes to several targets at once -- parts' colour and effect, controls' values, a motion group. The field's kind\n * says which methods there are. Every change is one part edit, and whether it holds is the kernel's check.\n *\n * The sample is not saved: data tried here, read the one way a placed figure reads it, and -- in the preview -- the figure\n * running on it (`data-sample`); a sample legend pasted for a table's role shows it as a board's legend would\n * (`legend-sample`).\n */\n@customElement('figure-data-panel')\nexport class FigureDataPanel extends localize(i18next)(LitElement) {\n private readonly help = new HelpToggles(this)\n static styles = [\n SidePanelStyles,\n css`\n :host {\n display: block;\n }\n ul[tree] {\n display: grid;\n gap: 2px;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n ul[tree] > li > button[row] {\n display: flex;\n flex-wrap: wrap;\n gap: 0 6px;\n width: 100%;\n min-height: var(--figure-control-height);\n margin: 0;\n padding: 4px 6px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: inherit;\n font: inherit;\n text-align: left;\n align-items: center;\n cursor: pointer;\n }\n ul[tree] > li > button[row][selected] {\n border-color: var(--md-sys-color-primary);\n }\n ul[tree] > li > button[row] small {\n color: var(--md-sys-color-on-surface-variant);\n }\n /* What the field is and what reads it: beside the name when it fits, under it when not. */\n ul[tree] > li > button[row] small[meta] {\n margin-left: auto;\n text-align: right;\n }\n section[item] {\n display: grid;\n gap: 8px;\n padding: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 8px;\n }\n div[head] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 30px;\n gap: 6px;\n align-items: center;\n }\n div[head] button[line] {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n color: inherit;\n font: inherit;\n text-align: left;\n overflow-wrap: anywhere;\n cursor: pointer;\n }\n /* What it reads and where on the first line, its method under it: a method wrapped alone read 「· 배율」 (sweep 2026-10-27 U11). */\n div[head] button[line] small {\n display: block;\n color: var(--md-sys-color-on-surface-variant);\n }\n /* A binding a product capability takes over is marked where the list is read, folded or not (sweep 2026-10-27 U18). */\n div[head] button[line] span[rests] {\n padding: 0 6px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 999px;\n }\n div[head] button[act] {\n width: 30px;\n min-height: var(--figure-control-height);\n margin: 0;\n padding: 0;\n }\n div[cases] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);\n gap: 4px 6px;\n align-items: center;\n }\n div[codes] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) 30px;\n gap: 4px 6px;\n align-items: center;\n }\n div[codes] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n div[ranges] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.4fr) 30px;\n gap: 4px 6px;\n align-items: center;\n }\n div[ranges] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n /* A table's rows: the key (a code, or from and to), a cell per column, and a remove button. */\n div[looks] {\n display: grid;\n gap: 4px 6px;\n align-items: center;\n overflow-x: auto;\n }\n div[looks] > small {\n color: var(--md-sys-color-on-surface-variant);\n }\n div[looks] input,\n div[looks] select {\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n }\n div[looks] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n /* A colour and the button that clears it, on one line at the height of the cells beside it. */\n div[looks] span[colour] {\n display: flex;\n gap: 2px;\n align-items: center;\n min-width: 0;\n }\n div[looks] span[colour] input[type='color'] {\n flex: 1;\n height: var(--figure-control-height);\n padding: 0 2px;\n }\n div[looks] span[colour] button[act] {\n flex: none;\n width: 24px;\n }\n div[chips] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 10px;\n align-items: center;\n }\n div[chips] label {\n display: inline-flex;\n gap: 4px;\n align-items: center;\n }\n textarea {\n width: 100%;\n min-height: 96px;\n box-sizing: border-box;\n font-family: var(--ui-mono, ui-monospace, monospace);\n font-size: inherit;\n }\n ul[result] {\n margin: 0;\n padding-left: 16px;\n }\n md-icon {\n font-size: 16px;\n width: 16px;\n height: 16px;\n }\n `\n ]\n\n @property({ attribute: false }) asset?: FigureAsset\n @property({ type: Boolean }) locked = false\n /** The part chosen in the modeller, put among a table's parts by one button. */\n @property() selected = ''\n\n /** The schema row chosen, by its path; its field is edited under it. */\n @state() private chosen = ''\n @state() private adding = { name: '', kind: 'number' as FigureDataNode['kind'] }\n /** A site's data pasted to start the schema from; nothing is kept until the author says so. */\n @state() private pasted = ''\n /** A binding as it is being added: the field (or a new field's name), the method, the behavior or the table's targets. */\n @state() private connecting = { path: '', name: '', method: '' as DataMethod | '', behavior: '', parts: [] as string[], inputs: [] as string[], group: '' }\n /** The binding opened to edit its rule, by id. */\n @state() private opened = ''\n /** Sample legends by role, as JSON typed; not saved. */\n @state() private legendSample: Record<string, string> = {}\n /** The rotation card as filled in: the joint, and the fields for on, speed (and its most rpm) and direction. */\n @state() private rotating = { input: '', on: '', speed: '', max: 0, direction: '', forward: '', reverse: '' }\n /** The sample as typed, JSON; empty until edited, the schema's example shown until then. */\n @state() private sample = ''\n @state() private sampling = false\n\n render() {\n const asset = this.asset\n if (!asset) return nothing\n const rows = schemaRowsOf(asset)\n return html`\n ${this.renderCapabilityData(asset)} ${this.renderSchema(asset, rows)} ${this.renderBindings(asset, rows)} ${rows.length ? this.renderSample(asset) : nothing}\n `\n }\n\n /** The data a product's capability the figure wears reads itself (ADR-0167 14): said, read only. */\n private renderCapabilityData(asset: FigureAsset) {\n const names = asset.document.capabilities.names ?? []\n const reading = consumerDescriptors().filter(d => names.includes(d.name) && d.data?.length)\n if (!reading.length) return nothing\n return html`<section>\n ${reading.map(d => html`<p hint>${i18next.t('figure.text.data-capability-fields', { name: d.label, fields: d.data!.map(f => f.name).join(', ') })}</p>`)}\n </section>`\n }\n\n /* ---------------------------------------------------------------- the schema */\n\n private renderSchema(asset: FigureAsset, rows: FigureDataRow[]) {\n const schema = asset.dataInterface?.schema ?? []\n return html`<section>\n <h3>${i18next.t('figure.label.data-schema')}${this.help.button('figure.text.data-schema-explained')}</h3>\n ${this.help.hint('figure.text.data-schema-explained')}\n ${rows.length\n ? html`<ul tree>\n ${rows.map(\n row => html`<li>\n <button row ?selected=${row.path === this.chosen} style=\"padding-left: ${6 + row.depth * 14}px\" @click=${() => (this.chosen = row.path === this.chosen ? '' : row.path)}>\n <span>${row.name}${row.label ? html` <small>${row.label}</small>` : nothing}</span>\n <small meta>${this.kindWord(row.node)}${row.bindings.length ? ` · ${i18next.t('figure.label.data-bound', { count: row.bindings.length })}` : ''}</small>\n </button>\n ${row.path === this.chosen ? this.renderField(asset, schema, row) : nothing}\n </li>`\n )}\n </ul>`\n : html`<p hint>${i18next.t('figure.text.data-no-fields')}</p>`}\n ${this.renderAddField(schema, '')} ${this.renderFromSample(schema)}\n </section>`\n }\n\n private kindWord(node: FigureDataNode): string {\n const kind = i18next.t('figure.label.data-kind-' + node.kind)\n if (node.kind === 'number') {\n const range = node.min !== undefined || node.max !== undefined ? ` ${node.min ?? ''}~${node.max ?? ''}` : ''\n return `${kind}${node.unit ? ` ${unitWord(node.unit)}` : ''}${range}`\n }\n if (node.kind === 'text' && node.values) return `${kind} (${node.values.join(', ')})`\n if (node.kind === 'list') return `${kind} · ${i18next.t('figure.label.data-kind-' + node.item.kind)}`\n return kind\n }\n\n /** The chosen field's own settings, and a field added under it when it holds fields. */\n private renderField(asset: FigureAsset, schema: readonly FigureDataField[], row: FigureDataRow) {\n const field = fieldAt(schema, row.path)\n if (!field) return nothing\n const replace = (next: FigureDataField) => this.edit({ kind: 'set-data-schema', schema: schemaWithFieldReplaced(schema, row.path, next) })\n const set = (patch: Record<string, unknown>) => {\n const next = { ...field, ...patch } as Record<string, unknown>\n for (const [k, v] of Object.entries(patch)) if (v === undefined || (typeof v === 'number' && Number.isNaN(v))) delete next[k]\n replace(next as FigureDataField)\n }\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const number = (e: Event) => (e.target as HTMLInputElement).valueAsNumber\n const rename = (to: string) => {\n if (!to || to === field.name) return\n /* A field outside any list is renamed with what reads it; inside a list it is the schema alone. */\n if (!row.path.includes('[]')) this.edit({ kind: 'rename-data-field', accessor: row.path, to })\n else replace({ ...field, name: to })\n }\n let holder: FigureDataNode = field\n while (holder.kind === 'list') holder = holder.item\n return html`<section item>\n <div head>\n <strong>${row.path}</strong>\n <button\n act\n ?disabled=${this.locked}\n title=${i18next.t('figure.button.remove-data-field')}\n @click=${() => {\n this.chosen = ''\n this.edit({ kind: 'set-data-schema', schema: schemaWithoutField(schema, row.path) })\n }}\n >\n <md-icon>delete</md-icon>\n </button>\n </div>\n <div form>\n <span>${i18next.t('figure.label.data-name')}</span>\n <input .value=${field.name} ?disabled=${this.locked} @change=${(e: Event) => rename(value(e).trim())} />\n <span>${i18next.t('figure.label.data-label')}</span>\n <input .value=${field.label ?? ''} ?disabled=${this.locked} @change=${(e: Event) => set({ label: value(e).trim() || undefined })} />\n <span>${i18next.t('figure.label.data-kind')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => replace(fieldOfKind(field, value(e) as FigureDataNode['kind']))}>\n ${KINDS.map(k => html`<option value=${k} ?selected=${k === field.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>\n ${field.kind === 'number'\n ? html`<span>${i18next.t('figure.label.data-unit')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ unit: value(e) || undefined })}>\n <option value=\"\" ?selected=${!field.unit}>${i18next.t('figure.label.unit-none')}</option>\n ${FIGURE_UNITS.map(u => html`<option value=${u} ?selected=${u === field.unit}>${unitWord(u)}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-min')}</span>\n <input type=\"number\" step=\"any\" .value=${field.min === undefined ? '' : String(field.min)} ?disabled=${this.locked} @change=${(e: Event) => set({ min: number(e) })} />\n <span>${i18next.t('figure.label.data-max')}</span>\n <input type=\"number\" step=\"any\" .value=${field.max === undefined ? '' : String(field.max)} ?disabled=${this.locked} @change=${(e: Event) => set({ max: number(e) })} />\n <span>${i18next.t('figure.label.data-default')}</span>\n <input type=\"number\" step=\"any\" .value=${field.default === undefined ? '' : String(field.default)} ?disabled=${this.locked} @change=${(e: Event) => set({ default: number(e) })} />`\n : field.kind === 'boolean'\n ? html`<span>${i18next.t('figure.label.data-default')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) === '' ? undefined : value(e) === 'true' })}>\n <option value=\"\" ?selected=${field.default === undefined}>-</option>\n ${[false, true].map(b => html`<option value=${String(b)} ?selected=${b === field.default}>${i18next.t(b ? 'figure.label.data-true' : 'figure.label.data-false')}</option>`)}\n </select>`\n : field.kind === 'text'\n ? html`<span>${i18next.t('figure.label.data-values')}</span>\n <input\n .value=${(field.values ?? []).join(', ')}\n ?disabled=${this.locked}\n @change=${(e: Event) => {\n const values = value(e).split(',').map(v => v.trim()).filter(Boolean)\n set({ values: values.length ? values : undefined, default: field.default !== undefined && (!values.length || values.includes(field.default)) ? field.default : undefined })\n }}\n />\n <span>${i18next.t('figure.label.data-default')}</span>\n ${field.values\n ? html`<select ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) || undefined })}>\n <option value=\"\" ?selected=${field.default === undefined}>-</option>\n ${field.values.map(v => html`<option value=${v} ?selected=${v === field.default}>${v}</option>`)}\n </select>`\n : html`<input .value=${field.default ?? ''} ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) || undefined })} />`}`\n : html`<span></span>\n <label toggle>\n <input type=\"checkbox\" .checked=${!!field.json} ?disabled=${this.locked} @change=${(e: Event) => set({ json: (e.target as HTMLInputElement).checked ? true : undefined })} />\n ${i18next.t('figure.label.data-json')}\n </label>`}\n ${field.kind === 'list'\n ? html`<span>${i18next.t('figure.label.data-item-kind')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => replace({ ...field, item: nodeOfKind(value(e) as FigureDataNode['kind']) })}>\n ${KINDS.filter(k => k !== 'list').map(k => html`<option value=${k} ?selected=${k === field.item.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>`\n : nothing}\n </div>\n ${holder.kind === 'object' ? this.renderAddField(schema, row.path) : nothing}\n </section>`\n }\n\n private renderAddField(schema: readonly FigureDataField[], under: string) {\n const a = this.adding\n const named = a.name.trim()\n const add = () => {\n if (this.locked || !named) return\n this.edit({ kind: 'set-data-schema', schema: schemaWithField(schema, under, { name: named, ...nodeOfKind(a.kind) } as FigureDataField) })\n this.adding = { ...a, name: '' }\n }\n return html`<div form>\n <span>${i18next.t('figure.label.data-name')}</span>\n <input\n aria-label=${i18next.t('figure.label.data-name')}\n .value=${a.name}\n @input=${(e: Event) => (this.adding = { ...a, name: (e.target as HTMLInputElement).value })}\n @keydown=${(e: KeyboardEvent) => e.key === 'Enter' && !e.isComposing && add()}\n />\n <span>${i18next.t('figure.label.data-kind')}</span>\n <select @change=${(e: Event) => (this.adding = { ...a, kind: (e.target as HTMLSelectElement).value as FigureDataNode['kind'] })}>\n ${KINDS.map(k => html`<option value=${k} ?selected=${k === a.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>\n </div>\n <button act ?disabled=${this.locked || !named} @click=${add}>\n <md-icon>add</md-icon>${i18next.t(under ? 'figure.button.add-data-child' : 'figure.button.add-data-field', { parent: under })}\n </button>`\n }\n\n /** A site's data pasted: the schema guessed from it, kept only when the author says so -- units, ranges and closed values are theirs to set. */\n private renderFromSample(schema: readonly FigureDataField[]) {\n let guessed: FigureDataField[] | null = null\n let unreadable = false\n if (this.pasted.trim()) {\n try {\n guessed = inferFigureDataSchema(JSON.parse(this.pasted))\n } catch {\n unreadable = true\n }\n }\n return html`<details>\n <summary>${i18next.t('figure.label.data-from-sample')}</summary>\n <p hint>${i18next.t('figure.text.data-from-sample-explained')}</p>\n <textarea .value=${this.pasted} ?disabled=${this.locked} @input=${(e: Event) => (this.pasted = (e.target as HTMLTextAreaElement).value)}></textarea>\n ${unreadable ? html`<p hint>${i18next.t('figure.text.data-not-json')}</p>` : nothing}\n ${guessed ? html`<p hint>${i18next.t(schema.length ? 'figure.text.data-guessed-replaces' : 'figure.text.data-guessed', { count: guessed.length })}</p>` : nothing}\n <button\n act\n ?disabled=${this.locked || !guessed?.length}\n @click=${() => {\n this.edit({ kind: 'set-data-schema', schema: guessed! })\n this.pasted = ''\n }}\n >\n ${i18next.t('figure.button.data-use-guessed')}\n </button>\n </details>`\n }\n\n /* ---------------------------------------------------------------- the bindings */\n\n private behaviorName(asset: FigureAsset, choices: BehaviorChoice[], b: FigureDataValueBinding['behavior']): string {\n const key = behaviorKeyOf(b)\n const choice = choices.find(c => c.key === key)\n const name = b.kind === 'pose' ? i18next.t('figure.label.data-axis-' + b.axis) : (choice?.name ?? key.slice(key.indexOf(':') + 1))\n return i18next.t('figure.label.data-behavior-' + b.kind, { name })\n }\n\n /** What a table shows on, as one line: its parts, the controls it sets, its motion group. */\n private targetsName(asset: FigureAsset, b: FigureDataTableBinding): string {\n const inputs = stateInputsOf(asset)\n const group = (asset.motionGroups ?? []).find(g => g.id === b.targets.group)\n return [\n ...(b.targets.parts ?? []),\n ...(b.targets.inputs ?? []).map(id => inputs.find(i => i.id === id)?.label ?? id),\n ...(group ? [group.label] : [])\n ].join(', ')\n }\n\n private renderBindings(asset: FigureAsset, rows: FigureDataRow[]) {\n const bindings = asset.dataInterface?.bindings ?? []\n const choices = behaviorsOf(asset)\n const resting = figureBindingsTakenOver(asset)\n return html`<section>\n <h3>${i18next.t('figure.label.data-bindings')}${this.help.button('figure.text.data-bindings-explained')}</h3>\n ${this.help.hint('figure.text.data-bindings-explained')}\n ${bindings.map(b => this.renderBinding(asset, choices, b, resting))}\n ${this.renderAddBinding(asset, rows, choices)}\n ${this.renderRotation(asset, rows)}\n </section>`\n }\n\n private renderBinding(asset: FigureAsset, choices: BehaviorChoice[], b: FigureDataBinding, resting: FigureRestingBinding[]) {\n const open = this.opened === b.id\n const set = (next: FigureDataBinding) => this.edit({ kind: 'set-data-binding', binding: next })\n const what = b.rule === 'table' ? this.targetsName(asset, b) : this.behaviorName(asset, choices, b.behavior)\n const rests = resting.some(r => r.id === b.id)\n return html`<section item>\n <div head>\n <button line aria-expanded=${open ? 'true' : 'false'} @click=${() => (this.opened = open ? '' : b.id)}>\n <strong>${b.label ?? b.accessor}</strong> → ${what}\n <small>${i18next.t('figure.label.data-method-' + methodOf(b))}${rests ? html` <span rests>${i18next.t('figure.label.data-binding-resting')}</span>` : nothing}</small>\n </button>\n <button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-binding')} @click=${() => this.edit({ kind: 'remove-data-binding', id: b.id })}>\n <md-icon>delete</md-icon>\n </button>\n </div>\n ${resting.filter(r => r.id === b.id).map(r => this.renderResting(r))}\n ${open ? (b.rule === 'table' ? this.renderTable(asset, b, set) : this.renderValueDetail(asset, b, set)) : nothing}\n </section>`\n }\n\n /**\n * A binding a product's capability takes over where the product registers it (ADR-0167 17): there it rests, whole or for\n * the targets named; elsewhere (a board without the product) it works.\n */\n private renderResting(r: FigureRestingBinding) {\n const where = r.capability.split('.')[0]\n const name = figureCapabilityDescriptorOf(r.capability)?.label ?? r.capability\n const targets = [...r.parts, ...r.inputs].join(', ')\n return html`<p hint>${r.whole ? i18next.t('figure.text.data-binding-rests', { where, name }) : i18next.t('figure.text.data-binding-rests-targets', { where, name, targets })}</p>`\n }\n\n private renderValueDetail(asset: FigureAsset, b: FigureDataValueBinding, set: (next: FigureDataBinding) => void) {\n const node = fieldAt(asset.dataInterface?.schema ?? [], b.accessor.replace(/\\[\\d+\\]/g, '[]'))\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const behavior = b.behavior\n const patch = (p: Partial<FigureDataValueBinding>) => {\n const next = { ...b, ...p }\n if ('param' in p && p.param === undefined) delete next.param\n set(next)\n }\n if (behavior.kind === 'items') return this.renderItemFields(asset, b, node, patch)\n return html`<div form>\n <span>${i18next.t('figure.label.data-method')}</span>\n ${node?.kind === 'number'\n ? html`<select ?disabled=${this.locked} @change=${(e: Event) => patch({ rule: value(e) as 'value' | 'scale', param: value(e) === 'scale' ? { scale: 1, offset: 0 } : undefined })}>\n ${(['value', 'scale'] as const).map(r => html`<option value=${r} ?selected=${r === b.rule}>${i18next.t('figure.label.data-method-' + r)}</option>`)}\n </select>`\n : html`<span>${i18next.t('figure.label.data-method-value')}</span>`}\n ${behavior.kind === 'state'\n ? html`<span>${i18next.t('figure.label.data-source-mode')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => patch({ behavior: { ...behavior, sourceMode: value(e) as 'observed' | 'commanded' } })}>\n ${(['observed', 'commanded'] as const).map(m => html`<option value=${m} ?selected=${behavior.sourceMode === m}>${i18next.t('figure.label.data-' + m)}</option>`)}\n </select>`\n : nothing}\n ${behavior.kind === 'pose'\n ? html`<span>${i18next.t('figure.label.data-seconds')}</span>\n <input type=\"number\" min=\"0\" step=\"any\" .value=${String(behavior.seconds ?? 0)} ?disabled=${this.locked} @change=${(e: Event) => patch({ behavior: { ...behavior, seconds: (e.target as HTMLInputElement).valueAsNumber || 0 } })} />`\n : nothing}\n ${b.rule === 'scale'\n ? html`<span>${i18next.t('figure.label.data-scale')}</span>\n <input type=\"number\" step=\"any\" .value=${String(b.param?.scale ?? 1)} ?disabled=${this.locked} @change=${(e: Event) => patch({ param: { ...b.param, scale: (e.target as HTMLInputElement).valueAsNumber } })} />\n <span>${i18next.t('figure.label.data-offset')}</span>\n <input type=\"number\" step=\"any\" .value=${String(b.param?.offset ?? 0)} ?disabled=${this.locked} @change=${(e: Event) => patch({ param: { ...b.param, offset: (e.target as HTMLInputElement).valueAsNumber } })} />`\n : nothing}\n </div>`\n }\n\n /**\n * A table (ADR-0166 10): what it shows on -- parts, controls, a motion group -- its rows, a code or an interval each\n * with a cell per column, the look of every other value, and whether a board may swap it for a legend.\n */\n private renderTable(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const parts = partsOf(asset)\n const inputs = stateInputsOf(asset)\n const groups = asset.motionGroups ?? []\n const targets = b.targets\n const toggle = (list: string[] | undefined, id: string, on: boolean) => (on ? [...(list ?? []), id] : (list ?? []).filter(x => x !== id))\n const retarget = (t: typeof targets) => set(tableWithTargets(b, t))\n return html`<div form>\n <span>${i18next.t('figure.label.data-label')}</span>\n <input .value=${b.label ?? ''} placeholder=${b.accessor} ?disabled=${this.locked} @change=${(e: Event) => {\n const label = value(e).trim()\n const next = { ...b, label }\n if (!label) delete (next as { label?: string }).label\n set(next)\n }} />\n </div>\n ${this.renderTargets(parts, inputs, groups, targets, {\n part: (id, on) => retarget({ ...targets, parts: toggle(targets.parts, id, on) }),\n input: (id, on) => retarget({ ...targets, inputs: toggle(targets.inputs, id, on) }),\n group: id => retarget({ ...targets, group: id || undefined })\n })}\n ${b.lookup === 'code' ? this.renderCodeRows(asset, b, set) : this.renderRangeRows(asset, b, set)}\n <label toggle>\n <input type=\"checkbox\" .checked=${!!b.legend} ?disabled=${this.locked} @change=${(e: Event) => {\n const next = { ...b }\n if ((e.target as HTMLInputElement).checked) next.legend = { role: legendRoleOf(b.id) }\n else delete next.legend\n set(next)\n }} />\n ${i18next.t('figure.label.data-legend-swappable')}\n </label>\n ${b.legend\n ? html`<div form>\n <span>${i18next.t('figure.label.data-legend-role')}</span>\n <input .value=${b.legend.role} ?disabled=${this.locked} @change=${(e: Event) => set({ ...b, legend: { role: value(e).trim() } })} />\n </div>\n <p hint>${i18next.t('figure.text.data-legend-explained')}</p>`\n : nothing}`\n }\n\n /** Which parts, controls and motion group a table shows on: chips to tick, and the part chosen in the modeller by one button. */\n private renderTargets(\n parts: string[],\n inputs: Array<{ id: string; label: string }>,\n groups: NonNullable<FigureAsset['motionGroups']>,\n t: { parts?: string[]; inputs?: string[]; group?: string },\n on: { part: (id: string, on: boolean) => void; input: (id: string, on: boolean) => void; group: (id: string) => void }\n ) {\n const chosen = (e: Event) => (e.target as HTMLInputElement).checked\n return html`<div form>\n <span>${i18next.t('figure.label.data-target-parts')}</span>\n <div chips>\n ${parts.map(p => html`<label><input type=\"checkbox\" .checked=${!!t.parts?.includes(p)} ?disabled=${this.locked} @change=${(e: Event) => on.part(p, chosen(e))} />${p}</label>`)}\n ${this.selected && parts.includes(this.selected) && !t.parts?.includes(this.selected)\n ? html`<button act ?disabled=${this.locked} @click=${() => on.part(this.selected, true)}><md-icon>add</md-icon>${i18next.t('figure.button.data-add-selected-part', { part: this.selected })}</button>`\n : nothing}\n </div>\n ${inputs.length\n ? html`<span>${i18next.t('figure.label.data-target-inputs')}</span>\n <div chips>\n ${inputs.map(i => html`<label><input type=\"checkbox\" .checked=${!!t.inputs?.includes(i.id)} ?disabled=${this.locked} @change=${(e: Event) => on.input(i.id, chosen(e))} />${i.label}</label>`)}\n </div>`\n : nothing}\n ${groups.length\n ? html`<span>${i18next.t('figure.label.data-target-group')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => on.group((e.target as HTMLSelectElement).value)}>\n <option value=\"\" ?selected=${!t.group}>${i18next.t('figure.label.data-none')}</option>\n ${groups.map(g => html`<option value=${g.id} ?selected=${g.id === t.group}>${g.label}</option>`)}\n </select>`\n : nothing}\n </div>`\n }\n\n /** The column heads of a table's rows, after the key's own one or two. */\n private columnHeads(columns: TableColumn[]) {\n return columns.map(c =>\n c.kind === 'value'\n ? html`<small>${c.label}${c.unit ? ` (${c.unit}${c.min !== undefined && c.max !== undefined ? ` ${c.min}~${c.max}` : ''})` : ''}</small>`\n : html`<small>${i18next.t('figure.label.data-column-' + c.kind)}</small>`\n )\n }\n\n /** One look's cells, a column each: a colour, an effect, a control's value, a clip, a speed, a pause -- empty leaves the target as it is. */\n private lookCells(asset: FigureAsset, columns: TableColumn[], look: FigureDataTableEntry, write: (look: FigureDataTableEntry) => void) {\n const without = (key: keyof FigureDataTableEntry) => {\n const next = { ...look }\n delete next[key]\n return next\n }\n const typed = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n return columns.map(c => {\n if (c.kind === 'color')\n return look.color === undefined\n ? html`<button act ?disabled=${this.locked} @click=${() => write({ ...look, color: '#888888' })}>${i18next.t('figure.button.data-set-result')}</button>`\n : html`<span colour><input type=\"color\" .value=${look.color} ?disabled=${this.locked} @change=${(e: Event) => write({ ...look, color: typed(e) })} /><button act ?disabled=${this.locked} title=${i18next.t('figure.button.data-clear-result')} @click=${() => write(without('color'))}><md-icon>close</md-icon></button></span>`\n if (c.kind === 'effect')\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, effect: { kind: typed(e) as 'blink' | 'glow' } }) : write(without('effect')))}>\n ${(['', 'blink', 'glow'] as const).map(k => html`<option value=${k} ?selected=${(look.effect?.kind ?? '') === k}>${i18next.t('figure.label.data-effect-' + (k || 'none'))}</option>`)}\n </select>`\n if (c.kind === 'value') {\n const v = look.values?.[c.id]\n return html`<input type=\"number\" step=\"any\" min=${c.min ?? ''} max=${c.max ?? ''} .value=${v === undefined ? '' : String(v)} ?disabled=${this.locked} @change=${(e: Event) => {\n const n = (e.target as HTMLInputElement).valueAsNumber\n const values = { ...look.values }\n if (Number.isNaN(n)) delete values[c.id]\n else values[c.id] = n\n write(Object.keys(values).length ? { ...look, values } : without('values'))\n }} />`\n }\n if (c.kind === 'clip')\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, clip: typed(e) }) : write(without('clip')))}>\n <option value=\"\" ?selected=${look.clip === undefined}>-</option>\n ${c.clips.map(clip => html`<option value=${clip} ?selected=${clip === look.clip}>${clip}</option>`)}\n </select>`\n if (c.kind === 'speed')\n return html`<input type=\"number\" min=\"0\" max=\"3\" step=\"any\" .value=${look.speed === undefined ? '' : String(look.speed)} ?disabled=${this.locked} @change=${(e: Event) => {\n const n = (e.target as HTMLInputElement).valueAsNumber\n write(Number.isNaN(n) ? without('speed') : { ...look, speed: n })\n }} />`\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, paused: typed(e) === 'true' }) : write(without('paused')))}>\n <option value=\"\" ?selected=${look.paused === undefined}>-</option>\n ${[false, true].map(v => html`<option value=${String(v)} ?selected=${v === look.paused}>${i18next.t(v ? 'figure.label.data-paused' : 'figure.label.data-playing')}</option>`)}\n </select>`\n })\n }\n\n /** The look of every other value: a row like the others, added or taken away; kept when a closed field's values are not all rows. */\n private renderOtherwise(asset: FigureAsset, b: FigureDataTableBinding, columns: TableColumn[], needed: boolean, set: (next: FigureDataBinding) => void, keyCells: number) {\n const look = b.table.default\n if (look === undefined)\n return html`<button act ?disabled=${this.locked} @click=${() => set(tableWithLook(b, 'default', {}))}><md-icon>add</md-icon>${i18next.t('figure.button.add-data-default')}</button>`\n const { default: _, ...rest } = b.table\n return html`<div looks style=\"grid-template-columns: ${gridOf(keyCells, columns.length)}\">\n <span style=\"grid-column: span ${keyCells}\">${i18next.t('figure.label.data-otherwise')}</span>\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, 'default', l)))}\n ${needed ? html`<span></span>` : html`<button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-case')} @click=${() => set({ ...b, table: rest })}><md-icon>delete</md-icon></button>`}\n </div>`\n }\n\n /**\n * A code table's rows: a code each, typed, with its look. A closed text's values follow the codes (ADR-0166 risk 3):\n * a code added, renamed or taken away is the field's value too; true and false are both rows.\n */\n private renderCodeRows(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const columns = tableColumnsOf(asset, b)\n const node = fieldAt(asset.dataInterface?.schema ?? [], b.accessor.replace(/\\[\\d+\\]/g, '[]'))\n const boolean = node?.kind === 'boolean'\n const rows = Object.entries(b.table).filter(([k]) => k !== 'default')\n const domain = node ? domainOf(node).map(String) : []\n const covered = domain.length > 0 && domain.every(v => b.table[v] !== undefined)\n /* The binding and the field it reads, in one undo step. */\n const rekeyed = (list: Array<[string, FigureDataTableEntry]>) => {\n const next = tableWithKeys(b, list)\n const schema = boolean ? undefined : schemaFollowingCodes(asset, next, list.map(([k]) => k))\n this.edit({ kind: 'set-data-binding', binding: next, ...(schema ? { schema } : {}) })\n }\n const rekey = (i: number, typed: string) => {\n const key = typed.trim()\n if (!key || key === 'default' || rows.some(([k], j) => j !== i && k === key)) return this.requestUpdate()\n rekeyed(rows.map(([k, v], j) => (j === i ? [key, v] : [k, v])))\n }\n const word = (k: string) => (boolean ? i18next.t(k === 'true' ? 'figure.label.data-true' : 'figure.label.data-false') : k)\n return html`<div looks style=\"grid-template-columns: ${gridOf(1, columns.length)}\">\n <small>${i18next.t('figure.label.data-case-value')}</small>${this.columnHeads(columns)}<span></span>\n ${rows.map(\n ([k, look], i) => html`${boolean\n ? html`<span>${word(k)}</span>`\n : html`<input .value=${k} aria-label=${i18next.t('figure.label.data-case-value')} ?disabled=${this.locked} @change=${(e: Event) => rekey(i, (e.target as HTMLInputElement).value)} />`}\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, k, l)))}\n ${boolean || rows.length < 2 && domain.length > 0\n ? html`<span></span>`\n : html`<button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-case')} @click=${() => rekeyed(rows.filter((_, j) => j !== i))}><md-icon>delete</md-icon></button>`}`\n )}\n </div>\n ${this.renderOtherwise(asset, b, columns, domain.length > 0 && !covered, set, 1)}\n ${boolean\n ? nothing\n : html`<button act ?disabled=${this.locked} @click=${() => rekeyed([...rows, [freeCodeOf(rows.map(([k]) => k)), {}]])}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-case')}\n </button>`}`\n }\n\n /**\n * A range table's rows: from (inclusive) and to (exclusive), either end open, with a look each. Giving the last row,\n * open above, an end starts the next row there; a row open above is the last there can be.\n */\n private renderRangeRows(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const columns = tableColumnsOf(asset, b)\n const rows = Object.entries(b.table).filter(([k]) => k !== 'default')\n const ends = (key: string) => {\n const [from = '', to = ''] = key.split('~')\n return { from, to }\n }\n const rekey = (i: number, end: 'from' | 'to', typed: string) => {\n const was = ends(rows[i]![0])\n const next = { ...was, [end]: typed.trim() }\n const key = `${next.from}~${next.to}`\n /* A key another row has would take that row's place: not taken. */\n if (rows.some(([k], j) => j !== i && k === key)) return this.requestUpdate()\n const list: Array<[string, FigureDataTableEntry]> = rows.map(([k, v], j) => (j === i ? [key, v] : [k, v]))\n /* The last row, open above, given an end: the next row starts there, open above, so every value still has a row. */\n if (i === rows.length - 1 && end === 'to' && was.to === '' && next.to !== '') list.push([`${next.to}~`, {}])\n set(tableWithKeys(b, list))\n }\n const last = rows.at(-1)\n const lastEnd = last ? ends(last[0]).to : ''\n const open = !!last && lastEnd === ''\n return html`<div looks style=\"grid-template-columns: ${gridOf(2, columns.length)}\">\n <small>${i18next.t('figure.label.data-range-from')}</small><small>${i18next.t('figure.label.data-range-to')}</small>${this.columnHeads(columns)}<span></span>\n ${rows.map(([k, look], i) => {\n const e = ends(k)\n return html`<input type=\"number\" step=\"any\" .value=${e.from} ?disabled=${this.locked} @change=${(ev: Event) => rekey(i, 'from', (ev.target as HTMLInputElement).value)} />\n <input type=\"number\" step=\"any\" .value=${e.to} ?disabled=${this.locked} @change=${(ev: Event) => rekey(i, 'to', (ev.target as HTMLInputElement).value)} />\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, k, l)))}\n <button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-range')} @click=${() => set(tableWithKeys(b, rows.filter((_, j) => j !== i)))}><md-icon>delete</md-icon></button>`\n })}\n </div>\n ${this.renderOtherwise(asset, b, columns, false, set, 2)}\n ${open ? html`<p hint>${i18next.t('figure.text.data-range-close-last')}</p>` : nothing}\n <button act ?disabled=${this.locked || open} @click=${() => set(tableWithKeys(b, [...rows, [`${lastEnd}~`, {}]]))}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-range')}\n </button>`\n }\n\n /** Which field of each element is its id, its type, its place, its height in the stack, its status. */\n private renderItemFields(asset: FigureAsset, b: FigureDataValueBinding, node: FigureDataNode | undefined, set: (patch: Partial<FigureDataValueBinding>) => void) {\n const behavior = b.behavior\n if (behavior.kind !== 'items') return nothing\n let element: FigureDataNode | undefined = node\n while (element?.kind === 'list') element = element.item\n const fields = element?.kind === 'object' ? element.fields.filter(f => f.kind === 'number' || f.kind === 'text' || f.kind === 'boolean').map(f => f.name) : []\n const pick = (role: 'id' | 'type' | 'place' | 'stack' | 'status', typed: string) => {\n const next: Record<string, unknown> = { ...behavior, [role]: typed }\n if (!typed) delete next[role]\n set({ behavior: next as FigureDataValueBinding['behavior'] })\n }\n return html`<div form>\n ${node?.kind === 'list'\n ? (['id', 'type', 'place', 'stack', 'status'] as const).map(\n role => html`<span>${i18next.t('figure.label.data-item-' + role)}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => pick(role, (e.target as HTMLSelectElement).value)}>\n <option value=\"\" ?selected=${!behavior[role]}>-</option>\n ${fields.map(f => html`<option value=${f} ?selected=${f === behavior[role]}>${f}</option>`)}\n </select>`\n )\n : nothing}\n <span>${i18next.t('figure.label.data-item-slot')}</span>\n <input .value=${behavior.slot ?? ''} ?disabled=${this.locked} @change=${(e: Event) => {\n const slot = (e.target as HTMLInputElement).value.trim()\n const next: Record<string, unknown> = { ...behavior, slot }\n if (!slot) delete next.slot\n set({ behavior: next as FigureDataValueBinding['behavior'] })\n }} />\n </div>`\n }\n\n /**\n * 「연결 추가」 (ADR-0166 10): a field there or a new name, then a method the field's kind allows. As it is or scaled,\n * the one thing it moves; a table, the parts, controls and motion group it shows on -- a new name makes the field.\n */\n private renderAddBinding(asset: FigureAsset, rows: FigureDataRow[], choices: BehaviorChoice[]) {\n const bindable = rows.filter(r => r.node.kind !== 'object')\n const a = this.connecting\n /* 「새 필드」: a value no field path can have (a path is names and `[]`). */\n const NEW = '+'\n const row = a.path === NEW || !bindable.length ? null : (bindable.find(r => r.path === a.path) ?? bindable[0]!)\n const methods = methodsOf(row?.node ?? null, choices)\n const method = methods.includes(a.method as DataMethod) ? (a.method as DataMethod) : methods[0]\n const table = method === 'code' || method === 'ranges'\n const fitting = row && !table ? choices.filter(c => fitsField(row.node, c)) : []\n const choice = fitting.find(c => c.key === a.behavior) ?? fitting[0]\n const set = (patch: Partial<typeof a>) => (this.connecting = { ...a, ...patch })\n const typed = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const name = a.name.trim()\n const targets = { parts: a.parts, inputs: a.inputs, ...(a.group ? { group: a.group } : {}) }\n const aimed = a.parts.length > 0 || a.inputs.length > 0 || !!a.group\n const ready = table ? aimed && (row !== null || /^[A-Za-z_][\\w-]*$/.test(name)) : !!choice && !!row\n const add = () => {\n if (table) {\n const { binding, schema } = tableDraftOf(asset, row ? { path: row.path, node: row.node } : { name }, method as 'code' | 'ranges', targets)\n this.edit({ kind: 'set-data-binding', binding, ...(schema ? { schema } : {}) })\n this.opened = binding.id\n } else {\n /* A list is read whole by items; one value of it, through its first element. */\n const accessor = row!.node.kind === 'list' && choice!.kind === 'items' ? row!.path.replace(/\\[\\]$/, '') : accessorOfRow(row!.path)\n const binding = bindingDraftOf(asset, accessor, row!.node, choice!, method as 'value' | 'scale')\n this.edit({ kind: 'set-data-binding', binding })\n this.opened = binding.id\n }\n this.connecting = { path: '', name: '', method: '', behavior: '', parts: [], inputs: [], group: '' }\n }\n const toggle = (list: string[], id: string, on: boolean) => (on ? [...list, id] : list.filter(x => x !== id))\n return html`<div form>\n <span>${i18next.t('figure.label.data-field')}</span>\n <select @change=${(e: Event) => set({ path: typed(e), name: '' })}>\n ${bindable.map(r => html`<option value=${r.path} ?selected=${r === row}>${r.path}</option>`)}\n <option value=${NEW} ?selected=${row === null}>${i18next.t('figure.label.data-new-field')}</option>\n </select>\n ${row === null\n ? html`<span>${i18next.t('figure.label.data-name')}</span>\n <input .value=${a.name} @input=${(e: Event) => set({ name: typed(e) })} />`\n : nothing}\n <span>${i18next.t('figure.label.data-method')}</span>\n ${methods.length === 1\n ? /* One way only (a text is read by a code table): said, not offered as a choice of one (sweep 2026-10-27 U10). */\n html`<span method>${i18next.t('figure.label.data-method-' + methods[0])}</span>`\n : html`<select ?disabled=${!methods.length} @change=${(e: Event) => set({ method: typed(e) as DataMethod })}>\n ${methods.map(m => html`<option value=${m} ?selected=${m === method}>${i18next.t('figure.label.data-method-' + m)}</option>`)}\n </select>`}\n ${!table && fitting.length\n ? html`<span>${i18next.t('figure.label.data-behavior')}</span>\n <select @change=${(e: Event) => set({ behavior: typed(e) })}>\n ${fitting.map(c => html`<option value=${c.key} ?selected=${c === choice}>${this.behaviorName(asset, choices, c.behavior)}</option>`)}\n </select>`\n : nothing}\n </div>\n ${table\n ? this.renderTargets(partsOf(asset), stateInputsOf(asset), asset.motionGroups ?? [], targets, {\n part: (id, on) => set({ parts: toggle(a.parts, id, on) }),\n input: (id, on) => set({ inputs: toggle(a.inputs, id, on) }),\n group: id => set({ group: id })\n })\n : nothing}\n ${table && !aimed ? html`<p hint>${i18next.t('figure.text.data-table-needs-target')}</p>` : nothing}\n ${methods.length ? nothing : html`<p hint>${i18next.t('figure.text.data-no-behavior')}</p>`}\n <button act ?disabled=${this.locked || !ready} @click=${add}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-binding')}\n </button>`\n }\n\n /**\n * 「+ 회전」: a joint that turns without end, turned by the data -- on, speed in rpm, direction -- in one step. The\n * clips, the group and the bindings it writes are ordinary ones, edited one by one afterwards.\n */\n private renderRotation(asset: FigureAsset, rows: FigureDataRow[]) {\n const joints = endlessJointsOf(asset)\n if (!joints.length) return nothing\n const r = this.rotating\n const joint = joints.find(j => j.input === r.input) ?? joints[0]!\n const values = rows.filter(row => !row.path.includes('[]'))\n const of = (kind: FigureDataNode['kind'], closed = false) => values.filter(row => row.node.kind === kind && (!closed || domainOf(row.node).length > 0))\n const speedRow = values.find(row => row.path === r.speed)\n const speedMax = r.max || (speedRow?.node.kind === 'number' ? (speedRow.node.max ?? 0) : 0)\n const directionRow = values.find(row => row.path === r.direction)\n const directions = directionRow ? domainOf(directionRow.node).map(String) : []\n const forward = directions.includes(r.forward) ? r.forward : (directions[0] ?? '')\n const reverse = directions.includes(r.reverse) ? r.reverse : (directions.find(v => v !== forward) ?? '')\n const set = (patch: Partial<typeof r>) => (this.rotating = { ...r, ...patch })\n const typed = (e: Event) => (e.target as HTMLSelectElement | HTMLInputElement).value\n const pick = (rows: FigureDataRow[], value: string, change: (v: string) => void) =>\n html`<select ?disabled=${this.locked} @change=${(e: Event) => change(typed(e))}>\n <option value=\"\" ?selected=${!value}>${i18next.t('figure.label.data-none')}</option>\n ${rows.map(row => html`<option value=${row.path} ?selected=${row.path === value}>${row.path}</option>`)}\n </select>`\n const choice: RotationChoice = {\n input: joint.input,\n label: i18next.t('figure.label.data-rotation-of', { name: joint.label }),\n ...(r.on ? { on: r.on } : {}),\n ...(r.speed ? { speed: { path: r.speed, max: speedMax } } : {}),\n ...(r.direction && forward && reverse ? { direction: { path: r.direction, forward, reverse } } : {})\n }\n const ready = !r.speed || speedMax > 0\n return html`<details>\n <summary>${i18next.t('figure.label.data-rotation')}</summary>\n <p hint>${i18next.t('figure.text.data-rotation-explained')}</p>\n <div form>\n <span>${i18next.t('figure.label.data-rotation-joint')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ input: typed(e) })}>\n ${joints.map(j => html`<option value=${j.input} ?selected=${j === joint}>${j.label}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-rotation-on')}</span>\n ${pick(of('boolean'), r.on, v => set({ on: v }))}\n <span>${i18next.t('figure.label.data-rotation-speed')}</span>\n ${pick(of('number'), r.speed, v => set({ speed: v, max: 0 }))}\n ${r.speed\n ? html`<span>${i18next.t('figure.label.data-rotation-max')}</span>\n <input type=\"number\" min=\"0\" step=\"any\" .value=${speedMax ? String(speedMax) : ''} ?disabled=${this.locked} @change=${(e: Event) => set({ max: (e.target as HTMLInputElement).valueAsNumber || 0 })} />`\n : nothing}\n <span>${i18next.t('figure.label.data-rotation-direction')}</span>\n ${pick(of('text', true), r.direction, v => set({ direction: v, forward: '', reverse: '' }))}\n ${directions.length\n ? html`<span>${i18next.t('figure.label.data-rotation-forward')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ forward: typed(e) })}>\n ${directions.map(v => html`<option value=${v} ?selected=${v === forward}>${v}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-rotation-reverse')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ reverse: typed(e) })}>\n ${directions.map(v => html`<option value=${v} ?selected=${v === reverse}>${v}</option>`)}\n </select>`\n : nothing}\n </div>\n ${ready ? nothing : html`<p hint>${i18next.t('figure.text.data-rotation-needs-max')}</p>`}\n <button\n act\n ?disabled=${this.locked || !ready}\n @click=${() => {\n this.dispatchEvent(new CustomEvent('part-edits', { detail: { edits: rotationStepsOf(asset, choice) }, bubbles: true, composed: true }))\n this.rotating = { input: '', on: '', speed: '', max: 0, direction: '', forward: '', reverse: '' }\n }}\n >\n <md-icon>add</md-icon>${i18next.t('figure.button.data-add-rotation')}\n </button>\n </details>`\n }\n\n /* ---------------------------------------------------------------- the sample */\n\n /** Data to try, read the way a placed figure reads it: what it moves, or why it is refused; in the preview, the figure running on it. */\n private renderSample(asset: FigureAsset) {\n const text = this.sample || JSON.stringify(figureDataExample(asset.dataInterface!), null, 2)\n let data: unknown\n let unreadable = false\n try {\n data = JSON.parse(text)\n } catch {\n unreadable = true\n }\n const legends = this.sampleLegends()\n const read = unreadable ? null : sampleOf(asset, data, legends)\n const r = read?.result\n const tables = (asset.dataInterface?.bindings ?? []).filter((b): b is FigureDataTableBinding => b.rule === 'table')\n return html`<section>\n <h3>${i18next.t('figure.label.data-sample')}${this.help.button('figure.text.data-sample-explained')}</h3>\n ${this.help.hint('figure.text.data-sample-explained')}\n <textarea .value=${text} @input=${(e: Event) => this.try((e.target as HTMLTextAreaElement).value)}></textarea>\n ${unreadable\n ? html`<p hint>${i18next.t('figure.text.data-not-json')}</p>`\n : read!.issues.length\n ? html`<p hint>${read!.issues.map(i => i18next.t('figure.text.data-value-' + i.reason, { path: i.path || '-' })).join(' · ')}</p>`\n : html`<ul result>\n ${Object.entries(r!.states).map(([input, s]) => html`<li>${asset.stateInputs?.[input]?.label ?? input} = ${s.value}</li>`)}\n ${Object.entries(r!.palette).map(([token, colour]) => html`<li>${token} = ${colour}</li>`)}\n ${Object.entries(r!.motion).map(\n ([group, m]) =>\n html`<li>\n ${(asset.motionGroups ?? []).find(g => g.id === group)?.label ?? group}:\n ${[m.clip, m.speed === undefined ? '' : `× ${m.speed}`, m.paused ? i18next.t('figure.label.data-paused') : ''].filter(Boolean).join(' ')}\n </li>`\n )}\n ${tables.map(b => this.renderTableUse(asset, b, read!.uses[b.id]))}\n ${Object.entries(r!.parts).map(([part, look]) => html`<li>${part}: ${[look.color, look.effect ? i18next.t('figure.label.data-effect-' + look.effect.kind) : ''].filter(Boolean).join(' ')}</li>`)}\n ${Object.entries(r!.pose).map(([axis, p]) => html`<li>${i18next.t('figure.label.data-axis-' + axis)} = ${p!.value}</li>`)}\n ${r!.items.map(i => html`<li>${i18next.t('figure.label.data-items-count', { count: i.records.length })}${i.records.length ? `: ${i.records.map(x => x.id).join(', ')}` : ''}</li>`)}\n </ul>`}\n ${read?.notes.length ? html`<p hint>${read.notes.map(n => i18next.t('figure.text.data-note-' + n.reason, { binding: n.binding ?? '', key: n.key ?? '', column: n.column ? i18next.t('figure.label.data-column-' + n.column) : '', value: shownValue(n.value) })).join(' · ')}</p>` : nothing}\n ${r && Object.keys(r.pose).length ? html`<p hint>${i18next.t('figure.text.data-sample-moves-all')}</p>` : nothing}\n ${this.renderSampleLegends(tables)}\n <label toggle>\n <input\n type=\"checkbox\"\n .checked=${this.sampling}\n @change=${(e: Event) => {\n this.sampling = (e.target as HTMLInputElement).checked\n this.tell(unreadable ? null : data)\n }}\n />\n ${i18next.t('figure.label.data-sample-in-preview')}\n </label>\n </section>`\n }\n\n /** Which row of a table the sample's value matched, and from which table: the figure's own or the sample legend of its role. */\n private renderTableUse(asset: FigureAsset, b: FigureDataTableBinding, use: { value: unknown; key: string | null; source: string; legend?: string } | undefined) {\n if (!use || use.value === undefined) return nothing\n const word = (v: unknown) => (typeof v === 'boolean' || v === 'true' || v === 'false' ? i18next.t(String(v) === 'true' ? 'figure.label.data-true' : 'figure.label.data-false') : String(v))\n const row = use.key === null ? i18next.t('figure.label.data-none') : use.key === 'default' ? i18next.t('figure.label.data-otherwise') : word(use.key)\n const from = use.source === 'figure' ? i18next.t('figure.label.data-table-own') : i18next.t('figure.label.data-table-legend', { name: use.legend ?? '' })\n return html`<li>${b.label ?? b.accessor} = ${word(use.value)} → ${row} <small>(${from})</small></li>`\n }\n\n /** The sample legends as read: by role, those that are JSON. */\n private sampleLegends(): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [role, text] of Object.entries(this.legendSample)) {\n if (!text.trim()) continue\n try {\n out[role] = JSON.parse(text)\n } catch {\n /* Not JSON yet: the figure's own table shows. */\n }\n }\n return out\n }\n\n /**\n * A legend pasted for each table role, to see the figure as a board's legend of that role would show it -- not saved.\n * The preview shows it too, as a scene's legend named as the role.\n */\n private renderSampleLegends(tables: FigureDataTableBinding[]) {\n const roles = [...new Set(tables.flatMap(b => (b.legend ? [b.legend.role] : [])))]\n if (!roles.length) return nothing\n return html`<details>\n <summary>${i18next.t('figure.label.data-sample-legend')}</summary>\n <p hint>${i18next.t('figure.text.data-sample-legend-explained')}</p>\n ${roles.map(\n role => html`<label>${role}</label>\n <textarea\n .value=${this.legendSample[role] ?? ''}\n placeholder='{ \"CODE\": { \"color\": \"#22c55e\" }, \"default\": {} }'\n @input=${(e: Event) => {\n this.legendSample = { ...this.legendSample, [role]: (e.target as HTMLTextAreaElement).value }\n this.dispatchEvent(new CustomEvent('legend-sample', { detail: { legends: this.sampleLegends() }, bubbles: true, composed: true }))\n }}\n ></textarea>`\n )}\n </details>`\n }\n\n private try(typed: string) {\n this.sample = typed\n try {\n this.tell(JSON.parse(typed))\n } catch {\n /* Not JSON yet: the preview keeps what it ran on. */\n }\n }\n\n /** The sample to the preview while it is asked for; null lets the preview's figure go back to its own values. */\n private tell(data: unknown) {\n this.dispatchEvent(new CustomEvent('data-sample', { detail: { data: this.sampling ? data : null }, bubbles: true, composed: true }))\n }\n\n private edit(edit: unknown) {\n this.dispatchEvent(new CustomEvent('part-edit', { detail: { edit }, bubbles: true, composed: true }))\n }\n}\n\n/** A node of a kind, started empty. */\nfunction nodeOfKind(kind: FigureDataNode['kind']): FigureDataNode {\n if (kind === 'object') return { kind, fields: [] }\n if (kind === 'list') return { kind, item: { kind: 'object', fields: [] } }\n return { kind } as FigureDataNode\n}\n\n/** A value in a sentence: a text as it is, anything else as JSON. */\nconst shownValue = (v: unknown): string => (typeof v === 'string' ? v : JSON.stringify(v ?? ''))\n\n/** A table row's columns: the key's one or two, a cell per column, and the remove button. */\nfunction gridOf(keyCells: number, columns: number): string {\n return `${'minmax(64px, 1fr) '.repeat(keyCells)}${'minmax(72px, 1fr) '.repeat(columns)}30px`\n}\n"]}
1
+ {"version":3,"file":"figure-data-panel.js","sourceRoot":"","sources":["../../client/modeller/figure-data-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { unitWord } from './unit-words.js'\nimport { FIGURE_UNITS, figureDataExample, inferFigureDataSchema } from '@hatiolab/figure-model'\nimport type {\n FigureAsset,\n FigureDataBinding,\n FigureDataField,\n FigureDataNode,\n FigureDataRow,\n FigureDataTableBinding,\n FigureDataTableEntry,\n FigureDataValueBinding\n} from '@hatiolab/figure-model'\n\nimport {\n accessorOfRow,\n behaviorsOf,\n bindingDraftOf,\n domainOf,\n endlessJointsOf,\n fieldAt,\n fieldOfKind,\n fitsField,\n freeCodeOf,\n legendRoleOf,\n methodOf,\n methodsOf,\n partsOf,\n rotationStepsOf,\n sampleOf,\n schemaRowsOf,\n type RotationChoice,\n schemaWithField,\n schemaWithFieldReplaced,\n schemaWithoutField,\n schemaFollowingCodes,\n stateInputsOf,\n tableColumnsOf,\n tableDraftOf,\n tableWithKeys,\n tableWithLook,\n tableWithTargets,\n type BehaviorChoice,\n type DataMethod,\n type TableColumn\n} from './data-interface.js'\nimport { SidePanelStyles } from '@things-factory/figure-viewer/dist-client/side-panel-styles.js'\nimport { dataMoveOf } from '@things-factory/figure-viewer/dist-client/data-connection.js'\nimport { kindWords, moveWords } from '@things-factory/figure-viewer/dist-client/data-words.js'\nimport { figureBindingsTakenOver, figureCapabilityDescriptorOf, type FigureRestingBinding } from '@hatiolab/things-scene'\nimport { consumerDescriptors } from './consumer-capabilities.js'\nimport { HelpToggles } from './help.js'\n\nconst KINDS: FigureDataNode['kind'][] = ['number', 'boolean', 'text', 'object', 'list']\n\n/**\n * 데이터 -- the data a site sends this figure, in its own names, and what each value moves (ADR-0051 §8, data binding\n * design decision 4). The schema is free: fields the author names, a tree of objects and lists. A binding reads one place\n * of it and shows it in the figure (ADR-0166): as it is or scaled, it moves one thing -- a control, a colour, a motion\n * group's clip, speed or pause, its position, the items in its places; by a code table or a range table, each value's\n * look goes to several targets at once -- parts' colour and effect, controls' values, a motion group. The field's kind\n * says which methods there are. Every change is one part edit, and whether it holds is the kernel's check.\n *\n * The sample is not saved: data tried here, read the one way a placed figure reads it, and -- in the preview -- the figure\n * running on it (`data-sample`); a sample legend pasted for a table's role shows it as a board's legend would\n * (`legend-sample`).\n */\n@customElement('figure-data-panel')\nexport class FigureDataPanel extends localize(i18next)(LitElement) {\n private readonly help = new HelpToggles(this)\n static styles = [\n SidePanelStyles,\n css`\n :host {\n display: block;\n }\n ul[tree] {\n display: grid;\n gap: 2px;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n ul[tree] > li > button[row] {\n display: flex;\n flex-wrap: wrap;\n gap: 0 6px;\n width: 100%;\n min-height: var(--figure-control-height);\n margin: 0;\n padding: 4px 6px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: none;\n color: inherit;\n font: inherit;\n text-align: left;\n align-items: center;\n cursor: pointer;\n }\n ul[tree] > li > button[row][selected] {\n border-color: var(--md-sys-color-primary);\n }\n ul[tree] > li > button[row] small {\n color: var(--md-sys-color-on-surface-variant);\n }\n /* What the field is and what reads it: beside the name when it fits, under it when not. */\n ul[tree] > li > button[row] small[meta] {\n margin-left: auto;\n text-align: right;\n }\n section[item] {\n display: grid;\n gap: 8px;\n padding: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 8px;\n }\n div[head] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 30px;\n gap: 6px;\n align-items: center;\n }\n div[head] button[line] {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n color: inherit;\n font: inherit;\n text-align: left;\n overflow-wrap: anywhere;\n cursor: pointer;\n }\n /* What it reads and where on the first line, its method under it: a method wrapped alone read 「· 배율」 (sweep 2026-10-27 U11). */\n div[head] button[line] small {\n display: block;\n color: var(--md-sys-color-on-surface-variant);\n }\n /* A binding a product capability takes over is marked where the list is read, folded or not (sweep 2026-10-27 U18). */\n div[head] button[line] span[rests] {\n padding: 0 6px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 999px;\n }\n div[head] button[act] {\n width: 30px;\n min-height: var(--figure-control-height);\n margin: 0;\n padding: 0;\n }\n div[cases] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);\n gap: 4px 6px;\n align-items: center;\n }\n div[codes] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) 30px;\n gap: 4px 6px;\n align-items: center;\n }\n div[codes] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n div[ranges] {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.4fr) 30px;\n gap: 4px 6px;\n align-items: center;\n }\n div[ranges] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n /* A table's rows: the key (a code, or from and to), a cell per column, and a remove button. */\n div[looks] {\n display: grid;\n gap: 4px 6px;\n align-items: center;\n overflow-x: auto;\n }\n div[looks] > small {\n color: var(--md-sys-color-on-surface-variant);\n }\n div[looks] input,\n div[looks] select {\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n }\n div[looks] button[act] {\n width: 30px;\n margin: 0;\n padding: 0;\n }\n /* A colour and the button that clears it, on one line at the height of the cells beside it. */\n div[looks] span[colour] {\n display: flex;\n gap: 2px;\n align-items: center;\n min-width: 0;\n }\n div[looks] span[colour] input[type='color'] {\n flex: 1;\n height: var(--figure-control-height);\n padding: 0 2px;\n }\n div[looks] span[colour] button[act] {\n flex: none;\n width: 24px;\n }\n div[chips] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 10px;\n align-items: center;\n }\n div[chips] label {\n display: inline-flex;\n gap: 4px;\n align-items: center;\n }\n textarea {\n width: 100%;\n min-height: 96px;\n box-sizing: border-box;\n font-family: var(--ui-mono, ui-monospace, monospace);\n font-size: inherit;\n }\n ul[result] {\n margin: 0;\n padding-left: 16px;\n }\n md-icon {\n font-size: 16px;\n width: 16px;\n height: 16px;\n }\n `\n ]\n\n @property({ attribute: false }) asset?: FigureAsset\n @property({ type: Boolean }) locked = false\n /** The part chosen in the modeller, put among a table's parts by one button. */\n @property() selected = ''\n\n /** The schema row chosen, by its path; its field is edited under it. */\n @state() private chosen = ''\n @state() private adding = { name: '', kind: 'number' as FigureDataNode['kind'] }\n /** A site's data pasted to start the schema from; nothing is kept until the author says so. */\n @state() private pasted = ''\n /** A binding as it is being added: the field (or a new field's name), the method, the behavior or the table's targets. */\n @state() private connecting = { path: '', name: '', method: '' as DataMethod | '', behavior: '', parts: [] as string[], inputs: [] as string[], group: '' }\n /** The binding opened to edit its rule, by id. */\n @state() private opened = ''\n /** Sample legends by role, as JSON typed; not saved. */\n @state() private legendSample: Record<string, string> = {}\n /** The rotation card as filled in: the joint, and the fields for on, speed (and its most rpm) and direction. */\n @state() private rotating = { input: '', on: '', speed: '', max: 0, direction: '', forward: '', reverse: '' }\n /** The sample as typed, JSON; empty until edited, the schema's example shown until then. */\n @state() private sample = ''\n @state() private sampling = false\n\n render() {\n const asset = this.asset\n if (!asset) return nothing\n const rows = schemaRowsOf(asset)\n return html`\n ${this.renderCapabilityData(asset)} ${this.renderSchema(asset, rows)} ${this.renderBindings(asset, rows)} ${rows.length ? this.renderSample(asset) : nothing}\n `\n }\n\n /** The data a product's capability the figure wears reads itself (ADR-0167 14): said, read only. */\n private renderCapabilityData(asset: FigureAsset) {\n const names = asset.document.capabilities.names ?? []\n const reading = consumerDescriptors().filter(d => names.includes(d.name) && d.data?.length)\n if (!reading.length) return nothing\n return html`<section>\n ${reading.map(d => html`<p hint>${i18next.t('figure.text.data-capability-fields', { name: d.label, fields: d.data!.map(f => f.name).join(', ') })}</p>`)}\n </section>`\n }\n\n /* ---------------------------------------------------------------- the schema */\n\n private renderSchema(asset: FigureAsset, rows: FigureDataRow[]) {\n const schema = asset.dataInterface?.schema ?? []\n return html`<section>\n <h3>${i18next.t('figure.label.data-schema')}${this.help.button('figure.text.data-schema-explained')}</h3>\n ${this.help.hint('figure.text.data-schema-explained')}\n ${rows.length\n ? html`<ul tree>\n ${rows.map(\n row => html`<li>\n <button row ?selected=${row.path === this.chosen} style=\"padding-left: ${6 + row.depth * 14}px\" @click=${() => (this.chosen = row.path === this.chosen ? '' : row.path)}>\n <span>${row.name}${row.label ? html` <small>${row.label}</small>` : nothing}</span>\n <small meta>${this.kindWord(row.node)}${row.bindings.length ? ` · ${i18next.t('figure.label.data-bound', { count: row.bindings.length })}` : ''}</small>\n </button>\n ${row.path === this.chosen ? this.renderField(asset, schema, row) : nothing}\n </li>`\n )}\n </ul>`\n : html`<p hint>${i18next.t('figure.text.data-no-fields')}</p>`}\n ${this.renderAddField(schema, '')} ${this.renderFromSample(schema)}\n </section>`\n }\n\n /** A field's kind in the words every screen says it in (figure-viewer kindWords). */\n private kindWord(node: FigureDataNode): string {\n return kindWords(node)\n }\n\n /** The chosen field's own settings, and a field added under it when it holds fields. */\n private renderField(asset: FigureAsset, schema: readonly FigureDataField[], row: FigureDataRow) {\n const field = fieldAt(schema, row.path)\n if (!field) return nothing\n const replace = (next: FigureDataField) => this.edit({ kind: 'set-data-schema', schema: schemaWithFieldReplaced(schema, row.path, next) })\n const set = (patch: Record<string, unknown>) => {\n const next = { ...field, ...patch } as Record<string, unknown>\n for (const [k, v] of Object.entries(patch)) if (v === undefined || (typeof v === 'number' && Number.isNaN(v))) delete next[k]\n replace(next as FigureDataField)\n }\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const number = (e: Event) => (e.target as HTMLInputElement).valueAsNumber\n const rename = (to: string) => {\n if (!to || to === field.name) return\n /* A field outside any list is renamed with what reads it; inside a list it is the schema alone. */\n if (!row.path.includes('[]')) this.edit({ kind: 'rename-data-field', accessor: row.path, to })\n else replace({ ...field, name: to })\n }\n let holder: FigureDataNode = field\n while (holder.kind === 'list') holder = holder.item\n return html`<section item>\n <div head>\n <strong>${row.path}</strong>\n <button\n act\n ?disabled=${this.locked}\n title=${i18next.t('figure.button.remove-data-field')}\n @click=${() => {\n this.chosen = ''\n this.edit({ kind: 'set-data-schema', schema: schemaWithoutField(schema, row.path) })\n }}\n >\n <md-icon>delete</md-icon>\n </button>\n </div>\n <div form>\n <span>${i18next.t('figure.label.data-name')}</span>\n <input .value=${field.name} ?disabled=${this.locked} @change=${(e: Event) => rename(value(e).trim())} />\n <span>${i18next.t('figure.label.data-label')}</span>\n <input .value=${field.label ?? ''} ?disabled=${this.locked} @change=${(e: Event) => set({ label: value(e).trim() || undefined })} />\n <span>${i18next.t('figure.label.data-kind')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => replace(fieldOfKind(field, value(e) as FigureDataNode['kind']))}>\n ${KINDS.map(k => html`<option value=${k} ?selected=${k === field.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>\n ${field.kind === 'number'\n ? html`<span>${i18next.t('figure.label.data-unit')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ unit: value(e) || undefined })}>\n <option value=\"\" ?selected=${!field.unit}>${i18next.t('figure.label.unit-none')}</option>\n ${FIGURE_UNITS.map(u => html`<option value=${u} ?selected=${u === field.unit}>${unitWord(u)}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-min')}</span>\n <input type=\"number\" step=\"any\" .value=${field.min === undefined ? '' : String(field.min)} ?disabled=${this.locked} @change=${(e: Event) => set({ min: number(e) })} />\n <span>${i18next.t('figure.label.data-max')}</span>\n <input type=\"number\" step=\"any\" .value=${field.max === undefined ? '' : String(field.max)} ?disabled=${this.locked} @change=${(e: Event) => set({ max: number(e) })} />\n <span>${i18next.t('figure.label.data-default')}</span>\n <input type=\"number\" step=\"any\" .value=${field.default === undefined ? '' : String(field.default)} ?disabled=${this.locked} @change=${(e: Event) => set({ default: number(e) })} />`\n : field.kind === 'boolean'\n ? html`<span>${i18next.t('figure.label.data-default')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) === '' ? undefined : value(e) === 'true' })}>\n <option value=\"\" ?selected=${field.default === undefined}>-</option>\n ${[false, true].map(b => html`<option value=${String(b)} ?selected=${b === field.default}>${i18next.t(b ? 'figure.label.data-true' : 'figure.label.data-false')}</option>`)}\n </select>`\n : field.kind === 'text'\n ? html`<span>${i18next.t('figure.label.data-values')}</span>\n <input\n .value=${(field.values ?? []).join(', ')}\n ?disabled=${this.locked}\n @change=${(e: Event) => {\n const values = value(e).split(',').map(v => v.trim()).filter(Boolean)\n set({ values: values.length ? values : undefined, default: field.default !== undefined && (!values.length || values.includes(field.default)) ? field.default : undefined })\n }}\n />\n <span>${i18next.t('figure.label.data-default')}</span>\n ${field.values\n ? html`<select ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) || undefined })}>\n <option value=\"\" ?selected=${field.default === undefined}>-</option>\n ${field.values.map(v => html`<option value=${v} ?selected=${v === field.default}>${v}</option>`)}\n </select>`\n : html`<input .value=${field.default ?? ''} ?disabled=${this.locked} @change=${(e: Event) => set({ default: value(e) || undefined })} />`}`\n : html`<span></span>\n <label toggle>\n <input type=\"checkbox\" .checked=${!!field.json} ?disabled=${this.locked} @change=${(e: Event) => set({ json: (e.target as HTMLInputElement).checked ? true : undefined })} />\n ${i18next.t('figure.label.data-json')}\n </label>`}\n ${field.kind === 'list'\n ? html`<span>${i18next.t('figure.label.data-item-kind')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => replace({ ...field, item: nodeOfKind(value(e) as FigureDataNode['kind']) })}>\n ${KINDS.filter(k => k !== 'list').map(k => html`<option value=${k} ?selected=${k === field.item.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>`\n : nothing}\n </div>\n ${holder.kind === 'object' ? this.renderAddField(schema, row.path) : nothing}\n </section>`\n }\n\n private renderAddField(schema: readonly FigureDataField[], under: string) {\n const a = this.adding\n const named = a.name.trim()\n const add = () => {\n if (this.locked || !named) return\n this.edit({ kind: 'set-data-schema', schema: schemaWithField(schema, under, { name: named, ...nodeOfKind(a.kind) } as FigureDataField) })\n this.adding = { ...a, name: '' }\n }\n return html`<div form>\n <span>${i18next.t('figure.label.data-name')}</span>\n <input\n aria-label=${i18next.t('figure.label.data-name')}\n .value=${a.name}\n @input=${(e: Event) => (this.adding = { ...a, name: (e.target as HTMLInputElement).value })}\n @keydown=${(e: KeyboardEvent) => e.key === 'Enter' && !e.isComposing && add()}\n />\n <span>${i18next.t('figure.label.data-kind')}</span>\n <select @change=${(e: Event) => (this.adding = { ...a, kind: (e.target as HTMLSelectElement).value as FigureDataNode['kind'] })}>\n ${KINDS.map(k => html`<option value=${k} ?selected=${k === a.kind}>${i18next.t('figure.label.data-kind-' + k)}</option>`)}\n </select>\n </div>\n <button act ?disabled=${this.locked || !named} @click=${add}>\n <md-icon>add</md-icon>${i18next.t(under ? 'figure.button.add-data-child' : 'figure.button.add-data-field', { parent: under })}\n </button>`\n }\n\n /** A site's data pasted: the schema guessed from it, kept only when the author says so -- units, ranges and closed values are theirs to set. */\n private renderFromSample(schema: readonly FigureDataField[]) {\n let guessed: FigureDataField[] | null = null\n let unreadable = false\n if (this.pasted.trim()) {\n try {\n guessed = inferFigureDataSchema(JSON.parse(this.pasted))\n } catch {\n unreadable = true\n }\n }\n return html`<details>\n <summary>${i18next.t('figure.label.data-from-sample')}</summary>\n <p hint>${i18next.t('figure.text.data-from-sample-explained')}</p>\n <textarea .value=${this.pasted} ?disabled=${this.locked} @input=${(e: Event) => (this.pasted = (e.target as HTMLTextAreaElement).value)}></textarea>\n ${unreadable ? html`<p hint>${i18next.t('figure.text.data-not-json')}</p>` : nothing}\n ${guessed ? html`<p hint>${i18next.t(schema.length ? 'figure.text.data-guessed-replaces' : 'figure.text.data-guessed', { count: guessed.length })}</p>` : nothing}\n <button\n act\n ?disabled=${this.locked || !guessed?.length}\n @click=${() => {\n this.edit({ kind: 'set-data-schema', schema: guessed! })\n this.pasted = ''\n }}\n >\n ${i18next.t('figure.button.data-use-guessed')}\n </button>\n </details>`\n }\n\n /* ---------------------------------------------------------------- the bindings */\n\n /** What a behavior moves, in the words every screen says it in (figure-viewer dataMoveOf · moveWords). */\n private behaviorName(asset: FigureAsset, b: FigureDataValueBinding['behavior']): string {\n return moveWords(dataMoveOf(asset, b))\n }\n\n private renderBindings(asset: FigureAsset, rows: FigureDataRow[]) {\n const bindings = asset.dataInterface?.bindings ?? []\n const choices = behaviorsOf(asset)\n const resting = figureBindingsTakenOver(asset)\n return html`<section>\n <h3>${i18next.t('figure.label.data-bindings')}${this.help.button('figure.text.data-bindings-explained')}</h3>\n ${this.help.hint('figure.text.data-bindings-explained')}\n ${bindings.map(b => this.renderBinding(asset, choices, b, resting))}\n ${this.renderAddBinding(asset, rows, choices)}\n ${this.renderRotation(asset, rows)}\n </section>`\n }\n\n private renderBinding(asset: FigureAsset, choices: BehaviorChoice[], b: FigureDataBinding, resting: FigureRestingBinding[]) {\n const open = this.opened === b.id\n const set = (next: FigureDataBinding) => this.edit({ kind: 'set-data-binding', binding: next })\n const what = moveWords(dataMoveOf(asset, b.rule === 'table' ? { kind: 'table', targets: b.targets } : b.behavior))\n const rests = resting.some(r => r.id === b.id)\n return html`<section item>\n <div head>\n <button line aria-expanded=${open ? 'true' : 'false'} @click=${() => (this.opened = open ? '' : b.id)}>\n <strong>${b.label ?? b.accessor}</strong> → ${what}\n <small>${i18next.t('figure.label.data-method-' + methodOf(b))}${rests ? html` <span rests>${i18next.t('figure.label.data-binding-resting')}</span>` : nothing}</small>\n </button>\n <button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-binding')} @click=${() => this.edit({ kind: 'remove-data-binding', id: b.id })}>\n <md-icon>delete</md-icon>\n </button>\n </div>\n ${resting.filter(r => r.id === b.id).map(r => this.renderResting(r))}\n ${open ? (b.rule === 'table' ? this.renderTable(asset, b, set) : this.renderValueDetail(asset, b, set)) : nothing}\n </section>`\n }\n\n /**\n * A binding a product's capability takes over where the product registers it (ADR-0167 17): there it rests, whole or for\n * the targets named; elsewhere (a board without the product) it works.\n */\n private renderResting(r: FigureRestingBinding) {\n const where = r.capability.split('.')[0]\n const name = figureCapabilityDescriptorOf(r.capability)?.label ?? r.capability\n const targets = [...r.parts, ...r.inputs].join(', ')\n return html`<p hint>${r.whole ? i18next.t('figure.text.data-binding-rests', { where, name }) : i18next.t('figure.text.data-binding-rests-targets', { where, name, targets })}</p>`\n }\n\n private renderValueDetail(asset: FigureAsset, b: FigureDataValueBinding, set: (next: FigureDataBinding) => void) {\n const node = fieldAt(asset.dataInterface?.schema ?? [], b.accessor.replace(/\\[\\d+\\]/g, '[]'))\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const behavior = b.behavior\n const patch = (p: Partial<FigureDataValueBinding>) => {\n const next = { ...b, ...p }\n if ('param' in p && p.param === undefined) delete next.param\n set(next)\n }\n if (behavior.kind === 'items') return this.renderItemFields(asset, b, node, patch)\n return html`<div form>\n <span>${i18next.t('figure.label.data-method')}</span>\n ${node?.kind === 'number'\n ? html`<select ?disabled=${this.locked} @change=${(e: Event) => patch({ rule: value(e) as 'value' | 'scale', param: value(e) === 'scale' ? { scale: 1, offset: 0 } : undefined })}>\n ${(['value', 'scale'] as const).map(r => html`<option value=${r} ?selected=${r === b.rule}>${i18next.t('figure.label.data-method-' + r)}</option>`)}\n </select>`\n : html`<span>${i18next.t('figure.label.data-method-value')}</span>`}\n ${behavior.kind === 'state'\n ? html`<span>${i18next.t('figure.label.data-source-mode')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => patch({ behavior: { ...behavior, sourceMode: value(e) as 'observed' | 'commanded' } })}>\n ${(['observed', 'commanded'] as const).map(m => html`<option value=${m} ?selected=${behavior.sourceMode === m}>${i18next.t('figure.label.data-' + m)}</option>`)}\n </select>`\n : nothing}\n ${behavior.kind === 'pose'\n ? html`<span>${i18next.t('figure.label.data-seconds')}</span>\n <input type=\"number\" min=\"0\" step=\"any\" .value=${String(behavior.seconds ?? 0)} ?disabled=${this.locked} @change=${(e: Event) => patch({ behavior: { ...behavior, seconds: (e.target as HTMLInputElement).valueAsNumber || 0 } })} />`\n : nothing}\n ${b.rule === 'scale'\n ? html`<span>${i18next.t('figure.label.data-scale')}</span>\n <input type=\"number\" step=\"any\" .value=${String(b.param?.scale ?? 1)} ?disabled=${this.locked} @change=${(e: Event) => patch({ param: { ...b.param, scale: (e.target as HTMLInputElement).valueAsNumber } })} />\n <span>${i18next.t('figure.label.data-offset')}</span>\n <input type=\"number\" step=\"any\" .value=${String(b.param?.offset ?? 0)} ?disabled=${this.locked} @change=${(e: Event) => patch({ param: { ...b.param, offset: (e.target as HTMLInputElement).valueAsNumber } })} />`\n : nothing}\n </div>`\n }\n\n /**\n * A table (ADR-0166 10): what it shows on -- parts, controls, a motion group -- its rows, a code or an interval each\n * with a cell per column, the look of every other value, and whether a board may swap it for a legend.\n */\n private renderTable(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const value = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const parts = partsOf(asset)\n const inputs = stateInputsOf(asset)\n const groups = asset.motionGroups ?? []\n const targets = b.targets\n const toggle = (list: string[] | undefined, id: string, on: boolean) => (on ? [...(list ?? []), id] : (list ?? []).filter(x => x !== id))\n const retarget = (t: typeof targets) => set(tableWithTargets(b, t))\n return html`<div form>\n <span>${i18next.t('figure.label.data-label')}</span>\n <input .value=${b.label ?? ''} placeholder=${b.accessor} ?disabled=${this.locked} @change=${(e: Event) => {\n const label = value(e).trim()\n const next = { ...b, label }\n if (!label) delete (next as { label?: string }).label\n set(next)\n }} />\n </div>\n ${this.renderTargets(parts, inputs, groups, targets, {\n part: (id, on) => retarget({ ...targets, parts: toggle(targets.parts, id, on) }),\n input: (id, on) => retarget({ ...targets, inputs: toggle(targets.inputs, id, on) }),\n group: id => retarget({ ...targets, group: id || undefined })\n })}\n ${b.lookup === 'code' ? this.renderCodeRows(asset, b, set) : this.renderRangeRows(asset, b, set)}\n <label toggle>\n <input type=\"checkbox\" .checked=${!!b.legend} ?disabled=${this.locked} @change=${(e: Event) => {\n const next = { ...b }\n if ((e.target as HTMLInputElement).checked) next.legend = { role: legendRoleOf(b.id) }\n else delete next.legend\n set(next)\n }} />\n ${i18next.t('figure.label.data-legend-swappable')}\n </label>\n ${b.legend\n ? html`<div form>\n <span>${i18next.t('figure.label.data-legend-role')}</span>\n <input .value=${b.legend.role} ?disabled=${this.locked} @change=${(e: Event) => set({ ...b, legend: { role: value(e).trim() } })} />\n </div>\n <p hint>${i18next.t('figure.text.data-legend-explained')}</p>`\n : nothing}`\n }\n\n /** Which parts, controls and motion group a table shows on: chips to tick, and the part chosen in the modeller by one button. */\n private renderTargets(\n parts: string[],\n inputs: Array<{ id: string; label: string }>,\n groups: NonNullable<FigureAsset['motionGroups']>,\n t: { parts?: string[]; inputs?: string[]; group?: string },\n on: { part: (id: string, on: boolean) => void; input: (id: string, on: boolean) => void; group: (id: string) => void }\n ) {\n const chosen = (e: Event) => (e.target as HTMLInputElement).checked\n return html`<div form>\n <span>${i18next.t('figure.label.data-target-parts')}</span>\n <div chips>\n ${parts.map(p => html`<label><input type=\"checkbox\" .checked=${!!t.parts?.includes(p)} ?disabled=${this.locked} @change=${(e: Event) => on.part(p, chosen(e))} />${p}</label>`)}\n ${this.selected && parts.includes(this.selected) && !t.parts?.includes(this.selected)\n ? html`<button act ?disabled=${this.locked} @click=${() => on.part(this.selected, true)}><md-icon>add</md-icon>${i18next.t('figure.button.data-add-selected-part', { part: this.selected })}</button>`\n : nothing}\n </div>\n ${inputs.length\n ? html`<span>${i18next.t('figure.label.data-target-inputs')}</span>\n <div chips>\n ${inputs.map(i => html`<label><input type=\"checkbox\" .checked=${!!t.inputs?.includes(i.id)} ?disabled=${this.locked} @change=${(e: Event) => on.input(i.id, chosen(e))} />${i.label}</label>`)}\n </div>`\n : nothing}\n ${groups.length\n ? html`<span>${i18next.t('figure.label.data-target-group')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => on.group((e.target as HTMLSelectElement).value)}>\n <option value=\"\" ?selected=${!t.group}>${i18next.t('figure.label.data-none')}</option>\n ${groups.map(g => html`<option value=${g.id} ?selected=${g.id === t.group}>${g.label}</option>`)}\n </select>`\n : nothing}\n </div>`\n }\n\n /** The column heads of a table's rows, after the key's own one or two. */\n private columnHeads(columns: TableColumn[]) {\n return columns.map(c =>\n c.kind === 'value'\n ? html`<small>${c.label}${c.unit ? ` (${c.unit}${c.min !== undefined && c.max !== undefined ? ` ${c.min}~${c.max}` : ''})` : ''}</small>`\n : html`<small>${i18next.t('figure.label.data-column-' + c.kind)}</small>`\n )\n }\n\n /** One look's cells, a column each: a colour, an effect, a control's value, a clip, a speed, a pause -- empty leaves the target as it is. */\n private lookCells(asset: FigureAsset, columns: TableColumn[], look: FigureDataTableEntry, write: (look: FigureDataTableEntry) => void) {\n const without = (key: keyof FigureDataTableEntry) => {\n const next = { ...look }\n delete next[key]\n return next\n }\n const typed = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n return columns.map(c => {\n if (c.kind === 'color')\n return look.color === undefined\n ? html`<button act ?disabled=${this.locked} @click=${() => write({ ...look, color: '#888888' })}>${i18next.t('figure.button.data-set-result')}</button>`\n : html`<span colour><input type=\"color\" .value=${look.color} ?disabled=${this.locked} @change=${(e: Event) => write({ ...look, color: typed(e) })} /><button act ?disabled=${this.locked} title=${i18next.t('figure.button.data-clear-result')} @click=${() => write(without('color'))}><md-icon>close</md-icon></button></span>`\n if (c.kind === 'effect')\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, effect: { kind: typed(e) as 'blink' | 'glow' } }) : write(without('effect')))}>\n ${(['', 'blink', 'glow'] as const).map(k => html`<option value=${k} ?selected=${(look.effect?.kind ?? '') === k}>${i18next.t('figure.label.data-effect-' + (k || 'none'))}</option>`)}\n </select>`\n if (c.kind === 'value') {\n const v = look.values?.[c.id]\n return html`<input type=\"number\" step=\"any\" min=${c.min ?? ''} max=${c.max ?? ''} .value=${v === undefined ? '' : String(v)} ?disabled=${this.locked} @change=${(e: Event) => {\n const n = (e.target as HTMLInputElement).valueAsNumber\n const values = { ...look.values }\n if (Number.isNaN(n)) delete values[c.id]\n else values[c.id] = n\n write(Object.keys(values).length ? { ...look, values } : without('values'))\n }} />`\n }\n if (c.kind === 'clip')\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, clip: typed(e) }) : write(without('clip')))}>\n <option value=\"\" ?selected=${look.clip === undefined}>-</option>\n ${c.clips.map(clip => html`<option value=${clip} ?selected=${clip === look.clip}>${clip}</option>`)}\n </select>`\n if (c.kind === 'speed')\n return html`<input type=\"number\" min=\"0\" max=\"3\" step=\"any\" .value=${look.speed === undefined ? '' : String(look.speed)} ?disabled=${this.locked} @change=${(e: Event) => {\n const n = (e.target as HTMLInputElement).valueAsNumber\n write(Number.isNaN(n) ? without('speed') : { ...look, speed: n })\n }} />`\n return html`<select ?disabled=${this.locked} @change=${(e: Event) => (typed(e) ? write({ ...look, paused: typed(e) === 'true' }) : write(without('paused')))}>\n <option value=\"\" ?selected=${look.paused === undefined}>-</option>\n ${[false, true].map(v => html`<option value=${String(v)} ?selected=${v === look.paused}>${i18next.t(v ? 'figure.label.data-paused' : 'figure.label.data-playing')}</option>`)}\n </select>`\n })\n }\n\n /** The look of every other value: a row like the others, added or taken away; kept when a closed field's values are not all rows. */\n private renderOtherwise(asset: FigureAsset, b: FigureDataTableBinding, columns: TableColumn[], needed: boolean, set: (next: FigureDataBinding) => void, keyCells: number) {\n const look = b.table.default\n if (look === undefined)\n return html`<button act ?disabled=${this.locked} @click=${() => set(tableWithLook(b, 'default', {}))}><md-icon>add</md-icon>${i18next.t('figure.button.add-data-default')}</button>`\n const { default: _, ...rest } = b.table\n return html`<div looks style=\"grid-template-columns: ${gridOf(keyCells, columns.length)}\">\n <span style=\"grid-column: span ${keyCells}\">${i18next.t('figure.label.data-otherwise')}</span>\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, 'default', l)))}\n ${needed ? html`<span></span>` : html`<button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-case')} @click=${() => set({ ...b, table: rest })}><md-icon>delete</md-icon></button>`}\n </div>`\n }\n\n /**\n * A code table's rows: a code each, typed, with its look. A closed text's values follow the codes (ADR-0166 risk 3):\n * a code added, renamed or taken away is the field's value too; true and false are both rows.\n */\n private renderCodeRows(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const columns = tableColumnsOf(asset, b)\n const node = fieldAt(asset.dataInterface?.schema ?? [], b.accessor.replace(/\\[\\d+\\]/g, '[]'))\n const boolean = node?.kind === 'boolean'\n const rows = Object.entries(b.table).filter(([k]) => k !== 'default')\n const domain = node ? domainOf(node).map(String) : []\n const covered = domain.length > 0 && domain.every(v => b.table[v] !== undefined)\n /* The binding and the field it reads, in one undo step. */\n const rekeyed = (list: Array<[string, FigureDataTableEntry]>) => {\n const next = tableWithKeys(b, list)\n const schema = boolean ? undefined : schemaFollowingCodes(asset, next, list.map(([k]) => k))\n this.edit({ kind: 'set-data-binding', binding: next, ...(schema ? { schema } : {}) })\n }\n const rekey = (i: number, typed: string) => {\n const key = typed.trim()\n if (!key || key === 'default' || rows.some(([k], j) => j !== i && k === key)) return this.requestUpdate()\n rekeyed(rows.map(([k, v], j) => (j === i ? [key, v] : [k, v])))\n }\n const word = (k: string) => (boolean ? i18next.t(k === 'true' ? 'figure.label.data-true' : 'figure.label.data-false') : k)\n return html`<div looks style=\"grid-template-columns: ${gridOf(1, columns.length)}\">\n <small>${i18next.t('figure.label.data-case-value')}</small>${this.columnHeads(columns)}<span></span>\n ${rows.map(\n ([k, look], i) => html`${boolean\n ? html`<span>${word(k)}</span>`\n : html`<input .value=${k} aria-label=${i18next.t('figure.label.data-case-value')} ?disabled=${this.locked} @change=${(e: Event) => rekey(i, (e.target as HTMLInputElement).value)} />`}\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, k, l)))}\n ${boolean || rows.length < 2 && domain.length > 0\n ? html`<span></span>`\n : html`<button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-case')} @click=${() => rekeyed(rows.filter((_, j) => j !== i))}><md-icon>delete</md-icon></button>`}`\n )}\n </div>\n ${this.renderOtherwise(asset, b, columns, domain.length > 0 && !covered, set, 1)}\n ${boolean\n ? nothing\n : html`<button act ?disabled=${this.locked} @click=${() => rekeyed([...rows, [freeCodeOf(rows.map(([k]) => k)), {}]])}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-case')}\n </button>`}`\n }\n\n /**\n * A range table's rows: from (inclusive) and to (exclusive), either end open, with a look each. Giving the last row,\n * open above, an end starts the next row there; a row open above is the last there can be.\n */\n private renderRangeRows(asset: FigureAsset, b: FigureDataTableBinding, set: (next: FigureDataBinding) => void) {\n const columns = tableColumnsOf(asset, b)\n const rows = Object.entries(b.table).filter(([k]) => k !== 'default')\n const ends = (key: string) => {\n const [from = '', to = ''] = key.split('~')\n return { from, to }\n }\n const rekey = (i: number, end: 'from' | 'to', typed: string) => {\n const was = ends(rows[i]![0])\n const next = { ...was, [end]: typed.trim() }\n const key = `${next.from}~${next.to}`\n /* A key another row has would take that row's place: not taken. */\n if (rows.some(([k], j) => j !== i && k === key)) return this.requestUpdate()\n const list: Array<[string, FigureDataTableEntry]> = rows.map(([k, v], j) => (j === i ? [key, v] : [k, v]))\n /* The last row, open above, given an end: the next row starts there, open above, so every value still has a row. */\n if (i === rows.length - 1 && end === 'to' && was.to === '' && next.to !== '') list.push([`${next.to}~`, {}])\n set(tableWithKeys(b, list))\n }\n const last = rows.at(-1)\n const lastEnd = last ? ends(last[0]).to : ''\n const open = !!last && lastEnd === ''\n return html`<div looks style=\"grid-template-columns: ${gridOf(2, columns.length)}\">\n <small>${i18next.t('figure.label.data-range-from')}</small><small>${i18next.t('figure.label.data-range-to')}</small>${this.columnHeads(columns)}<span></span>\n ${rows.map(([k, look], i) => {\n const e = ends(k)\n return html`<input type=\"number\" step=\"any\" .value=${e.from} ?disabled=${this.locked} @change=${(ev: Event) => rekey(i, 'from', (ev.target as HTMLInputElement).value)} />\n <input type=\"number\" step=\"any\" .value=${e.to} ?disabled=${this.locked} @change=${(ev: Event) => rekey(i, 'to', (ev.target as HTMLInputElement).value)} />\n ${this.lookCells(asset, columns, look, l => set(tableWithLook(b, k, l)))}\n <button act ?disabled=${this.locked} title=${i18next.t('figure.button.remove-data-range')} @click=${() => set(tableWithKeys(b, rows.filter((_, j) => j !== i)))}><md-icon>delete</md-icon></button>`\n })}\n </div>\n ${this.renderOtherwise(asset, b, columns, false, set, 2)}\n ${open ? html`<p hint>${i18next.t('figure.text.data-range-close-last')}</p>` : nothing}\n <button act ?disabled=${this.locked || open} @click=${() => set(tableWithKeys(b, [...rows, [`${lastEnd}~`, {}]]))}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-range')}\n </button>`\n }\n\n /** Which field of each element is its id, its type, its place, its height in the stack, its status. */\n private renderItemFields(asset: FigureAsset, b: FigureDataValueBinding, node: FigureDataNode | undefined, set: (patch: Partial<FigureDataValueBinding>) => void) {\n const behavior = b.behavior\n if (behavior.kind !== 'items') return nothing\n let element: FigureDataNode | undefined = node\n while (element?.kind === 'list') element = element.item\n const fields = element?.kind === 'object' ? element.fields.filter(f => f.kind === 'number' || f.kind === 'text' || f.kind === 'boolean').map(f => f.name) : []\n const pick = (role: 'id' | 'type' | 'place' | 'stack' | 'status', typed: string) => {\n const next: Record<string, unknown> = { ...behavior, [role]: typed }\n if (!typed) delete next[role]\n set({ behavior: next as FigureDataValueBinding['behavior'] })\n }\n return html`<div form>\n ${node?.kind === 'list'\n ? (['id', 'type', 'place', 'stack', 'status'] as const).map(\n role => html`<span>${i18next.t('figure.label.data-item-' + role)}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => pick(role, (e.target as HTMLSelectElement).value)}>\n <option value=\"\" ?selected=${!behavior[role]}>-</option>\n ${fields.map(f => html`<option value=${f} ?selected=${f === behavior[role]}>${f}</option>`)}\n </select>`\n )\n : nothing}\n <span>${i18next.t('figure.label.data-item-slot')}</span>\n <input .value=${behavior.slot ?? ''} ?disabled=${this.locked} @change=${(e: Event) => {\n const slot = (e.target as HTMLInputElement).value.trim()\n const next: Record<string, unknown> = { ...behavior, slot }\n if (!slot) delete next.slot\n set({ behavior: next as FigureDataValueBinding['behavior'] })\n }} />\n </div>`\n }\n\n /**\n * 「연결 추가」 (ADR-0166 10): a field there or a new name, then a method the field's kind allows. As it is or scaled,\n * the one thing it moves; a table, the parts, controls and motion group it shows on -- a new name makes the field.\n */\n private renderAddBinding(asset: FigureAsset, rows: FigureDataRow[], choices: BehaviorChoice[]) {\n const bindable = rows.filter(r => r.node.kind !== 'object')\n const a = this.connecting\n /* 「새 필드」: a value no field path can have (a path is names and `[]`). */\n const NEW = '+'\n const row = a.path === NEW || !bindable.length ? null : (bindable.find(r => r.path === a.path) ?? bindable[0]!)\n const methods = methodsOf(row?.node ?? null, choices)\n const method = methods.includes(a.method as DataMethod) ? (a.method as DataMethod) : methods[0]\n const table = method === 'code' || method === 'ranges'\n const fitting = row && !table ? choices.filter(c => fitsField(row.node, c)) : []\n const choice = fitting.find(c => c.key === a.behavior) ?? fitting[0]\n const set = (patch: Partial<typeof a>) => (this.connecting = { ...a, ...patch })\n const typed = (e: Event) => (e.target as HTMLInputElement | HTMLSelectElement).value\n const name = a.name.trim()\n const targets = { parts: a.parts, inputs: a.inputs, ...(a.group ? { group: a.group } : {}) }\n const aimed = a.parts.length > 0 || a.inputs.length > 0 || !!a.group\n const ready = table ? aimed && (row !== null || /^[A-Za-z_][\\w-]*$/.test(name)) : !!choice && !!row\n const add = () => {\n if (table) {\n const { binding, schema } = tableDraftOf(asset, row ? { path: row.path, node: row.node } : { name }, method as 'code' | 'ranges', targets)\n this.edit({ kind: 'set-data-binding', binding, ...(schema ? { schema } : {}) })\n this.opened = binding.id\n } else {\n /* A list is read whole by items; one value of it, through its first element. */\n const accessor = row!.node.kind === 'list' && choice!.kind === 'items' ? row!.path.replace(/\\[\\]$/, '') : accessorOfRow(row!.path)\n const binding = bindingDraftOf(asset, accessor, row!.node, choice!, method as 'value' | 'scale')\n this.edit({ kind: 'set-data-binding', binding })\n this.opened = binding.id\n }\n this.connecting = { path: '', name: '', method: '', behavior: '', parts: [], inputs: [], group: '' }\n }\n const toggle = (list: string[], id: string, on: boolean) => (on ? [...list, id] : list.filter(x => x !== id))\n return html`<div form>\n <span>${i18next.t('figure.label.data-field')}</span>\n <select @change=${(e: Event) => set({ path: typed(e), name: '' })}>\n ${bindable.map(r => html`<option value=${r.path} ?selected=${r === row}>${r.path}</option>`)}\n <option value=${NEW} ?selected=${row === null}>${i18next.t('figure.label.data-new-field')}</option>\n </select>\n ${row === null\n ? html`<span>${i18next.t('figure.label.data-name')}</span>\n <input .value=${a.name} @input=${(e: Event) => set({ name: typed(e) })} />`\n : nothing}\n <span>${i18next.t('figure.label.data-method')}</span>\n ${methods.length === 1\n ? /* One way only (a text is read by a code table): said, not offered as a choice of one (sweep 2026-10-27 U10). */\n html`<span method>${i18next.t('figure.label.data-method-' + methods[0])}</span>`\n : html`<select ?disabled=${!methods.length} @change=${(e: Event) => set({ method: typed(e) as DataMethod })}>\n ${methods.map(m => html`<option value=${m} ?selected=${m === method}>${i18next.t('figure.label.data-method-' + m)}</option>`)}\n </select>`}\n ${!table && fitting.length\n ? html`<span>${i18next.t('figure.label.data-behavior')}</span>\n <select @change=${(e: Event) => set({ behavior: typed(e) })}>\n ${fitting.map(c => html`<option value=${c.key} ?selected=${c === choice}>${this.behaviorName(asset, c.behavior)}</option>`)}\n </select>`\n : nothing}\n </div>\n ${table\n ? this.renderTargets(partsOf(asset), stateInputsOf(asset), asset.motionGroups ?? [], targets, {\n part: (id, on) => set({ parts: toggle(a.parts, id, on) }),\n input: (id, on) => set({ inputs: toggle(a.inputs, id, on) }),\n group: id => set({ group: id })\n })\n : nothing}\n ${table && !aimed ? html`<p hint>${i18next.t('figure.text.data-table-needs-target')}</p>` : nothing}\n ${methods.length ? nothing : html`<p hint>${i18next.t('figure.text.data-no-behavior')}</p>`}\n <button act ?disabled=${this.locked || !ready} @click=${add}>\n <md-icon>add</md-icon>${i18next.t('figure.button.add-data-binding')}\n </button>`\n }\n\n /**\n * 「+ 회전」: a joint that turns without end, turned by the data -- on, speed in rpm, direction -- in one step. The\n * clips, the group and the bindings it writes are ordinary ones, edited one by one afterwards.\n */\n private renderRotation(asset: FigureAsset, rows: FigureDataRow[]) {\n const joints = endlessJointsOf(asset)\n if (!joints.length) return nothing\n const r = this.rotating\n const joint = joints.find(j => j.input === r.input) ?? joints[0]!\n const values = rows.filter(row => !row.path.includes('[]'))\n const of = (kind: FigureDataNode['kind'], closed = false) => values.filter(row => row.node.kind === kind && (!closed || domainOf(row.node).length > 0))\n const speedRow = values.find(row => row.path === r.speed)\n const speedMax = r.max || (speedRow?.node.kind === 'number' ? (speedRow.node.max ?? 0) : 0)\n const directionRow = values.find(row => row.path === r.direction)\n const directions = directionRow ? domainOf(directionRow.node).map(String) : []\n const forward = directions.includes(r.forward) ? r.forward : (directions[0] ?? '')\n const reverse = directions.includes(r.reverse) ? r.reverse : (directions.find(v => v !== forward) ?? '')\n const set = (patch: Partial<typeof r>) => (this.rotating = { ...r, ...patch })\n const typed = (e: Event) => (e.target as HTMLSelectElement | HTMLInputElement).value\n const pick = (rows: FigureDataRow[], value: string, change: (v: string) => void) =>\n html`<select ?disabled=${this.locked} @change=${(e: Event) => change(typed(e))}>\n <option value=\"\" ?selected=${!value}>${i18next.t('figure.label.data-none')}</option>\n ${rows.map(row => html`<option value=${row.path} ?selected=${row.path === value}>${row.path}</option>`)}\n </select>`\n const choice: RotationChoice = {\n input: joint.input,\n label: i18next.t('figure.label.data-rotation-of', { name: joint.label }),\n ...(r.on ? { on: r.on } : {}),\n ...(r.speed ? { speed: { path: r.speed, max: speedMax } } : {}),\n ...(r.direction && forward && reverse ? { direction: { path: r.direction, forward, reverse } } : {})\n }\n const ready = !r.speed || speedMax > 0\n return html`<details>\n <summary>${i18next.t('figure.label.data-rotation')}</summary>\n <p hint>${i18next.t('figure.text.data-rotation-explained')}</p>\n <div form>\n <span>${i18next.t('figure.label.data-rotation-joint')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ input: typed(e) })}>\n ${joints.map(j => html`<option value=${j.input} ?selected=${j === joint}>${j.label}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-rotation-on')}</span>\n ${pick(of('boolean'), r.on, v => set({ on: v }))}\n <span>${i18next.t('figure.label.data-rotation-speed')}</span>\n ${pick(of('number'), r.speed, v => set({ speed: v, max: 0 }))}\n ${r.speed\n ? html`<span>${i18next.t('figure.label.data-rotation-max')}</span>\n <input type=\"number\" min=\"0\" step=\"any\" .value=${speedMax ? String(speedMax) : ''} ?disabled=${this.locked} @change=${(e: Event) => set({ max: (e.target as HTMLInputElement).valueAsNumber || 0 })} />`\n : nothing}\n <span>${i18next.t('figure.label.data-rotation-direction')}</span>\n ${pick(of('text', true), r.direction, v => set({ direction: v, forward: '', reverse: '' }))}\n ${directions.length\n ? html`<span>${i18next.t('figure.label.data-rotation-forward')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ forward: typed(e) })}>\n ${directions.map(v => html`<option value=${v} ?selected=${v === forward}>${v}</option>`)}\n </select>\n <span>${i18next.t('figure.label.data-rotation-reverse')}</span>\n <select ?disabled=${this.locked} @change=${(e: Event) => set({ reverse: typed(e) })}>\n ${directions.map(v => html`<option value=${v} ?selected=${v === reverse}>${v}</option>`)}\n </select>`\n : nothing}\n </div>\n ${ready ? nothing : html`<p hint>${i18next.t('figure.text.data-rotation-needs-max')}</p>`}\n <button\n act\n ?disabled=${this.locked || !ready}\n @click=${() => {\n this.dispatchEvent(new CustomEvent('part-edits', { detail: { edits: rotationStepsOf(asset, choice) }, bubbles: true, composed: true }))\n this.rotating = { input: '', on: '', speed: '', max: 0, direction: '', forward: '', reverse: '' }\n }}\n >\n <md-icon>add</md-icon>${i18next.t('figure.button.data-add-rotation')}\n </button>\n </details>`\n }\n\n /* ---------------------------------------------------------------- the sample */\n\n /** Data to try, read the way a placed figure reads it: what it moves, or why it is refused; in the preview, the figure running on it. */\n private renderSample(asset: FigureAsset) {\n const text = this.sample || JSON.stringify(figureDataExample(asset.dataInterface!), null, 2)\n let data: unknown\n let unreadable = false\n try {\n data = JSON.parse(text)\n } catch {\n unreadable = true\n }\n const legends = this.sampleLegends()\n const read = unreadable ? null : sampleOf(asset, data, legends)\n const r = read?.result\n const tables = (asset.dataInterface?.bindings ?? []).filter((b): b is FigureDataTableBinding => b.rule === 'table')\n return html`<section>\n <h3>${i18next.t('figure.label.data-sample')}${this.help.button('figure.text.data-sample-explained')}</h3>\n ${this.help.hint('figure.text.data-sample-explained')}\n <textarea .value=${text} @input=${(e: Event) => this.try((e.target as HTMLTextAreaElement).value)}></textarea>\n ${unreadable\n ? html`<p hint>${i18next.t('figure.text.data-not-json')}</p>`\n : read!.issues.length\n ? html`<p hint>${read!.issues.map(i => i18next.t('figure.text.data-value-' + i.reason, { path: i.path || '-' })).join(' · ')}</p>`\n : html`<ul result>\n ${Object.entries(r!.states).map(([input, s]) => html`<li>${asset.stateInputs?.[input]?.label ?? input} = ${s.value}</li>`)}\n ${Object.entries(r!.palette).map(([token, colour]) => html`<li>${token} = ${colour}</li>`)}\n ${Object.entries(r!.motion).map(\n ([group, m]) =>\n html`<li>\n ${(asset.motionGroups ?? []).find(g => g.id === group)?.label ?? group}:\n ${[m.clip, m.speed === undefined ? '' : `× ${m.speed}`, m.paused ? i18next.t('figure.label.data-paused') : ''].filter(Boolean).join(' ')}\n </li>`\n )}\n ${tables.map(b => this.renderTableUse(asset, b, read!.uses[b.id]))}\n ${Object.entries(r!.parts).map(([part, look]) => html`<li>${part}: ${[look.color, look.effect ? i18next.t('figure.label.data-effect-' + look.effect.kind) : ''].filter(Boolean).join(' ')}</li>`)}\n ${Object.entries(r!.pose).map(([axis, p]) => html`<li>${i18next.t('figure.label.data-axis-' + axis)} = ${p!.value}</li>`)}\n ${r!.items.map(i => html`<li>${i18next.t('figure.label.data-items-count', { count: i.records.length })}${i.records.length ? `: ${i.records.map(x => x.id).join(', ')}` : ''}</li>`)}\n </ul>`}\n ${read?.notes.length ? html`<p hint>${read.notes.map(n => i18next.t('figure.text.data-note-' + n.reason, { binding: n.binding ?? '', key: n.key ?? '', column: n.column ? i18next.t('figure.label.data-column-' + n.column) : '', value: shownValue(n.value) })).join(' · ')}</p>` : nothing}\n ${r && Object.keys(r.pose).length ? html`<p hint>${i18next.t('figure.text.data-sample-moves-all')}</p>` : nothing}\n ${this.renderSampleLegends(tables)}\n <label toggle>\n <input\n type=\"checkbox\"\n .checked=${this.sampling}\n @change=${(e: Event) => {\n this.sampling = (e.target as HTMLInputElement).checked\n this.tell(unreadable ? null : data)\n }}\n />\n ${i18next.t('figure.label.data-sample-in-preview')}\n </label>\n </section>`\n }\n\n /** Which row of a table the sample's value matched, and from which table: the figure's own or the sample legend of its role. */\n private renderTableUse(asset: FigureAsset, b: FigureDataTableBinding, use: { value: unknown; key: string | null; source: string; legend?: string } | undefined) {\n if (!use || use.value === undefined) return nothing\n const word = (v: unknown) => (typeof v === 'boolean' || v === 'true' || v === 'false' ? i18next.t(String(v) === 'true' ? 'figure.label.data-true' : 'figure.label.data-false') : String(v))\n const row = use.key === null ? i18next.t('figure.label.data-none') : use.key === 'default' ? i18next.t('figure.label.data-otherwise') : word(use.key)\n const from = use.source === 'figure' ? i18next.t('figure.label.data-table-own') : i18next.t('figure.label.data-table-legend', { name: use.legend ?? '' })\n return html`<li>${b.label ?? b.accessor} = ${word(use.value)} → ${row} <small>(${from})</small></li>`\n }\n\n /** The sample legends as read: by role, those that are JSON. */\n private sampleLegends(): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [role, text] of Object.entries(this.legendSample)) {\n if (!text.trim()) continue\n try {\n out[role] = JSON.parse(text)\n } catch {\n /* Not JSON yet: the figure's own table shows. */\n }\n }\n return out\n }\n\n /**\n * A legend pasted for each table role, to see the figure as a board's legend of that role would show it -- not saved.\n * The preview shows it too, as a scene's legend named as the role.\n */\n private renderSampleLegends(tables: FigureDataTableBinding[]) {\n const roles = [...new Set(tables.flatMap(b => (b.legend ? [b.legend.role] : [])))]\n if (!roles.length) return nothing\n return html`<details>\n <summary>${i18next.t('figure.label.data-sample-legend')}</summary>\n <p hint>${i18next.t('figure.text.data-sample-legend-explained')}</p>\n ${roles.map(\n role => html`<label>${role}</label>\n <textarea\n .value=${this.legendSample[role] ?? ''}\n placeholder='{ \"CODE\": { \"color\": \"#22c55e\" }, \"default\": {} }'\n @input=${(e: Event) => {\n this.legendSample = { ...this.legendSample, [role]: (e.target as HTMLTextAreaElement).value }\n this.dispatchEvent(new CustomEvent('legend-sample', { detail: { legends: this.sampleLegends() }, bubbles: true, composed: true }))\n }}\n ></textarea>`\n )}\n </details>`\n }\n\n private try(typed: string) {\n this.sample = typed\n try {\n this.tell(JSON.parse(typed))\n } catch {\n /* Not JSON yet: the preview keeps what it ran on. */\n }\n }\n\n /** The sample to the preview while it is asked for; null lets the preview's figure go back to its own values. */\n private tell(data: unknown) {\n this.dispatchEvent(new CustomEvent('data-sample', { detail: { data: this.sampling ? data : null }, bubbles: true, composed: true }))\n }\n\n private edit(edit: unknown) {\n this.dispatchEvent(new CustomEvent('part-edit', { detail: { edit }, bubbles: true, composed: true }))\n }\n}\n\n/** A node of a kind, started empty. */\nfunction nodeOfKind(kind: FigureDataNode['kind']): FigureDataNode {\n if (kind === 'object') return { kind, fields: [] }\n if (kind === 'list') return { kind, item: { kind: 'object', fields: [] } }\n return { kind } as FigureDataNode\n}\n\n/** A value in a sentence: a text as it is, anything else as JSON. */\nconst shownValue = (v: unknown): string => (typeof v === 'string' ? v : JSON.stringify(v ?? ''))\n\n/** A table row's columns: the key's one or two, a cell per column, and the remove button. */\nfunction gridOf(keyCells: number, columns: number): string {\n return `${'minmax(64px, 1fr) '.repeat(keyCells)}${'minmax(72px, 1fr) '.repeat(columns)}30px`\n}\n"]}
@@ -75,6 +75,8 @@ export declare function sessionRefusalOf(error: unknown, say: Say): string | nul
75
75
  * leaves no inside, a path through itself. Nothing for any other refusal.
76
76
  */
77
77
  export declare function pipeRefusalOf(error: unknown, say: Say): string | null;
78
+ export declare function paletteRefusalOf(error: unknown, say: Say): string | null;
79
+ export declare function fieldRefusalOf(error: unknown, say: Say): string | null;
78
80
  export declare function editRefusalOf(error: unknown, say: Say): string;
79
81
  /**
80
82
  * A data field, a binding, a status port, a motion group or a clip's tracks refused (ADR-0051 §8, §3.2), said with the ids