microboard-temp 0.14.18 → 0.14.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/node.js CHANGED
@@ -1710,12 +1710,16 @@ __export(exports_node, {
1710
1710
  positionAbsolutely: () => positionAbsolutely,
1711
1711
  parsersHTML: () => parsersHTML,
1712
1712
  parseCssRgb: () => parseCssRgb,
1713
+ overlaySymbolIcon: () => overlaySymbolIcon,
1714
+ overlayAssetIcon: () => overlayAssetIcon,
1713
1715
  omitDefaultProperties: () => omitDefaultProperties,
1714
1716
  messageRouter: () => messageRouter,
1715
1717
  meetsWCAG_AAA: () => meetsWCAG_AAA,
1716
1718
  meetsWCAG_AA: () => meetsWCAG_AA,
1719
+ matchesOverlayCondition: () => matchesOverlayCondition,
1717
1720
  listToolOverlays: () => listToolOverlays,
1718
1721
  listSelectionActions: () => listSelectionActions,
1722
+ listCreateSurfaceEntries: () => listCreateSurfaceEntries,
1719
1723
  itemOverlays: () => itemOverlays,
1720
1724
  itemFactories: () => itemFactories2,
1721
1725
  itemActions: () => itemOverlays,
@@ -1808,6 +1812,7 @@ __export(exports_node, {
1808
1812
  PRESENCE_CLEANUP_USER_TIMER: () => PRESENCE_CLEANUP_USER_TIMER,
1809
1813
  PRESENCE_CLEANUP_IDLE_TIMER: () => PRESENCE_CLEANUP_IDLE_TIMER,
1810
1814
  OVERLAY_SYMBOL_KEYS: () => OVERLAY_SYMBOL_KEYS,
1815
+ OVERLAY_ICON_SPRITE_PATH: () => OVERLAY_ICON_SPRITE_PATH,
1811
1816
  MiroItemConverter: () => MiroItemConverter,
1812
1817
  Mbr: () => Mbr,
1813
1818
  Matrix: () => Matrix,
@@ -12753,6 +12758,28 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
12753
12758
  return op;
12754
12759
  }
12755
12760
  }
12761
+ // src/Overlay/IconPack.ts
12762
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
12763
+ function overlaySymbolIcon(key) {
12764
+ return {
12765
+ kind: "symbol",
12766
+ key,
12767
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
12768
+ };
12769
+ }
12770
+ function overlayAssetIcon(path2, state) {
12771
+ return state ? {
12772
+ kind: "asset",
12773
+ path: path2,
12774
+ mimeType: "image/svg+xml",
12775
+ state
12776
+ } : {
12777
+ kind: "asset",
12778
+ path: path2,
12779
+ mimeType: "image/svg+xml"
12780
+ };
12781
+ }
12782
+
12756
12783
  // src/Overlay/OverlayIcons.ts
12757
12784
  var OVERLAY_SYMBOL_KEYS = {
12758
12785
  styleFill: "style.fill",
@@ -12761,19 +12788,19 @@ var OVERLAY_SYMBOL_KEYS = {
12761
12788
  styleFontSize: "style.fontSize"
12762
12789
  };
12763
12790
  function symbolIcon(key, state) {
12764
- return state ? { kind: "symbol", key, state } : { kind: "symbol", key };
12791
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
12765
12792
  }
12766
12793
  function styleFillIcon(state) {
12767
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
12794
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
12768
12795
  }
12769
12796
  function styleStrokeIcon(state) {
12770
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
12797
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
12771
12798
  }
12772
12799
  function styleColorIcon(state) {
12773
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
12800
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
12774
12801
  }
12775
12802
  function styleFontSizeIcon(state) {
12776
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
12803
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
12777
12804
  }
12778
12805
  // src/Overlay/overlayRegistry.ts
12779
12806
  var itemOverlays = {};
@@ -12802,6 +12829,45 @@ function getToolOverlay(toolName) {
12802
12829
  function listToolOverlays() {
12803
12830
  return Object.values(toolOverlays);
12804
12831
  }
12832
+ function listCreateSurfaceEntries() {
12833
+ const groupedEntries = new Map;
12834
+ const ungroupedEntries = [];
12835
+ for (const tool of Object.values(toolOverlays)) {
12836
+ const group = tool.surface?.group;
12837
+ if (!group) {
12838
+ ungroupedEntries.push({
12839
+ kind: "tool",
12840
+ tool,
12841
+ order: tool.surface?.order
12842
+ });
12843
+ continue;
12844
+ }
12845
+ const existing = groupedEntries.get(group.id);
12846
+ if (existing) {
12847
+ existing.tools.push(tool);
12848
+ if (existing.order === undefined && group.order !== undefined) {
12849
+ existing.order = group.order;
12850
+ }
12851
+ continue;
12852
+ }
12853
+ groupedEntries.set(group.id, {
12854
+ kind: "group",
12855
+ id: group.id,
12856
+ label: group.label,
12857
+ description: group.description,
12858
+ icon: group.icon,
12859
+ order: group.order,
12860
+ behavior: group.behavior,
12861
+ tools: [tool]
12862
+ });
12863
+ }
12864
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
12865
+ ...group,
12866
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
12867
+ })).sort(compareEntriesByOrder);
12868
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
12869
+ return [...sortedGroups, ...sortedUngroupedEntries];
12870
+ }
12805
12871
  function listSelectionActions() {
12806
12872
  return Object.values(selectionActions);
12807
12873
  }
@@ -12811,6 +12877,33 @@ function getSelectionOverlayActions(items) {
12811
12877
  function resolveDynamicOptions(providerId, context) {
12812
12878
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
12813
12879
  }
12880
+ function matchesOverlayCondition(condition, context) {
12881
+ if (!condition) {
12882
+ return true;
12883
+ }
12884
+ switch (condition.kind) {
12885
+ case "equals":
12886
+ return readOverlayValueSource(context, condition.source) === condition.value;
12887
+ case "truthy":
12888
+ return !!readOverlayValueSource(context, condition.source);
12889
+ case "falsy":
12890
+ return !readOverlayValueSource(context, condition.source);
12891
+ case "itemTypeIn":
12892
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
12893
+ case "selectionSize": {
12894
+ const size = context.items?.length ?? (context.item ? 1 : 0);
12895
+ const meetsMin = condition.min === undefined || size >= condition.min;
12896
+ const meetsMax = condition.max === undefined || size <= condition.max;
12897
+ return meetsMin && meetsMax;
12898
+ }
12899
+ case "allOf":
12900
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
12901
+ case "anyOf":
12902
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
12903
+ case "not":
12904
+ return !matchesOverlayCondition(condition.condition, context);
12905
+ }
12906
+ }
12814
12907
  function intersectOverlayActions(items) {
12815
12908
  if (items.length === 0) {
12816
12909
  return [];
@@ -12829,6 +12922,24 @@ function intersectOverlayActions(items) {
12829
12922
  }
12830
12923
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
12831
12924
  }
12925
+ function compareToolsBySurfaceOrder(a, b) {
12926
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
12927
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
12928
+ return aOrder - bOrder || a.label.localeCompare(b.label);
12929
+ }
12930
+ function compareEntriesByOrder(a, b) {
12931
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
12932
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
12933
+ const aLabel = a.label ?? a.tool?.label ?? "";
12934
+ const bLabel = b.label ?? b.tool?.label ?? "";
12935
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
12936
+ }
12937
+ function readOverlayValueSource(context, source) {
12938
+ if (source.kind === "itemProperty") {
12939
+ return context.item ? context.item[source.property] : undefined;
12940
+ }
12941
+ return context.tool ? context.tool[source.property] : undefined;
12942
+ }
12832
12943
  // src/Items/BaseItem/BaseItem.ts
12833
12944
  class BaseItem {
12834
12945
  static createCommand;
@@ -40325,6 +40436,14 @@ var richTextOverlay = {
40325
40436
  }
40326
40437
  ]
40327
40438
  }
40439
+ ],
40440
+ sections: [
40441
+ {
40442
+ id: "textTypography",
40443
+ label: "Typography",
40444
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
40445
+ actionIds: ["text.fontSize"]
40446
+ }
40328
40447
  ]
40329
40448
  };
40330
40449
  var addTextToolOverlay = {
@@ -40333,8 +40452,12 @@ var addTextToolOverlay = {
40333
40452
  kind: "create",
40334
40453
  createsItemType: "RichText",
40335
40454
  family: "text",
40336
- icon: { kind: "symbol", key: "tool.text" },
40337
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
40455
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
40456
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
40457
+ launch: { kind: "activate-tool" },
40458
+ surface: {
40459
+ order: 6
40460
+ }
40338
40461
  };
40339
40462
 
40340
40463
  // src/Items/RichText/RichText.ts
@@ -46737,12 +46860,28 @@ var COLOR_PALETTE = [
46737
46860
  "#118AB2",
46738
46861
  "#7B61FF"
46739
46862
  ];
46740
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
46863
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
46864
+ var lineStyleAssetIcons = {
46865
+ straight: connectorAssetIcon("LineStraight"),
46866
+ curved: connectorAssetIcon("LineCurved"),
46867
+ orthogonal: connectorAssetIcon("LineOrthogonal")
46868
+ };
46869
+ var pointerAssetIcons = {
46870
+ None: connectorAssetIcon("PointerNone"),
46871
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
46872
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
46873
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
46874
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
46875
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
46876
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
46877
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
46878
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
46879
+ };
46741
46880
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
46742
46881
  id: style,
46743
46882
  label: style[0].toUpperCase() + style.slice(1),
46744
46883
  value: style,
46745
- icon: symbolIcon2(`connector.lineStyle.${style}`)
46884
+ icon: lineStyleAssetIcons[style]
46746
46885
  }));
46747
46886
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
46748
46887
  id: `${width}`,
@@ -46753,13 +46892,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
46753
46892
  id: pointer,
46754
46893
  label: pointer,
46755
46894
  value: pointer,
46756
- icon: symbolIcon2(`connector.pointer.${pointer}`)
46895
+ icon: pointerAssetIcons[pointer]
46757
46896
  }));
46758
46897
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
46759
46898
  id: style,
46760
46899
  label: style,
46761
46900
  value: style,
46762
- icon: symbolIcon2(`stroke.${style}`)
46901
+ 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")
46763
46902
  }));
46764
46903
  var connectorStyleControls = [
46765
46904
  {
@@ -46814,7 +46953,7 @@ var connectorStyleControls = [
46814
46953
  {
46815
46954
  id: "smartJump",
46816
46955
  label: "Smart jump",
46817
- icon: symbolIcon2("connector.smartJump"),
46956
+ icon: connectorAssetIcon("SmartJump"),
46818
46957
  valueSource: { kind: "itemProperty", property: "smartJump" },
46819
46958
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46820
46959
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -46873,7 +47012,7 @@ var connectorToolControls = [
46873
47012
  {
46874
47013
  id: "toolSmartJump",
46875
47014
  label: "Smart jump",
46876
- icon: symbolIcon2("connector.smartJump"),
47015
+ icon: connectorAssetIcon("SmartJump"),
46877
47016
  valueSource: { kind: "toolProperty", property: "smartJump" },
46878
47017
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46879
47018
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -46885,25 +47024,33 @@ var connectorOverlay = {
46885
47024
  {
46886
47025
  id: "connector.switchPointers",
46887
47026
  label: "Switch arrows",
46888
- icon: symbolIcon2("connector.switchPointers"),
47027
+ icon: connectorAssetIcon("SwitchPointers"),
46889
47028
  target: "selection",
46890
47029
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
46891
47030
  },
46892
47031
  {
46893
47032
  id: "connector.style",
46894
47033
  label: "Connector style",
46895
- icon: symbolIcon2("connector.style"),
47034
+ icon: connectorAssetIcon("Style"),
46896
47035
  target: "each",
46897
47036
  controls: connectorStyleControls,
46898
47037
  groups: [
46899
47038
  {
46900
47039
  id: "connectorStyle",
46901
47040
  label: "Connector style",
46902
- icon: symbolIcon2("connector.style"),
47041
+ icon: connectorAssetIcon("Style"),
46903
47042
  controlIds: connectorStyleControls.map((control) => control.id)
46904
47043
  }
46905
47044
  ]
46906
47045
  }
47046
+ ],
47047
+ sections: [
47048
+ {
47049
+ id: "connectorArrows",
47050
+ label: "Arrows",
47051
+ icon: connectorAssetIcon("Style"),
47052
+ actionIds: ["connector.switchPointers", "connector.style"]
47053
+ }
46907
47054
  ]
46908
47055
  };
46909
47056
  var addConnectorToolOverlay = {
@@ -46913,8 +47060,7 @@ var addConnectorToolOverlay = {
46913
47060
  createsItemType: "Connector",
46914
47061
  family: "connector",
46915
47062
  icon: {
46916
- kind: "symbol",
46917
- key: "tool.connector",
47063
+ ...connectorAssetIcon("Tool"),
46918
47064
  state: {
46919
47065
  swatch: { kind: "toolProperty", property: "lineColor" },
46920
47066
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -46924,12 +47070,24 @@ var addConnectorToolOverlay = {
46924
47070
  controls: connectorToolControls,
46925
47071
  groups: [
46926
47072
  {
46927
- id: "connectorToolStyle",
47073
+ id: "connectorToolQuickDefaults",
47074
+ label: "Connector quick defaults",
47075
+ icon: connectorAssetIcon("LineStraight"),
47076
+ controlIds: ["toolLineStyle"],
47077
+ description: "Primary defaults that match the compact create-surface picker."
47078
+ },
47079
+ {
47080
+ id: "connectorToolAdvancedDefaults",
46928
47081
  label: "Connector defaults",
46929
- icon: symbolIcon2("connector.style"),
46930
- controlIds: connectorToolControls.map((control) => control.id)
47082
+ icon: connectorAssetIcon("Style"),
47083
+ controlIds: connectorToolControls.map((control) => control.id),
47084
+ description: "Extended defaults available in richer create flows."
46931
47085
  }
46932
47086
  ]
47087
+ },
47088
+ launch: { kind: "activate-tool" },
47089
+ surface: {
47090
+ order: 8
46933
47091
  }
46934
47092
  };
46935
47093
 
@@ -61068,63 +61226,60 @@ var COLOR_PALETTE2 = [
61068
61226
  "#7B61FF",
61069
61227
  "transparent"
61070
61228
  ];
61071
- var inlineShapeAsset = (folder, file2 = folder) => ({
61072
- kind: "asset",
61073
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
61074
- mimeType: "image/svg+xml"
61075
- });
61076
- var symbolIcon3 = (key) => ({ kind: "symbol", key });
61229
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
61230
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
61231
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
61077
61232
  var BASIC_INLINE_OPTIONS = [
61078
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
61079
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
61080
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
61081
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
61082
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
61233
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
61234
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
61235
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
61236
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
61237
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
61083
61238
  ];
61084
61239
  var SHAPE_CATALOG_OPTIONS = [
61085
61240
  ...BASIC_INLINE_OPTIONS,
61086
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle") },
61087
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
61088
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
61089
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
61090
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft") },
61091
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight") },
61092
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
61093
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
61094
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
61095
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
61096
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
61097
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
61098
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram") },
61099
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
61100
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess") },
61101
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
61102
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
61103
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
61104
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
61105
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
61106
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task") },
61107
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway") },
61108
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel") },
61109
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor") },
61110
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent") },
61111
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting") },
61112
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent") },
61113
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent") },
61114
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting") },
61115
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject") },
61116
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore") },
61117
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant") },
61118
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction") },
61119
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess") },
61120
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group") },
61121
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation") }
61241
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
61242
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
61243
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
61244
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
61245
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
61246
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
61247
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
61248
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
61249
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
61250
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
61251
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
61252
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
61253
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
61254
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
61255
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
61256
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
61257
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
61258
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
61259
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
61260
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
61261
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
61262
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
61263
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
61264
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
61265
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
61266
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
61267
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
61268
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
61269
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
61270
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
61271
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
61272
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
61273
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
61274
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
61275
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
61276
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
61122
61277
  ];
61123
61278
  var BORDER_STYLE_OPTIONS = [
61124
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
61125
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
61126
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
61127
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
61279
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
61280
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
61281
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
61282
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
61128
61283
  ];
61129
61284
  var shapeTypeControl = {
61130
61285
  id: "shapeType",
@@ -61133,6 +61288,12 @@ var shapeTypeControl = {
61133
61288
  editor: {
61134
61289
  kind: "enum-icon",
61135
61290
  options: BASIC_INLINE_OPTIONS,
61291
+ layout: "grid",
61292
+ quickOptions: {
61293
+ family: "basicShapes",
61294
+ maxVisible: 18,
61295
+ overflow: "show-more"
61296
+ },
61136
61297
  catalog: {
61137
61298
  kind: "catalog",
61138
61299
  label: "Shape catalog",
@@ -61201,7 +61362,7 @@ var shapeOverlay = {
61201
61362
  {
61202
61363
  id: "shape.shapeType",
61203
61364
  label: "Shape type",
61204
- icon: symbolIcon3("shape.type"),
61365
+ icon: localShapeIcon("Type"),
61205
61366
  target: "each",
61206
61367
  controls: [shapeTypeControl]
61207
61368
  },
@@ -61227,6 +61388,20 @@ var shapeOverlay = {
61227
61388
  }
61228
61389
  ]
61229
61390
  }
61391
+ ],
61392
+ sections: [
61393
+ {
61394
+ id: "shapeTypeSection",
61395
+ label: "Type",
61396
+ icon: localShapeIcon("Type"),
61397
+ actionIds: ["shape.shapeType"]
61398
+ },
61399
+ {
61400
+ id: "shapeAppearanceSection",
61401
+ label: "Appearance",
61402
+ icon: localShapeIcon("Stroke"),
61403
+ actionIds: ["shape.fill", "shape.strokeStyle"]
61404
+ }
61230
61405
  ]
61231
61406
  };
61232
61407
  var addShapeToolOverlay = {
@@ -61236,8 +61411,7 @@ var addShapeToolOverlay = {
61236
61411
  createsItemType: "Shape",
61237
61412
  family: "shape",
61238
61413
  icon: {
61239
- kind: "symbol",
61240
- key: "tool.shape",
61414
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
61241
61415
  state: {
61242
61416
  note: "UI may swap the top-level icon to the selected shape option when desired."
61243
61417
  }
@@ -61251,6 +61425,12 @@ var addShapeToolOverlay = {
61251
61425
  editor: {
61252
61426
  kind: "enum-icon",
61253
61427
  options: BASIC_INLINE_OPTIONS,
61428
+ layout: "grid",
61429
+ quickOptions: {
61430
+ family: "basicShapes",
61431
+ maxVisible: 18,
61432
+ overflow: "show-more"
61433
+ },
61254
61434
  catalog: {
61255
61435
  kind: "catalog",
61256
61436
  label: "Shape catalog",
@@ -61261,6 +61441,10 @@ var addShapeToolOverlay = {
61261
61441
  invoke: { kind: "toolProperty", property: "type" }
61262
61442
  }
61263
61443
  ]
61444
+ },
61445
+ launch: { kind: "activate-tool" },
61446
+ surface: {
61447
+ order: 7
61264
61448
  }
61265
61449
  };
61266
61450
 
@@ -65667,14 +65851,14 @@ var cardOverlay = {
65667
65851
  {
65668
65852
  id: "card.flip",
65669
65853
  label: "Flip card",
65670
- icon: { kind: "symbol", key: "card.flip" },
65854
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
65671
65855
  target: "each",
65672
65856
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
65673
65857
  },
65674
65858
  {
65675
65859
  id: "card.rotateCcw",
65676
65860
  label: "Rotate 90 counter clockwise",
65677
- icon: { kind: "symbol", key: "card.rotateCcw" },
65861
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
65678
65862
  target: "each",
65679
65863
  invoke: {
65680
65864
  kind: "customMethod",
@@ -65685,7 +65869,7 @@ var cardOverlay = {
65685
65869
  {
65686
65870
  id: "card.rotateCw",
65687
65871
  label: "Rotate 90 clockwise",
65688
- icon: { kind: "symbol", key: "card.rotateCw" },
65872
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
65689
65873
  target: "each",
65690
65874
  invoke: {
65691
65875
  kind: "customMethod",
@@ -65939,28 +66123,28 @@ var deckOverlay = {
65939
66123
  {
65940
66124
  id: "deck.getTopCard",
65941
66125
  label: "Draw top card",
65942
- icon: { kind: "symbol", key: "deck.drawTop" },
66126
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
65943
66127
  target: "single",
65944
66128
  invoke: { kind: "customMethod", methodName: "getTopCard" }
65945
66129
  },
65946
66130
  {
65947
66131
  id: "deck.getBottomCard",
65948
66132
  label: "Draw bottom card",
65949
- icon: { kind: "symbol", key: "deck.drawBottom" },
66133
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
65950
66134
  target: "single",
65951
66135
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
65952
66136
  },
65953
66137
  {
65954
66138
  id: "deck.getRandomCard",
65955
66139
  label: "Draw random card",
65956
- icon: { kind: "symbol", key: "deck.drawRandom" },
66140
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
65957
66141
  target: "single",
65958
66142
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
65959
66143
  },
65960
66144
  {
65961
66145
  id: "deck.getCards",
65962
66146
  label: "Draw cards",
65963
- icon: { kind: "symbol", key: "deck.drawMany" },
66147
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
65964
66148
  target: "single",
65965
66149
  controls: [
65966
66150
  {
@@ -65982,14 +66166,14 @@ var deckOverlay = {
65982
66166
  {
65983
66167
  id: "deck.shuffle",
65984
66168
  label: "Shuffle",
65985
- icon: { kind: "symbol", key: "deck.shuffle" },
66169
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
65986
66170
  target: "single",
65987
66171
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
65988
66172
  },
65989
66173
  {
65990
66174
  id: "deck.flip",
65991
66175
  label: "Flip deck",
65992
- icon: { kind: "symbol", key: "deck.flip" },
66176
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
65993
66177
  target: "single",
65994
66178
  invoke: { kind: "customMethod", methodName: "flipDeck" }
65995
66179
  }
@@ -65998,7 +66182,7 @@ var deckOverlay = {
65998
66182
  var createDeckSelectionAction = {
65999
66183
  id: "deck.createFromSelection",
66000
66184
  label: "Create deck",
66001
- icon: { kind: "symbol", key: "deck.createFromSelection" },
66185
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
66002
66186
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
66003
66187
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
66004
66188
  isAvailable: (items) => {
@@ -66567,14 +66751,14 @@ var diceOverlay = {
66567
66751
  {
66568
66752
  id: "dice.throw",
66569
66753
  label: "Throw dice",
66570
- icon: { kind: "symbol", key: "dice.throw" },
66754
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
66571
66755
  target: "each",
66572
66756
  invoke: { kind: "customMethod", methodName: "throwDice" }
66573
66757
  },
66574
66758
  {
66575
66759
  id: "dice.range",
66576
66760
  label: "Range",
66577
- icon: { kind: "symbol", key: "dice.range" },
66761
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
66578
66762
  target: "each",
66579
66763
  controls: [
66580
66764
  {
@@ -66610,6 +66794,14 @@ var diceOverlay = {
66610
66794
  }
66611
66795
  ]
66612
66796
  }
66797
+ ],
66798
+ sections: [
66799
+ {
66800
+ id: "diceActions",
66801
+ label: "Dice",
66802
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
66803
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
66804
+ }
66613
66805
  ]
66614
66806
  };
66615
66807
  var addDiceToolOverlay = {
@@ -66618,7 +66810,19 @@ var addDiceToolOverlay = {
66618
66810
  kind: "create",
66619
66811
  createsItemType: "Dice",
66620
66812
  family: "game",
66621
- icon: { kind: "symbol", key: "tool.dice" }
66813
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
66814
+ launch: { kind: "activate-tool" },
66815
+ surface: {
66816
+ order: 1,
66817
+ group: {
66818
+ id: "gameItems",
66819
+ label: "Game items",
66820
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
66821
+ order: 1,
66822
+ behavior: "open-panel"
66823
+ },
66824
+ relatedToolNames: ["AddScreen", "AddPouch"]
66825
+ }
66622
66826
  };
66623
66827
 
66624
66828
  // src/Items/Dice/Dice.ts
@@ -66966,8 +67170,7 @@ var screenOverlay = {
66966
67170
  id: "screen.background",
66967
67171
  label: "Background",
66968
67172
  icon: {
66969
- kind: "symbol",
66970
- key: "screen.background",
67173
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
66971
67174
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
66972
67175
  },
66973
67176
  target: "each",
@@ -66984,6 +67187,97 @@ var screenOverlay = {
66984
67187
  invoke: { kind: "setProperty", property: "backgroundColor" }
66985
67188
  }
66986
67189
  ]
67190
+ },
67191
+ {
67192
+ id: "screen.stroke",
67193
+ label: "Stroke",
67194
+ icon: {
67195
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
67196
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
67197
+ },
67198
+ target: "each",
67199
+ controls: [
67200
+ {
67201
+ id: "borderColor",
67202
+ label: "Border color",
67203
+ valueSource: { kind: "itemProperty", property: "borderColor" },
67204
+ editor: {
67205
+ kind: "color",
67206
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
67207
+ allowTransparent: true,
67208
+ presentation: "square"
67209
+ },
67210
+ invoke: { kind: "setProperty", property: "borderColor" }
67211
+ },
67212
+ {
67213
+ id: "borderWidth",
67214
+ label: "Border width",
67215
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
67216
+ editor: {
67217
+ kind: "number-stepper",
67218
+ min: 0,
67219
+ max: 8,
67220
+ step: 1,
67221
+ presets: [0, 1, 2, 4],
67222
+ unit: "px"
67223
+ },
67224
+ invoke: { kind: "setProperty", property: "borderWidth" }
67225
+ }
67226
+ ],
67227
+ groups: [
67228
+ {
67229
+ id: "screenStrokeStyle",
67230
+ label: "Stroke",
67231
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
67232
+ controlIds: ["borderColor", "borderWidth"]
67233
+ }
67234
+ ]
67235
+ },
67236
+ {
67237
+ id: "screen.backgroundImage",
67238
+ label: "Background image",
67239
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
67240
+ target: "each",
67241
+ when: {
67242
+ kind: "falsy",
67243
+ source: { kind: "itemProperty", property: "backgroundUrl" }
67244
+ },
67245
+ controls: [
67246
+ {
67247
+ id: "backgroundUrl",
67248
+ label: "Background image",
67249
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
67250
+ editor: {
67251
+ kind: "asset-upload",
67252
+ mode: "single",
67253
+ accept: ["image/*"]
67254
+ },
67255
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
67256
+ }
67257
+ ]
67258
+ },
67259
+ {
67260
+ id: "screen.removeBackgroundImage",
67261
+ label: "Remove background image",
67262
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
67263
+ target: "each",
67264
+ when: {
67265
+ kind: "truthy",
67266
+ source: { kind: "itemProperty", property: "backgroundUrl" }
67267
+ },
67268
+ invoke: {
67269
+ kind: "customMethod",
67270
+ methodName: "setBackgroundUrl",
67271
+ args: [{ kind: "static", value: "" }]
67272
+ }
67273
+ }
67274
+ ],
67275
+ sections: [
67276
+ {
67277
+ id: "screenAppearance",
67278
+ label: "Appearance",
67279
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
67280
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
66987
67281
  }
66988
67282
  ]
66989
67283
  };
@@ -66993,7 +67287,19 @@ var addScreenToolOverlay = {
66993
67287
  kind: "create",
66994
67288
  createsItemType: "Screen",
66995
67289
  family: "container",
66996
- icon: { kind: "symbol", key: "tool.screen" }
67290
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
67291
+ launch: { kind: "activate-tool" },
67292
+ surface: {
67293
+ order: 2,
67294
+ group: {
67295
+ id: "gameItems",
67296
+ label: "Game items",
67297
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
67298
+ order: 1,
67299
+ behavior: "open-panel"
67300
+ },
67301
+ relatedToolNames: ["AddDice", "AddPouch"]
67302
+ }
66997
67303
  };
66998
67304
  var addPouchToolOverlay = {
66999
67305
  toolName: "AddPouch",
@@ -67001,7 +67307,19 @@ var addPouchToolOverlay = {
67001
67307
  kind: "create",
67002
67308
  createsItemType: "Screen",
67003
67309
  family: "container",
67004
- icon: { kind: "symbol", key: "tool.pouch" }
67310
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
67311
+ launch: { kind: "activate-tool" },
67312
+ surface: {
67313
+ order: 3,
67314
+ group: {
67315
+ id: "gameItems",
67316
+ label: "Game items",
67317
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
67318
+ order: 1,
67319
+ behavior: "open-panel"
67320
+ },
67321
+ relatedToolNames: ["AddDice", "AddScreen"]
67322
+ }
67005
67323
  };
67006
67324
 
67007
67325
  // src/Items/Screen/Screen.ts
@@ -74961,8 +75279,7 @@ var addDrawingToolOverlay = {
74961
75279
  family: "drawing",
74962
75280
  createsItemType: "Drawing",
74963
75281
  icon: {
74964
- kind: "symbol",
74965
- key: "tool.pen",
75282
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
74966
75283
  state: {
74967
75284
  swatch: { kind: "toolProperty", property: "strokeColor" },
74968
75285
  note: "UI can show the pending pen color in the icon."
@@ -74974,10 +75291,22 @@ var addDrawingToolOverlay = {
74974
75291
  {
74975
75292
  id: "drawingDefaults",
74976
75293
  label: "Pen defaults",
74977
- icon: { kind: "symbol", key: "tool.pen" },
75294
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
74978
75295
  controlIds: strokeControls2.map((control) => control.id)
74979
75296
  }
74980
75297
  ]
75298
+ },
75299
+ launch: { kind: "activate-tool" },
75300
+ surface: {
75301
+ order: 1,
75302
+ group: {
75303
+ id: "drawingTools",
75304
+ label: "Drawing",
75305
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75306
+ order: 5,
75307
+ behavior: "activate-last-used"
75308
+ },
75309
+ relatedToolNames: ["AddHighlighter", "Eraser"]
74981
75310
  }
74982
75311
  };
74983
75312
  var addHighlighterToolOverlay = {
@@ -74987,8 +75316,7 @@ var addHighlighterToolOverlay = {
74987
75316
  family: "drawing",
74988
75317
  createsItemType: "Drawing",
74989
75318
  icon: {
74990
- kind: "symbol",
74991
- key: "tool.highlighter",
75319
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
74992
75320
  state: {
74993
75321
  swatch: { kind: "toolProperty", property: "strokeColor" },
74994
75322
  note: "UI can show the pending highlighter color in the icon."
@@ -75000,10 +75328,22 @@ var addHighlighterToolOverlay = {
75000
75328
  {
75001
75329
  id: "highlighterDefaults",
75002
75330
  label: "Highlighter defaults",
75003
- icon: { kind: "symbol", key: "tool.highlighter" },
75331
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
75004
75332
  controlIds: strokeControls2.map((control) => control.id)
75005
75333
  }
75006
75334
  ]
75335
+ },
75336
+ launch: { kind: "activate-tool" },
75337
+ surface: {
75338
+ order: 2,
75339
+ group: {
75340
+ id: "drawingTools",
75341
+ label: "Drawing",
75342
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75343
+ order: 5,
75344
+ behavior: "activate-last-used"
75345
+ },
75346
+ relatedToolNames: ["AddDrawing", "Eraser"]
75007
75347
  }
75008
75348
  };
75009
75349
  var eraserToolOverlay = {
@@ -75011,7 +75351,7 @@ var eraserToolOverlay = {
75011
75351
  label: "Eraser",
75012
75352
  kind: "mode",
75013
75353
  family: "drawing",
75014
- icon: { kind: "symbol", key: "tool.eraser" },
75354
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
75015
75355
  defaults: {
75016
75356
  controls: [
75017
75357
  {
@@ -75028,6 +75368,18 @@ var eraserToolOverlay = {
75028
75368
  invoke: { kind: "toolProperty", property: "strokeWidth" }
75029
75369
  }
75030
75370
  ]
75371
+ },
75372
+ launch: { kind: "activate-tool" },
75373
+ surface: {
75374
+ order: 3,
75375
+ group: {
75376
+ id: "drawingTools",
75377
+ label: "Drawing",
75378
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75379
+ order: 5,
75380
+ behavior: "activate-last-used"
75381
+ },
75382
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
75031
75383
  }
75032
75384
  };
75033
75385
 
@@ -75228,7 +75580,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
75228
75580
  id: frameType,
75229
75581
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
75230
75582
  value: frameType,
75231
- icon: { kind: "symbol", key: `frame.${frameType}` }
75583
+ 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")
75232
75584
  }));
75233
75585
  var addFrameToolOverlay = {
75234
75586
  toolName: "AddFrame",
@@ -75236,7 +75588,7 @@ var addFrameToolOverlay = {
75236
75588
  kind: "create",
75237
75589
  createsItemType: "Frame",
75238
75590
  family: "frame",
75239
- icon: { kind: "symbol", key: "tool.frame" },
75591
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
75240
75592
  defaults: {
75241
75593
  controls: [
75242
75594
  {
@@ -75250,6 +75602,10 @@ var addFrameToolOverlay = {
75250
75602
  invoke: { kind: "toolProperty", property: "shape" }
75251
75603
  }
75252
75604
  ]
75605
+ },
75606
+ launch: { kind: "activate-tool" },
75607
+ surface: {
75608
+ order: 10
75253
75609
  }
75254
75610
  };
75255
75611
 
@@ -75614,8 +75970,7 @@ var addStickerToolOverlay = {
75614
75970
  createsItemType: "Sticker",
75615
75971
  family: "sticker",
75616
75972
  icon: {
75617
- kind: "symbol",
75618
- key: "tool.sticker",
75973
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
75619
75974
  state: {
75620
75975
  swatch: { kind: "toolProperty", property: "backgroundColor" }
75621
75976
  }
@@ -75626,10 +75981,14 @@ var addStickerToolOverlay = {
75626
75981
  id: "stickerBackgroundColor",
75627
75982
  label: "Color",
75628
75983
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
75629
- editor: { kind: "color", palette: STICKER_COLORS },
75984
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
75630
75985
  invoke: { kind: "toolProperty", property: "backgroundColor" }
75631
75986
  }
75632
75987
  ]
75988
+ },
75989
+ launch: { kind: "activate-tool" },
75990
+ surface: {
75991
+ order: 9
75633
75992
  }
75634
75993
  };
75635
75994