microboard-temp 0.14.18 → 0.14.20

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/dist/esm/index.js CHANGED
@@ -11491,6 +11491,28 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11491
11491
  return op;
11492
11492
  }
11493
11493
  }
11494
+ // src/Overlay/IconPack.ts
11495
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11496
+ function overlaySymbolIcon(key) {
11497
+ return {
11498
+ kind: "symbol",
11499
+ key,
11500
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
11501
+ };
11502
+ }
11503
+ function overlayAssetIcon(path2, state) {
11504
+ return state ? {
11505
+ kind: "asset",
11506
+ path: path2,
11507
+ mimeType: "image/svg+xml",
11508
+ state
11509
+ } : {
11510
+ kind: "asset",
11511
+ path: path2,
11512
+ mimeType: "image/svg+xml"
11513
+ };
11514
+ }
11515
+
11494
11516
  // src/Overlay/OverlayIcons.ts
11495
11517
  var OVERLAY_SYMBOL_KEYS = {
11496
11518
  styleFill: "style.fill",
@@ -11499,19 +11521,19 @@ var OVERLAY_SYMBOL_KEYS = {
11499
11521
  styleFontSize: "style.fontSize"
11500
11522
  };
11501
11523
  function symbolIcon(key, state) {
11502
- return state ? { kind: "symbol", key, state } : { kind: "symbol", key };
11524
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11503
11525
  }
11504
11526
  function styleFillIcon(state) {
11505
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11527
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
11506
11528
  }
11507
11529
  function styleStrokeIcon(state) {
11508
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11530
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
11509
11531
  }
11510
11532
  function styleColorIcon(state) {
11511
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11533
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
11512
11534
  }
11513
11535
  function styleFontSizeIcon(state) {
11514
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11536
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
11515
11537
  }
11516
11538
  // src/Overlay/overlayRegistry.ts
11517
11539
  var itemOverlays = {};
@@ -11540,6 +11562,45 @@ function getToolOverlay(toolName) {
11540
11562
  function listToolOverlays() {
11541
11563
  return Object.values(toolOverlays);
11542
11564
  }
11565
+ function listCreateSurfaceEntries() {
11566
+ const groupedEntries = new Map;
11567
+ const ungroupedEntries = [];
11568
+ for (const tool of Object.values(toolOverlays)) {
11569
+ const group = tool.surface?.group;
11570
+ if (!group) {
11571
+ ungroupedEntries.push({
11572
+ kind: "tool",
11573
+ tool,
11574
+ order: tool.surface?.order
11575
+ });
11576
+ continue;
11577
+ }
11578
+ const existing = groupedEntries.get(group.id);
11579
+ if (existing) {
11580
+ existing.tools.push(tool);
11581
+ if (existing.order === undefined && group.order !== undefined) {
11582
+ existing.order = group.order;
11583
+ }
11584
+ continue;
11585
+ }
11586
+ groupedEntries.set(group.id, {
11587
+ kind: "group",
11588
+ id: group.id,
11589
+ label: group.label,
11590
+ description: group.description,
11591
+ icon: group.icon,
11592
+ order: group.order,
11593
+ behavior: group.behavior,
11594
+ tools: [tool]
11595
+ });
11596
+ }
11597
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
11598
+ ...group,
11599
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
11600
+ })).sort(compareEntriesByOrder);
11601
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
11602
+ return [...sortedGroups, ...sortedUngroupedEntries];
11603
+ }
11543
11604
  function listSelectionActions() {
11544
11605
  return Object.values(selectionActions);
11545
11606
  }
@@ -11549,6 +11610,33 @@ function getSelectionOverlayActions(items) {
11549
11610
  function resolveDynamicOptions(providerId, context) {
11550
11611
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
11551
11612
  }
11613
+ function matchesOverlayCondition(condition, context) {
11614
+ if (!condition) {
11615
+ return true;
11616
+ }
11617
+ switch (condition.kind) {
11618
+ case "equals":
11619
+ return readOverlayValueSource(context, condition.source) === condition.value;
11620
+ case "truthy":
11621
+ return !!readOverlayValueSource(context, condition.source);
11622
+ case "falsy":
11623
+ return !readOverlayValueSource(context, condition.source);
11624
+ case "itemTypeIn":
11625
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
11626
+ case "selectionSize": {
11627
+ const size = context.items?.length ?? (context.item ? 1 : 0);
11628
+ const meetsMin = condition.min === undefined || size >= condition.min;
11629
+ const meetsMax = condition.max === undefined || size <= condition.max;
11630
+ return meetsMin && meetsMax;
11631
+ }
11632
+ case "allOf":
11633
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
11634
+ case "anyOf":
11635
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
11636
+ case "not":
11637
+ return !matchesOverlayCondition(condition.condition, context);
11638
+ }
11639
+ }
11552
11640
  function intersectOverlayActions(items) {
11553
11641
  if (items.length === 0) {
11554
11642
  return [];
@@ -11567,6 +11655,24 @@ function intersectOverlayActions(items) {
11567
11655
  }
11568
11656
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
11569
11657
  }
11658
+ function compareToolsBySurfaceOrder(a, b) {
11659
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
11660
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
11661
+ return aOrder - bOrder || a.label.localeCompare(b.label);
11662
+ }
11663
+ function compareEntriesByOrder(a, b) {
11664
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
11665
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
11666
+ const aLabel = a.label ?? a.tool?.label ?? "";
11667
+ const bLabel = b.label ?? b.tool?.label ?? "";
11668
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
11669
+ }
11670
+ function readOverlayValueSource(context, source) {
11671
+ if (source.kind === "itemProperty") {
11672
+ return context.item ? context.item[source.property] : undefined;
11673
+ }
11674
+ return context.tool ? context.tool[source.property] : undefined;
11675
+ }
11570
11676
  // src/Items/BaseItem/BaseItem.ts
11571
11677
  class BaseItem {
11572
11678
  static createCommand;
@@ -37568,6 +37674,14 @@ var richTextOverlay = {
37568
37674
  }
37569
37675
  ]
37570
37676
  }
37677
+ ],
37678
+ sections: [
37679
+ {
37680
+ id: "textTypography",
37681
+ label: "Typography",
37682
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
37683
+ actionIds: ["text.fontSize"]
37684
+ }
37571
37685
  ]
37572
37686
  };
37573
37687
  var addTextToolOverlay = {
@@ -37576,8 +37690,12 @@ var addTextToolOverlay = {
37576
37690
  kind: "create",
37577
37691
  createsItemType: "RichText",
37578
37692
  family: "text",
37579
- icon: { kind: "symbol", key: "tool.text" },
37580
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
37693
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
37694
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37695
+ launch: { kind: "activate-tool" },
37696
+ surface: {
37697
+ order: 6
37698
+ }
37581
37699
  };
37582
37700
 
37583
37701
  // src/Items/RichText/RichText.ts
@@ -44047,12 +44165,28 @@ var COLOR_PALETTE = [
44047
44165
  "#118AB2",
44048
44166
  "#7B61FF"
44049
44167
  ];
44050
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
44168
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
44169
+ var lineStyleAssetIcons = {
44170
+ straight: connectorAssetIcon("LineStraight"),
44171
+ curved: connectorAssetIcon("LineCurved"),
44172
+ orthogonal: connectorAssetIcon("LineOrthogonal")
44173
+ };
44174
+ var pointerAssetIcons = {
44175
+ None: connectorAssetIcon("PointerNone"),
44176
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
44177
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
44178
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
44179
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
44180
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
44181
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
44182
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
44183
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
44184
+ };
44051
44185
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44052
44186
  id: style,
44053
44187
  label: style[0].toUpperCase() + style.slice(1),
44054
44188
  value: style,
44055
- icon: symbolIcon2(`connector.lineStyle.${style}`)
44189
+ icon: lineStyleAssetIcons[style]
44056
44190
  }));
44057
44191
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44058
44192
  id: `${width}`,
@@ -44063,13 +44197,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44063
44197
  id: pointer,
44064
44198
  label: pointer,
44065
44199
  value: pointer,
44066
- icon: symbolIcon2(`connector.pointer.${pointer}`)
44200
+ icon: pointerAssetIcons[pointer]
44067
44201
  }));
44068
44202
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44069
44203
  id: style,
44070
44204
  label: style,
44071
44205
  value: style,
44072
- icon: symbolIcon2(`stroke.${style}`)
44206
+ icon: overlayAssetIcon(style === "solid" ? "src/Items/Shape/icons/StrokeSolid.icon.svg" : style === "dot" ? "src/Items/Shape/icons/StrokeDot.icon.svg" : style === "dash" ? "src/Items/Shape/icons/StrokeDash.icon.svg" : "src/Items/Shape/icons/StrokeLongDash.icon.svg")
44073
44207
  }));
44074
44208
  var connectorStyleControls = [
44075
44209
  {
@@ -44124,7 +44258,7 @@ var connectorStyleControls = [
44124
44258
  {
44125
44259
  id: "smartJump",
44126
44260
  label: "Smart jump",
44127
- icon: symbolIcon2("connector.smartJump"),
44261
+ icon: connectorAssetIcon("SmartJump"),
44128
44262
  valueSource: { kind: "itemProperty", property: "smartJump" },
44129
44263
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44130
44264
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44183,7 +44317,7 @@ var connectorToolControls = [
44183
44317
  {
44184
44318
  id: "toolSmartJump",
44185
44319
  label: "Smart jump",
44186
- icon: symbolIcon2("connector.smartJump"),
44320
+ icon: connectorAssetIcon("SmartJump"),
44187
44321
  valueSource: { kind: "toolProperty", property: "smartJump" },
44188
44322
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44189
44323
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44195,25 +44329,33 @@ var connectorOverlay = {
44195
44329
  {
44196
44330
  id: "connector.switchPointers",
44197
44331
  label: "Switch arrows",
44198
- icon: symbolIcon2("connector.switchPointers"),
44332
+ icon: connectorAssetIcon("SwitchPointers"),
44199
44333
  target: "selection",
44200
44334
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44201
44335
  },
44202
44336
  {
44203
44337
  id: "connector.style",
44204
44338
  label: "Connector style",
44205
- icon: symbolIcon2("connector.style"),
44339
+ icon: connectorAssetIcon("Style"),
44206
44340
  target: "each",
44207
44341
  controls: connectorStyleControls,
44208
44342
  groups: [
44209
44343
  {
44210
44344
  id: "connectorStyle",
44211
44345
  label: "Connector style",
44212
- icon: symbolIcon2("connector.style"),
44346
+ icon: connectorAssetIcon("Style"),
44213
44347
  controlIds: connectorStyleControls.map((control) => control.id)
44214
44348
  }
44215
44349
  ]
44216
44350
  }
44351
+ ],
44352
+ sections: [
44353
+ {
44354
+ id: "connectorArrows",
44355
+ label: "Arrows",
44356
+ icon: connectorAssetIcon("Style"),
44357
+ actionIds: ["connector.switchPointers", "connector.style"]
44358
+ }
44217
44359
  ]
44218
44360
  };
44219
44361
  var addConnectorToolOverlay = {
@@ -44223,8 +44365,7 @@ var addConnectorToolOverlay = {
44223
44365
  createsItemType: "Connector",
44224
44366
  family: "connector",
44225
44367
  icon: {
44226
- kind: "symbol",
44227
- key: "tool.connector",
44368
+ ...connectorAssetIcon("Tool"),
44228
44369
  state: {
44229
44370
  swatch: { kind: "toolProperty", property: "lineColor" },
44230
44371
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -44234,12 +44375,24 @@ var addConnectorToolOverlay = {
44234
44375
  controls: connectorToolControls,
44235
44376
  groups: [
44236
44377
  {
44237
- id: "connectorToolStyle",
44378
+ id: "connectorToolQuickDefaults",
44379
+ label: "Connector quick defaults",
44380
+ icon: connectorAssetIcon("LineStraight"),
44381
+ controlIds: ["toolLineStyle"],
44382
+ description: "Primary defaults that match the compact create-surface picker."
44383
+ },
44384
+ {
44385
+ id: "connectorToolAdvancedDefaults",
44238
44386
  label: "Connector defaults",
44239
- icon: symbolIcon2("connector.style"),
44240
- controlIds: connectorToolControls.map((control) => control.id)
44387
+ icon: connectorAssetIcon("Style"),
44388
+ controlIds: connectorToolControls.map((control) => control.id),
44389
+ description: "Extended defaults available in richer create flows."
44241
44390
  }
44242
44391
  ]
44392
+ },
44393
+ launch: { kind: "activate-tool" },
44394
+ surface: {
44395
+ order: 8
44243
44396
  }
44244
44397
  };
44245
44398
 
@@ -58377,63 +58530,60 @@ var COLOR_PALETTE2 = [
58377
58530
  "#7B61FF",
58378
58531
  "transparent"
58379
58532
  ];
58380
- var inlineShapeAsset = (folder, file2 = folder) => ({
58381
- kind: "asset",
58382
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
58383
- mimeType: "image/svg+xml"
58384
- });
58385
- var symbolIcon3 = (key) => ({ kind: "symbol", key });
58533
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58534
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
58535
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
58386
58536
  var BASIC_INLINE_OPTIONS = [
58387
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
58388
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
58389
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
58390
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
58391
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
58537
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58538
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
58539
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
58540
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
58541
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
58392
58542
  ];
58393
58543
  var SHAPE_CATALOG_OPTIONS = [
58394
58544
  ...BASIC_INLINE_OPTIONS,
58395
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle") },
58396
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
58397
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
58398
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
58399
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft") },
58400
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight") },
58401
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
58402
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
58403
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
58404
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
58405
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
58406
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
58407
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram") },
58408
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
58409
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess") },
58410
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
58411
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
58412
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
58413
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
58414
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
58415
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task") },
58416
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway") },
58417
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel") },
58418
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor") },
58419
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent") },
58420
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting") },
58421
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent") },
58422
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent") },
58423
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting") },
58424
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject") },
58425
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore") },
58426
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant") },
58427
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction") },
58428
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess") },
58429
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group") },
58430
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation") }
58545
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
58546
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58547
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58548
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58549
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
58550
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
58551
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58552
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58553
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58554
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58555
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58556
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58557
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
58558
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58559
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
58560
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58561
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58562
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58563
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58564
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58565
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
58566
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
58567
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
58568
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
58569
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
58570
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
58571
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
58572
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
58573
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
58574
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
58575
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
58576
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
58577
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
58578
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
58579
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
58580
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
58431
58581
  ];
58432
58582
  var BORDER_STYLE_OPTIONS = [
58433
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58434
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58435
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58436
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58583
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
58584
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
58585
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
58586
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
58437
58587
  ];
58438
58588
  var shapeTypeControl = {
58439
58589
  id: "shapeType",
@@ -58442,6 +58592,12 @@ var shapeTypeControl = {
58442
58592
  editor: {
58443
58593
  kind: "enum-icon",
58444
58594
  options: BASIC_INLINE_OPTIONS,
58595
+ layout: "grid",
58596
+ quickOptions: {
58597
+ family: "basicShapes",
58598
+ maxVisible: 18,
58599
+ overflow: "show-more"
58600
+ },
58445
58601
  catalog: {
58446
58602
  kind: "catalog",
58447
58603
  label: "Shape catalog",
@@ -58510,7 +58666,7 @@ var shapeOverlay = {
58510
58666
  {
58511
58667
  id: "shape.shapeType",
58512
58668
  label: "Shape type",
58513
- icon: symbolIcon3("shape.type"),
58669
+ icon: localShapeIcon("Type"),
58514
58670
  target: "each",
58515
58671
  controls: [shapeTypeControl]
58516
58672
  },
@@ -58536,6 +58692,20 @@ var shapeOverlay = {
58536
58692
  }
58537
58693
  ]
58538
58694
  }
58695
+ ],
58696
+ sections: [
58697
+ {
58698
+ id: "shapeTypeSection",
58699
+ label: "Type",
58700
+ icon: localShapeIcon("Type"),
58701
+ actionIds: ["shape.shapeType"]
58702
+ },
58703
+ {
58704
+ id: "shapeAppearanceSection",
58705
+ label: "Appearance",
58706
+ icon: localShapeIcon("Stroke"),
58707
+ actionIds: ["shape.fill", "shape.strokeStyle"]
58708
+ }
58539
58709
  ]
58540
58710
  };
58541
58711
  var addShapeToolOverlay = {
@@ -58545,8 +58715,7 @@ var addShapeToolOverlay = {
58545
58715
  createsItemType: "Shape",
58546
58716
  family: "shape",
58547
58717
  icon: {
58548
- kind: "symbol",
58549
- key: "tool.shape",
58718
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
58550
58719
  state: {
58551
58720
  note: "UI may swap the top-level icon to the selected shape option when desired."
58552
58721
  }
@@ -58560,6 +58729,12 @@ var addShapeToolOverlay = {
58560
58729
  editor: {
58561
58730
  kind: "enum-icon",
58562
58731
  options: BASIC_INLINE_OPTIONS,
58732
+ layout: "grid",
58733
+ quickOptions: {
58734
+ family: "basicShapes",
58735
+ maxVisible: 18,
58736
+ overflow: "show-more"
58737
+ },
58563
58738
  catalog: {
58564
58739
  kind: "catalog",
58565
58740
  label: "Shape catalog",
@@ -58570,6 +58745,10 @@ var addShapeToolOverlay = {
58570
58745
  invoke: { kind: "toolProperty", property: "type" }
58571
58746
  }
58572
58747
  ]
58748
+ },
58749
+ launch: { kind: "activate-tool" },
58750
+ surface: {
58751
+ order: 7
58573
58752
  }
58574
58753
  };
58575
58754
 
@@ -62976,14 +63155,14 @@ var cardOverlay = {
62976
63155
  {
62977
63156
  id: "card.flip",
62978
63157
  label: "Flip card",
62979
- icon: { kind: "symbol", key: "card.flip" },
63158
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
62980
63159
  target: "each",
62981
63160
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
62982
63161
  },
62983
63162
  {
62984
63163
  id: "card.rotateCcw",
62985
63164
  label: "Rotate 90 counter clockwise",
62986
- icon: { kind: "symbol", key: "card.rotateCcw" },
63165
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
62987
63166
  target: "each",
62988
63167
  invoke: {
62989
63168
  kind: "customMethod",
@@ -62994,7 +63173,7 @@ var cardOverlay = {
62994
63173
  {
62995
63174
  id: "card.rotateCw",
62996
63175
  label: "Rotate 90 clockwise",
62997
- icon: { kind: "symbol", key: "card.rotateCw" },
63176
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
62998
63177
  target: "each",
62999
63178
  invoke: {
63000
63179
  kind: "customMethod",
@@ -63248,28 +63427,28 @@ var deckOverlay = {
63248
63427
  {
63249
63428
  id: "deck.getTopCard",
63250
63429
  label: "Draw top card",
63251
- icon: { kind: "symbol", key: "deck.drawTop" },
63430
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
63252
63431
  target: "single",
63253
63432
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63254
63433
  },
63255
63434
  {
63256
63435
  id: "deck.getBottomCard",
63257
63436
  label: "Draw bottom card",
63258
- icon: { kind: "symbol", key: "deck.drawBottom" },
63437
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
63259
63438
  target: "single",
63260
63439
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63261
63440
  },
63262
63441
  {
63263
63442
  id: "deck.getRandomCard",
63264
63443
  label: "Draw random card",
63265
- icon: { kind: "symbol", key: "deck.drawRandom" },
63444
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
63266
63445
  target: "single",
63267
63446
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63268
63447
  },
63269
63448
  {
63270
63449
  id: "deck.getCards",
63271
63450
  label: "Draw cards",
63272
- icon: { kind: "symbol", key: "deck.drawMany" },
63451
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
63273
63452
  target: "single",
63274
63453
  controls: [
63275
63454
  {
@@ -63291,14 +63470,14 @@ var deckOverlay = {
63291
63470
  {
63292
63471
  id: "deck.shuffle",
63293
63472
  label: "Shuffle",
63294
- icon: { kind: "symbol", key: "deck.shuffle" },
63473
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
63295
63474
  target: "single",
63296
63475
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63297
63476
  },
63298
63477
  {
63299
63478
  id: "deck.flip",
63300
63479
  label: "Flip deck",
63301
- icon: { kind: "symbol", key: "deck.flip" },
63480
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
63302
63481
  target: "single",
63303
63482
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63304
63483
  }
@@ -63307,7 +63486,7 @@ var deckOverlay = {
63307
63486
  var createDeckSelectionAction = {
63308
63487
  id: "deck.createFromSelection",
63309
63488
  label: "Create deck",
63310
- icon: { kind: "symbol", key: "deck.createFromSelection" },
63489
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
63311
63490
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63312
63491
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63313
63492
  isAvailable: (items) => {
@@ -63876,14 +64055,14 @@ var diceOverlay = {
63876
64055
  {
63877
64056
  id: "dice.throw",
63878
64057
  label: "Throw dice",
63879
- icon: { kind: "symbol", key: "dice.throw" },
64058
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
63880
64059
  target: "each",
63881
64060
  invoke: { kind: "customMethod", methodName: "throwDice" }
63882
64061
  },
63883
64062
  {
63884
64063
  id: "dice.range",
63885
64064
  label: "Range",
63886
- icon: { kind: "symbol", key: "dice.range" },
64065
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
63887
64066
  target: "each",
63888
64067
  controls: [
63889
64068
  {
@@ -63919,6 +64098,14 @@ var diceOverlay = {
63919
64098
  }
63920
64099
  ]
63921
64100
  }
64101
+ ],
64102
+ sections: [
64103
+ {
64104
+ id: "diceActions",
64105
+ label: "Dice",
64106
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64107
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
64108
+ }
63922
64109
  ]
63923
64110
  };
63924
64111
  var addDiceToolOverlay = {
@@ -63927,7 +64114,19 @@ var addDiceToolOverlay = {
63927
64114
  kind: "create",
63928
64115
  createsItemType: "Dice",
63929
64116
  family: "game",
63930
- icon: { kind: "symbol", key: "tool.dice" }
64117
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64118
+ launch: { kind: "activate-tool" },
64119
+ surface: {
64120
+ order: 1,
64121
+ group: {
64122
+ id: "gameItems",
64123
+ label: "Game items",
64124
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64125
+ order: 1,
64126
+ behavior: "open-panel"
64127
+ },
64128
+ relatedToolNames: ["AddScreen", "AddPouch"]
64129
+ }
63931
64130
  };
63932
64131
 
63933
64132
  // src/Items/Dice/Dice.ts
@@ -64275,8 +64474,7 @@ var screenOverlay = {
64275
64474
  id: "screen.background",
64276
64475
  label: "Background",
64277
64476
  icon: {
64278
- kind: "symbol",
64279
- key: "screen.background",
64477
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64280
64478
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64281
64479
  },
64282
64480
  target: "each",
@@ -64293,6 +64491,97 @@ var screenOverlay = {
64293
64491
  invoke: { kind: "setProperty", property: "backgroundColor" }
64294
64492
  }
64295
64493
  ]
64494
+ },
64495
+ {
64496
+ id: "screen.stroke",
64497
+ label: "Stroke",
64498
+ icon: {
64499
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64500
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64501
+ },
64502
+ target: "each",
64503
+ controls: [
64504
+ {
64505
+ id: "borderColor",
64506
+ label: "Border color",
64507
+ valueSource: { kind: "itemProperty", property: "borderColor" },
64508
+ editor: {
64509
+ kind: "color",
64510
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
64511
+ allowTransparent: true,
64512
+ presentation: "square"
64513
+ },
64514
+ invoke: { kind: "setProperty", property: "borderColor" }
64515
+ },
64516
+ {
64517
+ id: "borderWidth",
64518
+ label: "Border width",
64519
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
64520
+ editor: {
64521
+ kind: "number-stepper",
64522
+ min: 0,
64523
+ max: 8,
64524
+ step: 1,
64525
+ presets: [0, 1, 2, 4],
64526
+ unit: "px"
64527
+ },
64528
+ invoke: { kind: "setProperty", property: "borderWidth" }
64529
+ }
64530
+ ],
64531
+ groups: [
64532
+ {
64533
+ id: "screenStrokeStyle",
64534
+ label: "Stroke",
64535
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64536
+ controlIds: ["borderColor", "borderWidth"]
64537
+ }
64538
+ ]
64539
+ },
64540
+ {
64541
+ id: "screen.backgroundImage",
64542
+ label: "Background image",
64543
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
64544
+ target: "each",
64545
+ when: {
64546
+ kind: "falsy",
64547
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64548
+ },
64549
+ controls: [
64550
+ {
64551
+ id: "backgroundUrl",
64552
+ label: "Background image",
64553
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
64554
+ editor: {
64555
+ kind: "asset-upload",
64556
+ mode: "single",
64557
+ accept: ["image/*"]
64558
+ },
64559
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
64560
+ }
64561
+ ]
64562
+ },
64563
+ {
64564
+ id: "screen.removeBackgroundImage",
64565
+ label: "Remove background image",
64566
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
64567
+ target: "each",
64568
+ when: {
64569
+ kind: "truthy",
64570
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64571
+ },
64572
+ invoke: {
64573
+ kind: "customMethod",
64574
+ methodName: "setBackgroundUrl",
64575
+ args: [{ kind: "static", value: "" }]
64576
+ }
64577
+ }
64578
+ ],
64579
+ sections: [
64580
+ {
64581
+ id: "screenAppearance",
64582
+ label: "Appearance",
64583
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64584
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64296
64585
  }
64297
64586
  ]
64298
64587
  };
@@ -64302,7 +64591,19 @@ var addScreenToolOverlay = {
64302
64591
  kind: "create",
64303
64592
  createsItemType: "Screen",
64304
64593
  family: "container",
64305
- icon: { kind: "symbol", key: "tool.screen" }
64594
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
64595
+ launch: { kind: "activate-tool" },
64596
+ surface: {
64597
+ order: 2,
64598
+ group: {
64599
+ id: "gameItems",
64600
+ label: "Game items",
64601
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64602
+ order: 1,
64603
+ behavior: "open-panel"
64604
+ },
64605
+ relatedToolNames: ["AddDice", "AddPouch"]
64606
+ }
64306
64607
  };
64307
64608
  var addPouchToolOverlay = {
64308
64609
  toolName: "AddPouch",
@@ -64310,7 +64611,19 @@ var addPouchToolOverlay = {
64310
64611
  kind: "create",
64311
64612
  createsItemType: "Screen",
64312
64613
  family: "container",
64313
- icon: { kind: "symbol", key: "tool.pouch" }
64614
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
64615
+ launch: { kind: "activate-tool" },
64616
+ surface: {
64617
+ order: 3,
64618
+ group: {
64619
+ id: "gameItems",
64620
+ label: "Game items",
64621
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64622
+ order: 1,
64623
+ behavior: "open-panel"
64624
+ },
64625
+ relatedToolNames: ["AddDice", "AddScreen"]
64626
+ }
64314
64627
  };
64315
64628
 
64316
64629
  // src/Items/Screen/Screen.ts
@@ -72270,8 +72583,7 @@ var addDrawingToolOverlay = {
72270
72583
  family: "drawing",
72271
72584
  createsItemType: "Drawing",
72272
72585
  icon: {
72273
- kind: "symbol",
72274
- key: "tool.pen",
72586
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72275
72587
  state: {
72276
72588
  swatch: { kind: "toolProperty", property: "strokeColor" },
72277
72589
  note: "UI can show the pending pen color in the icon."
@@ -72283,10 +72595,22 @@ var addDrawingToolOverlay = {
72283
72595
  {
72284
72596
  id: "drawingDefaults",
72285
72597
  label: "Pen defaults",
72286
- icon: { kind: "symbol", key: "tool.pen" },
72598
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72287
72599
  controlIds: strokeControls2.map((control) => control.id)
72288
72600
  }
72289
72601
  ]
72602
+ },
72603
+ launch: { kind: "activate-tool" },
72604
+ surface: {
72605
+ order: 1,
72606
+ group: {
72607
+ id: "drawingTools",
72608
+ label: "Drawing",
72609
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72610
+ order: 5,
72611
+ behavior: "activate-last-used"
72612
+ },
72613
+ relatedToolNames: ["AddHighlighter", "Eraser"]
72290
72614
  }
72291
72615
  };
72292
72616
  var addHighlighterToolOverlay = {
@@ -72296,8 +72620,7 @@ var addHighlighterToolOverlay = {
72296
72620
  family: "drawing",
72297
72621
  createsItemType: "Drawing",
72298
72622
  icon: {
72299
- kind: "symbol",
72300
- key: "tool.highlighter",
72623
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72301
72624
  state: {
72302
72625
  swatch: { kind: "toolProperty", property: "strokeColor" },
72303
72626
  note: "UI can show the pending highlighter color in the icon."
@@ -72309,10 +72632,22 @@ var addHighlighterToolOverlay = {
72309
72632
  {
72310
72633
  id: "highlighterDefaults",
72311
72634
  label: "Highlighter defaults",
72312
- icon: { kind: "symbol", key: "tool.highlighter" },
72635
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72313
72636
  controlIds: strokeControls2.map((control) => control.id)
72314
72637
  }
72315
72638
  ]
72639
+ },
72640
+ launch: { kind: "activate-tool" },
72641
+ surface: {
72642
+ order: 2,
72643
+ group: {
72644
+ id: "drawingTools",
72645
+ label: "Drawing",
72646
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72647
+ order: 5,
72648
+ behavior: "activate-last-used"
72649
+ },
72650
+ relatedToolNames: ["AddDrawing", "Eraser"]
72316
72651
  }
72317
72652
  };
72318
72653
  var eraserToolOverlay = {
@@ -72320,7 +72655,7 @@ var eraserToolOverlay = {
72320
72655
  label: "Eraser",
72321
72656
  kind: "mode",
72322
72657
  family: "drawing",
72323
- icon: { kind: "symbol", key: "tool.eraser" },
72658
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
72324
72659
  defaults: {
72325
72660
  controls: [
72326
72661
  {
@@ -72337,6 +72672,18 @@ var eraserToolOverlay = {
72337
72672
  invoke: { kind: "toolProperty", property: "strokeWidth" }
72338
72673
  }
72339
72674
  ]
72675
+ },
72676
+ launch: { kind: "activate-tool" },
72677
+ surface: {
72678
+ order: 3,
72679
+ group: {
72680
+ id: "drawingTools",
72681
+ label: "Drawing",
72682
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72683
+ order: 5,
72684
+ behavior: "activate-last-used"
72685
+ },
72686
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
72340
72687
  }
72341
72688
  };
72342
72689
 
@@ -72537,7 +72884,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72537
72884
  id: frameType,
72538
72885
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72539
72886
  value: frameType,
72540
- icon: { kind: "symbol", key: `frame.${frameType}` }
72887
+ icon: overlayAssetIcon(frameType === "Custom" ? "src/Items/Frame/Basic/Custom/Custom.icon.svg" : frameType === "A4" ? "src/Items/Frame/Basic/A4/A4.icon.svg" : frameType === "Letter" ? "src/Items/Frame/Basic/Letter/Letter.icon.svg" : frameType === "Frame16x9" ? "src/Items/Frame/Basic/16-9/16-9.icon.svg" : frameType === "Frame4x3" ? "src/Items/Frame/Basic/4-3/4-3.icon.svg" : frameType === "Frame1x1" ? "src/Items/Frame/Basic/1-1/1-1.icon.svg" : frameType === "Frame3x2" ? "src/Items/Frame/Basic/3-2/3-2.icon.svg" : "src/Items/Frame/Basic/9-18/9-18.icon.svg")
72541
72888
  }));
72542
72889
  var addFrameToolOverlay = {
72543
72890
  toolName: "AddFrame",
@@ -72545,7 +72892,7 @@ var addFrameToolOverlay = {
72545
72892
  kind: "create",
72546
72893
  createsItemType: "Frame",
72547
72894
  family: "frame",
72548
- icon: { kind: "symbol", key: "tool.frame" },
72895
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
72549
72896
  defaults: {
72550
72897
  controls: [
72551
72898
  {
@@ -72559,6 +72906,10 @@ var addFrameToolOverlay = {
72559
72906
  invoke: { kind: "toolProperty", property: "shape" }
72560
72907
  }
72561
72908
  ]
72909
+ },
72910
+ launch: { kind: "activate-tool" },
72911
+ surface: {
72912
+ order: 10
72562
72913
  }
72563
72914
  };
72564
72915
 
@@ -72923,8 +73274,7 @@ var addStickerToolOverlay = {
72923
73274
  createsItemType: "Sticker",
72924
73275
  family: "sticker",
72925
73276
  icon: {
72926
- kind: "symbol",
72927
- key: "tool.sticker",
73277
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
72928
73278
  state: {
72929
73279
  swatch: { kind: "toolProperty", property: "backgroundColor" }
72930
73280
  }
@@ -72935,10 +73285,14 @@ var addStickerToolOverlay = {
72935
73285
  id: "stickerBackgroundColor",
72936
73286
  label: "Color",
72937
73287
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
72938
- editor: { kind: "color", palette: STICKER_COLORS },
73288
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
72939
73289
  invoke: { kind: "toolProperty", property: "backgroundColor" }
72940
73290
  }
72941
73291
  ]
73292
+ },
73293
+ launch: { kind: "activate-tool" },
73294
+ surface: {
73295
+ order: 9
72942
73296
  }
72943
73297
  };
72944
73298
 
@@ -75278,12 +75632,16 @@ export {
75278
75632
  positionAbsolutely,
75279
75633
  parsersHTML,
75280
75634
  parseCssRgb,
75635
+ overlaySymbolIcon,
75636
+ overlayAssetIcon,
75281
75637
  omitDefaultProperties,
75282
75638
  messageRouter,
75283
75639
  meetsWCAG_AAA,
75284
75640
  meetsWCAG_AA,
75641
+ matchesOverlayCondition,
75285
75642
  listToolOverlays,
75286
75643
  listSelectionActions,
75644
+ listCreateSurfaceEntries,
75287
75645
  itemOverlays,
75288
75646
  itemFactories2 as itemFactories,
75289
75647
  itemOverlays as itemActions,
@@ -75376,6 +75734,7 @@ export {
75376
75734
  PRESENCE_CLEANUP_USER_TIMER,
75377
75735
  PRESENCE_CLEANUP_IDLE_TIMER,
75378
75736
  OVERLAY_SYMBOL_KEYS,
75737
+ OVERLAY_ICON_SPRITE_PATH,
75379
75738
  MiroItemConverter,
75380
75739
  Mbr,
75381
75740
  Matrix,