@likec4/diagram 1.56.0 → 1.58.0

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.
Files changed (208) hide show
  1. package/dist/LikeC4Diagram.js +3 -1
  2. package/dist/LikeC4View.js +47 -55
  3. package/dist/adhoc-editor/EditorPanel.d.ts +1 -1
  4. package/dist/adhoc-editor/ElementsTree.d.ts +1 -1
  5. package/dist/adhoc-editor/ElementsTree.js +2 -6
  6. package/dist/adhoc-editor/LikeC4AdHocViewEditor.d.ts +1 -1
  7. package/dist/adhoc-editor/components/Tree.d.ts +5 -5
  8. package/dist/adhoc-editor/state/ActorProvider.d.ts +1 -1
  9. package/dist/adhoc-editor/state/panel.d.ts +1 -1
  10. package/dist/adhoc-editor/viewrules/ViewRulesPanel.d.ts +1 -1
  11. package/dist/base/BaseXYFlow.d.ts +1 -1
  12. package/dist/base-primitives/Markdown.d.ts +1 -1
  13. package/dist/base-primitives/NodeHandles.d.ts +1 -1
  14. package/dist/base-primitives/compound/CompoundActionButton.d.ts +1 -1
  15. package/dist/base-primitives/compound/CompoundDetailsButton.d.ts +1 -1
  16. package/dist/base-primitives/compound/CompoundNodeContainer.d.ts +1 -1
  17. package/dist/base-primitives/compound/CompoundTitle.d.ts +1 -1
  18. package/dist/base-primitives/compound/actionbtns.css.d.ts +1 -1
  19. package/dist/base-primitives/edge/EdgeActionButton.d.ts +1 -1
  20. package/dist/base-primitives/edge/EdgeContainer.d.ts +1 -1
  21. package/dist/base-primitives/edge/EdgeLabelContainer.d.ts +1 -1
  22. package/dist/base-primitives/edge/EdgeMarkers.d.ts +8 -8
  23. package/dist/base-primitives/element/ElementActionButtons.d.ts +1 -1
  24. package/dist/base-primitives/element/ElementData.d.ts +2 -2
  25. package/dist/base-primitives/element/ElementDetailsButton.d.ts +1 -1
  26. package/dist/base-primitives/element/ElementShape.d.ts +1 -1
  27. package/dist/base-primitives/element/ElementTags.d.ts +1 -1
  28. package/dist/base-primitives/element/ElementTags.js +1 -3
  29. package/dist/components/ErrorFallback.d.ts +2 -2
  30. package/dist/components/NavigationPanel.d.ts +2 -2
  31. package/dist/components/PortalToContainer.d.ts +1 -1
  32. package/dist/components/RootContainer.d.ts +1 -1
  33. package/dist/components/RootContainer.js +19 -18
  34. package/dist/components/SearchControl.d.ts +2 -2
  35. package/dist/components/ViewNotFound.d.ts +2 -2
  36. package/dist/context/CurrentViewModelProvider.d.ts +1 -1
  37. package/dist/context/DefaultMantineProvider.d.ts +1 -1
  38. package/dist/context/DiagramEventHandlers.d.ts +1 -1
  39. package/dist/context/DiagramFeatures.d.ts +1 -1
  40. package/dist/context/DiagramFeatures.js +5 -0
  41. package/dist/context/EnsureMantine.d.ts +1 -1
  42. package/dist/context/FramerMotionConfig.d.ts +3 -3
  43. package/dist/context/FramerMotionConfig.js +2 -2
  44. package/dist/context/IconRenderer.d.ts +2 -2
  45. package/dist/context/IconRenderer.js +32 -12
  46. package/dist/context/LikeC4ModelContext.d.ts +1 -1
  47. package/dist/context/RootContainerContext.d.ts +10 -17
  48. package/dist/context/RootContainerContext.js +1 -13
  49. package/dist/context/ShadowRootContext.d.ts +3 -0
  50. package/dist/context/ShadowRootContext.js +5 -0
  51. package/dist/context/TagStylesContext.d.ts +2 -1
  52. package/dist/context/TagStylesContext.js +5 -7
  53. package/dist/custom/index.d.ts +1 -1
  54. package/dist/custom/index.js +1 -2
  55. package/dist/editor/LikeC4EditorCallbacks.d.ts +5 -0
  56. package/dist/editor/LikeC4EditorProvider.d.ts +2 -2
  57. package/dist/editor/actor/actions.d.ts +174 -0
  58. package/dist/editor/actor/actions.js +188 -0
  59. package/dist/editor/{hotkeyActor.d.ts → actor/hotkey.d.ts} +2 -2
  60. package/dist/editor/{hotkeyActor.js → actor/hotkey.js} +11 -4
  61. package/dist/editor/{editorActor.states.d.ts → actor/machine.d.ts} +5 -3
  62. package/dist/editor/actor/machine.js +23 -0
  63. package/dist/editor/actor/setup.d.ts +55 -0
  64. package/dist/editor/{editorActor.setup.js → actor/setup.js} +14 -10
  65. package/dist/editor/actor/state.editor.d.ts +147 -0
  66. package/dist/editor/actor/state.editor.js +56 -0
  67. package/dist/editor/actor/state.sync-queue.d.ts +612 -0
  68. package/dist/editor/actor/state.sync-queue.js +272 -0
  69. package/dist/editor/actor/types.d.ts +64 -0
  70. package/dist/editor/actor/types.js +5 -0
  71. package/dist/editor/applyChangesToManualLayout.js +1 -1
  72. package/dist/editor/index.d.ts +2 -1
  73. package/dist/editor/useEditorActorLogic.d.ts +8 -2
  74. package/dist/editor/useEditorActorLogic.js +39 -7
  75. package/dist/hooks/useDiagram.js +6 -1
  76. package/dist/hooks/useDiagramCompareLayout.js +1 -1
  77. package/dist/hooks/useEditorActor.d.ts +9 -0
  78. package/dist/hooks/useEditorActor.js +27 -0
  79. package/dist/hooks/useLikeC4ElementsTree.d.ts +3 -2
  80. package/dist/hooks/useLikeC4ElementsTree.js +3 -1
  81. package/dist/index.d.ts +2 -0
  82. package/dist/index.js +3 -1
  83. package/dist/likec4diagram/DiagramUI.d.ts +1 -1
  84. package/dist/likec4diagram/DiagramUI.js +8 -4
  85. package/dist/likec4diagram/DiagramXYFlow.js +26 -14
  86. package/dist/likec4diagram/custom/edges/EdgeDrifts.d.ts +1 -1
  87. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +127 -14
  88. package/dist/likec4diagram/custom/edges/SequenceStepEdge.d.ts +1 -1
  89. package/dist/likec4diagram/custom/edges/edges.css.d.ts +1 -0
  90. package/dist/likec4diagram/custom/edges/edges.css.js +5 -1
  91. package/dist/likec4diagram/custom/nodes/CompoundActions.d.ts +1 -1
  92. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +2 -2
  93. package/dist/likec4diagram/custom/nodes/NodeDrifts.d.ts +1 -1
  94. package/dist/likec4diagram/custom/nodes/NodeNotes.d.ts +1 -1
  95. package/dist/likec4diagram/custom/nodes/SequenceActorNode.d.ts +2 -2
  96. package/dist/likec4diagram/custom/nodes/nodes.d.ts +7 -7
  97. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.d.ts +3 -3
  98. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.d.ts +2 -2
  99. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.d.ts +2 -2
  100. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.d.ts +1 -1
  101. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +3 -3
  102. package/dist/likec4diagram/relationship-popover/RelationshipPopover.d.ts +1 -1
  103. package/dist/likec4diagram/relationship-popover/components.d.ts +2 -2
  104. package/dist/likec4diagram/state/DiagramActorProvider.d.ts +1 -1
  105. package/dist/likec4diagram/state/aligners.js +3 -0
  106. package/dist/likec4diagram/state/assign.js +1 -1
  107. package/dist/likec4diagram/state/createViewChange.js +1 -0
  108. package/dist/likec4diagram/state/diagram-api.d.ts +16 -0
  109. package/dist/likec4diagram/state/diagram-api.js +13 -7
  110. package/dist/likec4diagram/state/machine.actions.js +10 -10
  111. package/dist/likec4diagram/state/machine.d.ts +1 -1
  112. package/dist/likec4diagram/state/machine.setup.js +1 -1
  113. package/dist/likec4diagram/state/types.d.ts +1 -1
  114. package/dist/likec4diagram/state/utils.d.ts +1 -1
  115. package/dist/likec4diagram/types.d.ts +2 -0
  116. package/dist/likec4diagram/ui/LayoutDriftFrame.d.ts +1 -1
  117. package/dist/likec4diagram/ui/notation/NotationPanel.d.ts +1 -1
  118. package/dist/likec4diagram/useLayoutConstraints.js +2 -0
  119. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +4 -2
  120. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +1 -0
  121. package/dist/navigationpanel/NavigationPanel.d.ts +1 -1
  122. package/dist/navigationpanel/NavigationPanelControls.d.ts +1 -1
  123. package/dist/navigationpanel/NavigationPanelDropdown.d.ts +1 -1
  124. package/dist/navigationpanel/NavigationPanelDropdown.js +2 -2
  125. package/dist/navigationpanel/_common.d.ts +2 -2
  126. package/dist/navigationpanel/comparepanel/CompareActionsMenu.d.ts +1 -1
  127. package/dist/navigationpanel/comparepanel/ComparePanel.d.ts +1 -1
  128. package/dist/navigationpanel/comparepanel/ComparePanelControls.d.ts +1 -1
  129. package/dist/navigationpanel/comparepanel/DriftsSummary.d.ts +1 -1
  130. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.d.ts +1 -1
  131. package/dist/navigationpanel/controls/DetailsControls.d.ts +1 -1
  132. package/dist/navigationpanel/controls/LayoutWarning.d.ts +1 -1
  133. package/dist/navigationpanel/controls/LogoButton.d.ts +1 -1
  134. package/dist/navigationpanel/controls/NavigationButtons.d.ts +1 -1
  135. package/dist/navigationpanel/controls/OpenSource.d.ts +1 -1
  136. package/dist/navigationpanel/controls/SearchControl.d.ts +1 -1
  137. package/dist/navigationpanel/controls/ToggleReadonly.d.ts +1 -1
  138. package/dist/navigationpanel/controls/ToggleReadonly.js +4 -2
  139. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.d.ts +4 -0
  140. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.js +36 -0
  141. package/dist/navigationpanel/editorpanel/CenterCamera.d.ts +1 -1
  142. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.d.ts +1 -1
  143. package/dist/navigationpanel/editorpanel/EditorPanel.d.ts +1 -1
  144. package/dist/navigationpanel/editorpanel/EditorPanel.js +45 -33
  145. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.d.ts +1 -1
  146. package/dist/navigationpanel/editorpanel/ToggleReadonly.d.ts +1 -1
  147. package/dist/navigationpanel/styles.css.d.ts +1 -1
  148. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.d.ts +1 -1
  149. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +62 -62
  150. package/dist/navigationpanel/walkthrough/WalkthroughPanel.d.ts +1 -1
  151. package/dist/overlays/Overlays.d.ts +1 -1
  152. package/dist/overlays/element-details/ElementDetails.d.ts +1 -1
  153. package/dist/overlays/element-details/ElementDetailsCard.d.ts +1 -1
  154. package/dist/overlays/element-details/MetadataValue.d.ts +2 -2
  155. package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
  156. package/dist/overlays/element-details/TabPanelStructure.d.ts +2 -2
  157. package/dist/overlays/overlay/Overlay.d.ts +16 -0
  158. package/dist/overlays/overlay/Overlay.js +50 -52
  159. package/dist/overlays/overlaysActor.js +28 -27
  160. package/dist/overlays/relationship-details/RelationshipDetails.d.ts +1 -1
  161. package/dist/overlays/relationship-details/SelectEdge.d.ts +1 -1
  162. package/dist/overlays/relationship-details/custom/ElementActions.d.ts +1 -1
  163. package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +4 -5
  164. package/dist/overlays/relationship-details/custom/nodeTypes.js +25 -24
  165. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +1 -1
  166. package/dist/overlays/relationships-browser/SelectElement.d.ts +1 -1
  167. package/dist/overlays/relationships-browser/SelectElement.js +2 -2
  168. package/dist/overlays/relationships-browser/custom/ElementActions.d.ts +1 -1
  169. package/dist/overlays/relationships-browser/custom/EmptyNode.d.ts +1 -1
  170. package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +4 -4
  171. package/dist/projects-overview/ProjectsOverview.d.ts +1 -1
  172. package/dist/projects-overview/custom/nodeTypes.d.ts +1 -1
  173. package/dist/projects-overview/panel/ProjectsOverviewPanel.d.ts +1 -1
  174. package/dist/search/Search.d.ts +6 -3
  175. package/dist/search/Search.js +60 -71
  176. package/dist/search/XStateSearchAdapter.d.ts +1 -1
  177. package/dist/search/components/ElementsColumn.d.ts +1 -1
  178. package/dist/search/components/ElementsColumn.js +12 -8
  179. package/dist/search/components/PickView.d.ts +1 -1
  180. package/dist/search/components/SearchByTags.d.ts +1 -1
  181. package/dist/search/components/SearchInput.d.ts +1 -1
  182. package/dist/search/components/ViewsColum.d.ts +3 -3
  183. package/dist/search/components/_shared.css.d.ts +1 -1
  184. package/dist/search/searchActor.js +30 -26
  185. package/dist/shadowroot/ShadowRoot.d.ts +6 -6
  186. package/dist/shadowroot/ShadowRoot.js +68 -23
  187. package/dist/shadowroot/index.d.ts +1 -0
  188. package/dist/shadowroot/styles.d.ts +13 -0
  189. package/dist/shadowroot/styles.js +60 -0
  190. package/dist/styles2.js +1 -1
  191. package/package.json +33 -40
  192. package/panda.buildinfo.json +19 -22
  193. package/src/styles-font.css +114 -0
  194. package/src/styles-min.css +2 -0
  195. package/src/styles-xyflow.css +1 -0
  196. package/src/styles.css +3 -0
  197. package/styles-min.css +1 -1
  198. package/styles-xyflow.css +1 -1
  199. package/styles.css +1 -1
  200. package/dist/bundle/index.d.ts +0 -1
  201. package/dist/editor/editorActor.actions.d.ts +0 -153
  202. package/dist/editor/editorActor.actions.js +0 -133
  203. package/dist/editor/editorActor.setup.d.ts +0 -84
  204. package/dist/editor/editorActor.states.js +0 -219
  205. package/dist/hooks/useOverlaysActor.js +0 -11
  206. package/dist/hooks/useSearchActor.js +0 -11
  207. package/dist/shadowroot/styles.css.d.ts +0 -4
  208. package/dist/shadowroot/styles.css.js +0 -62
@@ -207,14 +207,15 @@ var emitEdgeClick = () => machine.emit(({ context, event }) => {
207
207
  };
208
208
  });
209
209
  var triggerChange = (viewChange) => machine.enqueueActions(({ event, enqueue }) => {
210
- let change = viewChange;
211
- if (!change) {
210
+ let change;
211
+ if (viewChange) change = { ...viewChange };
212
+ else {
212
213
  assertEvent(event, "trigger.change");
213
214
  change = event.change;
214
215
  }
215
216
  enqueue.assign({ viewportChangedManually: true });
216
217
  enqueue.sendTo(typedSystem.editorActor, {
217
- type: "change",
218
+ type: "change.view",
218
219
  change
219
220
  });
220
221
  });
@@ -388,14 +389,13 @@ var ensureEditorActor = () => machine.enqueueActions(({ enqueue, context, system
388
389
  });
389
390
  });
390
391
  var startEditing = (subject = "node") => machine.sendTo(typedSystem.editorActor, {
391
- type: "edit.start",
392
+ type: "edit.move.start",
392
393
  subject
393
394
  });
394
- var sendSynced = () => machine.sendTo(typedSystem.editorActor, { type: "synced" });
395
- var stopEditing = (wasChanged = false) => machine.sendTo(typedSystem.editorActor, {
396
- type: "edit.finish",
397
- wasChanged
398
- });
395
+ var sendSynced = () => {
396
+ return machine.sendTo(typedSystem.editorActor, { type: "view.synched" });
397
+ };
398
+ var stopEditing = (wasChanged = false) => machine.sendTo(typedSystem.editorActor, { type: wasChanged ? "edit.move.end" : "edit.move.cancel" });
399
399
  var cancelEditing = () => machine.sendTo(typedSystem.editorActor, { type: "cancel" });
400
400
  var hasModelFqn = (node) => "modelFqn" in node.data && isTruthy(node.data.modelFqn);
401
401
  var openElementDetails = (params) => machine.enqueueActions(({ context, event, enqueue }) => {
@@ -591,7 +591,7 @@ var stopHotKeyActor = () => machine.stopChild("hotkey");
591
591
  */
592
592
  var AUTO_UNFOCUS_DELAY = 3e3;
593
593
  var startAutoUnfocusTimer = () => machine.enqueueActions(({ context, enqueue }) => {
594
- if (context.autoUnfocusTimer && AUTO_UNFOCUS_DELAY > 0) enqueue.raise({ type: "focus.autoUnfocus" }, {
594
+ if (context.autoUnfocusTimer && true) enqueue.raise({ type: "focus.autoUnfocus" }, {
595
595
  delay: AUTO_UNFOCUS_DELAY,
596
596
  id: "autoUnfocusTimer"
597
597
  });
@@ -1,5 +1,5 @@
1
1
  import { ActorRef, MachineSnapshot, StateMachine } from 'xstate';
2
- import { EditorActorRef } from '../../editor/editorActor.states';
2
+ import { EditorActorRef } from '../../editor/actor/machine';
3
3
  import { OverlaysActorRef } from '../../overlays/overlaysActor';
4
4
  import { SearchActorRef } from '../../search/searchActor';
5
5
  import { Context as DiagramContext, EmittedEvents as DiagramEmittedEvents, Events as DiagramEvents, Input } from './machine.setup';
@@ -1,5 +1,5 @@
1
1
  import "../../_virtual/_rolldown/runtime.js";
2
- import { editorActorLogic } from "../../editor/editorActor.states.js";
2
+ import { editorActorLogic } from "../../editor/actor/machine.js";
3
3
  import { overlaysActorLogic } from "../../overlays/overlaysActor.js";
4
4
  import { searchActorLogic } from "../../search/searchActor.js";
5
5
  import { hotkeyActorLogic } from "./hotkeyActor.js";
@@ -1,5 +1,5 @@
1
1
  import { ActorSystem } from 'xstate';
2
- import { EditorActorRef } from '../../editor/editorActor.states';
2
+ import { EditorActorRef } from '../../editor/actor/machine';
3
3
  import { OverlaysActorRef } from '../../overlays/overlaysActor';
4
4
  import { SearchActorRef } from '../../search/searchActor';
5
5
  import { DiagramMachineRef } from './machine';
@@ -2,7 +2,7 @@ import { BBox } from '@likec4/core/geometry';
2
2
  import { DeploymentFqn, DiagramEdge, DiagramNode, DiagramView, Fqn } from '@likec4/core/types';
3
3
  import { Viewport } from '@xyflow/system';
4
4
  import { ActorSystem } from 'xstate';
5
- import { EditorActorRef } from '../../editor/editorActor.states';
5
+ import { EditorActorRef } from '../../editor/actor/machine';
6
6
  import { OverlaysActorRef } from '../../overlays/overlaysActor';
7
7
  import { SearchActorRef } from '../../search/searchActor';
8
8
  import { Types } from '../types';
@@ -113,12 +113,14 @@ export declare namespace Types {
113
113
  type RelationshipEdgeData = Simplify<BaseEdgeData & NonOptional<Pick<DiagramEdge, 'id' | 'label' | 'labelBBox' | 'technology' | 'points' | 'dir' | 'color' | 'line' | 'head' | 'tail' | 'navigateTo' | 'astPath' | 'drifts'>> & {
114
114
  notes: MarkdownOrString | null;
115
115
  labelXY: XYPosition | null;
116
+ isLabelCustomized?: boolean | undefined;
116
117
  controlPoints: XYPosition[] | undefined | null;
117
118
  }>;
118
119
  type SequenceStepEdgeData = Simplify<BaseEdgeData & NonOptional<Pick<DiagramEdge, 'id' | 'label' | 'technology' | 'points' | 'dir' | 'color' | 'line' | 'head' | 'tail' | 'navigateTo' | 'astPath' | 'drifts'>> & {
119
120
  notes: MarkdownOrString | null;
120
121
  labelXY: XYPosition | null;
121
122
  labelBBox: BBox;
123
+ isLabelCustomized?: boolean | undefined;
122
124
  controlPoints: XYPosition[] | undefined | null;
123
125
  }>;
124
126
  type RelationshipEdge = BaseEdge<RelationshipEdgeData, 'relationship'>;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const LayoutDriftFrame: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const LayoutDriftFrame: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const NotationPanel: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element | null>;
2
+ export declare const NotationPanel: MemoExoticComponent<() => import("react").JSX.Element | null>;
@@ -85,6 +85,7 @@ var Rect = class {
85
85
  }
86
86
  };
87
87
  var CompoundRect = class extends Rect {
88
+ parent;
88
89
  children = [];
89
90
  constructor(xynode, parent = null) {
90
91
  super(xynode, parent);
@@ -92,6 +93,7 @@ var CompoundRect = class extends Rect {
92
93
  }
93
94
  };
94
95
  var Leaf = class extends Rect {
96
+ parent;
95
97
  constructor(xynode, parent = null) {
96
98
  super(xynode, parent);
97
99
  this.parent = parent;
@@ -17,6 +17,7 @@ function diagramToXY(opts) {
17
17
  const xyedges = [];
18
18
  const nodeLookup = /* @__PURE__ */ new Map();
19
19
  const viewLayoutDir = view.autoLayout?.direction ?? "TB";
20
+ const deletable = view._type !== "dynamic";
20
21
  const queue = Queue.from(view.nodes.reduce((acc, node) => {
21
22
  nodeLookup.set(node.id, node);
22
23
  if (!node.parent) acc.push({
@@ -56,7 +57,7 @@ function diagramToXY(opts) {
56
57
  }
57
58
  const base = {
58
59
  id: ns + node.id,
59
- deletable: false,
60
+ deletable,
60
61
  position,
61
62
  zIndex: isCompound ? ZIndexes.Compound : ZIndexes.Element,
62
63
  style: {
@@ -188,7 +189,7 @@ function diagramToXY(opts) {
188
189
  target: ns + target,
189
190
  zIndex: ZIndexes.Edge,
190
191
  hidden: !visiblePredicate(edge),
191
- deletable: false,
192
+ deletable,
192
193
  data: {
193
194
  id: edge.id,
194
195
  label: edge.label,
@@ -197,6 +198,7 @@ function diagramToXY(opts) {
197
198
  navigateTo: edge.navigateTo,
198
199
  controlPoints: edge.controlPoints ?? null,
199
200
  labelBBox: edge.labelBBox ?? null,
201
+ isLabelCustomized: edge.isLabelCustomized ?? false,
200
202
  labelXY: null,
201
203
  points: edge.points,
202
204
  color: edge.color ?? "gray",
@@ -174,6 +174,7 @@ function toSeqStepEdge({ id, labelBBox, sourceHandle, targetHandle }, edge, curr
174
174
  astPath: edge.astPath,
175
175
  drifts: edge.drifts ?? null
176
176
  },
177
+ deletable: false,
177
178
  selectable: true,
178
179
  focusable: false,
179
180
  zIndex: 20,
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const NavigationPanel: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const NavigationPanel: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const NavigationPanelControls: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const NavigationPanelControls: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const NavigationPanelDropdown: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const NavigationPanelDropdown: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -12,7 +12,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { useMountEffect } from "@react-hookz/web";
13
13
  import { deepEqual, shallowEqual } from "fast-equals";
14
14
  import { isArray, isEmpty, pipe, sort } from "remeda";
15
- import { Breadcrumbs, Button, Divider, Highlight, Input, PopoverDropdown, ScrollAreaAutosize, UnstyledButton, createScopedKeydownHandler, rem } from "@mantine/core";
15
+ import { Breadcrumbs, Button, Divider, Highlight, Input, PopoverDropdown, ScrollAreaAutosize, UnstyledButton, createScopedKeydownHandler } from "@mantine/core";
16
16
  import { compareNaturalHierarchically, ifilter, ifirst, nonexhaustive, toArray } from "@likec4/core/utils";
17
17
  import { useSelector } from "@xstate/react";
18
18
  import { useThrottledCallback, useUncontrolled } from "@mantine/hooks";
@@ -342,7 +342,7 @@ function SearchInput(props) {
342
342
  size: "xs",
343
343
  placeholder: "Search by title or id",
344
344
  variant: "unstyled",
345
- height: rem(26),
345
+ height: 26,
346
346
  value: _value,
347
347
  onKeyDown: scopedKeydownHandler,
348
348
  onChange: (e) => handleChange(e.currentTarget.value),
@@ -1,9 +1,9 @@
1
- import { NavigationPanelActionIconVariant } from '@likec4/styles/recipes';
1
+ import { NavigationPanelActionIconVariant } from '../../styled-system/recipes';
2
2
  import { ActionIconProps, TooltipProps, PlaceholderPolymorphicProps, BreadcrumbsProps } from '@mantine/core';
3
3
  import { HTMLMotionProps } from 'motion/react';
4
4
  import { NamedExoticComponent, RefAttributes, ForwardRefExoticComponent } from 'react';
5
5
  export declare const Tooltip: NamedExoticComponent< TooltipProps & RefAttributes<HTMLDivElement> & PlaceholderPolymorphicProps>;
6
- export declare const BreadcrumbsSeparator: () => import("react/jsx-runtime").JSX.Element;
6
+ export declare const BreadcrumbsSeparator: () => import("react").JSX.Element;
7
7
  export declare const Breadcrumbs: NamedExoticComponent< BreadcrumbsProps & RefAttributes<HTMLDivElement> & PlaceholderPolymorphicProps>;
8
8
  export type PanelActionIconProps = Partial<NavigationPanelActionIconVariant> & Omit<ActionIconProps, keyof NavigationPanelActionIconVariant> & Omit<HTMLMotionProps<'button'>, keyof NavigationPanelActionIconVariant>;
9
9
  export declare const PanelActionIcon: ForwardRefExoticComponent<Omit<PanelActionIconProps, "ref"> & RefAttributes<HTMLButtonElement>>;
@@ -2,4 +2,4 @@ export declare function CompareActionsMenu({ disabled, onApplyLatestToManual, on
2
2
  disabled?: boolean;
3
3
  onApplyLatestToManual?: undefined | (() => void);
4
4
  onResetManualLayout: () => void;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const ComparePanel: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const ComparePanel: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1 +1 @@
1
- export declare function ComparePanelControls(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function ComparePanelControls(): import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare function DriftsSummary(): import("react/jsx-runtime").JSX.Element | null;
1
+ export declare function DriftsSummary(): import("react").JSX.Element | null;
@@ -2,4 +2,4 @@ import { LayoutType } from '@likec4/core';
2
2
  export declare function LayoutTypeSwitcher({ value, onChange, }: {
3
3
  value: LayoutType;
4
4
  onChange: (layout: LayoutType) => void;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { PopoverProps } from '@mantine/core';
2
- export declare const DetailsControls: (props: PopoverProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const DetailsControls: (props: PopoverProps) => import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const LayoutWarning: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const LayoutWarning: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1 +1 @@
1
- export declare const LogoButton: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const LogoButton: () => import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare const NavigationButtons: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const NavigationButtons: () => import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare const OpenSource: () => import("react/jsx-runtime").JSX.Element | null;
1
+ export declare const OpenSource: () => import("react").JSX.Element | null;
@@ -1 +1 @@
1
- export declare function SearchControl(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function SearchControl(): import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare const ToggleReadonly: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const ToggleReadonly: () => import("react").JSX.Element;
@@ -14,10 +14,12 @@ import * as m$1 from "motion/react-m";
14
14
  var selector = (ctx) => {
15
15
  const comparingLatest = deriveToggledFeatures(ctx).enableCompareWithLatest && !!ctx.view.drifts && ctx.view._layout === "auto";
16
16
  const noActiveWalkthrough = !isTruthy(ctx.activeWalkthrough);
17
+ const hasEditor = ctx.features.enableEditor;
18
+ const isReadOnly = ctx.toggledFeatures.enableReadOnly ?? false;
17
19
  return {
18
- visible: ctx.features.enableEditor && noActiveWalkthrough,
20
+ visible: hasEditor && noActiveWalkthrough,
19
21
  disabled: comparingLatest,
20
- isReadOnly: ctx.toggledFeatures.enableReadOnly ?? false
22
+ isReadOnly
21
23
  };
22
24
  };
23
25
  var ToggleReadonly = () => {
@@ -0,0 +1,4 @@
1
+ import { NamedExoticComponent } from 'react';
2
+ export declare const ApplySemanticLayout: NamedExoticComponent<{
3
+ visible?: boolean;
4
+ }>;
@@ -0,0 +1,36 @@
1
+ import "../../_virtual/_rolldown/runtime.js";
2
+ import { useDiagram } from "../../hooks/safeContext.js";
3
+ import { PanelActionIcon } from "../_common.js";
4
+ import { useEditorActorStateHasTag } from "../../hooks/useEditorActor.js";
5
+ import { Tooltip } from "./_common.js";
6
+ import { IconSparkles } from "@tabler/icons-react";
7
+ import { memo } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ //#region src/navigationpanel/editorpanel/ApplySemanticLayout.tsx
10
+ var ApplySemanticLayout = memo(({ visible = true }) => {
11
+ const diagram = useDiagram();
12
+ return /* @__PURE__ */ jsx(Tooltip, {
13
+ label: "Semantic Layout with AI",
14
+ children: /* @__PURE__ */ jsx(PanelActionIcon, {
15
+ loading: useEditorActorStateHasTag("ai-semantic-layout"),
16
+ initial: { display: visible ? "block" : "none" },
17
+ animate: {
18
+ display: visible ? "block" : "none",
19
+ opacity: visible ? 1 : .2,
20
+ x: visible ? 0 : -5,
21
+ y: visible ? 0 : -8
22
+ },
23
+ onClick: (e) => {
24
+ e.stopPropagation();
25
+ diagram.editorActor().send({ type: "change.semantic-layout" });
26
+ },
27
+ children: /* @__PURE__ */ jsx(IconSparkles, {
28
+ size: 14,
29
+ stroke: 2
30
+ })
31
+ })
32
+ });
33
+ });
34
+ ApplySemanticLayout.displayName = "ApplySemanticLayout";
35
+ //#endregion
36
+ export { ApplySemanticLayout };
@@ -1 +1 @@
1
- export declare const CenterCamera: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const CenterCamera: () => import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare const ChangeAutoLayoutButton: () => import("react/jsx-runtime").JSX.Element | null;
1
+ export declare const ChangeAutoLayoutButton: () => import("react").JSX.Element | null;
@@ -1 +1 @@
1
- export declare function EditorPanel(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function EditorPanel(): import("react").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import "../../_virtual/_rolldown/runtime.js";
2
2
  import { useEnabledFeatures } from "../../context/DiagramFeatures.js";
3
+ import { ApplySemanticLayout } from "./ApplySemanticLayout.js";
3
4
  import { CenterCamera } from "./CenterCamera.js";
4
5
  import { ChangeAutoLayoutButton } from "./ChangeAutoLayoutButton.js";
5
6
  import { ManualLayoutToolsButton } from "./ManualLayoutToolsButton.js";
@@ -10,41 +11,52 @@ import { AnimatePresence } from "motion/react";
10
11
  import { vstack } from "@likec4/styles/patterns";
11
12
  import * as m$1 from "motion/react-m";
12
13
  //#region src/navigationpanel/editorpanel/EditorPanel.tsx
14
+ var variants = {
15
+ hidden: {
16
+ opacity: 0,
17
+ translateX: -20
18
+ },
19
+ visible: {
20
+ opacity: 1,
21
+ translateX: 0
22
+ },
23
+ exit: {
24
+ opacity: 0,
25
+ translateX: -20
26
+ }
27
+ };
13
28
  function EditorPanel() {
14
- const { enableReadOnly } = useEnabledFeatures();
15
- return /* @__PURE__ */ jsx(AnimatePresence, { children: !enableReadOnly && /* @__PURE__ */ jsx(m$1.div, {
16
- layout: "position",
17
- className: vstack({
18
- gap: "xs",
19
- layerStyle: "likec4.panel",
20
- position: "relative",
21
- cursor: "pointer",
22
- padding: "xxs",
23
- pointerEvents: "all"
24
- }),
25
- initial: {
26
- opacity: 0,
27
- translateX: -20
28
- },
29
- animate: {
30
- opacity: 1,
31
- translateX: 0
32
- },
33
- exit: {
34
- opacity: 0,
35
- translateX: -20
36
- },
37
- children: /* @__PURE__ */ jsxs(TooltipGroup, {
38
- openDelay: 600,
39
- closeDelay: 120,
40
- children: [
41
- /* @__PURE__ */ jsx(ChangeAutoLayoutButton, {}),
42
- /* @__PURE__ */ jsx(ManualLayoutToolsButton, {}),
43
- /* @__PURE__ */ jsx(CenterCamera, {}),
44
- /* @__PURE__ */ jsx(ToggleReadonly, {})
45
- ]
29
+ const { enableReadOnly, enableCompareWithLatest, enableAISemanticLayout } = useEnabledFeatures();
30
+ const showAiSemanticLayoutButton = !enableCompareWithLatest && !enableReadOnly && enableAISemanticLayout;
31
+ return /* @__PURE__ */ jsx(AnimatePresence, {
32
+ propagate: true,
33
+ children: !enableReadOnly && /* @__PURE__ */ jsx(m$1.div, {
34
+ layout: "position",
35
+ className: vstack({
36
+ gap: "xs",
37
+ layerStyle: "likec4.panel",
38
+ position: "relative",
39
+ cursor: "pointer",
40
+ padding: "xxs",
41
+ pointerEvents: "all"
42
+ }),
43
+ initial: "hidden",
44
+ animate: "visible",
45
+ exit: "exit",
46
+ variants,
47
+ children: /* @__PURE__ */ jsxs(TooltipGroup, {
48
+ openDelay: 600,
49
+ closeDelay: 120,
50
+ children: [
51
+ /* @__PURE__ */ jsx(ChangeAutoLayoutButton, {}),
52
+ /* @__PURE__ */ jsx(ManualLayoutToolsButton, {}),
53
+ /* @__PURE__ */ jsx(CenterCamera, {}),
54
+ /* @__PURE__ */ jsx(ToggleReadonly, {}),
55
+ /* @__PURE__ */ jsx(ApplySemanticLayout, { visible: showAiSemanticLayoutButton })
56
+ ]
57
+ })
46
58
  })
47
- }) });
59
+ });
48
60
  }
49
61
  //#endregion
50
62
  export { EditorPanel };
@@ -1,2 +1,2 @@
1
1
  import { MemoExoticComponent } from 'react';
2
- export declare const ManualLayoutToolsButton: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const ManualLayoutToolsButton: MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1 +1 @@
1
- export declare const ToggleReadonly: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare const ToggleReadonly: () => import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { RecipeRuntimeFn } from '@likec4/styles';
1
+ import { RecipeRuntimeFn } from '../../styled-system';
2
2
  export declare const breadcrumbTitle: RecipeRuntimeFn<{
3
3
  truncate: {
4
4
  true: {
@@ -1 +1 @@
1
- export declare function ActiveWalkthroughControls(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function ActiveWalkthroughControls(): import("react").JSX.Element;