@weasel-js/core 1.9.2 → 1.9.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 6a1afa1: Canvas text in a CSS generic family — `sans-serif`, `monospace`, `system-ui` and the rest — now renders in that family. The dynamic glyph atlas quoted every family, and a quoted `"sans-serif"` names a font nobody has, so the browser drew it in its default serif; every `DiagramView` on default options was affected.
8
+
9
+ Every font string the kit builds now goes through one helper, `cssFamilyName`, exported from `@weasel-js/font` and `@weasel-js/core`: a generic keyword stays bare, a single named family is quoted, and a family list passes through as written. `fontString` and the DOM face's fallback therefore now quote a named family (`"Helvetica"`), which CSS reads the same.
10
+ - c28a3cb: A canvas no longer claims Space or Enter when focus is on a control those keys activate — a button, a link, a checkbox — so a mounted canvas stops canceling a focused button's activation with its held-Space pan. Other shortcuts still reach the canvas from a focused button. The test is exported as `activatesFocusedControl`, beside `isEditableTarget`.
11
+
12
+ `DiagramView` takes `enableKeybindings`, and a view-only diagram (no `onMove` or `onConnect`) now defaults it off, so it no longer takes held Space from the rest of the page. Pass `enableKeybindings` to keep a view-only diagram's keys on.
13
+ - 7cb27b7: Fields now refer to each other by the full path their values are read and written at (`'camera.type'`, `'pose.y'`).
14
+
15
+ `pair` is no longer a shared label string. A row is declared once, on its first leaf: `pair: { with: 'pose.y', label: 'Position' }`, where `with` names the other leaves on the row (one path or several) and `label` overrides what the row reads, which is otherwise the declaring leaf's `name`. This is a breaking change to the shape: a schema that set `pair: 'Position'` on each member now sets `pair` on the first member only. labkit's builder follows: `.pair({ with: 'y', label: 'Offset' })`. `pairRowsOf` (core) resolves a surface's leaves to their rows, and `SelectionPanel`, `ToolOptionsBar`, and labkit's `ControlPanel` all group rows through it.
16
+
17
+ A new built-in pref kind, `field`, holds such a path. Its control is a picker over the fields of the surface drawing it, labeled `Name (path)`, narrowed by the leaf's optional `kinds`. `prefFieldChoices` lists a schema's fields, with a flag for whether a group's key is part of a path, since a prefs form nests values by group and a node's property panel does not. `PrefsForm` takes `fields` for a form that edits another schema, and `PrefSchemaEditor` edits a leaf's `pair` by picking its partners from the schema's fields.
18
+ - e05c820: `PrefSchemaEditor` now has undo and redo: Undo and Redo buttons over the structure, and Mod+Z, Shift+Mod+Z, and Mod+Y anywhere inside it. A run of edits to one node's attributes undoes as one step, and undo restores the selection. A `schema` the editor did not write itself starts the history over. Add pref and Add group no longer create a node with a made-up key: each opens a dialog asking for a name, an id, and a pref's kind; the id follows the name in camelCase until it is typed into, and a taken or invalid id is refused. The structure tree shows each node as its name with its key beside it, or its key alone when it has no name. Each pane has a header, and the preview's carries a Show hidden switch and Reset values. The exported literal is syntax-highlighted.
19
+
20
+ `@weasel-js/ui` adds `CodeBlock`, a syntax-highlighted block of source with optional line numbers, built on `prism-react-renderer` and colored from the new `--wzl-code-keyword`, `--wzl-code-string`, `--wzl-code-number`, `--wzl-code-constant`, `--wzl-code-property`, and `--wzl-code-name` theme tokens, which have a value for each mode.
21
+
22
+ `historyKey(event)` (`@weasel-js/routing`, re-exported from core) says whether a key event asks for undo or redo. labkit's trial chrome and `LayeredCurveEditor` now read their undo keys through it, so Mod+Y redoes in both.
23
+ - Updated dependencies [6a1afa1]
24
+ - Updated dependencies [c28a3cb]
25
+ - Updated dependencies [e05c820]
26
+ - @weasel-js/font@1.9.3
27
+ - @weasel-js/text@1.9.3
28
+ - @weasel-js/routing@1.9.3
29
+ - @weasel-js/cursor@1.9.3
30
+ - @weasel-js/geom@1.9.3
31
+ - @weasel-js/gestures@1.9.3
32
+ - @weasel-js/history@1.9.3
33
+ - @weasel-js/modes@1.9.3
34
+ - @weasel-js/paint@1.9.3
35
+ - @weasel-js/quantity@1.9.3
36
+ - @weasel-js/react@1.9.3
37
+ - @weasel-js/registry@1.9.3
38
+ - @weasel-js/select@1.9.3
39
+
3
40
  ## 1.9.2
4
41
 
5
42
  ### Patch Changes
@@ -49,14 +49,16 @@ function h(e = {}) {
49
49
  name: "X",
50
50
  description: "Left edge, world units.",
51
51
  default: 0,
52
- pair: "Position"
52
+ pair: {
53
+ with: "pose.y",
54
+ label: "Position"
55
+ }
53
56
  },
54
57
  "pose.y": {
55
58
  kind: "number",
56
59
  name: "Y",
57
60
  description: "Top edge, world units.",
58
- default: 0,
59
- pair: "Position"
61
+ default: 0
60
62
  },
61
63
  "pose.width": {
62
64
  kind: "number",
@@ -64,15 +66,17 @@ function h(e = {}) {
64
66
  description: "Width, world units.",
65
67
  default: 0,
66
68
  min: 0,
67
- pair: "Size"
69
+ pair: {
70
+ with: "pose.height",
71
+ label: "Size"
72
+ }
68
73
  },
69
74
  "pose.height": {
70
75
  kind: "number",
71
76
  name: "H",
72
77
  description: "Height, world units.",
73
78
  default: 0,
74
- min: 0,
75
- pair: "Size"
79
+ min: 0
76
80
  },
77
81
  "pose.rotation": {
78
82
  kind: "number",
@@ -151,7 +155,10 @@ function h(e = {}) {
151
155
  default: "butt",
152
156
  control: "toggle",
153
157
  block: !0,
154
- pair: "Line",
158
+ pair: {
159
+ with: ["data.stroke.join", "data.stroke.align"],
160
+ label: "Line"
161
+ },
155
162
  options: [
156
163
  {
157
164
  value: "butt",
@@ -177,7 +184,6 @@ function h(e = {}) {
177
184
  default: "miter",
178
185
  control: "toggle",
179
186
  block: !0,
180
- pair: "Line",
181
187
  options: [
182
188
  {
183
189
  value: "miter",
@@ -203,7 +209,6 @@ function h(e = {}) {
203
209
  default: "center",
204
210
  control: "toggle",
205
211
  block: !0,
206
- pair: "Line",
207
212
  options: [
208
213
  {
209
214
  value: "inner",
@@ -261,7 +266,10 @@ function h(e = {}) {
261
266
  default: "",
262
267
  control: "select",
263
268
  block: !0,
264
- pair: "Markers",
269
+ pair: {
270
+ with: ["data.stroke.markerMid", "data.stroke.markerEnd"],
271
+ label: "Markers"
272
+ },
265
273
  encoding: d,
266
274
  options: m()
267
275
  },
@@ -272,7 +280,6 @@ function h(e = {}) {
272
280
  default: "",
273
281
  control: "select",
274
282
  block: !0,
275
- pair: "Markers",
276
283
  encoding: d,
277
284
  options: m()
278
285
  },
@@ -283,7 +290,6 @@ function h(e = {}) {
283
290
  default: "",
284
291
  control: "select",
285
292
  block: !0,
286
- pair: "Markers",
287
293
  encoding: d,
288
294
  options: m()
289
295
  }
@@ -317,14 +323,16 @@ function h(e = {}) {
317
323
  default: 16,
318
324
  min: 1,
319
325
  step: 1,
320
- pair: "Size / weight"
326
+ pair: {
327
+ with: "data.style.fontWeight",
328
+ label: "Size / weight"
329
+ }
321
330
  },
322
331
  fontWeight: {
323
332
  kind: "font-weight",
324
333
  name: "Weight",
325
334
  description: "Font weight, from the faces the family has.",
326
- default: 400,
327
- pair: "Size / weight"
335
+ default: 400
328
336
  },
329
337
  fontStyle: {
330
338
  kind: "boolean",
@@ -334,7 +342,15 @@ function h(e = {}) {
334
342
  control: "toggle",
335
343
  icon: "italic",
336
344
  short: ["I"],
337
- pair: "Style",
345
+ pair: {
346
+ with: [
347
+ "data.style.underline",
348
+ "data.style.strikethrough",
349
+ "data.style.overline",
350
+ "data.style.script"
351
+ ],
352
+ label: "Style"
353
+ },
338
354
  encoding: f
339
355
  },
340
356
  underline: {
@@ -344,8 +360,7 @@ function h(e = {}) {
344
360
  default: !1,
345
361
  control: "toggle",
346
362
  icon: "underline",
347
- short: ["U"],
348
- pair: "Style"
363
+ short: ["U"]
349
364
  },
350
365
  strikethrough: {
351
366
  kind: "boolean",
@@ -354,8 +369,7 @@ function h(e = {}) {
354
369
  default: !1,
355
370
  control: "toggle",
356
371
  icon: "strikethrough",
357
- short: ["S"],
358
- pair: "Style"
372
+ short: ["S"]
359
373
  },
360
374
  overline: {
361
375
  kind: "boolean",
@@ -364,8 +378,7 @@ function h(e = {}) {
364
378
  default: !1,
365
379
  control: "toggle",
366
380
  icon: "overline",
367
- short: ["O"],
368
- pair: "Style"
381
+ short: ["O"]
369
382
  },
370
383
  script: {
371
384
  kind: "enum",
@@ -374,7 +387,6 @@ function h(e = {}) {
374
387
  default: void 0,
375
388
  control: "toggle",
376
389
  clearable: !0,
377
- pair: "Style",
378
390
  options: [{
379
391
  value: "super",
380
392
  label: "Superscript",
@@ -1 +1 @@
1
- {"version":3,"file":"defaultNodeProperties.js","names":["rotationDegreesUnit","prefUnit","ANGLE_RADIANS","strokeWidthOf","w","stroke","strokeDashEncoding","strokeDashStyleOf","dash","style","dashForStrokeStyle","markerEncoding","ref","value","italicEncoding","stored","on","alignEncoding","direction","resolveAlign","edge","markerOptions","listMarkers","m","shapeSchema","opts","defaultNodeProperties","KIT_SHAPE_KINDS","name","inferredNodeProperties","inferredNodeRouting"],"sources":["../../../src/canvas/SceneCanvas/defaultNodeProperties.ts"],"sourcesContent":["import { inferredNodeRouting } from './defaultNodeRouting';\nimport { KIT_SHAPE_KINDS } from 'core/shapeKinds';\nimport { listMarkers } from 'core/strokeMarkers';\nimport { dashForStrokeStyle, strokeDashStyleOf } from '@weasel-js/paint';\nimport { resolveAlign, type TextAlign } from '@weasel-js/text';\nimport type { NodePropertiesEntry } from 'core/scene/NodeProperties';\nimport { ANGLE_RADIANS } from '@weasel-js/quantity';\nimport { prefUnit, type ToolPrefBooleanEncoding, type ToolPrefEnumEncoding, type ToolPrefGroup, type ToolPrefNumberUnit } from 'tools/prefs';\n\n/** Radians-stored / degrees-shown conversion for `pose.rotation` leaves.\n * Display rounds to 0.1° so a canonical radian value doesn't render as\n * a 15-digit float. */\nexport const rotationDegreesUnit: ToolPrefNumberUnit = prefUnit(ANGLE_RADIANS, 'deg', {\n precision: 1,\n suffix: '°',\n});\n\n/** `Stroke.width` off a partly-typed stroke object, or `undefined`. */\nfunction strokeWidthOf(stroke: Record<string, unknown> | undefined): number | { px: number } | undefined {\n const w = stroke?.width;\n if (typeof w === 'number') return w;\n if (typeof w === 'object' && w !== null && typeof (w as { px?: unknown }).px === 'number') {\n return w as { px: number };\n }\n return undefined;\n}\n\n/** `Stroke.dash` — a stored array of lengths — read and written as a named\n * style. The presets are multiples of the sibling `width`, which is why the\n * encoding is handed the whole stroke rather than the field. */\nconst strokeDashEncoding: ToolPrefEnumEncoding = {\n read: (dash, stroke) =>\n stroke === undefined\n ? undefined\n : strokeDashStyleOf(Array.isArray(dash) ? (dash as number[]) : undefined, strokeWidthOf(stroke)),\n write: (style, stroke) =>\n style === 'dashed' || style === 'dotted'\n ? dashForStrokeStyle(style, strokeWidthOf(stroke))\n // `solid` is stored as no dash at all. `custom` is reportable, not\n // authorable: it names an imported array, and the array it names is the\n // one already stored.\n : style === 'solid'\n ? undefined\n : stroke?.dash,\n};\n\n/** `Stroke.markerStart` / `markerMid` / `markerEnd` — a `MarkerRef` — read and\n * written as a bare key, with the empty string standing for no marker. */\nconst markerEncoding: ToolPrefEnumEncoding = {\n read: (ref) => {\n if (typeof ref === 'string') return ref;\n if (ref && typeof ref === 'object' && 'key' in ref) return String((ref as { key: string }).key);\n return '';\n },\n write: (value) => (value === '' ? undefined : value),\n};\n\n/** `TextStyle.fontStyle` as an Italic flag. Off removes the field rather than\n * storing `'normal'`, which is what an absent one already means. */\nconst italicEncoding: ToolPrefBooleanEncoding = {\n read: (stored) => stored === 'italic',\n write: (on) => (on ? 'italic' : undefined),\n};\n\n/** `TextStyle.align` read as the edge that paints, or as `justify`. The model\n * also holds the reading-order pair `start` / `end`, which the segments would\n * otherwise leave unlit; they read through `direction`, and a click writes the\n * edge. */\nconst alignEncoding: ToolPrefEnumEncoding = {\n read: (stored, style) => {\n if (stored === undefined || stored === 'justify') return stored;\n const direction = style?.direction === 'rtl' ? 'rtl' : 'ltr';\n return resolveAlign(stored as TextAlign, direction);\n },\n write: (edge) => edge,\n};\n\n/** Options come from the registry, so a consumer's registered entry appears in\n * the picker with no kit edit. A `select` rather than a `toggle`: nine options\n * will not fit a segmented strip. */\nconst markerOptions = () => [\n { value: '', label: 'None' },\n ...listMarkers().map((m) => ({ value: m.id, label: m.id })),\n];\n\n/** Build the standard shape schema — Layout (pose box + rotation) +\n * Appearance (fill / stroke), optionally a Text group. Matches the kit's\n * builtin-shape data template (`{ path, fill, stroke?, text? }`,\n * `useBuiltinShapeTools`). */\nfunction shapeSchema(opts: { text?: boolean } = {}): ToolPrefGroup {\n return {\n name: 'Properties',\n children: {\n layout: {\n name: 'Layout',\n children: {\n 'pose.x': { kind: 'number', name: 'X', description: 'Left edge, world units.', default: 0, pair: 'Position' },\n 'pose.y': { kind: 'number', name: 'Y', description: 'Top edge, world units.', default: 0, pair: 'Position' },\n 'pose.width': { kind: 'number', name: 'W', description: 'Width, world units.', default: 0, min: 0, pair: 'Size' },\n 'pose.height': { kind: 'number', name: 'H', description: 'Height, world units.', default: 0, min: 0, pair: 'Size' },\n 'pose.rotation': { kind: 'number', name: 'Rotation', description: 'Rotation about the box center.', default: 0, step: 1, unit: rotationDegreesUnit },\n },\n },\n // What the node *is* outranks how it is painted: a text node's copy is\n // the first thing an editor reaches for.\n ...(opts.text\n ? {\n content: {\n name: 'Content',\n children: {\n // `block`: the content is the section, so a 64px label column\n // reading \"Text\" inside a section reading \"Text\" is one word\n // twice and a narrower field for the sake of it.\n 'data.text': { kind: 'string', name: 'Text', description: 'Text content.', default: '', block: true },\n },\n },\n }\n : {}),\n appearance: {\n // Headless: `Fill` and `Stroke` head their own blocks, and an\n // `Appearance` rule over them names neither of the two paints a\n // reader is looking at.\n name: '',\n children: {\n // A `paint` leaf, not a `color` one: `data.fill` is the tagged\n // `FillStyle` union, so a color control pointed at it would read\n // `undefined` off a gradient and write a bare string over it.\n // `block` for the same reason every stroke field is: the kind bar\n // and the per-kind editor want the width a 64px label column takes.\n 'data.fill': { kind: 'paint', name: 'Fill', description: 'Fill paint.', default: { fill: 'solid', color: '#000000ff' }, alpha: true, block: true },\n // An object leaf: `data.stroke` is a whole `Stroke`, and its fields\n // belong to one value. Sibling leaves addressing into it would each\n // write one field of a value they can only half see.\n 'data.stroke': {\n kind: 'object',\n name: 'Stroke',\n description: 'Stroke paint and line geometry.',\n default: { paint: { fill: 'solid', color: '#000000ff' }, width: 1 },\n block: true,\n children: {\n // Every row is `block`: under a heading already reading STROKE,\n // a 64px label column spells the section name again and takes\n // the width the controls need. Each field leads with its own\n // glyph instead.\n // Unpaired: the paint field is a whole paint editor — a kind bar\n // over a per-kind body — and cannot share a row with a slider.\n width: { kind: 'number', name: 'Width', description: 'Stroke width, world units.', default: 1, min: 0, max: 20, step: 0.5, control: 'slider', icon: 'strokeWidth', block: true },\n paint: { kind: 'paint', name: 'Paint', description: 'Stroke paint.', default: { fill: 'solid', color: '#000000ff' }, alpha: true, block: true },\n // Three options each: a segmented control shows every one at\n // once where a select shows the current one and hides the rest\n // behind a click.\n cap: { kind: 'enum', name: 'Cap', description: 'How an open end is drawn.', default: 'butt', control: 'toggle', block: true, pair: 'Line', options: [{ value: 'butt', label: 'Butt', icon: 'capButt' }, { value: 'round', label: 'Round', icon: 'capRound' }, { value: 'square', label: 'Square', icon: 'capSquare' }] },\n join: { kind: 'enum', name: 'Join', description: 'How a corner is drawn.', default: 'miter', control: 'toggle', block: true, pair: 'Line', options: [{ value: 'miter', label: 'Miter', icon: 'joinMiter' }, { value: 'round', label: 'Round', icon: 'joinRound' }, { value: 'bevel', label: 'Bevel', icon: 'joinBevel' }] },\n align: { kind: 'enum', name: 'Align', description: 'Where the ribbon sits relative to the edge.', default: 'center', control: 'toggle', block: true, pair: 'Line', options: [{ value: 'inner', label: 'Inner', icon: 'alignInner' }, { value: 'center', label: 'Center', icon: 'alignCenter' }, { value: 'outer', label: 'Outer', icon: 'alignOuter' }] },\n // Its own row: three bars already fill the one above, and the\n // dash pattern is a property of the line rather than of how the\n // ribbon meets the geometry.\n dash: { kind: 'enum', name: 'Style', description: 'Solid, dashed or dotted. Dash lengths are multiples of the stroke width, so a style holds as the width changes.', default: 'solid', control: 'toggle', block: true, encoding: strokeDashEncoding, options: [{ value: 'solid', label: 'Solid', icon: 'dashSolid' }, { value: 'dashed', label: 'Dashed', icon: 'dashDashed' }, { value: 'dotted', label: 'Dotted', icon: 'dashDotted' }, { value: 'custom', label: 'Custom', icon: 'dashCustom', disabled: true }] },\n markerStart: { kind: 'enum', name: 'Start', description: 'Marker at the first vertex of each open subpath.', default: '', control: 'select', block: true, pair: 'Markers', encoding: markerEncoding, options: markerOptions() },\n markerMid: { kind: 'enum', name: 'Mid', description: 'Marker at every interior authored vertex.', default: '', control: 'select', block: true, pair: 'Markers', encoding: markerEncoding, options: markerOptions() },\n markerEnd: { kind: 'enum', name: 'End', description: 'Marker at the last vertex of each open subpath.', default: '', control: 'select', block: true, pair: 'Markers', encoding: markerEncoding, options: markerOptions() },\n },\n },\n },\n },\n ...(opts.text\n ? {\n text: {\n // Headless: `Character` and `Paragraph` carry the labels, and a\n // `Typography` heading over them names nothing a reader can't\n // already see.\n name: '',\n children: {\n // One object leaf, not a row of siblings addressing into it:\n // `data.style` is a `TextStyle`, and its character and\n // paragraph fields are one value that reads as two lists.\n // The groups head those lists and contribute nothing to the\n // path — a field inside one is still a field of the style.\n 'data.style': {\n kind: 'object',\n name: 'Style',\n description: 'Typography for the whole node. Its color is the node\\'s own `data.fill`, in Appearance.',\n default: {},\n block: true,\n children: {\n character: {\n name: 'Character',\n children: {\n fontFamily: { kind: 'font-family', name: 'Font', description: 'Registered font family.', default: 'sans-serif' },\n fontSize: { kind: 'number', name: 'Size', description: 'Font size, world units.', default: 16, min: 1, step: 1, pair: 'Size / weight' },\n fontWeight: { kind: 'font-weight', name: 'Weight', description: 'Font weight, from the faces the family has.', default: 400, pair: 'Size / weight' },\n // One row of segments, the strip every text editor\n // draws: the slant, the three rules, then the two\n // scripts. Italic is a flag here although the field\n // is `fontStyle`, whose only other value is upright.\n fontStyle: { kind: 'boolean', name: 'Italic', description: 'Set the text in its italic face.', default: false, control: 'toggle', icon: 'italic', short: ['I'], pair: 'Style', encoding: italicEncoding },\n underline: { kind: 'boolean', name: 'Underline', description: 'Underline the text.', default: false, control: 'toggle', icon: 'underline', short: ['U'], pair: 'Style' },\n strikethrough: { kind: 'boolean', name: 'Strikethrough', description: 'Strike through the text.', default: false, control: 'toggle', icon: 'strikethrough', short: ['S'], pair: 'Style' },\n overline: { kind: 'boolean', name: 'Overline', description: 'Rule the text above its ascent.', default: false, control: 'toggle', icon: 'overline', short: ['O'], pair: 'Style' },\n script: { kind: 'enum', name: 'Script', description: 'Set the text smaller and raised or lowered, on the line it would otherwise hold.', default: undefined, control: 'toggle', clearable: true, pair: 'Style', options: [{ value: 'super', label: 'Superscript', icon: 'superscript' }, { value: 'sub', label: 'Subscript', icon: 'subscript' }] },\n letterSpacing: { kind: 'number', name: 'Tracking', description: 'Extra advance per glyph, world units.', default: 0, step: 0.1 },\n textTransform: { kind: 'enum', name: 'Case', description: 'Draw the text in capitals, lowercase or title case. The text itself is unchanged.', default: 'none', control: 'toggle', options: [{ value: 'none', label: 'None', short: ['–'] }, { value: 'uppercase', label: 'Uppercase', short: ['AA'] }, { value: 'lowercase', label: 'Lowercase', short: ['aa'] }, { value: 'capitalize', label: 'Capitalize', short: ['Aa'] }] },\n fontVariantCaps: { kind: 'enum', name: 'Small caps', description: 'Draw lowercase letters as smaller capitals. The text itself is unchanged.', default: 'normal', control: 'toggle', options: [{ value: 'normal', label: 'Normal', short: ['–'] }, { value: 'small-caps', label: 'Small caps', short: ['Sc'] }] },\n },\n },\n paragraph: {\n name: 'Paragraph',\n children: {\n lineHeight: { kind: 'number', name: 'Leading', description: 'Line height as a multiple of font size.', default: 1.2, min: 0.5, step: 0.1 },\n wrap: { kind: 'boolean', name: 'Wrap', description: 'Break lines between words at the box width.', default: false, control: 'switch' },\n direction: { kind: 'enum', name: 'Direction', description: 'Reading direction.', default: 'ltr', control: 'toggle', options: [{ value: 'ltr', label: 'Left to right', short: ['LTR'] }, { value: 'rtl', label: 'Right to left', short: ['RTL'] }] },\n // Last, so the box's vertical alignment — a field of\n // the node rather than of its style — follows it.\n align: { kind: 'enum', name: 'Align', description: 'Horizontal alignment.', default: 'left', control: 'toggle', encoding: alignEncoding, options: [{ value: 'left', label: 'Left', icon: 'textAlignLeft' }, { value: 'center', label: 'Center', icon: 'textAlignCenter' }, { value: 'right', label: 'Right', icon: 'textAlignRight' }, { value: 'justify', label: 'Justify', icon: 'textAlignJustify' }] },\n },\n },\n },\n },\n 'data.verticalAlign': { kind: 'enum', name: 'Vertical', description: 'Where the lines sit in the box\\'s height.', default: 'top', control: 'toggle', options: [{ value: 'top', label: 'Top', icon: 'textAlignTop' }, { value: 'center', label: 'Middle', icon: 'textAlignMiddle' }, { value: 'bottom', label: 'Bottom', icon: 'textAlignBottom' }] },\n },\n },\n }\n : {}),\n },\n };\n}\n\n/**\n * Default properties-trait entries covering the kit's built-in shape\n * kinds (`KIT_SHAPE_KINDS`) — the sibling of `defaultNodeRouting`. Every\n * kind gets the standard box schema; `text` adds a Text group. In\n * lockstep with `KIT_SHAPE_KINDS` by construction (derived via `.map`).\n */\nexport const defaultNodeProperties: readonly NodePropertiesEntry[] =\n KIT_SHAPE_KINDS.map((name) => ({\n name,\n schema: shapeSchema({ text: name === 'text' }),\n }));\n\n/**\n * Properties-trait entries for the *inferred* routing kinds\n * (`inferredNodeRouting`: `text` / `path` / `image`) — the vocabulary\n * consumers produce when they don't tag `data.kind` (e.g. WeaselDraw).\n * In lockstep with `inferredNodeRouting` by construction.\n */\nexport const inferredNodeProperties: readonly NodePropertiesEntry[] =\n inferredNodeRouting.map((e) => ({\n name: e.name,\n schema: shapeSchema({ text: e.name === 'text' }),\n }));\n"],"mappings":"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"}
1
+ {"version":3,"file":"defaultNodeProperties.js","names":["rotationDegreesUnit","prefUnit","ANGLE_RADIANS","strokeWidthOf","w","stroke","strokeDashEncoding","strokeDashStyleOf","dash","style","dashForStrokeStyle","markerEncoding","ref","value","italicEncoding","stored","on","alignEncoding","direction","resolveAlign","edge","markerOptions","listMarkers","m","shapeSchema","opts","defaultNodeProperties","KIT_SHAPE_KINDS","name","inferredNodeProperties","inferredNodeRouting"],"sources":["../../../src/canvas/SceneCanvas/defaultNodeProperties.ts"],"sourcesContent":["import { inferredNodeRouting } from './defaultNodeRouting';\nimport { KIT_SHAPE_KINDS } from 'core/shapeKinds';\nimport { listMarkers } from 'core/strokeMarkers';\nimport { dashForStrokeStyle, strokeDashStyleOf } from '@weasel-js/paint';\nimport { resolveAlign, type TextAlign } from '@weasel-js/text';\nimport type { NodePropertiesEntry } from 'core/scene/NodeProperties';\nimport { ANGLE_RADIANS } from '@weasel-js/quantity';\nimport { prefUnit, type ToolPrefBooleanEncoding, type ToolPrefEnumEncoding, type ToolPrefGroup, type ToolPrefNumberUnit } from 'tools/prefs';\n\n/** Radians-stored / degrees-shown conversion for `pose.rotation` leaves.\n * Display rounds to 0.1° so a canonical radian value doesn't render as\n * a 15-digit float. */\nexport const rotationDegreesUnit: ToolPrefNumberUnit = prefUnit(ANGLE_RADIANS, 'deg', {\n precision: 1,\n suffix: '°',\n});\n\n/** `Stroke.width` off a partly-typed stroke object, or `undefined`. */\nfunction strokeWidthOf(stroke: Record<string, unknown> | undefined): number | { px: number } | undefined {\n const w = stroke?.width;\n if (typeof w === 'number') return w;\n if (typeof w === 'object' && w !== null && typeof (w as { px?: unknown }).px === 'number') {\n return w as { px: number };\n }\n return undefined;\n}\n\n/** `Stroke.dash` — a stored array of lengths — read and written as a named\n * style. The presets are multiples of the sibling `width`, which is why the\n * encoding is handed the whole stroke rather than the field. */\nconst strokeDashEncoding: ToolPrefEnumEncoding = {\n read: (dash, stroke) =>\n stroke === undefined\n ? undefined\n : strokeDashStyleOf(Array.isArray(dash) ? (dash as number[]) : undefined, strokeWidthOf(stroke)),\n write: (style, stroke) =>\n style === 'dashed' || style === 'dotted'\n ? dashForStrokeStyle(style, strokeWidthOf(stroke))\n // `solid` is stored as no dash at all. `custom` is reportable, not\n // authorable: it names an imported array, and the array it names is the\n // one already stored.\n : style === 'solid'\n ? undefined\n : stroke?.dash,\n};\n\n/** `Stroke.markerStart` / `markerMid` / `markerEnd` — a `MarkerRef` — read and\n * written as a bare key, with the empty string standing for no marker. */\nconst markerEncoding: ToolPrefEnumEncoding = {\n read: (ref) => {\n if (typeof ref === 'string') return ref;\n if (ref && typeof ref === 'object' && 'key' in ref) return String((ref as { key: string }).key);\n return '';\n },\n write: (value) => (value === '' ? undefined : value),\n};\n\n/** `TextStyle.fontStyle` as an Italic flag. Off removes the field rather than\n * storing `'normal'`, which is what an absent one already means. */\nconst italicEncoding: ToolPrefBooleanEncoding = {\n read: (stored) => stored === 'italic',\n write: (on) => (on ? 'italic' : undefined),\n};\n\n/** `TextStyle.align` read as the edge that paints, or as `justify`. The model\n * also holds the reading-order pair `start` / `end`, which the segments would\n * otherwise leave unlit; they read through `direction`, and a click writes the\n * edge. */\nconst alignEncoding: ToolPrefEnumEncoding = {\n read: (stored, style) => {\n if (stored === undefined || stored === 'justify') return stored;\n const direction = style?.direction === 'rtl' ? 'rtl' : 'ltr';\n return resolveAlign(stored as TextAlign, direction);\n },\n write: (edge) => edge,\n};\n\n/** Options come from the registry, so a consumer's registered entry appears in\n * the picker with no kit edit. A `select` rather than a `toggle`: nine options\n * will not fit a segmented strip. */\nconst markerOptions = () => [\n { value: '', label: 'None' },\n ...listMarkers().map((m) => ({ value: m.id, label: m.id })),\n];\n\n/** Build the standard shape schema — Layout (pose box + rotation) +\n * Appearance (fill / stroke), optionally a Text group. Matches the kit's\n * builtin-shape data template (`{ path, fill, stroke?, text? }`,\n * `useBuiltinShapeTools`). */\nfunction shapeSchema(opts: { text?: boolean } = {}): ToolPrefGroup {\n return {\n name: 'Properties',\n children: {\n layout: {\n name: 'Layout',\n children: {\n 'pose.x': { kind: 'number', name: 'X', description: 'Left edge, world units.', default: 0, pair: { with: 'pose.y', label: 'Position' } },\n 'pose.y': { kind: 'number', name: 'Y', description: 'Top edge, world units.', default: 0 },\n 'pose.width': { kind: 'number', name: 'W', description: 'Width, world units.', default: 0, min: 0, pair: { with: 'pose.height', label: 'Size' } },\n 'pose.height': { kind: 'number', name: 'H', description: 'Height, world units.', default: 0, min: 0 },\n 'pose.rotation': { kind: 'number', name: 'Rotation', description: 'Rotation about the box center.', default: 0, step: 1, unit: rotationDegreesUnit },\n },\n },\n // What the node *is* outranks how it is painted: a text node's copy is\n // the first thing an editor reaches for.\n ...(opts.text\n ? {\n content: {\n name: 'Content',\n children: {\n // `block`: the content is the section, so a 64px label column\n // reading \"Text\" inside a section reading \"Text\" is one word\n // twice and a narrower field for the sake of it.\n 'data.text': { kind: 'string', name: 'Text', description: 'Text content.', default: '', block: true },\n },\n },\n }\n : {}),\n appearance: {\n // Headless: `Fill` and `Stroke` head their own blocks, and an\n // `Appearance` rule over them names neither of the two paints a\n // reader is looking at.\n name: '',\n children: {\n // A `paint` leaf, not a `color` one: `data.fill` is the tagged\n // `FillStyle` union, so a color control pointed at it would read\n // `undefined` off a gradient and write a bare string over it.\n // `block` for the same reason every stroke field is: the kind bar\n // and the per-kind editor want the width a 64px label column takes.\n 'data.fill': { kind: 'paint', name: 'Fill', description: 'Fill paint.', default: { fill: 'solid', color: '#000000ff' }, alpha: true, block: true },\n // An object leaf: `data.stroke` is a whole `Stroke`, and its fields\n // belong to one value. Sibling leaves addressing into it would each\n // write one field of a value they can only half see.\n 'data.stroke': {\n kind: 'object',\n name: 'Stroke',\n description: 'Stroke paint and line geometry.',\n default: { paint: { fill: 'solid', color: '#000000ff' }, width: 1 },\n block: true,\n children: {\n // Every row is `block`: under a heading already reading STROKE,\n // a 64px label column spells the section name again and takes\n // the width the controls need. Each field leads with its own\n // glyph instead.\n // Unpaired: the paint field is a whole paint editor — a kind bar\n // over a per-kind body — and cannot share a row with a slider.\n width: { kind: 'number', name: 'Width', description: 'Stroke width, world units.', default: 1, min: 0, max: 20, step: 0.5, control: 'slider', icon: 'strokeWidth', block: true },\n paint: { kind: 'paint', name: 'Paint', description: 'Stroke paint.', default: { fill: 'solid', color: '#000000ff' }, alpha: true, block: true },\n // Three options each: a segmented control shows every one at\n // once where a select shows the current one and hides the rest\n // behind a click.\n cap: { kind: 'enum', name: 'Cap', description: 'How an open end is drawn.', default: 'butt', control: 'toggle', block: true, pair: { with: ['data.stroke.join', 'data.stroke.align'], label: 'Line' }, options: [{ value: 'butt', label: 'Butt', icon: 'capButt' }, { value: 'round', label: 'Round', icon: 'capRound' }, { value: 'square', label: 'Square', icon: 'capSquare' }] },\n join: { kind: 'enum', name: 'Join', description: 'How a corner is drawn.', default: 'miter', control: 'toggle', block: true, options: [{ value: 'miter', label: 'Miter', icon: 'joinMiter' }, { value: 'round', label: 'Round', icon: 'joinRound' }, { value: 'bevel', label: 'Bevel', icon: 'joinBevel' }] },\n align: { kind: 'enum', name: 'Align', description: 'Where the ribbon sits relative to the edge.', default: 'center', control: 'toggle', block: true, options: [{ value: 'inner', label: 'Inner', icon: 'alignInner' }, { value: 'center', label: 'Center', icon: 'alignCenter' }, { value: 'outer', label: 'Outer', icon: 'alignOuter' }] },\n // Its own row: three bars already fill the one above, and the\n // dash pattern is a property of the line rather than of how the\n // ribbon meets the geometry.\n dash: { kind: 'enum', name: 'Style', description: 'Solid, dashed or dotted. Dash lengths are multiples of the stroke width, so a style holds as the width changes.', default: 'solid', control: 'toggle', block: true, encoding: strokeDashEncoding, options: [{ value: 'solid', label: 'Solid', icon: 'dashSolid' }, { value: 'dashed', label: 'Dashed', icon: 'dashDashed' }, { value: 'dotted', label: 'Dotted', icon: 'dashDotted' }, { value: 'custom', label: 'Custom', icon: 'dashCustom', disabled: true }] },\n markerStart: { kind: 'enum', name: 'Start', description: 'Marker at the first vertex of each open subpath.', default: '', control: 'select', block: true, pair: { with: ['data.stroke.markerMid', 'data.stroke.markerEnd'], label: 'Markers' }, encoding: markerEncoding, options: markerOptions() },\n markerMid: { kind: 'enum', name: 'Mid', description: 'Marker at every interior authored vertex.', default: '', control: 'select', block: true, encoding: markerEncoding, options: markerOptions() },\n markerEnd: { kind: 'enum', name: 'End', description: 'Marker at the last vertex of each open subpath.', default: '', control: 'select', block: true, encoding: markerEncoding, options: markerOptions() },\n },\n },\n },\n },\n ...(opts.text\n ? {\n text: {\n // Headless: `Character` and `Paragraph` carry the labels, and a\n // `Typography` heading over them names nothing a reader can't\n // already see.\n name: '',\n children: {\n // One object leaf, not a row of siblings addressing into it:\n // `data.style` is a `TextStyle`, and its character and\n // paragraph fields are one value that reads as two lists.\n // The groups head those lists and contribute nothing to the\n // path — a field inside one is still a field of the style.\n 'data.style': {\n kind: 'object',\n name: 'Style',\n description: 'Typography for the whole node. Its color is the node\\'s own `data.fill`, in Appearance.',\n default: {},\n block: true,\n children: {\n character: {\n name: 'Character',\n children: {\n fontFamily: { kind: 'font-family', name: 'Font', description: 'Registered font family.', default: 'sans-serif' },\n fontSize: { kind: 'number', name: 'Size', description: 'Font size, world units.', default: 16, min: 1, step: 1, pair: { with: 'data.style.fontWeight', label: 'Size / weight' } },\n fontWeight: { kind: 'font-weight', name: 'Weight', description: 'Font weight, from the faces the family has.', default: 400 },\n // One row of segments, the strip every text editor\n // draws: the slant, the three rules, then the two\n // scripts. Italic is a flag here although the field\n // is `fontStyle`, whose only other value is upright.\n fontStyle: { kind: 'boolean', name: 'Italic', description: 'Set the text in its italic face.', default: false, control: 'toggle', icon: 'italic', short: ['I'], pair: { with: ['data.style.underline', 'data.style.strikethrough', 'data.style.overline', 'data.style.script'], label: 'Style' }, encoding: italicEncoding },\n underline: { kind: 'boolean', name: 'Underline', description: 'Underline the text.', default: false, control: 'toggle', icon: 'underline', short: ['U'] },\n strikethrough: { kind: 'boolean', name: 'Strikethrough', description: 'Strike through the text.', default: false, control: 'toggle', icon: 'strikethrough', short: ['S'] },\n overline: { kind: 'boolean', name: 'Overline', description: 'Rule the text above its ascent.', default: false, control: 'toggle', icon: 'overline', short: ['O'] },\n script: { kind: 'enum', name: 'Script', description: 'Set the text smaller and raised or lowered, on the line it would otherwise hold.', default: undefined, control: 'toggle', clearable: true, options: [{ value: 'super', label: 'Superscript', icon: 'superscript' }, { value: 'sub', label: 'Subscript', icon: 'subscript' }] },\n letterSpacing: { kind: 'number', name: 'Tracking', description: 'Extra advance per glyph, world units.', default: 0, step: 0.1 },\n textTransform: { kind: 'enum', name: 'Case', description: 'Draw the text in capitals, lowercase or title case. The text itself is unchanged.', default: 'none', control: 'toggle', options: [{ value: 'none', label: 'None', short: ['–'] }, { value: 'uppercase', label: 'Uppercase', short: ['AA'] }, { value: 'lowercase', label: 'Lowercase', short: ['aa'] }, { value: 'capitalize', label: 'Capitalize', short: ['Aa'] }] },\n fontVariantCaps: { kind: 'enum', name: 'Small caps', description: 'Draw lowercase letters as smaller capitals. The text itself is unchanged.', default: 'normal', control: 'toggle', options: [{ value: 'normal', label: 'Normal', short: ['–'] }, { value: 'small-caps', label: 'Small caps', short: ['Sc'] }] },\n },\n },\n paragraph: {\n name: 'Paragraph',\n children: {\n lineHeight: { kind: 'number', name: 'Leading', description: 'Line height as a multiple of font size.', default: 1.2, min: 0.5, step: 0.1 },\n wrap: { kind: 'boolean', name: 'Wrap', description: 'Break lines between words at the box width.', default: false, control: 'switch' },\n direction: { kind: 'enum', name: 'Direction', description: 'Reading direction.', default: 'ltr', control: 'toggle', options: [{ value: 'ltr', label: 'Left to right', short: ['LTR'] }, { value: 'rtl', label: 'Right to left', short: ['RTL'] }] },\n // Last, so the box's vertical alignment — a field of\n // the node rather than of its style — follows it.\n align: { kind: 'enum', name: 'Align', description: 'Horizontal alignment.', default: 'left', control: 'toggle', encoding: alignEncoding, options: [{ value: 'left', label: 'Left', icon: 'textAlignLeft' }, { value: 'center', label: 'Center', icon: 'textAlignCenter' }, { value: 'right', label: 'Right', icon: 'textAlignRight' }, { value: 'justify', label: 'Justify', icon: 'textAlignJustify' }] },\n },\n },\n },\n },\n 'data.verticalAlign': { kind: 'enum', name: 'Vertical', description: 'Where the lines sit in the box\\'s height.', default: 'top', control: 'toggle', options: [{ value: 'top', label: 'Top', icon: 'textAlignTop' }, { value: 'center', label: 'Middle', icon: 'textAlignMiddle' }, { value: 'bottom', label: 'Bottom', icon: 'textAlignBottom' }] },\n },\n },\n }\n : {}),\n },\n };\n}\n\n/**\n * Default properties-trait entries covering the kit's built-in shape\n * kinds (`KIT_SHAPE_KINDS`) — the sibling of `defaultNodeRouting`. Every\n * kind gets the standard box schema; `text` adds a Text group. In\n * lockstep with `KIT_SHAPE_KINDS` by construction (derived via `.map`).\n */\nexport const defaultNodeProperties: readonly NodePropertiesEntry[] =\n KIT_SHAPE_KINDS.map((name) => ({\n name,\n schema: shapeSchema({ text: name === 'text' }),\n }));\n\n/**\n * Properties-trait entries for the *inferred* routing kinds\n * (`inferredNodeRouting`: `text` / `path` / `image`) — the vocabulary\n * consumers produce when they don't tag `data.kind` (e.g. WeaselDraw).\n * In lockstep with `inferredNodeRouting` by construction.\n */\nexport const inferredNodeProperties: readonly NodePropertiesEntry[] =\n inferredNodeRouting.map((e) => ({\n name: e.name,\n schema: shapeSchema({ text: e.name === 'text' }),\n }));\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { s as RenderLayer, u as Dims, w as RedrawSource, x as Scene, y as RectPose, z as InertiaConfig, V as ViewAnimationOptions, A as PoseComposition, B as PoseAdapter, N as Node$1, F as GestureLifecycleOptions, H as SliceDep, J as ToolsApi, K as Tool, L as Contribution, M as LayerHit, D as DrawCommand, O as ChromeState, Q as VertexColorChannel, U as LayerGroup, X as InsertExtras, Y as SerializedScene, Z as GeometryProjection, _ as ContentHandlerEntry, $ as SvgIngestOptions, a0 as AnyTool, a1 as PanBounds, a2 as Animator, a3 as ColorOverrideRegistry, a4 as UseSceneOptions, a5 as SceneRegistry, a6 as RegisteredOp, a7 as PoseOverrides, a8 as AddNodeSpec, a9 as DerivePoseFn, aa as DerivePathFn, ab as DerivedDep, ac as ViewportDims, P as PathDrawCommand, ad as ViewApi, ae as Affordance, af as AffordanceRegion, ag as AffordanceBinding, ah as CommonAffordanceScratch, T as TextDrawCommand, ai as BooleansAdapter, aj as CreateOutlinesAdapter, ak as UseAnimatorOptions, al as AnimationHandle, am as SampledTrack, an as SceneArrivalHandler } from './builtins-C-VgUlWI.js';
2
2
  export { ao as AddLayerSpec, ap as AnimateToBoundsOptions, aq as AnimationInfo, ar as AnimationKind, as as AnimatorEvent, at as AnimatorListener, au as AreaSelectDep, av as BooleanOp, aw as BooleanOpResult, ax as ClipFromPoseFn, ay as ClipboardDep, az as ClipboardIngestCtx, aA as ColorOverride, aB as ColorOverrideFn, aC as ContainerNode, aD as ContributionChrome, aE as CreateOutlinesResult, C as CullRect, aF as CustomPaintContext, aG as DecayLoopConfig, aH as DecayOptions, aI as EditAnchorsDep, E as Effect, aJ as EventBooking, aK as EventBookingHandle, aL as EventTrack, aM as FitViewToBoundsOptions, G as GroupDrawCommand, aN as HitTestView, aO as IDENTITY_POSE_COMPOSITION, a as ImageDrawCommand, b as ImageMinification, aP as IngestCtx, aQ as IngestionDep, aR as InsertDep, aS as Interpolate, aT as InterpolatorFactory, aU as Keyframe, aV as LassoSelectDep, aW as LayerCommandCache, aX as LayerDrawFailure, aY as LayerDrawSpan, aZ as LayerRecord, a_ as LayoutDep, a$ as LayoutFrame, b0 as LayoutMove, b1 as LeafNode, b2 as LiveAnimation, b3 as LoopFactory, b4 as LoopOptions, b5 as NestedTimeline, b6 as NodeAtPointDep, b7 as OutlinePathSpec, b8 as Overlay, b9 as PathInWorldPose, ba as PhysicsHandle, bb as PhysicsOptions, bc as PointerContextProvider, bd as PointerContextValue, be as PointerWorldPos, bf as PoseClosure, bg as PoseOverride, f as RenderTarget, bh as ResizePolicy, S as SPRITE_STRIDE, bi as SerializedLayer, bj as SerializedNode, g as ShaderDrawCommand, bk as SnapDep, bl as SpringOptions, i as SpriteSheet, j as SpritesDrawCommand, bm as StaggerBuilder, bn as StaggerDelay, bo as StaggerFactory, bp as StaggerOptions, bq as StaggerPerItem, br as StaggerSpringPoseOptions, bs as StaggerTweenOptions, bt as SvgUnpacker, bu as SystemLayerRecord, bv as SystemLayerSpec, bw as TextEditDep, bx as TextNodeSource, by as TextOutlineSource, bz as TextOutlinesError, bA as TextOutlinesFailure, bB as TextPaintPath, bC as TextToPathOptions, bD as TimelineClock, bE as TimelineEvent, bF as TimelineHandle, bG as TimelineOptions, bH as TimelineTrack, bI as ToolDef, bJ as Track, bK as TweenLoopOptions, bL as TweenOptions, bM as UseToolsOptions, bN as UserLayerRecord, bO as VIEW_ANIMATION_KEY, bP as ViewAnimationApi, bQ as ViewChannel, bR as applyBooleanOp, bS as applyCreateOutlines, bT as asNodeId, m as blur, bU as composeWorldPose, bV as createPointerStore, o as cullDrawCommands, bW as depsUnchanged, bX as drawLayers, bY as drawOneLayer, bZ as fitViewToBounds, p as frameRect, b_ as isLayerPainted, b$ as isLayerVisible, c0 as loadTextOutlines, c1 as pathInPoseFrame, c2 as pathInWorld, c3 as rebaseLocalPose, c4 as registerContentHandler, r as registerEffect, c5 as resolveStrokeWidth, c6 as subscribeToSources, c7 as textToPath, c8 as textToPathsByPaint, c9 as useDecayLoop, ca as usePointerContext, cb as usePointerPosition, cc as useTools, cd as useViewAnimation, ce as useViewAnimationOn, v as viewToMat3, q as vignette, cf as worldEditToStorage } from './builtins-C-VgUlWI.js';
3
3
  import { View as View$1, NodeId, PointerSessionCancelReason, DeviceProfile, Bounds, Action, ActionDeps, AffordanceHit, SelectionMode, SelectionExtendKey, SelectionApi, DepSchema, GestureBinding, ToolKeybinding, HotkeyTrigger, ModifierState, RuleCtx, Rule, DebugSink, HitShape, HandleKind, ViewportGestureKind, IngestItem, OngoingOverlay, DepName, ActionsProp, OverlayRole, ResizeAnchor } from '@weasel-js/routing';
4
- export { ALWAYS, Action, ActionDeps, ActionDisabledReason, ActionDispatch, ActionEnabledResult, ActionEntry, ActionItem, ActionPresentation, ActionVariant, ActionsProp, ActionsRegistry, AffordanceHit, BindingOpts, BindingScope, BindingSource, BoundGesture, Bounds, BuildRuleCtxArgs, COARSE_TARGET_SCALE, CONTROL_SELECTOR, ContributionDeps, ContributionRouting, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DRAG_THRESHOLD_PX, DebugSink, DepName, DepRegistry, DepSchema, DetectedDeviceFacts, DeviceProfile, DispatchRecord, DispatchRecordInput, Dispatcher, DispatcherContext, DragSample, DroppedCandidate, Eligibility, EligibilityState, GestureBinding, HandleKind, HitShape, HotkeyTrigger, ImmediateInvoker, IngestItem, InputEvent, InvocationCtx, Invoker, KeyBinding, LONG_PRESS_MS, LongPressOptions, LongPressState, LongPressStore, MatchResult, ModeShortcutHandlers, ModifierState, NEVER, NodeId, OngoingHandle, OngoingInvoker, OngoingOverlay, OverlayPosition, OverlayRole, PendingLongPress, PlacedBy, Point2, PointerSession, PointerSessionCallbacks, PointerSessionCancelReason, PointerSessionOptions, RankedCandidate, RecordCandidate, ResizeAnchor, ResolveAllOptions, ResolveOnlyResult, ResolvedCandidate, Rule, RuleCtx, ScopedBinding, ScratchKey, ScratchStore, SelectionApi, SelectionExtendKey, SelectionMode, Selector, SpecificityPart, ToolCtx, ToolKeybinding, ToolLifecycleCtx, ToolModifiers, ToolPresentation, ToolSlot, UiOngoingControl, Point2 as Vec2, View, ViewportGestureKind, WalkStep, actionBindings, actionItems, buildDepsFromRequires, buildRuleCtx, clientToCanvas, createDepRegistry, createDispatcher, createLongPressStore, defineTool, deleteScratch, describeRule, evaluate, evaluateEnabled, getScratch, isEditableTarget, isInControlWithin, liveScope, matchesKeyBinding, modeShortcutSpec, modeShortcuts, openPointerSession, pastDragThreshold, resolveDeviceProfile, resolveParams, scopeBindings, scratchKey, setScratch, specificity } from '@weasel-js/routing';
4
+ export { ALWAYS, Action, ActionDeps, ActionDisabledReason, ActionDispatch, ActionEnabledResult, ActionEntry, ActionItem, ActionPresentation, ActionVariant, ActionsProp, ActionsRegistry, AffordanceHit, BindingOpts, BindingScope, BindingSource, BoundGesture, Bounds, BuildRuleCtxArgs, COARSE_TARGET_SCALE, CONTROL_SELECTOR, ContributionDeps, ContributionRouting, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DRAG_THRESHOLD_PX, DebugSink, DepName, DepRegistry, DepSchema, DetectedDeviceFacts, DeviceProfile, DispatchRecord, DispatchRecordInput, Dispatcher, DispatcherContext, DragSample, DroppedCandidate, Eligibility, EligibilityState, GestureBinding, HandleKind, HitShape, HotkeyTrigger, ImmediateInvoker, IngestItem, InputEvent, InvocationCtx, Invoker, KeyBinding, LONG_PRESS_MS, LongPressOptions, LongPressState, LongPressStore, MatchResult, ModeShortcutHandlers, ModifierState, NEVER, NodeId, OngoingHandle, OngoingInvoker, OngoingOverlay, OverlayPosition, OverlayRole, PendingLongPress, PlacedBy, Point2, PointerSession, PointerSessionCallbacks, PointerSessionCancelReason, PointerSessionOptions, RankedCandidate, RecordCandidate, ResizeAnchor, ResolveAllOptions, ResolveOnlyResult, ResolvedCandidate, Rule, RuleCtx, ScopedBinding, ScratchKey, ScratchStore, SelectionApi, SelectionExtendKey, SelectionMode, Selector, SpecificityPart, ToolCtx, ToolKeybinding, ToolLifecycleCtx, ToolModifiers, ToolPresentation, ToolSlot, UiOngoingControl, Point2 as Vec2, View, ViewportGestureKind, WalkStep, actionBindings, actionItems, activatesFocusedControl, buildDepsFromRequires, buildRuleCtx, clientToCanvas, createDepRegistry, createDispatcher, createLongPressStore, defineTool, deleteScratch, describeRule, evaluate, evaluateEnabled, getScratch, historyKey, isEditableTarget, isInControlWithin, liveScope, matchesKeyBinding, modeShortcutSpec, modeShortcuts, openPointerSession, pastDragThreshold, resolveDeviceProfile, resolveParams, scopeBindings, scratchKey, setScratch, specificity } from '@weasel-js/routing';
5
5
  import { a as ParallaxOpts, L as LayoutStrategy, M as MoveAdapter, A as AreaSelectAdapter, e as LayerEnumerableAdapter, f as LassoHitMode, g as LassoSelectAdapter, h as ResizeAdapter, i as RotateAdapter, I as InsertAdapter, j as ClipboardSnapshot, c as LayoutDropTargetMode, d as ReflowTransition, O as OrderedAdapter, P as PlaneMap, b as SceneAdapter } from './types-A37hYkeR.js';
6
6
  export { C as ContainerBounds, D as DropRegion, k as DropTarget, l as LayoutArrival, m as LayoutChild, n as LayoutContainer, o as LayoutDragged, p as LayoutSnap, q as ReflowGlideOptions, R as RegionPickView, r as ScalarOrXY, S as SnapTarget, s as deriveParallaxView, t as fromPlane, u as planeMap, v as planeMatrix, w as planeToPlane, x as rectFromPlane, y as rectToPlane, z as toPlane } from './types-A37hYkeR.js';
7
7
  import { S as SimulationNode, U as UseSimulationOptions, a as Simulation } from './math-Drrw4ewZ.js';
@@ -37,7 +37,7 @@ import { PaintedCursorState, CursorSpec } from '@weasel-js/cursor';
37
37
  export { BakeOptions, CURSOR_ANGLE_STEPS, CURSOR_MAX_CSS_PX, CursorGlyph, CursorGlyphName, CursorGlyphSpec, CursorSpec, PaintedCursor, PaintedCursorFrame, PaintedCursorState, ResolvedCursor, bakeCursor, createPaintedCursorState, cursorFor, resolveCursor, resolveCursorTier } from '@weasel-js/cursor';
38
38
  import { ModeRegistry, ModeDecorations } from '@weasel-js/modes';
39
39
  import { FontRequest } from '@weasel-js/font';
40
- export { FaceMetrics, FaceRuleMetrics, FaceScriptMetrics, FontFamilyFaces, FontRequest, FontStyle, FontVariant, LocalFontOutlinesResult, OutlineFaceInfo, OutlineSource, OutlineStatus, OutlineVariant, RegisterFontOptions, canQueryLocalFonts, cssFontFamily, cssFontFamilyLoading, enableLocalFontOutlines, fontOutlineRegistry, fontRegistry, hasFontOutlines, isCanvasFont, listFontOutlines, loadFontOutlines, outlineStatus, registerCanvasFont, registerFont, registerFontOutlines, subscribeGlyphReady, unregisterCanvasFont, unregisterFontOutlines, warmFonts } from '@weasel-js/font';
40
+ export { FaceMetrics, FaceRuleMetrics, FaceScriptMetrics, FontFamilyFaces, FontRequest, FontStyle, FontVariant, LocalFontOutlinesResult, OutlineFaceInfo, OutlineSource, OutlineStatus, OutlineVariant, RegisterFontOptions, canQueryLocalFonts, cssFamilyName, cssFontFamily, cssFontFamilyLoading, enableLocalFontOutlines, fontOutlineRegistry, fontRegistry, hasFontOutlines, isCanvasFont, listFontOutlines, loadFontOutlines, outlineStatus, registerCanvasFont, registerFont, registerFontOutlines, subscribeGlyphReady, unregisterCanvasFont, unregisterFontOutlines, warmFonts } from '@weasel-js/font';
41
41
  import { TextRenderer, TextPose, StyledRun, TextStyle, TextVerticalAlign, TextPaint, ResolvedTextStyle } from '@weasel-js/text';
42
42
  export { DEFAULT_DECORATION_METRICS, DEFAULT_TEXT_STYLE, DecorationKind, FaceMetricsFn, FontVariantCaps, LaidOutDecoration, LaidOutGroup, LaidOutLineBox, LaidOutOutlineGlyph, LaidOutQuad, LaidOutRuns, LayoutLine, LayoutResult, LayoutRunsOpts, MARKDOWN_RUN_GRAMMAR, MarkdownFontOptions, MeasureFn, MeasureTextBoundsOpts, MeasuredText, PositionedRun, ResolvedRun, ResolvedTextStyle, RunFlag, RunGrammar, RunMarker, RunSourceMap, SCRIPT_METRICS, SMALL_CAPS_SCALE, ScriptPreset, SmallCapsText, StyledRun, TextAlign, TextDirection, TextLineBoxesOpts, TextPaint, TextPose, TextPoseLayout, TextPoseLayoutInput, TextRenderer, TextStyle, TextTransform, TextVerticalAlign, TransformedRunText, cachedLayoutRuns, createMarkdownRenderer, decorationMetrics, fontString, isBoldWeight, isSmallCapsLetter, layoutMarkdown, layoutRuns, layoutTextPose, markdownToRuns, measureText, measureTextBounds, measuredWidth, numericWeight, resolveAlign, resolveRunFace, resolveRuns, resolveTextStyle, runsToMarkdown, runsToPlainText, scriptMetrics, scriptMetricsFor, smallCapsScale, smallCapsScaleFor, smallCapsText, textLineBoxes, textPoseLayoutInput, toRuns, transformRunTexts, verticalAlignOffset } from '@weasel-js/text';
43
43
  import { P as PaintKindEntry, M as MarkerEntry } from './test-seams-CuIxe0xY.js';
@@ -2626,7 +2626,20 @@ interface UseKeybindingsOptions {
2626
2626
  declare function useKeybindings(tools: ToolsApi, options?: UseKeybindingsOptions): void;
2627
2627
 
2628
2628
  /** The value types a built-in pref leaf can hold. */
2629
- type ToolPrefKind = 'number' | 'boolean' | 'string' | 'enum' | 'color' | 'paint' | 'object';
2629
+ type ToolPrefKind = 'number' | 'boolean' | 'string' | 'enum' | 'color' | 'paint' | 'object' | 'field';
2630
+ /**
2631
+ * Leaves that share one row in a compact property UI (weasel-ui
2632
+ * `SelectionPanel`, labkit's `ControlPanel`), declared on the first of them.
2633
+ * Purely presentational.
2634
+ */
2635
+ interface ToolPrefPair {
2636
+ /** The other leaves on the row, by the full path their values are read and
2637
+ * written at (`'pose.y'`, `'camera.type'`), in order. Each must follow the
2638
+ * one before it among its siblings. */
2639
+ with: string | readonly string[];
2640
+ /** What the row reads. Default: the declaring leaf's `name`. */
2641
+ label?: string;
2642
+ }
2630
2643
  /** The fields every leaf pref shares, keyed by its `kind` and typed by its stored value. */
2631
2644
  interface ToolPrefBase<K extends string, Value> {
2632
2645
  kind: K;
@@ -2648,11 +2661,8 @@ interface ToolPrefBase<K extends string, Value> {
2648
2661
  * `pair`ed row is labeled by the pair, so its fields have only the glyph
2649
2662
  * to tell them apart. */
2650
2663
  icon?: string;
2651
- /** Row-pairing hint for compact property UIs (weasel-ui
2652
- * `SelectionPanel`): leaves sharing a `pair` id render side-by-side
2653
- * on one row labeled with the `pair` string (e.g. `'Position'` for
2654
- * `pose.x` / `pose.y`). Purely presentational. */
2655
- pair?: string;
2664
+ /** Puts this leaf and the ones it names on one row. */
2665
+ pair?: ToolPrefPair;
2656
2666
  /** Shorter forms of `name`, longest first. A surface short of room for
2657
2667
  * `name` — a strip of controls on one line, a segment in a `pair`ed row —
2658
2668
  * shows the longest of them that fits. `name` stays the accessible name, so
@@ -2841,9 +2851,18 @@ interface ToolPrefObject extends ToolPrefBase<'object', unknown> {
2841
2851
  */
2842
2852
  fromScalar?: (value: unknown) => Record<string, unknown>;
2843
2853
  }
2854
+ /**
2855
+ * A reference to another field of the same schema, held as the full path its
2856
+ * value is read and written at (`'camera.type'`) — the currency fields refer
2857
+ * to each other in. A surface offers the fields it draws as the choices.
2858
+ */
2859
+ interface ToolPrefField extends ToolPrefBase<'field', string> {
2860
+ /** Only fields of these kinds may be named. Default: any leaf. */
2861
+ kinds?: readonly string[];
2862
+ }
2844
2863
  /** One built-in pref leaf. `ToolPrefLeaf` widens this to include
2845
2864
  * app-defined kinds. */
2846
- type ToolPref = ToolPrefNumber | ToolPrefBoolean | ToolPrefString | ToolPrefEnum | ToolPrefColor | ToolPrefPaint | ToolPrefObject;
2865
+ type ToolPref = ToolPrefNumber | ToolPrefBoolean | ToolPrefString | ToolPrefEnum | ToolPrefColor | ToolPrefPaint | ToolPrefObject | ToolPrefField;
2847
2866
  /**
2848
2867
  * The built-in kinds, as a table. A kind added to {@link ToolPrefKind} is a
2849
2868
  * compile error here, and from here it is one in every renderer's `never`
@@ -2851,6 +2870,14 @@ type ToolPref = ToolPrefNumber | ToolPrefBoolean | ToolPrefString | ToolPrefEnum
2851
2870
  * nothing in four places at once.
2852
2871
  */
2853
2872
  declare const TOOL_PREF_KINDS: Record<ToolPrefKind, true>;
2873
+ /** Which row each pairing among `leaves` puts a path on: a `key` the row's
2874
+ * members share (the declaring leaf's path) and the `label` it reads. A
2875
+ * path no `pair` names is absent. `leaves` are given by the path each
2876
+ * surface reads and writes them at, so references resolve in its terms. */
2877
+ declare function pairRowsOf(leaves: Iterable<readonly [path: string, leaf: ToolPrefLeaf]>): Map<string, {
2878
+ key: string;
2879
+ label: string;
2880
+ }>;
2854
2881
  /**
2855
2882
  * Narrows a leaf to the built-in union, so a renderer's switch discriminates
2856
2883
  * on {@link ToolPrefKind} instead of the open `string` that
@@ -3176,13 +3203,16 @@ declare namespace useTextTool {
3176
3203
  description: string;
3177
3204
  children: {
3178
3205
  bold: {
3179
- readonly kind: "boolean";
3180
- readonly name: string;
3181
- readonly description: `${string} for the characters in the range.`;
3182
- readonly icon: string;
3183
- readonly control: "toggle";
3184
- readonly pair: "Character style";
3185
- readonly default: false;
3206
+ pair: {
3207
+ with: string[];
3208
+ label: string;
3209
+ };
3210
+ kind: "boolean";
3211
+ name: string;
3212
+ description: `${string} for the characters in the range.`;
3213
+ icon: string;
3214
+ control: "toggle";
3215
+ default: false;
3186
3216
  };
3187
3217
  italic: {
3188
3218
  readonly kind: "boolean";
@@ -3190,7 +3220,6 @@ declare namespace useTextTool {
3190
3220
  readonly description: `${string} for the characters in the range.`;
3191
3221
  readonly icon: string;
3192
3222
  readonly control: "toggle";
3193
- readonly pair: "Character style";
3194
3223
  readonly default: false;
3195
3224
  };
3196
3225
  underline: {
@@ -3199,7 +3228,6 @@ declare namespace useTextTool {
3199
3228
  readonly description: `${string} for the characters in the range.`;
3200
3229
  readonly icon: string;
3201
3230
  readonly control: "toggle";
3202
- readonly pair: "Character style";
3203
3231
  readonly default: false;
3204
3232
  };
3205
3233
  strikethrough: {
@@ -3208,7 +3236,6 @@ declare namespace useTextTool {
3208
3236
  readonly description: `${string} for the characters in the range.`;
3209
3237
  readonly icon: string;
3210
3238
  readonly control: "toggle";
3211
- readonly pair: "Character style";
3212
3239
  readonly default: false;
3213
3240
  };
3214
3241
  overline: {
@@ -3217,7 +3244,6 @@ declare namespace useTextTool {
3217
3244
  readonly description: `${string} for the characters in the range.`;
3218
3245
  readonly icon: string;
3219
3246
  readonly control: "toggle";
3220
- readonly pair: "Character style";
3221
3247
  readonly default: false;
3222
3248
  };
3223
3249
  script: {
@@ -12145,4 +12171,4 @@ interface InsertOverlayStyle {
12145
12171
  lineWidth?: number;
12146
12172
  }
12147
12173
 
12148
- export { ACTION_GLYPHS, ANCHOR_HIT_BASE_PX, AREA_SELECT_ID, type ActionGlyphProps, type ActionShortcut, ActionsProviderIfRoot, AddNodeSpec, Affordance, AffordanceBinding, AffordanceRegion, type AffordanceRegionHit, type AlignAdapter, AlignBottomIcon, AlignCenterXIcon, AlignCenterYIcon, type AlignEdge, AlignLeftIcon, type AlignReference, AlignRightIcon, AlignTopIcon, type AnchorHit, type AnchorScratch, type AnchorState, type AnimateOnSetPoseOptions, type AnimatedReflow, AnimationHandle, Animator, AnyTool, AreaSelectAdapter, type ArrangeArgs, type ArrangedPose, type ArrayAdapter, type ArrayAdapterConfig, ArrowIcon, BUILTIN_MARKERS, BUILTIN_TOOL_IDS, type BaseFeature, type BindRigOptions, BooleansAdapter, BoundsConstraint, BringForwardIcon, BringToFrontIcon, type BuildChromeCtxArgs, type BuiltinShapeToolId, type BuiltinToolId, type BuiltinToolOptions, COMPOSITE_FEATURES, CROSSHAIR_HALO, type CanvasDebugSink, type CanvasExtensionApi, type CanvasFocusReturn, type CanvasHelpers, type CanvasProps, type CanvasSize, type CanvasSizeSnapshot, type CanvasSurfaceHelpers, CanvasView, type CanvasViewHandle, type CanvasViewHelpers, type CanvasViewProps, type ChromeCtx, type ChromeId, ChromeState, type ClampBounds, ClipboardSnapshot, type CoalescedCtx, type ColorInterpolate, ColorOverrideRegistry, CommonAffordanceScratch, type ComposeSelectionPoseOpts, type CompositeFeature, type ComputeFitViewOptions, type ComputeSliceOpsArgs, type ComputeSliceResult, type Condition, ContentHandlerEntry, Contribution, type ContributionDepReader, type ContributionFrameCtx, CopyIcon, type CornerResizeAffordanceOptions, type CornerResizeScratch, type CreateChildrenLayerOpts, CreateOutlinesAdapter, CreateOutlinesIcon, type CreateParallaxLayerOpts, type CreatePathEditingOverlayLayerOptions, type CreatePathLayerOpts, type CreatePenPreviewLayerOptions, type CreateTextLayerOpts, type CreateTiledLayerOpts, type CreateViewResolverOpts, type CreateViewportLayerOpts, CropIcon, type CrosshairRect, CursorCoordsHud, type CursorCoordsHudProps, type CustomLayerEntry, CutIcon, type CycleHandle, type CycleVertexColorsOptions, DEFAULT_DEBUG_STROKES, DEFAULT_DEBUG_THEME, DEFAULT_FILL_COLOR, DEFAULT_HANDLE_SIZE, DEFAULT_INK, DEFAULT_MAX_ZOOM, DEFAULT_MIN_ZOOM, DEFAULT_PALETTE, DEFAULT_ROTATION_HANDLE_DISTANCE, DEFAULT_SHAPE_FILL, DEFAULT_STROKE_COLOR, DRAG_PAN_ID, type DebugConfig, type DebugFeature, type DebugSnapshot, type DebugStroke, type DebugStrokes, type DebugTheme, type DefaultTextData, type DeleteArgs, DeleteIcon, DepRegistryProviderIfRoot, DerivePathFn, DerivePoseFn, DerivedDep, DeviceProfileProvider, type DeviceProfileProviderProps, Dims, type DistributeAdapter, type DistributeAxis, DistributeHorizontalIcon, type DistributeMode, DistributeVerticalIcon, DivideIcon, type DragGestureController, type DragGestureCtx, type DragGestureEndCtx, type DragGesturePhase, type DragGesturePoint, type DragHandleOptions, type DragPanParams, type DragPayload, type DragRadialController, type DragRadialCtx, type DragRadialEndCtx, type DragRadialPoint, type DragRadialState, type DragRectBounds, type DragRectController, type DragRectCtx, type DragRectEndCtx, type DragRectPoint, DrawCanvas, type DrawCanvasDraw, type DrawCanvasProps, DrawCommand, type DropZoneOptions, DuplicateIcon, type EditedLayerOf, EllipseIcon, ExcludeIcon, EyedropperIcon, FALLBACK_FIT_VIEW, FEATURE_ACTION_IDS, type Feature, type FeedDelta, type FeedNode, type FitTextPoseOptions, type FlagKey, type FlipAxis, type FlipPivot, FlipXIcon, FlipYIcon, type FrameStats, GHOST_STROKE, type GateLayerOptions, GeometryProjection, GestureContext, type GesturePreviewSource, type GestureSource, GlMat3, GroupIcon, HANDLE_BASE_PX, HandIcon, InertiaConfig as HandToolInertiaConfig, type HandleDragEnd, type HandleDragPoint, type HeadlessCanvasLike, type HostAnchorAlign, type HostAnchorInput, type HostAnchorOffset, type HostAnchorStyle, IDENTITY_JOINT, type IconProps, type IkLimit, type IkPoint, type IkResult, ImageIcon, type ImageNodeData, type ImageRasterSize, type ImageStatus, type IndicatorStyle, InertiaConfig, InsertAdapter, type InsertArgs, InsertBehavior, InsertExtras, type InsertNodeFactory, type InsertOp, type InsertOverlayStyle, type InsertPreviewExtent, type InsertPreviewGeometry, type InsertPreviewLike, type InsertPreviewOverlay, type InsertToolOptions, IntersectIcon, type Joint, type JointTransform, KIT_SHAPE_KINDS, KIT_STANDARD_ACTION_IDS, KIT_VERSIONS, type KeyModifiers, type KeyState, type KeyStateAttachOptions, type KitInsertShape, type KitRequirements, type KitVersions, LONG_PRESS_FEEDBACK_ID, type LabelOptions, LassoHitMode, LassoIcon, LassoSelectAdapter, LassoSelectBehavior, LayerEnumerableAdapter, type LayerFrameStats, LayerGroup, LayerHit, type LayerSlotValue, type LayersMap, type LayoutArrivalOptions, LayoutDropTargetMode, type LayoutRef, type LayoutSource, LayoutStrategy, type LifecycleAnimation, LineIcon, type LinePoint, type LinkedCursorOptions, type LongPressFeedbackOptions, MINIMAP_CENTER, MINIMAP_PAN, MIXED, MarkerEntry, type MarkerSite, type MarkerSiteRequest, MinimapCanvas, type MinimapCanvasProps, type MinimapContributionOptions, type MinimapFit, type Mixed, type MomentumOptions, MoveAdapter, MoveBehavior, type MoveToIndexArgs, type NestedHitOpts, type NestedHitTester, type NodeClientRect, type NodeInk, type NodeInkCtx, type NodeOverlayFrame, type NodePaintCtx, type NodeProperties, type NodePropertiesEntry, type NodeRouting, type NodeRoutingEntry, type NodeShapeEntry, type NodeSilhouetteCtx, type OpFactory, type OpenFilePickerOptions, OrderedAdapter, OriginProjection, type OverlayPoint, type OverlayVisibilityId, PAINTED_CURSOR_LAYER_ID, PATH_ANCHOR_CHROME_ID, type PaintBoundsFn, PaintKindEntry, PanBounds, ParallaxOpts, type ParallaxPlane, type ParallaxSource, PasteIcon, type PathAnchor, type PathAnchorAffordanceOptions, PathDrawCommand, type PathEditingOverlayStyle, type PenAnchor, type PenContinuation, PenIcon, type PenPreviewStyle, type PenScratch, type PenSubpath, PencilIcon, type PencilPoint, PickHud, type PickHudProps, type PickSlop, type PickTopMostHitAdapter, type PinchZoomOptions, type PixelRenderPlan, type PlacedNode, PlaneMap, type PointInTextPoseOpts, PointSnapBehavior, PointerProviderIfRoot, type PointerSample, type PointerStylusState, PolygonIcon, type PolygonPoint, type Pose, PoseAdapter, PoseComposition, PoseDescriptor, type PoseFeed, PoseOverrides, type PoseRotation, type PoseRun, type PoseRunCtx, type PoseRunStep, type PoseSource, type PosedNode, type PressureToWidthOptions, type PreviewNode, RECT_POSE_COMPOSITION, RIGID_POSE_COMPOSITION, ROTATION_HANDLE_BASE_PX, type RangeStyle, type RasterImage, type RasterRenderArgs, type RasterSession, type RasterSessionOptions, type RecordedBounds, type RecordedHandle, type RecordedHitbox, type RecordedLayer, type RecordedOrigin, type RecordedSnap, type RecordedViewport, RectIcon, RectPose, RedoIcon, RedrawSource, type ReflowScene, ReflowTransition, type ReflowTransitionOptions, type RegisterNodeShapeOptions, RegisteredOp, type RenderDebugSnapshotArgs, RenderLayer, type RenderNeeds, type RenderSceneToCanvasArgs, type RenderSceneToPixelsArgs, type ReorderArgs, type ReorderDirection, type ReorderRestoreEntry, type ReparentArgs, type RequirementMismatch, ResizeAdapter, type ResolvableView, type ResolvedOverlay, type Rig, type RigApply, type RigApplyContext, type RigScene, RotateAdapter, RotateBehavior, RotatedPose, type RotationAffordanceOptions, type RotationHandle, type RotationScratch, type RunStylePatch, SCENE_CANVAS_FEATURES, SELECTION_MOVE_ID, SELECTION_RESIZE_ID, SELECTION_ROTATE_ID, SELECTION_TRANSFORM_ID, SHAPE_KINDS, SampledTrack, type Scale2, Scene, SceneAdapter, type SceneAdapterSelection, SceneArrivalHandler, SceneArrivalRefused, SceneCanvas, type SceneCanvasAdapter, type SceneCanvasApi, type SceneCanvasHit, type SceneCanvasLayers, type SceneCanvasLongPress, type SceneCanvasProps, Node$1 as SceneNode, type SceneNodeClientRectOpts, SceneRegistry, type SceneSlotConfig, type SceneToAdapterOptions, SceneViewCanvas, type SceneViewCanvasProps, type SceneViewCull, type SceneViewDrawOne, type SceneViewLayers, type ScreenSlop, type SelectAdapter, type SelectFromLassoOptions, SelectIcon, SelectionContextProvider, SelectionContextProviderIfRoot, type SelectionContextValue, type SelectionHandleStyle, type SelectionHandlesLayerOpts, type SelectionMoveOptions, type SelectionOutlineLayerOpts, type SelectionOverlayLayerOpts, type SelectionOverlaySlotConfig, type SelectionRotateOptions, type SelectionStore, type SelectionTransformOptions, SendBackwardIcon, SendToBackIcon, SerializedScene, type SetDataArgs, type SetFlagResult, type SetLayerArgs, type SetLayoutArgs, type SetPathArgs, type SetPathFields, type SetSelectionArgs, type SetTextArgs, ShaderProgramHandle, type ShapeCoversPointOptions, type ShapeKind, type ShapeKindDescriptor, type ShapeKindsWhere, type SiblingSlot, Simulation, SimulationNode, type Skeleton, type Slew, type SlewRates, SliceDep, type SliceLeaf, type SlicePiece, type SliceScratch, type SliceableNode, SnapStrategy, type SolveIkOptions, type SpatialReference, type SpatialReferenceSources, type SpringPoseOptions, type SpringVertexColorsOptions, type StaggerVertexColorsOptions, type StandardSlotConfig, type StandardSlotName, StarIcon, type StarPoint, type StartEditOptions, type StyleKey, type StyleToggle, type StylusData, SubtractIcon, type SurfaceContribution, SvgIngestOptions, TEXT_EDIT_FONT_HOLD, TOOL_DRIVEN_ACTION_IDS, TOOL_PREF_KINDS, TextDrawCommand, type TextEditClipRect, type TextEditScreenPose, type TextEditSelection, TextIcon, type ThresholdDragHandle, type ThresholdDragOptions, type TileBleed, type TilePatternOpts, type TilePeriod, type TileRange, Tool, type ToolPref, type ToolPrefBase, type ToolPrefBoolean, type ToolPrefBooleanControl, type ToolPrefBooleanEncoding, type ToolPrefColor, type ToolPrefCustom, type ToolPrefEnum, type ToolPrefEnumControl, type ToolPrefEnumEncoding, type ToolPrefGroup, type ToolPrefKind, type ToolPrefLeaf, type ToolPrefNumber, type ToolPrefNumberControl, type ToolPrefNumberUnit, type ToolPrefObject, type ToolPrefPaint, type ToolPrefString, type ToolPrefStringControl, ToolsApi, type TransformArgs, type TweenPoseOptions, type TweenVertexColorsOptions, UNION_OF_CHILDREN, UndoIcon, UngroupIcon, UnionIcon, UnknownIcon, type UseAlignOptions, type UseAlignReturn, UseAnimatorOptions, type UseArrayAdapterOptions, type UseBooleansOptions, type UseBooleansReturn, type UseCanvasFocusOptions, type UseDistributeOptions, type UseDistributeReturn, type UseDragGestureOptions, type UseDragRadialOptions, type UseDragRectOptions, type UseEyedropperToolOptions, type UseHandToolOptions, type UseHandleDragOptions, type UseHandleDragReturn, type UseHostAnchorOptions, type UseHoverTrackingArgs, type UseImageToolOptions, type UseKeyStateOptions, type UseKeybindingsOptions, type UseLassoSelectOptions, type UseLassoToolOptions, UseMoveOptions, type UseNodeOverlayFrameOptions, type UsePenToolOptions, type UsePointerStylusOptions, type UsePolygonToolOptions, type UsePoseRunOptions, UseResizeOptions, type UseResizePolicyOptions, type UseRotateOptions, UseSceneOptions, type UseSceneTextEditOptions, type UseSceneTextEditReturn, type UseSceneTrivialOptions, type UseSelectToolOptions, type UseSelectionOptions, UseSimulationOptions, type UseSliceToolOptions, type UseStandardActionsOptions, type UseStarToolOptions, type UseTextEditOptions, type UseTextEditReturn, VERSION, type VelocityTracker, type VersionCheck, VertexColorChannel, ViewAnimationOptions, ViewApi, type ViewRect, type ViewResolver, type ViewTarget, type ViewTransform, ViewportDims, type ViewportLayer, type ViewportZoomAnimateOptions, type ViewportZoomOptions, type VisibilityRules, type VisibleRaf, type VisibleRafOptions, type VisibleRafTarget, WHEEL_ZOOM_STEP, type WarmRenderOptions, WeaselProvider, type WeaselProviderProps, type WheelInput, type WheelPanOptions, type WheelPanOpts, type WorkspaceTintLayerOptions, ZOOM_FLOOR, type ZoomBound, type ZoomClampOpts, type ZoomFactor, actionIs, actionShortcuts, alignDeltaFor, alignTargetBounds, always, and, animateLifecycle, animateOnSetPose, annulusSemiAxes, applyOpsTo, applyStyleToRange, areaSelectAction, areaSelectContribution, arrayAdapter, axisAlignedBounds, bindRig, blendPoses, buildChromeCtx, buildDebugOverlayCommands, buildSceneViewCommands, canBringForward, canHover, canSendBackward, capabilityAll, capabilityIn, capabilityIs, capabilityNot, caretIndexAt, centerRootOn, charOffsetToDomPosition, checkRequirements, circlePath, clampView, clearSelectionAction, clipboardCopyAction, clipboardCutAction, clipboardPasteAction, cloneAction, coarsePointer, composeAffordanceLayer, composeRectPose, composeRigidPose, composeSelectionPose, computeFitView, computeFitViewport, computeIndicatorCommand, computeSliceOps, computeWheelAction, cond, constrainTo45, countPathAnchors, createArrangeOp, createChildrenLayer, createCornerResizeAffordance, createDebugOverlayLayer, createDebugSink, createDeleteOp, createHistory, createInsertOp, createKeyState, createLinkedCursorContribution, createLongPressFeedbackContribution, createMinimapContribution, createMoveToIndexOp, createNodeProperties, createNodeRouting, createPaintedCursorLayer, createParallaxLayer, createParallaxPlane, createPathAnchorAffordances, createPathEditingOverlayLayer, createPathLayer, createPenPreviewLayer, createPoseFeed, createPoseOverrides, createRasterSession, createReflowTransition, createReorderOp, createReparentOp, createRotationAffordance, createScene, createSelectionHandlesLayer, createSelectionOutlineLayer, createSelectionOverlayLayer, createSetDataOp, createSetLayerOp, createSetLayoutOp, createSetPathOp, createSetSelectionOp, createSetTextOp, createSlew, createTextLayer, createTilePattern, createTiledLayer, createTransformOp, createVelocityTracker, createViewResolver, createViewportLayer, crosshairRects, cycleFill, cycleVertexColors, debugSnapshotArgs, decomposeRectPose, decomposeRigidPose, defaultCommitAdapter, defaultDrawOne, defaultLabelTextRenderer, defaultNodeProperties, defaultNodeRouting, defaultPaintBounds, defaultVisibilityRules, definesFrame, derivedDepOf, derivedPose, dispatchApplyBatch, dlog, documentPose, domPositionToCharOffset, domToRuns, dragPanContribution, dwarn, editAnchorsAction, editingLayer, effectivePose, effectiveRangeStyle, enterTextEditAction, enumerateAnchors, findNodeShape, findShapeBounds, findShapeInk, findShapeSilhouette, fitTextPose, fitToBounds, fitZoom, flattenPreviews, focused, forEachCoalesced, gateLayer, gesturePlaneReader, gestureViewReader, gesturing, getAlpha01, getImageBitmap, getNodeShapes, getStylusData, gradientForBounds, gradientGeometry, hexToRgba, hitAffordanceRegions, hitAnchor, hitRotationHandle, hostAnchorCss, hostAnchorRect, hovering, hoveringSelected, imageStatus, inPlane, inferredNodeProperties, inferredNodeRouting, insertAction, insertLayer, insertPreviewExtent, interpolateView, isBuiltinToolPref, isDebugEnabled, isGradientFill, isPatternSpec, isPlainObject, isVectorImageSrc, keySpecShortcut, lassoSelectAction, layoutArrivalHandler, makePinchZoomAction, makeViewportWheelPanAction, makeViewportZoomAction, markerInset, markerKeyOf, markerSites, meanScale, mergeAlphaFromPrev, mergeContributions, minimapCenterAction, minimapPanAction, mirrorPose, modeDecorationLayer, modeIn, modeIs, modeNot, modifierHeld, momentum, moveAction, multiActive, nestedHitTester, never, nodeHasFlag, normalizeHex, normalizeView, normalizeZoom, not, onEmptyCanvas, opFactoryRegistry, openFilePicker, or, paintAlpha, paintWithAlpha, paintWithColor, parseColor, parseColorToRgba255, parseDebugFlags, patchRangeStyle, pathOriginProjection, pathPoseDescriptor, pathToAnchors, pickTopMostHit, pinchZoomAction, planPixelRender, pointInTextPose, pointRegionFrame, poseRotationOf, prefUnit, pressureToWidth, pxExtent, rainbowVertexColors, rangeWeight, rasterToPng, rebuildOp, reconcileSpecs, rectMarkerPath, registerNodeShape, registerOpFactory, registeredOpNames, releaseCanvasRenderer, renderDebugSnapshot, renderLabel, renderNeeds, renderSceneToCanvas, renderSceneToPixels, resizeAction, resolveColor, resolveFillPattern, resolveMarkerSize, resolveOverlays, resolvePatternSpec, resolvePreviews, resolveSkeleton, resolveSpatialReference, resolveVisibility, rgbaToHex, rigidRigApply, rotateAction, rotateAroundAABBCenter, rotatePathAround, rotationDegreesUnit, rotationHandle, roundRectPath, runsToDom, sampleGradientStops, sampleTrack, satisfiesRange, scaleDelta, sceneFromJSON, sceneNodeClientRect, sceneSelectionStore, sceneToAdapter, screenAngleOf, screenToWorld, screenTolerance, selectFromLasso, selectionAtLeast, selectionEmpty, selectionIs, selectionLayer, selectionMoveBindings, selectionMoveContribution, selectionResizeBindings, selectionResizeContribution, selectionRotateBindings, selectionRotateContribution, selectionTransformBindings, selectionTransformContribution, setFlagOverRange, shapeCoversPoint, slewToward, sliceAction, snap, solid, solidVertexColors, solveIk, springPose, springVertexColors, squarePath, stableStringify, staggerVertexColors, standoff, startThresholdDrag, strokeInsets, strokeOf, strokeWith, styleAtRange, subscribeImageReady, textCommand, textCommandFromPose, textCommandFromRuns, tiledProject, toHex8, translateRectPose, tweenPose, tweenVertexColors, unboldPatch, unionAABB, unionBounds, unionOfChildren, unionOfChildrenVia, useAlign, useAnimatedReflow, useAnimator, useArrayAdapter, useAutoCenter, useBooleans, useBooleansAdapter, useCanvasFocus, useCanvasSize, useCreateOutlinesAdapter, useDeviceProfile, useDistribute, useDragGesture, useDragHandle, useDragRadial, useDragRect, useDropZone, useEllipseTool, useEyedropperTool, useGradientKinds, useHandTool, useHandleDrag, useHostAnchor, useHoverTracking, useImageTool, useKeyState, useKeybindings, useLassoTool, useLayoutArrivals, useLineTool, useNodeOverlayFrame, usePaintKind, usePaintKinds, usePenTool, usePencilTool, usePointerStylus, usePolygonTool, usePoseCompositionDepSource, usePoseDescriptorDepSource, usePoseRun, usePublishSelection, useRectTool, useResizePolicy, useRig, useScene, useSceneAdapter, useSceneTextEdit, useSelectTool, useSelection, useSelectionContext, useSimulation, useSliceDep, useSliceDepSource, useSliceTool, useStandardActions, useStarTool, useTextEdit, useTextTool, useVelocityTracker, useVisibleRaf, viewToTransform, viewZoom, viewportDragPanAction, viewportWheelPanAction, viewportZoomAction, warmRender, wheelPan, wheelZoom, wheelZoomFactor, when, withAlpha01, withCoord, withGradientKind, withinPxBox, withinPxRadius, workspaceTintLayer, worldPoseLookup, worldToScreen, zoomAt, zoomAtLeast };
12174
+ export { ACTION_GLYPHS, ANCHOR_HIT_BASE_PX, AREA_SELECT_ID, type ActionGlyphProps, type ActionShortcut, ActionsProviderIfRoot, AddNodeSpec, Affordance, AffordanceBinding, AffordanceRegion, type AffordanceRegionHit, type AlignAdapter, AlignBottomIcon, AlignCenterXIcon, AlignCenterYIcon, type AlignEdge, AlignLeftIcon, type AlignReference, AlignRightIcon, AlignTopIcon, type AnchorHit, type AnchorScratch, type AnchorState, type AnimateOnSetPoseOptions, type AnimatedReflow, AnimationHandle, Animator, AnyTool, AreaSelectAdapter, type ArrangeArgs, type ArrangedPose, type ArrayAdapter, type ArrayAdapterConfig, ArrowIcon, BUILTIN_MARKERS, BUILTIN_TOOL_IDS, type BaseFeature, type BindRigOptions, BooleansAdapter, BoundsConstraint, BringForwardIcon, BringToFrontIcon, type BuildChromeCtxArgs, type BuiltinShapeToolId, type BuiltinToolId, type BuiltinToolOptions, COMPOSITE_FEATURES, CROSSHAIR_HALO, type CanvasDebugSink, type CanvasExtensionApi, type CanvasFocusReturn, type CanvasHelpers, type CanvasProps, type CanvasSize, type CanvasSizeSnapshot, type CanvasSurfaceHelpers, CanvasView, type CanvasViewHandle, type CanvasViewHelpers, type CanvasViewProps, type ChromeCtx, type ChromeId, ChromeState, type ClampBounds, ClipboardSnapshot, type CoalescedCtx, type ColorInterpolate, ColorOverrideRegistry, CommonAffordanceScratch, type ComposeSelectionPoseOpts, type CompositeFeature, type ComputeFitViewOptions, type ComputeSliceOpsArgs, type ComputeSliceResult, type Condition, ContentHandlerEntry, Contribution, type ContributionDepReader, type ContributionFrameCtx, CopyIcon, type CornerResizeAffordanceOptions, type CornerResizeScratch, type CreateChildrenLayerOpts, CreateOutlinesAdapter, CreateOutlinesIcon, type CreateParallaxLayerOpts, type CreatePathEditingOverlayLayerOptions, type CreatePathLayerOpts, type CreatePenPreviewLayerOptions, type CreateTextLayerOpts, type CreateTiledLayerOpts, type CreateViewResolverOpts, type CreateViewportLayerOpts, CropIcon, type CrosshairRect, CursorCoordsHud, type CursorCoordsHudProps, type CustomLayerEntry, CutIcon, type CycleHandle, type CycleVertexColorsOptions, DEFAULT_DEBUG_STROKES, DEFAULT_DEBUG_THEME, DEFAULT_FILL_COLOR, DEFAULT_HANDLE_SIZE, DEFAULT_INK, DEFAULT_MAX_ZOOM, DEFAULT_MIN_ZOOM, DEFAULT_PALETTE, DEFAULT_ROTATION_HANDLE_DISTANCE, DEFAULT_SHAPE_FILL, DEFAULT_STROKE_COLOR, DRAG_PAN_ID, type DebugConfig, type DebugFeature, type DebugSnapshot, type DebugStroke, type DebugStrokes, type DebugTheme, type DefaultTextData, type DeleteArgs, DeleteIcon, DepRegistryProviderIfRoot, DerivePathFn, DerivePoseFn, DerivedDep, DeviceProfileProvider, type DeviceProfileProviderProps, Dims, type DistributeAdapter, type DistributeAxis, DistributeHorizontalIcon, type DistributeMode, DistributeVerticalIcon, DivideIcon, type DragGestureController, type DragGestureCtx, type DragGestureEndCtx, type DragGesturePhase, type DragGesturePoint, type DragHandleOptions, type DragPanParams, type DragPayload, type DragRadialController, type DragRadialCtx, type DragRadialEndCtx, type DragRadialPoint, type DragRadialState, type DragRectBounds, type DragRectController, type DragRectCtx, type DragRectEndCtx, type DragRectPoint, DrawCanvas, type DrawCanvasDraw, type DrawCanvasProps, DrawCommand, type DropZoneOptions, DuplicateIcon, type EditedLayerOf, EllipseIcon, ExcludeIcon, EyedropperIcon, FALLBACK_FIT_VIEW, FEATURE_ACTION_IDS, type Feature, type FeedDelta, type FeedNode, type FitTextPoseOptions, type FlagKey, type FlipAxis, type FlipPivot, FlipXIcon, FlipYIcon, type FrameStats, GHOST_STROKE, type GateLayerOptions, GeometryProjection, GestureContext, type GesturePreviewSource, type GestureSource, GlMat3, GroupIcon, HANDLE_BASE_PX, HandIcon, InertiaConfig as HandToolInertiaConfig, type HandleDragEnd, type HandleDragPoint, type HeadlessCanvasLike, type HostAnchorAlign, type HostAnchorInput, type HostAnchorOffset, type HostAnchorStyle, IDENTITY_JOINT, type IconProps, type IkLimit, type IkPoint, type IkResult, ImageIcon, type ImageNodeData, type ImageRasterSize, type ImageStatus, type IndicatorStyle, InertiaConfig, InsertAdapter, type InsertArgs, InsertBehavior, InsertExtras, type InsertNodeFactory, type InsertOp, type InsertOverlayStyle, type InsertPreviewExtent, type InsertPreviewGeometry, type InsertPreviewLike, type InsertPreviewOverlay, type InsertToolOptions, IntersectIcon, type Joint, type JointTransform, KIT_SHAPE_KINDS, KIT_STANDARD_ACTION_IDS, KIT_VERSIONS, type KeyModifiers, type KeyState, type KeyStateAttachOptions, type KitInsertShape, type KitRequirements, type KitVersions, LONG_PRESS_FEEDBACK_ID, type LabelOptions, LassoHitMode, LassoIcon, LassoSelectAdapter, LassoSelectBehavior, LayerEnumerableAdapter, type LayerFrameStats, LayerGroup, LayerHit, type LayerSlotValue, type LayersMap, type LayoutArrivalOptions, LayoutDropTargetMode, type LayoutRef, type LayoutSource, LayoutStrategy, type LifecycleAnimation, LineIcon, type LinePoint, type LinkedCursorOptions, type LongPressFeedbackOptions, MINIMAP_CENTER, MINIMAP_PAN, MIXED, MarkerEntry, type MarkerSite, type MarkerSiteRequest, MinimapCanvas, type MinimapCanvasProps, type MinimapContributionOptions, type MinimapFit, type Mixed, type MomentumOptions, MoveAdapter, MoveBehavior, type MoveToIndexArgs, type NestedHitOpts, type NestedHitTester, type NodeClientRect, type NodeInk, type NodeInkCtx, type NodeOverlayFrame, type NodePaintCtx, type NodeProperties, type NodePropertiesEntry, type NodeRouting, type NodeRoutingEntry, type NodeShapeEntry, type NodeSilhouetteCtx, type OpFactory, type OpenFilePickerOptions, OrderedAdapter, OriginProjection, type OverlayPoint, type OverlayVisibilityId, PAINTED_CURSOR_LAYER_ID, PATH_ANCHOR_CHROME_ID, type PaintBoundsFn, PaintKindEntry, PanBounds, ParallaxOpts, type ParallaxPlane, type ParallaxSource, PasteIcon, type PathAnchor, type PathAnchorAffordanceOptions, PathDrawCommand, type PathEditingOverlayStyle, type PenAnchor, type PenContinuation, PenIcon, type PenPreviewStyle, type PenScratch, type PenSubpath, PencilIcon, type PencilPoint, PickHud, type PickHudProps, type PickSlop, type PickTopMostHitAdapter, type PinchZoomOptions, type PixelRenderPlan, type PlacedNode, PlaneMap, type PointInTextPoseOpts, PointSnapBehavior, PointerProviderIfRoot, type PointerSample, type PointerStylusState, PolygonIcon, type PolygonPoint, type Pose, PoseAdapter, PoseComposition, PoseDescriptor, type PoseFeed, PoseOverrides, type PoseRotation, type PoseRun, type PoseRunCtx, type PoseRunStep, type PoseSource, type PosedNode, type PressureToWidthOptions, type PreviewNode, RECT_POSE_COMPOSITION, RIGID_POSE_COMPOSITION, ROTATION_HANDLE_BASE_PX, type RangeStyle, type RasterImage, type RasterRenderArgs, type RasterSession, type RasterSessionOptions, type RecordedBounds, type RecordedHandle, type RecordedHitbox, type RecordedLayer, type RecordedOrigin, type RecordedSnap, type RecordedViewport, RectIcon, RectPose, RedoIcon, RedrawSource, type ReflowScene, ReflowTransition, type ReflowTransitionOptions, type RegisterNodeShapeOptions, RegisteredOp, type RenderDebugSnapshotArgs, RenderLayer, type RenderNeeds, type RenderSceneToCanvasArgs, type RenderSceneToPixelsArgs, type ReorderArgs, type ReorderDirection, type ReorderRestoreEntry, type ReparentArgs, type RequirementMismatch, ResizeAdapter, type ResolvableView, type ResolvedOverlay, type Rig, type RigApply, type RigApplyContext, type RigScene, RotateAdapter, RotateBehavior, RotatedPose, type RotationAffordanceOptions, type RotationHandle, type RotationScratch, type RunStylePatch, SCENE_CANVAS_FEATURES, SELECTION_MOVE_ID, SELECTION_RESIZE_ID, SELECTION_ROTATE_ID, SELECTION_TRANSFORM_ID, SHAPE_KINDS, SampledTrack, type Scale2, Scene, SceneAdapter, type SceneAdapterSelection, SceneArrivalHandler, SceneArrivalRefused, SceneCanvas, type SceneCanvasAdapter, type SceneCanvasApi, type SceneCanvasHit, type SceneCanvasLayers, type SceneCanvasLongPress, type SceneCanvasProps, Node$1 as SceneNode, type SceneNodeClientRectOpts, SceneRegistry, type SceneSlotConfig, type SceneToAdapterOptions, SceneViewCanvas, type SceneViewCanvasProps, type SceneViewCull, type SceneViewDrawOne, type SceneViewLayers, type ScreenSlop, type SelectAdapter, type SelectFromLassoOptions, SelectIcon, SelectionContextProvider, SelectionContextProviderIfRoot, type SelectionContextValue, type SelectionHandleStyle, type SelectionHandlesLayerOpts, type SelectionMoveOptions, type SelectionOutlineLayerOpts, type SelectionOverlayLayerOpts, type SelectionOverlaySlotConfig, type SelectionRotateOptions, type SelectionStore, type SelectionTransformOptions, SendBackwardIcon, SendToBackIcon, SerializedScene, type SetDataArgs, type SetFlagResult, type SetLayerArgs, type SetLayoutArgs, type SetPathArgs, type SetPathFields, type SetSelectionArgs, type SetTextArgs, ShaderProgramHandle, type ShapeCoversPointOptions, type ShapeKind, type ShapeKindDescriptor, type ShapeKindsWhere, type SiblingSlot, Simulation, SimulationNode, type Skeleton, type Slew, type SlewRates, SliceDep, type SliceLeaf, type SlicePiece, type SliceScratch, type SliceableNode, SnapStrategy, type SolveIkOptions, type SpatialReference, type SpatialReferenceSources, type SpringPoseOptions, type SpringVertexColorsOptions, type StaggerVertexColorsOptions, type StandardSlotConfig, type StandardSlotName, StarIcon, type StarPoint, type StartEditOptions, type StyleKey, type StyleToggle, type StylusData, SubtractIcon, type SurfaceContribution, SvgIngestOptions, TEXT_EDIT_FONT_HOLD, TOOL_DRIVEN_ACTION_IDS, TOOL_PREF_KINDS, TextDrawCommand, type TextEditClipRect, type TextEditScreenPose, type TextEditSelection, TextIcon, type ThresholdDragHandle, type ThresholdDragOptions, type TileBleed, type TilePatternOpts, type TilePeriod, type TileRange, Tool, type ToolPref, type ToolPrefBase, type ToolPrefBoolean, type ToolPrefBooleanControl, type ToolPrefBooleanEncoding, type ToolPrefColor, type ToolPrefCustom, type ToolPrefEnum, type ToolPrefEnumControl, type ToolPrefEnumEncoding, type ToolPrefField, type ToolPrefGroup, type ToolPrefKind, type ToolPrefLeaf, type ToolPrefNumber, type ToolPrefNumberControl, type ToolPrefNumberUnit, type ToolPrefObject, type ToolPrefPaint, type ToolPrefPair, type ToolPrefString, type ToolPrefStringControl, ToolsApi, type TransformArgs, type TweenPoseOptions, type TweenVertexColorsOptions, UNION_OF_CHILDREN, UndoIcon, UngroupIcon, UnionIcon, UnknownIcon, type UseAlignOptions, type UseAlignReturn, UseAnimatorOptions, type UseArrayAdapterOptions, type UseBooleansOptions, type UseBooleansReturn, type UseCanvasFocusOptions, type UseDistributeOptions, type UseDistributeReturn, type UseDragGestureOptions, type UseDragRadialOptions, type UseDragRectOptions, type UseEyedropperToolOptions, type UseHandToolOptions, type UseHandleDragOptions, type UseHandleDragReturn, type UseHostAnchorOptions, type UseHoverTrackingArgs, type UseImageToolOptions, type UseKeyStateOptions, type UseKeybindingsOptions, type UseLassoSelectOptions, type UseLassoToolOptions, UseMoveOptions, type UseNodeOverlayFrameOptions, type UsePenToolOptions, type UsePointerStylusOptions, type UsePolygonToolOptions, type UsePoseRunOptions, UseResizeOptions, type UseResizePolicyOptions, type UseRotateOptions, UseSceneOptions, type UseSceneTextEditOptions, type UseSceneTextEditReturn, type UseSceneTrivialOptions, type UseSelectToolOptions, type UseSelectionOptions, UseSimulationOptions, type UseSliceToolOptions, type UseStandardActionsOptions, type UseStarToolOptions, type UseTextEditOptions, type UseTextEditReturn, VERSION, type VelocityTracker, type VersionCheck, VertexColorChannel, ViewAnimationOptions, ViewApi, type ViewRect, type ViewResolver, type ViewTarget, type ViewTransform, ViewportDims, type ViewportLayer, type ViewportZoomAnimateOptions, type ViewportZoomOptions, type VisibilityRules, type VisibleRaf, type VisibleRafOptions, type VisibleRafTarget, WHEEL_ZOOM_STEP, type WarmRenderOptions, WeaselProvider, type WeaselProviderProps, type WheelInput, type WheelPanOptions, type WheelPanOpts, type WorkspaceTintLayerOptions, ZOOM_FLOOR, type ZoomBound, type ZoomClampOpts, type ZoomFactor, actionIs, actionShortcuts, alignDeltaFor, alignTargetBounds, always, and, animateLifecycle, animateOnSetPose, annulusSemiAxes, applyOpsTo, applyStyleToRange, areaSelectAction, areaSelectContribution, arrayAdapter, axisAlignedBounds, bindRig, blendPoses, buildChromeCtx, buildDebugOverlayCommands, buildSceneViewCommands, canBringForward, canHover, canSendBackward, capabilityAll, capabilityIn, capabilityIs, capabilityNot, caretIndexAt, centerRootOn, charOffsetToDomPosition, checkRequirements, circlePath, clampView, clearSelectionAction, clipboardCopyAction, clipboardCutAction, clipboardPasteAction, cloneAction, coarsePointer, composeAffordanceLayer, composeRectPose, composeRigidPose, composeSelectionPose, computeFitView, computeFitViewport, computeIndicatorCommand, computeSliceOps, computeWheelAction, cond, constrainTo45, countPathAnchors, createArrangeOp, createChildrenLayer, createCornerResizeAffordance, createDebugOverlayLayer, createDebugSink, createDeleteOp, createHistory, createInsertOp, createKeyState, createLinkedCursorContribution, createLongPressFeedbackContribution, createMinimapContribution, createMoveToIndexOp, createNodeProperties, createNodeRouting, createPaintedCursorLayer, createParallaxLayer, createParallaxPlane, createPathAnchorAffordances, createPathEditingOverlayLayer, createPathLayer, createPenPreviewLayer, createPoseFeed, createPoseOverrides, createRasterSession, createReflowTransition, createReorderOp, createReparentOp, createRotationAffordance, createScene, createSelectionHandlesLayer, createSelectionOutlineLayer, createSelectionOverlayLayer, createSetDataOp, createSetLayerOp, createSetLayoutOp, createSetPathOp, createSetSelectionOp, createSetTextOp, createSlew, createTextLayer, createTilePattern, createTiledLayer, createTransformOp, createVelocityTracker, createViewResolver, createViewportLayer, crosshairRects, cycleFill, cycleVertexColors, debugSnapshotArgs, decomposeRectPose, decomposeRigidPose, defaultCommitAdapter, defaultDrawOne, defaultLabelTextRenderer, defaultNodeProperties, defaultNodeRouting, defaultPaintBounds, defaultVisibilityRules, definesFrame, derivedDepOf, derivedPose, dispatchApplyBatch, dlog, documentPose, domPositionToCharOffset, domToRuns, dragPanContribution, dwarn, editAnchorsAction, editingLayer, effectivePose, effectiveRangeStyle, enterTextEditAction, enumerateAnchors, findNodeShape, findShapeBounds, findShapeInk, findShapeSilhouette, fitTextPose, fitToBounds, fitZoom, flattenPreviews, focused, forEachCoalesced, gateLayer, gesturePlaneReader, gestureViewReader, gesturing, getAlpha01, getImageBitmap, getNodeShapes, getStylusData, gradientForBounds, gradientGeometry, hexToRgba, hitAffordanceRegions, hitAnchor, hitRotationHandle, hostAnchorCss, hostAnchorRect, hovering, hoveringSelected, imageStatus, inPlane, inferredNodeProperties, inferredNodeRouting, insertAction, insertLayer, insertPreviewExtent, interpolateView, isBuiltinToolPref, isDebugEnabled, isGradientFill, isPatternSpec, isPlainObject, isVectorImageSrc, keySpecShortcut, lassoSelectAction, layoutArrivalHandler, makePinchZoomAction, makeViewportWheelPanAction, makeViewportZoomAction, markerInset, markerKeyOf, markerSites, meanScale, mergeAlphaFromPrev, mergeContributions, minimapCenterAction, minimapPanAction, mirrorPose, modeDecorationLayer, modeIn, modeIs, modeNot, modifierHeld, momentum, moveAction, multiActive, nestedHitTester, never, nodeHasFlag, normalizeHex, normalizeView, normalizeZoom, not, onEmptyCanvas, opFactoryRegistry, openFilePicker, or, paintAlpha, paintWithAlpha, paintWithColor, pairRowsOf, parseColor, parseColorToRgba255, parseDebugFlags, patchRangeStyle, pathOriginProjection, pathPoseDescriptor, pathToAnchors, pickTopMostHit, pinchZoomAction, planPixelRender, pointInTextPose, pointRegionFrame, poseRotationOf, prefUnit, pressureToWidth, pxExtent, rainbowVertexColors, rangeWeight, rasterToPng, rebuildOp, reconcileSpecs, rectMarkerPath, registerNodeShape, registerOpFactory, registeredOpNames, releaseCanvasRenderer, renderDebugSnapshot, renderLabel, renderNeeds, renderSceneToCanvas, renderSceneToPixels, resizeAction, resolveColor, resolveFillPattern, resolveMarkerSize, resolveOverlays, resolvePatternSpec, resolvePreviews, resolveSkeleton, resolveSpatialReference, resolveVisibility, rgbaToHex, rigidRigApply, rotateAction, rotateAroundAABBCenter, rotatePathAround, rotationDegreesUnit, rotationHandle, roundRectPath, runsToDom, sampleGradientStops, sampleTrack, satisfiesRange, scaleDelta, sceneFromJSON, sceneNodeClientRect, sceneSelectionStore, sceneToAdapter, screenAngleOf, screenToWorld, screenTolerance, selectFromLasso, selectionAtLeast, selectionEmpty, selectionIs, selectionLayer, selectionMoveBindings, selectionMoveContribution, selectionResizeBindings, selectionResizeContribution, selectionRotateBindings, selectionRotateContribution, selectionTransformBindings, selectionTransformContribution, setFlagOverRange, shapeCoversPoint, slewToward, sliceAction, snap, solid, solidVertexColors, solveIk, springPose, springVertexColors, squarePath, stableStringify, staggerVertexColors, standoff, startThresholdDrag, strokeInsets, strokeOf, strokeWith, styleAtRange, subscribeImageReady, textCommand, textCommandFromPose, textCommandFromRuns, tiledProject, toHex8, translateRectPose, tweenPose, tweenVertexColors, unboldPatch, unionAABB, unionBounds, unionOfChildren, unionOfChildrenVia, useAlign, useAnimatedReflow, useAnimator, useArrayAdapter, useAutoCenter, useBooleans, useBooleansAdapter, useCanvasFocus, useCanvasSize, useCreateOutlinesAdapter, useDeviceProfile, useDistribute, useDragGesture, useDragHandle, useDragRadial, useDragRect, useDropZone, useEllipseTool, useEyedropperTool, useGradientKinds, useHandTool, useHandleDrag, useHostAnchor, useHoverTracking, useImageTool, useKeyState, useKeybindings, useLassoTool, useLayoutArrivals, useLineTool, useNodeOverlayFrame, usePaintKind, usePaintKinds, usePenTool, usePencilTool, usePointerStylus, usePolygonTool, usePoseCompositionDepSource, usePoseDescriptorDepSource, usePoseRun, usePublishSelection, useRectTool, useResizePolicy, useRig, useScene, useSceneAdapter, useSceneTextEdit, useSelectTool, useSelection, useSelectionContext, useSimulation, useSliceDep, useSliceDepSource, useSliceTool, useStandardActions, useStarTool, useTextEdit, useTextTool, useVelocityTracker, useVisibleRaf, viewToTransform, viewZoom, viewportDragPanAction, viewportWheelPanAction, viewportZoomAction, warmRender, wheelPan, wheelZoom, wheelZoomFactor, when, withAlpha01, withCoord, withGradientKind, withinPxBox, withinPxRadius, workspaceTintLayer, worldPoseLookup, worldToScreen, zoomAt, zoomAtLeast };