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.
@@ -639,6 +639,11 @@ __export(exports_browser, {
639
639
  toFiniteNumber: () => toFiniteNumber,
640
640
  tempStorage: () => tempStorage,
641
641
  tagByType: () => tagByType,
642
+ symbolIcon: () => symbolIcon,
643
+ styleStrokeIcon: () => styleStrokeIcon,
644
+ styleFontSizeIcon: () => styleFontSizeIcon,
645
+ styleFillIcon: () => styleFillIcon,
646
+ styleColorIcon: () => styleColorIcon,
642
647
  stickerColors: () => stickerColors,
643
648
  srgbChannelToLinear: () => srgbChannelToLinear,
644
649
  sha256: () => sha256,
@@ -668,12 +673,16 @@ __export(exports_browser, {
668
673
  positionAbsolutely: () => positionAbsolutely,
669
674
  parsersHTML: () => parsersHTML,
670
675
  parseCssRgb: () => parseCssRgb,
676
+ overlaySymbolIcon: () => overlaySymbolIcon,
677
+ overlayAssetIcon: () => overlayAssetIcon,
671
678
  omitDefaultProperties: () => omitDefaultProperties,
672
679
  messageRouter: () => messageRouter,
673
680
  meetsWCAG_AAA: () => meetsWCAG_AAA,
674
681
  meetsWCAG_AA: () => meetsWCAG_AA,
682
+ matchesOverlayCondition: () => matchesOverlayCondition,
675
683
  listToolOverlays: () => listToolOverlays,
676
684
  listSelectionActions: () => listSelectionActions,
685
+ listCreateSurfaceEntries: () => listCreateSurfaceEntries,
677
686
  itemOverlays: () => itemOverlays,
678
687
  itemFactories: () => itemFactories2,
679
688
  itemActions: () => itemOverlays,
@@ -765,6 +774,8 @@ __export(exports_browser, {
765
774
  PRESENCE_CURSOR_THROTTLE: () => PRESENCE_CURSOR_THROTTLE,
766
775
  PRESENCE_CLEANUP_USER_TIMER: () => PRESENCE_CLEANUP_USER_TIMER,
767
776
  PRESENCE_CLEANUP_IDLE_TIMER: () => PRESENCE_CLEANUP_IDLE_TIMER,
777
+ OVERLAY_SYMBOL_KEYS: () => OVERLAY_SYMBOL_KEYS,
778
+ OVERLAY_ICON_SPRITE_PATH: () => OVERLAY_ICON_SPRITE_PATH,
768
779
  MiroItemConverter: () => MiroItemConverter,
769
780
  Mbr: () => Mbr,
770
781
  Matrix: () => Matrix,
@@ -11711,6 +11722,45 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11711
11722
  return op;
11712
11723
  }
11713
11724
  }
11725
+ // src/Overlay/IconPack.ts
11726
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11727
+ function overlaySymbolIcon(key) {
11728
+ return {
11729
+ kind: "symbol",
11730
+ key,
11731
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
11732
+ };
11733
+ }
11734
+ function overlayAssetIcon(path2) {
11735
+ return {
11736
+ kind: "asset",
11737
+ path: path2,
11738
+ mimeType: "image/svg+xml"
11739
+ };
11740
+ }
11741
+
11742
+ // src/Overlay/OverlayIcons.ts
11743
+ var OVERLAY_SYMBOL_KEYS = {
11744
+ styleFill: "style.fill",
11745
+ styleStroke: "style.stroke",
11746
+ styleColor: "style.color",
11747
+ styleFontSize: "style.fontSize"
11748
+ };
11749
+ function symbolIcon(key, state) {
11750
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11751
+ }
11752
+ function styleFillIcon(state) {
11753
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11754
+ }
11755
+ function styleStrokeIcon(state) {
11756
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11757
+ }
11758
+ function styleColorIcon(state) {
11759
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11760
+ }
11761
+ function styleFontSizeIcon(state) {
11762
+ return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11763
+ }
11714
11764
  // src/Overlay/overlayRegistry.ts
11715
11765
  var itemOverlays = {};
11716
11766
  var toolOverlays = {};
@@ -11738,6 +11788,45 @@ function getToolOverlay(toolName) {
11738
11788
  function listToolOverlays() {
11739
11789
  return Object.values(toolOverlays);
11740
11790
  }
11791
+ function listCreateSurfaceEntries() {
11792
+ const groupedEntries = new Map;
11793
+ const ungroupedEntries = [];
11794
+ for (const tool of Object.values(toolOverlays)) {
11795
+ const group = tool.surface?.group;
11796
+ if (!group) {
11797
+ ungroupedEntries.push({
11798
+ kind: "tool",
11799
+ tool,
11800
+ order: tool.surface?.order
11801
+ });
11802
+ continue;
11803
+ }
11804
+ const existing = groupedEntries.get(group.id);
11805
+ if (existing) {
11806
+ existing.tools.push(tool);
11807
+ if (existing.order === undefined && group.order !== undefined) {
11808
+ existing.order = group.order;
11809
+ }
11810
+ continue;
11811
+ }
11812
+ groupedEntries.set(group.id, {
11813
+ kind: "group",
11814
+ id: group.id,
11815
+ label: group.label,
11816
+ description: group.description,
11817
+ icon: group.icon,
11818
+ order: group.order,
11819
+ behavior: group.behavior,
11820
+ tools: [tool]
11821
+ });
11822
+ }
11823
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
11824
+ ...group,
11825
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
11826
+ })).sort(compareEntriesByOrder);
11827
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
11828
+ return [...sortedGroups, ...sortedUngroupedEntries];
11829
+ }
11741
11830
  function listSelectionActions() {
11742
11831
  return Object.values(selectionActions);
11743
11832
  }
@@ -11747,6 +11836,33 @@ function getSelectionOverlayActions(items) {
11747
11836
  function resolveDynamicOptions(providerId, context) {
11748
11837
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
11749
11838
  }
11839
+ function matchesOverlayCondition(condition, context) {
11840
+ if (!condition) {
11841
+ return true;
11842
+ }
11843
+ switch (condition.kind) {
11844
+ case "equals":
11845
+ return readOverlayValueSource(context, condition.source) === condition.value;
11846
+ case "truthy":
11847
+ return !!readOverlayValueSource(context, condition.source);
11848
+ case "falsy":
11849
+ return !readOverlayValueSource(context, condition.source);
11850
+ case "itemTypeIn":
11851
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
11852
+ case "selectionSize": {
11853
+ const size = context.items?.length ?? (context.item ? 1 : 0);
11854
+ const meetsMin = condition.min === undefined || size >= condition.min;
11855
+ const meetsMax = condition.max === undefined || size <= condition.max;
11856
+ return meetsMin && meetsMax;
11857
+ }
11858
+ case "allOf":
11859
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
11860
+ case "anyOf":
11861
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
11862
+ case "not":
11863
+ return !matchesOverlayCondition(condition.condition, context);
11864
+ }
11865
+ }
11750
11866
  function intersectOverlayActions(items) {
11751
11867
  if (items.length === 0) {
11752
11868
  return [];
@@ -11765,6 +11881,24 @@ function intersectOverlayActions(items) {
11765
11881
  }
11766
11882
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
11767
11883
  }
11884
+ function compareToolsBySurfaceOrder(a, b) {
11885
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
11886
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
11887
+ return aOrder - bOrder || a.label.localeCompare(b.label);
11888
+ }
11889
+ function compareEntriesByOrder(a, b) {
11890
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
11891
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
11892
+ const aLabel = a.label ?? a.tool?.label ?? "";
11893
+ const bLabel = b.label ?? b.tool?.label ?? "";
11894
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
11895
+ }
11896
+ function readOverlayValueSource(context, source) {
11897
+ if (source.kind === "itemProperty") {
11898
+ return context.item ? context.item[source.property] : undefined;
11899
+ }
11900
+ return context.tool ? context.tool[source.property] : undefined;
11901
+ }
11768
11902
  // src/Items/BaseItem/BaseItem.ts
11769
11903
  class BaseItem {
11770
11904
  static createCommand;
@@ -37740,7 +37874,8 @@ var richTextOverlay = {
37740
37874
  {
37741
37875
  id: "text.fontSize",
37742
37876
  label: "Font size",
37743
- icon: { kind: "symbol", key: "text.fontSize" },
37877
+ icon: styleFontSizeIcon(),
37878
+ icon: styleFontSizeIcon(),
37744
37879
  target: "each",
37745
37880
  controls: [
37746
37881
  {
@@ -37758,6 +37893,14 @@ var richTextOverlay = {
37758
37893
  }
37759
37894
  ]
37760
37895
  }
37896
+ ],
37897
+ sections: [
37898
+ {
37899
+ id: "textTypography",
37900
+ label: "Typography",
37901
+ icon: overlaySymbolIcon("text.fontSize"),
37902
+ actionIds: ["text.fontSize"]
37903
+ }
37761
37904
  ]
37762
37905
  };
37763
37906
  var addTextToolOverlay = {
@@ -37766,8 +37909,12 @@ var addTextToolOverlay = {
37766
37909
  kind: "create",
37767
37910
  createsItemType: "RichText",
37768
37911
  family: "text",
37769
- icon: { kind: "symbol", key: "tool.text" },
37770
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
37912
+ icon: overlaySymbolIcon("tool.text"),
37913
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37914
+ launch: { kind: "activate-tool" },
37915
+ surface: {
37916
+ order: 6
37917
+ }
37771
37918
  };
37772
37919
 
37773
37920
  // src/Items/RichText/RichText.ts
@@ -44237,12 +44384,12 @@ var COLOR_PALETTE = [
44237
44384
  "#118AB2",
44238
44385
  "#7B61FF"
44239
44386
  ];
44240
- var symbolIcon = (key) => ({ kind: "symbol", key });
44387
+ var symbolIcon2 = (key) => overlaySymbolIcon(key);
44241
44388
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44242
44389
  id: style,
44243
44390
  label: style[0].toUpperCase() + style.slice(1),
44244
44391
  value: style,
44245
- icon: symbolIcon(`connector.lineStyle.${style}`)
44392
+ icon: symbolIcon2(`connector.lineStyle.${style}`)
44246
44393
  }));
44247
44394
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44248
44395
  id: `${width}`,
@@ -44253,13 +44400,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44253
44400
  id: pointer,
44254
44401
  label: pointer,
44255
44402
  value: pointer,
44256
- icon: symbolIcon(`connector.pointer.${pointer}`)
44403
+ icon: symbolIcon2(`connector.pointer.${pointer}`)
44257
44404
  }));
44258
44405
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44259
44406
  id: style,
44260
44407
  label: style,
44261
44408
  value: style,
44262
- icon: symbolIcon(`stroke.${style}`)
44409
+ icon: symbolIcon2(`stroke.${style}`)
44263
44410
  }));
44264
44411
  var connectorStyleControls = [
44265
44412
  {
@@ -44314,7 +44461,7 @@ var connectorStyleControls = [
44314
44461
  {
44315
44462
  id: "smartJump",
44316
44463
  label: "Smart jump",
44317
- icon: symbolIcon("connector.smartJump"),
44464
+ icon: symbolIcon2("connector.smartJump"),
44318
44465
  valueSource: { kind: "itemProperty", property: "smartJump" },
44319
44466
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44320
44467
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44373,7 +44520,7 @@ var connectorToolControls = [
44373
44520
  {
44374
44521
  id: "toolSmartJump",
44375
44522
  label: "Smart jump",
44376
- icon: symbolIcon("connector.smartJump"),
44523
+ icon: symbolIcon2("connector.smartJump"),
44377
44524
  valueSource: { kind: "toolProperty", property: "smartJump" },
44378
44525
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44379
44526
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44385,25 +44532,33 @@ var connectorOverlay = {
44385
44532
  {
44386
44533
  id: "connector.switchPointers",
44387
44534
  label: "Switch arrows",
44388
- icon: symbolIcon("connector.switchPointers"),
44535
+ icon: symbolIcon2("connector.switchPointers"),
44389
44536
  target: "selection",
44390
44537
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44391
44538
  },
44392
44539
  {
44393
44540
  id: "connector.style",
44394
44541
  label: "Connector style",
44395
- icon: symbolIcon("connector.style"),
44542
+ icon: symbolIcon2("connector.style"),
44396
44543
  target: "each",
44397
44544
  controls: connectorStyleControls,
44398
44545
  groups: [
44399
44546
  {
44400
44547
  id: "connectorStyle",
44401
44548
  label: "Connector style",
44402
- icon: symbolIcon("connector.style"),
44549
+ icon: symbolIcon2("connector.style"),
44403
44550
  controlIds: connectorStyleControls.map((control) => control.id)
44404
44551
  }
44405
44552
  ]
44406
44553
  }
44554
+ ],
44555
+ sections: [
44556
+ {
44557
+ id: "connectorArrows",
44558
+ label: "Arrows",
44559
+ icon: symbolIcon2("connector.style"),
44560
+ actionIds: ["connector.switchPointers", "connector.style"]
44561
+ }
44407
44562
  ]
44408
44563
  };
44409
44564
  var addConnectorToolOverlay = {
@@ -44424,12 +44579,24 @@ var addConnectorToolOverlay = {
44424
44579
  controls: connectorToolControls,
44425
44580
  groups: [
44426
44581
  {
44427
- id: "connectorToolStyle",
44582
+ id: "connectorToolQuickDefaults",
44583
+ label: "Connector quick defaults",
44584
+ icon: symbolIcon2("connector.lineStyle.straight"),
44585
+ controlIds: ["toolLineStyle"],
44586
+ description: "Primary defaults that match the compact create-surface picker."
44587
+ },
44588
+ {
44589
+ id: "connectorToolAdvancedDefaults",
44428
44590
  label: "Connector defaults",
44429
- icon: symbolIcon("connector.style"),
44430
- controlIds: connectorToolControls.map((control) => control.id)
44591
+ icon: symbolIcon2("connector.style"),
44592
+ controlIds: connectorToolControls.map((control) => control.id),
44593
+ description: "Extended defaults available in richer create flows."
44431
44594
  }
44432
44595
  ]
44596
+ },
44597
+ launch: { kind: "activate-tool" },
44598
+ surface: {
44599
+ order: 8
44433
44600
  }
44434
44601
  };
44435
44602
 
@@ -58567,63 +58734,59 @@ var COLOR_PALETTE2 = [
58567
58734
  "#7B61FF",
58568
58735
  "transparent"
58569
58736
  ];
58570
- var inlineShapeAsset = (folder, file2 = folder) => ({
58571
- kind: "asset",
58572
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
58573
- mimeType: "image/svg+xml"
58574
- });
58575
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
58737
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58738
+ var symbolIcon3 = (key) => overlaySymbolIcon(key);
58576
58739
  var BASIC_INLINE_OPTIONS = [
58577
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
58578
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
58579
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
58580
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
58581
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
58740
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58741
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
58742
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
58743
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
58744
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
58582
58745
  ];
58583
58746
  var SHAPE_CATALOG_OPTIONS = [
58584
58747
  ...BASIC_INLINE_OPTIONS,
58585
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon2("shape.reversedTriangle") },
58586
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
58587
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
58588
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
58589
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon2("shape.arrowBlockLeft") },
58590
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon2("shape.arrowBlockRight") },
58591
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
58592
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
58593
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
58594
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
58595
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
58596
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
58597
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon2("shape.reversedParallelogram") },
58598
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
58599
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon2("shape.predefinedProcess") },
58600
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
58601
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
58602
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
58603
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
58604
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
58605
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon2("shape.bpmn.task") },
58606
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon2("shape.bpmn.gateway") },
58607
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon2("shape.bpmn.gatewayParallel") },
58608
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon2("shape.bpmn.gatewayXor") },
58609
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon2("shape.bpmn.startEvent") },
58610
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.startEventNoneInterrupting") },
58611
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon2("shape.bpmn.endEvent") },
58612
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon2("shape.bpmn.intermediateEvent") },
58613
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon2("shape.bpmn.intermediateEventNoneInterrupting") },
58614
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon2("shape.bpmn.dataObject") },
58615
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon2("shape.bpmn.dataStore") },
58616
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon2("shape.bpmn.participant") },
58617
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon2("shape.bpmn.transaction") },
58618
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon2("shape.bpmn.eventSubprocess") },
58619
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon2("shape.bpmn.group") },
58620
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon2("shape.bpmn.annotation") }
58748
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
58749
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58750
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58751
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58752
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
58753
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
58754
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58755
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58756
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58757
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58758
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58759
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58760
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
58761
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58762
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
58763
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58764
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58765
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58766
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58767
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58768
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
58769
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
58770
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
58771
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
58772
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
58773
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
58774
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
58775
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
58776
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
58777
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
58778
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
58779
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
58780
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
58781
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
58782
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
58783
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
58621
58784
  ];
58622
58785
  var BORDER_STYLE_OPTIONS = [
58623
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon2("stroke.solid") },
58624
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon2("stroke.dot") },
58625
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon2("stroke.dash") },
58626
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon2("stroke.longDash") }
58786
+ { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58787
+ { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58788
+ { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58789
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58627
58790
  ];
58628
58791
  var shapeTypeControl = {
58629
58792
  id: "shapeType",
@@ -58632,6 +58795,12 @@ var shapeTypeControl = {
58632
58795
  editor: {
58633
58796
  kind: "enum-icon",
58634
58797
  options: BASIC_INLINE_OPTIONS,
58798
+ layout: "grid",
58799
+ quickOptions: {
58800
+ family: "basicShapes",
58801
+ maxVisible: 18,
58802
+ overflow: "show-more"
58803
+ },
58635
58804
  catalog: {
58636
58805
  kind: "catalog",
58637
58806
  label: "Shape catalog",
@@ -58646,14 +58815,14 @@ var fillControl = {
58646
58815
  id: "backgroundColor",
58647
58816
  label: "Fill",
58648
58817
  valueSource: { kind: "itemProperty", property: "backgroundColor" },
58649
- icon: {
58650
- kind: "symbol",
58651
- key: "shape.fill",
58652
- state: {
58653
- swatch: { kind: "itemProperty", property: "backgroundColor" },
58654
- note: "UI can render the current fill color as a swatch inside the icon."
58655
- }
58656
- },
58818
+ icon: styleFillIcon({
58819
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
58820
+ note: "UI can render the current fill color as a swatch inside the icon."
58821
+ }),
58822
+ icon: styleFillIcon({
58823
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
58824
+ note: "UI can render the current fill color as a swatch inside the icon."
58825
+ }),
58657
58826
  editor: {
58658
58827
  kind: "color",
58659
58828
  palette: COLOR_PALETTE2,
@@ -58704,7 +58873,7 @@ var shapeOverlay = {
58704
58873
  {
58705
58874
  id: "shape.shapeType",
58706
58875
  label: "Shape type",
58707
- icon: symbolIcon2("shape.type"),
58876
+ icon: symbolIcon3("shape.type"),
58708
58877
  target: "each",
58709
58878
  controls: [shapeTypeControl]
58710
58879
  },
@@ -58718,18 +58887,32 @@ var shapeOverlay = {
58718
58887
  {
58719
58888
  id: "shape.strokeStyle",
58720
58889
  label: "Stroke style",
58721
- icon: symbolIcon2("shape.stroke"),
58890
+ icon: styleStrokeIcon(),
58722
58891
  target: "each",
58723
58892
  controls: strokeControls,
58724
58893
  groups: [
58725
58894
  {
58726
58895
  id: "shapeStrokeStyle",
58727
58896
  label: "Stroke style",
58728
- icon: symbolIcon2("shape.stroke"),
58897
+ icon: styleStrokeIcon(),
58729
58898
  controlIds: strokeControls.map((control) => control.id)
58730
58899
  }
58731
58900
  ]
58732
58901
  }
58902
+ ],
58903
+ sections: [
58904
+ {
58905
+ id: "shapeTypeSection",
58906
+ label: "Type",
58907
+ icon: symbolIcon3("shape.type"),
58908
+ actionIds: ["shape.shapeType"]
58909
+ },
58910
+ {
58911
+ id: "shapeAppearanceSection",
58912
+ label: "Appearance",
58913
+ icon: symbolIcon3("shape.stroke"),
58914
+ actionIds: ["shape.fill", "shape.strokeStyle"]
58915
+ }
58733
58916
  ]
58734
58917
  };
58735
58918
  var addShapeToolOverlay = {
@@ -58739,8 +58922,7 @@ var addShapeToolOverlay = {
58739
58922
  createsItemType: "Shape",
58740
58923
  family: "shape",
58741
58924
  icon: {
58742
- kind: "symbol",
58743
- key: "tool.shape",
58925
+ ...overlaySymbolIcon("tool.shape"),
58744
58926
  state: {
58745
58927
  note: "UI may swap the top-level icon to the selected shape option when desired."
58746
58928
  }
@@ -58754,6 +58936,12 @@ var addShapeToolOverlay = {
58754
58936
  editor: {
58755
58937
  kind: "enum-icon",
58756
58938
  options: BASIC_INLINE_OPTIONS,
58939
+ layout: "grid",
58940
+ quickOptions: {
58941
+ family: "basicShapes",
58942
+ maxVisible: 18,
58943
+ overflow: "show-more"
58944
+ },
58757
58945
  catalog: {
58758
58946
  kind: "catalog",
58759
58947
  label: "Shape catalog",
@@ -58764,6 +58952,10 @@ var addShapeToolOverlay = {
58764
58952
  invoke: { kind: "toolProperty", property: "type" }
58765
58953
  }
58766
58954
  ]
58955
+ },
58956
+ launch: { kind: "activate-tool" },
58957
+ surface: {
58958
+ order: 7
58767
58959
  }
58768
58960
  };
58769
58961
 
@@ -63170,14 +63362,14 @@ var cardOverlay = {
63170
63362
  {
63171
63363
  id: "card.flip",
63172
63364
  label: "Flip card",
63173
- icon: { kind: "symbol", key: "card.flip" },
63365
+ icon: overlaySymbolIcon("card.flip"),
63174
63366
  target: "each",
63175
63367
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
63176
63368
  },
63177
63369
  {
63178
63370
  id: "card.rotateCcw",
63179
63371
  label: "Rotate 90 counter clockwise",
63180
- icon: { kind: "symbol", key: "card.rotateCcw" },
63372
+ icon: overlaySymbolIcon("card.rotateCcw"),
63181
63373
  target: "each",
63182
63374
  invoke: {
63183
63375
  kind: "customMethod",
@@ -63188,7 +63380,7 @@ var cardOverlay = {
63188
63380
  {
63189
63381
  id: "card.rotateCw",
63190
63382
  label: "Rotate 90 clockwise",
63191
- icon: { kind: "symbol", key: "card.rotateCw" },
63383
+ icon: overlaySymbolIcon("card.rotateCw"),
63192
63384
  target: "each",
63193
63385
  invoke: {
63194
63386
  kind: "customMethod",
@@ -63442,28 +63634,28 @@ var deckOverlay = {
63442
63634
  {
63443
63635
  id: "deck.getTopCard",
63444
63636
  label: "Draw top card",
63445
- icon: { kind: "symbol", key: "deck.drawTop" },
63637
+ icon: overlaySymbolIcon("deck.drawTop"),
63446
63638
  target: "single",
63447
63639
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63448
63640
  },
63449
63641
  {
63450
63642
  id: "deck.getBottomCard",
63451
63643
  label: "Draw bottom card",
63452
- icon: { kind: "symbol", key: "deck.drawBottom" },
63644
+ icon: overlaySymbolIcon("deck.drawBottom"),
63453
63645
  target: "single",
63454
63646
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63455
63647
  },
63456
63648
  {
63457
63649
  id: "deck.getRandomCard",
63458
63650
  label: "Draw random card",
63459
- icon: { kind: "symbol", key: "deck.drawRandom" },
63651
+ icon: overlaySymbolIcon("deck.drawRandom"),
63460
63652
  target: "single",
63461
63653
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63462
63654
  },
63463
63655
  {
63464
63656
  id: "deck.getCards",
63465
63657
  label: "Draw cards",
63466
- icon: { kind: "symbol", key: "deck.drawMany" },
63658
+ icon: overlaySymbolIcon("deck.drawMany"),
63467
63659
  target: "single",
63468
63660
  controls: [
63469
63661
  {
@@ -63485,14 +63677,14 @@ var deckOverlay = {
63485
63677
  {
63486
63678
  id: "deck.shuffle",
63487
63679
  label: "Shuffle",
63488
- icon: { kind: "symbol", key: "deck.shuffle" },
63680
+ icon: overlaySymbolIcon("deck.shuffle"),
63489
63681
  target: "single",
63490
63682
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63491
63683
  },
63492
63684
  {
63493
63685
  id: "deck.flip",
63494
63686
  label: "Flip deck",
63495
- icon: { kind: "symbol", key: "deck.flip" },
63687
+ icon: overlaySymbolIcon("deck.flip"),
63496
63688
  target: "single",
63497
63689
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63498
63690
  }
@@ -63501,7 +63693,7 @@ var deckOverlay = {
63501
63693
  var createDeckSelectionAction = {
63502
63694
  id: "deck.createFromSelection",
63503
63695
  label: "Create deck",
63504
- icon: { kind: "symbol", key: "deck.createFromSelection" },
63696
+ icon: overlaySymbolIcon("deck.createFromSelection"),
63505
63697
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63506
63698
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63507
63699
  isAvailable: (items) => {
@@ -64070,14 +64262,14 @@ var diceOverlay = {
64070
64262
  {
64071
64263
  id: "dice.throw",
64072
64264
  label: "Throw dice",
64073
- icon: { kind: "symbol", key: "dice.throw" },
64265
+ icon: overlaySymbolIcon("dice.throw"),
64074
64266
  target: "each",
64075
64267
  invoke: { kind: "customMethod", methodName: "throwDice" }
64076
64268
  },
64077
64269
  {
64078
64270
  id: "dice.range",
64079
64271
  label: "Range",
64080
- icon: { kind: "symbol", key: "dice.range" },
64272
+ icon: overlaySymbolIcon("dice.range"),
64081
64273
  target: "each",
64082
64274
  controls: [
64083
64275
  {
@@ -64099,11 +64291,9 @@ var diceOverlay = {
64099
64291
  {
64100
64292
  id: "dice.fill",
64101
64293
  label: "Fill",
64102
- icon: {
64103
- kind: "symbol",
64104
- key: "shape.fill",
64105
- state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64106
- },
64294
+ icon: styleFillIcon({
64295
+ swatch: { kind: "itemProperty", property: "backgroundColor" }
64296
+ }),
64107
64297
  target: "each",
64108
64298
  controls: [
64109
64299
  {
@@ -64115,6 +64305,14 @@ var diceOverlay = {
64115
64305
  }
64116
64306
  ]
64117
64307
  }
64308
+ ],
64309
+ sections: [
64310
+ {
64311
+ id: "diceActions",
64312
+ label: "Dice",
64313
+ icon: overlaySymbolIcon("dice.throw"),
64314
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
64315
+ }
64118
64316
  ]
64119
64317
  };
64120
64318
  var addDiceToolOverlay = {
@@ -64123,7 +64321,19 @@ var addDiceToolOverlay = {
64123
64321
  kind: "create",
64124
64322
  createsItemType: "Dice",
64125
64323
  family: "game",
64126
- icon: { kind: "symbol", key: "tool.dice" }
64324
+ icon: overlaySymbolIcon("tool.dice"),
64325
+ launch: { kind: "activate-tool" },
64326
+ surface: {
64327
+ order: 1,
64328
+ group: {
64329
+ id: "gameItems",
64330
+ label: "Game items",
64331
+ icon: overlaySymbolIcon("tool.dice"),
64332
+ order: 1,
64333
+ behavior: "open-panel"
64334
+ },
64335
+ relatedToolNames: ["AddScreen", "AddPouch"]
64336
+ }
64127
64337
  };
64128
64338
 
64129
64339
  // src/Items/Dice/Dice.ts
@@ -64471,8 +64681,7 @@ var screenOverlay = {
64471
64681
  id: "screen.background",
64472
64682
  label: "Background",
64473
64683
  icon: {
64474
- kind: "symbol",
64475
- key: "screen.background",
64684
+ ...overlaySymbolIcon("screen.background"),
64476
64685
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64477
64686
  },
64478
64687
  target: "each",
@@ -64489,6 +64698,97 @@ var screenOverlay = {
64489
64698
  invoke: { kind: "setProperty", property: "backgroundColor" }
64490
64699
  }
64491
64700
  ]
64701
+ },
64702
+ {
64703
+ id: "screen.stroke",
64704
+ label: "Stroke",
64705
+ icon: {
64706
+ ...overlaySymbolIcon("shape.stroke"),
64707
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64708
+ },
64709
+ target: "each",
64710
+ controls: [
64711
+ {
64712
+ id: "borderColor",
64713
+ label: "Border color",
64714
+ valueSource: { kind: "itemProperty", property: "borderColor" },
64715
+ editor: {
64716
+ kind: "color",
64717
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
64718
+ allowTransparent: true,
64719
+ presentation: "square"
64720
+ },
64721
+ invoke: { kind: "setProperty", property: "borderColor" }
64722
+ },
64723
+ {
64724
+ id: "borderWidth",
64725
+ label: "Border width",
64726
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
64727
+ editor: {
64728
+ kind: "number-stepper",
64729
+ min: 0,
64730
+ max: 8,
64731
+ step: 1,
64732
+ presets: [0, 1, 2, 4],
64733
+ unit: "px"
64734
+ },
64735
+ invoke: { kind: "setProperty", property: "borderWidth" }
64736
+ }
64737
+ ],
64738
+ groups: [
64739
+ {
64740
+ id: "screenStrokeStyle",
64741
+ label: "Stroke",
64742
+ icon: overlaySymbolIcon("shape.stroke"),
64743
+ controlIds: ["borderColor", "borderWidth"]
64744
+ }
64745
+ ]
64746
+ },
64747
+ {
64748
+ id: "screen.backgroundImage",
64749
+ label: "Background image",
64750
+ icon: overlaySymbolIcon("screen.backgroundImage"),
64751
+ target: "each",
64752
+ when: {
64753
+ kind: "falsy",
64754
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64755
+ },
64756
+ controls: [
64757
+ {
64758
+ id: "backgroundUrl",
64759
+ label: "Background image",
64760
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
64761
+ editor: {
64762
+ kind: "asset-upload",
64763
+ mode: "single",
64764
+ accept: ["image/*"]
64765
+ },
64766
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
64767
+ }
64768
+ ]
64769
+ },
64770
+ {
64771
+ id: "screen.removeBackgroundImage",
64772
+ label: "Remove background image",
64773
+ icon: overlaySymbolIcon("screen.backgroundImage.remove"),
64774
+ target: "each",
64775
+ when: {
64776
+ kind: "truthy",
64777
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64778
+ },
64779
+ invoke: {
64780
+ kind: "customMethod",
64781
+ methodName: "setBackgroundUrl",
64782
+ args: [{ kind: "static", value: "" }]
64783
+ }
64784
+ }
64785
+ ],
64786
+ sections: [
64787
+ {
64788
+ id: "screenAppearance",
64789
+ label: "Appearance",
64790
+ icon: overlaySymbolIcon("screen.background"),
64791
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64492
64792
  }
64493
64793
  ]
64494
64794
  };
@@ -64498,7 +64798,19 @@ var addScreenToolOverlay = {
64498
64798
  kind: "create",
64499
64799
  createsItemType: "Screen",
64500
64800
  family: "container",
64501
- icon: { kind: "symbol", key: "tool.screen" }
64801
+ icon: overlaySymbolIcon("tool.screen"),
64802
+ launch: { kind: "activate-tool" },
64803
+ surface: {
64804
+ order: 2,
64805
+ group: {
64806
+ id: "gameItems",
64807
+ label: "Game items",
64808
+ icon: overlaySymbolIcon("tool.dice"),
64809
+ order: 1,
64810
+ behavior: "open-panel"
64811
+ },
64812
+ relatedToolNames: ["AddDice", "AddPouch"]
64813
+ }
64502
64814
  };
64503
64815
  var addPouchToolOverlay = {
64504
64816
  toolName: "AddPouch",
@@ -64506,7 +64818,19 @@ var addPouchToolOverlay = {
64506
64818
  kind: "create",
64507
64819
  createsItemType: "Screen",
64508
64820
  family: "container",
64509
- icon: { kind: "symbol", key: "tool.pouch" }
64821
+ icon: overlaySymbolIcon("tool.pouch"),
64822
+ launch: { kind: "activate-tool" },
64823
+ surface: {
64824
+ order: 3,
64825
+ group: {
64826
+ id: "gameItems",
64827
+ label: "Game items",
64828
+ icon: overlaySymbolIcon("tool.dice"),
64829
+ order: 1,
64830
+ behavior: "open-panel"
64831
+ },
64832
+ relatedToolNames: ["AddDice", "AddScreen"]
64833
+ }
64510
64834
  };
64511
64835
 
64512
64836
  // src/Items/Screen/Screen.ts
@@ -72466,8 +72790,7 @@ var addDrawingToolOverlay = {
72466
72790
  family: "drawing",
72467
72791
  createsItemType: "Drawing",
72468
72792
  icon: {
72469
- kind: "symbol",
72470
- key: "tool.pen",
72793
+ ...overlaySymbolIcon("tool.pen"),
72471
72794
  state: {
72472
72795
  swatch: { kind: "toolProperty", property: "strokeColor" },
72473
72796
  note: "UI can show the pending pen color in the icon."
@@ -72479,10 +72802,22 @@ var addDrawingToolOverlay = {
72479
72802
  {
72480
72803
  id: "drawingDefaults",
72481
72804
  label: "Pen defaults",
72482
- icon: { kind: "symbol", key: "tool.pen" },
72805
+ icon: overlaySymbolIcon("tool.pen"),
72483
72806
  controlIds: strokeControls2.map((control) => control.id)
72484
72807
  }
72485
72808
  ]
72809
+ },
72810
+ launch: { kind: "activate-tool" },
72811
+ surface: {
72812
+ order: 1,
72813
+ group: {
72814
+ id: "drawingTools",
72815
+ label: "Drawing",
72816
+ icon: overlaySymbolIcon("tool.pen"),
72817
+ order: 5,
72818
+ behavior: "activate-last-used"
72819
+ },
72820
+ relatedToolNames: ["AddHighlighter", "Eraser"]
72486
72821
  }
72487
72822
  };
72488
72823
  var addHighlighterToolOverlay = {
@@ -72492,8 +72827,7 @@ var addHighlighterToolOverlay = {
72492
72827
  family: "drawing",
72493
72828
  createsItemType: "Drawing",
72494
72829
  icon: {
72495
- kind: "symbol",
72496
- key: "tool.highlighter",
72830
+ ...overlaySymbolIcon("tool.highlighter"),
72497
72831
  state: {
72498
72832
  swatch: { kind: "toolProperty", property: "strokeColor" },
72499
72833
  note: "UI can show the pending highlighter color in the icon."
@@ -72505,10 +72839,22 @@ var addHighlighterToolOverlay = {
72505
72839
  {
72506
72840
  id: "highlighterDefaults",
72507
72841
  label: "Highlighter defaults",
72508
- icon: { kind: "symbol", key: "tool.highlighter" },
72842
+ icon: overlaySymbolIcon("tool.highlighter"),
72509
72843
  controlIds: strokeControls2.map((control) => control.id)
72510
72844
  }
72511
72845
  ]
72846
+ },
72847
+ launch: { kind: "activate-tool" },
72848
+ surface: {
72849
+ order: 2,
72850
+ group: {
72851
+ id: "drawingTools",
72852
+ label: "Drawing",
72853
+ icon: overlaySymbolIcon("tool.pen"),
72854
+ order: 5,
72855
+ behavior: "activate-last-used"
72856
+ },
72857
+ relatedToolNames: ["AddDrawing", "Eraser"]
72512
72858
  }
72513
72859
  };
72514
72860
  var eraserToolOverlay = {
@@ -72516,7 +72862,7 @@ var eraserToolOverlay = {
72516
72862
  label: "Eraser",
72517
72863
  kind: "mode",
72518
72864
  family: "drawing",
72519
- icon: { kind: "symbol", key: "tool.eraser" },
72865
+ icon: overlaySymbolIcon("tool.eraser"),
72520
72866
  defaults: {
72521
72867
  controls: [
72522
72868
  {
@@ -72533,6 +72879,18 @@ var eraserToolOverlay = {
72533
72879
  invoke: { kind: "toolProperty", property: "strokeWidth" }
72534
72880
  }
72535
72881
  ]
72882
+ },
72883
+ launch: { kind: "activate-tool" },
72884
+ surface: {
72885
+ order: 3,
72886
+ group: {
72887
+ id: "drawingTools",
72888
+ label: "Drawing",
72889
+ icon: overlaySymbolIcon("tool.pen"),
72890
+ order: 5,
72891
+ behavior: "activate-last-used"
72892
+ },
72893
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
72536
72894
  }
72537
72895
  };
72538
72896
 
@@ -72733,7 +73091,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72733
73091
  id: frameType,
72734
73092
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72735
73093
  value: frameType,
72736
- icon: { kind: "symbol", key: `frame.${frameType}` }
73094
+ icon: overlaySymbolIcon(`frame.${frameType}`)
72737
73095
  }));
72738
73096
  var addFrameToolOverlay = {
72739
73097
  toolName: "AddFrame",
@@ -72741,7 +73099,7 @@ var addFrameToolOverlay = {
72741
73099
  kind: "create",
72742
73100
  createsItemType: "Frame",
72743
73101
  family: "frame",
72744
- icon: { kind: "symbol", key: "tool.frame" },
73102
+ icon: overlaySymbolIcon("tool.frame"),
72745
73103
  defaults: {
72746
73104
  controls: [
72747
73105
  {
@@ -72755,6 +73113,10 @@ var addFrameToolOverlay = {
72755
73113
  invoke: { kind: "toolProperty", property: "shape" }
72756
73114
  }
72757
73115
  ]
73116
+ },
73117
+ launch: { kind: "activate-tool" },
73118
+ surface: {
73119
+ order: 10
72758
73120
  }
72759
73121
  };
72760
73122
 
@@ -73119,8 +73481,7 @@ var addStickerToolOverlay = {
73119
73481
  createsItemType: "Sticker",
73120
73482
  family: "sticker",
73121
73483
  icon: {
73122
- kind: "symbol",
73123
- key: "tool.sticker",
73484
+ ...overlaySymbolIcon("tool.sticker"),
73124
73485
  state: {
73125
73486
  swatch: { kind: "toolProperty", property: "backgroundColor" }
73126
73487
  }
@@ -73131,10 +73492,14 @@ var addStickerToolOverlay = {
73131
73492
  id: "stickerBackgroundColor",
73132
73493
  label: "Color",
73133
73494
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
73134
- editor: { kind: "color", palette: STICKER_COLORS },
73495
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
73135
73496
  invoke: { kind: "toolProperty", property: "backgroundColor" }
73136
73497
  }
73137
73498
  ]
73499
+ },
73500
+ launch: { kind: "activate-tool" },
73501
+ surface: {
73502
+ order: 9
73138
73503
  }
73139
73504
  };
73140
73505