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.
@@ -673,12 +673,16 @@ __export(exports_browser, {
673
673
  positionAbsolutely: () => positionAbsolutely,
674
674
  parsersHTML: () => parsersHTML,
675
675
  parseCssRgb: () => parseCssRgb,
676
+ overlaySymbolIcon: () => overlaySymbolIcon,
677
+ overlayAssetIcon: () => overlayAssetIcon,
676
678
  omitDefaultProperties: () => omitDefaultProperties,
677
679
  messageRouter: () => messageRouter,
678
680
  meetsWCAG_AAA: () => meetsWCAG_AAA,
679
681
  meetsWCAG_AA: () => meetsWCAG_AA,
682
+ matchesOverlayCondition: () => matchesOverlayCondition,
680
683
  listToolOverlays: () => listToolOverlays,
681
684
  listSelectionActions: () => listSelectionActions,
685
+ listCreateSurfaceEntries: () => listCreateSurfaceEntries,
682
686
  itemOverlays: () => itemOverlays,
683
687
  itemFactories: () => itemFactories2,
684
688
  itemActions: () => itemOverlays,
@@ -771,6 +775,7 @@ __export(exports_browser, {
771
775
  PRESENCE_CLEANUP_USER_TIMER: () => PRESENCE_CLEANUP_USER_TIMER,
772
776
  PRESENCE_CLEANUP_IDLE_TIMER: () => PRESENCE_CLEANUP_IDLE_TIMER,
773
777
  OVERLAY_SYMBOL_KEYS: () => OVERLAY_SYMBOL_KEYS,
778
+ OVERLAY_ICON_SPRITE_PATH: () => OVERLAY_ICON_SPRITE_PATH,
774
779
  MiroItemConverter: () => MiroItemConverter,
775
780
  Mbr: () => Mbr,
776
781
  Matrix: () => Matrix,
@@ -11717,6 +11722,28 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11717
11722
  return op;
11718
11723
  }
11719
11724
  }
11725
+ // src/Overlay/IconPack.ts
11726
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11727
+ function overlaySymbolIcon(key) {
11728
+ return {
11729
+ kind: "symbol",
11730
+ key,
11731
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
11732
+ };
11733
+ }
11734
+ function overlayAssetIcon(path2, state) {
11735
+ return state ? {
11736
+ kind: "asset",
11737
+ path: path2,
11738
+ mimeType: "image/svg+xml",
11739
+ state
11740
+ } : {
11741
+ kind: "asset",
11742
+ path: path2,
11743
+ mimeType: "image/svg+xml"
11744
+ };
11745
+ }
11746
+
11720
11747
  // src/Overlay/OverlayIcons.ts
11721
11748
  var OVERLAY_SYMBOL_KEYS = {
11722
11749
  styleFill: "style.fill",
@@ -11725,19 +11752,19 @@ var OVERLAY_SYMBOL_KEYS = {
11725
11752
  styleFontSize: "style.fontSize"
11726
11753
  };
11727
11754
  function symbolIcon(key, state) {
11728
- return state ? { kind: "symbol", key, state } : { kind: "symbol", key };
11755
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11729
11756
  }
11730
11757
  function styleFillIcon(state) {
11731
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11758
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
11732
11759
  }
11733
11760
  function styleStrokeIcon(state) {
11734
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11761
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
11735
11762
  }
11736
11763
  function styleColorIcon(state) {
11737
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11764
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
11738
11765
  }
11739
11766
  function styleFontSizeIcon(state) {
11740
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11767
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
11741
11768
  }
11742
11769
  // src/Overlay/overlayRegistry.ts
11743
11770
  var itemOverlays = {};
@@ -11766,6 +11793,45 @@ function getToolOverlay(toolName) {
11766
11793
  function listToolOverlays() {
11767
11794
  return Object.values(toolOverlays);
11768
11795
  }
11796
+ function listCreateSurfaceEntries() {
11797
+ const groupedEntries = new Map;
11798
+ const ungroupedEntries = [];
11799
+ for (const tool of Object.values(toolOverlays)) {
11800
+ const group = tool.surface?.group;
11801
+ if (!group) {
11802
+ ungroupedEntries.push({
11803
+ kind: "tool",
11804
+ tool,
11805
+ order: tool.surface?.order
11806
+ });
11807
+ continue;
11808
+ }
11809
+ const existing = groupedEntries.get(group.id);
11810
+ if (existing) {
11811
+ existing.tools.push(tool);
11812
+ if (existing.order === undefined && group.order !== undefined) {
11813
+ existing.order = group.order;
11814
+ }
11815
+ continue;
11816
+ }
11817
+ groupedEntries.set(group.id, {
11818
+ kind: "group",
11819
+ id: group.id,
11820
+ label: group.label,
11821
+ description: group.description,
11822
+ icon: group.icon,
11823
+ order: group.order,
11824
+ behavior: group.behavior,
11825
+ tools: [tool]
11826
+ });
11827
+ }
11828
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
11829
+ ...group,
11830
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
11831
+ })).sort(compareEntriesByOrder);
11832
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
11833
+ return [...sortedGroups, ...sortedUngroupedEntries];
11834
+ }
11769
11835
  function listSelectionActions() {
11770
11836
  return Object.values(selectionActions);
11771
11837
  }
@@ -11775,6 +11841,33 @@ function getSelectionOverlayActions(items) {
11775
11841
  function resolveDynamicOptions(providerId, context) {
11776
11842
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
11777
11843
  }
11844
+ function matchesOverlayCondition(condition, context) {
11845
+ if (!condition) {
11846
+ return true;
11847
+ }
11848
+ switch (condition.kind) {
11849
+ case "equals":
11850
+ return readOverlayValueSource(context, condition.source) === condition.value;
11851
+ case "truthy":
11852
+ return !!readOverlayValueSource(context, condition.source);
11853
+ case "falsy":
11854
+ return !readOverlayValueSource(context, condition.source);
11855
+ case "itemTypeIn":
11856
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
11857
+ case "selectionSize": {
11858
+ const size = context.items?.length ?? (context.item ? 1 : 0);
11859
+ const meetsMin = condition.min === undefined || size >= condition.min;
11860
+ const meetsMax = condition.max === undefined || size <= condition.max;
11861
+ return meetsMin && meetsMax;
11862
+ }
11863
+ case "allOf":
11864
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
11865
+ case "anyOf":
11866
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
11867
+ case "not":
11868
+ return !matchesOverlayCondition(condition.condition, context);
11869
+ }
11870
+ }
11778
11871
  function intersectOverlayActions(items) {
11779
11872
  if (items.length === 0) {
11780
11873
  return [];
@@ -11793,6 +11886,24 @@ function intersectOverlayActions(items) {
11793
11886
  }
11794
11887
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
11795
11888
  }
11889
+ function compareToolsBySurfaceOrder(a, b) {
11890
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
11891
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
11892
+ return aOrder - bOrder || a.label.localeCompare(b.label);
11893
+ }
11894
+ function compareEntriesByOrder(a, b) {
11895
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
11896
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
11897
+ const aLabel = a.label ?? a.tool?.label ?? "";
11898
+ const bLabel = b.label ?? b.tool?.label ?? "";
11899
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
11900
+ }
11901
+ function readOverlayValueSource(context, source) {
11902
+ if (source.kind === "itemProperty") {
11903
+ return context.item ? context.item[source.property] : undefined;
11904
+ }
11905
+ return context.tool ? context.tool[source.property] : undefined;
11906
+ }
11796
11907
  // src/Items/BaseItem/BaseItem.ts
11797
11908
  class BaseItem {
11798
11909
  static createCommand;
@@ -37786,6 +37897,14 @@ var richTextOverlay = {
37786
37897
  }
37787
37898
  ]
37788
37899
  }
37900
+ ],
37901
+ sections: [
37902
+ {
37903
+ id: "textTypography",
37904
+ label: "Typography",
37905
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
37906
+ actionIds: ["text.fontSize"]
37907
+ }
37789
37908
  ]
37790
37909
  };
37791
37910
  var addTextToolOverlay = {
@@ -37794,8 +37913,12 @@ var addTextToolOverlay = {
37794
37913
  kind: "create",
37795
37914
  createsItemType: "RichText",
37796
37915
  family: "text",
37797
- icon: { kind: "symbol", key: "tool.text" },
37798
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
37916
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
37917
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37918
+ launch: { kind: "activate-tool" },
37919
+ surface: {
37920
+ order: 6
37921
+ }
37799
37922
  };
37800
37923
 
37801
37924
  // src/Items/RichText/RichText.ts
@@ -44265,12 +44388,28 @@ var COLOR_PALETTE = [
44265
44388
  "#118AB2",
44266
44389
  "#7B61FF"
44267
44390
  ];
44268
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
44391
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
44392
+ var lineStyleAssetIcons = {
44393
+ straight: connectorAssetIcon("LineStraight"),
44394
+ curved: connectorAssetIcon("LineCurved"),
44395
+ orthogonal: connectorAssetIcon("LineOrthogonal")
44396
+ };
44397
+ var pointerAssetIcons = {
44398
+ None: connectorAssetIcon("PointerNone"),
44399
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
44400
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
44401
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
44402
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
44403
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
44404
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
44405
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
44406
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
44407
+ };
44269
44408
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44270
44409
  id: style,
44271
44410
  label: style[0].toUpperCase() + style.slice(1),
44272
44411
  value: style,
44273
- icon: symbolIcon2(`connector.lineStyle.${style}`)
44412
+ icon: lineStyleAssetIcons[style]
44274
44413
  }));
44275
44414
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44276
44415
  id: `${width}`,
@@ -44281,13 +44420,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44281
44420
  id: pointer,
44282
44421
  label: pointer,
44283
44422
  value: pointer,
44284
- icon: symbolIcon2(`connector.pointer.${pointer}`)
44423
+ icon: pointerAssetIcons[pointer]
44285
44424
  }));
44286
44425
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44287
44426
  id: style,
44288
44427
  label: style,
44289
44428
  value: style,
44290
- icon: symbolIcon2(`stroke.${style}`)
44429
+ 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")
44291
44430
  }));
44292
44431
  var connectorStyleControls = [
44293
44432
  {
@@ -44342,7 +44481,7 @@ var connectorStyleControls = [
44342
44481
  {
44343
44482
  id: "smartJump",
44344
44483
  label: "Smart jump",
44345
- icon: symbolIcon2("connector.smartJump"),
44484
+ icon: connectorAssetIcon("SmartJump"),
44346
44485
  valueSource: { kind: "itemProperty", property: "smartJump" },
44347
44486
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44348
44487
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44401,7 +44540,7 @@ var connectorToolControls = [
44401
44540
  {
44402
44541
  id: "toolSmartJump",
44403
44542
  label: "Smart jump",
44404
- icon: symbolIcon2("connector.smartJump"),
44543
+ icon: connectorAssetIcon("SmartJump"),
44405
44544
  valueSource: { kind: "toolProperty", property: "smartJump" },
44406
44545
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44407
44546
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44413,25 +44552,33 @@ var connectorOverlay = {
44413
44552
  {
44414
44553
  id: "connector.switchPointers",
44415
44554
  label: "Switch arrows",
44416
- icon: symbolIcon2("connector.switchPointers"),
44555
+ icon: connectorAssetIcon("SwitchPointers"),
44417
44556
  target: "selection",
44418
44557
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44419
44558
  },
44420
44559
  {
44421
44560
  id: "connector.style",
44422
44561
  label: "Connector style",
44423
- icon: symbolIcon2("connector.style"),
44562
+ icon: connectorAssetIcon("Style"),
44424
44563
  target: "each",
44425
44564
  controls: connectorStyleControls,
44426
44565
  groups: [
44427
44566
  {
44428
44567
  id: "connectorStyle",
44429
44568
  label: "Connector style",
44430
- icon: symbolIcon2("connector.style"),
44569
+ icon: connectorAssetIcon("Style"),
44431
44570
  controlIds: connectorStyleControls.map((control) => control.id)
44432
44571
  }
44433
44572
  ]
44434
44573
  }
44574
+ ],
44575
+ sections: [
44576
+ {
44577
+ id: "connectorArrows",
44578
+ label: "Arrows",
44579
+ icon: connectorAssetIcon("Style"),
44580
+ actionIds: ["connector.switchPointers", "connector.style"]
44581
+ }
44435
44582
  ]
44436
44583
  };
44437
44584
  var addConnectorToolOverlay = {
@@ -44441,8 +44588,7 @@ var addConnectorToolOverlay = {
44441
44588
  createsItemType: "Connector",
44442
44589
  family: "connector",
44443
44590
  icon: {
44444
- kind: "symbol",
44445
- key: "tool.connector",
44591
+ ...connectorAssetIcon("Tool"),
44446
44592
  state: {
44447
44593
  swatch: { kind: "toolProperty", property: "lineColor" },
44448
44594
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -44452,12 +44598,24 @@ var addConnectorToolOverlay = {
44452
44598
  controls: connectorToolControls,
44453
44599
  groups: [
44454
44600
  {
44455
- id: "connectorToolStyle",
44601
+ id: "connectorToolQuickDefaults",
44602
+ label: "Connector quick defaults",
44603
+ icon: connectorAssetIcon("LineStraight"),
44604
+ controlIds: ["toolLineStyle"],
44605
+ description: "Primary defaults that match the compact create-surface picker."
44606
+ },
44607
+ {
44608
+ id: "connectorToolAdvancedDefaults",
44456
44609
  label: "Connector defaults",
44457
- icon: symbolIcon2("connector.style"),
44458
- controlIds: connectorToolControls.map((control) => control.id)
44610
+ icon: connectorAssetIcon("Style"),
44611
+ controlIds: connectorToolControls.map((control) => control.id),
44612
+ description: "Extended defaults available in richer create flows."
44459
44613
  }
44460
44614
  ]
44615
+ },
44616
+ launch: { kind: "activate-tool" },
44617
+ surface: {
44618
+ order: 8
44461
44619
  }
44462
44620
  };
44463
44621
 
@@ -58595,63 +58753,60 @@ var COLOR_PALETTE2 = [
58595
58753
  "#7B61FF",
58596
58754
  "transparent"
58597
58755
  ];
58598
- var inlineShapeAsset = (folder, file2 = folder) => ({
58599
- kind: "asset",
58600
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
58601
- mimeType: "image/svg+xml"
58602
- });
58603
- var symbolIcon3 = (key) => ({ kind: "symbol", key });
58756
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58757
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
58758
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
58604
58759
  var BASIC_INLINE_OPTIONS = [
58605
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
58606
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
58607
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
58608
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
58609
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
58760
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58761
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
58762
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
58763
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
58764
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
58610
58765
  ];
58611
58766
  var SHAPE_CATALOG_OPTIONS = [
58612
58767
  ...BASIC_INLINE_OPTIONS,
58613
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle") },
58614
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
58615
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
58616
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
58617
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft") },
58618
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight") },
58619
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
58620
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
58621
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
58622
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
58623
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
58624
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
58625
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram") },
58626
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
58627
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess") },
58628
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
58629
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
58630
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
58631
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
58632
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
58633
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task") },
58634
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway") },
58635
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel") },
58636
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor") },
58637
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent") },
58638
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting") },
58639
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent") },
58640
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent") },
58641
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting") },
58642
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject") },
58643
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore") },
58644
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant") },
58645
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction") },
58646
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess") },
58647
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group") },
58648
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation") }
58768
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
58769
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58770
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58771
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58772
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
58773
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
58774
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58775
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58776
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58777
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58778
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58779
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58780
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
58781
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58782
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
58783
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58784
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58785
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58786
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58787
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58788
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
58789
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
58790
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
58791
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
58792
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
58793
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
58794
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
58795
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
58796
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
58797
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
58798
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
58799
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
58800
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
58801
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
58802
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
58803
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
58649
58804
  ];
58650
58805
  var BORDER_STYLE_OPTIONS = [
58651
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58652
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58653
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58654
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58806
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
58807
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
58808
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
58809
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
58655
58810
  ];
58656
58811
  var shapeTypeControl = {
58657
58812
  id: "shapeType",
@@ -58660,6 +58815,12 @@ var shapeTypeControl = {
58660
58815
  editor: {
58661
58816
  kind: "enum-icon",
58662
58817
  options: BASIC_INLINE_OPTIONS,
58818
+ layout: "grid",
58819
+ quickOptions: {
58820
+ family: "basicShapes",
58821
+ maxVisible: 18,
58822
+ overflow: "show-more"
58823
+ },
58663
58824
  catalog: {
58664
58825
  kind: "catalog",
58665
58826
  label: "Shape catalog",
@@ -58728,7 +58889,7 @@ var shapeOverlay = {
58728
58889
  {
58729
58890
  id: "shape.shapeType",
58730
58891
  label: "Shape type",
58731
- icon: symbolIcon3("shape.type"),
58892
+ icon: localShapeIcon("Type"),
58732
58893
  target: "each",
58733
58894
  controls: [shapeTypeControl]
58734
58895
  },
@@ -58754,6 +58915,20 @@ var shapeOverlay = {
58754
58915
  }
58755
58916
  ]
58756
58917
  }
58918
+ ],
58919
+ sections: [
58920
+ {
58921
+ id: "shapeTypeSection",
58922
+ label: "Type",
58923
+ icon: localShapeIcon("Type"),
58924
+ actionIds: ["shape.shapeType"]
58925
+ },
58926
+ {
58927
+ id: "shapeAppearanceSection",
58928
+ label: "Appearance",
58929
+ icon: localShapeIcon("Stroke"),
58930
+ actionIds: ["shape.fill", "shape.strokeStyle"]
58931
+ }
58757
58932
  ]
58758
58933
  };
58759
58934
  var addShapeToolOverlay = {
@@ -58763,8 +58938,7 @@ var addShapeToolOverlay = {
58763
58938
  createsItemType: "Shape",
58764
58939
  family: "shape",
58765
58940
  icon: {
58766
- kind: "symbol",
58767
- key: "tool.shape",
58941
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
58768
58942
  state: {
58769
58943
  note: "UI may swap the top-level icon to the selected shape option when desired."
58770
58944
  }
@@ -58778,6 +58952,12 @@ var addShapeToolOverlay = {
58778
58952
  editor: {
58779
58953
  kind: "enum-icon",
58780
58954
  options: BASIC_INLINE_OPTIONS,
58955
+ layout: "grid",
58956
+ quickOptions: {
58957
+ family: "basicShapes",
58958
+ maxVisible: 18,
58959
+ overflow: "show-more"
58960
+ },
58781
58961
  catalog: {
58782
58962
  kind: "catalog",
58783
58963
  label: "Shape catalog",
@@ -58788,6 +58968,10 @@ var addShapeToolOverlay = {
58788
58968
  invoke: { kind: "toolProperty", property: "type" }
58789
58969
  }
58790
58970
  ]
58971
+ },
58972
+ launch: { kind: "activate-tool" },
58973
+ surface: {
58974
+ order: 7
58791
58975
  }
58792
58976
  };
58793
58977
 
@@ -63194,14 +63378,14 @@ var cardOverlay = {
63194
63378
  {
63195
63379
  id: "card.flip",
63196
63380
  label: "Flip card",
63197
- icon: { kind: "symbol", key: "card.flip" },
63381
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
63198
63382
  target: "each",
63199
63383
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
63200
63384
  },
63201
63385
  {
63202
63386
  id: "card.rotateCcw",
63203
63387
  label: "Rotate 90 counter clockwise",
63204
- icon: { kind: "symbol", key: "card.rotateCcw" },
63388
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
63205
63389
  target: "each",
63206
63390
  invoke: {
63207
63391
  kind: "customMethod",
@@ -63212,7 +63396,7 @@ var cardOverlay = {
63212
63396
  {
63213
63397
  id: "card.rotateCw",
63214
63398
  label: "Rotate 90 clockwise",
63215
- icon: { kind: "symbol", key: "card.rotateCw" },
63399
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
63216
63400
  target: "each",
63217
63401
  invoke: {
63218
63402
  kind: "customMethod",
@@ -63466,28 +63650,28 @@ var deckOverlay = {
63466
63650
  {
63467
63651
  id: "deck.getTopCard",
63468
63652
  label: "Draw top card",
63469
- icon: { kind: "symbol", key: "deck.drawTop" },
63653
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
63470
63654
  target: "single",
63471
63655
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63472
63656
  },
63473
63657
  {
63474
63658
  id: "deck.getBottomCard",
63475
63659
  label: "Draw bottom card",
63476
- icon: { kind: "symbol", key: "deck.drawBottom" },
63660
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
63477
63661
  target: "single",
63478
63662
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63479
63663
  },
63480
63664
  {
63481
63665
  id: "deck.getRandomCard",
63482
63666
  label: "Draw random card",
63483
- icon: { kind: "symbol", key: "deck.drawRandom" },
63667
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
63484
63668
  target: "single",
63485
63669
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63486
63670
  },
63487
63671
  {
63488
63672
  id: "deck.getCards",
63489
63673
  label: "Draw cards",
63490
- icon: { kind: "symbol", key: "deck.drawMany" },
63674
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
63491
63675
  target: "single",
63492
63676
  controls: [
63493
63677
  {
@@ -63509,14 +63693,14 @@ var deckOverlay = {
63509
63693
  {
63510
63694
  id: "deck.shuffle",
63511
63695
  label: "Shuffle",
63512
- icon: { kind: "symbol", key: "deck.shuffle" },
63696
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
63513
63697
  target: "single",
63514
63698
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63515
63699
  },
63516
63700
  {
63517
63701
  id: "deck.flip",
63518
63702
  label: "Flip deck",
63519
- icon: { kind: "symbol", key: "deck.flip" },
63703
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
63520
63704
  target: "single",
63521
63705
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63522
63706
  }
@@ -63525,7 +63709,7 @@ var deckOverlay = {
63525
63709
  var createDeckSelectionAction = {
63526
63710
  id: "deck.createFromSelection",
63527
63711
  label: "Create deck",
63528
- icon: { kind: "symbol", key: "deck.createFromSelection" },
63712
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
63529
63713
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63530
63714
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63531
63715
  isAvailable: (items) => {
@@ -64094,14 +64278,14 @@ var diceOverlay = {
64094
64278
  {
64095
64279
  id: "dice.throw",
64096
64280
  label: "Throw dice",
64097
- icon: { kind: "symbol", key: "dice.throw" },
64281
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64098
64282
  target: "each",
64099
64283
  invoke: { kind: "customMethod", methodName: "throwDice" }
64100
64284
  },
64101
64285
  {
64102
64286
  id: "dice.range",
64103
64287
  label: "Range",
64104
- icon: { kind: "symbol", key: "dice.range" },
64288
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
64105
64289
  target: "each",
64106
64290
  controls: [
64107
64291
  {
@@ -64137,6 +64321,14 @@ var diceOverlay = {
64137
64321
  }
64138
64322
  ]
64139
64323
  }
64324
+ ],
64325
+ sections: [
64326
+ {
64327
+ id: "diceActions",
64328
+ label: "Dice",
64329
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64330
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
64331
+ }
64140
64332
  ]
64141
64333
  };
64142
64334
  var addDiceToolOverlay = {
@@ -64145,7 +64337,19 @@ var addDiceToolOverlay = {
64145
64337
  kind: "create",
64146
64338
  createsItemType: "Dice",
64147
64339
  family: "game",
64148
- icon: { kind: "symbol", key: "tool.dice" }
64340
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64341
+ launch: { kind: "activate-tool" },
64342
+ surface: {
64343
+ order: 1,
64344
+ group: {
64345
+ id: "gameItems",
64346
+ label: "Game items",
64347
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64348
+ order: 1,
64349
+ behavior: "open-panel"
64350
+ },
64351
+ relatedToolNames: ["AddScreen", "AddPouch"]
64352
+ }
64149
64353
  };
64150
64354
 
64151
64355
  // src/Items/Dice/Dice.ts
@@ -64493,8 +64697,7 @@ var screenOverlay = {
64493
64697
  id: "screen.background",
64494
64698
  label: "Background",
64495
64699
  icon: {
64496
- kind: "symbol",
64497
- key: "screen.background",
64700
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64498
64701
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64499
64702
  },
64500
64703
  target: "each",
@@ -64511,6 +64714,97 @@ var screenOverlay = {
64511
64714
  invoke: { kind: "setProperty", property: "backgroundColor" }
64512
64715
  }
64513
64716
  ]
64717
+ },
64718
+ {
64719
+ id: "screen.stroke",
64720
+ label: "Stroke",
64721
+ icon: {
64722
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64723
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64724
+ },
64725
+ target: "each",
64726
+ controls: [
64727
+ {
64728
+ id: "borderColor",
64729
+ label: "Border color",
64730
+ valueSource: { kind: "itemProperty", property: "borderColor" },
64731
+ editor: {
64732
+ kind: "color",
64733
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
64734
+ allowTransparent: true,
64735
+ presentation: "square"
64736
+ },
64737
+ invoke: { kind: "setProperty", property: "borderColor" }
64738
+ },
64739
+ {
64740
+ id: "borderWidth",
64741
+ label: "Border width",
64742
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
64743
+ editor: {
64744
+ kind: "number-stepper",
64745
+ min: 0,
64746
+ max: 8,
64747
+ step: 1,
64748
+ presets: [0, 1, 2, 4],
64749
+ unit: "px"
64750
+ },
64751
+ invoke: { kind: "setProperty", property: "borderWidth" }
64752
+ }
64753
+ ],
64754
+ groups: [
64755
+ {
64756
+ id: "screenStrokeStyle",
64757
+ label: "Stroke",
64758
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64759
+ controlIds: ["borderColor", "borderWidth"]
64760
+ }
64761
+ ]
64762
+ },
64763
+ {
64764
+ id: "screen.backgroundImage",
64765
+ label: "Background image",
64766
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
64767
+ target: "each",
64768
+ when: {
64769
+ kind: "falsy",
64770
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64771
+ },
64772
+ controls: [
64773
+ {
64774
+ id: "backgroundUrl",
64775
+ label: "Background image",
64776
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
64777
+ editor: {
64778
+ kind: "asset-upload",
64779
+ mode: "single",
64780
+ accept: ["image/*"]
64781
+ },
64782
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
64783
+ }
64784
+ ]
64785
+ },
64786
+ {
64787
+ id: "screen.removeBackgroundImage",
64788
+ label: "Remove background image",
64789
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
64790
+ target: "each",
64791
+ when: {
64792
+ kind: "truthy",
64793
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64794
+ },
64795
+ invoke: {
64796
+ kind: "customMethod",
64797
+ methodName: "setBackgroundUrl",
64798
+ args: [{ kind: "static", value: "" }]
64799
+ }
64800
+ }
64801
+ ],
64802
+ sections: [
64803
+ {
64804
+ id: "screenAppearance",
64805
+ label: "Appearance",
64806
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64807
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64514
64808
  }
64515
64809
  ]
64516
64810
  };
@@ -64520,7 +64814,19 @@ var addScreenToolOverlay = {
64520
64814
  kind: "create",
64521
64815
  createsItemType: "Screen",
64522
64816
  family: "container",
64523
- icon: { kind: "symbol", key: "tool.screen" }
64817
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
64818
+ launch: { kind: "activate-tool" },
64819
+ surface: {
64820
+ order: 2,
64821
+ group: {
64822
+ id: "gameItems",
64823
+ label: "Game items",
64824
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64825
+ order: 1,
64826
+ behavior: "open-panel"
64827
+ },
64828
+ relatedToolNames: ["AddDice", "AddPouch"]
64829
+ }
64524
64830
  };
64525
64831
  var addPouchToolOverlay = {
64526
64832
  toolName: "AddPouch",
@@ -64528,7 +64834,19 @@ var addPouchToolOverlay = {
64528
64834
  kind: "create",
64529
64835
  createsItemType: "Screen",
64530
64836
  family: "container",
64531
- icon: { kind: "symbol", key: "tool.pouch" }
64837
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
64838
+ launch: { kind: "activate-tool" },
64839
+ surface: {
64840
+ order: 3,
64841
+ group: {
64842
+ id: "gameItems",
64843
+ label: "Game items",
64844
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64845
+ order: 1,
64846
+ behavior: "open-panel"
64847
+ },
64848
+ relatedToolNames: ["AddDice", "AddScreen"]
64849
+ }
64532
64850
  };
64533
64851
 
64534
64852
  // src/Items/Screen/Screen.ts
@@ -72488,8 +72806,7 @@ var addDrawingToolOverlay = {
72488
72806
  family: "drawing",
72489
72807
  createsItemType: "Drawing",
72490
72808
  icon: {
72491
- kind: "symbol",
72492
- key: "tool.pen",
72809
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72493
72810
  state: {
72494
72811
  swatch: { kind: "toolProperty", property: "strokeColor" },
72495
72812
  note: "UI can show the pending pen color in the icon."
@@ -72501,10 +72818,22 @@ var addDrawingToolOverlay = {
72501
72818
  {
72502
72819
  id: "drawingDefaults",
72503
72820
  label: "Pen defaults",
72504
- icon: { kind: "symbol", key: "tool.pen" },
72821
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72505
72822
  controlIds: strokeControls2.map((control) => control.id)
72506
72823
  }
72507
72824
  ]
72825
+ },
72826
+ launch: { kind: "activate-tool" },
72827
+ surface: {
72828
+ order: 1,
72829
+ group: {
72830
+ id: "drawingTools",
72831
+ label: "Drawing",
72832
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72833
+ order: 5,
72834
+ behavior: "activate-last-used"
72835
+ },
72836
+ relatedToolNames: ["AddHighlighter", "Eraser"]
72508
72837
  }
72509
72838
  };
72510
72839
  var addHighlighterToolOverlay = {
@@ -72514,8 +72843,7 @@ var addHighlighterToolOverlay = {
72514
72843
  family: "drawing",
72515
72844
  createsItemType: "Drawing",
72516
72845
  icon: {
72517
- kind: "symbol",
72518
- key: "tool.highlighter",
72846
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72519
72847
  state: {
72520
72848
  swatch: { kind: "toolProperty", property: "strokeColor" },
72521
72849
  note: "UI can show the pending highlighter color in the icon."
@@ -72527,10 +72855,22 @@ var addHighlighterToolOverlay = {
72527
72855
  {
72528
72856
  id: "highlighterDefaults",
72529
72857
  label: "Highlighter defaults",
72530
- icon: { kind: "symbol", key: "tool.highlighter" },
72858
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72531
72859
  controlIds: strokeControls2.map((control) => control.id)
72532
72860
  }
72533
72861
  ]
72862
+ },
72863
+ launch: { kind: "activate-tool" },
72864
+ surface: {
72865
+ order: 2,
72866
+ group: {
72867
+ id: "drawingTools",
72868
+ label: "Drawing",
72869
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72870
+ order: 5,
72871
+ behavior: "activate-last-used"
72872
+ },
72873
+ relatedToolNames: ["AddDrawing", "Eraser"]
72534
72874
  }
72535
72875
  };
72536
72876
  var eraserToolOverlay = {
@@ -72538,7 +72878,7 @@ var eraserToolOverlay = {
72538
72878
  label: "Eraser",
72539
72879
  kind: "mode",
72540
72880
  family: "drawing",
72541
- icon: { kind: "symbol", key: "tool.eraser" },
72881
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
72542
72882
  defaults: {
72543
72883
  controls: [
72544
72884
  {
@@ -72555,6 +72895,18 @@ var eraserToolOverlay = {
72555
72895
  invoke: { kind: "toolProperty", property: "strokeWidth" }
72556
72896
  }
72557
72897
  ]
72898
+ },
72899
+ launch: { kind: "activate-tool" },
72900
+ surface: {
72901
+ order: 3,
72902
+ group: {
72903
+ id: "drawingTools",
72904
+ label: "Drawing",
72905
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72906
+ order: 5,
72907
+ behavior: "activate-last-used"
72908
+ },
72909
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
72558
72910
  }
72559
72911
  };
72560
72912
 
@@ -72755,7 +73107,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72755
73107
  id: frameType,
72756
73108
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72757
73109
  value: frameType,
72758
- icon: { kind: "symbol", key: `frame.${frameType}` }
73110
+ 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")
72759
73111
  }));
72760
73112
  var addFrameToolOverlay = {
72761
73113
  toolName: "AddFrame",
@@ -72763,7 +73115,7 @@ var addFrameToolOverlay = {
72763
73115
  kind: "create",
72764
73116
  createsItemType: "Frame",
72765
73117
  family: "frame",
72766
- icon: { kind: "symbol", key: "tool.frame" },
73118
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
72767
73119
  defaults: {
72768
73120
  controls: [
72769
73121
  {
@@ -72777,6 +73129,10 @@ var addFrameToolOverlay = {
72777
73129
  invoke: { kind: "toolProperty", property: "shape" }
72778
73130
  }
72779
73131
  ]
73132
+ },
73133
+ launch: { kind: "activate-tool" },
73134
+ surface: {
73135
+ order: 10
72780
73136
  }
72781
73137
  };
72782
73138
 
@@ -73141,8 +73497,7 @@ var addStickerToolOverlay = {
73141
73497
  createsItemType: "Sticker",
73142
73498
  family: "sticker",
73143
73499
  icon: {
73144
- kind: "symbol",
73145
- key: "tool.sticker",
73500
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
73146
73501
  state: {
73147
73502
  swatch: { kind: "toolProperty", property: "backgroundColor" }
73148
73503
  }
@@ -73153,10 +73508,14 @@ var addStickerToolOverlay = {
73153
73508
  id: "stickerBackgroundColor",
73154
73509
  label: "Color",
73155
73510
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
73156
- editor: { kind: "color", palette: STICKER_COLORS },
73511
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
73157
73512
  invoke: { kind: "toolProperty", property: "backgroundColor" }
73158
73513
  }
73159
73514
  ]
73515
+ },
73516
+ launch: { kind: "activate-tool" },
73517
+ surface: {
73518
+ order: 9
73160
73519
  }
73161
73520
  };
73162
73521