@weasel-js/labkit 1.7.2 → 1.7.3

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,"sources":["../src/controls/ControlMatrix.tsx"],"names":["auto","l","c","i","RACPopover","RACDialog","ae","h"],"mappings":"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","file":"chunk-WFALF2X2.js","sourcesContent":["import { getAlpha01, isBuiltinToolPref, toHex8, withAlpha01 } from '@weasel-js/core';\nimport {\n Button,\n Focusable,\n isPrefLeaf,\n type PrefLeaf,\n type PropertyControlProps,\n PropertyHelp,\n PropertyList,\n PropertyPanel,\n prefFieldProps,\n type StanceProps,\n Tooltip,\n TooltipTrigger,\n useOverlayPortal,\n} from '@weasel-js/ui';\nimport {\n type CSSProperties,\n type DOMAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n useRef,\n useState,\n} from 'react';\nimport { Dialog as RACDialog, Popover as RACPopover } from 'react-aria-components';\nimport { auto as autoValue } from '../config/auto';\nimport { schemaNodeAtPath, valueAtPath } from '../config/path';\nimport type { ResolvedConfig } from '../config/types';\nimport { ControlRow } from './ControlPanel';\nimport { summarizeValue } from './inDialog';\n\n/** One column of a {@link ControlMatrix}: a config group, every one the same shape. */\nexport interface ControlMatrixColumn {\n /** Config path prefix of this column's group, e.g. `'looks.window'`. */\n key: string;\n /** Short header shown at narrow width, e.g. `'Win'`. */\n label: string;\n /** Full name, for the header's tooltip and accessible name, e.g. `'Window'`. */\n title?: string;\n}\n\n/** One row of a {@link ControlMatrix}: a setting every column's group may hold. */\nexport interface ControlMatrixRow {\n /** Path of the setting inside each column's group, e.g. `'background'` or `'fill.colorBy'`. */\n key: string;\n /** Row label. Defaults to the leaf's own name from the schema. */\n label?: string;\n}\n\nexport interface ControlMatrixProps extends StanceProps {\n /** Heads the matrix. With `title`, `stance` or `tone` given it sits in a\n * `<PropertyPanel>`, as a `ControlPanel` does. */\n title?: ReactNode;\n /** The whole resolved schema. A cell's leaf is looked up at\n * `${column.key}.${row.key}`; a cell with none draws a dash. */\n schema: ResolvedConfig;\n /** The scopes. The first is the fallback the others inherit from: its cells\n * never inherit, and its header is emphasized. */\n columns: readonly ControlMatrixColumn[];\n rows: readonly ControlMatrixRow[];\n /** Values to show, already resolved: an inherited cell's value is the one it\n * inherits. */\n config: Record<string, unknown>;\n /** Full dotted paths whose cells inherit, drawn ghosted. */\n auto: ReadonlySet<string>;\n /** Writes a value, which pins the cell, or labkit's `auto` sentinel, which\n * unpins it. */\n setConfig: (path: string, value: unknown) => void;\n /** Clicking a column header. Without it the headers are plain text. */\n onColumnClick?: (column: ControlMatrixColumn) => void;\n /** What an inherited cell's tooltip says. Defaults to `from <first column>`. */\n inheritHint?: (column: ControlMatrixColumn) => string;\n className?: string;\n}\n\nconst NO_AUTO: ReadonlySet<string> = new Set();\nconst noop = (): void => {};\n\nconst nameOf = (column: ControlMatrixColumn): string => column.title ?? column.label;\n\n/** The open popover: which cell, and the element it hangs off. */\ninterface OpenCell {\n path: string;\n leaf: PrefLeaf;\n column: ControlMatrixColumn;\n first: boolean;\n label: string;\n}\n\n/**\n * One setting across several config groups of the same shape: settings down\n * the side, scopes across the top, a compact read-only cell at each crossing.\n * A cell inherits from the first column until it is pinned; inherited cells\n * draw ghosted. Click a cell to edit it with the control a `ControlPanel` would\n * draw (a boolean flips and a color opens its picker in place); editing pins,\n * and the popover's Inherit button — or Option/Alt-click on the cell — unpins.\n */\nexport function ControlMatrix({\n title,\n stance,\n tone,\n schema,\n columns,\n rows,\n config,\n auto,\n setConfig,\n onColumnClick,\n inheritHint,\n className,\n}: ControlMatrixProps): ReactElement {\n const fallback = columns[0];\n const hintFor =\n inheritHint ?? ((_: ControlMatrixColumn) => (fallback ? `from ${nameOf(fallback)}` : ''));\n const [open, setOpen] = useState<OpenCell | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const { anchor, portalProps } = useOverlayPortal();\n\n const leafAt = (path: string): PrefLeaf | undefined => {\n const node = schemaNodeAtPath(schema.group, path);\n return node && isPrefLeaf(node) ? node : undefined;\n };\n\n const rowSpecs = rows.map((row) => {\n const leaves = columns.map((column) => leafAt(`${column.key}.${row.key}`));\n const named = leaves.find((leaf) => leaf !== undefined);\n return { row, leaves, label: row.label ?? named?.name ?? row.key, about: named?.description };\n });\n\n const table = (\n <div className={className ? `lk-control-matrix ${className}` : 'lk-control-matrix'}>\n {anchor}\n <table className=\"lk-control-matrix__table\">\n <thead>\n <tr>\n <td className=\"lk-control-matrix__corner\" />\n {columns.map((column, i) => (\n <th\n key={column.key}\n scope=\"col\"\n className={i === 0 ? 'lk-control-matrix__head is-first' : 'lk-control-matrix__head'}\n >\n <ColumnHeader column={column} onClick={onColumnClick} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rowSpecs.map(({ row, leaves, label, about }) => (\n <tr key={row.key}>\n <th scope=\"row\" className=\"lk-control-matrix__label\">\n <span className=\"lk-control-matrix__label-text\">{label}</span>\n {about ? <PropertyHelp label={label} description={about} /> : null}\n </th>\n {columns.map((column, i) => {\n const path = `${column.key}.${row.key}`;\n const leaf = leaves[i];\n if (!leaf) {\n return (\n <td key={column.key} className=\"lk-control-matrix__cell is-missing\">\n <span role=\"img\" aria-label={`${nameOf(column)} has no ${label}`}>\n —\n </span>\n </td>\n );\n }\n const first = i === 0;\n const inherited = !first && auto.has(path);\n return (\n <td\n key={column.key}\n className={\n inherited ? 'lk-control-matrix__cell is-inherited' : 'lk-control-matrix__cell'\n }\n >\n <Cell\n path={path}\n leaf={leaf}\n value={valueAtPath(config, path)}\n name={`${nameOf(column)} ${label}`}\n hint={inherited ? hintFor(column) : undefined}\n canUnpin={!first && !inherited}\n setConfig={setConfig}\n onOpen={(el) => {\n triggerRef.current = el;\n setOpen({ path, leaf, column, first, label });\n }}\n />\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n <RACPopover\n triggerRef={triggerRef}\n isOpen={open !== null}\n onOpenChange={(next) => {\n if (!next) setOpen(null);\n }}\n placement=\"bottom\"\n className=\"lk-control-matrix__popover\"\n data-weasel-overlay=\"\"\n {...portalProps}\n >\n {open ? (\n <RACDialog\n className=\"lk-control-matrix__editor\"\n aria-label={`${nameOf(open.column)} ${open.label}`}\n >\n <PropertyList pack=\"one-up\">\n <ControlRow\n path={open.path}\n leaf={open.leaf}\n resolved={schema}\n config={config}\n shown={config}\n setConfig={setConfig}\n pack=\"one-up\"\n auto={NO_AUTO}\n setRowAuto={noop}\n />\n </PropertyList>\n {clearable(open.leaf) ? (\n <div className=\"lk-control-matrix__editor-actions\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!valueAtPath(config, open.path) || auto.has(open.path)}\n onClick={() => setConfig(open.path, null)}\n >\n Clear\n </Button>\n </div>\n ) : null}\n {open.first ? null : (\n <div className=\"lk-control-matrix__editor-actions\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={auto.has(open.path)}\n tooltip={`Inherit ${hintFor(open.column)}`}\n onClick={() => setConfig(open.path, autoValue)}\n >\n Inherit\n </Button>\n </div>\n )}\n </RACDialog>\n ) : null}\n </RACPopover>\n </div>\n );\n\n if (title === undefined && stance === undefined && tone === undefined) return table;\n return (\n <PropertyPanel title={title} stance={stance} tone={tone}>\n {table}\n </PropertyPanel>\n );\n}\n\nfunction ColumnHeader({\n column,\n onClick,\n}: {\n column: ControlMatrixColumn;\n onClick?: (column: ControlMatrixColumn) => void;\n}) {\n const name = nameOf(column);\n if (!onClick) {\n return column.title && column.title !== column.label ? (\n <abbr title={column.title} className=\"lk-control-matrix__head-text\">\n {column.label}\n </abbr>\n ) : (\n <span className=\"lk-control-matrix__head-text\">{column.label}</span>\n );\n }\n return (\n <TooltipTrigger>\n <Focusable>\n <button\n type=\"button\"\n className=\"lk-control-matrix__head-button\"\n aria-label={name}\n onClick={() => onClick(column)}\n >\n {column.label}\n </button>\n </Focusable>\n <Tooltip>{name}</Tooltip>\n </TooltipTrigger>\n );\n}\n\n/** A color leaf whose default is empty: unset is a value of its own, not black. */\nconst clearable = (leaf: PrefLeaf): boolean => leaf.kind === 'color' && leaf.default === '';\n\n/** The number of decimals a step implies: `0.05` shows two, `1` none. */\nfunction decimalsOf(step: number | undefined): number {\n if (step === undefined || !Number.isFinite(step) || step <= 0) return 0;\n const text = String(step);\n const exp = /e-(\\d+)$/.exec(text);\n if (exp) return Number(exp[1]);\n const dot = text.indexOf('.');\n return dot === -1 ? 0 : text.length - dot - 1;\n}\n\n/** What a cell shows of a value it opens a popover to edit. */\nfunction summaryOf(field: PropertyControlProps | null, value: unknown): ReactNode {\n if (field?.kind === 'number') {\n return typeof field.value === 'number' ? field.value.toFixed(decimalsOf(field.step)) : '—';\n }\n if (field?.kind === 'enum') {\n const option = field.options.find((o) => o.value === field.value);\n if (!option) return '—';\n return typeof option.glyph === 'string' ? option.glyph : option.label;\n }\n if (field?.kind === 'string') return field.value || '—';\n return summarizeValue(value);\n}\n\nfunction Cell({\n path,\n leaf,\n value,\n name,\n hint,\n canUnpin,\n setConfig,\n onOpen,\n}: {\n path: string;\n leaf: PrefLeaf;\n value: unknown;\n /** The cell's accessible name: column and row. */\n name: string;\n /** Present while the cell inherits: where from. */\n hint?: string;\n canUnpin: boolean;\n setConfig: (path: string, value: unknown) => void;\n onOpen: (el: HTMLElement) => void;\n}) {\n const shown = value ?? leaf.default;\n const write = (next: unknown): void => setConfig(path, next);\n const field = isBuiltinToolPref(leaf)\n ? prefFieldProps(leaf, { value: shown, setValue: write })\n : null;\n const label = hint ? `${name}, ${hint}` : name;\n\n // Option/Alt-click hands a pinned cell back to the fallback, and does nothing\n // else on any cell — it must not also flip or open what it lands on.\n const unpinned = (e: MouseEvent): boolean => {\n if (!e.altKey) return false;\n e.preventDefault();\n if (canUnpin) setConfig(path, autoValue);\n return true;\n };\n\n // The shape `Focusable` asks of the element it makes a tooltip trigger.\n let control: ReactElement<DOMAttributes<HTMLElement>, string>;\n if (field?.kind === 'boolean') {\n const on = field.value === true;\n control = (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={on}\n aria-label={label}\n className=\"lk-control-matrix__switch\"\n onClick={(e) => {\n if (!unpinned(e)) field.onChange(!on);\n }}\n >\n <span className=\"lk-control-matrix__track\" aria-hidden=\"true\">\n <span className=\"lk-control-matrix__thumb\" />\n </span>\n </button>\n );\n } else if (field?.kind === 'color' && !clearable(leaf)) {\n const stored =\n typeof field.value === 'string' && field.value !== '' ? toHex8(field.value) : '#000000ff';\n control = (\n <input\n type=\"color\"\n aria-label={label}\n className=\"lk-control-matrix__swatch\"\n value={stored.slice(0, 7)}\n onClick={(e) => {\n unpinned(e);\n }}\n onChange={(e) => {\n const rgb = e.currentTarget.value;\n field.onChange(field.alpha ? withAlpha01(rgb, getAlpha01(stored)) : rgb);\n }}\n />\n );\n } else if (field?.kind === 'color') {\n // A color that may be unset opens the popover, which is the only place it can be cleared.\n const set = typeof field.value === 'string' && field.value !== '';\n control = (\n <button\n type=\"button\"\n aria-label={set ? label : `${label}, unset`}\n aria-haspopup=\"dialog\"\n className=\"lk-control-matrix__value\"\n onClick={(e) => {\n if (!unpinned(e)) onOpen(e.currentTarget);\n }}\n >\n <span\n className={set ? 'lk-control-matrix__chip' : 'lk-control-matrix__chip is-unset'}\n style={set ? ({ '--lk-chip': field.value } as CSSProperties) : undefined}\n aria-hidden=\"true\"\n />\n </button>\n );\n } else {\n const valueClass =\n field?.kind === 'number' ? 'lk-control-matrix__value is-number' : 'lk-control-matrix__value';\n control = (\n <button\n type=\"button\"\n aria-label={label}\n aria-haspopup=\"dialog\"\n className={valueClass}\n onClick={(e) => {\n if (!unpinned(e)) onOpen(e.currentTarget);\n }}\n >\n {summaryOf(field, shown)}\n </button>\n );\n }\n\n if (!hint) return control;\n return (\n <TooltipTrigger>\n <Focusable>{control}</Focusable>\n <Tooltip>{hint}</Tooltip>\n </TooltipTrigger>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/controls/ControlMatrix.tsx"],"names":["auto","l","c","i","RACPopover","RACDialog","ae","h"],"mappings":"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","file":"chunk-HBGH344L.js","sourcesContent":["import { getAlpha01, isBuiltinToolPref, toHex8, withAlpha01 } from '@weasel-js/core';\nimport {\n Button,\n Focusable,\n isPrefLeaf,\n type PrefLeaf,\n type PropertyControlProps,\n PropertyHelp,\n PropertyList,\n PropertyPanel,\n prefFieldProps,\n type StanceProps,\n Tooltip,\n TooltipTrigger,\n useOverlayPortal,\n} from '@weasel-js/ui';\nimport {\n type CSSProperties,\n type DOMAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n useRef,\n useState,\n} from 'react';\nimport { Dialog as RACDialog, Popover as RACPopover } from 'react-aria-components';\nimport { auto as autoValue } from '../config/auto';\nimport { schemaNodeAtPath, valueAtPath } from '../config/path';\nimport type { ResolvedConfig } from '../config/types';\nimport { ControlRow } from './ControlPanel';\nimport { summarizeValue } from './inDialog';\n\n/** One column of a {@link ControlMatrix}: a config group, every one the same shape. */\nexport interface ControlMatrixColumn {\n /** Config path prefix of this column's group, e.g. `'looks.window'`. */\n key: string;\n /** Short header shown at narrow width, e.g. `'Win'`. */\n label: string;\n /** Full name, for the header's tooltip and accessible name, e.g. `'Window'`. */\n title?: string;\n}\n\n/** One row of a {@link ControlMatrix}: a setting every column's group may hold. */\nexport interface ControlMatrixRow {\n /** Path of the setting inside each column's group, e.g. `'background'` or `'fill.colorBy'`. */\n key: string;\n /** Row label. Defaults to the leaf's own name from the schema. */\n label?: string;\n}\n\nexport interface ControlMatrixProps extends StanceProps {\n /** Heads the matrix. With `title`, `stance` or `tone` given it sits in a\n * `<PropertyPanel>`, as a `ControlPanel` does. */\n title?: ReactNode;\n /** The whole resolved schema. A cell's leaf is looked up at\n * `${column.key}.${row.key}`; a cell with none draws a dash. */\n schema: ResolvedConfig;\n /** The scopes. The first is the fallback the others inherit from: its cells\n * never inherit, and its header is emphasized. */\n columns: readonly ControlMatrixColumn[];\n rows: readonly ControlMatrixRow[];\n /** Values to show, already resolved: an inherited cell's value is the one it\n * inherits. */\n config: Record<string, unknown>;\n /** Full dotted paths whose cells inherit, drawn ghosted. */\n auto: ReadonlySet<string>;\n /** Writes a value, which pins the cell, or labkit's `auto` sentinel, which\n * unpins it. */\n setConfig: (path: string, value: unknown) => void;\n /** Clicking a column header. Without it the headers are plain text. */\n onColumnClick?: (column: ControlMatrixColumn) => void;\n /** What an inherited cell's tooltip says. Defaults to `from <first column>`. */\n inheritHint?: (column: ControlMatrixColumn) => string;\n className?: string;\n}\n\nconst NO_AUTO: ReadonlySet<string> = new Set();\nconst noop = (): void => {};\n\nconst nameOf = (column: ControlMatrixColumn): string => column.title ?? column.label;\n\n/** The open popover: which cell, and the element it hangs off. */\ninterface OpenCell {\n path: string;\n leaf: PrefLeaf;\n column: ControlMatrixColumn;\n first: boolean;\n label: string;\n}\n\n/**\n * One setting across several config groups of the same shape: settings down\n * the side, scopes across the top, a compact read-only cell at each crossing.\n * A cell inherits from the first column until it is pinned; inherited cells\n * draw ghosted. Click a cell to edit it with the control a `ControlPanel` would\n * draw (a boolean flips and a color opens its picker in place); editing pins,\n * and the popover's Inherit button — or Option/Alt-click on the cell — unpins.\n */\nexport function ControlMatrix({\n title,\n stance,\n tone,\n schema,\n columns,\n rows,\n config,\n auto,\n setConfig,\n onColumnClick,\n inheritHint,\n className,\n}: ControlMatrixProps): ReactElement {\n const fallback = columns[0];\n const hintFor =\n inheritHint ?? ((_: ControlMatrixColumn) => (fallback ? `from ${nameOf(fallback)}` : ''));\n const [open, setOpen] = useState<OpenCell | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const { anchor, portalProps } = useOverlayPortal();\n\n const leafAt = (path: string): PrefLeaf | undefined => {\n const node = schemaNodeAtPath(schema.group, path);\n return node && isPrefLeaf(node) ? node : undefined;\n };\n\n const rowSpecs = rows.map((row) => {\n const leaves = columns.map((column) => leafAt(`${column.key}.${row.key}`));\n const named = leaves.find((leaf) => leaf !== undefined);\n return { row, leaves, label: row.label ?? named?.name ?? row.key, about: named?.description };\n });\n\n const table = (\n <div className={className ? `lk-control-matrix ${className}` : 'lk-control-matrix'}>\n {anchor}\n <table className=\"lk-control-matrix__table\">\n <thead>\n <tr>\n <td className=\"lk-control-matrix__corner\" />\n {columns.map((column, i) => (\n <th\n key={column.key}\n scope=\"col\"\n className={i === 0 ? 'lk-control-matrix__head is-first' : 'lk-control-matrix__head'}\n >\n <ColumnHeader column={column} onClick={onColumnClick} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rowSpecs.map(({ row, leaves, label, about }) => (\n <tr key={row.key}>\n <th scope=\"row\" className=\"lk-control-matrix__label\">\n <span className=\"lk-control-matrix__label-text\">{label}</span>\n {about ? <PropertyHelp label={label} description={about} /> : null}\n </th>\n {columns.map((column, i) => {\n const path = `${column.key}.${row.key}`;\n const leaf = leaves[i];\n if (!leaf) {\n return (\n <td key={column.key} className=\"lk-control-matrix__cell is-missing\">\n <span role=\"img\" aria-label={`${nameOf(column)} has no ${label}`}>\n —\n </span>\n </td>\n );\n }\n const first = i === 0;\n const inherited = !first && auto.has(path);\n return (\n <td\n key={column.key}\n className={\n inherited ? 'lk-control-matrix__cell is-inherited' : 'lk-control-matrix__cell'\n }\n >\n <Cell\n path={path}\n leaf={leaf}\n value={valueAtPath(config, path)}\n name={`${nameOf(column)} ${label}`}\n hint={inherited ? hintFor(column) : undefined}\n canUnpin={!first && !inherited}\n setConfig={setConfig}\n onOpen={(el) => {\n triggerRef.current = el;\n setOpen({ path, leaf, column, first, label });\n }}\n />\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n <RACPopover\n triggerRef={triggerRef}\n isOpen={open !== null}\n onOpenChange={(next) => {\n if (!next) setOpen(null);\n }}\n placement=\"bottom\"\n className=\"lk-control-matrix__popover\"\n data-weasel-overlay=\"\"\n {...portalProps}\n >\n {open ? (\n <RACDialog\n className=\"lk-control-matrix__editor\"\n aria-label={`${nameOf(open.column)} ${open.label}`}\n >\n <PropertyList pack=\"one-up\">\n <ControlRow\n path={open.path}\n leaf={open.leaf}\n resolved={schema}\n config={config}\n shown={config}\n setConfig={setConfig}\n pack=\"one-up\"\n auto={NO_AUTO}\n setRowAuto={noop}\n />\n </PropertyList>\n {clearable(open.leaf) ? (\n <div className=\"lk-control-matrix__editor-actions\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!valueAtPath(config, open.path) || auto.has(open.path)}\n onClick={() => setConfig(open.path, null)}\n >\n Clear\n </Button>\n </div>\n ) : null}\n {open.first ? null : (\n <div className=\"lk-control-matrix__editor-actions\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={auto.has(open.path)}\n tooltip={`Inherit ${hintFor(open.column)}`}\n onClick={() => setConfig(open.path, autoValue)}\n >\n Inherit\n </Button>\n </div>\n )}\n </RACDialog>\n ) : null}\n </RACPopover>\n </div>\n );\n\n if (title === undefined && stance === undefined && tone === undefined) return table;\n return (\n <PropertyPanel title={title} stance={stance} tone={tone}>\n {table}\n </PropertyPanel>\n );\n}\n\nfunction ColumnHeader({\n column,\n onClick,\n}: {\n column: ControlMatrixColumn;\n onClick?: (column: ControlMatrixColumn) => void;\n}) {\n const name = nameOf(column);\n if (!onClick) {\n return column.title && column.title !== column.label ? (\n <abbr title={column.title} className=\"lk-control-matrix__head-text\">\n {column.label}\n </abbr>\n ) : (\n <span className=\"lk-control-matrix__head-text\">{column.label}</span>\n );\n }\n return (\n <TooltipTrigger>\n <Focusable>\n <button\n type=\"button\"\n className=\"lk-control-matrix__head-button\"\n aria-label={name}\n onClick={() => onClick(column)}\n >\n {column.label}\n </button>\n </Focusable>\n <Tooltip>{name}</Tooltip>\n </TooltipTrigger>\n );\n}\n\n/** A color leaf whose default is empty: unset is a value of its own, not black. */\nconst clearable = (leaf: PrefLeaf): boolean => leaf.kind === 'color' && leaf.default === '';\n\n/** The number of decimals a step implies: `0.05` shows two, `1` none. */\nfunction decimalsOf(step: number | undefined): number {\n if (step === undefined || !Number.isFinite(step) || step <= 0) return 0;\n const text = String(step);\n const exp = /e-(\\d+)$/.exec(text);\n if (exp) return Number(exp[1]);\n const dot = text.indexOf('.');\n return dot === -1 ? 0 : text.length - dot - 1;\n}\n\n/** What a cell shows of a value it opens a popover to edit. */\nfunction summaryOf(field: PropertyControlProps | null, value: unknown): ReactNode {\n if (field?.kind === 'number') {\n return typeof field.value === 'number' ? field.value.toFixed(decimalsOf(field.step)) : '—';\n }\n if (field?.kind === 'enum') {\n const option = field.options.find((o) => o.value === field.value);\n if (!option) return '—';\n return typeof option.glyph === 'string' ? option.glyph : option.label;\n }\n if (field?.kind === 'string') return field.value || '—';\n return summarizeValue(value);\n}\n\nfunction Cell({\n path,\n leaf,\n value,\n name,\n hint,\n canUnpin,\n setConfig,\n onOpen,\n}: {\n path: string;\n leaf: PrefLeaf;\n value: unknown;\n /** The cell's accessible name: column and row. */\n name: string;\n /** Present while the cell inherits: where from. */\n hint?: string;\n canUnpin: boolean;\n setConfig: (path: string, value: unknown) => void;\n onOpen: (el: HTMLElement) => void;\n}) {\n const shown = value ?? leaf.default;\n const write = (next: unknown): void => setConfig(path, next);\n const field = isBuiltinToolPref(leaf)\n ? prefFieldProps(leaf, { value: shown, setValue: write })\n : null;\n const label = hint ? `${name}, ${hint}` : name;\n\n // Option/Alt-click hands a pinned cell back to the fallback, and does nothing\n // else on any cell — it must not also flip or open what it lands on.\n const unpinned = (e: MouseEvent): boolean => {\n if (!e.altKey) return false;\n e.preventDefault();\n if (canUnpin) setConfig(path, autoValue);\n return true;\n };\n\n // The shape `Focusable` asks of the element it makes a tooltip trigger.\n let control: ReactElement<DOMAttributes<HTMLElement>, string>;\n if (field?.kind === 'boolean') {\n const on = field.value === true;\n control = (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={on}\n aria-label={label}\n className=\"lk-control-matrix__switch\"\n onClick={(e) => {\n if (!unpinned(e)) field.onChange(!on);\n }}\n >\n <span className=\"lk-control-matrix__track\" aria-hidden=\"true\">\n <span className=\"lk-control-matrix__thumb\" />\n </span>\n </button>\n );\n } else if (field?.kind === 'color' && !clearable(leaf)) {\n const stored =\n typeof field.value === 'string' && field.value !== '' ? toHex8(field.value) : '#000000ff';\n control = (\n <input\n type=\"color\"\n aria-label={label}\n className=\"lk-control-matrix__swatch\"\n value={stored.slice(0, 7)}\n onClick={(e) => {\n unpinned(e);\n }}\n onChange={(e) => {\n const rgb = e.currentTarget.value;\n field.onChange(field.alpha ? withAlpha01(rgb, getAlpha01(stored)) : rgb);\n }}\n />\n );\n } else if (field?.kind === 'color') {\n // A color that may be unset opens the popover, which is the only place it can be cleared.\n const set = typeof field.value === 'string' && field.value !== '';\n control = (\n <button\n type=\"button\"\n aria-label={set ? label : `${label}, unset`}\n aria-haspopup=\"dialog\"\n className=\"lk-control-matrix__value\"\n onClick={(e) => {\n if (!unpinned(e)) onOpen(e.currentTarget);\n }}\n >\n <span\n className={set ? 'lk-control-matrix__chip' : 'lk-control-matrix__chip is-unset'}\n style={set ? ({ '--lk-chip': field.value } as CSSProperties) : undefined}\n aria-hidden=\"true\"\n />\n </button>\n );\n } else {\n const valueClass =\n field?.kind === 'number' ? 'lk-control-matrix__value is-number' : 'lk-control-matrix__value';\n control = (\n <button\n type=\"button\"\n aria-label={label}\n aria-haspopup=\"dialog\"\n className={valueClass}\n onClick={(e) => {\n if (!unpinned(e)) onOpen(e.currentTarget);\n }}\n >\n {summaryOf(field, shown)}\n </button>\n );\n }\n\n if (!hint) return control;\n return (\n <TooltipTrigger>\n <Focusable>{control}</Focusable>\n <Tooltip>{hint}</Tooltip>\n </TooltipTrigger>\n );\n}\n"]}
@@ -9762,63 +9762,63 @@ function p16(p32) {
9762
9762
  // ../ui/dist/chunks/checkbox.module-DLQV9tMX.js
9763
9763
  var e21 = { checkbox: "_checkbox_1uuoi_4" };
9764
9764
  var N6 = {
9765
- panel: "_panel_hs84t_9",
9766
- list: "_list_hs84t_3",
9767
- row: "_row_hs84t_4",
9768
- group: "_group_hs84t_4",
9769
- subpanel: "_subpanel_hs84t_3",
9770
- readout: "_readout_hs84t_42 _numeric_zns9n_4",
9771
- readoutInput: "_readoutInput_hs84t_43 _numeric_zns9n_4",
9772
- panelTitle: "_panelTitle_hs84t_72",
9773
- panelHeader: "_panelHeader_hs84t_84",
9774
- panelActions: "_panelActions_hs84t_97",
9775
- listPairs: "_listPairs_hs84t_3",
9776
- rowColor: "_rowColor_hs84t_4",
9777
- span: "_span_hs84t_505",
9778
- listOneUp: "_listOneUp_hs84t_513",
9779
- densityTight: "_densityTight_hs84t_524",
9780
- densityNormal: "_densityNormal_hs84t_536",
9781
- densityRoomy: "_densityRoomy_hs84t_548",
9782
- alignStart: "_alignStart_hs84t_574",
9783
- alignCenter: "_alignCenter_hs84t_580",
9784
- alignEnd: "_alignEnd_hs84t_586",
9785
- alignBaseline: "_alignBaseline_hs84t_592",
9786
- rowInline: "_rowInline_hs84t_623",
9787
- rowLabel: "_rowLabel_hs84t_629",
9788
- rowBlock: "_rowBlock_hs84t_654",
9789
- rowCheckbox: "_rowCheckbox_hs84t_655",
9790
- readoutAfter: "_readoutAfter_hs84t_674",
9791
- readoutText: "_readoutText_hs84t_685 _numeric_zns9n_4",
9792
- help: "_help_hs84t_699",
9793
- autoToggle: "_autoToggle_hs84t_733",
9794
- readoutGroup: "_readoutGroup_hs84t_680",
9795
- readoutUnit: "_readoutUnit_hs84t_812",
9796
- fieldUnitGroup: "_fieldUnitGroup_hs84t_837",
9797
- numberField: "_numberField_hs84t_845",
9798
- colorField: "_colorField_hs84t_898",
9799
- toggleBar: "_toggleBar_hs84t_911",
9800
- textField: "_textField_hs84t_929",
9801
- select: "_select_hs84t_942",
9802
- dialogTrigger: "_dialogTrigger_hs84t_1063",
9803
- dialogSummary: "_dialogSummary_hs84t_1098",
9804
- dialogGlyph: "_dialogGlyph_hs84t_1106",
9805
- dimmed: "_dimmed_hs84t_1259",
9806
- cellReadout: "_cellReadout_hs84t_1265",
9807
- textarea: "_textarea_hs84t_1271",
9808
- groupHeadRow: "_groupHeadRow_hs84t_1307",
9809
- groupTitle: "_groupTitle_hs84t_1315",
9810
- groupLeading: "_groupLeading_hs84t_1321",
9811
- groupActions: "_groupActions_hs84t_1322",
9812
- note: "_note_hs84t_1519",
9813
- groupTitleMid: "_groupTitleMid_hs84t_1549",
9814
- groupTwisty: "_groupTwisty_hs84t_1555",
9815
- groupBody: "_groupBody_hs84t_4",
9816
- groupPairs: "_groupPairs_hs84t_1584",
9817
- groupOneUp: "_groupOneUp_hs84t_1597",
9818
- subpanelTitle: "_subpanelTitle_hs84t_1737",
9819
- rowAuto: "_rowAuto_hs84t_1774",
9820
- rowAutoDimmed: "_rowAutoDimmed_hs84t_1784",
9821
- rowHint: "_rowHint_hs84t_1789"
9765
+ panel: "_panel_ewr7g_9",
9766
+ list: "_list_ewr7g_3",
9767
+ row: "_row_ewr7g_4",
9768
+ group: "_group_ewr7g_4",
9769
+ subpanel: "_subpanel_ewr7g_3",
9770
+ readout: "_readout_ewr7g_42 _numeric_zns9n_4",
9771
+ readoutInput: "_readoutInput_ewr7g_43 _numeric_zns9n_4",
9772
+ panelTitle: "_panelTitle_ewr7g_72",
9773
+ panelHeader: "_panelHeader_ewr7g_84",
9774
+ panelActions: "_panelActions_ewr7g_97",
9775
+ listPairs: "_listPairs_ewr7g_3",
9776
+ rowColor: "_rowColor_ewr7g_4",
9777
+ span: "_span_ewr7g_505",
9778
+ listOneUp: "_listOneUp_ewr7g_513",
9779
+ densityTight: "_densityTight_ewr7g_524",
9780
+ densityNormal: "_densityNormal_ewr7g_536",
9781
+ densityRoomy: "_densityRoomy_ewr7g_548",
9782
+ alignStart: "_alignStart_ewr7g_574",
9783
+ alignCenter: "_alignCenter_ewr7g_580",
9784
+ alignEnd: "_alignEnd_ewr7g_586",
9785
+ alignBaseline: "_alignBaseline_ewr7g_592",
9786
+ rowInline: "_rowInline_ewr7g_623",
9787
+ rowLabel: "_rowLabel_ewr7g_629",
9788
+ rowBlock: "_rowBlock_ewr7g_654",
9789
+ rowCheckbox: "_rowCheckbox_ewr7g_655",
9790
+ readoutAfter: "_readoutAfter_ewr7g_674",
9791
+ readoutText: "_readoutText_ewr7g_685 _numeric_zns9n_4",
9792
+ help: "_help_ewr7g_699",
9793
+ autoToggle: "_autoToggle_ewr7g_733",
9794
+ readoutGroup: "_readoutGroup_ewr7g_680",
9795
+ readoutUnit: "_readoutUnit_ewr7g_812",
9796
+ fieldUnitGroup: "_fieldUnitGroup_ewr7g_837",
9797
+ numberField: "_numberField_ewr7g_845",
9798
+ colorField: "_colorField_ewr7g_898",
9799
+ toggleBar: "_toggleBar_ewr7g_911",
9800
+ textField: "_textField_ewr7g_929",
9801
+ select: "_select_ewr7g_942",
9802
+ dialogTrigger: "_dialogTrigger_ewr7g_1063",
9803
+ dialogSummary: "_dialogSummary_ewr7g_1098",
9804
+ dialogGlyph: "_dialogGlyph_ewr7g_1106",
9805
+ dimmed: "_dimmed_ewr7g_1259",
9806
+ cellReadout: "_cellReadout_ewr7g_1265",
9807
+ textarea: "_textarea_ewr7g_1271",
9808
+ groupHeadRow: "_groupHeadRow_ewr7g_1307",
9809
+ groupTitle: "_groupTitle_ewr7g_1315",
9810
+ groupLeading: "_groupLeading_ewr7g_1321",
9811
+ groupActions: "_groupActions_ewr7g_1322",
9812
+ note: "_note_ewr7g_1519",
9813
+ groupTitleMid: "_groupTitleMid_ewr7g_1549",
9814
+ groupTwisty: "_groupTwisty_ewr7g_1555",
9815
+ groupBody: "_groupBody_ewr7g_4",
9816
+ groupPairs: "_groupPairs_ewr7g_1584",
9817
+ groupOneUp: "_groupOneUp_ewr7g_1597",
9818
+ subpanelTitle: "_subpanelTitle_ewr7g_1737",
9819
+ rowAuto: "_rowAuto_ewr7g_1774",
9820
+ rowAutoInherited: "_rowAutoInherited_ewr7g_1784 _inherited_40bjp_4",
9821
+ rowHint: "_rowHint_ewr7g_1789"
9822
9822
  };
9823
9823
  var P6 = {
9824
9824
  tight: N6.densityTight,
@@ -9897,7 +9897,7 @@ function L6({ label: e31, readout: t39, description: n45, variant: r49 = "defaul
9897
9897
  g25,
9898
9898
  y23,
9899
9899
  a56 && N6.span,
9900
- f34 && (m29 === "dimmed" ? N6.rowAutoDimmed : N6.rowAuto)
9900
+ f34 && (m29 === "dimmed" ? N6.rowAutoInherited : N6.rowAuto)
9901
9901
  ].filter(Boolean).join(" "), {
9902
9902
  density: u38,
9903
9903
  align: d35
@@ -15579,5 +15579,5 @@ function Vi({ load: e31, debounceMs: t39 = 150, minLength: n45 = 0 }) {
15579
15579
  }
15580
15580
 
15581
15581
  export { $, B, B3 as B2, C12 as C2, C15 as C3, D6 as D, D9 as D2, G, H, H4 as H2, L4 as L, L6 as L2, MINUS_SIGN, Me, O5 as O2, O11 as O3, Q, R4 as R, R5 as R2, S8 as S, S13 as S2, Se, U, V, Vi, X, X6 as X2, Xt, Z, Z6 as Z2, Ze, _13 as _, a, a10 as a2, a12 as a3, a15 as a4, a23 as a5, a30 as a6, a37 as a7, a38 as a8, a41 as a9, ae, ae3 as ae2, b2, b14 as b3, b17 as b4, c7 as c, c10 as c2, c19 as c3, c27 as c4, c39 as c5, c29 as c6, c30 as c7, c41 as c8, d4 as d, d6 as d2, d10 as d3, de2 as de, e3 as e, f5 as f, f6 as f2, f22 as f3, fe, fe3 as fe2, formatNumber, h9 as h2, h16 as h3, h18 as h4, i, i11 as i3, i24 as i4, i50 as i5, ie, j6 as j, j9 as j2, j11 as j3, j12 as j4, je, k7 as k2, l, l31 as l10, l34 as l11, l3 as l2, l4 as l3, l9 as l4, l20 as l5, l24 as l6, l25 as l7, l38 as l8, l28 as l9, m4 as m, n2 as n, n4 as n2, n7 as n3, n15 as n4, n26 as n5, n32 as n6, n41 as n7, n35 as n8, n39 as n9, ne, o12 as o2, o31 as o3, o34 as o4, o37 as o5, oe2 as oe, oe3 as oe2, p4 as p, p27 as p2, p20 as p3, p23 as p4, r11 as r, r28 as r2, r34 as r3, r36 as r4, r45 as r5, re, s10 as s, s11 as s2, s27 as s3, s32 as s4, se2 as se, t4 as t, u2 as u, u13 as u2, u19 as u3, u25 as u4, v13 as v, v17 as v2, w3 as w, x5 as x, x13 as x2, xe, xe4 as xe2, y8 as y, z };
15582
- //# sourceMappingURL=chunk-U6UQVGFP.js.map
15583
- //# sourceMappingURL=chunk-U6UQVGFP.js.map
15582
+ //# sourceMappingURL=chunk-IRMPZIYU.js.map
15583
+ //# sourceMappingURL=chunk-IRMPZIYU.js.map