vastgrid 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +175 -13
- package/dist/canvas/geometry.d.ts +92 -0
- package/dist/canvas/geometry.d.ts.map +1 -0
- package/dist/canvas/geometry.js +197 -0
- package/dist/canvas/geometry.js.map +1 -0
- package/dist/canvas/grid-canvas.d.ts +161 -0
- package/dist/canvas/grid-canvas.d.ts.map +1 -0
- package/dist/canvas/grid-canvas.js +1146 -0
- package/dist/canvas/grid-canvas.js.map +1 -0
- package/dist/canvas/hooks.d.ts +61 -0
- package/dist/canvas/hooks.d.ts.map +1 -0
- package/dist/canvas/hooks.js +2 -0
- package/dist/canvas/hooks.js.map +1 -0
- package/dist/canvas/keys.d.ts +26 -0
- package/dist/canvas/keys.d.ts.map +1 -0
- package/dist/canvas/keys.js +133 -0
- package/dist/canvas/keys.js.map +1 -0
- package/dist/canvas/layout.d.ts +26 -0
- package/dist/canvas/layout.d.ts.map +1 -0
- package/dist/canvas/layout.js +73 -0
- package/dist/canvas/layout.js.map +1 -0
- package/dist/canvas/scroll.d.ts +31 -0
- package/dist/canvas/scroll.d.ts.map +1 -0
- package/dist/canvas/scroll.js +111 -0
- package/dist/canvas/scroll.js.map +1 -0
- package/dist/canvas/text.d.ts +23 -0
- package/dist/canvas/text.d.ts.map +1 -0
- package/dist/canvas/text.js +142 -0
- package/dist/canvas/text.js.map +1 -0
- package/dist/{theme.d.ts → canvas/theme.d.ts} +8 -0
- package/dist/canvas/theme.d.ts.map +1 -0
- package/dist/canvas/theme.js +62 -0
- package/dist/canvas/theme.js.map +1 -0
- package/dist/core/cache.d.ts +48 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +222 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/checked.d.ts +20 -0
- package/dist/core/checked.d.ts.map +1 -0
- package/dist/core/checked.js +61 -0
- package/dist/core/checked.js.map +1 -0
- package/dist/core/client.d.ts +33 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +103 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/conditions.d.ts +48 -0
- package/dist/core/conditions.d.ts.map +1 -0
- package/dist/core/conditions.js +105 -0
- package/dist/core/conditions.js.map +1 -0
- package/dist/core/evaluate.d.ts +20 -0
- package/dist/core/evaluate.d.ts.map +1 -0
- package/dist/core/evaluate.js +210 -0
- package/dist/core/evaluate.js.map +1 -0
- package/dist/core/filters.d.ts +51 -0
- package/dist/core/filters.d.ts.map +1 -0
- package/dist/core/filters.js +303 -0
- package/dist/core/filters.js.map +1 -0
- package/dist/core/format.d.ts +14 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +303 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/measures.d.ts +26 -0
- package/dist/core/measures.d.ts.map +1 -0
- package/dist/core/measures.js +105 -0
- package/dist/core/measures.js.map +1 -0
- package/dist/core/request-ids.d.ts +20 -0
- package/dist/core/request-ids.d.ts.map +1 -0
- package/dist/core/request-ids.js +55 -0
- package/dist/core/request-ids.js.map +1 -0
- package/dist/core/rows.d.ts +79 -0
- package/dist/core/rows.d.ts.map +1 -0
- package/dist/core/rows.js +173 -0
- package/dist/core/rows.js.map +1 -0
- package/dist/core/store.d.ts +233 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +1162 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/totals.d.ts +24 -0
- package/dist/core/totals.d.ts.map +1 -0
- package/dist/core/totals.js +49 -0
- package/dist/core/totals.js.map +1 -0
- package/dist/core/trace.d.ts +7 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +26 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/transports.d.ts +50 -0
- package/dist/core/transports.d.ts.map +1 -0
- package/dist/core/transports.js +160 -0
- package/dist/core/transports.js.map +1 -0
- package/dist/core/types.d.ts +150 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +45 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core.d.ts +12 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +11 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/react/accessible-rows.d.ts +13 -0
- package/dist/react/accessible-rows.d.ts.map +1 -0
- package/dist/react/accessible-rows.js +320 -0
- package/dist/react/accessible-rows.js.map +1 -0
- package/dist/react/cell-editor.d.ts +22 -0
- package/dist/react/cell-editor.d.ts.map +1 -0
- package/dist/react/cell-editor.js +431 -0
- package/dist/react/cell-editor.js.map +1 -0
- package/dist/react/cell-menu.d.ts +18 -0
- package/dist/react/cell-menu.d.ts.map +1 -0
- package/dist/react/cell-menu.js +299 -0
- package/dist/react/cell-menu.js.map +1 -0
- package/dist/react/column-menu.d.ts +16 -0
- package/dist/react/column-menu.d.ts.map +1 -0
- package/dist/react/column-menu.js +1311 -0
- package/dist/react/column-menu.js.map +1 -0
- package/dist/react/columns-menu.d.ts +7 -0
- package/dist/react/columns-menu.d.ts.map +1 -0
- package/dist/react/columns-menu.js +249 -0
- package/dist/react/columns-menu.js.map +1 -0
- package/dist/react/conditions-menu.d.ts +10 -0
- package/dist/react/conditions-menu.d.ts.map +1 -0
- package/dist/react/conditions-menu.js +795 -0
- package/dist/react/conditions-menu.js.map +1 -0
- package/dist/react/context.d.ts +29 -0
- package/dist/react/context.d.ts.map +1 -0
- package/dist/react/context.js +18 -0
- package/dist/react/context.js.map +1 -0
- package/dist/react/data-grid.d.ts +79 -0
- package/dist/react/data-grid.d.ts.map +1 -0
- package/dist/react/data-grid.js +653 -0
- package/dist/react/data-grid.js.map +1 -0
- package/dist/react/detail-panel.d.ts +22 -0
- package/dist/react/detail-panel.d.ts.map +1 -0
- package/dist/react/detail-panel.js +242 -0
- package/dist/react/detail-panel.js.map +1 -0
- package/dist/react/export-menu.d.ts +11 -0
- package/dist/react/export-menu.d.ts.map +1 -0
- package/dist/react/export-menu.js +304 -0
- package/dist/react/export-menu.js.map +1 -0
- package/dist/react/find-bar.d.ts +11 -0
- package/dist/react/find-bar.d.ts.map +1 -0
- package/dist/react/find-bar.js +303 -0
- package/dist/react/find-bar.js.map +1 -0
- package/dist/react/format-form.d.ts +12 -0
- package/dist/react/format-form.d.ts.map +1 -0
- package/dist/react/format-form.js +863 -0
- package/dist/react/format-form.js.map +1 -0
- package/dist/react/formula-menu.d.ts +6 -0
- package/dist/react/formula-menu.d.ts.map +1 -0
- package/dist/react/formula-menu.js +343 -0
- package/dist/react/formula-menu.js.map +1 -0
- package/dist/react/grid-body.d.ts +33 -0
- package/dist/react/grid-body.d.ts.map +1 -0
- package/dist/react/grid-body.js +1389 -0
- package/dist/react/grid-body.js.map +1 -0
- package/dist/react/group-menu.d.ts +7 -0
- package/dist/react/group-menu.d.ts.map +1 -0
- package/dist/react/group-menu.js +508 -0
- package/dist/react/group-menu.js.map +1 -0
- package/dist/react/hooks.d.ts +33 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +161 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/messages.d.ts +180 -0
- package/dist/react/messages.d.ts.map +1 -0
- package/dist/react/messages.js +414 -0
- package/dist/react/messages.js.map +1 -0
- package/dist/react/save.d.ts +9 -0
- package/dist/react/save.d.ts.map +1 -0
- package/dist/react/save.js +102 -0
- package/dist/react/save.js.map +1 -0
- package/dist/react/static-rows.d.ts +9 -0
- package/dist/react/static-rows.d.ts.map +1 -0
- package/dist/react/static-rows.js +176 -0
- package/dist/react/static-rows.js.map +1 -0
- package/dist/react/status-bar.d.ts +12 -0
- package/dist/react/status-bar.d.ts.map +1 -0
- package/dist/react/status-bar.js +413 -0
- package/dist/react/status-bar.js.map +1 -0
- package/dist/react/toolbar-popover.d.ts +14 -0
- package/dist/react/toolbar-popover.d.ts.map +1 -0
- package/dist/react/toolbar-popover.js +143 -0
- package/dist/react/toolbar-popover.js.map +1 -0
- package/dist/react/toolbar.d.ts +13 -0
- package/dist/react/toolbar.d.ts.map +1 -0
- package/dist/react/toolbar.js +344 -0
- package/dist/react/toolbar.js.map +1 -0
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +45 -0
- package/dist/server.js.map +1 -0
- package/dist/styles.css +496 -316
- package/package.json +43 -18
- package/src/canvas/geometry.ts +197 -0
- package/src/canvas/grid-canvas.ts +1222 -0
- package/src/canvas/hooks.ts +61 -0
- package/src/canvas/keys.ts +96 -0
- package/src/canvas/layout.ts +77 -0
- package/src/canvas/scroll.ts +120 -0
- package/src/canvas/text.ts +155 -0
- package/src/{theme.ts → canvas/theme.ts} +14 -1
- package/src/core/cache.ts +247 -0
- package/src/core/checked.ts +64 -0
- package/src/core/client.ts +103 -0
- package/src/core/conditions.ts +89 -0
- package/src/core/evaluate.ts +221 -0
- package/src/core/filters.ts +268 -0
- package/src/core/format.ts +309 -0
- package/src/core/measures.ts +99 -0
- package/src/core/request-ids.ts +54 -0
- package/src/core/rows.ts +213 -0
- package/src/core/store.ts +1122 -0
- package/src/core/totals.ts +59 -0
- package/src/core/trace.ts +44 -0
- package/src/core/transports.ts +177 -0
- package/src/core/types.ts +168 -0
- package/src/core.ts +39 -0
- package/src/index.ts +24 -12
- package/src/react/accessible-rows.tsx +242 -0
- package/src/react/cell-editor.tsx +216 -0
- package/src/react/cell-menu.tsx +166 -0
- package/src/react/column-menu.tsx +619 -0
- package/src/react/columns-menu.tsx +116 -0
- package/src/react/conditions-menu.tsx +289 -0
- package/src/react/context.ts +33 -0
- package/src/react/data-grid.tsx +286 -0
- package/src/react/detail-panel.tsx +92 -0
- package/src/react/export-menu.tsx +112 -0
- package/src/react/find-bar.tsx +112 -0
- package/src/react/format-form.tsx +421 -0
- package/src/react/formula-menu.tsx +163 -0
- package/src/react/grid-body.tsx +744 -0
- package/src/react/group-menu.tsx +214 -0
- package/src/react/hooks.ts +104 -0
- package/src/react/messages.ts +556 -0
- package/src/react/save.ts +42 -0
- package/src/react/static-rows.tsx +59 -0
- package/src/react/status-bar.tsx +175 -0
- package/src/react/toolbar-popover.tsx +69 -0
- package/src/react/toolbar.tsx +152 -0
- package/src/server.ts +58 -0
- package/src/styles.css +496 -316
- package/dist/components/bars.d.ts +0 -14
- package/dist/components/bars.d.ts.map +0 -1
- package/dist/components/bars.js +0 -67
- package/dist/components/bars.js.map +0 -1
- package/dist/components/cell-inspector.d.ts +0 -11
- package/dist/components/cell-inspector.d.ts.map +0 -1
- package/dist/components/cell-inspector.js +0 -37
- package/dist/components/cell-inspector.js.map +0 -1
- package/dist/components/columns-panel.d.ts +0 -12
- package/dist/components/columns-panel.d.ts.map +0 -1
- package/dist/components/columns-panel.js +0 -11
- package/dist/components/columns-panel.js.map +0 -1
- package/dist/components/filter-panel.d.ts +0 -17
- package/dist/components/filter-panel.d.ts.map +0 -1
- package/dist/components/filter-panel.js +0 -165
- package/dist/components/filter-panel.js.map +0 -1
- package/dist/components/find-bar.d.ts +0 -9
- package/dist/components/find-bar.d.ts.map +0 -1
- package/dist/components/find-bar.js +0 -46
- package/dist/components/find-bar.js.map +0 -1
- package/dist/components/popover.d.ts +0 -38
- package/dist/components/popover.d.ts.map +0 -1
- package/dist/components/popover.js +0 -104
- package/dist/components/popover.js.map +0 -1
- package/dist/components/stats-panel.d.ts +0 -12
- package/dist/components/stats-panel.d.ts.map +0 -1
- package/dist/components/stats-panel.js +0 -40
- package/dist/components/stats-panel.js.map +0 -1
- package/dist/controller.d.ts +0 -218
- package/dist/controller.d.ts.map +0 -1
- package/dist/controller.js +0 -788
- package/dist/controller.js.map +0 -1
- package/dist/data-grid.d.ts +0 -51
- package/dist/data-grid.d.ts.map +0 -1
- package/dist/data-grid.js +0 -698
- package/dist/data-grid.js.map +0 -1
- package/dist/labels.d.ts +0 -9
- package/dist/labels.d.ts.map +0 -1
- package/dist/labels.js +0 -38
- package/dist/labels.js.map +0 -1
- package/dist/messages.d.ts +0 -99
- package/dist/messages.d.ts.map +0 -1
- package/dist/messages.js +0 -276
- package/dist/messages.js.map +0 -1
- package/dist/renderer.d.ts +0 -52
- package/dist/renderer.d.ts.map +0 -1
- package/dist/renderer.js +0 -522
- package/dist/renderer.js.map +0 -1
- package/dist/text.d.ts +0 -14
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -63
- package/dist/text.js.map +0 -1
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -54
- package/dist/theme.js.map +0 -1
- package/src/components/bars.tsx +0 -179
- package/src/components/cell-inspector.tsx +0 -70
- package/src/components/columns-panel.tsx +0 -59
- package/src/components/filter-panel.tsx +0 -290
- package/src/components/find-bar.tsx +0 -104
- package/src/components/popover.tsx +0 -194
- package/src/components/stats-panel.tsx +0 -153
- package/src/controller.ts +0 -887
- package/src/data-grid.tsx +0 -1029
- package/src/labels.ts +0 -46
- package/src/messages.ts +0 -390
- package/src/renderer.ts +0 -535
- package/src/text.ts +0 -55
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["use","useState","useTransition","columnsOf","formulaText","joinParts","partsOf","FilterTextError","filterParts","operatorsFor","readFilter","takesNoValue","isNumeric","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TEMPORAL","Set","nextRule","ruleId","draftOf","rule","fallback","names","when","name","read","size","filter","kind","operator","first","second","id","column","kept","color","background","description","whenOf","columns","find","item","undefined","error","knownCurrency","code","Intl","NumberFormat","style","currency","formulaOf","expr","JSON","stringify","FormatForm","t0","$","_c","setting","onDone","store","messages","view","_temp","t1","format","label","setLabel","align","setAlign","wrap","setWrap","setStyle","number","setCurrency","digits","setDigits","fractionDigits","String","grouping","setGrouping","pattern","setPattern","date","t2","styles","map","rules","setRules","setError","pending","startApply","t3","numeric","t4","type","has","temporal","t5","next","outcome","dispatch","command","ok","message","t6","invalidCondition","invalidCurrency","event","preventDefault","rule_0","push","trim","fraction","Math","min","max","round","Number","toUpperCase","isNaN","next_0","length","cleaned","Object","fromEntries","entries","_temp2","keys","submit","t7","Symbol","for","patch","current","rule_1","change","t8","formatOf","t9","t10","className","children","t11","columnLabel","t12","event_0","target","value","t13","placeholder","onChange","t14","t15","alignment","t16","event_1","t17","alignments","auto","t18","left","t19","center","t20","right","t21","t22","t23","event_2","checked","t24","t25","wrapText","t26","t27","numberFormat","numberStyles","event_3","none","decimal","percent","event_4","event_5","event_6","t28","datePattern","event_7","t29","conditionalColors","t30","backgroundColor","condition","conditionColumn","maximum","minimum","operators","removeRule","ruleDescription","textColor","t31","rule_2","event_8","next_1","item_0","kinds","includes","_temp3","event_9","item_2","event_10","event_11","event_12","event_13","event_14","event_15","event_16","onClick","current_0","item_3","current_1","t32","addRule","t33","t34","role","t35","t36","clearFormat","t37","apply","t38","t39","item_1","snapshot"],"sources":["format-form.tsx"],"sourcesContent":["import { type FormEvent, use, useState, useTransition } from \"react\";\nimport {\n type Column,\n type ColumnFormat,\n type ColumnSetting,\n columnsOf,\n type Expr,\n formulaText,\n joinParts,\n type NumberFormat,\n partsOf,\n type StyleRule,\n} from \"vastgrid-spec\";\nimport {\n type ColumnFilter,\n type FilterOperator,\n FilterTextError,\n filterParts,\n operatorsFor,\n readFilter,\n takesNoValue,\n} from \"../core/filters.js\";\nimport { isNumeric } from \"../core/format.js\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\nconst TEMPORAL = new Set([\"date\", \"time\", \"timestamp\", \"timestamptz\"]);\n\n/** A style rule as the form edits it: a condition on one column, or a `when` it does not take apart. */\ninterface RuleDraft {\n id: number;\n column: string;\n filter: ColumnFilter & { kind: \"condition\" };\n /** A `when` that is not one condition on one column: kept as it is. */\n kept?: Expr;\n color: string | null;\n background: string | null;\n description: string;\n}\n\nlet nextRule = 1;\n\nfunction ruleId() {\n return nextRule++;\n}\n\nfunction draftOf(rule: StyleRule, fallback: string): RuleDraft {\n const names = columnsOf(rule.when);\n const [name] = names;\n const read = names.size === 1 ? readFilter(partsOf(rule.when), name) : null;\n const filter =\n read !== null && read !== \"other\" && read.kind === \"condition\"\n ? read\n : ({ kind: \"condition\", operator: \"eq\", first: \"\", second: \"\" } as const);\n return {\n id: ruleId(),\n column: read !== null && read !== \"other\" && read.kind === \"condition\" ? name : fallback,\n filter,\n ...(read !== null && read !== \"other\" && read.kind === \"condition\" ? {} : { kept: rule.when }),\n color: rule.color ?? null,\n background: rule.background ?? null,\n description: rule.description ?? \"\",\n };\n}\n\n/** The `when` of a rule, or null when its text is not a value of its column; undefined without text. */\nfunction whenOf(rule: RuleDraft, columns: readonly Column[]): Expr | null | undefined {\n if (rule.kept) return rule.kept;\n const column = columns.find((item) => item.name === rule.column);\n if (!column) return undefined;\n try {\n return joinParts(filterParts(rule.filter, column));\n } catch (error) {\n if (error instanceof FilterTextError) return null;\n throw error;\n }\n}\n\n/** Whether Intl formats a currency code. */\nfunction knownCurrency(code: string) {\n try {\n new Intl.NumberFormat(undefined, { style: \"currency\", currency: code });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction formulaOf(expr: Expr) {\n try {\n return formulaText(expr);\n } catch {\n return JSON.stringify(expr);\n }\n}\n\n/**\n * A column's format (§5.1 of the specification): its label, alignment and wrapping, the number or date format of its\n * type, and rules of conditional colors, each a condition on a column of the view with a text color, a background\n * and what they mean. Applying dispatches `column.format`; Clear removes the format.\n */\nexport function FormatForm({\n column,\n setting,\n onDone,\n}: {\n column: Column;\n setting: ColumnSetting;\n onDone: () => void;\n}) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const view = useGridSelector((snapshot) => snapshot.view?.columns ?? []);\n const format = setting.format ?? {};\n const [label, setLabel] = useState(format.label ?? \"\");\n const [align, setAlign] = useState<ColumnFormat[\"align\"] | \"\">(format.align ?? \"\");\n const [wrap, setWrap] = useState(format.wrap === true);\n const [style, setStyle] = useState<NumberFormat[\"style\"] | \"\">(\n format.number ? (format.number.style ?? \"decimal\") : \"\",\n );\n const [currency, setCurrency] = useState(format.number?.currency ?? \"\");\n const [digits, setDigits] = useState(\n format.number?.fractionDigits === undefined ? \"\" : String(format.number.fractionDigits),\n );\n const [grouping, setGrouping] = useState(format.number?.grouping !== false);\n const [pattern, setPattern] = useState(format.date?.pattern ?? \"\");\n const [rules, setRules] = useState(() => (format.styles ?? []).map((rule) => draftOf(rule, column.name)));\n const [error, setError] = useState<string | null>(null);\n const [pending, startApply] = useTransition();\n const numeric = isNumeric(column);\n const temporal = TEMPORAL.has(column.type);\n\n const dispatch = (next: ColumnFormat | null) =>\n startApply(async () => {\n const outcome = await store.dispatch({ command: \"column.format\", name: column.name, format: next });\n if (!outcome.ok) {\n setError(outcome.error.message);\n return;\n }\n onDone();\n });\n\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (style === \"currency\" && !knownCurrency(currency)) {\n setError(messages.invalidCurrency);\n return;\n }\n const styles: StyleRule[] = [];\n for (const rule of rules) {\n const when = whenOf(rule, view);\n if (when === null) {\n setError(messages.invalidCondition);\n return;\n }\n if (when === undefined || (!rule.color && !rule.background)) continue;\n styles.push({\n when,\n ...(rule.color ? { color: rule.color } : {}),\n ...(rule.background ? { background: rule.background } : {}),\n ...(rule.description.trim() ? { description: rule.description.trim() } : {}),\n });\n }\n const fraction = digits.trim() === \"\" ? undefined : Math.min(20, Math.max(0, Math.round(Number(digits))));\n const number: NumberFormat | undefined =\n numeric && style\n ? {\n style,\n ...(style === \"currency\" ? { currency: currency.toUpperCase() } : {}),\n ...(fraction === undefined || Number.isNaN(fraction) ? {} : { fractionDigits: fraction }),\n ...(grouping ? {} : { grouping: false }),\n }\n : undefined;\n const next: ColumnFormat = {\n ...format,\n ...(label.trim() ? { label: label.trim() } : { label: undefined }),\n align: align === \"\" ? undefined : align,\n wrap: wrap ? true : undefined,\n number: numeric ? number : format.number,\n date: temporal ? (pattern.trim() ? { ...format.date, pattern: pattern.trim() } : undefined) : format.date,\n styles: styles.length > 0 ? styles : undefined,\n };\n const cleaned = Object.fromEntries(Object.entries(next).filter(([, value]) => value !== undefined)) as ColumnFormat;\n dispatch(Object.keys(cleaned).length > 0 ? cleaned : null);\n };\n\n const change = (id: number, patch: Partial<RuleDraft>) =>\n setRules((current) => current.map((rule) => (rule.id === id ? { ...rule, ...patch } : rule)));\n\n return (\n <form className=\"vg-filter vg-format\" onSubmit={submit} aria-label={messages.formatOf(column.name)}>\n <p className=\"vg-filter__title\">{messages.formatOf(column.name)}</p>\n <label className=\"vg-format__field\">\n <span>{messages.columnLabel}</span>\n <input\n className=\"vg-input\"\n value={label}\n placeholder={column.name}\n onChange={(event) => setLabel(event.target.value)}\n />\n </label>\n <label className=\"vg-format__field\">\n <span>{messages.alignment}</span>\n <select className=\"vg-input\" value={align} onChange={(event) => setAlign(event.target.value as typeof align)}>\n <option value=\"\">{messages.alignments.auto}</option>\n <option value=\"left\">{messages.alignments.left}</option>\n <option value=\"center\">{messages.alignments.center}</option>\n <option value=\"right\">{messages.alignments.right}</option>\n </select>\n </label>\n <label className=\"vg-filter__value\">\n <input type=\"checkbox\" checked={wrap} onChange={(event) => setWrap(event.target.checked)} />\n <span>{messages.wrapText}</span>\n </label>\n {numeric && (\n <fieldset className=\"vg-format__group\">\n <legend>{messages.numberFormat}</legend>\n <select\n className=\"vg-input\"\n aria-label={messages.numberFormat}\n value={style}\n onChange={(event) => setStyle(event.target.value as typeof style)}\n >\n <option value=\"\">{messages.numberStyles.none}</option>\n <option value=\"decimal\">{messages.numberStyles.decimal}</option>\n <option value=\"percent\">{messages.numberStyles.percent}</option>\n <option value=\"currency\">{messages.numberStyles.currency}</option>\n </select>\n {style === \"currency\" && (\n <input\n className=\"vg-input\"\n aria-label={messages.currency}\n placeholder=\"JPY\"\n value={currency}\n onChange={(event) => setCurrency(event.target.value)}\n />\n )}\n {style !== \"\" && (\n <>\n <input\n className=\"vg-input\"\n type=\"number\"\n min={0}\n max={20}\n aria-label={messages.fractionDigits}\n placeholder={messages.fractionDigits}\n value={digits}\n onChange={(event) => setDigits(event.target.value)}\n />\n <label className=\"vg-filter__value\">\n <input type=\"checkbox\" checked={grouping} onChange={(event) => setGrouping(event.target.checked)} />\n <span>{messages.grouping}</span>\n </label>\n </>\n )}\n </fieldset>\n )}\n {temporal && (\n <label className=\"vg-format__field\">\n <span>{messages.datePattern}</span>\n <input\n className=\"vg-input\"\n placeholder=\"yyyy/MM/dd HH:mm\"\n value={pattern}\n onChange={(event) => setPattern(event.target.value)}\n />\n </label>\n )}\n <fieldset className=\"vg-format__group\">\n <legend>{messages.conditionalColors}</legend>\n {rules.map((rule) => {\n const target = view.find((item) => item.name === rule.column);\n const operators = target ? operatorsFor(target.type) : [];\n return (\n <div key={rule.id} className=\"vg-format__rule\">\n {rule.kept ? (\n <code className=\"vg-conditions__expression\">{formulaOf(rule.kept)}</code>\n ) : (\n <div className=\"vg-conditions__row\">\n <select\n className=\"vg-input\"\n aria-label={messages.conditionColumn}\n value={rule.column}\n onChange={(event) => {\n const next = view.find((item) => item.name === event.target.value);\n if (!next) return;\n const kinds = operatorsFor(next.type);\n const operator = kinds.includes(rule.filter.operator) ? rule.filter.operator : kinds[0];\n change(rule.id, { column: next.name, filter: { ...rule.filter, operator } });\n }}\n >\n {view.map((item) => (\n <option key={item.name} value={item.name}>\n {item.name}\n </option>\n ))}\n </select>\n <select\n className=\"vg-input\"\n aria-label={messages.condition}\n value={rule.filter.operator}\n onChange={(event) =>\n change(rule.id, { filter: { ...rule.filter, operator: event.target.value as FilterOperator } })\n }\n >\n {operators.map((item) => (\n <option key={item} value={item}>\n {messages.operators[item]}\n </option>\n ))}\n </select>\n {!takesNoValue(rule.filter.operator) && (\n <input\n className=\"vg-input\"\n aria-label={rule.filter.operator === \"between\" ? messages.minimum : messages.value}\n placeholder={rule.filter.operator === \"between\" ? messages.minimum : messages.value}\n value={rule.filter.first}\n onChange={(event) => change(rule.id, { filter: { ...rule.filter, first: event.target.value } })}\n />\n )}\n {rule.filter.operator === \"between\" && (\n <input\n className=\"vg-input\"\n aria-label={messages.maximum}\n placeholder={messages.maximum}\n value={rule.filter.second}\n onChange={(event) => change(rule.id, { filter: { ...rule.filter, second: event.target.value } })}\n />\n )}\n </div>\n )}\n <div className=\"vg-conditions__row\">\n <label className=\"vg-filter__value\">\n <input\n type=\"checkbox\"\n checked={rule.color !== null}\n onChange={(event) => change(rule.id, { color: event.target.checked ? \"#b42318\" : null })}\n />\n <span>{messages.textColor}</span>\n </label>\n {rule.color !== null && (\n <input\n type=\"color\"\n aria-label={messages.textColor}\n value={rule.color}\n onChange={(event) => change(rule.id, { color: event.target.value })}\n />\n )}\n <label className=\"vg-filter__value\">\n <input\n type=\"checkbox\"\n checked={rule.background !== null}\n onChange={(event) => change(rule.id, { background: event.target.checked ? \"#fde68a\" : null })}\n />\n <span>{messages.backgroundColor}</span>\n </label>\n {rule.background !== null && (\n <input\n type=\"color\"\n aria-label={messages.backgroundColor}\n value={rule.background}\n onChange={(event) => change(rule.id, { background: event.target.value })}\n />\n )}\n </div>\n <div className=\"vg-conditions__row\">\n <input\n className=\"vg-input\"\n aria-label={messages.ruleDescription}\n placeholder={messages.ruleDescription}\n value={rule.description}\n onChange={(event) => change(rule.id, { description: event.target.value })}\n />\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.removeRule}\n onClick={() => setRules((current) => current.filter((item) => item.id !== rule.id))}\n >\n ×\n </button>\n </div>\n </div>\n );\n })}\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n onClick={() =>\n setRules((current) => [\n ...current,\n {\n id: ruleId(),\n column: column.name,\n filter: { kind: \"condition\", operator: operatorsFor(column.type)[0], first: \"\", second: \"\" },\n color: null,\n background: \"#fde68a\",\n description: \"\",\n },\n ])\n }\n >\n {messages.addRule}\n </button>\n </fieldset>\n {error !== null && (\n <p role=\"alert\" className=\"vg-filter__error\">\n {error}\n </p>\n )}\n <div className=\"vg-filter__actions\">\n <button type=\"button\" className=\"vg-button\" disabled={pending} onClick={() => dispatch(null)}>\n {messages.clearFormat}\n </button>\n <button type=\"submit\" className=\"vg-button vg-button--primary\" disabled={pending}>\n {messages.apply}\n </button>\n </div>\n </form>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,
|
|
3
|
+
* renamed and removed, and a form that adds one. It is there when the engine derives columns.
|
|
4
|
+
*/
|
|
5
|
+
export default function FormulaPanel(): import("react").JSX.Element | null;
|
|
6
|
+
//# sourceMappingURL=formula-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula-menu.d.ts","sourceRoot":"","sources":["../../src/react/formula-menu.tsx"],"names":[],"mappings":"AA8HA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,uCAgCnC"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import { use, useId, useRef, useState, useTransition } from "react";
|
|
3
|
+
import { checkPlan, compileFormula, FormulaError, formulaText, planOptions } from "vastgrid-spec";
|
|
4
|
+
import { LocaleContext } from "./context.js";
|
|
5
|
+
import { useGridSelector, useGridStore } from "./hooks.js";
|
|
6
|
+
|
|
7
|
+
/** The text of a derived column's expression as a formula (§4.11), or its JSON when it has none. */
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
9
|
+
function textOf(derived) {
|
|
10
|
+
try {
|
|
11
|
+
return formulaText(derived.expr);
|
|
12
|
+
} catch {
|
|
13
|
+
return JSON.stringify(derived.expr);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* One derived column, or a new one when `derived` is null: its name and formula, compiled against the columns
|
|
19
|
+
* before it (§4.11) and dispatched as `derive.add` or `derive.update` (§6.2.2). A formula that does not compile is
|
|
20
|
+
* not dispatched: its error is shown, and the characters at fault are selected.
|
|
21
|
+
*/
|
|
22
|
+
function FormulaForm(t0) {
|
|
23
|
+
const $ = _c(41);
|
|
24
|
+
const {
|
|
25
|
+
derived,
|
|
26
|
+
columns,
|
|
27
|
+
options
|
|
28
|
+
} = t0;
|
|
29
|
+
const store = useGridStore();
|
|
30
|
+
const {
|
|
31
|
+
messages
|
|
32
|
+
} = use(LocaleContext);
|
|
33
|
+
const [name, setName] = useState(derived?.name ?? "");
|
|
34
|
+
let t1;
|
|
35
|
+
if ($[0] !== derived) {
|
|
36
|
+
t1 = derived ? textOf(derived) : "";
|
|
37
|
+
$[0] = derived;
|
|
38
|
+
$[1] = t1;
|
|
39
|
+
} else {
|
|
40
|
+
t1 = $[1];
|
|
41
|
+
}
|
|
42
|
+
const [text, setText] = useState(t1);
|
|
43
|
+
const [error, setError] = useState(null);
|
|
44
|
+
const [pending, startDispatch] = useTransition();
|
|
45
|
+
const formulaRef = useRef(null);
|
|
46
|
+
const errorId = useId();
|
|
47
|
+
let t2;
|
|
48
|
+
if ($[2] !== store) {
|
|
49
|
+
t2 = (command, reset) => startDispatch(async () => {
|
|
50
|
+
const outcome = await store.dispatch(command);
|
|
51
|
+
if (!outcome.ok) {
|
|
52
|
+
setError(outcome.error.message);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
setError(null);
|
|
56
|
+
if (reset) {
|
|
57
|
+
setName("");
|
|
58
|
+
setText("");
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
$[2] = store;
|
|
62
|
+
$[3] = t2;
|
|
63
|
+
} else {
|
|
64
|
+
t2 = $[3];
|
|
65
|
+
}
|
|
66
|
+
const run = t2;
|
|
67
|
+
let t3;
|
|
68
|
+
if ($[4] !== columns || $[5] !== derived || $[6] !== name || $[7] !== options || $[8] !== run || $[9] !== text) {
|
|
69
|
+
t3 = event => {
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
let expr;
|
|
72
|
+
;
|
|
73
|
+
try {
|
|
74
|
+
expr = compileFormula(text, columns, options).expr;
|
|
75
|
+
} catch (t4) {
|
|
76
|
+
const failure = t4;
|
|
77
|
+
if (!(failure instanceof FormulaError)) {
|
|
78
|
+
throw failure;
|
|
79
|
+
}
|
|
80
|
+
setError(failure.message);
|
|
81
|
+
const input = formulaRef.current;
|
|
82
|
+
input?.focus();
|
|
83
|
+
input?.setSelectionRange(failure.start, Math.max(failure.start, failure.end));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (derived === null) {
|
|
87
|
+
run({
|
|
88
|
+
command: "derive.add",
|
|
89
|
+
name,
|
|
90
|
+
expr
|
|
91
|
+
}, true);
|
|
92
|
+
} else {
|
|
93
|
+
run({
|
|
94
|
+
command: "derive.update",
|
|
95
|
+
name: derived.name,
|
|
96
|
+
expr,
|
|
97
|
+
...(name === derived.name ? {} : {
|
|
98
|
+
rename: name
|
|
99
|
+
})
|
|
100
|
+
}, false);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
$[4] = columns;
|
|
104
|
+
$[5] = derived;
|
|
105
|
+
$[6] = name;
|
|
106
|
+
$[7] = options;
|
|
107
|
+
$[8] = run;
|
|
108
|
+
$[9] = text;
|
|
109
|
+
$[10] = t3;
|
|
110
|
+
} else {
|
|
111
|
+
t3 = $[10];
|
|
112
|
+
}
|
|
113
|
+
const submit = t3;
|
|
114
|
+
const t4 = derived?.name ?? messages.newFormula;
|
|
115
|
+
let t5;
|
|
116
|
+
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
117
|
+
t5 = event_0 => setName(event_0.target.value);
|
|
118
|
+
$[11] = t5;
|
|
119
|
+
} else {
|
|
120
|
+
t5 = $[11];
|
|
121
|
+
}
|
|
122
|
+
let t6;
|
|
123
|
+
if ($[12] !== messages.formulaName || $[13] !== name) {
|
|
124
|
+
t6 = /*#__PURE__*/_jsx("input", {
|
|
125
|
+
className: "vg-input vg-formulas__name",
|
|
126
|
+
"aria-label": messages.formulaName,
|
|
127
|
+
placeholder: messages.formulaName,
|
|
128
|
+
required: true,
|
|
129
|
+
value: name,
|
|
130
|
+
onChange: t5
|
|
131
|
+
});
|
|
132
|
+
$[12] = messages.formulaName;
|
|
133
|
+
$[13] = name;
|
|
134
|
+
$[14] = t6;
|
|
135
|
+
} else {
|
|
136
|
+
t6 = $[14];
|
|
137
|
+
}
|
|
138
|
+
const t7 = error !== null;
|
|
139
|
+
const t8 = error === null ? undefined : errorId;
|
|
140
|
+
let t9;
|
|
141
|
+
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
142
|
+
t9 = event_1 => setText(event_1.target.value);
|
|
143
|
+
$[15] = t9;
|
|
144
|
+
} else {
|
|
145
|
+
t9 = $[15];
|
|
146
|
+
}
|
|
147
|
+
let t10;
|
|
148
|
+
if ($[16] !== messages.formula || $[17] !== messages.formulaExample || $[18] !== t7 || $[19] !== t8 || $[20] !== text) {
|
|
149
|
+
t10 = /*#__PURE__*/_jsx("input", {
|
|
150
|
+
ref: formulaRef,
|
|
151
|
+
className: "vg-input vg-formulas__formula",
|
|
152
|
+
"aria-label": messages.formula,
|
|
153
|
+
"aria-invalid": t7,
|
|
154
|
+
"aria-describedby": t8,
|
|
155
|
+
placeholder: messages.formulaExample,
|
|
156
|
+
required: true,
|
|
157
|
+
spellCheck: false,
|
|
158
|
+
value: text,
|
|
159
|
+
onChange: t9
|
|
160
|
+
});
|
|
161
|
+
$[16] = messages.formula;
|
|
162
|
+
$[17] = messages.formulaExample;
|
|
163
|
+
$[18] = t7;
|
|
164
|
+
$[19] = t8;
|
|
165
|
+
$[20] = text;
|
|
166
|
+
$[21] = t10;
|
|
167
|
+
} else {
|
|
168
|
+
t10 = $[21];
|
|
169
|
+
}
|
|
170
|
+
const t11 = derived === null ? messages.addFormula : messages.applyFormula;
|
|
171
|
+
let t12;
|
|
172
|
+
if ($[22] !== pending || $[23] !== t11) {
|
|
173
|
+
t12 = /*#__PURE__*/_jsx("button", {
|
|
174
|
+
type: "submit",
|
|
175
|
+
className: "vg-button",
|
|
176
|
+
disabled: pending,
|
|
177
|
+
children: t11
|
|
178
|
+
});
|
|
179
|
+
$[22] = pending;
|
|
180
|
+
$[23] = t11;
|
|
181
|
+
$[24] = t12;
|
|
182
|
+
} else {
|
|
183
|
+
t12 = $[24];
|
|
184
|
+
}
|
|
185
|
+
let t13;
|
|
186
|
+
if ($[25] !== derived || $[26] !== messages.removeFormula || $[27] !== pending || $[28] !== run) {
|
|
187
|
+
t13 = derived !== null && /*#__PURE__*/_jsx("button", {
|
|
188
|
+
type: "button",
|
|
189
|
+
className: "vg-button",
|
|
190
|
+
disabled: pending,
|
|
191
|
+
onClick: () => run({
|
|
192
|
+
command: "derive.remove",
|
|
193
|
+
name: derived.name
|
|
194
|
+
}, false),
|
|
195
|
+
children: messages.removeFormula
|
|
196
|
+
});
|
|
197
|
+
$[25] = derived;
|
|
198
|
+
$[26] = messages.removeFormula;
|
|
199
|
+
$[27] = pending;
|
|
200
|
+
$[28] = run;
|
|
201
|
+
$[29] = t13;
|
|
202
|
+
} else {
|
|
203
|
+
t13 = $[29];
|
|
204
|
+
}
|
|
205
|
+
let t14;
|
|
206
|
+
if ($[30] !== error || $[31] !== errorId) {
|
|
207
|
+
t14 = error !== null && /*#__PURE__*/_jsx("p", {
|
|
208
|
+
id: errorId,
|
|
209
|
+
role: "alert",
|
|
210
|
+
className: "vg-formulas__error",
|
|
211
|
+
children: error
|
|
212
|
+
});
|
|
213
|
+
$[30] = error;
|
|
214
|
+
$[31] = errorId;
|
|
215
|
+
$[32] = t14;
|
|
216
|
+
} else {
|
|
217
|
+
t14 = $[32];
|
|
218
|
+
}
|
|
219
|
+
let t15;
|
|
220
|
+
if ($[33] !== submit || $[34] !== t10 || $[35] !== t12 || $[36] !== t13 || $[37] !== t14 || $[38] !== t4 || $[39] !== t6) {
|
|
221
|
+
t15 = /*#__PURE__*/_jsxs("form", {
|
|
222
|
+
className: "vg-formulas__row",
|
|
223
|
+
onSubmit: submit,
|
|
224
|
+
"aria-label": t4,
|
|
225
|
+
children: [t6, t10, t12, t13, t14]
|
|
226
|
+
});
|
|
227
|
+
$[33] = submit;
|
|
228
|
+
$[34] = t10;
|
|
229
|
+
$[35] = t12;
|
|
230
|
+
$[36] = t13;
|
|
231
|
+
$[37] = t14;
|
|
232
|
+
$[38] = t4;
|
|
233
|
+
$[39] = t6;
|
|
234
|
+
$[40] = t15;
|
|
235
|
+
} else {
|
|
236
|
+
t15 = $[40];
|
|
237
|
+
}
|
|
238
|
+
return t15;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,
|
|
243
|
+
* renamed and removed, and a form that adds one. It is there when the engine derives columns.
|
|
244
|
+
*/
|
|
245
|
+
export default function FormulaPanel() {
|
|
246
|
+
const $ = _c(21);
|
|
247
|
+
const table = useGridSelector(_temp);
|
|
248
|
+
const derive = useGridSelector(_temp2);
|
|
249
|
+
if (!table || table.capabilities.plan?.derive === false) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
let list;
|
|
253
|
+
let options;
|
|
254
|
+
let rows;
|
|
255
|
+
let scopes;
|
|
256
|
+
if ($[0] !== derive || $[1] !== table.capabilities || $[2] !== table.columns) {
|
|
257
|
+
options = planOptions(table.capabilities);
|
|
258
|
+
list = derive ?? [];
|
|
259
|
+
scopes = [];
|
|
260
|
+
rows = table.columns;
|
|
261
|
+
for (const [index, derived] of list.entries()) {
|
|
262
|
+
scopes.push(rows);
|
|
263
|
+
try {
|
|
264
|
+
rows = checkPlan({
|
|
265
|
+
derive: list.slice(0, index + 1)
|
|
266
|
+
}, table.columns, options).rows;
|
|
267
|
+
} catch {
|
|
268
|
+
rows = [...rows, {
|
|
269
|
+
name: derived.name,
|
|
270
|
+
type: "string"
|
|
271
|
+
}];
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
$[0] = derive;
|
|
275
|
+
$[1] = table.capabilities;
|
|
276
|
+
$[2] = table.columns;
|
|
277
|
+
$[3] = list;
|
|
278
|
+
$[4] = options;
|
|
279
|
+
$[5] = rows;
|
|
280
|
+
$[6] = scopes;
|
|
281
|
+
} else {
|
|
282
|
+
list = $[3];
|
|
283
|
+
options = $[4];
|
|
284
|
+
rows = $[5];
|
|
285
|
+
scopes = $[6];
|
|
286
|
+
}
|
|
287
|
+
let t0;
|
|
288
|
+
if ($[7] !== list || $[8] !== options || $[9] !== scopes) {
|
|
289
|
+
let t1;
|
|
290
|
+
if ($[11] !== options || $[12] !== scopes) {
|
|
291
|
+
t1 = (derived_0, index_0) => /*#__PURE__*/_jsx(FormulaForm, {
|
|
292
|
+
derived: derived_0,
|
|
293
|
+
columns: scopes[index_0],
|
|
294
|
+
options: options
|
|
295
|
+
}, `${derived_0.name}\u0000${textOf(derived_0)}`);
|
|
296
|
+
$[11] = options;
|
|
297
|
+
$[12] = scopes;
|
|
298
|
+
$[13] = t1;
|
|
299
|
+
} else {
|
|
300
|
+
t1 = $[13];
|
|
301
|
+
}
|
|
302
|
+
t0 = list.map(t1);
|
|
303
|
+
$[7] = list;
|
|
304
|
+
$[8] = options;
|
|
305
|
+
$[9] = scopes;
|
|
306
|
+
$[10] = t0;
|
|
307
|
+
} else {
|
|
308
|
+
t0 = $[10];
|
|
309
|
+
}
|
|
310
|
+
let t1;
|
|
311
|
+
if ($[14] !== list.length || $[15] !== options || $[16] !== rows) {
|
|
312
|
+
t1 = /*#__PURE__*/_jsx(FormulaForm, {
|
|
313
|
+
derived: null,
|
|
314
|
+
columns: rows,
|
|
315
|
+
options: options
|
|
316
|
+
}, list.length);
|
|
317
|
+
$[14] = list.length;
|
|
318
|
+
$[15] = options;
|
|
319
|
+
$[16] = rows;
|
|
320
|
+
$[17] = t1;
|
|
321
|
+
} else {
|
|
322
|
+
t1 = $[17];
|
|
323
|
+
}
|
|
324
|
+
let t2;
|
|
325
|
+
if ($[18] !== t0 || $[19] !== t1) {
|
|
326
|
+
t2 = /*#__PURE__*/_jsxs(_Fragment, {
|
|
327
|
+
children: [t0, t1]
|
|
328
|
+
});
|
|
329
|
+
$[18] = t0;
|
|
330
|
+
$[19] = t1;
|
|
331
|
+
$[20] = t2;
|
|
332
|
+
} else {
|
|
333
|
+
t2 = $[20];
|
|
334
|
+
}
|
|
335
|
+
return t2;
|
|
336
|
+
}
|
|
337
|
+
function _temp2(snapshot_0) {
|
|
338
|
+
return snapshot_0.document.plan?.derive;
|
|
339
|
+
}
|
|
340
|
+
function _temp(snapshot) {
|
|
341
|
+
return snapshot.table;
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=formula-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["use","useId","useRef","useState","useTransition","checkPlan","compileFormula","FormulaError","formulaText","planOptions","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","textOf","derived","expr","JSON","stringify","FormulaForm","t0","$","_c","columns","options","store","messages","name","setName","t1","text","setText","error","setError","pending","startDispatch","formulaRef","errorId","t2","command","reset","outcome","dispatch","ok","message","run","t3","event","preventDefault","t4","failure","input","current","focus","setSelectionRange","start","Math","max","end","rename","submit","newFormula","t5","Symbol","for","event_0","target","value","t6","formulaName","className","placeholder","required","onChange","t7","t8","undefined","t9","event_1","t10","formula","formulaExample","spellCheck","t11","addFormula","applyFormula","t12","type","children","t13","removeFormula","onClick","t14","role","t15","FormulaPanel","table","_temp","derive","_temp2","capabilities","plan","list","rows","scopes","index","entries","push","slice","derived_0","index_0","map","length","snapshot_0","snapshot","document"],"sources":["formula-menu.tsx"],"sourcesContent":["import { type FormEvent, use, useId, useRef, useState, useTransition } from \"react\";\nimport {\n type CheckOptions,\n type Column,\n checkPlan,\n compileFormula,\n type Derived,\n FormulaError,\n formulaText,\n type GridCommand,\n planOptions,\n} from \"vastgrid-spec\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\n/** The text of a derived column's expression as a formula (§4.11), or its JSON when it has none. */\nfunction textOf(derived: Derived): string {\n try {\n return formulaText(derived.expr);\n } catch {\n return JSON.stringify(derived.expr);\n }\n}\n\n/**\n * One derived column, or a new one when `derived` is null: its name and formula, compiled against the columns\n * before it (§4.11) and dispatched as `derive.add` or `derive.update` (§6.2.2). A formula that does not compile is\n * not dispatched: its error is shown, and the characters at fault are selected.\n */\nfunction FormulaForm({\n derived,\n columns,\n options,\n}: {\n derived: Derived | null;\n columns: readonly Column[];\n options: CheckOptions;\n}) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const [name, setName] = useState(derived?.name ?? \"\");\n const [text, setText] = useState(derived ? textOf(derived) : \"\");\n const [error, setError] = useState<string | null>(null);\n const [pending, startDispatch] = useTransition();\n const formulaRef = useRef<HTMLInputElement>(null);\n const errorId = useId();\n\n const run = (command: GridCommand, reset: boolean) =>\n startDispatch(async () => {\n const outcome = await store.dispatch(command);\n if (!outcome.ok) {\n setError(outcome.error.message);\n return;\n }\n setError(null);\n if (reset) {\n setName(\"\");\n setText(\"\");\n }\n });\n\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n let expr: Derived[\"expr\"];\n try {\n expr = compileFormula(text, columns, options).expr;\n } catch (failure) {\n if (!(failure instanceof FormulaError)) throw failure;\n setError(failure.message);\n const input = formulaRef.current;\n input?.focus();\n input?.setSelectionRange(failure.start, Math.max(failure.start, failure.end));\n return;\n }\n if (derived === null) run({ command: \"derive.add\", name, expr }, true);\n else\n run(\n { command: \"derive.update\", name: derived.name, expr, ...(name === derived.name ? {} : { rename: name }) },\n false,\n );\n };\n\n return (\n <form className=\"vg-formulas__row\" onSubmit={submit} aria-label={derived?.name ?? messages.newFormula}>\n <input\n className=\"vg-input vg-formulas__name\"\n aria-label={messages.formulaName}\n placeholder={messages.formulaName}\n required\n value={name}\n onChange={(event) => setName(event.target.value)}\n />\n <input\n ref={formulaRef}\n className=\"vg-input vg-formulas__formula\"\n aria-label={messages.formula}\n aria-invalid={error !== null}\n aria-describedby={error === null ? undefined : errorId}\n placeholder={messages.formulaExample}\n required\n spellCheck={false}\n value={text}\n onChange={(event) => setText(event.target.value)}\n />\n <button type=\"submit\" className=\"vg-button\" disabled={pending}>\n {derived === null ? messages.addFormula : messages.applyFormula}\n </button>\n {derived !== null && (\n <button\n type=\"button\"\n className=\"vg-button\"\n disabled={pending}\n onClick={() => run({ command: \"derive.remove\", name: derived.name }, false)}\n >\n {messages.removeFormula}\n </button>\n )}\n {error !== null && (\n <p id={errorId} role=\"alert\" className=\"vg-formulas__error\">\n {error}\n </p>\n )}\n </form>\n );\n}\n\n/**\n * The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,\n * renamed and removed, and a form that adds one. It is there when the engine derives columns.\n */\nexport default function FormulaPanel() {\n const table = useGridSelector((snapshot) => snapshot.table);\n const derive = useGridSelector((snapshot) => snapshot.document.plan?.derive);\n if (!table || table.capabilities.plan?.derive === false) return null;\n const options = planOptions(table.capabilities);\n const list = derive ?? [];\n // Each formula uses the table's columns and the derived columns before it.\n const scopes: Column[][] = [];\n let rows: Column[] = table.columns;\n for (const [index, derived] of list.entries()) {\n scopes.push(rows);\n try {\n rows = checkPlan({ derive: list.slice(0, index + 1) }, table.columns, options).rows;\n } catch {\n rows = [...rows, { name: derived.name, type: \"string\" }];\n }\n }\n\n return (\n <>\n {list.map((derived, index) => (\n // A formula changed elsewhere (an agent, undo) shows anew.\n <FormulaForm\n key={`${derived.name}\\u0000${textOf(derived)}`}\n derived={derived}\n columns={scopes[index]}\n options={options}\n />\n ))}\n <FormulaForm key={list.length} derived={null} columns={rows} options={options} />\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import { type RowKey } from "vastgrid-spec";
|
|
3
|
+
import type { CellAction, CellHooks, ColumnGroup, GridCell } from "../canvas/hooks.js";
|
|
4
|
+
/** A click or Space on a cell that is a link or a button (`cellAction`). */
|
|
5
|
+
export interface CellActionEvent extends GridCell {
|
|
6
|
+
action: CellAction;
|
|
7
|
+
/** The key of the cell's row (§5.3), when it is read. */
|
|
8
|
+
key: RowKey | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface GridBodyProps {
|
|
11
|
+
rowHeight?: number;
|
|
12
|
+
headerHeight?: number;
|
|
13
|
+
/** A check box for each row in the gutter (§5.2.1 of the specification). */
|
|
14
|
+
checkboxes?: boolean;
|
|
15
|
+
columnGroups?: readonly ColumnGroup[];
|
|
16
|
+
groupHeaderHeight?: number;
|
|
17
|
+
wrapLines?: number;
|
|
18
|
+
hooks: CellHooks;
|
|
19
|
+
onCellAction?: (event: CellActionEvent) => void;
|
|
20
|
+
/** Opens the find bar (⌘F or Ctrl+F). */
|
|
21
|
+
onFind?: () => void;
|
|
22
|
+
label: string;
|
|
23
|
+
/** Receives the scroller, which has the focus of the grid. */
|
|
24
|
+
scrollerRef: RefObject<HTMLDivElement | null>;
|
|
25
|
+
announce: (text: string) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The canvas and the scroller over it (§6 of react.md): keys and pointers become commands, the canvas draws
|
|
29
|
+
* the store without rendering React, and the accessibility rows follow when scrolling pauses. Rendered only in
|
|
30
|
+
* the browser: on the server, the nearest Suspense boundary sends its fallback, the first rows as HTML.
|
|
31
|
+
*/
|
|
32
|
+
export declare function GridBody({ rowHeight, headerHeight, checkboxes, columnGroups, groupHeaderHeight, wrapLines, hooks, onCellAction, onFind, label, scrollerRef, announce, }: GridBodyProps): import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=grid-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-body.d.ts","sourceRoot":"","sources":["../../src/react/grid-body.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EASf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAmIvF,4EAA4E;AAC5E,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,MAAM,EAAE,UAAU,CAAC;IACnB,yDAAyD;IACzD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,YAAY,EACZ,UAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,YAAY,EACZ,MAAM,EACN,KAAK,EACL,WAAW,EACX,QAAQ,GACT,EAAE,aAAa,+BAsiBf"}
|