microboard-temp 0.14.18 → 0.14.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11498,6 +11498,23 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11498
11498
  return op;
11499
11499
  }
11500
11500
  }
11501
+ // src/Overlay/IconPack.ts
11502
+ var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11503
+ function overlaySymbolIcon(key) {
11504
+ return {
11505
+ kind: "symbol",
11506
+ key,
11507
+ sourcePath: OVERLAY_ICON_SPRITE_PATH
11508
+ };
11509
+ }
11510
+ function overlayAssetIcon(path2) {
11511
+ return {
11512
+ kind: "asset",
11513
+ path: path2,
11514
+ mimeType: "image/svg+xml"
11515
+ };
11516
+ }
11517
+
11501
11518
  // src/Overlay/OverlayIcons.ts
11502
11519
  var OVERLAY_SYMBOL_KEYS = {
11503
11520
  styleFill: "style.fill",
@@ -11506,7 +11523,7 @@ var OVERLAY_SYMBOL_KEYS = {
11506
11523
  styleFontSize: "style.fontSize"
11507
11524
  };
11508
11525
  function symbolIcon(key, state) {
11509
- return state ? { kind: "symbol", key, state } : { kind: "symbol", key };
11526
+ return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11510
11527
  }
11511
11528
  function styleFillIcon(state) {
11512
11529
  return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
@@ -11547,6 +11564,45 @@ function getToolOverlay(toolName) {
11547
11564
  function listToolOverlays() {
11548
11565
  return Object.values(toolOverlays);
11549
11566
  }
11567
+ function listCreateSurfaceEntries() {
11568
+ const groupedEntries = new Map;
11569
+ const ungroupedEntries = [];
11570
+ for (const tool of Object.values(toolOverlays)) {
11571
+ const group = tool.surface?.group;
11572
+ if (!group) {
11573
+ ungroupedEntries.push({
11574
+ kind: "tool",
11575
+ tool,
11576
+ order: tool.surface?.order
11577
+ });
11578
+ continue;
11579
+ }
11580
+ const existing = groupedEntries.get(group.id);
11581
+ if (existing) {
11582
+ existing.tools.push(tool);
11583
+ if (existing.order === undefined && group.order !== undefined) {
11584
+ existing.order = group.order;
11585
+ }
11586
+ continue;
11587
+ }
11588
+ groupedEntries.set(group.id, {
11589
+ kind: "group",
11590
+ id: group.id,
11591
+ label: group.label,
11592
+ description: group.description,
11593
+ icon: group.icon,
11594
+ order: group.order,
11595
+ behavior: group.behavior,
11596
+ tools: [tool]
11597
+ });
11598
+ }
11599
+ const sortedGroups = [...groupedEntries.values()].map((group) => ({
11600
+ ...group,
11601
+ tools: [...group.tools].sort(compareToolsBySurfaceOrder)
11602
+ })).sort(compareEntriesByOrder);
11603
+ const sortedUngroupedEntries = [...ungroupedEntries].sort(compareEntriesByOrder);
11604
+ return [...sortedGroups, ...sortedUngroupedEntries];
11605
+ }
11550
11606
  function listSelectionActions() {
11551
11607
  return Object.values(selectionActions);
11552
11608
  }
@@ -11556,6 +11612,33 @@ function getSelectionOverlayActions(items) {
11556
11612
  function resolveDynamicOptions(providerId, context) {
11557
11613
  return dynamicOptionsResolvers[providerId]?.(context) ?? [];
11558
11614
  }
11615
+ function matchesOverlayCondition(condition, context) {
11616
+ if (!condition) {
11617
+ return true;
11618
+ }
11619
+ switch (condition.kind) {
11620
+ case "equals":
11621
+ return readOverlayValueSource(context, condition.source) === condition.value;
11622
+ case "truthy":
11623
+ return !!readOverlayValueSource(context, condition.source);
11624
+ case "falsy":
11625
+ return !readOverlayValueSource(context, condition.source);
11626
+ case "itemTypeIn":
11627
+ return context.items?.every((item) => condition.itemTypes.includes(item.itemType)) ?? (context.item ? condition.itemTypes.includes(context.item.itemType) : false);
11628
+ case "selectionSize": {
11629
+ const size = context.items?.length ?? (context.item ? 1 : 0);
11630
+ const meetsMin = condition.min === undefined || size >= condition.min;
11631
+ const meetsMax = condition.max === undefined || size <= condition.max;
11632
+ return meetsMin && meetsMax;
11633
+ }
11634
+ case "allOf":
11635
+ return condition.conditions.every((child) => matchesOverlayCondition(child, context));
11636
+ case "anyOf":
11637
+ return condition.conditions.some((child) => matchesOverlayCondition(child, context));
11638
+ case "not":
11639
+ return !matchesOverlayCondition(condition.condition, context);
11640
+ }
11641
+ }
11559
11642
  function intersectOverlayActions(items) {
11560
11643
  if (items.length === 0) {
11561
11644
  return [];
@@ -11574,6 +11657,24 @@ function intersectOverlayActions(items) {
11574
11657
  }
11575
11658
  return [...counts.values()].filter((action) => overlays.every((overlay) => overlay.actions.some((candidate) => candidate.id === action.id)) && (action.target !== "single" || items.length === 1));
11576
11659
  }
11660
+ function compareToolsBySurfaceOrder(a, b) {
11661
+ const aOrder = a.surface?.order ?? Number.MAX_SAFE_INTEGER;
11662
+ const bOrder = b.surface?.order ?? Number.MAX_SAFE_INTEGER;
11663
+ return aOrder - bOrder || a.label.localeCompare(b.label);
11664
+ }
11665
+ function compareEntriesByOrder(a, b) {
11666
+ const aOrder = a.order ?? Number.MAX_SAFE_INTEGER;
11667
+ const bOrder = b.order ?? Number.MAX_SAFE_INTEGER;
11668
+ const aLabel = a.label ?? a.tool?.label ?? "";
11669
+ const bLabel = b.label ?? b.tool?.label ?? "";
11670
+ return aOrder - bOrder || aLabel.localeCompare(bLabel);
11671
+ }
11672
+ function readOverlayValueSource(context, source) {
11673
+ if (source.kind === "itemProperty") {
11674
+ return context.item ? context.item[source.property] : undefined;
11675
+ }
11676
+ return context.tool ? context.tool[source.property] : undefined;
11677
+ }
11577
11678
  // src/Items/BaseItem/BaseItem.ts
11578
11679
  class BaseItem {
11579
11680
  static createCommand;
@@ -37558,6 +37659,7 @@ var richTextOverlay = {
37558
37659
  id: "text.fontSize",
37559
37660
  label: "Font size",
37560
37661
  icon: styleFontSizeIcon(),
37662
+ icon: styleFontSizeIcon(),
37561
37663
  target: "each",
37562
37664
  controls: [
37563
37665
  {
@@ -37575,6 +37677,14 @@ var richTextOverlay = {
37575
37677
  }
37576
37678
  ]
37577
37679
  }
37680
+ ],
37681
+ sections: [
37682
+ {
37683
+ id: "textTypography",
37684
+ label: "Typography",
37685
+ icon: overlaySymbolIcon("text.fontSize"),
37686
+ actionIds: ["text.fontSize"]
37687
+ }
37578
37688
  ]
37579
37689
  };
37580
37690
  var addTextToolOverlay = {
@@ -37583,8 +37693,12 @@ var addTextToolOverlay = {
37583
37693
  kind: "create",
37584
37694
  createsItemType: "RichText",
37585
37695
  family: "text",
37586
- icon: { kind: "symbol", key: "tool.text" },
37587
- description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool."
37696
+ icon: overlaySymbolIcon("tool.text"),
37697
+ description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37698
+ launch: { kind: "activate-tool" },
37699
+ surface: {
37700
+ order: 6
37701
+ }
37588
37702
  };
37589
37703
 
37590
37704
  // src/Items/RichText/RichText.ts
@@ -44054,7 +44168,7 @@ var COLOR_PALETTE = [
44054
44168
  "#118AB2",
44055
44169
  "#7B61FF"
44056
44170
  ];
44057
- var symbolIcon2 = (key) => ({ kind: "symbol", key });
44171
+ var symbolIcon2 = (key) => overlaySymbolIcon(key);
44058
44172
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44059
44173
  id: style,
44060
44174
  label: style[0].toUpperCase() + style.slice(1),
@@ -44221,6 +44335,14 @@ var connectorOverlay = {
44221
44335
  }
44222
44336
  ]
44223
44337
  }
44338
+ ],
44339
+ sections: [
44340
+ {
44341
+ id: "connectorArrows",
44342
+ label: "Arrows",
44343
+ icon: symbolIcon2("connector.style"),
44344
+ actionIds: ["connector.switchPointers", "connector.style"]
44345
+ }
44224
44346
  ]
44225
44347
  };
44226
44348
  var addConnectorToolOverlay = {
@@ -44241,12 +44363,24 @@ var addConnectorToolOverlay = {
44241
44363
  controls: connectorToolControls,
44242
44364
  groups: [
44243
44365
  {
44244
- id: "connectorToolStyle",
44366
+ id: "connectorToolQuickDefaults",
44367
+ label: "Connector quick defaults",
44368
+ icon: symbolIcon2("connector.lineStyle.straight"),
44369
+ controlIds: ["toolLineStyle"],
44370
+ description: "Primary defaults that match the compact create-surface picker."
44371
+ },
44372
+ {
44373
+ id: "connectorToolAdvancedDefaults",
44245
44374
  label: "Connector defaults",
44246
44375
  icon: symbolIcon2("connector.style"),
44247
- controlIds: connectorToolControls.map((control) => control.id)
44376
+ controlIds: connectorToolControls.map((control) => control.id),
44377
+ description: "Extended defaults available in richer create flows."
44248
44378
  }
44249
44379
  ]
44380
+ },
44381
+ launch: { kind: "activate-tool" },
44382
+ surface: {
44383
+ order: 8
44250
44384
  }
44251
44385
  };
44252
44386
 
@@ -58384,57 +58518,53 @@ var COLOR_PALETTE2 = [
58384
58518
  "#7B61FF",
58385
58519
  "transparent"
58386
58520
  ];
58387
- var inlineShapeAsset = (folder, file2 = folder) => ({
58388
- kind: "asset",
58389
- path: `src/Items/Shape/Basic/${folder}/${file2}.icon.svg`,
58390
- mimeType: "image/svg+xml"
58391
- });
58392
- var symbolIcon3 = (key) => ({ kind: "symbol", key });
58521
+ var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58522
+ var symbolIcon3 = (key) => overlaySymbolIcon(key);
58393
58523
  var BASIC_INLINE_OPTIONS = [
58394
- { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle") },
58395
- { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle") },
58396
- { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle") },
58397
- { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle") },
58398
- { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus") }
58524
+ { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58525
+ { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
58526
+ { id: "circle", label: "Circle", value: "Circle", icon: inlineShapeAsset("Circle"), family: "basicShapes" },
58527
+ { id: "triangle", label: "Triangle", value: "Triangle", icon: inlineShapeAsset("Triangle"), family: "basicShapes" },
58528
+ { id: "rhombus", label: "Rhombus", value: "Rhombus", icon: inlineShapeAsset("Rhombus"), family: "basicShapes" }
58399
58529
  ];
58400
58530
  var SHAPE_CATALOG_OPTIONS = [
58401
58531
  ...BASIC_INLINE_OPTIONS,
58402
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle") },
58403
- { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft") },
58404
- { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight") },
58405
- { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight") },
58406
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft") },
58407
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight") },
58408
- { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud") },
58409
- { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross") },
58410
- { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder") },
58411
- { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon") },
58412
- { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon") },
58413
- { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram") },
58414
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram") },
58415
- { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon") },
58416
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess") },
58417
- { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble") },
58418
- { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star") },
58419
- { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid") },
58420
- { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft") },
58421
- { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight") },
58422
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task") },
58423
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway") },
58424
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel") },
58425
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor") },
58426
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent") },
58427
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting") },
58428
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent") },
58429
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent") },
58430
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting") },
58431
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject") },
58432
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore") },
58433
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant") },
58434
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction") },
58435
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess") },
58436
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group") },
58437
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation") }
58532
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
58533
+ { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58534
+ { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58535
+ { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58536
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
58537
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
58538
+ { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58539
+ { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58540
+ { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58541
+ { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58542
+ { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58543
+ { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58544
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
58545
+ { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58546
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
58547
+ { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58548
+ { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58549
+ { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58550
+ { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58551
+ { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58552
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
58553
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
58554
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
58555
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
58556
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
58557
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
58558
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
58559
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
58560
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
58561
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
58562
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
58563
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
58564
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
58565
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
58566
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
58567
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
58438
58568
  ];
58439
58569
  var BORDER_STYLE_OPTIONS = [
58440
58570
  { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
@@ -58449,6 +58579,12 @@ var shapeTypeControl = {
58449
58579
  editor: {
58450
58580
  kind: "enum-icon",
58451
58581
  options: BASIC_INLINE_OPTIONS,
58582
+ layout: "grid",
58583
+ quickOptions: {
58584
+ family: "basicShapes",
58585
+ maxVisible: 18,
58586
+ overflow: "show-more"
58587
+ },
58452
58588
  catalog: {
58453
58589
  kind: "catalog",
58454
58590
  label: "Shape catalog",
@@ -58467,6 +58603,10 @@ var fillControl = {
58467
58603
  swatch: { kind: "itemProperty", property: "backgroundColor" },
58468
58604
  note: "UI can render the current fill color as a swatch inside the icon."
58469
58605
  }),
58606
+ icon: styleFillIcon({
58607
+ swatch: { kind: "itemProperty", property: "backgroundColor" },
58608
+ note: "UI can render the current fill color as a swatch inside the icon."
58609
+ }),
58470
58610
  editor: {
58471
58611
  kind: "color",
58472
58612
  palette: COLOR_PALETTE2,
@@ -58543,6 +58683,20 @@ var shapeOverlay = {
58543
58683
  }
58544
58684
  ]
58545
58685
  }
58686
+ ],
58687
+ sections: [
58688
+ {
58689
+ id: "shapeTypeSection",
58690
+ label: "Type",
58691
+ icon: symbolIcon3("shape.type"),
58692
+ actionIds: ["shape.shapeType"]
58693
+ },
58694
+ {
58695
+ id: "shapeAppearanceSection",
58696
+ label: "Appearance",
58697
+ icon: symbolIcon3("shape.stroke"),
58698
+ actionIds: ["shape.fill", "shape.strokeStyle"]
58699
+ }
58546
58700
  ]
58547
58701
  };
58548
58702
  var addShapeToolOverlay = {
@@ -58552,8 +58706,7 @@ var addShapeToolOverlay = {
58552
58706
  createsItemType: "Shape",
58553
58707
  family: "shape",
58554
58708
  icon: {
58555
- kind: "symbol",
58556
- key: "tool.shape",
58709
+ ...overlaySymbolIcon("tool.shape"),
58557
58710
  state: {
58558
58711
  note: "UI may swap the top-level icon to the selected shape option when desired."
58559
58712
  }
@@ -58567,6 +58720,12 @@ var addShapeToolOverlay = {
58567
58720
  editor: {
58568
58721
  kind: "enum-icon",
58569
58722
  options: BASIC_INLINE_OPTIONS,
58723
+ layout: "grid",
58724
+ quickOptions: {
58725
+ family: "basicShapes",
58726
+ maxVisible: 18,
58727
+ overflow: "show-more"
58728
+ },
58570
58729
  catalog: {
58571
58730
  kind: "catalog",
58572
58731
  label: "Shape catalog",
@@ -58577,6 +58736,10 @@ var addShapeToolOverlay = {
58577
58736
  invoke: { kind: "toolProperty", property: "type" }
58578
58737
  }
58579
58738
  ]
58739
+ },
58740
+ launch: { kind: "activate-tool" },
58741
+ surface: {
58742
+ order: 7
58580
58743
  }
58581
58744
  };
58582
58745
 
@@ -62983,14 +63146,14 @@ var cardOverlay = {
62983
63146
  {
62984
63147
  id: "card.flip",
62985
63148
  label: "Flip card",
62986
- icon: { kind: "symbol", key: "card.flip" },
63149
+ icon: overlaySymbolIcon("card.flip"),
62987
63150
  target: "each",
62988
63151
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
62989
63152
  },
62990
63153
  {
62991
63154
  id: "card.rotateCcw",
62992
63155
  label: "Rotate 90 counter clockwise",
62993
- icon: { kind: "symbol", key: "card.rotateCcw" },
63156
+ icon: overlaySymbolIcon("card.rotateCcw"),
62994
63157
  target: "each",
62995
63158
  invoke: {
62996
63159
  kind: "customMethod",
@@ -63001,7 +63164,7 @@ var cardOverlay = {
63001
63164
  {
63002
63165
  id: "card.rotateCw",
63003
63166
  label: "Rotate 90 clockwise",
63004
- icon: { kind: "symbol", key: "card.rotateCw" },
63167
+ icon: overlaySymbolIcon("card.rotateCw"),
63005
63168
  target: "each",
63006
63169
  invoke: {
63007
63170
  kind: "customMethod",
@@ -63255,28 +63418,28 @@ var deckOverlay = {
63255
63418
  {
63256
63419
  id: "deck.getTopCard",
63257
63420
  label: "Draw top card",
63258
- icon: { kind: "symbol", key: "deck.drawTop" },
63421
+ icon: overlaySymbolIcon("deck.drawTop"),
63259
63422
  target: "single",
63260
63423
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63261
63424
  },
63262
63425
  {
63263
63426
  id: "deck.getBottomCard",
63264
63427
  label: "Draw bottom card",
63265
- icon: { kind: "symbol", key: "deck.drawBottom" },
63428
+ icon: overlaySymbolIcon("deck.drawBottom"),
63266
63429
  target: "single",
63267
63430
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63268
63431
  },
63269
63432
  {
63270
63433
  id: "deck.getRandomCard",
63271
63434
  label: "Draw random card",
63272
- icon: { kind: "symbol", key: "deck.drawRandom" },
63435
+ icon: overlaySymbolIcon("deck.drawRandom"),
63273
63436
  target: "single",
63274
63437
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63275
63438
  },
63276
63439
  {
63277
63440
  id: "deck.getCards",
63278
63441
  label: "Draw cards",
63279
- icon: { kind: "symbol", key: "deck.drawMany" },
63442
+ icon: overlaySymbolIcon("deck.drawMany"),
63280
63443
  target: "single",
63281
63444
  controls: [
63282
63445
  {
@@ -63298,14 +63461,14 @@ var deckOverlay = {
63298
63461
  {
63299
63462
  id: "deck.shuffle",
63300
63463
  label: "Shuffle",
63301
- icon: { kind: "symbol", key: "deck.shuffle" },
63464
+ icon: overlaySymbolIcon("deck.shuffle"),
63302
63465
  target: "single",
63303
63466
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63304
63467
  },
63305
63468
  {
63306
63469
  id: "deck.flip",
63307
63470
  label: "Flip deck",
63308
- icon: { kind: "symbol", key: "deck.flip" },
63471
+ icon: overlaySymbolIcon("deck.flip"),
63309
63472
  target: "single",
63310
63473
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63311
63474
  }
@@ -63314,7 +63477,7 @@ var deckOverlay = {
63314
63477
  var createDeckSelectionAction = {
63315
63478
  id: "deck.createFromSelection",
63316
63479
  label: "Create deck",
63317
- icon: { kind: "symbol", key: "deck.createFromSelection" },
63480
+ icon: overlaySymbolIcon("deck.createFromSelection"),
63318
63481
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63319
63482
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63320
63483
  isAvailable: (items) => {
@@ -63883,14 +64046,14 @@ var diceOverlay = {
63883
64046
  {
63884
64047
  id: "dice.throw",
63885
64048
  label: "Throw dice",
63886
- icon: { kind: "symbol", key: "dice.throw" },
64049
+ icon: overlaySymbolIcon("dice.throw"),
63887
64050
  target: "each",
63888
64051
  invoke: { kind: "customMethod", methodName: "throwDice" }
63889
64052
  },
63890
64053
  {
63891
64054
  id: "dice.range",
63892
64055
  label: "Range",
63893
- icon: { kind: "symbol", key: "dice.range" },
64056
+ icon: overlaySymbolIcon("dice.range"),
63894
64057
  target: "each",
63895
64058
  controls: [
63896
64059
  {
@@ -63926,6 +64089,14 @@ var diceOverlay = {
63926
64089
  }
63927
64090
  ]
63928
64091
  }
64092
+ ],
64093
+ sections: [
64094
+ {
64095
+ id: "diceActions",
64096
+ label: "Dice",
64097
+ icon: overlaySymbolIcon("dice.throw"),
64098
+ actionIds: ["dice.throw", "dice.range", "dice.fill"]
64099
+ }
63929
64100
  ]
63930
64101
  };
63931
64102
  var addDiceToolOverlay = {
@@ -63934,7 +64105,19 @@ var addDiceToolOverlay = {
63934
64105
  kind: "create",
63935
64106
  createsItemType: "Dice",
63936
64107
  family: "game",
63937
- icon: { kind: "symbol", key: "tool.dice" }
64108
+ icon: overlaySymbolIcon("tool.dice"),
64109
+ launch: { kind: "activate-tool" },
64110
+ surface: {
64111
+ order: 1,
64112
+ group: {
64113
+ id: "gameItems",
64114
+ label: "Game items",
64115
+ icon: overlaySymbolIcon("tool.dice"),
64116
+ order: 1,
64117
+ behavior: "open-panel"
64118
+ },
64119
+ relatedToolNames: ["AddScreen", "AddPouch"]
64120
+ }
63938
64121
  };
63939
64122
 
63940
64123
  // src/Items/Dice/Dice.ts
@@ -64282,8 +64465,7 @@ var screenOverlay = {
64282
64465
  id: "screen.background",
64283
64466
  label: "Background",
64284
64467
  icon: {
64285
- kind: "symbol",
64286
- key: "screen.background",
64468
+ ...overlaySymbolIcon("screen.background"),
64287
64469
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64288
64470
  },
64289
64471
  target: "each",
@@ -64300,6 +64482,97 @@ var screenOverlay = {
64300
64482
  invoke: { kind: "setProperty", property: "backgroundColor" }
64301
64483
  }
64302
64484
  ]
64485
+ },
64486
+ {
64487
+ id: "screen.stroke",
64488
+ label: "Stroke",
64489
+ icon: {
64490
+ ...overlaySymbolIcon("shape.stroke"),
64491
+ state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64492
+ },
64493
+ target: "each",
64494
+ controls: [
64495
+ {
64496
+ id: "borderColor",
64497
+ label: "Border color",
64498
+ valueSource: { kind: "itemProperty", property: "borderColor" },
64499
+ editor: {
64500
+ kind: "color",
64501
+ palette: ["#000000", "#FFFFFF", "#888888", "transparent"],
64502
+ allowTransparent: true,
64503
+ presentation: "square"
64504
+ },
64505
+ invoke: { kind: "setProperty", property: "borderColor" }
64506
+ },
64507
+ {
64508
+ id: "borderWidth",
64509
+ label: "Border width",
64510
+ valueSource: { kind: "itemProperty", property: "borderWidth" },
64511
+ editor: {
64512
+ kind: "number-stepper",
64513
+ min: 0,
64514
+ max: 8,
64515
+ step: 1,
64516
+ presets: [0, 1, 2, 4],
64517
+ unit: "px"
64518
+ },
64519
+ invoke: { kind: "setProperty", property: "borderWidth" }
64520
+ }
64521
+ ],
64522
+ groups: [
64523
+ {
64524
+ id: "screenStrokeStyle",
64525
+ label: "Stroke",
64526
+ icon: overlaySymbolIcon("shape.stroke"),
64527
+ controlIds: ["borderColor", "borderWidth"]
64528
+ }
64529
+ ]
64530
+ },
64531
+ {
64532
+ id: "screen.backgroundImage",
64533
+ label: "Background image",
64534
+ icon: overlaySymbolIcon("screen.backgroundImage"),
64535
+ target: "each",
64536
+ when: {
64537
+ kind: "falsy",
64538
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64539
+ },
64540
+ controls: [
64541
+ {
64542
+ id: "backgroundUrl",
64543
+ label: "Background image",
64544
+ valueSource: { kind: "itemProperty", property: "backgroundUrl" },
64545
+ editor: {
64546
+ kind: "asset-upload",
64547
+ mode: "single",
64548
+ accept: ["image/*"]
64549
+ },
64550
+ invoke: { kind: "setProperty", property: "backgroundUrl" }
64551
+ }
64552
+ ]
64553
+ },
64554
+ {
64555
+ id: "screen.removeBackgroundImage",
64556
+ label: "Remove background image",
64557
+ icon: overlaySymbolIcon("screen.backgroundImage.remove"),
64558
+ target: "each",
64559
+ when: {
64560
+ kind: "truthy",
64561
+ source: { kind: "itemProperty", property: "backgroundUrl" }
64562
+ },
64563
+ invoke: {
64564
+ kind: "customMethod",
64565
+ methodName: "setBackgroundUrl",
64566
+ args: [{ kind: "static", value: "" }]
64567
+ }
64568
+ }
64569
+ ],
64570
+ sections: [
64571
+ {
64572
+ id: "screenAppearance",
64573
+ label: "Appearance",
64574
+ icon: overlaySymbolIcon("screen.background"),
64575
+ actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64303
64576
  }
64304
64577
  ]
64305
64578
  };
@@ -64309,7 +64582,19 @@ var addScreenToolOverlay = {
64309
64582
  kind: "create",
64310
64583
  createsItemType: "Screen",
64311
64584
  family: "container",
64312
- icon: { kind: "symbol", key: "tool.screen" }
64585
+ icon: overlaySymbolIcon("tool.screen"),
64586
+ launch: { kind: "activate-tool" },
64587
+ surface: {
64588
+ order: 2,
64589
+ group: {
64590
+ id: "gameItems",
64591
+ label: "Game items",
64592
+ icon: overlaySymbolIcon("tool.dice"),
64593
+ order: 1,
64594
+ behavior: "open-panel"
64595
+ },
64596
+ relatedToolNames: ["AddDice", "AddPouch"]
64597
+ }
64313
64598
  };
64314
64599
  var addPouchToolOverlay = {
64315
64600
  toolName: "AddPouch",
@@ -64317,7 +64602,19 @@ var addPouchToolOverlay = {
64317
64602
  kind: "create",
64318
64603
  createsItemType: "Screen",
64319
64604
  family: "container",
64320
- icon: { kind: "symbol", key: "tool.pouch" }
64605
+ icon: overlaySymbolIcon("tool.pouch"),
64606
+ launch: { kind: "activate-tool" },
64607
+ surface: {
64608
+ order: 3,
64609
+ group: {
64610
+ id: "gameItems",
64611
+ label: "Game items",
64612
+ icon: overlaySymbolIcon("tool.dice"),
64613
+ order: 1,
64614
+ behavior: "open-panel"
64615
+ },
64616
+ relatedToolNames: ["AddDice", "AddScreen"]
64617
+ }
64321
64618
  };
64322
64619
 
64323
64620
  // src/Items/Screen/Screen.ts
@@ -72277,8 +72574,7 @@ var addDrawingToolOverlay = {
72277
72574
  family: "drawing",
72278
72575
  createsItemType: "Drawing",
72279
72576
  icon: {
72280
- kind: "symbol",
72281
- key: "tool.pen",
72577
+ ...overlaySymbolIcon("tool.pen"),
72282
72578
  state: {
72283
72579
  swatch: { kind: "toolProperty", property: "strokeColor" },
72284
72580
  note: "UI can show the pending pen color in the icon."
@@ -72290,10 +72586,22 @@ var addDrawingToolOverlay = {
72290
72586
  {
72291
72587
  id: "drawingDefaults",
72292
72588
  label: "Pen defaults",
72293
- icon: { kind: "symbol", key: "tool.pen" },
72589
+ icon: overlaySymbolIcon("tool.pen"),
72294
72590
  controlIds: strokeControls2.map((control) => control.id)
72295
72591
  }
72296
72592
  ]
72593
+ },
72594
+ launch: { kind: "activate-tool" },
72595
+ surface: {
72596
+ order: 1,
72597
+ group: {
72598
+ id: "drawingTools",
72599
+ label: "Drawing",
72600
+ icon: overlaySymbolIcon("tool.pen"),
72601
+ order: 5,
72602
+ behavior: "activate-last-used"
72603
+ },
72604
+ relatedToolNames: ["AddHighlighter", "Eraser"]
72297
72605
  }
72298
72606
  };
72299
72607
  var addHighlighterToolOverlay = {
@@ -72303,8 +72611,7 @@ var addHighlighterToolOverlay = {
72303
72611
  family: "drawing",
72304
72612
  createsItemType: "Drawing",
72305
72613
  icon: {
72306
- kind: "symbol",
72307
- key: "tool.highlighter",
72614
+ ...overlaySymbolIcon("tool.highlighter"),
72308
72615
  state: {
72309
72616
  swatch: { kind: "toolProperty", property: "strokeColor" },
72310
72617
  note: "UI can show the pending highlighter color in the icon."
@@ -72316,10 +72623,22 @@ var addHighlighterToolOverlay = {
72316
72623
  {
72317
72624
  id: "highlighterDefaults",
72318
72625
  label: "Highlighter defaults",
72319
- icon: { kind: "symbol", key: "tool.highlighter" },
72626
+ icon: overlaySymbolIcon("tool.highlighter"),
72320
72627
  controlIds: strokeControls2.map((control) => control.id)
72321
72628
  }
72322
72629
  ]
72630
+ },
72631
+ launch: { kind: "activate-tool" },
72632
+ surface: {
72633
+ order: 2,
72634
+ group: {
72635
+ id: "drawingTools",
72636
+ label: "Drawing",
72637
+ icon: overlaySymbolIcon("tool.pen"),
72638
+ order: 5,
72639
+ behavior: "activate-last-used"
72640
+ },
72641
+ relatedToolNames: ["AddDrawing", "Eraser"]
72323
72642
  }
72324
72643
  };
72325
72644
  var eraserToolOverlay = {
@@ -72327,7 +72646,7 @@ var eraserToolOverlay = {
72327
72646
  label: "Eraser",
72328
72647
  kind: "mode",
72329
72648
  family: "drawing",
72330
- icon: { kind: "symbol", key: "tool.eraser" },
72649
+ icon: overlaySymbolIcon("tool.eraser"),
72331
72650
  defaults: {
72332
72651
  controls: [
72333
72652
  {
@@ -72344,6 +72663,18 @@ var eraserToolOverlay = {
72344
72663
  invoke: { kind: "toolProperty", property: "strokeWidth" }
72345
72664
  }
72346
72665
  ]
72666
+ },
72667
+ launch: { kind: "activate-tool" },
72668
+ surface: {
72669
+ order: 3,
72670
+ group: {
72671
+ id: "drawingTools",
72672
+ label: "Drawing",
72673
+ icon: overlaySymbolIcon("tool.pen"),
72674
+ order: 5,
72675
+ behavior: "activate-last-used"
72676
+ },
72677
+ relatedToolNames: ["AddDrawing", "AddHighlighter"]
72347
72678
  }
72348
72679
  };
72349
72680
 
@@ -72544,7 +72875,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72544
72875
  id: frameType,
72545
72876
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72546
72877
  value: frameType,
72547
- icon: { kind: "symbol", key: `frame.${frameType}` }
72878
+ icon: overlaySymbolIcon(`frame.${frameType}`)
72548
72879
  }));
72549
72880
  var addFrameToolOverlay = {
72550
72881
  toolName: "AddFrame",
@@ -72552,7 +72883,7 @@ var addFrameToolOverlay = {
72552
72883
  kind: "create",
72553
72884
  createsItemType: "Frame",
72554
72885
  family: "frame",
72555
- icon: { kind: "symbol", key: "tool.frame" },
72886
+ icon: overlaySymbolIcon("tool.frame"),
72556
72887
  defaults: {
72557
72888
  controls: [
72558
72889
  {
@@ -72566,6 +72897,10 @@ var addFrameToolOverlay = {
72566
72897
  invoke: { kind: "toolProperty", property: "shape" }
72567
72898
  }
72568
72899
  ]
72900
+ },
72901
+ launch: { kind: "activate-tool" },
72902
+ surface: {
72903
+ order: 10
72569
72904
  }
72570
72905
  };
72571
72906
 
@@ -72930,8 +73265,7 @@ var addStickerToolOverlay = {
72930
73265
  createsItemType: "Sticker",
72931
73266
  family: "sticker",
72932
73267
  icon: {
72933
- kind: "symbol",
72934
- key: "tool.sticker",
73268
+ ...overlaySymbolIcon("tool.sticker"),
72935
73269
  state: {
72936
73270
  swatch: { kind: "toolProperty", property: "backgroundColor" }
72937
73271
  }
@@ -72942,10 +73276,14 @@ var addStickerToolOverlay = {
72942
73276
  id: "stickerBackgroundColor",
72943
73277
  label: "Color",
72944
73278
  valueSource: { kind: "toolProperty", property: "backgroundColor" },
72945
- editor: { kind: "color", palette: STICKER_COLORS },
73279
+ editor: { kind: "color", palette: STICKER_COLORS, presentation: "sticker" },
72946
73280
  invoke: { kind: "toolProperty", property: "backgroundColor" }
72947
73281
  }
72948
73282
  ]
73283
+ },
73284
+ launch: { kind: "activate-tool" },
73285
+ surface: {
73286
+ order: 9
72949
73287
  }
72950
73288
  };
72951
73289
 
@@ -75380,12 +75718,16 @@ export {
75380
75718
  positionAbsolutely,
75381
75719
  parsersHTML,
75382
75720
  parseCssRgb,
75721
+ overlaySymbolIcon,
75722
+ overlayAssetIcon,
75383
75723
  omitDefaultProperties,
75384
75724
  messageRouter,
75385
75725
  meetsWCAG_AAA,
75386
75726
  meetsWCAG_AA,
75727
+ matchesOverlayCondition,
75387
75728
  listToolOverlays,
75388
75729
  listSelectionActions,
75730
+ listCreateSurfaceEntries,
75389
75731
  itemOverlays,
75390
75732
  itemFactories2 as itemFactories,
75391
75733
  itemOverlays as itemActions,
@@ -75478,6 +75820,7 @@ export {
75478
75820
  PRESENCE_CLEANUP_USER_TIMER,
75479
75821
  PRESENCE_CLEANUP_IDLE_TIMER,
75480
75822
  OVERLAY_SYMBOL_KEYS,
75823
+ OVERLAY_ICON_SPRITE_PATH,
75481
75824
  MiroItemConverter,
75482
75825
  Mbr,
75483
75826
  Matrix,