likec4 1.59.2 → 1.59.4

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 (69) hide show
  1. package/__app__/src/chunks/AIChat.mjs +118 -123
  2. package/__app__/src/chunks/LikeC4Styles.mjs +828 -686
  3. package/__app__/src/chunks/ProjectsOverview.mjs +82 -82
  4. package/__app__/src/chunks/es.mjs +1 -1
  5. package/__app__/src/chunks/hooks.mjs +164 -135
  6. package/__app__/src/chunks/libs/@floating-ui.mjs +649 -335
  7. package/__app__/src/chunks/libs/@mantine.mjs +2934 -2040
  8. package/__app__/src/chunks/libs/@tanstack-ai.mjs +28 -28
  9. package/__app__/src/chunks/libs/@tanstack.mjs +46 -51
  10. package/__app__/src/chunks/libs/@xstate/react.mjs +59 -40
  11. package/__app__/src/chunks/libs/@xyflow/react.mjs +535 -448
  12. package/__app__/src/chunks/libs/bezier-js.mjs +10 -9
  13. package/__app__/src/chunks/libs/d3.mjs +20 -45
  14. package/__app__/src/chunks/libs/fast-equals.mjs +62 -50
  15. package/__app__/src/chunks/libs/framer.mjs +300 -279
  16. package/__app__/src/chunks/libs/zod.mjs +17 -14
  17. package/__app__/src/chunks/rolldown-runtime.mjs +2 -2
  18. package/__app__/src/chunks/styled-system.mjs +2580 -132
  19. package/__app__/src/main.mjs +24925 -23485
  20. package/__app__/src/style.css +1 -1
  21. package/config/schema.json +49 -0
  22. package/dist/app/render-view-client.css +1 -0
  23. package/dist/app/render-view-client.js +739 -0
  24. package/dist/chunks/enableServer.mjs +1 -1
  25. package/dist/chunks/filenames.mjs +7 -6
  26. package/dist/chunks/index.d.mts +18 -1
  27. package/dist/chunks/index2.d.mts +79 -26
  28. package/dist/chunks/libs/@chevrotain/gast.mjs +1 -1
  29. package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +5 -5
  30. package/dist/chunks/libs/@chevrotain/types.d.mts +108 -0
  31. package/dist/chunks/libs/@logtape/logtape.mjs +4 -4
  32. package/dist/chunks/libs/@lume/kiwi.mjs +1 -1
  33. package/dist/chunks/libs/birpc.mjs +1 -1
  34. package/dist/chunks/libs/chevrotain-allstar.mjs +1 -1
  35. package/dist/chunks/libs/chevrotain.mjs +16 -16
  36. package/dist/chunks/libs/json5.mjs +3 -3
  37. package/dist/chunks/libs/langium.d.mts +1777 -16
  38. package/dist/chunks/libs/langium.mjs +11 -11
  39. package/dist/chunks/libs/merge-error-cause.mjs +2 -2
  40. package/dist/chunks/libs/p-queue.mjs +1 -1
  41. package/dist/chunks/libs/package-manager-detector.mjs +1 -1
  42. package/dist/chunks/libs/pako.mjs +2 -2
  43. package/dist/chunks/libs/picomatch.mjs +1 -1
  44. package/dist/chunks/libs/pretty-ms.mjs +1 -1
  45. package/dist/chunks/libs/remeda.mjs +1 -1
  46. package/dist/chunks/libs/ufo.mjs +1 -1
  47. package/dist/chunks/libs/unstorage.mjs +1 -1
  48. package/dist/chunks/libs/zod.d.mts +1717 -17
  49. package/dist/chunks/libs/zod.mjs +4 -4
  50. package/dist/chunks/node.mjs +68 -57
  51. package/dist/chunks/rolldown-runtime.mjs +1 -1
  52. package/dist/chunks/sequence-view.mjs +1 -1
  53. package/dist/chunks/vite-plugin.mjs +168 -54
  54. package/dist/cli/index.d.mts +1 -1
  55. package/dist/cli/index.mjs +291 -165
  56. package/dist/config/index.d.mts +7 -1
  57. package/dist/config/index.mjs +1 -1
  58. package/dist/index.d.mts +3 -3
  59. package/dist/index.mjs +1 -1
  60. package/dist/model/index.d.mts +4 -4
  61. package/dist/vite-plugin/index.d.mts +2 -2
  62. package/dist/vite-plugin/internal/index.d.mts +72 -35
  63. package/dist/vite-plugin/internal/index.mjs +125 -44
  64. package/package.json +47 -47
  65. package/react/index.d.mts +22767 -1432
  66. package/react/index.mjs +38152 -32309
  67. package/vite-plugin-modules.d.ts +21 -1
  68. package/dist/chunks/dist.mjs +0 -10
  69. package/dist/chunks/logger.mjs +0 -1
@@ -1,14 +1,31 @@
1
1
  import { LikeC4Model } from "@likec4/core/model";
2
2
  import { useCallback, useMemo, useRef, useSyncExternalStore } from "react";
3
3
 
4
- //#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/atom/index.js
4
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/atom/index.js
5
5
  let listenerQueue = [];
6
6
  let lqIndex = 0;
7
+ let batchSeen = null;
7
8
  const QUEUE_ITEMS_PER_LISTENER = 4;
8
9
  const nanostoresGlobal = globalThis.nanostoresGlobal ||= { epoch: 0 };
10
+ let drainQueue = () => {
11
+ let thrown;
12
+ let i;
13
+ while (lqIndex < listenerQueue.length) {
14
+ i = lqIndex;
15
+ lqIndex += QUEUE_ITEMS_PER_LISTENER;
16
+ try {
17
+ listenerQueue[i](listenerQueue[i + 1].value, listenerQueue[i + 2], listenerQueue[i + 3]);
18
+ } catch (e) {
19
+ thrown = e;
20
+ }
21
+ }
22
+ listenerQueue.length = lqIndex = 0;
23
+ if (thrown) throw thrown;
24
+ };
9
25
  const atom = /* @__NO_SIDE_EFFECTS__ */ (initialValue) => {
10
26
  let listeners = [];
11
27
  let $atom = {
28
+ eq: Object.is,
12
29
  get() {
13
30
  if (!$atom.lc) $atom.listen(() => {})();
14
31
  return $atom.value;
@@ -18,7 +35,7 @@ const atom = /* @__NO_SIDE_EFFECTS__ */ (initialValue) => {
18
35
  listen(listener) {
19
36
  $atom.lc = listeners.push(listener);
20
37
  return () => {
21
- for (let i = lqIndex + QUEUE_ITEMS_PER_LISTENER; i < listenerQueue.length;) if (listenerQueue[i] === listener) listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER);
38
+ for (let i = lqIndex; i < listenerQueue.length;) if (listenerQueue[i] === listener) listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER);
22
39
  else i += QUEUE_ITEMS_PER_LISTENER;
23
40
  let index = listeners.indexOf(listener);
24
41
  if (~index) {
@@ -29,17 +46,18 @@ const atom = /* @__NO_SIDE_EFFECTS__ */ (initialValue) => {
29
46
  },
30
47
  notify(oldValue, changedKey) {
31
48
  nanostoresGlobal.epoch++;
32
- let runListenerQueue = !listenerQueue.length;
33
- for (let listener of listeners) listenerQueue.push(listener, $atom.value, oldValue, changedKey);
34
- if (runListenerQueue) {
35
- for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER) listenerQueue[lqIndex](listenerQueue[lqIndex + 1], listenerQueue[lqIndex + 2], listenerQueue[lqIndex + 3]);
36
- listenerQueue.length = 0;
49
+ let runListenerQueue = !listenerQueue.length && !batchSeen;
50
+ for (let listener of listeners) {
51
+ if (batchSeen?.has(listener)) continue;
52
+ batchSeen?.add(listener);
53
+ listenerQueue.push(listener, $atom, oldValue, batchSeen ? void 0 : changedKey);
37
54
  }
55
+ if (runListenerQueue) drainQueue();
38
56
  },
39
57
  off() {},
40
58
  set(newValue) {
41
59
  let oldValue = $atom.value;
42
- if (oldValue !== newValue) {
60
+ if (!$atom.eq(oldValue, newValue)) {
43
61
  $atom.value = newValue;
44
62
  $atom.notify(oldValue);
45
63
  }
@@ -55,7 +73,7 @@ const atom = /* @__NO_SIDE_EFFECTS__ */ (initialValue) => {
55
73
  };
56
74
 
57
75
  //#endregion
58
- //#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/lifecycle/index.js
76
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/lifecycle/index.js
59
77
  const MOUNT = 5;
60
78
  const UNMOUNT = 6;
61
79
  const REVERT_MUTATION = 10;
@@ -72,11 +90,12 @@ let on = (object, listener, eventKey, mutateStore) => {
72
90
  return () => {
73
91
  let currentListeners = object.events[eventKey];
74
92
  let index = currentListeners.indexOf(listener);
75
- currentListeners.splice(index, 1);
76
- if (!currentListeners.length) {
77
- delete object.events[eventKey];
78
- object.events[eventKey + REVERT_MUTATION]();
79
- delete object.events[eventKey + REVERT_MUTATION];
93
+ if (~index) {
94
+ currentListeners.splice(index, 1);
95
+ if (!currentListeners.length) {
96
+ object.events[eventKey + REVERT_MUTATION]();
97
+ delete object.events[eventKey + REVERT_MUTATION];
98
+ }
80
99
  }
81
100
  };
82
101
  };
@@ -115,7 +134,7 @@ let onMount = ($store, initialize) => {
115
134
  };
116
135
 
117
136
  //#endregion
118
- //#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/computed/index.js
137
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/computed/index.js
119
138
  let computedStore = (stores, cb, batched) => {
120
139
  if (!Array.isArray(stores)) stores = [stores];
121
140
  let previousArgs;
@@ -124,7 +143,7 @@ let computedStore = (stores, cb, batched) => {
124
143
  if (currentEpoch === nanostoresGlobal.epoch) return;
125
144
  currentEpoch = nanostoresGlobal.epoch;
126
145
  let args = stores.map(($store) => $store.get());
127
- if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {
146
+ if (!previousArgs?.every((arg, i) => stores[i].eq(arg, args[i]))) {
128
147
  previousArgs = args;
129
148
  let value = cb(...args);
130
149
  if (value && value.then && value.t) value.then((asyncValue) => {
@@ -136,7 +155,7 @@ let computedStore = (stores, cb, batched) => {
136
155
  }
137
156
  }
138
157
  };
139
- let $computed = /* @__PURE__ */ atom(void 0);
158
+ let $computed = /* @__PURE__ */ atom();
140
159
  let get = $computed.get;
141
160
  $computed.get = () => {
142
161
  set();
@@ -160,25 +179,49 @@ const computed = /* @__NO_SIDE_EFFECTS__ */ (stores, fn) => computedStore(stores
160
179
  const batched = /* @__NO_SIDE_EFFECTS__ */ (stores, fn) => computedStore(stores, fn, true);
161
180
 
162
181
  //#endregion
163
- //#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/listen-keys/index.js
182
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/deep-map/path.js
183
+ function getPath(obj, path) {
184
+ let allKeys = getAllKeysFromPath(path);
185
+ let res = obj;
186
+ for (let key of allKeys) {
187
+ if (res == null) return;
188
+ res = res[key];
189
+ }
190
+ return res;
191
+ }
192
+ const ARRAY_INDEX = /(.*)\[(\d+)\]/;
193
+ function getAllKeysFromPath(path) {
194
+ return path.split(".").flatMap((key) => getKeyAndIndicesFromKey(key));
195
+ }
196
+ function getKeyAndIndicesFromKey(key) {
197
+ if (ARRAY_INDEX.test(key)) {
198
+ let [, keyPart, index] = key.match(ARRAY_INDEX);
199
+ return [...getKeyAndIndicesFromKey(keyPart), index];
200
+ }
201
+ return [key];
202
+ }
203
+
204
+ //#endregion
205
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/listen-keys/index.js
164
206
  function listenKeys($store, keys, listener) {
165
- let keysSet = new Set(keys).add(void 0);
207
+ let keysSet = new Set(keys);
166
208
  return $store.listen((value, oldValue, changed) => {
167
- if (keysSet.has(changed)) listener(value, oldValue, changed);
209
+ if (changed === void 0 ? keys.some((key) => oldValue === void 0 || value[key] !== oldValue[key] || getPath(value, key) !== getPath(oldValue, key)) : keysSet.has(changed) || keysSet.has(changed.split(/\.|\[/)[0])) listener(value, oldValue, changed);
168
210
  });
169
211
  }
170
212
 
171
213
  //#endregion
172
- //#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/map/index.js
214
+ //#region ../../node_modules/.pnpm/nanostores@1.5.3/node_modules/nanostores/map/index.js
173
215
  const map = /* @__NO_SIDE_EFFECTS__ */ (initial = {}) => {
174
216
  let $map = /* @__PURE__ */ atom(initial);
217
+ $map.eqKey = Object.is;
175
218
  $map.setKey = function(key, value) {
176
219
  let oldMap = $map.value;
177
220
  if (typeof value === "undefined" && key in $map.value) {
178
221
  $map.value = { ...$map.value };
179
222
  delete $map.value[key];
180
223
  $map.notify(oldMap, key);
181
- } else if ($map.value[key] !== value) {
224
+ } else if (!$map.eqKey($map.value[key], value, key)) {
182
225
  $map.value = {
183
226
  ...$map.value,
184
227
  [key]: value
@@ -190,7 +233,7 @@ const map = /* @__NO_SIDE_EFFECTS__ */ (initial = {}) => {
190
233
  };
191
234
 
192
235
  //#endregion
193
- //#region ../../node_modules/.pnpm/@nanostores+react@1.1.0_nanostores@1.3.0_react@19.2.7/node_modules/@nanostores/react/index.js
236
+ //#region ../../node_modules/.pnpm/@nanostores+react@1.1.0_nanostores@1.5.3_react@19.2.8/node_modules/@nanostores/react/index.js
194
237
  let emit = (snapshotRef, onChange) => (value) => {
195
238
  if (snapshotRef.current === value) return;
196
239
  snapshotRef.current = value;
@@ -210,9 +253,7 @@ function useStore(store, { keys, deps = [store, keys], ssr } = {}) {
210
253
  }
211
254
 
212
255
  //#endregion
213
- //#region ../../node_modules/.pnpm/birpc@4.0.0/node_modules/birpc/dist/index.mjs
214
- const TYPE_REQUEST = "q";
215
- const TYPE_RESPONSE = "s";
256
+ //#region ../../node_modules/.pnpm/birpc@4.2.0/node_modules/birpc/dist/index.mjs
216
257
  function createPromiseWithResolvers() {
217
258
  let resolve;
218
259
  let reject;
@@ -248,7 +289,7 @@ function createBirpc($functions, options) {
248
289
  const req = {
249
290
  m: method,
250
291
  a: args,
251
- t: TYPE_REQUEST
292
+ t: "q"
252
293
  };
253
294
  if (optional) req.o = true;
254
295
  const send = async (_req) => post(serialize(_req));
@@ -302,7 +343,7 @@ function createBirpc($functions, options) {
302
343
  $call: (method, ...args) => _call(method, args, false),
303
344
  $callOptional: (method, ...args) => _call(method, args, false, true),
304
345
  $callEvent: (method, ...args) => _call(method, args, true),
305
- $callRaw: (options$1) => _call(options$1.method, options$1.args, options$1.event, options$1.optional),
346
+ $callRaw: (options) => _call(options.method, options.args, options.event, options.optional),
306
347
  $rejectPendingCalls,
307
348
  get $closed() {
308
349
  return $closed;
@@ -314,7 +355,7 @@ function createBirpc($functions, options) {
314
355
  $functions
315
356
  };
316
357
  if (proxify) rpc = new Proxy({}, { get(_, method) {
317
- if (Object.prototype.hasOwnProperty.call(builtinMethods, method)) return builtinMethods[method];
358
+ if (Object.hasOwn(builtinMethods, method)) return builtinMethods[method];
318
359
  if (method === "then" && !eventNames.includes("then") && !("then" in $functions)) return void 0;
319
360
  const sendEvent = (...args) => _call(method, args, true);
320
361
  if (eventNames.includes(method)) {
@@ -358,7 +399,7 @@ function createBirpc($functions, options) {
358
399
  if (options.onGeneralError?.call(rpc, e) !== true) throw e;
359
400
  return;
360
401
  }
361
- if (msg.t === TYPE_REQUEST) {
402
+ if (msg.t === "q") {
362
403
  const { m: method, a: args, o: optional } = msg;
363
404
  let result, error;
364
405
  let fn = await (resolver ? resolver.call(rpc, method, $functions[method]) : $functions[method]);
@@ -375,7 +416,7 @@ function createBirpc($functions, options) {
375
416
  }
376
417
  if (!error) try {
377
418
  await post(serialize({
378
- t: TYPE_RESPONSE,
419
+ t: "s",
379
420
  i: msg.i,
380
421
  r: result
381
422
  }), ...extra);
@@ -386,7 +427,7 @@ function createBirpc($functions, options) {
386
427
  }
387
428
  try {
388
429
  await post(serialize({
389
- t: TYPE_RESPONSE,
430
+ t: "s",
390
431
  i: msg.i,
391
432
  e: error
392
433
  }), ...extra);
@@ -410,7 +451,7 @@ function createBirpc($functions, options) {
410
451
  }
411
452
 
412
453
  //#endregion
413
- //#region ../../node_modules/.pnpm/fast-equals@6.0.2/node_modules/fast-equals/dist/es/index.mjs
454
+ //#region ../../node_modules/.pnpm/fast-equals@6.0.3/node_modules/fast-equals/dist/es/index.mjs
414
455
  const { getOwnPropertyNames, getOwnPropertySymbols } = Object;
415
456
  const { hasOwnProperty } = Object.prototype;
416
457
  /**
@@ -456,6 +497,7 @@ const hasOwn = Object.hasOwn || ((object, property) => hasOwnProperty.call(objec
456
497
  const PREACT_VNODE = "__v";
457
498
  const PREACT_OWNER = "__o";
458
499
  const REACT_OWNER = "_owner";
500
+ const HAS_FLOAT_16_ARRAY = typeof Float16Array !== "undefined";
459
501
  const { getOwnPropertyDescriptor, keys } = Object;
460
502
  /**
461
503
  * Whether the values passed are equal based on a [SameValue](https://262.ecma-international.org/7.0/#sec-samevalue) basis.
@@ -509,9 +551,16 @@ function areDatesEqual(a, b) {
509
551
  }
510
552
  /**
511
553
  * Whether the errors passed are equal in value.
554
+ *
555
+ * @note
556
+ * `name`, `message` and `stack` are own properties but are not enumerable, so they are compared
557
+ * explicitly. `cause` is compared by value rather than by reference, matching how every other
558
+ * nested value in the comparison is treated. Own enumerable properties (which custom `Error`
559
+ * subclasses commonly add) are compared by composing this with the object comparator in the
560
+ * comparator config, so that the strict and circular variants apply to them as well.
512
561
  */
513
- function areErrorsEqual(a, b) {
514
- return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;
562
+ function areErrorsEqual(a, b, state) {
563
+ return a.name === b.name && a.message === b.message && a.stack === b.stack && state.equals(a.cause, b.cause, "cause", "cause", a, b, state);
515
564
  }
516
565
  /**
517
566
  * Whether the `Map`s are equal in value.
@@ -624,6 +673,10 @@ function areSetsEqual(a, b, state) {
624
673
  function areTypedArraysEqual(a, b) {
625
674
  let index = a.length;
626
675
  if (b.length !== index || a.byteOffset !== b.byteOffset) return false;
676
+ if (a instanceof Float64Array || a instanceof Float32Array || HAS_FLOAT_16_ARRAY && a instanceof Float16Array) {
677
+ while (index-- > 0) if (a[index] !== b[index] && (a[index] === a[index] || b[index] === b[index])) return false;
678
+ return true;
679
+ }
627
680
  while (index-- > 0) if (a[index] !== b[index]) return false;
628
681
  return true;
629
682
  }
@@ -631,7 +684,32 @@ function areTypedArraysEqual(a, b) {
631
684
  * Whether the URL instances are equal in value.
632
685
  */
633
686
  function areUrlsEqual(a, b) {
634
- return a.hostname === b.hostname && a.pathname === b.pathname && a.protocol === b.protocol && a.port === b.port && a.hash === b.hash && a.username === b.username && a.password === b.password;
687
+ if (a.href === b.href) return true;
688
+ return a.protocol === b.protocol && a.username === b.username && a.password === b.password && a.host === b.host && a.pathname === b.pathname && a.hash === b.hash && areSearchParamsEqual(a.searchParams, b.searchParams);
689
+ }
690
+ /**
691
+ * Whether the search params passed are equal in value.
692
+ *
693
+ * @note
694
+ * Order is not significant, matching how the other unordered collections in the library are
695
+ * compared. Repeated keys are, so this is a comparison of multisets rather than of sets:
696
+ * `a=1&a=2` is equal to `a=2&a=1`, but not to `a=1&a=1`.
697
+ */
698
+ function areSearchParamsEqual(a, b) {
699
+ const serializedA = a.toString();
700
+ const serializedB = b.toString();
701
+ return serializedA === serializedB || sortSearchParams(serializedA) === sortSearchParams(serializedB);
702
+ }
703
+ /**
704
+ * Reorder a serialized query string so that params holding the same pairs compare as equal
705
+ * regardless of the order they appear in.
706
+ *
707
+ * @note
708
+ * The serializer percent-encodes `&` and `=` wherever they appear inside a name or a value, so
709
+ * splitting on `&` recovers exactly the pairs and nothing else.
710
+ */
711
+ function sortSearchParams(serialized) {
712
+ return serialized.split("&").sort().join("&");
635
713
  }
636
714
  function isPropertyEqual(a, b, state, property) {
637
715
  if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE) && (a.$$typeof || b.$$typeof)) return true;
@@ -684,7 +762,7 @@ function createEqualityComparatorConfig({ circular, createCustomConfig, strict }
684
762
  areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,
685
763
  areDataViewsEqual,
686
764
  areDatesEqual,
687
- areErrorsEqual,
765
+ areErrorsEqual: strict ? combineComparators(areErrorsEqual, areObjectsEqualStrict) : combineComparators(areErrorsEqual, areObjectsEqual),
688
766
  areFunctionsEqual: strictEqual,
689
767
  areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,
690
768
  areNumbersEqual: sameValueEqual,
@@ -699,11 +777,13 @@ function createEqualityComparatorConfig({ circular, createCustomConfig, strict }
699
777
  if (createCustomConfig) config = Object.assign({}, config, createCustomConfig(config));
700
778
  if (circular) {
701
779
  const areArraysEqual = createIsCircular(config.areArraysEqual);
780
+ const areErrorsEqual = createIsCircular(config.areErrorsEqual);
702
781
  const areMapsEqual = createIsCircular(config.areMapsEqual);
703
782
  const areObjectsEqual = createIsCircular(config.areObjectsEqual);
704
783
  const areSetsEqual = createIsCircular(config.areSetsEqual);
705
784
  config = Object.assign({}, config, {
706
785
  areArraysEqual,
786
+ areErrorsEqual,
707
787
  areMapsEqual,
708
788
  areObjectsEqual,
709
789
  areSetsEqual
@@ -754,13 +834,13 @@ function createIsEqual({ circular, comparator, createState, equals, strict }) {
754
834
  /**
755
835
  * Create a map of `toString()` values to their respective handlers for `tag`-based lookups.
756
836
  */
757
- function createSupportedComparatorMap({ areArrayBuffersEqual, areArraysEqual, areDataViewsEqual, areDatesEqual, areErrorsEqual, areFunctionsEqual, areMapsEqual, areNumbersEqual, areObjectsEqual, arePrimitiveWrappersEqual, areRegExpsEqual, areSetsEqual, areTypedArraysEqual, areUrlsEqual }) {
837
+ function createSupportedComparatorMap({ areArrayBuffersEqual, areArraysEqual, areDataViewsEqual, areDatesEqual, areErrorsEqual, areFunctionsEqual, areMapsEqual, areObjectsEqual, arePrimitiveWrappersEqual, areRegExpsEqual, areSetsEqual, areTypedArraysEqual, areUrlsEqual }) {
758
838
  return {
759
839
  "[object Arguments]": areObjectsEqual,
760
840
  "[object Array]": areArraysEqual,
761
841
  "[object ArrayBuffer]": areArrayBuffersEqual,
762
842
  "[object AsyncGeneratorFunction]": areFunctionsEqual,
763
- "[object BigInt]": areNumbersEqual,
843
+ "[object BigInt]": arePrimitiveWrappersEqual,
764
844
  "[object BigInt64Array]": areTypedArraysEqual,
765
845
  "[object BigUint64Array]": areTypedArraysEqual,
766
846
  "[object Boolean]": arePrimitiveWrappersEqual,
@@ -856,7 +936,7 @@ function createCustomEqual(options = {}) {
856
936
  }
857
937
 
858
938
  //#endregion
859
- //#region ../../node_modules/.pnpm/remeda@2.37.0/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js
939
+ //#region ../../node_modules/.pnpm/remeda@2.45.0/node_modules/remeda/dist/lazyDataLastImpl--3B10z3s.js
860
940
  function e(e, t, n) {
861
941
  let r = (n) => e(n, ...t);
862
942
  return n === void 0 ? r : Object.assign(r, {
@@ -866,7 +946,7 @@ function e(e, t, n) {
866
946
  }
867
947
 
868
948
  //#endregion
869
- //#region ../../node_modules/.pnpm/remeda@2.37.0/node_modules/remeda/dist/purry.js
949
+ //#region ../../node_modules/.pnpm/remeda@2.45.0/node_modules/remeda/dist/purry.js
870
950
  function t$1(t, n, r) {
871
951
  let i = t.length - n.length;
872
952
  if (i === 0) return t(...n);
@@ -875,7 +955,7 @@ function t$1(t, n, r) {
875
955
  }
876
956
 
877
957
  //#endregion
878
- //#region ../../node_modules/.pnpm/remeda@2.37.0/node_modules/remeda/dist/mapValues.js
958
+ //#region ../../node_modules/.pnpm/remeda@2.45.0/node_modules/remeda/dist/mapValues.js
879
959
  function t(...t) {
880
960
  return t$1(n, t);
881
961
  }
@@ -896,7 +976,7 @@ function n(e, t) {
896
976
  */
897
977
  function createRpc(options) {
898
978
  return createBirpc({}, {
899
- timeout: 120 * 1e3,
979
+ timeout: 12e4,
900
980
  post: (data) => options.send("likec4:rpc", data),
901
981
  on: (fn) => options.on("likec4:rpc", fn),
902
982
  onTimeoutError(functionName) {
@@ -932,7 +1012,8 @@ function createHooksForModel($atom) {
932
1012
  return useStore($likec4views);
933
1013
  }
934
1014
  function useLikeC4View(viewId) {
935
- return useStore(useMemo(() => /* @__PURE__ */ computed($likec4model, (model) => model.findView(viewId)?.$layouted ?? null), [viewId]));
1015
+ const $view = useMemo(() => /* @__PURE__ */ computed($likec4model, (model) => model.findView(viewId)?.$layouted ?? null), [viewId]);
1016
+ return useStore($view);
936
1017
  }
937
1018
  return {
938
1019
  updateModel,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "likec4",
3
3
  "description": "Toolchain for your architecture diagrams",
4
- "version": "1.59.2",
4
+ "version": "1.59.4",
5
5
  "license": "MIT",
6
6
  "homepage": "https://likec4.dev",
7
7
  "author": "Denis Davydkov <denis@davydkov.com>",
@@ -90,22 +90,22 @@
90
90
  },
91
91
  "dependencies": {
92
92
  "@hpcc-js/wasm-graphviz": "1.22.2",
93
- "@vitejs/plugin-react": "^6.0.3",
93
+ "@likec4/core": "1.59.4",
94
+ "@likec4/icons": "1.46.4",
95
+ "@vitejs/plugin-react": "^6.1.1",
94
96
  "bundle-require": "^5.1.0",
95
- "esbuild": "0.28.1",
97
+ "esbuild": "0.28.2",
96
98
  "fdir": "6.4.0",
97
99
  "playwright": "1.60.0",
98
100
  "chokidar": "^5.0.0",
99
- "immer": "^11.1.9",
101
+ "immer": "^11.1.18",
100
102
  "std-env": "^4.1.0",
101
103
  "type-fest": "^4.41.0",
102
104
  "vite-plugin-singlefile": "^2.3.3",
103
- "vite": "^8.1.3",
105
+ "vite": "^8.2.2",
104
106
  "yargs": "17.7.2",
105
107
  "nano-spawn": "^2.1.0",
106
- "use-sync-external-store": "^1.6.0",
107
- "@likec4/core": "1.59.2",
108
- "@likec4/icons": "1.46.4"
108
+ "use-sync-external-store": "^1.6.0"
109
109
  },
110
110
  "peerDependencies": {
111
111
  "@tanstack/ai": "^0.14.0",
@@ -139,79 +139,79 @@
139
139
  },
140
140
  "devDependencies": {
141
141
  "langium": "3.5.0",
142
+ "@likec4/config": "1.59.4",
143
+ "@likec4/leanix-bridge": "1.59.4",
144
+ "@likec4/log": "1.59.4",
145
+ "@likec4/language-server": "1.59.4",
146
+ "@likec4/language-services": "1.59.4",
147
+ "@likec4/mcp": "1.59.4",
142
148
  "@dagrejs/dagre": "1.1.8",
143
149
  "@fontsource-variable/ibm-plex-sans": "^5.2.8",
144
- "@pandacss/dev": "^1.11.4",
150
+ "@likec4/devops": "1.59.4",
151
+ "@likec4/diagram": "1.59.4",
152
+ "@likec4/layouts": "1.59.4",
153
+ "@likec4/vite-plugin": "1.59.4",
154
+ "@likec4/react": "1.59.4",
155
+ "@likec4/spa": "1.59.4",
156
+ "@likec4/generators": "1.59.4",
157
+ "@likec4/style-preset": "1.59.4",
158
+ "@likec4/styles": "1.59.4",
159
+ "@likec4/tsconfig": "1.59.4",
160
+ "@pandacss/dev": "^1.12.1",
145
161
  "@tanstack/ai": "^0.14.0",
146
162
  "@types/node": "~22.19.19",
147
163
  "@types/picomatch": "^4.0.3",
148
- "@types/react": "19.2.17",
149
- "@types/react-dom": "19.2.3",
164
+ "@types/react": "19.2.18",
165
+ "@types/react-dom": "19.2.5",
150
166
  "@types/semver": "^7.7.1",
151
167
  "@types/yargs": "^17.0.33",
152
168
  "autoprefixer": "^10.5.4",
153
169
  "picomatch": "^4.0.5",
154
- "birpc": "^4.0.0",
170
+ "birpc": "^4.2.0",
155
171
  "boxen": "^8.0.1",
156
172
  "clsx": "^2.1.1",
157
173
  "conf": "^15.1.0",
158
174
  "defu": "^6.1.7",
159
175
  "esbuild-node-externals": "1.23.1",
160
176
  "esm-env": "^1.2.2",
161
- "fast-equals": "^6.0.2",
177
+ "fast-equals": "^6.0.3",
162
178
  "get-port": "^7.2.0",
163
179
  "is-inside-container": "^1.0.0",
164
180
  "json5": "^2.2.3",
165
181
  "ky": "^1.14.3",
166
182
  "mkdirp": "^3.0.1",
167
183
  "npm-run-all2": "^8.0.4",
168
- "p-limit": "7.3.0",
169
- "nanostores": "1.3.0",
184
+ "p-limit": "7.3.2",
185
+ "nanostores": "1.5.3",
170
186
  "@nanostores/react": "1.1.0",
171
- "oxlint": "1.72.0",
172
- "package-manager-detector": "1.6.0",
187
+ "oxlint": "1.81.0",
188
+ "package-manager-detector": "1.8.0",
173
189
  "package-up": "^5.0.0",
174
- "postcss": "8.5.15",
190
+ "postcss": "8.5.28",
175
191
  "pretty-ms": "^9.3.0",
176
- "react": "19.2.7",
177
- "react-dom": "19.2.7",
178
- "react-error-boundary": "^6.1.2",
179
- "react-resizable-panels": "^4.11.2",
180
- "remeda": "^2.37.0",
192
+ "react": "19.2.8",
193
+ "react-dom": "19.2.8",
194
+ "react-error-boundary": "^6.1.4",
195
+ "react-resizable-panels": "^4.12.3",
196
+ "remeda": "^2.45.0",
181
197
  "semver": "^7.8.1",
182
198
  "strip-indent": "^4.1.1",
183
- "tinyrainbow": "^3.1.0",
184
- "tsx": "4.22.5",
185
- "turbo": "2.10.5",
199
+ "tinyrainbow": "^3.1.1",
200
+ "tsx": "4.23.13",
201
+ "turbo": "2.10.12",
186
202
  "typescript": "6.0.3",
187
203
  "ufo": "1.6.4",
188
- "tsdown": "^0.22.9",
189
- "vite-plugin-dts": "^5.0.3",
190
- "vitest": "4.1.9",
204
+ "tsdown": "^0.23.0",
205
+ "vite-plugin-dts": "^5.1.0",
206
+ "vitest": "4.1.11",
191
207
  "vscode-jsonrpc": "8.2.0",
192
208
  "vscode-languageserver": "9.0.1",
193
209
  "vscode-languageserver-types": "3.17.5",
194
210
  "vscode-uri": "3.1.0",
195
211
  "which": "^5.0.0",
196
- "wireit": "0.14.12",
212
+ "wireit": "0.14.13",
197
213
  "zod": "^4.4.3",
198
- "zx": "8.8.5",
199
- "@likec4/leanix-bridge": "1.59.2",
200
- "@likec4/config": "1.59.2",
201
- "@likec4/language-server": "1.59.2",
202
- "@likec4/log": "1.59.2",
203
- "@likec4/language-services": "1.59.2",
204
- "@likec4/mcp": "1.59.2",
205
- "@likec4/devops": "1.59.2",
206
- "@likec4/diagram": "1.59.2",
207
- "@likec4/layouts": "1.59.2",
208
- "@likec4/vite-plugin": "1.59.2",
209
- "@likec4/react": "1.59.2",
210
- "@likec4/spa": "1.59.2",
211
- "@likec4/generators": "1.59.2",
212
- "@likec4/style-preset": "1.59.2",
213
- "@likec4/styles": "1.59.2",
214
- "@likec4/tsconfig": "1.59.2"
214
+ "zx": "8.8.5"
215
215
  },
216
216
  "scripts": {
217
217
  "typecheck": "tsc --build --verbose",