microboard-temp 0.14.17 → 0.14.19

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.
@@ -11498,6 +11498,45 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11498
11498
  return op;
11499
11499
  }
11500
11500
  }
11501
+ // src/Overlay/IconPack.ts
11502
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11503
+ function overlaySymbolIcon(key) {
11504
+ return {
11505
+ kind: "symbol",
11506
+ key,
11507
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
11508
+ };
11509
+ }
11510
+ function overlayAssetIcon(path2) {
11511
+ return {
11512
+ kind: "asset",
11513
+ path: path2,
11514
+ mimeType: "image/svg+xml"
11515
+ };
11516
+ }
11517
+
11518
+ // src/Overlay/OverlayIcons.ts
11519
+ var OVERLAY_SYMBOL_KEYS = {
11520
+ styleFill: "style.fill",
11521
+ styleStroke: "style.stroke",
11522
+ styleColor: "style.color",
11523
+ styleFontSize: "style.fontSize"
11524
+ };
11525
+ function symbolIcon(key, state) {
11526
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11527
+ }
11528
+ function styleFillIcon(state) {
11529
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11530
+ }
11531
+ function styleStrokeIcon(state) {
11532
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11533
+ }
11534
+ function styleColorIcon(state) {
11535
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11536
+ }
11537
+ function styleFontSizeIcon(state) {
11538
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11539
+ }
11501
11540
  // src/Overlay/overlayRegistry.ts
11502
11541
  var itemOverlays = {};
11503
11542
  var toolOverlays = {};
@@ -11525,6 +11564,45 @@ function getToolOverlay(toolName) {
11525
11564
  function listToolOverlays() {
11526
11565
  return Object.values(toolOverlays);
11527
11566
  }
11567
+ function listCreateSurfaceEntries() {
11568
+ const groupedEntries = new Map;
11569
+ const ungroupedEntries = [];
11570
+ for (const tool of Object.values(toolOverlays)) {
11571
+ const group = tool.surface?.group;
11572
+ if (!group) {
11573
+ ungroupedEntries.push({
11574
+ kind: "tool",
11575
+ tool,
11576
+ order: tool.surface?.order
11577
+ });
11578
+ continue;
11579
+ }
11580
+ const existing = groupedEntries.get(group.id);
11581
+ if (existing) {
11582
+ existing.tools.push(tool);
11583
+ if (existing.order === undefined && group.order !== undefined) {
11584
+ existing.order = group.order;
11585
+ }
11586
+ continue;
11587
+ }
11588
+ groupedEntries.set(group.id, {
11589
+ kind: "group",
11590
+ id: group.id,
11591
+ label: group.label,
11592
+ description: group.description,
11593
+ icon: group.icon,
11594
+ order: group.order,
11595
+ behavior: group.behavior,
11596
+ tools: [tool]
11597
+ });
11598
+ }
11599
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
11600
+ ...group,
11601
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
11602
+ })).sort(compareEntriesByOrder);
11603
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
11604
+ return [...sortedGroups, ...sortedUngroupedEntries];
11605
+ }
11528
11606
  function listSelectionActions() {
11529
11607
  return Object.values(selectionActions);
11530
11608
  }
@@ -11534,6 +11612,33 @@ function getSelectionOverlayActions(items) {
11534
11612
  function resolveDynamicOptions(providerId, context) {
11535
11613
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
11536
11614
  }
11615
+ function matchesOverlayCondition(condition, context) {
11616
+ if (!condition) {
11617
+ return true;
11618
+ }
11619
+ switch (condition.kind) {
11620
+ case "equals":
11621
+ return readOverlayValueSource(context, condition.source) === condition.value;
11622
+ case "truthy":
11623
+ return !!readOverlayValueSource(context, condition.source);
11624
+ case "falsy":
11625
+ return !readOverlayValueSource(context, condition.source);
11626
+ case "itemTypeIn":
11627
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
11628
+ case "selectionSize": {
11629
+ const size = context.items?.length ?? (context.item ? 1 : 0);
11630
+ const meetsMin = condition.min === undefined || size >= condition.min;
11631
+ const meetsMax = condition.max === undefined || size <= condition.max;
11632
+ return meetsMin && meetsMax;
11633
+ }
11634
+ case "allOf":
11635
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
11636
+ case "anyOf":
11637
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
11638
+ case "not":
11639
+ return !matchesOverlayCondition(condition.condition, context);
11640
+ }
11641
+ }
11537
11642
  function intersectOverlayActions(items) {
11538
11643
  if (items.length === 0) {
11539
11644
  return [];
@@ -11552,6 +11657,24 @@ function intersectOverlayActions(items) {
11552
11657
  }
11553
11658
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
11554
11659
  }
11660
+ function compareToolsBySurfaceOrder(a, b) {
11661
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
11662
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
11663
+ return aOrder - bOrder || a.label.localeCompare(b.label);
11664
+ }
11665
+ function compareEntriesByOrder(a, b) {
11666
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
11667
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
11668
+ const aLabel = a.label ?? a.tool?.label ?? "";
11669
+ const bLabel = b.label ?? b.tool?.label ?? "";
11670
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
11671
+ }
11672
+ function readOverlayValueSource(context, source) {
11673
+ if (source.kind === "itemProperty") {
11674
+ return context.item ? context.item[source.property] : undefined;
11675
+ }
11676
+ return context.tool ? context.tool[source.property] : undefined;
11677
+ }
11555
11678
  // src/Items/BaseItem/BaseItem.ts
11556
11679
  class BaseItem {
11557
11680
  static createCommand;
@@ -37535,7 +37658,8 @@ var richTextOverlay = {
37535
37658
  {
37536
37659
  id: "text.fontSize",
37537
37660
  label: "Font size",
37538
- icon: { kind: "symbol", key: "text.fontSize" },
37661
+ icon: styleFontSizeIcon(),
37662
+ icon: styleFontSizeIcon(),
37539
37663
  target: "each",
37540
37664
  controls: [
37541
37665
  {
@@ -37553,6 +37677,14 @@ var richTextOverlay = {
37553
37677
  }
37554
37678
  ]
37555
37679
  }
37680
+ ],
37681
+ sections: [
37682
+ {
37683
+ id: "textTypography",
37684
+ label: "Typography",
37685
+ icon: overlaySymbolIcon("text.fontSize"),
37686
+ actionIds: ["text.fontSize"]
37687
+ }
37556
37688
  ]
37557
37689
  };
37558
37690
  var addTextToolOverlay = {
@@ -37561,8 +37693,12 @@ var addTextToolOverlay = {
37561
37693
  kind: "create",
37562
37694
  createsItemType: "RichText",
37563
37695
  family: "text",
37564
- icon: { kind: "symbol", key: "tool.text" },
37565
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
37696
+ icon: overlaySymbolIcon("tool.text"),
37697
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37698
+ launch: { kind: "activate-tool" },
37699
+ surface: {
37700
+ order: 6
37701
+ }
37566
37702
  };
37567
37703
 
37568
37704
  // src/Items/RichText/RichText.ts
@@ -44032,12 +44168,12 @@ var COLOR_PALETTE = [
44032
44168
  "#118AB2",
44033
44169
  "#7B61FF"
44034
44170
  ];
44035
- var symbolIcon = (key) => ({ kind: "symbol", key });
44171
+ var symbolIcon2 = (key) => overlaySymbolIcon(key);
44036
44172
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44037
44173
  id: style,
44038
44174
  label: style[0].toUpperCase() + style.slice(1),
44039
44175
  value: style,
44040
- icon: symbolIcon(`connector.lineStyle.${style}`)
44176
+ icon: symbolIcon2(`connector.lineStyle.${style}`)
44041
44177
  }));
44042
44178
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44043
44179
  id: `${width}`,
@@ -44048,13 +44184,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44048
44184
  id: pointer,
44049
44185
  label: pointer,
44050
44186
  value: pointer,
44051
- icon: symbolIcon(`connector.pointer.${pointer}`)
44187
+ icon: symbolIcon2(`connector.pointer.${pointer}`)
44052
44188
  }));
44053
44189
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44054
44190
  id: style,
44055
44191
  label: style,
44056
44192
  value: style,
44057
- icon: symbolIcon(`stroke.${style}`)
44193
+ icon: symbolIcon2(`stroke.${style}`)
44058
44194
  }));
44059
44195
  var connectorStyleControls = [
44060
44196
  {
@@ -44109,7 +44245,7 @@ var connectorStyleControls = [
44109
44245
  {
44110
44246
  id: "smartJump",
44111
44247
  label: "Smart jump",
44112
- icon: symbolIcon("connector.smartJump"),
44248
+ icon: symbolIcon2("connector.smartJump"),
44113
44249
  valueSource: { kind: "itemProperty", property: "smartJump" },
44114
44250
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44115
44251
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44168,7 +44304,7 @@ var connectorToolControls = [
44168
44304
  {
44169
44305
  id: "toolSmartJump",
44170
44306
  label: "Smart jump",
44171
- icon: symbolIcon("connector.smartJump"),
44307
+ icon: symbolIcon2("connector.smartJump"),
44172
44308
  valueSource: { kind: "toolProperty", property: "smartJump" },
44173
44309
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44174
44310
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44180,25 +44316,33 @@ var connectorOverlay = {
44180
44316
  {
44181
44317
  id: "connector.switchPointers",
44182
44318
  label: "Switch arrows",
44183
- icon: symbolIcon("connector.switchPointers"),
44319
+ icon: symbolIcon2("connector.switchPointers"),
44184
44320
  target: "selection",
44185
44321
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44186
44322
  },
44187
44323
  {
44188
44324
  id: "connector.style",
44189
44325
  label: "Connector style",
44190
- icon: symbolIcon("connector.style"),
44326
+ icon: symbolIcon2("connector.style"),
44191
44327
  target: "each",
44192
44328
  controls: connectorStyleControls,
44193
44329
  groups: [
44194
44330
  {
44195
44331
  id: "connectorStyle",
44196
44332
  label: "Connector style",
44197
- icon: symbolIcon("connector.style"),
44333
+ icon: symbolIcon2("connector.style"),
44198
44334
  controlIds: connectorStyleControls.map((control) => control.id)
44199
44335
  }
44200
44336
  ]
44201
44337
  }
44338
+ ],
44339
+ sections: [
44340
+ {
44341
+ id: "connectorArrows",
44342
+ label: "Arrows",
44343
+ icon: symbolIcon2("connector.style"),
44344
+ actionIds: ["connector.switchPointers", "connector.style"]
44345
+ }
44202
44346
  ]
44203
44347
  };
44204
44348
  var addConnectorToolOverlay = {
@@ -44219,12 +44363,24 @@ var addConnectorToolOverlay = {
44219
44363
  controls: connectorToolControls,
44220
44364
  groups: [
44221
44365
  {
44222
- id: "connectorToolStyle",
44366
+ id: "connectorToolQuickDefaults",
44367
+ label: "Connector quick defaults",
44368
+ icon: symbolIcon2("connector.lineStyle.straight"),
44369
+ controlIds: ["toolLineStyle"],
44370
+ description: "Primary defaults that match the compact create-surface picker."
44371
+ },
44372
+ {
44373
+ id: "connectorToolAdvancedDefaults",
44223
44374
  label: "Connector defaults",
44224
- icon: symbolIcon("connector.style"),
44225
- controlIds: connectorToolControls.map((control) => control.id)
44375
+ icon: symbolIcon2("connector.style"),
44376
+ controlIds: connectorToolControls.map((control) => control.id),
44377
+ description: "Extended defaults available in richer create flows."
44226
44378
  }
44227
44379
  ]
44380
+ },
44381
+ launch: { kind: "activate-tool" },
44382
+ surface: {
44383
+ order: 8
44228
44384
  }
44229
44385
  };
44230
44386
 
@@ -58362,63 +58518,59 @@ var COLOR_PALETTE2 = [
58362
58518
  "#7B61FF",
58363
58519
  "transparent"
58364
58520
  ];
58365
- var inlineShapeAsset = (folder, file2 = folder) => ({
58366
- kind: "asset",
58367
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
58368
- mimeType: "image/svg+xml"
58369
- });
58370
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
58521
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58522
+ var symbolIcon3 = (key) => overlaySymbolIcon(key);
58371
58523
  var BASIC_INLINE_OPTIONS = [
58372
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
58373
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
58374
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
58375
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
58376
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
58524
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58525
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
58526
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
58527
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
58528
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
58377
58529
  ];
58378
58530
  var SHAPE_CATALOG_OPTIONS = [
58379
58531
  ...BASIC_INLINE_OPTIONS,
58380
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon2("shape.reversedTriangle") },
58381
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
58382
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
58383
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
58384
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon2("shape.arrowBlockLeft") },
58385
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon2("shape.arrowBlockRight") },
58386
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
58387
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
58388
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
58389
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
58390
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
58391
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
58392
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon2("shape.reversedParallelogram") },
58393
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
58394
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon2("shape.predefinedProcess") },
58395
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
58396
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
58397
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
58398
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
58399
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
58400
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon2("shape.bpmn.task") },
58401
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon2("shape.bpmn.gateway") },
58402
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon2("shape.bpmn.gatewayParallel") },
58403
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon2("shape.bpmn.gatewayXor") },
58404
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon2("shape.bpmn.startEvent") },
58405
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.startEventNoneInterrupting") },
58406
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon2("shape.bpmn.endEvent") },
58407
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon2("shape.bpmn.intermediateEvent") },
58408
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.intermediateEventNoneInterrupting") },
58409
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon2("shape.bpmn.dataObject") },
58410
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon2("shape.bpmn.dataStore") },
58411
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon2("shape.bpmn.participant") },
58412
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon2("shape.bpmn.transaction") },
58413
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon2("shape.bpmn.eventSubprocess") },
58414
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon2("shape.bpmn.group") },
58415
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon2("shape.bpmn.annotation") }
58532
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
58533
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58534
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58535
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58536
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
58537
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
58538
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58539
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58540
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58541
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58542
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58543
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58544
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
58545
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58546
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
58547
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58548
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58549
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58550
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58551
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58552
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
58553
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
58554
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
58555
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
58556
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
58557
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
58558
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
58559
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
58560
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
58561
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
58562
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
58563
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
58564
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
58565
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
58566
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
58567
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
58416
58568
  ];
58417
58569
  var BORDER_STYLE_OPTIONS = [
58418
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon2("stroke.solid") },
58419
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon2("stroke.dot") },
58420
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon2("stroke.dash") },
58421
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon2("stroke.longDash") }
58570
+ { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58571
+ { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58572
+ { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58573
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58422
58574
  ];
58423
58575
  var shapeTypeControl = {
58424
58576
  id: "shapeType",
@@ -58427,6 +58579,12 @@ var shapeTypeControl = {
58427
58579
  editor: {
58428
58580
  kind: "enum-icon",
58429
58581
  options: BASIC_INLINE_OPTIONS,
58582
+ layout: "grid",
58583
+ quickOptions: {
58584
+ family: "basicShapes",
58585
+ maxVisible: 18,
58586
+ overflow: "show-more"
58587
+ },
58430
58588
  catalog: {
58431
58589
  kind: "catalog",
58432
58590
  label: "Shape catalog",
@@ -58441,14 +58599,14 @@ var fillControl = {
58441
58599
  id: "backgroundColor",
58442
58600
  label: "Fill",
58443
58601
  valueSource: { kind: "itemProperty", property: "backgroundColor" },
58444
- icon: {
58445
- kind: "symbol",
58446
- key: "shape.fill",
58447
- state: {
58448
- swatch: { kind: "itemProperty", property: "backgroundColor" },
58449
- note: "UI can render the current fill color as a swatch inside the icon."
58450
- }
58451
- },
58602
+ icon: styleFillIcon({
58603
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
58604
+ note: "UI can render the current fill color as a swatch inside the icon."
58605
+ }),
58606
+ icon: styleFillIcon({
58607
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
58608
+ note: "UI can render the current fill color as a swatch inside the icon."
58609
+ }),
58452
58610
  editor: {
58453
58611
  kind: "color",
58454
58612
  palette: COLOR_PALETTE2,
@@ -58499,7 +58657,7 @@ var shapeOverlay = {
58499
58657
  {
58500
58658
  id: "shape.shapeType",
58501
58659
  label: "Shape type",
58502
- icon: symbolIcon2("shape.type"),
58660
+ icon: symbolIcon3("shape.type"),
58503
58661
  target: "each",
58504
58662
  controls: [shapeTypeControl]
58505
58663
  },
@@ -58513,18 +58671,32 @@ var shapeOverlay = {
58513
58671
  {
58514
58672
  id: "shape.strokeStyle",
58515
58673
  label: "Stroke style",
58516
- icon: symbolIcon2("shape.stroke"),
58674
+ icon: styleStrokeIcon(),
58517
58675
  target: "each",
58518
58676
  controls: strokeControls,
58519
58677
  groups: [
58520
58678
  {
58521
58679
  id: "shapeStrokeStyle",
58522
58680
  label: "Stroke style",
58523
- icon: symbolIcon2("shape.stroke"),
58681
+ icon: styleStrokeIcon(),
58524
58682
  controlIds: strokeControls.map((control) => control.id)
58525
58683
  }
58526
58684
  ]
58527
58685
  }
58686
+ ],
58687
+ sections: [
58688
+ {
58689
+ id: "shapeTypeSection",
58690
+ label: "Type",
58691
+ icon: symbolIcon3("shape.type"),
58692
+ actionIds: ["shape.shapeType"]
58693
+ },
58694
+ {
58695
+ id: "shapeAppearanceSection",
58696
+ label: "Appearance",
58697
+ icon: symbolIcon3("shape.stroke"),
58698
+ actionIds: ["shape.fill", "shape.strokeStyle"]
58699
+ }
58528
58700
  ]
58529
58701
  };
58530
58702
  var addShapeToolOverlay = {
@@ -58534,8 +58706,7 @@ var addShapeToolOverlay = {
58534
58706
  createsItemType: "Shape",
58535
58707
  family: "shape",
58536
58708
  icon: {
58537
- kind: "symbol",
58538
- key: "tool.shape",
58709
+ ...overlaySymbolIcon("tool.shape"),
58539
58710
  state: {
58540
58711
  note: "UI may swap the top-level icon to the selected shape option when desired."
58541
58712
  }
@@ -58549,6 +58720,12 @@ var addShapeToolOverlay = {
58549
58720
  editor: {
58550
58721
  kind: "enum-icon",
58551
58722
  options: BASIC_INLINE_OPTIONS,
58723
+ layout: "grid",
58724
+ quickOptions: {
58725
+ family: "basicShapes",
58726
+ maxVisible: 18,
58727
+ overflow: "show-more"
58728
+ },
58552
58729
  catalog: {
58553
58730
  kind: "catalog",
58554
58731
  label: "Shape catalog",
@@ -58559,6 +58736,10 @@ var addShapeToolOverlay = {
58559
58736
  invoke: { kind: "toolProperty", property: "type" }
58560
58737
  }
58561
58738
  ]
58739
+ },
58740
+ launch: { kind: "activate-tool" },
58741
+ surface: {
58742
+ order: 7
58562
58743
  }
58563
58744
  };
58564
58745
 
@@ -62965,14 +63146,14 @@ var cardOverlay = {
62965
63146
  {
62966
63147
  id: "card.flip",
62967
63148
  label: "Flip card",
62968
- icon: { kind: "symbol", key: "card.flip" },
63149
+ icon: overlaySymbolIcon("card.flip"),
62969
63150
  target: "each",
62970
63151
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
62971
63152
  },
62972
63153
  {
62973
63154
  id: "card.rotateCcw",
62974
63155
  label: "Rotate 90 counter clockwise",
62975
- icon: { kind: "symbol", key: "card.rotateCcw" },
63156
+ icon: overlaySymbolIcon("card.rotateCcw"),
62976
63157
  target: "each",
62977
63158
  invoke: {
62978
63159
  kind: "customMethod",
@@ -62983,7 +63164,7 @@ var cardOverlay = {
62983
63164
  {
62984
63165
  id: "card.rotateCw",
62985
63166
  label: "Rotate 90 clockwise",
62986
- icon: { kind: "symbol", key: "card.rotateCw" },
63167
+ icon: overlaySymbolIcon("card.rotateCw"),
62987
63168
  target: "each",
62988
63169
  invoke: {
62989
63170
  kind: "customMethod",
@@ -63237,28 +63418,28 @@ var deckOverlay = {
63237
63418
  {
63238
63419
  id: "deck.getTopCard",
63239
63420
  label: "Draw top card",
63240
- icon: { kind: "symbol", key: "deck.drawTop" },
63421
+ icon: overlaySymbolIcon("deck.drawTop"),
63241
63422
  target: "single",
63242
63423
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63243
63424
  },
63244
63425
  {
63245
63426
  id: "deck.getBottomCard",
63246
63427
  label: "Draw bottom card",
63247
- icon: { kind: "symbol", key: "deck.drawBottom" },
63428
+ icon: overlaySymbolIcon("deck.drawBottom"),
63248
63429
  target: "single",
63249
63430
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63250
63431
  },
63251
63432
  {
63252
63433
  id: "deck.getRandomCard",
63253
63434
  label: "Draw random card",
63254
- icon: { kind: "symbol", key: "deck.drawRandom" },
63435
+ icon: overlaySymbolIcon("deck.drawRandom"),
63255
63436
  target: "single",
63256
63437
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63257
63438
  },
63258
63439
  {
63259
63440
  id: "deck.getCards",
63260
63441
  label: "Draw cards",
63261
- icon: { kind: "symbol", key: "deck.drawMany" },
63442
+ icon: overlaySymbolIcon("deck.drawMany"),
63262
63443
  target: "single",
63263
63444
  controls: [
63264
63445
  {
@@ -63280,14 +63461,14 @@ var deckOverlay = {
63280
63461
  {
63281
63462
  id: "deck.shuffle",
63282
63463
  label: "Shuffle",
63283
- icon: { kind: "symbol", key: "deck.shuffle" },
63464
+ icon: overlaySymbolIcon("deck.shuffle"),
63284
63465
  target: "single",
63285
63466
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63286
63467
  },
63287
63468
  {
63288
63469
  id: "deck.flip",
63289
63470
  label: "Flip deck",
63290
- icon: { kind: "symbol", key: "deck.flip" },
63471
+ icon: overlaySymbolIcon("deck.flip"),
63291
63472
  target: "single",
63292
63473
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63293
63474
  }
@@ -63296,7 +63477,7 @@ var deckOverlay = {
63296
63477
  var createDeckSelectionAction = {
63297
63478
  id: "deck.createFromSelection",
63298
63479
  label: "Create deck",
63299
- icon: { kind: "symbol", key: "deck.createFromSelection" },
63480
+ icon: overlaySymbolIcon("deck.createFromSelection"),
63300
63481
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63301
63482
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63302
63483
  isAvailable: (items) => {
@@ -63865,14 +64046,14 @@ var diceOverlay = {
63865
64046
  {
63866
64047
  id: "dice.throw",
63867
64048
  label: "Throw dice",
63868
- icon: { kind: "symbol", key: "dice.throw" },
64049
+ icon: overlaySymbolIcon("dice.throw"),
63869
64050
  target: "each",
63870
64051
  invoke: { kind: "customMethod", methodName: "throwDice" }
63871
64052
  },
63872
64053
  {
63873
64054
  id: "dice.range",
63874
64055
  label: "Range",
63875
- icon: { kind: "symbol", key: "dice.range" },
64056
+ icon: overlaySymbolIcon("dice.range"),
63876
64057
  target: "each",
63877
64058
  controls: [
63878
64059
  {
@@ -63894,11 +64075,9 @@ var diceOverlay = {
63894
64075
  {
63895
64076
  id: "dice.fill",
63896
64077
  label: "Fill",
63897
- icon: {
63898
- kind: "symbol",
63899
- key: "shape.fill",
63900
- state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
63901
- },
64078
+ icon: styleFillIcon({
64079
+ swatch: { kind: "itemProperty", property: "backgroundColor" }
64080
+ }),
63902
64081
  target: "each",
63903
64082
  controls: [
63904
64083
  {
@@ -63910,6 +64089,14 @@ var diceOverlay = {
63910
64089
  }
63911
64090
  ]
63912
64091
  }
64092
+ ],
64093
+ sections: [
64094
+ {
64095
+ id: "diceActions",
64096
+ label: "Dice",
64097
+ icon: overlaySymbolIcon("dice.throw"),
64098
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
64099
+ }
63913
64100
  ]
63914
64101
  };
63915
64102
  var addDiceToolOverlay = {
@@ -63918,7 +64105,19 @@ var addDiceToolOverlay = {
63918
64105
  kind: "create",
63919
64106
  createsItemType: "Dice",
63920
64107
  family: "game",
63921
- icon: { kind: "symbol", key: "tool.dice" }
64108
+ icon: overlaySymbolIcon("tool.dice"),
64109
+ launch: { kind: "activate-tool" },
64110
+ surface: {
64111
+ order: 1,
64112
+ group: {
64113
+ id: "gameItems",
64114
+ label: "Game items",
64115
+ icon: overlaySymbolIcon("tool.dice"),
64116
+ order: 1,
64117
+ behavior: "open-panel"
64118
+ },
64119
+ relatedToolNames: ["AddScreen", "AddPouch"]
64120
+ }
63922
64121
  };
63923
64122
 
63924
64123
  // src/Items/Dice/Dice.ts
@@ -64266,8 +64465,7 @@ var screenOverlay = {
64266
64465
  id: "screen.background",
64267
64466
  label: "Background",
64268
64467
  icon: {
64269
- kind: "symbol",
64270
- key: "screen.background",
64468
+ ...overlaySymbolIcon("screen.background"),
64271
64469
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64272
64470
  },
64273
64471
  target: "each",
@@ -64284,6 +64482,97 @@ var screenOverlay = {
64284
64482
  invoke: { kind: "setProperty", property: "backgroundColor" }
64285
64483
  }
64286
64484
  ]
64485
+ },
64486
+ {
64487
+ id: "screen.stroke",
64488
+ label: "Stroke",
64489
+ icon: {
64490
+ ...overlaySymbolIcon("shape.stroke"),
64491
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64492
+ },
64493
+ target: "each",
64494
+ controls: [
64495
+ {
64496
+ id: "borderColor",
64497
+ label: "Border color",
64498
+ valueSource: { kind: "itemProperty", property: "borderColor" },
64499
+ editor: {
64500
+ kind: "color",
64501
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
64502
+ allowTransparent: true,
64503
+ presentation: "square"
64504
+ },
64505
+ invoke: { kind: "setProperty", property: "borderColor" }
64506
+ },
64507
+ {
64508
+ id: "borderWidth",
64509
+ label: "Border width",
64510
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
64511
+ editor: {
64512
+ kind: "number-stepper",
64513
+ min: 0,
64514
+ max: 8,
64515
+ step: 1,
64516
+ presets: [0, 1, 2, 4],
64517
+ unit: "px"
64518
+ },
64519
+ invoke: { kind: "setProperty", property: "borderWidth" }
64520
+ }
64521
+ ],
64522
+ groups: [
64523
+ {
64524
+ id: "screenStrokeStyle",
64525
+ label: "Stroke",
64526
+ icon: overlaySymbolIcon("shape.stroke"),
64527
+ controlIds: ["borderColor", "borderWidth"]
64528
+ }
64529
+ ]
64530
+ },
64531
+ {
64532
+ id: "screen.backgroundImage",
64533
+ label: "Background image",
64534
+ icon: overlaySymbolIcon("screen.backgroundImage"),
64535
+ target: "each",
64536
+ when: {
64537
+ kind: "falsy",
64538
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64539
+ },
64540
+ controls: [
64541
+ {
64542
+ id: "backgroundUrl",
64543
+ label: "Background image",
64544
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
64545
+ editor: {
64546
+ kind: "asset-upload",
64547
+ mode: "single",
64548
+ accept: ["image/*"]
64549
+ },
64550
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
64551
+ }
64552
+ ]
64553
+ },
64554
+ {
64555
+ id: "screen.removeBackgroundImage",
64556
+ label: "Remove background image",
64557
+ icon: overlaySymbolIcon("screen.backgroundImage.remove"),
64558
+ target: "each",
64559
+ when: {
64560
+ kind: "truthy",
64561
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64562
+ },
64563
+ invoke: {
64564
+ kind: "customMethod",
64565
+ methodName: "setBackgroundUrl",
64566
+ args: [{ kind: "static", value: "" }]
64567
+ }
64568
+ }
64569
+ ],
64570
+ sections: [
64571
+ {
64572
+ id: "screenAppearance",
64573
+ label: "Appearance",
64574
+ icon: overlaySymbolIcon("screen.background"),
64575
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64287
64576
  }
64288
64577
  ]
64289
64578
  };
@@ -64293,7 +64582,19 @@ var addScreenToolOverlay = {
64293
64582
  kind: "create",
64294
64583
  createsItemType: "Screen",
64295
64584
  family: "container",
64296
- icon: { kind: "symbol", key: "tool.screen" }
64585
+ icon: overlaySymbolIcon("tool.screen"),
64586
+ launch: { kind: "activate-tool" },
64587
+ surface: {
64588
+ order: 2,
64589
+ group: {
64590
+ id: "gameItems",
64591
+ label: "Game items",
64592
+ icon: overlaySymbolIcon("tool.dice"),
64593
+ order: 1,
64594
+ behavior: "open-panel"
64595
+ },
64596
+ relatedToolNames: ["AddDice", "AddPouch"]
64597
+ }
64297
64598
  };
64298
64599
  var addPouchToolOverlay = {
64299
64600
  toolName: "AddPouch",
@@ -64301,7 +64602,19 @@ var addPouchToolOverlay = {
64301
64602
  kind: "create",
64302
64603
  createsItemType: "Screen",
64303
64604
  family: "container",
64304
- icon: { kind: "symbol", key: "tool.pouch" }
64605
+ icon: overlaySymbolIcon("tool.pouch"),
64606
+ launch: { kind: "activate-tool" },
64607
+ surface: {
64608
+ order: 3,
64609
+ group: {
64610
+ id: "gameItems",
64611
+ label: "Game items",
64612
+ icon: overlaySymbolIcon("tool.dice"),
64613
+ order: 1,
64614
+ behavior: "open-panel"
64615
+ },
64616
+ relatedToolNames: ["AddDice", "AddScreen"]
64617
+ }
64305
64618
  };
64306
64619
 
64307
64620
  // src/Items/Screen/Screen.ts
@@ -72261,8 +72574,7 @@ var addDrawingToolOverlay = {
72261
72574
  family: "drawing",
72262
72575
  createsItemType: "Drawing",
72263
72576
  icon: {
72264
- kind: "symbol",
72265
- key: "tool.pen",
72577
+ ...overlaySymbolIcon("tool.pen"),
72266
72578
  state: {
72267
72579
  swatch: { kind: "toolProperty", property: "strokeColor" },
72268
72580
  note: "UI can show the pending pen color in the icon."
@@ -72274,10 +72586,22 @@ var addDrawingToolOverlay = {
72274
72586
  {
72275
72587
  id: "drawingDefaults",
72276
72588
  label: "Pen defaults",
72277
- icon: { kind: "symbol", key: "tool.pen" },
72589
+ icon: overlaySymbolIcon("tool.pen"),
72278
72590
  controlIds: strokeControls2.map((control) => control.id)
72279
72591
  }
72280
72592
  ]
72593
+ },
72594
+ launch: { kind: "activate-tool" },
72595
+ surface: {
72596
+ order: 1,
72597
+ group: {
72598
+ id: "drawingTools",
72599
+ label: "Drawing",
72600
+ icon: overlaySymbolIcon("tool.pen"),
72601
+ order: 5,
72602
+ behavior: "activate-last-used"
72603
+ },
72604
+ relatedToolNames: ["AddHighlighter", "Eraser"]
72281
72605
  }
72282
72606
  };
72283
72607
  var addHighlighterToolOverlay = {
@@ -72287,8 +72611,7 @@ var addHighlighterToolOverlay = {
72287
72611
  family: "drawing",
72288
72612
  createsItemType: "Drawing",
72289
72613
  icon: {
72290
- kind: "symbol",
72291
- key: "tool.highlighter",
72614
+ ...overlaySymbolIcon("tool.highlighter"),
72292
72615
  state: {
72293
72616
  swatch: { kind: "toolProperty", property: "strokeColor" },
72294
72617
  note: "UI can show the pending highlighter color in the icon."
@@ -72300,10 +72623,22 @@ var addHighlighterToolOverlay = {
72300
72623
  {
72301
72624
  id: "highlighterDefaults",
72302
72625
  label: "Highlighter defaults",
72303
- icon: { kind: "symbol", key: "tool.highlighter" },
72626
+ icon: overlaySymbolIcon("tool.highlighter"),
72304
72627
  controlIds: strokeControls2.map((control) => control.id)
72305
72628
  }
72306
72629
  ]
72630
+ },
72631
+ launch: { kind: "activate-tool" },
72632
+ surface: {
72633
+ order: 2,
72634
+ group: {
72635
+ id: "drawingTools",
72636
+ label: "Drawing",
72637
+ icon: overlaySymbolIcon("tool.pen"),
72638
+ order: 5,
72639
+ behavior: "activate-last-used"
72640
+ },
72641
+ relatedToolNames: ["AddDrawing", "Eraser"]
72307
72642
  }
72308
72643
  };
72309
72644
  var eraserToolOverlay = {
@@ -72311,7 +72646,7 @@ var eraserToolOverlay = {
72311
72646
  label: "Eraser",
72312
72647
  kind: "mode",
72313
72648
  family: "drawing",
72314
- icon: { kind: "symbol", key: "tool.eraser" },
72649
+ icon: overlaySymbolIcon("tool.eraser"),
72315
72650
  defaults: {
72316
72651
  controls: [
72317
72652
  {
@@ -72328,6 +72663,18 @@ var eraserToolOverlay = {
72328
72663
  invoke: { kind: "toolProperty", property: "strokeWidth" }
72329
72664
  }
72330
72665
  ]
72666
+ },
72667
+ launch: { kind: "activate-tool" },
72668
+ surface: {
72669
+ order: 3,
72670
+ group: {
72671
+ id: "drawingTools",
72672
+ label: "Drawing",
72673
+ icon: overlaySymbolIcon("tool.pen"),
72674
+ order: 5,
72675
+ behavior: "activate-last-used"
72676
+ },
72677
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
72331
72678
  }
72332
72679
  };
72333
72680
 
@@ -72528,7 +72875,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72528
72875
  id: frameType,
72529
72876
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72530
72877
  value: frameType,
72531
- icon: { kind: "symbol", key: `frame.${frameType}` }
72878
+ icon: overlaySymbolIcon(`frame.${frameType}`)
72532
72879
  }));
72533
72880
  var addFrameToolOverlay = {
72534
72881
  toolName: "AddFrame",
@@ -72536,7 +72883,7 @@ var addFrameToolOverlay = {
72536
72883
  kind: "create",
72537
72884
  createsItemType: "Frame",
72538
72885
  family: "frame",
72539
- icon: { kind: "symbol", key: "tool.frame" },
72886
+ icon: overlaySymbolIcon("tool.frame"),
72540
72887
  defaults: {
72541
72888
  controls: [
72542
72889
  {
@@ -72550,6 +72897,10 @@ var addFrameToolOverlay = {
72550
72897
  invoke: { kind: "toolProperty", property: "shape" }
72551
72898
  }
72552
72899
  ]
72900
+ },
72901
+ launch: { kind: "activate-tool" },
72902
+ surface: {
72903
+ order: 10
72553
72904
  }
72554
72905
  };
72555
72906
 
@@ -72914,8 +73265,7 @@ var addStickerToolOverlay = {
72914
73265
  createsItemType: "Sticker",
72915
73266
  family: "sticker",
72916
73267
  icon: {
72917
- kind: "symbol",
72918
- key: "tool.sticker",
73268
+ ...overlaySymbolIcon("tool.sticker"),
72919
73269
  state: {
72920
73270
  swatch: { kind: "toolProperty", property: "backgroundColor" }
72921
73271
  }
@@ -72926,10 +73276,14 @@ var addStickerToolOverlay = {
72926
73276
  id: "stickerBackgroundColor",
72927
73277
  label: "Color",
72928
73278
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
72929
- editor: { kind: "color", palette: STICKER_COLORS },
73279
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
72930
73280
  invoke: { kind: "toolProperty", property: "backgroundColor" }
72931
73281
  }
72932
73282
  ]
73283
+ },
73284
+ launch: { kind: "activate-tool" },
73285
+ surface: {
73286
+ order: 9
72933
73287
  }
72934
73288
  };
72935
73289
 
@@ -75330,6 +75684,11 @@ export {
75330
75684
  toFiniteNumber,
75331
75685
  tempStorage,
75332
75686
  tagByType,
75687
+ symbolIcon,
75688
+ styleStrokeIcon,
75689
+ styleFontSizeIcon,
75690
+ styleFillIcon,
75691
+ styleColorIcon,
75333
75692
  stickerColors,
75334
75693
  srgbChannelToLinear,
75335
75694
  sha256,
@@ -75359,12 +75718,16 @@ export {
75359
75718
  positionAbsolutely,
75360
75719
  parsersHTML,
75361
75720
  parseCssRgb,
75721
+ overlaySymbolIcon,
75722
+ overlayAssetIcon,
75362
75723
  omitDefaultProperties,
75363
75724
  messageRouter,
75364
75725
  meetsWCAG_AAA,
75365
75726
  meetsWCAG_AA,
75727
+ matchesOverlayCondition,
75366
75728
  listToolOverlays,
75367
75729
  listSelectionActions,
75730
+ listCreateSurfaceEntries,
75368
75731
  itemOverlays,
75369
75732
  itemFactories2 as itemFactories,
75370
75733
  itemOverlays as itemActions,
@@ -75456,6 +75819,8 @@ export {
75456
75819
  PRESENCE_CURSOR_THROTTLE,
75457
75820
  PRESENCE_CLEANUP_USER_TIMER,
75458
75821
  PRESENCE_CLEANUP_IDLE_TIMER,
75822
+ OVERLAY_SYMBOL_KEYS,
75823
+ OVERLAY_ICON_SPRITE_PATH,
75459
75824
  MiroItemConverter,
75460
75825
  Mbr,
75461
75826
  Matrix,