@likec4/diagram 1.44.0 → 1.45.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 (134) hide show
  1. package/bundle/index.js +18160 -17671
  2. package/dist/LikeC4Diagram.js +7 -5
  3. package/dist/LikeC4Diagram.props.d.ts +9 -8
  4. package/dist/LikeC4Styles.js +0 -3
  5. package/dist/LikeC4View.d.ts +3 -3
  6. package/dist/LikeC4View.js +7 -3
  7. package/dist/ReactLikeC4.d.ts +2 -2
  8. package/dist/base/Base.d.ts +1 -1
  9. package/dist/base/updateEdges.js +25 -15
  10. package/dist/base/updateNodes.d.ts +14 -0
  11. package/dist/base/updateNodes.js +51 -18
  12. package/dist/base-primitives/Markdown.d.ts +30 -4
  13. package/dist/base-primitives/Markdown.js +3 -2
  14. package/dist/base-primitives/compound/CompoundActionButton.d.ts +3 -2
  15. package/dist/base-primitives/compound/CompoundDetailsButton.d.ts +3 -2
  16. package/dist/base-primitives/edge/EdgeActionButton.d.ts +3 -2
  17. package/dist/base-primitives/edge/EdgeContainer.d.ts +1 -1
  18. package/dist/base-primitives/edge/EdgeContainer.js +4 -1
  19. package/dist/base-primitives/edge/EdgeLabel.d.ts +2 -2
  20. package/dist/base-primitives/edge/EdgePath.js +24 -4
  21. package/dist/base-primitives/element/ElementActionButtons.d.ts +3 -2
  22. package/dist/base-primitives/element/ElementActionButtons.js +2 -2
  23. package/dist/base-primitives/element/ElementData.d.ts +3 -3
  24. package/dist/base-primitives/element/ElementData.js +13 -7
  25. package/dist/base-primitives/element/ElementDetailsButton.d.ts +3 -2
  26. package/dist/base-primitives/element/ElementDetailsButton.js +3 -0
  27. package/dist/base-primitives/element/ElementShape.js +5 -5
  28. package/dist/base-primitives/element/ElementTags.d.ts +6 -4
  29. package/dist/context/DiagramFeatures.d.ts +1 -0
  30. package/dist/context/TagStylesContext.js +1 -1
  31. package/dist/custom/hooks.d.ts +2 -2
  32. package/dist/custom/index.js +1 -1
  33. package/dist/hooks/index.d.ts +2 -1
  34. package/dist/hooks/useDiagramCompareLayout.js +7 -2
  35. package/dist/hooks/useLikeC4Project.d.ts +6 -1
  36. package/dist/hooks/useLikeC4Project.js +14 -2
  37. package/dist/hooks/useMediaPrint.d.ts +6 -0
  38. package/dist/likec4diagram/DiagramXYFlow.js +11 -6
  39. package/dist/likec4diagram/custom/edges/EdgeDrifts.d.ts +6 -0
  40. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +38 -0
  41. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +24 -14
  42. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +3 -1
  43. package/dist/likec4diagram/custom/edges/useControlPoints.js +3 -3
  44. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +5 -5
  45. package/dist/likec4diagram/custom/nodes/NodeDrifts.d.ts +6 -0
  46. package/dist/likec4diagram/custom/nodes/{ElementNodeDrifts.js → NodeDrifts.js} +8 -4
  47. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +4 -2
  48. package/dist/likec4diagram/custom/nodes/index.d.ts +1 -0
  49. package/dist/likec4diagram/custom/nodes/nodes.js +64 -23
  50. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +3 -3
  51. package/dist/likec4diagram/relationship-popover/actor.d.ts +1 -1
  52. package/dist/likec4diagram/state/DiagramActorProvider.d.ts +2 -2
  53. package/dist/likec4diagram/state/DiagramActorProvider.js +0 -1
  54. package/dist/likec4diagram/state/assign.d.ts +10 -6
  55. package/dist/likec4diagram/state/assign.js +17 -192
  56. package/dist/likec4diagram/state/createViewChange.js +15 -26
  57. package/dist/likec4diagram/state/diagram-api.d.ts +2 -6
  58. package/dist/likec4diagram/state/diagram-api.js +2 -10
  59. package/dist/likec4diagram/state/hotkeyActor.d.ts +0 -7
  60. package/dist/likec4diagram/state/hotkeyActor.js +1 -17
  61. package/dist/likec4diagram/state/machine.actions.d.ts +430 -746
  62. package/dist/likec4diagram/state/machine.actions.js +193 -284
  63. package/dist/likec4diagram/state/machine.actions.layout.d.ts +579 -0
  64. package/dist/likec4diagram/state/machine.actions.layout.js +129 -0
  65. package/dist/likec4diagram/state/machine.d.ts +17 -3712
  66. package/dist/likec4diagram/state/machine.js +59 -73
  67. package/dist/likec4diagram/state/machine.setup.d.ts +61 -18
  68. package/dist/likec4diagram/state/machine.setup.js +27 -5
  69. package/dist/likec4diagram/state/machine.state.initializing.d.ts +25 -0
  70. package/dist/likec4diagram/state/machine.state.initializing.js +5 -5
  71. package/dist/likec4diagram/state/machine.state.navigating.d.ts +5 -108
  72. package/dist/likec4diagram/state/machine.state.navigating.js +167 -34
  73. package/dist/likec4diagram/state/machine.state.ready.d.ts +2316 -2851
  74. package/dist/likec4diagram/state/machine.state.ready.focused.d.ts +386 -0
  75. package/dist/likec4diagram/state/machine.state.ready.focused.js +85 -0
  76. package/dist/likec4diagram/state/machine.state.ready.idle.d.ts +474 -0
  77. package/dist/likec4diagram/state/machine.state.ready.idle.js +96 -0
  78. package/dist/likec4diagram/state/machine.state.ready.js +144 -319
  79. package/dist/likec4diagram/state/machine.state.ready.printing.d.ts +128 -0
  80. package/dist/likec4diagram/state/machine.state.ready.printing.js +40 -0
  81. package/dist/likec4diagram/state/machine.state.ready.walkthrough.d.ts +511 -0
  82. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +177 -0
  83. package/dist/likec4diagram/state/mediaPrintActor.d.ts +12 -0
  84. package/dist/likec4diagram/state/mediaPrintActor.js +18 -0
  85. package/dist/likec4diagram/state/syncManualLayoutActor.d.ts +6 -240
  86. package/dist/likec4diagram/state/syncManualLayoutActor.js +150 -89
  87. package/dist/likec4diagram/state/types.d.ts +5 -7
  88. package/dist/likec4diagram/state/utils.d.ts +15 -2
  89. package/dist/likec4diagram/state/utils.js +43 -3
  90. package/dist/likec4diagram/types.d.ts +8 -13
  91. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +5 -2
  92. package/dist/likec4diagram/useLayoutConstraints.js +107 -102
  93. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +12 -15
  94. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +11 -8
  95. package/dist/navigationpanel/NavigationPanel.js +5 -1
  96. package/dist/navigationpanel/actor.d.ts +4 -204
  97. package/dist/navigationpanel/actor.js +1 -1
  98. package/dist/navigationpanel/controls/ToggleReadonly.js +8 -3
  99. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +66 -66
  100. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +4 -3
  101. package/dist/overlays/element-details/ElementDetailsCard.css.js +3 -3
  102. package/dist/overlays/element-details/MetadataValue.d.ts +2 -1
  103. package/dist/overlays/element-details/actor.d.ts +8 -83
  104. package/dist/overlays/element-details/actor.js +0 -8
  105. package/dist/overlays/overlay/Overlay.js +10 -10
  106. package/dist/overlays/overlaysActor.d.ts +7 -392
  107. package/dist/overlays/overlaysActor.js +67 -46
  108. package/dist/overlays/relationship-details/_types.d.ts +3 -4
  109. package/dist/overlays/relationship-details/actor.d.ts +6 -562
  110. package/dist/overlays/relationship-details/actor.js +1 -0
  111. package/dist/overlays/relationship-details/layout-to-xyflow.js +3 -5
  112. package/dist/overlays/relationship-details/layout.d.ts +3 -3
  113. package/dist/overlays/relationship-details/layout.js +4 -4
  114. package/dist/overlays/relationships-browser/_types.d.ts +2 -3
  115. package/dist/overlays/relationships-browser/actor.d.ts +7 -739
  116. package/dist/overlays/relationships-browser/layout.d.ts +2 -2
  117. package/dist/overlays/relationships-browser/layout.js +3 -3
  118. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +0 -3
  119. package/dist/overlays/types.d.ts +12 -13
  120. package/dist/search/components/_shared.css.d.ts +1 -1
  121. package/dist/search/searchActor.d.ts +3 -66
  122. package/dist/shadowroot/ShadowRoot.d.ts +5 -7
  123. package/dist/shadowroot/ShadowRoot.js +7 -5
  124. package/dist/styles.css2.js +1 -1
  125. package/dist/utils/vector.d.ts +5 -0
  126. package/dist/utils/vector.js +7 -0
  127. package/dist/utils/view-bounds.js +7 -6
  128. package/dist/utils/xyflow.d.ts +4 -2
  129. package/dist/utils/xyflow.js +18 -50
  130. package/package.json +19 -18
  131. package/panda.buildinfo.json +17 -5
  132. package/styles-min.css +1 -1
  133. package/styles.css +1 -1
  134. package/dist/likec4diagram/custom/nodes/ElementNodeDrifts.d.ts +0 -4
@@ -1,5 +1,5 @@
1
1
  import { LayoutedView, ViewId } from '@likec4/core/types';
2
- import { ActorRefFromLogic, SnapshotFrom, StateMachine, Values, NonReducibleUnknown, MetaObject, AnyActorLogic, ConditionalRequired, InputFrom, RequiredLogicInput, IsNotNever, ActorRef, MachineSnapshot, AnyActorRef, StateValue, AnyEventObject, ActionFunction } from 'xstate';
2
+ import { ActorRef, SnapshotFrom, StateMachine } from 'xstate';
3
3
  import { CurrentViewModel } from '../hooks/useCurrentViewModel';
4
4
  export interface NavigationPanelActorInput {
5
5
  view: LayoutedView;
@@ -90,211 +90,11 @@ export interface NavigationPanelActorContext {
90
90
  selectedFolder: string;
91
91
  searchQuery: string;
92
92
  }
93
- declare const _actorLogic: StateMachine<NavigationPanelActorContext, NavigationPanelActorEvent, {}, never, Values<{
94
- "update activatedBy": {
95
- type: "update activatedBy";
96
- params: NonReducibleUnknown;
97
- };
98
- "keep dropdown open": {
99
- type: "keep dropdown open";
100
- params: NonReducibleUnknown;
101
- };
102
- "update selected folder": {
103
- type: "update selected folder";
104
- params: NonReducibleUnknown;
105
- };
106
- "reset selected folder": {
107
- type: "reset selected folder";
108
- params: NonReducibleUnknown;
109
- };
110
- "update inputs": {
111
- type: "update inputs";
112
- params: NonReducibleUnknown;
113
- };
114
- "reset search query": {
115
- type: "reset search query";
116
- params: NonReducibleUnknown;
117
- };
118
- "update search query": {
119
- type: "update search query";
120
- params: NonReducibleUnknown;
121
- };
122
- "emit navigateTo": {
123
- type: "emit navigateTo";
124
- params: NonReducibleUnknown;
125
- };
126
- }>, Values<{
127
- "was opened on hover": {
128
- type: "was opened on hover";
129
- params: unknown;
130
- };
131
- "has search query": {
132
- type: "has search query";
133
- params: unknown;
134
- };
135
- "search query is empty": {
136
- type: "search query is empty";
137
- params: unknown;
138
- };
139
- }>, "open timeout" | "close timeout", "pending" | "idle" | {
140
- active: "search" | "opened" | "closing" | "decide";
141
- }, "active", NavigationPanelActorInput, NonReducibleUnknown, NavigationPanelActorEmitted, MetaObject, {
142
- readonly id: "breadcrumbs";
143
- readonly context: ({ input }: {
144
- spawn: {
145
- <TSrc extends never>(logic: TSrc, ...[options]: never): ActorRefFromLogic<never>;
146
- <TLogic extends AnyActorLogic>(src: TLogic, ...[options]: ConditionalRequired<[options?: {
147
- id?: never;
148
- systemId?: string;
149
- input?: InputFrom<TLogic>;
150
- syncSnapshot?: boolean;
151
- } & { [K in RequiredLogicInput<TLogic>]: unknown; }], IsNotNever<RequiredLogicInput<TLogic>>>): ActorRefFromLogic<TLogic>;
152
- };
153
- input: NavigationPanelActorInput;
154
- self: ActorRef<MachineSnapshot<NavigationPanelActorContext, NavigationPanelActorEvent, Record<string, AnyActorRef | undefined>, StateValue, string, unknown, any, any>, NavigationPanelActorEvent, AnyEventObject>;
155
- }) => {
156
- breadcrumbs: never[];
157
- activatedBy: "hover";
158
- selectedFolder: string;
159
- searchQuery: string;
160
- folderColumns: never[];
161
- view: LayoutedView;
162
- viewModel: CurrentViewModel | null;
163
- };
164
- readonly initial: "idle";
165
- readonly entry: readonly ["update activatedBy", "reset selected folder"];
166
- readonly on: {
167
- readonly 'update.inputs': {
168
- readonly actions: "update inputs";
169
- };
170
- readonly 'searchQuery.change': {
171
- readonly actions: readonly ["update search query", ActionFunction<NavigationPanelActorContext, {
172
- type: "searchQuery.change";
173
- value: string;
174
- }, NavigationPanelActorEvent, undefined, never, never, never, "open timeout" | "close timeout", never>];
175
- };
176
- };
177
- readonly states: {
178
- readonly idle: {
179
- readonly id: "idle";
180
- readonly on: {
181
- readonly 'breadcrumbs.mouseEnter.*': {
182
- readonly target: "pending";
183
- readonly actions: "update activatedBy";
184
- };
185
- readonly 'breadcrumbs.click.*': {
186
- readonly target: "active";
187
- readonly actions: "update activatedBy";
188
- };
189
- };
190
- };
191
- readonly pending: {
192
- readonly on: {
193
- readonly 'breadcrumbs.mouseEnter.*': {
194
- readonly actions: "update activatedBy";
195
- };
196
- readonly 'breadcrumbs.mouseLeave.*': {
197
- readonly target: "idle";
198
- };
199
- readonly 'breadcrumbs.click.*': {
200
- readonly target: "active";
201
- readonly actions: "update activatedBy";
202
- };
203
- };
204
- readonly after: {
205
- readonly 'open timeout': {
206
- readonly target: "active";
207
- };
208
- };
209
- };
210
- readonly active: {
211
- readonly tags: readonly ["active"];
212
- readonly initial: "decide";
213
- readonly on: {
214
- readonly 'dropdown.dismiss': {
215
- readonly target: "#idle";
216
- };
217
- readonly 'breadcrumbs.mouseLeave': {
218
- readonly guard: "was opened on hover";
219
- readonly target: ".closing";
220
- };
221
- readonly 'dropdown.mouseLeave': {
222
- readonly guard: "was opened on hover";
223
- readonly target: ".closing";
224
- };
225
- readonly 'searchQuery.changed': {
226
- readonly target: ".decide";
227
- };
228
- };
229
- readonly states: {
230
- readonly decide: {
231
- readonly always: readonly [{
232
- readonly guard: "has search query";
233
- readonly target: "search";
234
- }, {
235
- readonly target: "opened";
236
- }];
237
- };
238
- readonly opened: {
239
- readonly on: {
240
- readonly 'searchQuery.changed': {
241
- readonly guard: "has search query";
242
- readonly actions: "keep dropdown open";
243
- readonly target: "search";
244
- };
245
- readonly 'breadcrumbs.click.viewtitle': {
246
- readonly actions: "reset selected folder";
247
- };
248
- readonly 'breadcrumbs.click.*': {
249
- readonly actions: "update selected folder";
250
- };
251
- readonly 'select.folder': {
252
- readonly actions: readonly ["keep dropdown open", "update selected folder"];
253
- };
254
- readonly 'select.view': {
255
- readonly actions: readonly ["emit navigateTo"];
256
- };
257
- };
258
- };
259
- readonly search: {
260
- readonly on: {
261
- readonly 'breadcrumbs.click.viewtitle': {
262
- readonly actions: readonly ["reset search query", "reset selected folder"];
263
- readonly target: "opened";
264
- };
265
- readonly 'breadcrumbs.click.*': {
266
- readonly actions: readonly ["reset search query", "update selected folder"];
267
- readonly target: "opened";
268
- };
269
- readonly 'select.view': {
270
- readonly actions: readonly ["emit navigateTo"];
271
- };
272
- };
273
- };
274
- readonly closing: {
275
- readonly on: {
276
- readonly 'breadcrumbs.mouseEnter.*': {
277
- readonly target: "decide";
278
- };
279
- readonly 'dropdown.mouseEnter': {
280
- readonly target: "decide";
281
- };
282
- };
283
- readonly after: {
284
- readonly 'close timeout': {
285
- readonly target: "#idle";
286
- };
287
- };
288
- };
289
- };
290
- };
291
- };
292
- }>;
293
- type InferredMachine = typeof _actorLogic;
294
- export interface NavigationPanelActorLogic extends InferredMachine {
93
+ type Tags = 'active';
94
+ export interface NavigationPanelActorLogic extends StateMachine<NavigationPanelActorContext, NavigationPanelActorEvent, {}, any, any, any, any, any, Tags, NavigationPanelActorInput, any, NavigationPanelActorEmitted, any, any> {
295
95
  }
296
96
  export declare const navigationPanelActorLogic: NavigationPanelActorLogic;
297
97
  export type NavigationPanelActorSnapshot = SnapshotFrom<NavigationPanelActorLogic>;
298
- export interface NavigationPanelActorRef extends ActorRefFromLogic<NavigationPanelActorLogic> {
98
+ export interface NavigationPanelActorRef extends ActorRef<NavigationPanelActorSnapshot, NavigationPanelActorEvent, NavigationPanelActorEmitted> {
299
99
  }
300
100
  export {};
@@ -5,7 +5,7 @@ const _actorLogic = setup({
5
5
  types: {
6
6
  context: {},
7
7
  events: {},
8
- tags: "active",
8
+ tags: "",
9
9
  input: {},
10
10
  emitted: {}
11
11
  },
@@ -6,8 +6,8 @@ import { AnimatePresence } from 'motion/react';
6
6
  import * as m from 'motion/react-m';
7
7
  import { useDiagramContext } from '../../hooks/useDiagram.js';
8
8
  import { useDiagram } from '../../hooks/safeContext.js';
9
- import IconLock from '../../node_modules/.pnpm/@tabler_icons-react@3.35.0_react@19.2.0/node_modules/@tabler/icons-react/dist/esm/icons/IconLock.js';
10
9
  import IconLockOpen2 from '../../node_modules/.pnpm/@tabler_icons-react@3.35.0_react@19.2.0/node_modules/@tabler/icons-react/dist/esm/icons/IconLockOpen2.js';
10
+ import IconLock from '../../node_modules/.pnpm/@tabler_icons-react@3.35.0_react@19.2.0/node_modules/@tabler/icons-react/dist/esm/icons/IconLock.js';
11
11
 
12
12
  const selector = (ctx) => ({
13
13
  visible: ctx.features.enableReadOnly !== true && // Disable toggle in sequence mode
@@ -22,6 +22,7 @@ const ToggleReadonly = () => {
22
22
  {
23
23
  component: m.button,
24
24
  layout: "position",
25
+ layoutDependency: isReadOnly,
25
26
  onClick: (e) => {
26
27
  e.stopPropagation();
27
28
  diagram.toggleFeature("ReadOnly");
@@ -51,8 +52,9 @@ const ToggleReadonly = () => {
51
52
  })
52
53
  ),
53
54
  children: [
54
- isReadOnly ? /* @__PURE__ */ jsx(IconLock, { size: 14, stroke: 2 }) : /* @__PURE__ */ jsx(IconLockOpen2, { size: 14, stroke: 2 }),
55
- isReadOnly && /* @__PURE__ */ jsx(
55
+ /* @__PURE__ */ jsx(IconLockOpen2, { size: 14, stroke: 2, style: { display: isReadOnly ? "none" : void 0 } }),
56
+ /* @__PURE__ */ jsx(IconLock, { size: 14, stroke: 2, style: { display: !isReadOnly ? "none" : void 0 } }),
57
+ /* @__PURE__ */ jsx(
56
58
  m.div,
57
59
  {
58
60
  className: css({
@@ -61,6 +63,9 @@ const ToggleReadonly = () => {
61
63
  lineHeight: 1,
62
64
  opacity: 0.8
63
65
  }),
66
+ style: {
67
+ display: isReadOnly ? "block" : "none"
68
+ },
64
69
  children: "Edit"
65
70
  }
66
71
  )
@@ -1,11 +1,11 @@
1
1
  import { ButtonProps } from '@mantine/core';
2
- import { ForwardRefExoticComponent, ReactEventHandler, FormEventHandler, AriaRole, ClipboardEventHandler, CompositionEventHandler, FocusEventHandler, InputEventHandler, KeyboardEventHandler, MouseEventHandler, DragEventHandler, TouchEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler, AnimationEventHandler, ToggleEventHandler, TransitionEventHandler, Key, Ref, RefAttributes } from 'react';
2
+ import { ForwardRefExoticComponent, FormEventHandler, AriaRole, ClipboardEventHandler, CompositionEventHandler, FocusEventHandler, InputEventHandler, ReactEventHandler, KeyboardEventHandler, MouseEventHandler, DragEventHandler, TouchEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler, AnimationEventHandler, ToggleEventHandler, TransitionEventHandler, Key, Ref, RefAttributes } from 'react';
3
3
  import { MotionProps } from 'motion/react';
4
4
  export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<ButtonProps & {
5
- type?: "button" | "submit" | "reset" | undefined;
5
+ name?: string | undefined;
6
+ onChange?: FormEventHandler<HTMLButtonElement> | undefined;
6
7
  id?: string | undefined;
7
- onError?: ReactEventHandler<HTMLButtonElement> | undefined;
8
- value?: string | number | readonly string[] | undefined;
8
+ type?: "button" | "submit" | "reset" | undefined;
9
9
  form?: string | undefined;
10
10
  hidden?: boolean | undefined;
11
11
  draggable?: (boolean | "true" | "false") | undefined;
@@ -13,13 +13,67 @@ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<Bu
13
13
  title?: string | undefined;
14
14
  color?: string | undefined;
15
15
  dir?: string | undefined;
16
- onChange?: FormEventHandler<HTMLButtonElement> | undefined;
16
+ property?: string | undefined;
17
17
  role?: AriaRole | undefined;
18
18
  "aria-label"?: string | undefined;
19
- defaultValue?: string | number | readonly string[] | undefined;
20
19
  dangerouslySetInnerHTML?: {
21
20
  __html: string | TrustedHTML;
22
21
  } | undefined;
22
+ suppressHydrationWarning?: boolean | undefined;
23
+ lang?: string | undefined;
24
+ tabIndex?: number | undefined;
25
+ "aria-activedescendant"?: string | undefined;
26
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
27
+ "aria-autocomplete"?: "list" | "none" | "both" | "inline" | undefined;
28
+ "aria-braillelabel"?: string | undefined;
29
+ "aria-brailleroledescription"?: string | undefined;
30
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
31
+ "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
32
+ "aria-colcount"?: number | undefined;
33
+ "aria-colindex"?: number | undefined;
34
+ "aria-colindextext"?: string | undefined;
35
+ "aria-colspan"?: number | undefined;
36
+ "aria-controls"?: string | undefined;
37
+ "aria-current"?: boolean | "step" | "time" | "page" | "location" | "date" | "true" | "false" | undefined;
38
+ "aria-describedby"?: string | undefined;
39
+ "aria-description"?: string | undefined;
40
+ "aria-details"?: string | undefined;
41
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
42
+ "aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
43
+ "aria-errormessage"?: string | undefined;
44
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
45
+ "aria-flowto"?: string | undefined;
46
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
47
+ "aria-haspopup"?: boolean | "dialog" | "grid" | "listbox" | "menu" | "tree" | "true" | "false" | undefined;
48
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
49
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
50
+ "aria-keyshortcuts"?: string | undefined;
51
+ "aria-labelledby"?: string | undefined;
52
+ "aria-level"?: number | undefined;
53
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
54
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
55
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
56
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
57
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
58
+ "aria-owns"?: string | undefined;
59
+ "aria-placeholder"?: string | undefined;
60
+ "aria-posinset"?: number | undefined;
61
+ "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
62
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
63
+ "aria-relevant"?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
64
+ "aria-required"?: (boolean | "true" | "false") | undefined;
65
+ "aria-roledescription"?: string | undefined;
66
+ "aria-rowcount"?: number | undefined;
67
+ "aria-rowindex"?: number | undefined;
68
+ "aria-rowindextext"?: string | undefined;
69
+ "aria-rowspan"?: number | undefined;
70
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
71
+ "aria-setsize"?: number | undefined;
72
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
73
+ "aria-valuemax"?: number | undefined;
74
+ "aria-valuemin"?: number | undefined;
75
+ "aria-valuenow"?: number | undefined;
76
+ "aria-valuetext"?: string | undefined;
23
77
  onCopy?: ClipboardEventHandler<HTMLButtonElement> | undefined;
24
78
  onCopyCapture?: ClipboardEventHandler<HTMLButtonElement> | undefined;
25
79
  onCut?: ClipboardEventHandler<HTMLButtonElement> | undefined;
@@ -49,6 +103,7 @@ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<Bu
49
103
  onInvalidCapture?: FormEventHandler<HTMLButtonElement> | undefined;
50
104
  onLoad?: ReactEventHandler<HTMLButtonElement> | undefined;
51
105
  onLoadCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
106
+ onError?: ReactEventHandler<HTMLButtonElement> | undefined;
52
107
  onErrorCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
53
108
  onKeyDown?: KeyboardEventHandler<HTMLButtonElement> | undefined;
54
109
  onKeyDownCapture?: KeyboardEventHandler<HTMLButtonElement> | undefined;
@@ -182,20 +237,20 @@ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<Bu
182
237
  onTransitionRunCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
183
238
  onTransitionStart?: TransitionEventHandler<HTMLButtonElement> | undefined;
184
239
  onTransitionStartCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
240
+ value?: string | number | readonly string[] | undefined;
241
+ key?: Key | null | undefined;
242
+ defaultValue?: string | number | readonly string[] | undefined;
185
243
  defaultChecked?: boolean | undefined;
186
244
  suppressContentEditableWarning?: boolean | undefined;
187
- suppressHydrationWarning?: boolean | undefined;
188
245
  accessKey?: string | undefined;
189
- autoCapitalize?: "on" | "none" | (string & {}) | "off" | "sentences" | "words" | "characters" | undefined;
246
+ autoCapitalize?: "none" | (string & {}) | "on" | "off" | "sentences" | "words" | "characters" | undefined;
190
247
  autoFocus?: boolean | undefined;
191
248
  contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
192
249
  contextMenu?: string | undefined;
193
- enterKeyHint?: "search" | "done" | "send" | "next" | "previous" | "enter" | "go" | undefined;
194
- lang?: string | undefined;
250
+ enterKeyHint?: "search" | "next" | "previous" | "send" | "done" | "enter" | "go" | undefined;
195
251
  nonce?: string | undefined;
196
252
  slot?: string | undefined;
197
253
  spellCheck?: (boolean | "true" | "false") | undefined;
198
- tabIndex?: number | undefined;
199
254
  translate?: "yes" | "no" | undefined;
200
255
  radioGroup?: string | undefined;
201
256
  about?: string | undefined;
@@ -203,7 +258,6 @@ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<Bu
203
258
  datatype?: string | undefined;
204
259
  inlist?: any;
205
260
  prefix?: string | undefined;
206
- property?: string | undefined;
207
261
  rel?: string | undefined;
208
262
  resource?: string | undefined;
209
263
  rev?: string | undefined;
@@ -227,60 +281,6 @@ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<Bu
227
281
  is?: string | undefined;
228
282
  exportparts?: string | undefined;
229
283
  part?: string | undefined;
230
- "aria-activedescendant"?: string | undefined;
231
- "aria-atomic"?: (boolean | "true" | "false") | undefined;
232
- "aria-autocomplete"?: "list" | "none" | "both" | "inline" | undefined;
233
- "aria-braillelabel"?: string | undefined;
234
- "aria-brailleroledescription"?: string | undefined;
235
- "aria-busy"?: (boolean | "true" | "false") | undefined;
236
- "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
237
- "aria-colcount"?: number | undefined;
238
- "aria-colindex"?: number | undefined;
239
- "aria-colindextext"?: string | undefined;
240
- "aria-colspan"?: number | undefined;
241
- "aria-controls"?: string | undefined;
242
- "aria-current"?: boolean | "step" | "time" | "page" | "location" | "date" | "true" | "false" | undefined;
243
- "aria-describedby"?: string | undefined;
244
- "aria-description"?: string | undefined;
245
- "aria-details"?: string | undefined;
246
- "aria-disabled"?: (boolean | "true" | "false") | undefined;
247
- "aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
248
- "aria-errormessage"?: string | undefined;
249
- "aria-expanded"?: (boolean | "true" | "false") | undefined;
250
- "aria-flowto"?: string | undefined;
251
- "aria-grabbed"?: (boolean | "true" | "false") | undefined;
252
- "aria-haspopup"?: boolean | "dialog" | "grid" | "listbox" | "menu" | "tree" | "true" | "false" | undefined;
253
- "aria-hidden"?: (boolean | "true" | "false") | undefined;
254
- "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
255
- "aria-keyshortcuts"?: string | undefined;
256
- "aria-labelledby"?: string | undefined;
257
- "aria-level"?: number | undefined;
258
- "aria-live"?: "off" | "assertive" | "polite" | undefined;
259
- "aria-modal"?: (boolean | "true" | "false") | undefined;
260
- "aria-multiline"?: (boolean | "true" | "false") | undefined;
261
- "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
262
- "aria-orientation"?: "horizontal" | "vertical" | undefined;
263
- "aria-owns"?: string | undefined;
264
- "aria-placeholder"?: string | undefined;
265
- "aria-posinset"?: number | undefined;
266
- "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
267
- "aria-readonly"?: (boolean | "true" | "false") | undefined;
268
- "aria-relevant"?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
269
- "aria-required"?: (boolean | "true" | "false") | undefined;
270
- "aria-roledescription"?: string | undefined;
271
- "aria-rowcount"?: number | undefined;
272
- "aria-rowindex"?: number | undefined;
273
- "aria-rowindextext"?: string | undefined;
274
- "aria-rowspan"?: number | undefined;
275
- "aria-selected"?: (boolean | "true" | "false") | undefined;
276
- "aria-setsize"?: number | undefined;
277
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
278
- "aria-valuemax"?: number | undefined;
279
- "aria-valuemin"?: number | undefined;
280
- "aria-valuenow"?: number | undefined;
281
- "aria-valuetext"?: string | undefined;
282
- name?: string | undefined;
283
- key?: Key | null | undefined;
284
284
  ref?: Ref<HTMLButtonElement> | undefined;
285
285
  disabled?: boolean | undefined;
286
286
  formAction?: string | ((formData: FormData) => void | Promise<void>) | undefined;
@@ -27,12 +27,13 @@ function selectWalkthroughNotes(s) {
27
27
  isParallel: isActive && isTruthy(s.activeWalkthrough?.parallelPrefix),
28
28
  hasNext: isActive && activeStepIndex < s.xyedges.length - 1,
29
29
  hasPrevious: isActive && activeStepIndex > 0,
30
- notes: isActive ? s.xyedges[activeStepIndex]?.data?.notes ?? RichText.EMPTY : null
30
+ notes: isActive ? s.xyedges[activeStepIndex]?.data?.notes ?? null : null
31
31
  };
32
32
  }
33
33
  const WalkthroughPanel = memo(() => {
34
- const { isActive, notes } = useDiagramContext(selectWalkthroughNotes);
35
- return /* @__PURE__ */ jsx(AnimatePresence, { children: isActive && notes && !notes.isEmpty && /* @__PURE__ */ jsx(
34
+ const { isActive, notes: _notes } = useDiagramContext(selectWalkthroughNotes);
35
+ const notes = _notes ? RichText.from(_notes) : RichText.EMPTY;
36
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: isActive && !notes.isEmpty && /* @__PURE__ */ jsx(
36
37
  m.div,
37
38
  {
38
39
  layout: "position",
@@ -39,9 +39,9 @@ const card = css({
39
39
  border: "none",
40
40
  backgroundImage: `
41
41
  linear-gradient(180deg,
42
- color-mix(in srgb, var(--likec4-palette-fill) 60%, transparent),
43
- color-mix(in srgb, var(--likec4-palette-fill) 20%, transparent) 8px,
44
- color-mix(in srgb, var(--likec4-palette-fill) 14%, transparent) 20px,
42
+ color-mix(in oklab, var(--likec4-palette-fill) 60%, transparent),
43
+ color-mix(in oklab, var(--likec4-palette-fill) 20%, transparent) 8px,
44
+ color-mix(in oklab, var(--likec4-palette-fill) 14%, transparent) 20px,
45
45
  transparent 80px
46
46
  ),
47
47
  linear-gradient(180deg, var(--likec4-palette-fill), var(--likec4-palette-fill) 4px, transparent 4px)
@@ -1,5 +1,6 @@
1
+ import { ReactNode } from 'react';
1
2
  export declare function MetadataProvider({ children }: {
2
- children: React.ReactNode;
3
+ children: ReactNode;
3
4
  }): import("react/jsx-runtime").JSX.Element;
4
5
  interface MetadataValueProps {
5
6
  label: string;
@@ -1,7 +1,7 @@
1
1
  import { DiagramView, Fqn, NodeId } from '@likec4/core/types';
2
2
  import { Rect } from '@xyflow/system';
3
- import { ActorRefFromLogic, SnapshotFrom, StateMachine, NonReducibleUnknown, EventObject, MetaObject, ConditionalRequired, InputFrom, RequiredActorOptions, IsNotNever, GetConcreteByKey, AnyActorLogic, RequiredLogicInput, ActorRef, MachineSnapshot, AnyActorRef, StateValue, AnyEventObject, ActionFunction, StopAction } from 'xstate';
4
- import { RelationshipsBrowserLogic } from '../relationships-browser/actor';
3
+ import { ActorRef, SnapshotFrom, StateMachine } from 'xstate';
4
+ import { RelationshipsBrowserActorRef } from '../relationships-browser/actor';
5
5
  export type Input = {
6
6
  subject: Fqn;
7
7
  currentView: DiagramView;
@@ -24,87 +24,12 @@ export type Events = {
24
24
  } | {
25
25
  type: 'close';
26
26
  };
27
- declare const _elementDetailsLogic: StateMachine<Context, Events, {
28
- [x: `${string}-relationships`]: ActorRefFromLogic< RelationshipsBrowserLogic> | undefined;
29
- }, {
30
- src: "relationshipsBrowserLogic";
31
- logic: RelationshipsBrowserLogic;
32
- id: `${string}-relationships`;
33
- }, never, never, never, "active" | "closed", string, Input, NonReducibleUnknown, EventObject, MetaObject, {
34
- readonly id: "element-details";
35
- readonly context: ({ input }: {
36
- spawn: {
37
- <TSrc extends "relationshipsBrowserLogic">(logic: TSrc, ...[options]: {
38
- src: "relationshipsBrowserLogic";
39
- logic: RelationshipsBrowserLogic;
40
- id: `${string}-relationships`;
41
- } extends infer T ? T extends {
42
- src: "relationshipsBrowserLogic";
43
- logic: RelationshipsBrowserLogic;
44
- id: `${string}-relationships`;
45
- } ? T extends {
46
- src: TSrc;
47
- } ? ConditionalRequired<[options?: {
48
- id?: T["id"];
49
- systemId?: string;
50
- input?: InputFrom<T["logic"]>;
51
- syncSnapshot?: boolean;
52
- } & { [K in RequiredActorOptions<T>]: unknown; }], IsNotNever<RequiredActorOptions<T>>> : never : never : never): ActorRefFromLogic< GetConcreteByKey<{
53
- src: "relationshipsBrowserLogic";
54
- logic: RelationshipsBrowserLogic;
55
- id: `${string}-relationships`;
56
- }, "src", TSrc>["logic"]>;
57
- <TLogic extends AnyActorLogic>(src: TLogic, ...[options]: ConditionalRequired<[options?: {
58
- id?: never;
59
- systemId?: string;
60
- input?: InputFrom<TLogic>;
61
- syncSnapshot?: boolean;
62
- } & { [K in RequiredLogicInput<TLogic>]: unknown; }], IsNotNever<RequiredLogicInput<TLogic>>>): ActorRefFromLogic<TLogic>;
63
- };
64
- input: Input;
65
- self: ActorRef<MachineSnapshot<Context, Events, Record<string, AnyActorRef | undefined>, StateValue, string, unknown, any, any>, Events, AnyEventObject>;
66
- }) => {
67
- initiatedFrom: {
68
- node: NodeId | null;
69
- clientRect: Rect | null;
70
- };
71
- subject: Fqn;
72
- currentView: DiagramView;
73
- };
74
- readonly initial: "active";
75
- readonly states: {
76
- readonly active: {
77
- readonly entry: ActionFunction<Context, Events, Events, undefined, {
78
- src: "relationshipsBrowserLogic";
79
- logic: RelationshipsBrowserLogic;
80
- id: `${string}-relationships`;
81
- }, never, never, never, never>;
82
- readonly exit: readonly [ ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>, StopAction<Context, Events, undefined, Events>];
83
- readonly on: {
84
- readonly 'change.subject': {
85
- readonly actions: ActionFunction<Context, {
86
- type: "change.subject";
87
- subject: Fqn;
88
- }, Events, undefined, {
89
- src: "relationshipsBrowserLogic";
90
- logic: RelationshipsBrowserLogic;
91
- id: `${string}-relationships`;
92
- }, never, never, never, never>;
93
- };
94
- readonly close: "closed";
95
- };
96
- };
97
- readonly closed: {
98
- readonly id: "closed";
99
- readonly type: "final";
100
- };
101
- };
102
- }>;
103
- type InferredMachine = typeof _elementDetailsLogic;
104
- export interface ElementDetailsLogic extends InferredMachine {
27
+ export interface ElementDetailsLogic extends StateMachine<Context, Events, {
28
+ [key: `${string}-relationships`]: RelationshipsBrowserActorRef | undefined;
29
+ }, any, any, any, any, any, never, Input, any, any, any, any> {
105
30
  }
106
31
  export declare const elementDetailsLogic: ElementDetailsLogic;
107
- export interface ElementDetailsActorRef extends ActorRefFromLogic<ElementDetailsLogic> {
108
- }
109
32
  export type ElementDetailsSnapshot = SnapshotFrom<ElementDetailsLogic>;
110
- export {};
33
+ export interface ElementDetailsActorRef extends ActorRef<ElementDetailsSnapshot, Events> {
34
+ }
35
+ export type { Input as ElementDetailsInput, };
@@ -52,14 +52,6 @@ const _elementDetailsLogic = setup({
52
52
  type: "final"
53
53
  }
54
54
  }
55
- // exit: assign({
56
- // initialized: false,
57
- // xyflow: null,
58
- // layouted: null,
59
- // xystore: null,
60
- // xyedges: [],
61
- // xynodes: [],
62
- // }),
63
55
  });
64
56
  const elementDetailsLogic = _elementDetailsLogic;
65
57
 
@@ -79,9 +79,9 @@ const Overlay = forwardRef(({
79
79
  initial: {
80
80
  [backdropBlur]: "0px",
81
81
  [backdropOpacity]: "0%",
82
- scale: 0.95,
83
- originY: 0,
84
- translateY: -20,
82
+ scale: 0.85,
83
+ // originY: 0.4,
84
+ // translateY: -10,
85
85
  opacity: 0
86
86
  },
87
87
  animate: {
@@ -89,18 +89,18 @@ const Overlay = forwardRef(({
89
89
  [backdropOpacity]: targetBackdropOpacity,
90
90
  scale: 1,
91
91
  opacity: 1,
92
- translateY: 0,
93
- transition: {
94
- delay: 0.075
95
- }
92
+ translateY: 0
93
+ // transition: {
94
+ // delay: 0.075,
95
+ // },
96
96
  },
97
97
  exit: {
98
98
  opacity: 0,
99
99
  scale: 0.98,
100
100
  translateY: -20,
101
- transition: {
102
- duration: 0.1
103
- },
101
+ // transition: {
102
+ // duration: 0.1,
103
+ // },
104
104
  [backdropBlur]: "0px",
105
105
  [backdropOpacity]: "0%"
106
106
  }