microboard-temp 0.14.17 → 0.14.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/node.js CHANGED
@@ -1676,6 +1676,11 @@ __export(exports_node, {
1676
1676
  toFiniteNumber: () => toFiniteNumber,
1677
1677
  tempStorage: () => tempStorage,
1678
1678
  tagByType: () => tagByType,
1679
+ symbolIcon: () => symbolIcon,
1680
+ styleStrokeIcon: () => styleStrokeIcon,
1681
+ styleFontSizeIcon: () => styleFontSizeIcon,
1682
+ styleFillIcon: () => styleFillIcon,
1683
+ styleColorIcon: () => styleColorIcon,
1679
1684
  stickerColors: () => stickerColors,
1680
1685
  srgbChannelToLinear: () => srgbChannelToLinear,
1681
1686
  sha256: () => sha256,
@@ -1705,12 +1710,16 @@ __export(exports_node, {
1705
1710
  positionAbsolutely: () => positionAbsolutely,
1706
1711
  parsersHTML: () => parsersHTML,
1707
1712
  parseCssRgb: () => parseCssRgb,
1713
+ overlaySymbolIcon: () => overlaySymbolIcon,
1714
+ overlayAssetIcon: () => overlayAssetIcon,
1708
1715
  omitDefaultProperties: () => omitDefaultProperties,
1709
1716
  messageRouter: () => messageRouter,
1710
1717
  meetsWCAG_AAA: () => meetsWCAG_AAA,
1711
1718
  meetsWCAG_AA: () => meetsWCAG_AA,
1719
+ matchesOverlayCondition: () => matchesOverlayCondition,
1712
1720
  listToolOverlays: () => listToolOverlays,
1713
1721
  listSelectionActions: () => listSelectionActions,
1722
+ listCreateSurfaceEntries: () => listCreateSurfaceEntries,
1714
1723
  itemOverlays: () => itemOverlays,
1715
1724
  itemFactories: () => itemFactories2,
1716
1725
  itemActions: () => itemOverlays,
@@ -1802,6 +1811,8 @@ __export(exports_node, {
1802
1811
  PRESENCE_CURSOR_THROTTLE: () => PRESENCE_CURSOR_THROTTLE,
1803
1812
  PRESENCE_CLEANUP_USER_TIMER: () => PRESENCE_CLEANUP_USER_TIMER,
1804
1813
  PRESENCE_CLEANUP_IDLE_TIMER: () => PRESENCE_CLEANUP_IDLE_TIMER,
1814
+ OVERLAY_SYMBOL_KEYS: () => OVERLAY_SYMBOL_KEYS,
1815
+ OVERLAY_ICON_SPRITE_PATH: () => OVERLAY_ICON_SPRITE_PATH,
1805
1816
  MiroItemConverter: () => MiroItemConverter,
1806
1817
  Mbr: () => Mbr,
1807
1818
  Matrix: () => Matrix,
@@ -12747,6 +12758,45 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
12747
12758
  return op;
12748
12759
  }
12749
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) {
12771
+ return {
12772
+ kind: "asset",
12773
+ path: path2,
12774
+ mimeType: "image/svg+xml"
12775
+ };
12776
+ }
12777
+
12778
+ // src/Overlay/OverlayIcons.ts
12779
+ var OVERLAY_SYMBOL_KEYS = {
12780
+ styleFill: "style.fill",
12781
+ styleStroke: "style.stroke",
12782
+ styleColor: "style.color",
12783
+ styleFontSize: "style.fontSize"
12784
+ };
12785
+ function symbolIcon(key, state) {
12786
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
12787
+ }
12788
+ function styleFillIcon(state) {
12789
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
12790
+ }
12791
+ function styleStrokeIcon(state) {
12792
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
12793
+ }
12794
+ function styleColorIcon(state) {
12795
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
12796
+ }
12797
+ function styleFontSizeIcon(state) {
12798
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
12799
+ }
12750
12800
  // src/Overlay/overlayRegistry.ts
12751
12801
  var itemOverlays = {};
12752
12802
  var toolOverlays = {};
@@ -12774,6 +12824,45 @@ function getToolOverlay(toolName) {
12774
12824
  function listToolOverlays() {
12775
12825
  return Object.values(toolOverlays);
12776
12826
  }
12827
+ function listCreateSurfaceEntries() {
12828
+ const groupedEntries = new Map;
12829
+ const ungroupedEntries = [];
12830
+ for (const tool of Object.values(toolOverlays)) {
12831
+ const group = tool.surface?.group;
12832
+ if (!group) {
12833
+ ungroupedEntries.push({
12834
+ kind: "tool",
12835
+ tool,
12836
+ order: tool.surface?.order
12837
+ });
12838
+ continue;
12839
+ }
12840
+ const existing = groupedEntries.get(group.id);
12841
+ if (existing) {
12842
+ existing.tools.push(tool);
12843
+ if (existing.order === undefined && group.order !== undefined) {
12844
+ existing.order = group.order;
12845
+ }
12846
+ continue;
12847
+ }
12848
+ groupedEntries.set(group.id, {
12849
+ kind: "group",
12850
+ id: group.id,
12851
+ label: group.label,
12852
+ description: group.description,
12853
+ icon: group.icon,
12854
+ order: group.order,
12855
+ behavior: group.behavior,
12856
+ tools: [tool]
12857
+ });
12858
+ }
12859
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
12860
+ ...group,
12861
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
12862
+ })).sort(compareEntriesByOrder);
12863
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
12864
+ return [...sortedGroups, ...sortedUngroupedEntries];
12865
+ }
12777
12866
  function listSelectionActions() {
12778
12867
  return Object.values(selectionActions);
12779
12868
  }
@@ -12783,6 +12872,33 @@ function getSelectionOverlayActions(items) {
12783
12872
  function resolveDynamicOptions(providerId, context) {
12784
12873
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
12785
12874
  }
12875
+ function matchesOverlayCondition(condition, context) {
12876
+ if (!condition) {
12877
+ return true;
12878
+ }
12879
+ switch (condition.kind) {
12880
+ case "equals":
12881
+ return readOverlayValueSource(context, condition.source) === condition.value;
12882
+ case "truthy":
12883
+ return !!readOverlayValueSource(context, condition.source);
12884
+ case "falsy":
12885
+ return !readOverlayValueSource(context, condition.source);
12886
+ case "itemTypeIn":
12887
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
12888
+ case "selectionSize": {
12889
+ const size = context.items?.length ?? (context.item ? 1 : 0);
12890
+ const meetsMin = condition.min === undefined || size >= condition.min;
12891
+ const meetsMax = condition.max === undefined || size <= condition.max;
12892
+ return meetsMin && meetsMax;
12893
+ }
12894
+ case "allOf":
12895
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
12896
+ case "anyOf":
12897
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
12898
+ case "not":
12899
+ return !matchesOverlayCondition(condition.condition, context);
12900
+ }
12901
+ }
12786
12902
  function intersectOverlayActions(items) {
12787
12903
  if (items.length === 0) {
12788
12904
  return [];
@@ -12801,6 +12917,24 @@ function intersectOverlayActions(items) {
12801
12917
  }
12802
12918
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
12803
12919
  }
12920
+ function compareToolsBySurfaceOrder(a, b) {
12921
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
12922
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
12923
+ return aOrder - bOrder || a.label.localeCompare(b.label);
12924
+ }
12925
+ function compareEntriesByOrder(a, b) {
12926
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
12927
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
12928
+ const aLabel = a.label ?? a.tool?.label ?? "";
12929
+ const bLabel = b.label ?? b.tool?.label ?? "";
12930
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
12931
+ }
12932
+ function readOverlayValueSource(context, source) {
12933
+ if (source.kind === "itemProperty") {
12934
+ return context.item ? context.item[source.property] : undefined;
12935
+ }
12936
+ return context.tool ? context.tool[source.property] : undefined;
12937
+ }
12804
12938
  // src/Items/BaseItem/BaseItem.ts
12805
12939
  class BaseItem {
12806
12940
  static createCommand;
@@ -40279,7 +40413,8 @@ var richTextOverlay = {
40279
40413
  {
40280
40414
  id: "text.fontSize",
40281
40415
  label: "Font size",
40282
- icon: { kind: "symbol", key: "text.fontSize" },
40416
+ icon: styleFontSizeIcon(),
40417
+ icon: styleFontSizeIcon(),
40283
40418
  target: "each",
40284
40419
  controls: [
40285
40420
  {
@@ -40297,6 +40432,14 @@ var richTextOverlay = {
40297
40432
  }
40298
40433
  ]
40299
40434
  }
40435
+ ],
40436
+ sections: [
40437
+ {
40438
+ id: "textTypography",
40439
+ label: "Typography",
40440
+ icon: overlaySymbolIcon("text.fontSize"),
40441
+ actionIds: ["text.fontSize"]
40442
+ }
40300
40443
  ]
40301
40444
  };
40302
40445
  var addTextToolOverlay = {
@@ -40305,8 +40448,12 @@ var addTextToolOverlay = {
40305
40448
  kind: "create",
40306
40449
  createsItemType: "RichText",
40307
40450
  family: "text",
40308
- icon: { kind: "symbol", key: "tool.text" },
40309
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
40451
+ icon: overlaySymbolIcon("tool.text"),
40452
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
40453
+ launch: { kind: "activate-tool" },
40454
+ surface: {
40455
+ order: 6
40456
+ }
40310
40457
  };
40311
40458
 
40312
40459
  // src/Items/RichText/RichText.ts
@@ -46709,12 +46856,12 @@ var COLOR_PALETTE = [
46709
46856
  "#118AB2",
46710
46857
  "#7B61FF"
46711
46858
  ];
46712
- var symbolIcon = (key) => ({ kind: "symbol", key });
46859
+ var symbolIcon2 = (key) => overlaySymbolIcon(key);
46713
46860
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
46714
46861
  id: style,
46715
46862
  label: style[0].toUpperCase() + style.slice(1),
46716
46863
  value: style,
46717
- icon: symbolIcon(`connector.lineStyle.${style}`)
46864
+ icon: symbolIcon2(`connector.lineStyle.${style}`)
46718
46865
  }));
46719
46866
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
46720
46867
  id: `${width}`,
@@ -46725,13 +46872,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
46725
46872
  id: pointer,
46726
46873
  label: pointer,
46727
46874
  value: pointer,
46728
- icon: symbolIcon(`connector.pointer.${pointer}`)
46875
+ icon: symbolIcon2(`connector.pointer.${pointer}`)
46729
46876
  }));
46730
46877
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
46731
46878
  id: style,
46732
46879
  label: style,
46733
46880
  value: style,
46734
- icon: symbolIcon(`stroke.${style}`)
46881
+ icon: symbolIcon2(`stroke.${style}`)
46735
46882
  }));
46736
46883
  var connectorStyleControls = [
46737
46884
  {
@@ -46786,7 +46933,7 @@ var connectorStyleControls = [
46786
46933
  {
46787
46934
  id: "smartJump",
46788
46935
  label: "Smart jump",
46789
- icon: symbolIcon("connector.smartJump"),
46936
+ icon: symbolIcon2("connector.smartJump"),
46790
46937
  valueSource: { kind: "itemProperty", property: "smartJump" },
46791
46938
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46792
46939
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -46845,7 +46992,7 @@ var connectorToolControls = [
46845
46992
  {
46846
46993
  id: "toolSmartJump",
46847
46994
  label: "Smart jump",
46848
- icon: symbolIcon("connector.smartJump"),
46995
+ icon: symbolIcon2("connector.smartJump"),
46849
46996
  valueSource: { kind: "toolProperty", property: "smartJump" },
46850
46997
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46851
46998
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -46857,25 +47004,33 @@ var connectorOverlay = {
46857
47004
  {
46858
47005
  id: "connector.switchPointers",
46859
47006
  label: "Switch arrows",
46860
- icon: symbolIcon("connector.switchPointers"),
47007
+ icon: symbolIcon2("connector.switchPointers"),
46861
47008
  target: "selection",
46862
47009
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
46863
47010
  },
46864
47011
  {
46865
47012
  id: "connector.style",
46866
47013
  label: "Connector style",
46867
- icon: symbolIcon("connector.style"),
47014
+ icon: symbolIcon2("connector.style"),
46868
47015
  target: "each",
46869
47016
  controls: connectorStyleControls,
46870
47017
  groups: [
46871
47018
  {
46872
47019
  id: "connectorStyle",
46873
47020
  label: "Connector style",
46874
- icon: symbolIcon("connector.style"),
47021
+ icon: symbolIcon2("connector.style"),
46875
47022
  controlIds: connectorStyleControls.map((control) => control.id)
46876
47023
  }
46877
47024
  ]
46878
47025
  }
47026
+ ],
47027
+ sections: [
47028
+ {
47029
+ id: "connectorArrows",
47030
+ label: "Arrows",
47031
+ icon: symbolIcon2("connector.style"),
47032
+ actionIds: ["connector.switchPointers", "connector.style"]
47033
+ }
46879
47034
  ]
46880
47035
  };
46881
47036
  var addConnectorToolOverlay = {
@@ -46896,12 +47051,24 @@ var addConnectorToolOverlay = {
46896
47051
  controls: connectorToolControls,
46897
47052
  groups: [
46898
47053
  {
46899
- id: "connectorToolStyle",
47054
+ id: "connectorToolQuickDefaults",
47055
+ label: "Connector quick defaults",
47056
+ icon: symbolIcon2("connector.lineStyle.straight"),
47057
+ controlIds: ["toolLineStyle"],
47058
+ description: "Primary defaults that match the compact create-surface picker."
47059
+ },
47060
+ {
47061
+ id: "connectorToolAdvancedDefaults",
46900
47062
  label: "Connector defaults",
46901
- icon: symbolIcon("connector.style"),
46902
- controlIds: connectorToolControls.map((control) => control.id)
47063
+ icon: symbolIcon2("connector.style"),
47064
+ controlIds: connectorToolControls.map((control) => control.id),
47065
+ description: "Extended defaults available in richer create flows."
46903
47066
  }
46904
47067
  ]
47068
+ },
47069
+ launch: { kind: "activate-tool" },
47070
+ surface: {
47071
+ order: 8
46905
47072
  }
46906
47073
  };
46907
47074
 
@@ -61040,63 +61207,59 @@ var COLOR_PALETTE2 = [
61040
61207
  "#7B61FF",
61041
61208
  "transparent"
61042
61209
  ];
61043
- var inlineShapeAsset = (folder, file2 = folder) => ({
61044
- kind: "asset",
61045
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
61046
- mimeType: "image/svg+xml"
61047
- });
61048
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
61210
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
61211
+ var symbolIcon3 = (key) => overlaySymbolIcon(key);
61049
61212
  var BASIC_INLINE_OPTIONS = [
61050
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
61051
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
61052
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
61053
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
61054
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
61213
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
61214
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
61215
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
61216
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
61217
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
61055
61218
  ];
61056
61219
  var SHAPE_CATALOG_OPTIONS = [
61057
61220
  ...BASIC_INLINE_OPTIONS,
61058
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon2("shape.reversedTriangle") },
61059
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
61060
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
61061
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
61062
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon2("shape.arrowBlockLeft") },
61063
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon2("shape.arrowBlockRight") },
61064
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
61065
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
61066
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
61067
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
61068
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
61069
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
61070
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon2("shape.reversedParallelogram") },
61071
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
61072
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon2("shape.predefinedProcess") },
61073
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
61074
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
61075
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
61076
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
61077
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
61078
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon2("shape.bpmn.task") },
61079
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon2("shape.bpmn.gateway") },
61080
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon2("shape.bpmn.gatewayParallel") },
61081
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon2("shape.bpmn.gatewayXor") },
61082
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon2("shape.bpmn.startEvent") },
61083
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.startEventNoneInterrupting") },
61084
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon2("shape.bpmn.endEvent") },
61085
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon2("shape.bpmn.intermediateEvent") },
61086
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.intermediateEventNoneInterrupting") },
61087
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon2("shape.bpmn.dataObject") },
61088
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon2("shape.bpmn.dataStore") },
61089
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon2("shape.bpmn.participant") },
61090
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon2("shape.bpmn.transaction") },
61091
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon2("shape.bpmn.eventSubprocess") },
61092
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon2("shape.bpmn.group") },
61093
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon2("shape.bpmn.annotation") }
61221
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
61222
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
61223
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
61224
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
61225
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
61226
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
61227
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
61228
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
61229
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
61230
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
61231
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
61232
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
61233
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
61234
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
61235
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
61236
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
61237
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
61238
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
61239
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
61240
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
61241
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
61242
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
61243
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
61244
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
61245
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
61246
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
61247
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
61248
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
61249
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
61250
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
61251
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
61252
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
61253
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
61254
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
61255
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
61256
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
61094
61257
  ];
61095
61258
  var BORDER_STYLE_OPTIONS = [
61096
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon2("stroke.solid") },
61097
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon2("stroke.dot") },
61098
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon2("stroke.dash") },
61099
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon2("stroke.longDash") }
61259
+ { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
61260
+ { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
61261
+ { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
61262
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
61100
61263
  ];
61101
61264
  var shapeTypeControl = {
61102
61265
  id: "shapeType",
@@ -61105,6 +61268,12 @@ var shapeTypeControl = {
61105
61268
  editor: {
61106
61269
  kind: "enum-icon",
61107
61270
  options: BASIC_INLINE_OPTIONS,
61271
+ layout: "grid",
61272
+ quickOptions: {
61273
+ family: "basicShapes",
61274
+ maxVisible: 18,
61275
+ overflow: "show-more"
61276
+ },
61108
61277
  catalog: {
61109
61278
  kind: "catalog",
61110
61279
  label: "Shape catalog",
@@ -61119,14 +61288,14 @@ var fillControl = {
61119
61288
  id: "backgroundColor",
61120
61289
  label: "Fill",
61121
61290
  valueSource: { kind: "itemProperty", property: "backgroundColor" },
61122
- icon: {
61123
- kind: "symbol",
61124
- key: "shape.fill",
61125
- state: {
61126
- swatch: { kind: "itemProperty", property: "backgroundColor" },
61127
- note: "UI can render the current fill color as a swatch inside the icon."
61128
- }
61129
- },
61291
+ icon: styleFillIcon({
61292
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
61293
+ note: "UI can render the current fill color as a swatch inside the icon."
61294
+ }),
61295
+ icon: styleFillIcon({
61296
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
61297
+ note: "UI can render the current fill color as a swatch inside the icon."
61298
+ }),
61130
61299
  editor: {
61131
61300
  kind: "color",
61132
61301
  palette: COLOR_PALETTE2,
@@ -61177,7 +61346,7 @@ var shapeOverlay = {
61177
61346
  {
61178
61347
  id: "shape.shapeType",
61179
61348
  label: "Shape type",
61180
- icon: symbolIcon2("shape.type"),
61349
+ icon: symbolIcon3("shape.type"),
61181
61350
  target: "each",
61182
61351
  controls: [shapeTypeControl]
61183
61352
  },
@@ -61191,18 +61360,32 @@ var shapeOverlay = {
61191
61360
  {
61192
61361
  id: "shape.strokeStyle",
61193
61362
  label: "Stroke style",
61194
- icon: symbolIcon2("shape.stroke"),
61363
+ icon: styleStrokeIcon(),
61195
61364
  target: "each",
61196
61365
  controls: strokeControls,
61197
61366
  groups: [
61198
61367
  {
61199
61368
  id: "shapeStrokeStyle",
61200
61369
  label: "Stroke style",
61201
- icon: symbolIcon2("shape.stroke"),
61370
+ icon: styleStrokeIcon(),
61202
61371
  controlIds: strokeControls.map((control) => control.id)
61203
61372
  }
61204
61373
  ]
61205
61374
  }
61375
+ ],
61376
+ sections: [
61377
+ {
61378
+ id: "shapeTypeSection",
61379
+ label: "Type",
61380
+ icon: symbolIcon3("shape.type"),
61381
+ actionIds: ["shape.shapeType"]
61382
+ },
61383
+ {
61384
+ id: "shapeAppearanceSection",
61385
+ label: "Appearance",
61386
+ icon: symbolIcon3("shape.stroke"),
61387
+ actionIds: ["shape.fill", "shape.strokeStyle"]
61388
+ }
61206
61389
  ]
61207
61390
  };
61208
61391
  var addShapeToolOverlay = {
@@ -61212,8 +61395,7 @@ var addShapeToolOverlay = {
61212
61395
  createsItemType: "Shape",
61213
61396
  family: "shape",
61214
61397
  icon: {
61215
- kind: "symbol",
61216
- key: "tool.shape",
61398
+ ...overlaySymbolIcon("tool.shape"),
61217
61399
  state: {
61218
61400
  note: "UI may swap the top-level icon to the selected shape option when desired."
61219
61401
  }
@@ -61227,6 +61409,12 @@ var addShapeToolOverlay = {
61227
61409
  editor: {
61228
61410
  kind: "enum-icon",
61229
61411
  options: BASIC_INLINE_OPTIONS,
61412
+ layout: "grid",
61413
+ quickOptions: {
61414
+ family: "basicShapes",
61415
+ maxVisible: 18,
61416
+ overflow: "show-more"
61417
+ },
61230
61418
  catalog: {
61231
61419
  kind: "catalog",
61232
61420
  label: "Shape catalog",
@@ -61237,6 +61425,10 @@ var addShapeToolOverlay = {
61237
61425
  invoke: { kind: "toolProperty", property: "type" }
61238
61426
  }
61239
61427
  ]
61428
+ },
61429
+ launch: { kind: "activate-tool" },
61430
+ surface: {
61431
+ order: 7
61240
61432
  }
61241
61433
  };
61242
61434
 
@@ -65643,14 +65835,14 @@ var cardOverlay = {
65643
65835
  {
65644
65836
  id: "card.flip",
65645
65837
  label: "Flip card",
65646
- icon: { kind: "symbol", key: "card.flip" },
65838
+ icon: overlaySymbolIcon("card.flip"),
65647
65839
  target: "each",
65648
65840
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
65649
65841
  },
65650
65842
  {
65651
65843
  id: "card.rotateCcw",
65652
65844
  label: "Rotate 90 counter clockwise",
65653
- icon: { kind: "symbol", key: "card.rotateCcw" },
65845
+ icon: overlaySymbolIcon("card.rotateCcw"),
65654
65846
  target: "each",
65655
65847
  invoke: {
65656
65848
  kind: "customMethod",
@@ -65661,7 +65853,7 @@ var cardOverlay = {
65661
65853
  {
65662
65854
  id: "card.rotateCw",
65663
65855
  label: "Rotate 90 clockwise",
65664
- icon: { kind: "symbol", key: "card.rotateCw" },
65856
+ icon: overlaySymbolIcon("card.rotateCw"),
65665
65857
  target: "each",
65666
65858
  invoke: {
65667
65859
  kind: "customMethod",
@@ -65915,28 +66107,28 @@ var deckOverlay = {
65915
66107
  {
65916
66108
  id: "deck.getTopCard",
65917
66109
  label: "Draw top card",
65918
- icon: { kind: "symbol", key: "deck.drawTop" },
66110
+ icon: overlaySymbolIcon("deck.drawTop"),
65919
66111
  target: "single",
65920
66112
  invoke: { kind: "customMethod", methodName: "getTopCard" }
65921
66113
  },
65922
66114
  {
65923
66115
  id: "deck.getBottomCard",
65924
66116
  label: "Draw bottom card",
65925
- icon: { kind: "symbol", key: "deck.drawBottom" },
66117
+ icon: overlaySymbolIcon("deck.drawBottom"),
65926
66118
  target: "single",
65927
66119
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
65928
66120
  },
65929
66121
  {
65930
66122
  id: "deck.getRandomCard",
65931
66123
  label: "Draw random card",
65932
- icon: { kind: "symbol", key: "deck.drawRandom" },
66124
+ icon: overlaySymbolIcon("deck.drawRandom"),
65933
66125
  target: "single",
65934
66126
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
65935
66127
  },
65936
66128
  {
65937
66129
  id: "deck.getCards",
65938
66130
  label: "Draw cards",
65939
- icon: { kind: "symbol", key: "deck.drawMany" },
66131
+ icon: overlaySymbolIcon("deck.drawMany"),
65940
66132
  target: "single",
65941
66133
  controls: [
65942
66134
  {
@@ -65958,14 +66150,14 @@ var deckOverlay = {
65958
66150
  {
65959
66151
  id: "deck.shuffle",
65960
66152
  label: "Shuffle",
65961
- icon: { kind: "symbol", key: "deck.shuffle" },
66153
+ icon: overlaySymbolIcon("deck.shuffle"),
65962
66154
  target: "single",
65963
66155
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
65964
66156
  },
65965
66157
  {
65966
66158
  id: "deck.flip",
65967
66159
  label: "Flip deck",
65968
- icon: { kind: "symbol", key: "deck.flip" },
66160
+ icon: overlaySymbolIcon("deck.flip"),
65969
66161
  target: "single",
65970
66162
  invoke: { kind: "customMethod", methodName: "flipDeck" }
65971
66163
  }
@@ -65974,7 +66166,7 @@ var deckOverlay = {
65974
66166
  var createDeckSelectionAction = {
65975
66167
  id: "deck.createFromSelection",
65976
66168
  label: "Create deck",
65977
- icon: { kind: "symbol", key: "deck.createFromSelection" },
66169
+ icon: overlaySymbolIcon("deck.createFromSelection"),
65978
66170
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
65979
66171
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
65980
66172
  isAvailable: (items) => {
@@ -66543,14 +66735,14 @@ var diceOverlay = {
66543
66735
  {
66544
66736
  id: "dice.throw",
66545
66737
  label: "Throw dice",
66546
- icon: { kind: "symbol", key: "dice.throw" },
66738
+ icon: overlaySymbolIcon("dice.throw"),
66547
66739
  target: "each",
66548
66740
  invoke: { kind: "customMethod", methodName: "throwDice" }
66549
66741
  },
66550
66742
  {
66551
66743
  id: "dice.range",
66552
66744
  label: "Range",
66553
- icon: { kind: "symbol", key: "dice.range" },
66745
+ icon: overlaySymbolIcon("dice.range"),
66554
66746
  target: "each",
66555
66747
  controls: [
66556
66748
  {
@@ -66572,11 +66764,9 @@ var diceOverlay = {
66572
66764
  {
66573
66765
  id: "dice.fill",
66574
66766
  label: "Fill",
66575
- icon: {
66576
- kind: "symbol",
66577
- key: "shape.fill",
66578
- state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
66579
- },
66767
+ icon: styleFillIcon({
66768
+ swatch: { kind: "itemProperty", property: "backgroundColor" }
66769
+ }),
66580
66770
  target: "each",
66581
66771
  controls: [
66582
66772
  {
@@ -66588,6 +66778,14 @@ var diceOverlay = {
66588
66778
  }
66589
66779
  ]
66590
66780
  }
66781
+ ],
66782
+ sections: [
66783
+ {
66784
+ id: "diceActions",
66785
+ label: "Dice",
66786
+ icon: overlaySymbolIcon("dice.throw"),
66787
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
66788
+ }
66591
66789
  ]
66592
66790
  };
66593
66791
  var addDiceToolOverlay = {
@@ -66596,7 +66794,19 @@ var addDiceToolOverlay = {
66596
66794
  kind: "create",
66597
66795
  createsItemType: "Dice",
66598
66796
  family: "game",
66599
- icon: { kind: "symbol", key: "tool.dice" }
66797
+ icon: overlaySymbolIcon("tool.dice"),
66798
+ launch: { kind: "activate-tool" },
66799
+ surface: {
66800
+ order: 1,
66801
+ group: {
66802
+ id: "gameItems",
66803
+ label: "Game items",
66804
+ icon: overlaySymbolIcon("tool.dice"),
66805
+ order: 1,
66806
+ behavior: "open-panel"
66807
+ },
66808
+ relatedToolNames: ["AddScreen", "AddPouch"]
66809
+ }
66600
66810
  };
66601
66811
 
66602
66812
  // src/Items/Dice/Dice.ts
@@ -66944,8 +67154,7 @@ var screenOverlay = {
66944
67154
  id: "screen.background",
66945
67155
  label: "Background",
66946
67156
  icon: {
66947
- kind: "symbol",
66948
- key: "screen.background",
67157
+ ...overlaySymbolIcon("screen.background"),
66949
67158
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
66950
67159
  },
66951
67160
  target: "each",
@@ -66962,6 +67171,97 @@ var screenOverlay = {
66962
67171
  invoke: { kind: "setProperty", property: "backgroundColor" }
66963
67172
  }
66964
67173
  ]
67174
+ },
67175
+ {
67176
+ id: "screen.stroke",
67177
+ label: "Stroke",
67178
+ icon: {
67179
+ ...overlaySymbolIcon("shape.stroke"),
67180
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
67181
+ },
67182
+ target: "each",
67183
+ controls: [
67184
+ {
67185
+ id: "borderColor",
67186
+ label: "Border color",
67187
+ valueSource: { kind: "itemProperty", property: "borderColor" },
67188
+ editor: {
67189
+ kind: "color",
67190
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
67191
+ allowTransparent: true,
67192
+ presentation: "square"
67193
+ },
67194
+ invoke: { kind: "setProperty", property: "borderColor" }
67195
+ },
67196
+ {
67197
+ id: "borderWidth",
67198
+ label: "Border width",
67199
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
67200
+ editor: {
67201
+ kind: "number-stepper",
67202
+ min: 0,
67203
+ max: 8,
67204
+ step: 1,
67205
+ presets: [0, 1, 2, 4],
67206
+ unit: "px"
67207
+ },
67208
+ invoke: { kind: "setProperty", property: "borderWidth" }
67209
+ }
67210
+ ],
67211
+ groups: [
67212
+ {
67213
+ id: "screenStrokeStyle",
67214
+ label: "Stroke",
67215
+ icon: overlaySymbolIcon("shape.stroke"),
67216
+ controlIds: ["borderColor", "borderWidth"]
67217
+ }
67218
+ ]
67219
+ },
67220
+ {
67221
+ id: "screen.backgroundImage",
67222
+ label: "Background image",
67223
+ icon: overlaySymbolIcon("screen.backgroundImage"),
67224
+ target: "each",
67225
+ when: {
67226
+ kind: "falsy",
67227
+ source: { kind: "itemProperty", property: "backgroundUrl" }
67228
+ },
67229
+ controls: [
67230
+ {
67231
+ id: "backgroundUrl",
67232
+ label: "Background image",
67233
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
67234
+ editor: {
67235
+ kind: "asset-upload",
67236
+ mode: "single",
67237
+ accept: ["image/*"]
67238
+ },
67239
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
67240
+ }
67241
+ ]
67242
+ },
67243
+ {
67244
+ id: "screen.removeBackgroundImage",
67245
+ label: "Remove background image",
67246
+ icon: overlaySymbolIcon("screen.backgroundImage.remove"),
67247
+ target: "each",
67248
+ when: {
67249
+ kind: "truthy",
67250
+ source: { kind: "itemProperty", property: "backgroundUrl" }
67251
+ },
67252
+ invoke: {
67253
+ kind: "customMethod",
67254
+ methodName: "setBackgroundUrl",
67255
+ args: [{ kind: "static", value: "" }]
67256
+ }
67257
+ }
67258
+ ],
67259
+ sections: [
67260
+ {
67261
+ id: "screenAppearance",
67262
+ label: "Appearance",
67263
+ icon: overlaySymbolIcon("screen.background"),
67264
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
66965
67265
  }
66966
67266
  ]
66967
67267
  };
@@ -66971,7 +67271,19 @@ var addScreenToolOverlay = {
66971
67271
  kind: "create",
66972
67272
  createsItemType: "Screen",
66973
67273
  family: "container",
66974
- icon: { kind: "symbol", key: "tool.screen" }
67274
+ icon: overlaySymbolIcon("tool.screen"),
67275
+ launch: { kind: "activate-tool" },
67276
+ surface: {
67277
+ order: 2,
67278
+ group: {
67279
+ id: "gameItems",
67280
+ label: "Game items",
67281
+ icon: overlaySymbolIcon("tool.dice"),
67282
+ order: 1,
67283
+ behavior: "open-panel"
67284
+ },
67285
+ relatedToolNames: ["AddDice", "AddPouch"]
67286
+ }
66975
67287
  };
66976
67288
  var addPouchToolOverlay = {
66977
67289
  toolName: "AddPouch",
@@ -66979,7 +67291,19 @@ var addPouchToolOverlay = {
66979
67291
  kind: "create",
66980
67292
  createsItemType: "Screen",
66981
67293
  family: "container",
66982
- icon: { kind: "symbol", key: "tool.pouch" }
67294
+ icon: overlaySymbolIcon("tool.pouch"),
67295
+ launch: { kind: "activate-tool" },
67296
+ surface: {
67297
+ order: 3,
67298
+ group: {
67299
+ id: "gameItems",
67300
+ label: "Game items",
67301
+ icon: overlaySymbolIcon("tool.dice"),
67302
+ order: 1,
67303
+ behavior: "open-panel"
67304
+ },
67305
+ relatedToolNames: ["AddDice", "AddScreen"]
67306
+ }
66983
67307
  };
66984
67308
 
66985
67309
  // src/Items/Screen/Screen.ts
@@ -74939,8 +75263,7 @@ var addDrawingToolOverlay = {
74939
75263
  family: "drawing",
74940
75264
  createsItemType: "Drawing",
74941
75265
  icon: {
74942
- kind: "symbol",
74943
- key: "tool.pen",
75266
+ ...overlaySymbolIcon("tool.pen"),
74944
75267
  state: {
74945
75268
  swatch: { kind: "toolProperty", property: "strokeColor" },
74946
75269
  note: "UI can show the pending pen color in the icon."
@@ -74952,10 +75275,22 @@ var addDrawingToolOverlay = {
74952
75275
  {
74953
75276
  id: "drawingDefaults",
74954
75277
  label: "Pen defaults",
74955
- icon: { kind: "symbol", key: "tool.pen" },
75278
+ icon: overlaySymbolIcon("tool.pen"),
74956
75279
  controlIds: strokeControls2.map((control) => control.id)
74957
75280
  }
74958
75281
  ]
75282
+ },
75283
+ launch: { kind: "activate-tool" },
75284
+ surface: {
75285
+ order: 1,
75286
+ group: {
75287
+ id: "drawingTools",
75288
+ label: "Drawing",
75289
+ icon: overlaySymbolIcon("tool.pen"),
75290
+ order: 5,
75291
+ behavior: "activate-last-used"
75292
+ },
75293
+ relatedToolNames: ["AddHighlighter", "Eraser"]
74959
75294
  }
74960
75295
  };
74961
75296
  var addHighlighterToolOverlay = {
@@ -74965,8 +75300,7 @@ var addHighlighterToolOverlay = {
74965
75300
  family: "drawing",
74966
75301
  createsItemType: "Drawing",
74967
75302
  icon: {
74968
- kind: "symbol",
74969
- key: "tool.highlighter",
75303
+ ...overlaySymbolIcon("tool.highlighter"),
74970
75304
  state: {
74971
75305
  swatch: { kind: "toolProperty", property: "strokeColor" },
74972
75306
  note: "UI can show the pending highlighter color in the icon."
@@ -74978,10 +75312,22 @@ var addHighlighterToolOverlay = {
74978
75312
  {
74979
75313
  id: "highlighterDefaults",
74980
75314
  label: "Highlighter defaults",
74981
- icon: { kind: "symbol", key: "tool.highlighter" },
75315
+ icon: overlaySymbolIcon("tool.highlighter"),
74982
75316
  controlIds: strokeControls2.map((control) => control.id)
74983
75317
  }
74984
75318
  ]
75319
+ },
75320
+ launch: { kind: "activate-tool" },
75321
+ surface: {
75322
+ order: 2,
75323
+ group: {
75324
+ id: "drawingTools",
75325
+ label: "Drawing",
75326
+ icon: overlaySymbolIcon("tool.pen"),
75327
+ order: 5,
75328
+ behavior: "activate-last-used"
75329
+ },
75330
+ relatedToolNames: ["AddDrawing", "Eraser"]
74985
75331
  }
74986
75332
  };
74987
75333
  var eraserToolOverlay = {
@@ -74989,7 +75335,7 @@ var eraserToolOverlay = {
74989
75335
  label: "Eraser",
74990
75336
  kind: "mode",
74991
75337
  family: "drawing",
74992
- icon: { kind: "symbol", key: "tool.eraser" },
75338
+ icon: overlaySymbolIcon("tool.eraser"),
74993
75339
  defaults: {
74994
75340
  controls: [
74995
75341
  {
@@ -75006,6 +75352,18 @@ var eraserToolOverlay = {
75006
75352
  invoke: { kind: "toolProperty", property: "strokeWidth" }
75007
75353
  }
75008
75354
  ]
75355
+ },
75356
+ launch: { kind: "activate-tool" },
75357
+ surface: {
75358
+ order: 3,
75359
+ group: {
75360
+ id: "drawingTools",
75361
+ label: "Drawing",
75362
+ icon: overlaySymbolIcon("tool.pen"),
75363
+ order: 5,
75364
+ behavior: "activate-last-used"
75365
+ },
75366
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
75009
75367
  }
75010
75368
  };
75011
75369
 
@@ -75206,7 +75564,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
75206
75564
  id: frameType,
75207
75565
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
75208
75566
  value: frameType,
75209
- icon: { kind: "symbol", key: `frame.${frameType}` }
75567
+ icon: overlaySymbolIcon(`frame.${frameType}`)
75210
75568
  }));
75211
75569
  var addFrameToolOverlay = {
75212
75570
  toolName: "AddFrame",
@@ -75214,7 +75572,7 @@ var addFrameToolOverlay = {
75214
75572
  kind: "create",
75215
75573
  createsItemType: "Frame",
75216
75574
  family: "frame",
75217
- icon: { kind: "symbol", key: "tool.frame" },
75575
+ icon: overlaySymbolIcon("tool.frame"),
75218
75576
  defaults: {
75219
75577
  controls: [
75220
75578
  {
@@ -75228,6 +75586,10 @@ var addFrameToolOverlay = {
75228
75586
  invoke: { kind: "toolProperty", property: "shape" }
75229
75587
  }
75230
75588
  ]
75589
+ },
75590
+ launch: { kind: "activate-tool" },
75591
+ surface: {
75592
+ order: 10
75231
75593
  }
75232
75594
  };
75233
75595
 
@@ -75592,8 +75954,7 @@ var addStickerToolOverlay = {
75592
75954
  createsItemType: "Sticker",
75593
75955
  family: "sticker",
75594
75956
  icon: {
75595
- kind: "symbol",
75596
- key: "tool.sticker",
75957
+ ...overlaySymbolIcon("tool.sticker"),
75597
75958
  state: {
75598
75959
  swatch: { kind: "toolProperty", property: "backgroundColor" }
75599
75960
  }
@@ -75604,10 +75965,14 @@ var addStickerToolOverlay = {
75604
75965
  id: "stickerBackgroundColor",
75605
75966
  label: "Color",
75606
75967
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
75607
- editor: { kind: "color", palette: STICKER_COLORS },
75968
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
75608
75969
  invoke: { kind: "toolProperty", property: "backgroundColor" }
75609
75970
  }
75610
75971
  ]
75972
+ },
75973
+ launch: { kind: "activate-tool" },
75974
+ surface: {
75975
+ order: 9
75611
75976
  }
75612
75977
  };
75613
75978