likec4 1.12.1 → 1.12.2

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.
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { useOverviewGraph } from "virtual:likec4/overview-graph";
3
- import { u, c as createReactComponent, I as IconFolderFilled, e, a as useUpdateEffect, n as nonexhaustive } from "./main-TBVrmxK9.js";
3
+ import { u, c as createReactComponent, I as IconFolderFilled, e, a as useUpdateEffect, n as nonexhaustive } from "./main-BqtsxvKL.js";
4
4
  import { u as useRouter } from "./tanstack-router-COsz5nw6.js";
5
5
  import { B as BaseEdge, H as Handle, P as Position, u as useNodesState, a as useEdgesState, i as index, b as Background, c as BackgroundVariant } from "./likec4-CNg5BLwi.js";
6
6
  import { memo, useRef, useMemo } from "react";
7
- import { P as Paper, c as clsx, G as Group, T as ThemeIcon, a as Text, C as Card, b as CardSection, d as Center, I as Image, B as Box, u as useMantineColorScheme } from "./mantine-CDAXKBgY.js";
7
+ import { P as Paper, c as clsx, G as Group, T as ThemeIcon, a as Text, C as Card, b as CardSection, d as Center, I as Image, B as Box, u as useMantineColorScheme } from "./mantine-CN5aX5HW.js";
8
8
  import { usePreviewUrl } from "virtual:likec4/previews";
9
9
  function a(...n) {
10
10
  return u(c, n);
@@ -15,14 +15,14 @@ function c(n, r) {
15
15
  return o;
16
16
  }
17
17
  /**
18
- * @license @tabler/icons-react v3.19.0 - MIT
18
+ * @license @tabler/icons-react v3.17.0 - MIT
19
19
  *
20
20
  * This source code is licensed under the MIT license.
21
21
  * See the LICENSE file in the root directory of this source tree.
22
22
  */
23
23
  var IconLoader = createReactComponent("outline", "loader", "IconLoader", [["path", { d: "M12 6l0 -3", key: "svg-0" }], ["path", { d: "M16.25 7.75l2.15 -2.15", key: "svg-1" }], ["path", { d: "M18 12l3 0", key: "svg-2" }], ["path", { d: "M16.25 16.25l2.15 2.15", key: "svg-3" }], ["path", { d: "M12 18l0 3", key: "svg-4" }], ["path", { d: "M7.75 16.25l-2.15 2.15", key: "svg-5" }], ["path", { d: "M6 12l-3 0", key: "svg-6" }], ["path", { d: "M7.75 7.75l-2.15 -2.15", key: "svg-7" }]]);
24
24
  /**
25
- * @license @tabler/icons-react v3.19.0 - MIT
25
+ * @license @tabler/icons-react v3.17.0 - MIT
26
26
  *
27
27
  * This source code is licensed under the MIT license.
28
28
  * See the LICENSE file in the root directory of this source tree.
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  import { createContext as createContext$1, useContext as useContext$1, useId as useId$1, useEffect as useEffect$1, useCallback as useCallback$1, Component, useLayoutEffect as useLayoutEffect$1, useRef as useRef$1, useInsertionEffect, useMemo as useMemo$1, forwardRef as forwardRef$1, Fragment, createElement as createElement$1, Children, isValidElement, useState as useState$1, memo as memo$1, Suspense, lazy, useSyncExternalStore, StrictMode } from "react";
4
4
  import { createRoot } from "react-dom/client";
5
5
  import { L as Link, c as createRootRouteWithContext, S as ScrollRestoration, O as Outlet, a as createFileRoute, u as useRouter, b as useParams, d as useRouterState, i as isNotFound, n as notFound, R as RouterProvider, e as createRouter$1, f as createHashHistory, g as createBrowserHistory } from "./tanstack-router-COsz5nw6.js";
6
- import { e as Container, f as Title, a as Text$1, G as Group, g as Button, t as themeToVars, h as useMantineStyleNonce, M as MantineContext, i as useHotkeys, j as Tooltip$2, k as Menu, l as MenuTarget, m as MenuDropdown, n as MenuLabel, o as MenuDivider, S as Stack$1, c as clsx, p as TooltipGroup, q as Space, A as ActionIcon$1, B as Box, r as MenuItem, s as Popover, v as PopoverTarget, w as PopoverDropdown, x as ScrollAreaAutosize, y as CloseButton, z as keys$1, D as ColorSwatch, E as Divider, F as Flex, H as CheckIcon, J as rem, K as Slider, P as Paper, L as SegmentedControl, N as useDebouncedValue, O as HoverCard, Q as HoverCardTarget, U as UnstyledButton, R as HoverCardDropdown, V as Anchor, W as CopyButton$1, X as useLocalStorage, C as Card, b as CardSection, Y as Spoiler, Z as Badge, _ as ButtonGroup, T as ThemeIcon, $ as Tabs, a0 as TabsList, a1 as TabsTab, a2 as TabsPanel, a3 as FloatingIndicator, a4 as useUncontrolled, a5 as clampUseMovePosition, a6 as useMove, a7 as ActionIconGroup, a8 as Overlay, a9 as Notification, aa as Code, ab as createTheme, ac as MantineProvider, ad as useInViewport, ae as SimpleGrid, u as useMantineColorScheme, af as useTree, ag as useComputedColorScheme, ah as Tree, ai as Drawer, aj as ScrollArea, ak as Alert, al as Select, am as ModalRoot, an as ModalOverlay, ao as ModalContent, ap as ModalBody, aq as useMantineTheme, ar as useMediaQuery, as as useDisclosure, at as LoadingOverlay, au as useCallbackRef, av as Burger, aw as Loader } from "./mantine-CDAXKBgY.js";
6
+ import { e as Container, f as Title, a as Text$1, G as Group, g as Button, t as themeToVars, h as useMantineStyleNonce, M as MantineContext, i as useHotkeys, j as Tooltip$2, k as Menu, l as MenuTarget, m as MenuDropdown, n as MenuLabel, o as MenuDivider, S as Stack$1, c as clsx, p as TooltipGroup, q as Space, A as ActionIcon$1, B as Box, r as MenuItem, s as Popover, v as PopoverTarget, w as PopoverDropdown, x as ScrollAreaAutosize, y as CloseButton, z as keys$1, D as ColorSwatch, E as Divider, F as Flex, H as CheckIcon, J as rem, K as Slider, P as Paper, L as SegmentedControl, N as useDebouncedValue, O as HoverCard, Q as HoverCardTarget, U as UnstyledButton, R as HoverCardDropdown, V as Anchor, W as CopyButton$1, X as useLocalStorage, C as Card, b as CardSection, Y as Spoiler, Z as Badge, _ as ButtonGroup, T as ThemeIcon, $ as Tabs, a0 as TabsList, a1 as TabsTab, a2 as TabsPanel, a3 as useHover, a4 as FloatingIndicator, a5 as useUncontrolled, a6 as clampUseMovePosition, a7 as useMove, a8 as useMergedRef, a9 as ActionIconGroup, aa as Overlay, ab as Notification, ac as Code, ad as createTheme, ae as MantineProvider, af as useInViewport, ag as SimpleGrid, u as useMantineColorScheme, ah as useTree, ai as useComputedColorScheme, aj as Tree, ak as Drawer, al as ScrollArea, am as Alert, an as Select, ao as ModalRoot, ap as ModalOverlay, aq as ModalContent, ar as ModalBody, as as useMantineTheme, at as useMediaQuery, au as useDisclosure, av as LoadingOverlay, aw as useCallbackRef, ax as Burger, ay as Loader } from "./mantine-CN5aX5HW.js";
7
7
  import { withOverviewGraph, ComponentName, isDevelopment, krokiD2SvgUrl, basepath, useHashHistory } from "../const.js";
8
8
  import { useLikeC4ModelAtom } from "virtual:likec4/model";
9
9
  import { d as useReactFlow, e as useStoreApi, f as useStore$1, g as useNodesData, h as createWithEqualityFn, j as applyNodeChanges, k as applyEdgeChanges, l as getViewportForBounds, m as getNodeDimensions, n as getBoundsOfRects, s as shallow$1, o as boxToRect, p as useStoreWithEqualityFn, q as getDefaultExportFromCjs, E as EdgeLabelRenderer, N as NodeToolbar, H as Handle, P as Position, r as useOnViewportChange, i as index, b as Background, c as BackgroundVariant, C as Controls, R as ReactFlowProvider } from "./likec4-CNg5BLwi.js";
@@ -11224,7 +11224,7 @@ const curveCatmullRomOpen = function custom4(alpha2) {
11224
11224
  ODot
11225
11225
  };
11226
11226
  /**
11227
- * @license @tabler/icons-react v3.19.0 - MIT
11227
+ * @license @tabler/icons-react v3.17.0 - MIT
11228
11228
  *
11229
11229
  * This source code is licensed under the MIT license.
11230
11230
  * See the LICENSE file in the root directory of this source tree.
@@ -11251,7 +11251,7 @@ var defaultAttributes = {
11251
11251
  }
11252
11252
  };
11253
11253
  /**
11254
- * @license @tabler/icons-react v3.19.0 - MIT
11254
+ * @license @tabler/icons-react v3.17.0 - MIT
11255
11255
  *
11256
11256
  * This source code is licensed under the MIT license.
11257
11257
  * See the LICENSE file in the root directory of this source tree.
@@ -11284,210 +11284,210 @@ const createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
11284
11284
  return Component2.displayName = `${iconNamePascal}`, Component2;
11285
11285
  };
11286
11286
  /**
11287
- * @license @tabler/icons-react v3.19.0 - MIT
11287
+ * @license @tabler/icons-react v3.17.0 - MIT
11288
11288
  *
11289
11289
  * This source code is licensed under the MIT license.
11290
11290
  * See the LICENSE file in the root directory of this source tree.
11291
11291
  */
11292
11292
  var IconAlertTriangle = createReactComponent("outline", "alert-triangle", "IconAlertTriangle", [["path", { d: "M12 9v4", key: "svg-0" }], ["path", { d: "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", key: "svg-1" }], ["path", { d: "M12 16h.01", key: "svg-2" }]]);
11293
11293
  /**
11294
- * @license @tabler/icons-react v3.19.0 - MIT
11294
+ * @license @tabler/icons-react v3.17.0 - MIT
11295
11295
  *
11296
11296
  * This source code is licensed under the MIT license.
11297
11297
  * See the LICENSE file in the root directory of this source tree.
11298
11298
  */
11299
11299
  var IconArrowDownRight = createReactComponent("outline", "arrow-down-right", "IconArrowDownRight", [["path", { d: "M7 7l10 10", key: "svg-0" }], ["path", { d: "M17 8l0 9l-9 0", key: "svg-1" }]]);
11300
11300
  /**
11301
- * @license @tabler/icons-react v3.19.0 - MIT
11301
+ * @license @tabler/icons-react v3.17.0 - MIT
11302
11302
  *
11303
11303
  * This source code is licensed under the MIT license.
11304
11304
  * See the LICENSE file in the root directory of this source tree.
11305
11305
  */
11306
11306
  var IconArrowLeft = createReactComponent("outline", "arrow-left", "IconArrowLeft", [["path", { d: "M5 12l14 0", key: "svg-0" }], ["path", { d: "M5 12l6 6", key: "svg-1" }], ["path", { d: "M5 12l6 -6", key: "svg-2" }]]);
11307
11307
  /**
11308
- * @license @tabler/icons-react v3.19.0 - MIT
11308
+ * @license @tabler/icons-react v3.17.0 - MIT
11309
11309
  *
11310
11310
  * This source code is licensed under the MIT license.
11311
11311
  * See the LICENSE file in the root directory of this source tree.
11312
11312
  */
11313
11313
  var IconArrowRight = createReactComponent("outline", "arrow-right", "IconArrowRight", [["path", { d: "M5 12l14 0", key: "svg-0" }], ["path", { d: "M13 18l6 -6", key: "svg-1" }], ["path", { d: "M13 6l6 6", key: "svg-2" }]]);
11314
11314
  /**
11315
- * @license @tabler/icons-react v3.19.0 - MIT
11315
+ * @license @tabler/icons-react v3.17.0 - MIT
11316
11316
  *
11317
11317
  * This source code is licensed under the MIT license.
11318
11318
  * See the LICENSE file in the root directory of this source tree.
11319
11319
  */
11320
11320
  var IconCheck = createReactComponent("outline", "check", "IconCheck", [["path", { d: "M5 12l5 5l10 -10", key: "svg-0" }]]);
11321
11321
  /**
11322
- * @license @tabler/icons-react v3.19.0 - MIT
11322
+ * @license @tabler/icons-react v3.17.0 - MIT
11323
11323
  *
11324
11324
  * This source code is licensed under the MIT license.
11325
11325
  * See the LICENSE file in the root directory of this source tree.
11326
11326
  */
11327
11327
  var IconChevronDown = createReactComponent("outline", "chevron-down", "IconChevronDown", [["path", { d: "M6 9l6 6l6 -6", key: "svg-0" }]]);
11328
11328
  /**
11329
- * @license @tabler/icons-react v3.19.0 - MIT
11329
+ * @license @tabler/icons-react v3.17.0 - MIT
11330
11330
  *
11331
11331
  * This source code is licensed under the MIT license.
11332
11332
  * See the LICENSE file in the root directory of this source tree.
11333
11333
  */
11334
11334
  var IconChevronLeft = createReactComponent("outline", "chevron-left", "IconChevronLeft", [["path", { d: "M15 6l-6 6l6 6", key: "svg-0" }]]);
11335
11335
  /**
11336
- * @license @tabler/icons-react v3.19.0 - MIT
11336
+ * @license @tabler/icons-react v3.17.0 - MIT
11337
11337
  *
11338
11338
  * This source code is licensed under the MIT license.
11339
11339
  * See the LICENSE file in the root directory of this source tree.
11340
11340
  */
11341
11341
  var IconChevronRight = createReactComponent("outline", "chevron-right", "IconChevronRight", [["path", { d: "M9 6l6 6l-6 6", key: "svg-0" }]]);
11342
11342
  /**
11343
- * @license @tabler/icons-react v3.19.0 - MIT
11343
+ * @license @tabler/icons-react v3.17.0 - MIT
11344
11344
  *
11345
11345
  * This source code is licensed under the MIT license.
11346
11346
  * See the LICENSE file in the root directory of this source tree.
11347
11347
  */
11348
11348
  var IconCopy = createReactComponent("outline", "copy", "IconCopy", [["path", { d: "M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z", key: "svg-0" }], ["path", { d: "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1", key: "svg-1" }]]);
11349
11349
  /**
11350
- * @license @tabler/icons-react v3.19.0 - MIT
11350
+ * @license @tabler/icons-react v3.17.0 - MIT
11351
11351
  *
11352
11352
  * This source code is licensed under the MIT license.
11353
11353
  * See the LICENSE file in the root directory of this source tree.
11354
11354
  */
11355
11355
  var IconExternalLink = createReactComponent("outline", "external-link", "IconExternalLink", [["path", { d: "M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6", key: "svg-0" }], ["path", { d: "M11 13l9 -9", key: "svg-1" }], ["path", { d: "M15 4h5v5", key: "svg-2" }]]);
11356
11356
  /**
11357
- * @license @tabler/icons-react v3.19.0 - MIT
11357
+ * @license @tabler/icons-react v3.17.0 - MIT
11358
11358
  *
11359
11359
  * This source code is licensed under the MIT license.
11360
11360
  * See the LICENSE file in the root directory of this source tree.
11361
11361
  */
11362
11362
  var IconFileCode = createReactComponent("outline", "file-code", "IconFileCode", [["path", { d: "M14 3v4a1 1 0 0 0 1 1h4", key: "svg-0" }], ["path", { d: "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z", key: "svg-1" }], ["path", { d: "M10 13l-1 2l1 2", key: "svg-2" }], ["path", { d: "M14 13l1 2l-1 2", key: "svg-3" }]]);
11363
11363
  /**
11364
- * @license @tabler/icons-react v3.19.0 - MIT
11364
+ * @license @tabler/icons-react v3.17.0 - MIT
11365
11365
  *
11366
11366
  * This source code is licensed under the MIT license.
11367
11367
  * See the LICENSE file in the root directory of this source tree.
11368
11368
  */
11369
11369
  var IconFileSymlink = createReactComponent("outline", "file-symlink", "IconFileSymlink", [["path", { d: "M4 21v-4a3 3 0 0 1 3 -3h5", key: "svg-0" }], ["path", { d: "M9 17l3 -3l-3 -3", key: "svg-1" }], ["path", { d: "M14 3v4a1 1 0 0 0 1 1h4", key: "svg-2" }], ["path", { d: "M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5", key: "svg-3" }]]);
11370
11370
  /**
11371
- * @license @tabler/icons-react v3.19.0 - MIT
11371
+ * @license @tabler/icons-react v3.17.0 - MIT
11372
11372
  *
11373
11373
  * This source code is licensed under the MIT license.
11374
11374
  * See the LICENSE file in the root directory of this source tree.
11375
11375
  */
11376
11376
  var IconFocusCentered = createReactComponent("outline", "focus-centered", "IconFocusCentered", [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }], ["path", { d: "M4 8v-2a2 2 0 0 1 2 -2h2", key: "svg-1" }], ["path", { d: "M4 16v2a2 2 0 0 0 2 2h2", key: "svg-2" }], ["path", { d: "M16 4h2a2 2 0 0 1 2 2v2", key: "svg-3" }], ["path", { d: "M16 20h2a2 2 0 0 0 2 -2v-2", key: "svg-4" }]]);
11377
11377
  /**
11378
- * @license @tabler/icons-react v3.19.0 - MIT
11378
+ * @license @tabler/icons-react v3.17.0 - MIT
11379
11379
  *
11380
11380
  * This source code is licensed under the MIT license.
11381
11381
  * See the LICENSE file in the root directory of this source tree.
11382
11382
  */
11383
11383
  var IconFolderOpen = createReactComponent("outline", "folder-open", "IconFolderOpen", [["path", { d: "M5 19l2.757 -7.351a1 1 0 0 1 .936 -.649h12.307a1 1 0 0 1 .986 1.164l-.996 5.211a2 2 0 0 1 -1.964 1.625h-14.026a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v2", key: "svg-0" }]]);
11384
11384
  /**
11385
- * @license @tabler/icons-react v3.19.0 - MIT
11385
+ * @license @tabler/icons-react v3.17.0 - MIT
11386
11386
  *
11387
11387
  * This source code is licensed under the MIT license.
11388
11388
  * See the LICENSE file in the root directory of this source tree.
11389
11389
  */
11390
11390
  var IconHelpCircle = createReactComponent("outline", "help-circle", "IconHelpCircle", [["path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", key: "svg-0" }], ["path", { d: "M12 16v.01", key: "svg-1" }], ["path", { d: "M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483", key: "svg-2" }]]);
11391
11391
  /**
11392
- * @license @tabler/icons-react v3.19.0 - MIT
11392
+ * @license @tabler/icons-react v3.17.0 - MIT
11393
11393
  *
11394
11394
  * This source code is licensed under the MIT license.
11395
11395
  * See the LICENSE file in the root directory of this source tree.
11396
11396
  */
11397
11397
  var IconLayoutDashboard = createReactComponent("outline", "layout-dashboard", "IconLayoutDashboard", [["path", { d: "M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1", key: "svg-0" }], ["path", { d: "M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1", key: "svg-1" }], ["path", { d: "M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1", key: "svg-2" }], ["path", { d: "M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1", key: "svg-3" }]]);
11398
11398
  /**
11399
- * @license @tabler/icons-react v3.19.0 - MIT
11399
+ * @license @tabler/icons-react v3.17.0 - MIT
11400
11400
  *
11401
11401
  * This source code is licensed under the MIT license.
11402
11402
  * See the LICENSE file in the root directory of this source tree.
11403
11403
  */
11404
11404
  var IconLink = createReactComponent("outline", "link", "IconLink", [["path", { d: "M9 15l6 -6", key: "svg-0" }], ["path", { d: "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", key: "svg-1" }], ["path", { d: "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", key: "svg-2" }]]);
11405
11405
  /**
11406
- * @license @tabler/icons-react v3.19.0 - MIT
11406
+ * @license @tabler/icons-react v3.17.0 - MIT
11407
11407
  *
11408
11408
  * This source code is licensed under the MIT license.
11409
11409
  * See the LICENSE file in the root directory of this source tree.
11410
11410
  */
11411
11411
  var IconMenu2 = createReactComponent("outline", "menu-2", "IconMenu2", [["path", { d: "M4 6l16 0", key: "svg-0" }], ["path", { d: "M4 12l16 0", key: "svg-1" }], ["path", { d: "M4 18l16 0", key: "svg-2" }]]);
11412
11412
  /**
11413
- * @license @tabler/icons-react v3.19.0 - MIT
11413
+ * @license @tabler/icons-react v3.17.0 - MIT
11414
11414
  *
11415
11415
  * This source code is licensed under the MIT license.
11416
11416
  * See the LICENSE file in the root directory of this source tree.
11417
11417
  */
11418
11418
  var IconMenu = createReactComponent("outline", "menu", "IconMenu", [["path", { d: "M4 8l16 0", key: "svg-0" }], ["path", { d: "M4 16l16 0", key: "svg-1" }]]);
11419
11419
  /**
11420
- * @license @tabler/icons-react v3.19.0 - MIT
11420
+ * @license @tabler/icons-react v3.17.0 - MIT
11421
11421
  *
11422
11422
  * This source code is licensed under the MIT license.
11423
11423
  * See the LICENSE file in the root directory of this source tree.
11424
11424
  */
11425
11425
  var IconMoonStars = createReactComponent("outline", "moon-stars", "IconMoonStars", [["path", { d: "M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z", key: "svg-0" }], ["path", { d: "M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2", key: "svg-1" }], ["path", { d: "M19 11h2m-1 -1v2", key: "svg-2" }]]);
11426
11426
  /**
11427
- * @license @tabler/icons-react v3.19.0 - MIT
11427
+ * @license @tabler/icons-react v3.17.0 - MIT
11428
11428
  *
11429
11429
  * This source code is licensed under the MIT license.
11430
11430
  * See the LICENSE file in the root directory of this source tree.
11431
11431
  */
11432
11432
  var IconRouteOff = createReactComponent("outline", "route-off", "IconRouteOff", [["path", { d: "M6 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", key: "svg-0" }], ["path", { d: "M18 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", key: "svg-1" }], ["path", { d: "M12 19h4.5c.71 0 1.372 -.212 1.924 -.576m1.545 -2.459a3.5 3.5 0 0 0 -3.469 -3.965h-.499m-4 0h-3.501a3.5 3.5 0 0 1 -2.477 -5.972m2.477 -1.028h3.5", key: "svg-2" }], ["path", { d: "M3 3l18 18", key: "svg-3" }]]);
11433
11433
  /**
11434
- * @license @tabler/icons-react v3.19.0 - MIT
11434
+ * @license @tabler/icons-react v3.17.0 - MIT
11435
11435
  *
11436
11436
  * This source code is licensed under the MIT license.
11437
11437
  * See the LICENSE file in the root directory of this source tree.
11438
11438
  */
11439
11439
  var IconSelector = createReactComponent("outline", "selector", "IconSelector", [["path", { d: "M8 9l4 -4l4 4", key: "svg-0" }], ["path", { d: "M16 15l-4 4l-4 -4", key: "svg-1" }]]);
11440
11440
  /**
11441
- * @license @tabler/icons-react v3.19.0 - MIT
11441
+ * @license @tabler/icons-react v3.17.0 - MIT
11442
11442
  *
11443
11443
  * This source code is licensed under the MIT license.
11444
11444
  * See the LICENSE file in the root directory of this source tree.
11445
11445
  */
11446
11446
  var IconShare = createReactComponent("outline", "share", "IconShare", [["path", { d: "M6 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", key: "svg-0" }], ["path", { d: "M18 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", key: "svg-1" }], ["path", { d: "M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", key: "svg-2" }], ["path", { d: "M8.7 10.7l6.6 -3.4", key: "svg-3" }], ["path", { d: "M8.7 13.3l6.6 3.4", key: "svg-4" }]]);
11447
11447
  /**
11448
- * @license @tabler/icons-react v3.19.0 - MIT
11448
+ * @license @tabler/icons-react v3.17.0 - MIT
11449
11449
  *
11450
11450
  * This source code is licensed under the MIT license.
11451
11451
  * See the LICENSE file in the root directory of this source tree.
11452
11452
  */
11453
11453
  var IconSun = createReactComponent("outline", "sun", "IconSun", [["path", { d: "M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0", key: "svg-0" }], ["path", { d: "M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7", key: "svg-1" }]]);
11454
11454
  /**
11455
- * @license @tabler/icons-react v3.19.0 - MIT
11455
+ * @license @tabler/icons-react v3.17.0 - MIT
11456
11456
  *
11457
11457
  * This source code is licensed under the MIT license.
11458
11458
  * See the LICENSE file in the root directory of this source tree.
11459
11459
  */
11460
11460
  var IconZoomScan = createReactComponent("outline", "zoom-scan", "IconZoomScan", [["path", { d: "M4 8v-2a2 2 0 0 1 2 -2h2", key: "svg-0" }], ["path", { d: "M4 16v2a2 2 0 0 0 2 2h2", key: "svg-1" }], ["path", { d: "M16 4h2a2 2 0 0 1 2 2v2", key: "svg-2" }], ["path", { d: "M16 20h2a2 2 0 0 0 2 -2v-2", key: "svg-3" }], ["path", { d: "M8 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0", key: "svg-4" }], ["path", { d: "M16 16l-2.5 -2.5", key: "svg-5" }]]);
11461
11461
  /**
11462
- * @license @tabler/icons-react v3.19.0 - MIT
11462
+ * @license @tabler/icons-react v3.17.0 - MIT
11463
11463
  *
11464
11464
  * This source code is licensed under the MIT license.
11465
11465
  * See the LICENSE file in the root directory of this source tree.
11466
11466
  */
11467
11467
  var IconFolderFilled = createReactComponent("filled", "folder-filled", "IconFolderFilled", [["path", { d: "M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z", key: "svg-0" }]]);
11468
11468
  /**
11469
- * @license @tabler/icons-react v3.19.0 - MIT
11469
+ * @license @tabler/icons-react v3.17.0 - MIT
11470
11470
  *
11471
11471
  * This source code is licensed under the MIT license.
11472
11472
  * See the LICENSE file in the root directory of this source tree.
11473
11473
  */
11474
11474
  var IconPlayerPlayFilled = createReactComponent("filled", "player-play-filled", "IconPlayerPlayFilled", [["path", { d: "M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 1 0 0 0 -1.524 .852z", key: "svg-0" }]]);
11475
11475
  /**
11476
- * @license @tabler/icons-react v3.19.0 - MIT
11476
+ * @license @tabler/icons-react v3.17.0 - MIT
11477
11477
  *
11478
11478
  * This source code is licensed under the MIT license.
11479
11479
  * See the LICENSE file in the root directory of this source tree.
11480
11480
  */
11481
11481
  var IconPlayerSkipBackFilled = createReactComponent("filled", "player-skip-back-filled", "IconPlayerSkipBackFilled", [["path", { d: "M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z", key: "svg-0" }], ["path", { d: "M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z", key: "svg-1" }]]);
11482
11482
  /**
11483
- * @license @tabler/icons-react v3.19.0 - MIT
11483
+ * @license @tabler/icons-react v3.17.0 - MIT
11484
11484
  *
11485
11485
  * This source code is licensed under the MIT license.
11486
11486
  * See the LICENSE file in the root directory of this source tree.
11487
11487
  */
11488
11488
  var IconPlayerSkipForwardFilled = createReactComponent("filled", "player-skip-forward-filled", "IconPlayerSkipForwardFilled", [["path", { d: "M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z", key: "svg-0" }], ["path", { d: "M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z", key: "svg-1" }]]);
11489
11489
  /**
11490
- * @license @tabler/icons-react v3.19.0 - MIT
11490
+ * @license @tabler/icons-react v3.17.0 - MIT
11491
11491
  *
11492
11492
  * This source code is licensed under the MIT license.
11493
11493
  * See the LICENSE file in the root directory of this source tree.
@@ -15082,7 +15082,7 @@ const selector = (state) => ({
15082
15082
  const store = useDiagramStoreApi(), [rootRef, setRootRef] = useState$1(null), [controlsRefs, setControlsRefs] = useState$1({}), {
15083
15083
  autoLayout,
15084
15084
  viewId
15085
- } = useDiagramState(selector), setControlRef = (name) => (node) => {
15085
+ } = useDiagramState(selector), { ref, hovered: isSpacingHovered } = useHover(), setControlRef = (name) => (node) => {
15086
15086
  controlsRefs[name] = node, setControlsRefs(controlsRefs);
15087
15087
  }, setAutoLayout = (direction) => (event) => {
15088
15088
  event.stopPropagation(), store.getState().onChange?.({
@@ -15095,7 +15095,9 @@ const selector = (state) => ({
15095
15095
  }
15096
15096
  });
15097
15097
  }, setSpacing = (nodeSep, rankSep) => {
15098
- store.getState().onChange?.({
15098
+ store.setState({
15099
+ viewportChanged: !1
15100
+ }), store.getState().onChange?.({
15099
15101
  change: {
15100
15102
  op: "change-autolayout",
15101
15103
  layout: {
@@ -15121,7 +15123,7 @@ const selector = (state) => ({
15121
15123
  ...props2,
15122
15124
  children: [
15123
15125
  /* @__PURE__ */ jsx(PopoverTarget, { children: /* @__PURE__ */ jsx(Tooltip, { label: "Change Auto Layout", children: /* @__PURE__ */ jsx(ActionIcon, { children: /* @__PURE__ */ jsx(IconLayoutDashboard, {}) }) }) }),
15124
- /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
15126
+ /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, opacity: isSpacingHovered ? 0.6 : 1, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
15125
15127
  /* @__PURE__ */ jsx(
15126
15128
  FloatingIndicator,
15127
15129
  {
@@ -15141,6 +15143,7 @@ const selector = (state) => ({
15141
15143
  /* @__PURE__ */ jsx(
15142
15144
  SpacingSliders,
15143
15145
  {
15146
+ ref,
15144
15147
  isVertical: autoLayout.direction === "TB" || autoLayout.direction === "BT",
15145
15148
  nodeSep: autoLayout.nodeSep,
15146
15149
  rankSep: autoLayout.rankSep,
@@ -15152,29 +15155,31 @@ const selector = (state) => ({
15152
15155
  ]
15153
15156
  }
15154
15157
  );
15155
- }, SpacingSliders = ({
15158
+ }, MAX_SPACING = 400, SpacingSliders = forwardRef$1(({
15156
15159
  isVertical,
15157
15160
  nodeSep,
15158
15161
  rankSep,
15159
15162
  onChange
15160
- }) => {
15163
+ }, _ref) => {
15161
15164
  isVertical || ([nodeSep, rankSep] = [rankSep, nodeSep]);
15162
15165
  const propagateChange = useDebouncedCallback(
15163
15166
  ({ x: x2, y: y2 }) => {
15164
- isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * 500), Math.round(y2 * 500));
15167
+ isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * MAX_SPACING), Math.round(y2 * MAX_SPACING));
15165
15168
  },
15166
15169
  [onChange, isVertical],
15167
15170
  150,
15168
15171
  2e3
15169
15172
  ), [value, setValue] = useUncontrolled({
15170
15173
  defaultValue: clampUseMovePosition({
15171
- x: (nodeSep ?? 250) / 500,
15172
- y: (rankSep ?? 250) / 500
15174
+ x: (nodeSep ?? 100) / MAX_SPACING,
15175
+ y: (rankSep ?? 120) / MAX_SPACING
15173
15176
  }),
15174
15177
  onChange: propagateChange
15175
15178
  }), { ref } = useMove(setValue);
15176
- let nodeSepValue = Math.round(value.x * 500), rankSepValue = Math.round(value.y * 500);
15177
- return isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]), /* @__PURE__ */ jsxs(Box, { ref, className: spacingSliderBody, pt: "100%", children: [
15179
+ let nodeSepValue = Math.round(value.x * MAX_SPACING), rankSepValue = Math.round(value.y * MAX_SPACING);
15180
+ isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]);
15181
+ const mergedRef = useMergedRef(ref, _ref);
15182
+ return /* @__PURE__ */ jsxs(Box, { ref: mergedRef, className: spacingSliderBody, pt: "100%", children: [
15178
15183
  /* @__PURE__ */ jsx(
15179
15184
  Box,
15180
15185
  {
@@ -15191,7 +15196,7 @@ const selector = (state) => ({
15191
15196
  nodeSepValue
15192
15197
  ] }) })
15193
15198
  ] });
15194
- }, historySelector = (s2) => ({
15199
+ }), historySelector = (s2) => ({
15195
15200
  showBurgerMenu: !!s2.onBurgerMenuClick,
15196
15201
  hasStepBack: s2.navigationHistoryIndex > 0,
15197
15202
  hasStepForward: s2.navigationHistoryIndex < s2.navigationHistory.length - 1
@@ -15714,7 +15719,7 @@ function DiagramPreview$1({ diagram }) {
15714
15719
  }
15715
15720
  ) });
15716
15721
  }
15717
- const OverviewGraph = /* @__PURE__ */ lazy(() => import("./-index-overview-BCq3uZl4.js"));
15722
+ const OverviewGraph = /* @__PURE__ */ lazy(() => import("./-index-overview-BkDZVsmQ.js"));
15718
15723
  function WithOverviewGraph() {
15719
15724
  return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(OverviewGraph, {}) });
15720
15725
  }
@@ -15915,7 +15920,7 @@ function useDiagramsTreeData(groupBy = "by-files") {
15915
15920
  const isFile = (node) => isTreeNodeData(node) && node.type === "file", FolderIcon = ({ node, expanded }) => isFile(node) ? /* @__PURE__ */ jsx(ThemeIcon, { size: "sm", variant: "transparent", color: "indigo", children: /* @__PURE__ */ jsx(IconFileCode, { size: 16 }) }) : /* @__PURE__ */ jsx(ThemeIcon, { size: "sm", variant: "transparent", color: "violet", children: expanded ? /* @__PURE__ */ jsx(IconFolderOpen, { size: 16 }) : /* @__PURE__ */ jsx(IconFolderFilled, { size: 16 }) }), DiagramsTree = /* @__PURE__ */ memo$1(({ groupBy }) => {
15916
15921
  const data = useDiagramsTreeData(groupBy), { viewId } = useParams({
15917
15922
  from: "/view/$viewId"
15918
- }), diagram = useLikeC4View(viewId), tree = useTree({
15923
+ }), router = useRouter(), diagram = useLikeC4View(viewId), tree = useTree({
15919
15924
  multiple: !1
15920
15925
  }), relativePath = diagram?.relativePath ?? null;
15921
15926
  useUpdateEffect(() => {
@@ -15964,7 +15969,13 @@ const isFile = (node) => isTreeNodeData(node) && node.type === "file", FolderIco
15964
15969
  hasChildren && /* @__PURE__ */ jsx(FolderIcon, { node, expanded })
15965
15970
  ] }),
15966
15971
  ...!hasChildren && {
15967
- onClick: () => tree.select(node.value)
15972
+ onClick: () => {
15973
+ router.navigate({
15974
+ params: {
15975
+ viewId: node.value
15976
+ }
15977
+ });
15978
+ }
15968
15979
  },
15969
15980
  children: node.label
15970
15981
  }
@@ -1157,6 +1157,15 @@ function useHotkeys(hotkeys, tagsToIgnore = ["INPUT", "TEXTAREA", "SELECT"], tri
1157
1157
  return document.documentElement.addEventListener("keydown", keydownListener), () => document.documentElement.removeEventListener("keydown", keydownListener);
1158
1158
  }, [hotkeys]);
1159
1159
  }
1160
+ function useHover$1() {
1161
+ const [hovered, setHovered] = useState(!1), ref = useRef(null), onMouseEnter = useCallback(() => setHovered(!0), []), onMouseLeave = useCallback(() => setHovered(!1), []);
1162
+ return useEffect(() => {
1163
+ if (ref.current)
1164
+ return ref.current.addEventListener("mouseenter", onMouseEnter), ref.current.addEventListener("mouseleave", onMouseLeave), () => {
1165
+ ref.current?.removeEventListener("mouseenter", onMouseEnter), ref.current?.removeEventListener("mouseleave", onMouseLeave);
1166
+ };
1167
+ }, [ref.current]), { ref, hovered };
1168
+ }
1160
1169
  function useDisclosure(initialState = !1, callbacks) {
1161
1170
  const { onOpen, onClose } = callbacks || {}, [opened, setOpened] = useState(initialState), open = useCallback(() => {
1162
1171
  setOpened((isOpened) => isOpened || (onOpen?.(), !0));
@@ -12416,36 +12425,38 @@ export {
12416
12425
  TabsList as a0,
12417
12426
  TabsTab as a1,
12418
12427
  TabsPanel as a2,
12419
- FloatingIndicator as a3,
12420
- useUncontrolled as a4,
12421
- clampUseMovePosition as a5,
12422
- useMove as a6,
12423
- ActionIconGroup as a7,
12424
- Overlay as a8,
12425
- Notification as a9,
12426
- Code as aa,
12427
- createTheme as ab,
12428
- MantineProvider as ac,
12429
- useInViewport as ad,
12430
- SimpleGrid as ae,
12431
- useTree as af,
12432
- useComputedColorScheme as ag,
12433
- Tree as ah,
12434
- Drawer as ai,
12435
- ScrollArea as aj,
12436
- Alert as ak,
12437
- Select as al,
12438
- ModalRoot as am,
12439
- ModalOverlay as an,
12440
- ModalContent as ao,
12441
- ModalBody as ap,
12442
- useMantineTheme as aq,
12443
- useMediaQuery as ar,
12444
- useDisclosure as as,
12445
- LoadingOverlay as at,
12446
- useCallbackRef as au,
12447
- Burger as av,
12448
- Loader as aw,
12428
+ useHover$1 as a3,
12429
+ FloatingIndicator as a4,
12430
+ useUncontrolled as a5,
12431
+ clampUseMovePosition as a6,
12432
+ useMove as a7,
12433
+ useMergedRef as a8,
12434
+ ActionIconGroup as a9,
12435
+ Overlay as aa,
12436
+ Notification as ab,
12437
+ Code as ac,
12438
+ createTheme as ad,
12439
+ MantineProvider as ae,
12440
+ useInViewport as af,
12441
+ SimpleGrid as ag,
12442
+ useTree as ah,
12443
+ useComputedColorScheme as ai,
12444
+ Tree as aj,
12445
+ Drawer as ak,
12446
+ ScrollArea as al,
12447
+ Alert as am,
12448
+ Select as an,
12449
+ ModalRoot as ao,
12450
+ ModalOverlay as ap,
12451
+ ModalContent as aq,
12452
+ ModalBody as ar,
12453
+ useMantineTheme as as,
12454
+ useMediaQuery as at,
12455
+ useDisclosure as au,
12456
+ LoadingOverlay as av,
12457
+ useCallbackRef as aw,
12458
+ Burger as ax,
12459
+ Loader as ay,
12449
12460
  CardSection as b,
12450
12461
  clsx as c,
12451
12462
  Center as d,
@@ -1,4 +1,4 @@
1
1
  import "react/jsx-runtime";
2
- import "./chunks/main-TBVrmxK9.js";
2
+ import "./chunks/main-BqtsxvKL.js";
3
3
  import "react";
4
4
  import "react-dom/client";
@@ -14542,6 +14542,15 @@ function useHotkeys(hotkeys, tagsToIgnore = ["INPUT", "TEXTAREA", "SELECT"], tri
14542
14542
  return document.documentElement.addEventListener("keydown", keydownListener), () => document.documentElement.removeEventListener("keydown", keydownListener);
14543
14543
  }, [hotkeys]);
14544
14544
  }
14545
+ function useHover$1() {
14546
+ const [hovered, setHovered] = useState(!1), ref = useRef(null), onMouseEnter = useCallback(() => setHovered(!0), []), onMouseLeave = useCallback(() => setHovered(!1), []);
14547
+ return useEffect(() => {
14548
+ if (ref.current)
14549
+ return ref.current.addEventListener("mouseenter", onMouseEnter), ref.current.addEventListener("mouseleave", onMouseLeave), () => {
14550
+ ref.current?.removeEventListener("mouseenter", onMouseEnter), ref.current?.removeEventListener("mouseleave", onMouseLeave);
14551
+ };
14552
+ }, [ref.current]), { ref, hovered };
14553
+ }
14545
14554
  function useDisclosure(initialState = !1, callbacks) {
14546
14555
  const { onOpen, onClose } = callbacks || {}, [opened, setOpened] = useState(initialState), open = useCallback(() => {
14547
14556
  setOpened((isOpened) => isOpened || (onOpen?.(), !0));
@@ -26924,7 +26933,7 @@ const curveCatmullRomOpen = function custom4(alpha2) {
26924
26933
  ODot
26925
26934
  };
26926
26935
  /**
26927
- * @license @tabler/icons-react v3.19.0 - MIT
26936
+ * @license @tabler/icons-react v3.17.0 - MIT
26928
26937
  *
26929
26938
  * This source code is licensed under the MIT license.
26930
26939
  * See the LICENSE file in the root directory of this source tree.
@@ -26951,7 +26960,7 @@ var defaultAttributes = {
26951
26960
  }
26952
26961
  };
26953
26962
  /**
26954
- * @license @tabler/icons-react v3.19.0 - MIT
26963
+ * @license @tabler/icons-react v3.17.0 - MIT
26955
26964
  *
26956
26965
  * This source code is licensed under the MIT license.
26957
26966
  * See the LICENSE file in the root directory of this source tree.
@@ -26984,140 +26993,140 @@ const createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
26984
26993
  return Component2.displayName = `${iconNamePascal}`, Component2;
26985
26994
  };
26986
26995
  /**
26987
- * @license @tabler/icons-react v3.19.0 - MIT
26996
+ * @license @tabler/icons-react v3.17.0 - MIT
26988
26997
  *
26989
26998
  * This source code is licensed under the MIT license.
26990
26999
  * See the LICENSE file in the root directory of this source tree.
26991
27000
  */
26992
27001
  var IconAlertTriangle = createReactComponent("outline", "alert-triangle", "IconAlertTriangle", [["path", { d: "M12 9v4", key: "svg-0" }], ["path", { d: "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", key: "svg-1" }], ["path", { d: "M12 16h.01", key: "svg-2" }]]);
26993
27002
  /**
26994
- * @license @tabler/icons-react v3.19.0 - MIT
27003
+ * @license @tabler/icons-react v3.17.0 - MIT
26995
27004
  *
26996
27005
  * This source code is licensed under the MIT license.
26997
27006
  * See the LICENSE file in the root directory of this source tree.
26998
27007
  */
26999
27008
  var IconArrowDownRight = createReactComponent("outline", "arrow-down-right", "IconArrowDownRight", [["path", { d: "M7 7l10 10", key: "svg-0" }], ["path", { d: "M17 8l0 9l-9 0", key: "svg-1" }]]);
27000
27009
  /**
27001
- * @license @tabler/icons-react v3.19.0 - MIT
27010
+ * @license @tabler/icons-react v3.17.0 - MIT
27002
27011
  *
27003
27012
  * This source code is licensed under the MIT license.
27004
27013
  * See the LICENSE file in the root directory of this source tree.
27005
27014
  */
27006
27015
  var IconArrowRight = createReactComponent("outline", "arrow-right", "IconArrowRight", [["path", { d: "M5 12l14 0", key: "svg-0" }], ["path", { d: "M13 18l6 -6", key: "svg-1" }], ["path", { d: "M13 6l6 6", key: "svg-2" }]]);
27007
27016
  /**
27008
- * @license @tabler/icons-react v3.19.0 - MIT
27017
+ * @license @tabler/icons-react v3.17.0 - MIT
27009
27018
  *
27010
27019
  * This source code is licensed under the MIT license.
27011
27020
  * See the LICENSE file in the root directory of this source tree.
27012
27021
  */
27013
27022
  var IconCheck = createReactComponent("outline", "check", "IconCheck", [["path", { d: "M5 12l5 5l10 -10", key: "svg-0" }]]);
27014
27023
  /**
27015
- * @license @tabler/icons-react v3.19.0 - MIT
27024
+ * @license @tabler/icons-react v3.17.0 - MIT
27016
27025
  *
27017
27026
  * This source code is licensed under the MIT license.
27018
27027
  * See the LICENSE file in the root directory of this source tree.
27019
27028
  */
27020
27029
  var IconChevronLeft = createReactComponent("outline", "chevron-left", "IconChevronLeft", [["path", { d: "M15 6l-6 6l6 6", key: "svg-0" }]]);
27021
27030
  /**
27022
- * @license @tabler/icons-react v3.19.0 - MIT
27031
+ * @license @tabler/icons-react v3.17.0 - MIT
27023
27032
  *
27024
27033
  * This source code is licensed under the MIT license.
27025
27034
  * See the LICENSE file in the root directory of this source tree.
27026
27035
  */
27027
27036
  var IconChevronRight = createReactComponent("outline", "chevron-right", "IconChevronRight", [["path", { d: "M9 6l6 6l-6 6", key: "svg-0" }]]);
27028
27037
  /**
27029
- * @license @tabler/icons-react v3.19.0 - MIT
27038
+ * @license @tabler/icons-react v3.17.0 - MIT
27030
27039
  *
27031
27040
  * This source code is licensed under the MIT license.
27032
27041
  * See the LICENSE file in the root directory of this source tree.
27033
27042
  */
27034
27043
  var IconFileSymlink = createReactComponent("outline", "file-symlink", "IconFileSymlink", [["path", { d: "M4 21v-4a3 3 0 0 1 3 -3h5", key: "svg-0" }], ["path", { d: "M9 17l3 -3l-3 -3", key: "svg-1" }], ["path", { d: "M14 3v4a1 1 0 0 0 1 1h4", key: "svg-2" }], ["path", { d: "M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5", key: "svg-3" }]]);
27035
27044
  /**
27036
- * @license @tabler/icons-react v3.19.0 - MIT
27045
+ * @license @tabler/icons-react v3.17.0 - MIT
27037
27046
  *
27038
27047
  * This source code is licensed under the MIT license.
27039
27048
  * See the LICENSE file in the root directory of this source tree.
27040
27049
  */
27041
27050
  var IconFocusCentered = createReactComponent("outline", "focus-centered", "IconFocusCentered", [["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }], ["path", { d: "M4 8v-2a2 2 0 0 1 2 -2h2", key: "svg-1" }], ["path", { d: "M4 16v2a2 2 0 0 0 2 2h2", key: "svg-2" }], ["path", { d: "M16 4h2a2 2 0 0 1 2 2v2", key: "svg-3" }], ["path", { d: "M16 20h2a2 2 0 0 0 2 -2v-2", key: "svg-4" }]]);
27042
27051
  /**
27043
- * @license @tabler/icons-react v3.19.0 - MIT
27052
+ * @license @tabler/icons-react v3.17.0 - MIT
27044
27053
  *
27045
27054
  * This source code is licensed under the MIT license.
27046
27055
  * See the LICENSE file in the root directory of this source tree.
27047
27056
  */
27048
27057
  var IconHelpCircle = createReactComponent("outline", "help-circle", "IconHelpCircle", [["path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", key: "svg-0" }], ["path", { d: "M12 16v.01", key: "svg-1" }], ["path", { d: "M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483", key: "svg-2" }]]);
27049
27058
  /**
27050
- * @license @tabler/icons-react v3.19.0 - MIT
27059
+ * @license @tabler/icons-react v3.17.0 - MIT
27051
27060
  *
27052
27061
  * This source code is licensed under the MIT license.
27053
27062
  * See the LICENSE file in the root directory of this source tree.
27054
27063
  */
27055
27064
  var IconLayoutDashboard = createReactComponent("outline", "layout-dashboard", "IconLayoutDashboard", [["path", { d: "M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1", key: "svg-0" }], ["path", { d: "M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1", key: "svg-1" }], ["path", { d: "M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1", key: "svg-2" }], ["path", { d: "M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1", key: "svg-3" }]]);
27056
27065
  /**
27057
- * @license @tabler/icons-react v3.19.0 - MIT
27066
+ * @license @tabler/icons-react v3.17.0 - MIT
27058
27067
  *
27059
27068
  * This source code is licensed under the MIT license.
27060
27069
  * See the LICENSE file in the root directory of this source tree.
27061
27070
  */
27062
27071
  var IconLink = createReactComponent("outline", "link", "IconLink", [["path", { d: "M9 15l6 -6", key: "svg-0" }], ["path", { d: "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", key: "svg-1" }], ["path", { d: "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", key: "svg-2" }]]);
27063
27072
  /**
27064
- * @license @tabler/icons-react v3.19.0 - MIT
27073
+ * @license @tabler/icons-react v3.17.0 - MIT
27065
27074
  *
27066
27075
  * This source code is licensed under the MIT license.
27067
27076
  * See the LICENSE file in the root directory of this source tree.
27068
27077
  */
27069
27078
  var IconMenu2 = createReactComponent("outline", "menu-2", "IconMenu2", [["path", { d: "M4 6l16 0", key: "svg-0" }], ["path", { d: "M4 12l16 0", key: "svg-1" }], ["path", { d: "M4 18l16 0", key: "svg-2" }]]);
27070
27079
  /**
27071
- * @license @tabler/icons-react v3.19.0 - MIT
27080
+ * @license @tabler/icons-react v3.17.0 - MIT
27072
27081
  *
27073
27082
  * This source code is licensed under the MIT license.
27074
27083
  * See the LICENSE file in the root directory of this source tree.
27075
27084
  */
27076
27085
  var IconMenu = createReactComponent("outline", "menu", "IconMenu", [["path", { d: "M4 8l16 0", key: "svg-0" }], ["path", { d: "M4 16l16 0", key: "svg-1" }]]);
27077
27086
  /**
27078
- * @license @tabler/icons-react v3.19.0 - MIT
27087
+ * @license @tabler/icons-react v3.17.0 - MIT
27079
27088
  *
27080
27089
  * This source code is licensed under the MIT license.
27081
27090
  * See the LICENSE file in the root directory of this source tree.
27082
27091
  */
27083
27092
  var IconRouteOff = createReactComponent("outline", "route-off", "IconRouteOff", [["path", { d: "M6 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", key: "svg-0" }], ["path", { d: "M18 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", key: "svg-1" }], ["path", { d: "M12 19h4.5c.71 0 1.372 -.212 1.924 -.576m1.545 -2.459a3.5 3.5 0 0 0 -3.469 -3.965h-.499m-4 0h-3.501a3.5 3.5 0 0 1 -2.477 -5.972m2.477 -1.028h3.5", key: "svg-2" }], ["path", { d: "M3 3l18 18", key: "svg-3" }]]);
27084
27093
  /**
27085
- * @license @tabler/icons-react v3.19.0 - MIT
27094
+ * @license @tabler/icons-react v3.17.0 - MIT
27086
27095
  *
27087
27096
  * This source code is licensed under the MIT license.
27088
27097
  * See the LICENSE file in the root directory of this source tree.
27089
27098
  */
27090
27099
  var IconSelector = createReactComponent("outline", "selector", "IconSelector", [["path", { d: "M8 9l4 -4l4 4", key: "svg-0" }], ["path", { d: "M16 15l-4 4l-4 -4", key: "svg-1" }]]);
27091
27100
  /**
27092
- * @license @tabler/icons-react v3.19.0 - MIT
27101
+ * @license @tabler/icons-react v3.17.0 - MIT
27093
27102
  *
27094
27103
  * This source code is licensed under the MIT license.
27095
27104
  * See the LICENSE file in the root directory of this source tree.
27096
27105
  */
27097
27106
  var IconZoomScan = createReactComponent("outline", "zoom-scan", "IconZoomScan", [["path", { d: "M4 8v-2a2 2 0 0 1 2 -2h2", key: "svg-0" }], ["path", { d: "M4 16v2a2 2 0 0 0 2 2h2", key: "svg-1" }], ["path", { d: "M16 4h2a2 2 0 0 1 2 2v2", key: "svg-2" }], ["path", { d: "M16 20h2a2 2 0 0 0 2 -2v-2", key: "svg-3" }], ["path", { d: "M8 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0", key: "svg-4" }], ["path", { d: "M16 16l-2.5 -2.5", key: "svg-5" }]]);
27098
27107
  /**
27099
- * @license @tabler/icons-react v3.19.0 - MIT
27108
+ * @license @tabler/icons-react v3.17.0 - MIT
27100
27109
  *
27101
27110
  * This source code is licensed under the MIT license.
27102
27111
  * See the LICENSE file in the root directory of this source tree.
27103
27112
  */
27104
27113
  var IconPlayerPlayFilled = createReactComponent("filled", "player-play-filled", "IconPlayerPlayFilled", [["path", { d: "M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 1 0 0 0 -1.524 .852z", key: "svg-0" }]]);
27105
27114
  /**
27106
- * @license @tabler/icons-react v3.19.0 - MIT
27115
+ * @license @tabler/icons-react v3.17.0 - MIT
27107
27116
  *
27108
27117
  * This source code is licensed under the MIT license.
27109
27118
  * See the LICENSE file in the root directory of this source tree.
27110
27119
  */
27111
27120
  var IconPlayerSkipBackFilled = createReactComponent("filled", "player-skip-back-filled", "IconPlayerSkipBackFilled", [["path", { d: "M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z", key: "svg-0" }], ["path", { d: "M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z", key: "svg-1" }]]);
27112
27121
  /**
27113
- * @license @tabler/icons-react v3.19.0 - MIT
27122
+ * @license @tabler/icons-react v3.17.0 - MIT
27114
27123
  *
27115
27124
  * This source code is licensed under the MIT license.
27116
27125
  * See the LICENSE file in the root directory of this source tree.
27117
27126
  */
27118
27127
  var IconPlayerSkipForwardFilled = createReactComponent("filled", "player-skip-forward-filled", "IconPlayerSkipForwardFilled", [["path", { d: "M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z", key: "svg-0" }], ["path", { d: "M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z", key: "svg-1" }]]);
27119
27128
  /**
27120
- * @license @tabler/icons-react v3.19.0 - MIT
27129
+ * @license @tabler/icons-react v3.17.0 - MIT
27121
27130
  *
27122
27131
  * This source code is licensed under the MIT license.
27123
27132
  * See the LICENSE file in the root directory of this source tree.
@@ -30715,7 +30724,7 @@ const selector = (state) => ({
30715
30724
  const store = useDiagramStoreApi(), [rootRef, setRootRef] = useState(null), [controlsRefs, setControlsRefs] = useState({}), {
30716
30725
  autoLayout,
30717
30726
  viewId
30718
- } = useDiagramState(selector), setControlRef = (name) => (node) => {
30727
+ } = useDiagramState(selector), { ref, hovered: isSpacingHovered } = useHover$1(), setControlRef = (name) => (node) => {
30719
30728
  controlsRefs[name] = node, setControlsRefs(controlsRefs);
30720
30729
  }, setAutoLayout = (direction) => (event) => {
30721
30730
  event.stopPropagation(), store.getState().onChange?.({
@@ -30728,7 +30737,9 @@ const selector = (state) => ({
30728
30737
  }
30729
30738
  });
30730
30739
  }, setSpacing = (nodeSep, rankSep) => {
30731
- store.getState().onChange?.({
30740
+ store.setState({
30741
+ viewportChanged: !1
30742
+ }), store.getState().onChange?.({
30732
30743
  change: {
30733
30744
  op: "change-autolayout",
30734
30745
  layout: {
@@ -30754,7 +30765,7 @@ const selector = (state) => ({
30754
30765
  ...props,
30755
30766
  children: [
30756
30767
  /* @__PURE__ */ jsx(PopoverTarget, { children: /* @__PURE__ */ jsx(Tooltip, { label: "Change Auto Layout", children: /* @__PURE__ */ jsx(ActionIcon, { children: /* @__PURE__ */ jsx(IconLayoutDashboard, {}) }) }) }),
30757
- /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
30768
+ /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, opacity: isSpacingHovered ? 0.6 : 1, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
30758
30769
  /* @__PURE__ */ jsx(
30759
30770
  FloatingIndicator,
30760
30771
  {
@@ -30774,6 +30785,7 @@ const selector = (state) => ({
30774
30785
  /* @__PURE__ */ jsx(
30775
30786
  SpacingSliders,
30776
30787
  {
30788
+ ref,
30777
30789
  isVertical: autoLayout.direction === "TB" || autoLayout.direction === "BT",
30778
30790
  nodeSep: autoLayout.nodeSep,
30779
30791
  rankSep: autoLayout.rankSep,
@@ -30785,29 +30797,31 @@ const selector = (state) => ({
30785
30797
  ]
30786
30798
  }
30787
30799
  );
30788
- }, SpacingSliders = ({
30800
+ }, MAX_SPACING = 400, SpacingSliders = forwardRef(({
30789
30801
  isVertical,
30790
30802
  nodeSep,
30791
30803
  rankSep,
30792
30804
  onChange
30793
- }) => {
30805
+ }, _ref) => {
30794
30806
  isVertical || ([nodeSep, rankSep] = [rankSep, nodeSep]);
30795
30807
  const propagateChange = useDebouncedCallback$1(
30796
30808
  ({ x: x2, y: y2 }) => {
30797
- isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * 500), Math.round(y2 * 500));
30809
+ isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * MAX_SPACING), Math.round(y2 * MAX_SPACING));
30798
30810
  },
30799
30811
  [onChange, isVertical],
30800
30812
  150,
30801
30813
  2e3
30802
30814
  ), [value, setValue] = useUncontrolled({
30803
30815
  defaultValue: clampUseMovePosition({
30804
- x: (nodeSep ?? 250) / 500,
30805
- y: (rankSep ?? 250) / 500
30816
+ x: (nodeSep ?? 100) / MAX_SPACING,
30817
+ y: (rankSep ?? 120) / MAX_SPACING
30806
30818
  }),
30807
30819
  onChange: propagateChange
30808
30820
  }), { ref } = useMove(setValue);
30809
- let nodeSepValue = Math.round(value.x * 500), rankSepValue = Math.round(value.y * 500);
30810
- return isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]), /* @__PURE__ */ jsxs(Box, { ref, className: spacingSliderBody, pt: "100%", children: [
30821
+ let nodeSepValue = Math.round(value.x * MAX_SPACING), rankSepValue = Math.round(value.y * MAX_SPACING);
30822
+ isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]);
30823
+ const mergedRef = useMergedRef(ref, _ref);
30824
+ return /* @__PURE__ */ jsxs(Box, { ref: mergedRef, className: spacingSliderBody, pt: "100%", children: [
30811
30825
  /* @__PURE__ */ jsx(
30812
30826
  Box,
30813
30827
  {
@@ -30824,7 +30838,7 @@ const selector = (state) => ({
30824
30838
  nodeSepValue
30825
30839
  ] }) })
30826
30840
  ] });
30827
- }, historySelector = (s2) => ({
30841
+ }), historySelector = (s2) => ({
30828
30842
  showBurgerMenu: !!s2.onBurgerMenuClick,
30829
30843
  hasStepBack: s2.navigationHistoryIndex > 0,
30830
30844
  hasStepForward: s2.navigationHistoryIndex < s2.navigationHistory.length - 1
@@ -1,4 +1,4 @@
1
- import{stdin as Q,stdout as X}from"node:process";import L from"node:readline";import{WriteStream as DD}from"node:tty";import{g as uD,i as eD,k as i}from"../shared/likec4.DIJE01bW.mjs";import tD from"tty";import"node:util";import"node:path";import"node:fs";import"node:url";import"@hpcc-js/wasm-graphviz";import"node:child_process";import"node:string_decoder";import"child_process";import"path";import"fs";import"node:timers/promises";import"node:os";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"vite";import"buffer";import"util";import"os";import"crypto";import"net";import"url";const w="\x1B",a=`${w}[`,FD="\x07",y={to(e,u){return u?`${a}${u+1};${e+1}H`:`${a}${e+1}G`},move(e,u){let t="";return e<0?t+=`${a}${-e}D`:e>0&&(t+=`${a}${e}C`),u<0?t+=`${a}${-u}A`:u>0&&(t+=`${a}${u}B`),t},up:(e=1)=>`${a}${e}A`,down:(e=1)=>`${a}${e}B`,forward:(e=1)=>`${a}${e}C`,backward:(e=1)=>`${a}${e}D`,nextLine:(e=1)=>`${a}E`.repeat(e),prevLine:(e=1)=>`${a}F`.repeat(e),left:`${a}G`,hide:`${a}?25l`,show:`${a}?25h`,save:`${w}7`,restore:`${w}8`},rD={up:(e=1)=>`${a}S`.repeat(e),down:(e=1)=>`${a}T`.repeat(e)},iD={screen:`${a}2J`,up:(e=1)=>`${a}1J`.repeat(e),down:(e=1)=>`${a}J`.repeat(e),line:`${a}2K`,lineEnd:`${a}K`,lineStart:`${a}1K`,lines(e){let u="";for(let t=0;t<e;t++)u+=this.line+(t<e-1?y.up():"");return e&&(u+=y.left),u}};var p={cursor:y,scroll:rD,erase:iD,beep:FD},S={exports:{}};let sD=tD,CD=!("NO_COLOR"in process.env||process.argv.includes("--no-color"))&&("FORCE_COLOR"in process.env||process.argv.includes("--color")||process.platform==="win32"||sD.isatty(1)&&process.env.TERM!=="dumb"||"CI"in process.env),E=(e,u,t=e)=>F=>{let r=""+F,s=r.indexOf(u,e.length);return~s?e+R(r,u,t,s)+u:e+r+u},R=(e,u,t,F)=>{let r=e.substring(0,F)+t,s=e.substring(F+u.length),D=s.indexOf(u);return~D?r+R(s,u,t,D):r+s},z=(e=CD)=>({isColorSupported:e,reset:e?u=>`\x1B[0m${u}\x1B[0m`:String,bold:e?E("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"):String,dim:e?E("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"):String,italic:e?E("\x1B[3m","\x1B[23m"):String,underline:e?E("\x1B[4m","\x1B[24m"):String,inverse:e?E("\x1B[7m","\x1B[27m"):String,hidden:e?E("\x1B[8m","\x1B[28m"):String,strikethrough:e?E("\x1B[9m","\x1B[29m"):String,black:e?E("\x1B[30m","\x1B[39m"):String,red:e?E("\x1B[31m","\x1B[39m"):String,green:e?E("\x1B[32m","\x1B[39m"):String,yellow:e?E("\x1B[33m","\x1B[39m"):String,blue:e?E("\x1B[34m","\x1B[39m"):String,magenta:e?E("\x1B[35m","\x1B[39m"):String,cyan:e?E("\x1B[36m","\x1B[39m"):String,white:e?E("\x1B[37m","\x1B[39m"):String,gray:e?E("\x1B[90m","\x1B[39m"):String,bgBlack:e?E("\x1B[40m","\x1B[49m"):String,bgRed:e?E("\x1B[41m","\x1B[49m"):String,bgGreen:e?E("\x1B[42m","\x1B[49m"):String,bgYellow:e?E("\x1B[43m","\x1B[49m"):String,bgBlue:e?E("\x1B[44m","\x1B[49m"):String,bgMagenta:e?E("\x1B[45m","\x1B[49m"):String,bgCyan:e?E("\x1B[46m","\x1B[49m"):String,bgWhite:e?E("\x1B[47m","\x1B[49m"):String});S.exports=z(),S.exports.createColors=z;var nD=S.exports;const k=uD(nD);function ED({onlyFirst:e=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,e?void 0:"g")}function N(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ED(),"")}var _={},oD={get exports(){return _},set exports(e){_=e}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var r=F.charCodeAt(0),s=F.length==2?F.charCodeAt(1):0,D=r;return 55296<=r&&r<=56319&&56320<=s&&s<=57343&&(r&=1023,s&=1023,D=r<<10|s,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(F){var r=this.eastAsianWidth(F);return r=="F"||r=="W"||r=="A"?2:1};function t(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(F){for(var r=t(F),s=0,D=0;D<r.length;D++)s=s+this.characterLength(r[D]);return s},u.slice=function(F,r,s){textLen=u.length(F),r=r||0,s=s||1,r<0&&(r=textLen+r),s<0&&(s=textLen+s);for(var D="",C=0,h=t(F),l=0;l<h.length;l++){var c=h[l],B=u.length(c);if(C>=r-(B==2?1:0))if(C+B<=s)D+=c;else break;C+=B}return D}})(oD);const aD=_;var lD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};function d(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=N(e),e.length===0))return 0;e=e.replace(lD()," ");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const r of e){const s=r.codePointAt(0);if(!(s<=31||s>=127&&s<=159||s>=768&&s<=879))switch(aD.eastAsianWidth(r)){case"F":case"W":F+=2;break;case"A":F+=t;break;default:F+=1}}return F}const j=10,K=(e=0)=>u=>`\x1B[${u+e}m`,I=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,P=(e=0)=>(u,t,F)=>`\x1B[${38+e};2;${u};${t};${F}m`,o={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(o.modifier);const BD=Object.keys(o.color),hD=Object.keys(o.bgColor);[...BD,...hD];function cD(){const e=new Map;for(const[u,t]of Object.entries(o)){for(const[F,r]of Object.entries(t))o[F]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},t[F]=o[F],e.set(r[0],r[1]);Object.defineProperty(o,u,{value:t,enumerable:!1})}return Object.defineProperty(o,"codes",{value:e,enumerable:!1}),o.color.close="\x1B[39m",o.bgColor.close="\x1B[49m",o.color.ansi=K(),o.color.ansi256=I(),o.color.ansi16m=P(),o.bgColor.ansi=K(j),o.bgColor.ansi256=I(j),o.bgColor.ansi16m=P(j),Object.defineProperties(o,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:!1},hexToRgb:{value:u=>{const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[F]=t;F.length===3&&(F=[...F].map(s=>s+s).join(""));const r=Number.parseInt(F,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:u=>o.rgbToAnsi256(...o.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,r;if(u>=232)t=((u-232)*10+8)/255,F=t,r=t;else{u-=16;const C=u%36;t=Math.floor(u/36)/5,F=Math.floor(C/6)/5,r=C%6/5}const s=Math.max(t,F,r)*2;if(s===0)return 30;let D=30+(Math.round(r)<<2|Math.round(F)<<1|Math.round(t));return s===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,F)=>o.ansi256ToAnsi(o.rgbToAnsi256(u,t,F)),enumerable:!1},hexToAnsi:{value:u=>o.ansi256ToAnsi(o.hexToAnsi256(u)),enumerable:!1}}),o}const pD=cD(),v=new Set(["\x1B","\x9B"]),mD=39,V="\x07",G="[",AD="]",q="m",M=`${AD}8;;`,Y=e=>`${v.values().next().value}${G}${e}${q}`,Z=e=>`${v.values().next().value}${M}${e}${V}`,gD=e=>e.split(" ").map(u=>d(u)),W=(e,u,t)=>{const F=[...u];let r=!1,s=!1,D=d(N(e[e.length-1]));for(const[C,h]of F.entries()){const l=d(h);if(D+l<=t?e[e.length-1]+=h:(e.push(h),D=0),v.has(h)&&(r=!0,s=F.slice(C+1).join("").startsWith(M)),r){s?h===V&&(r=!1,s=!1):h===q&&(r=!1);continue}D+=l,D===t&&C<F.length-1&&(e.push(""),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},dD=e=>{const u=e.split(" ");let t=u.length;for(;t>0&&!(d(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},$D=(e,u,t={})=>{if(t.trim!==!1&&e.trim()==="")return"";let F="",r,s;const D=gD(e);let C=[""];for(const[l,c]of e.split(" ").entries()){t.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let B=d(C[C.length-1]);if(l!==0&&(B>=u&&(t.wordWrap===!1||t.trim===!1)&&(C.push(""),B=0),(B>0||t.trim===!1)&&(C[C.length-1]+=" ",B++)),t.hard&&D[l]>u){const A=u-B,$=1+Math.floor((D[l]-A-1)/u);Math.floor((D[l]-1)/u)<$&&C.push(""),W(C,c,u);continue}if(B+D[l]>u&&B>0&&D[l]>0){if(t.wordWrap===!1&&B<u){W(C,c,u);continue}C.push("")}if(B+D[l]>u&&t.wordWrap===!1){W(C,c,u);continue}C[C.length-1]+=c}t.trim!==!1&&(C=C.map(l=>dD(l)));const h=[...C.join(`
1
+ import{stdin as Q,stdout as X}from"node:process";import L from"node:readline";import{WriteStream as DD}from"node:tty";import{g as uD,i as eD,k as i}from"../shared/likec4.BYHvTT3g.mjs";import tD from"tty";import"node:util";import"node:path";import"node:fs";import"node:url";import"@hpcc-js/wasm-graphviz";import"node:child_process";import"node:string_decoder";import"child_process";import"path";import"fs";import"node:timers/promises";import"node:os";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"vite";import"buffer";import"util";import"os";import"crypto";import"net";import"url";const w="\x1B",a=`${w}[`,FD="\x07",y={to(e,u){return u?`${a}${u+1};${e+1}H`:`${a}${e+1}G`},move(e,u){let t="";return e<0?t+=`${a}${-e}D`:e>0&&(t+=`${a}${e}C`),u<0?t+=`${a}${-u}A`:u>0&&(t+=`${a}${u}B`),t},up:(e=1)=>`${a}${e}A`,down:(e=1)=>`${a}${e}B`,forward:(e=1)=>`${a}${e}C`,backward:(e=1)=>`${a}${e}D`,nextLine:(e=1)=>`${a}E`.repeat(e),prevLine:(e=1)=>`${a}F`.repeat(e),left:`${a}G`,hide:`${a}?25l`,show:`${a}?25h`,save:`${w}7`,restore:`${w}8`},rD={up:(e=1)=>`${a}S`.repeat(e),down:(e=1)=>`${a}T`.repeat(e)},iD={screen:`${a}2J`,up:(e=1)=>`${a}1J`.repeat(e),down:(e=1)=>`${a}J`.repeat(e),line:`${a}2K`,lineEnd:`${a}K`,lineStart:`${a}1K`,lines(e){let u="";for(let t=0;t<e;t++)u+=this.line+(t<e-1?y.up():"");return e&&(u+=y.left),u}};var p={cursor:y,scroll:rD,erase:iD,beep:FD},S={exports:{}};let sD=tD,CD=!("NO_COLOR"in process.env||process.argv.includes("--no-color"))&&("FORCE_COLOR"in process.env||process.argv.includes("--color")||process.platform==="win32"||sD.isatty(1)&&process.env.TERM!=="dumb"||"CI"in process.env),E=(e,u,t=e)=>F=>{let r=""+F,s=r.indexOf(u,e.length);return~s?e+R(r,u,t,s)+u:e+r+u},R=(e,u,t,F)=>{let r=e.substring(0,F)+t,s=e.substring(F+u.length),D=s.indexOf(u);return~D?r+R(s,u,t,D):r+s},z=(e=CD)=>({isColorSupported:e,reset:e?u=>`\x1B[0m${u}\x1B[0m`:String,bold:e?E("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"):String,dim:e?E("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"):String,italic:e?E("\x1B[3m","\x1B[23m"):String,underline:e?E("\x1B[4m","\x1B[24m"):String,inverse:e?E("\x1B[7m","\x1B[27m"):String,hidden:e?E("\x1B[8m","\x1B[28m"):String,strikethrough:e?E("\x1B[9m","\x1B[29m"):String,black:e?E("\x1B[30m","\x1B[39m"):String,red:e?E("\x1B[31m","\x1B[39m"):String,green:e?E("\x1B[32m","\x1B[39m"):String,yellow:e?E("\x1B[33m","\x1B[39m"):String,blue:e?E("\x1B[34m","\x1B[39m"):String,magenta:e?E("\x1B[35m","\x1B[39m"):String,cyan:e?E("\x1B[36m","\x1B[39m"):String,white:e?E("\x1B[37m","\x1B[39m"):String,gray:e?E("\x1B[90m","\x1B[39m"):String,bgBlack:e?E("\x1B[40m","\x1B[49m"):String,bgRed:e?E("\x1B[41m","\x1B[49m"):String,bgGreen:e?E("\x1B[42m","\x1B[49m"):String,bgYellow:e?E("\x1B[43m","\x1B[49m"):String,bgBlue:e?E("\x1B[44m","\x1B[49m"):String,bgMagenta:e?E("\x1B[45m","\x1B[49m"):String,bgCyan:e?E("\x1B[46m","\x1B[49m"):String,bgWhite:e?E("\x1B[47m","\x1B[49m"):String});S.exports=z(),S.exports.createColors=z;var nD=S.exports;const k=uD(nD);function ED({onlyFirst:e=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,e?void 0:"g")}function N(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ED(),"")}var _={},oD={get exports(){return _},set exports(e){_=e}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var r=F.charCodeAt(0),s=F.length==2?F.charCodeAt(1):0,D=r;return 55296<=r&&r<=56319&&56320<=s&&s<=57343&&(r&=1023,s&=1023,D=r<<10|s,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(F){var r=this.eastAsianWidth(F);return r=="F"||r=="W"||r=="A"?2:1};function t(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(F){for(var r=t(F),s=0,D=0;D<r.length;D++)s=s+this.characterLength(r[D]);return s},u.slice=function(F,r,s){textLen=u.length(F),r=r||0,s=s||1,r<0&&(r=textLen+r),s<0&&(s=textLen+s);for(var D="",C=0,h=t(F),l=0;l<h.length;l++){var c=h[l],B=u.length(c);if(C>=r-(B==2?1:0))if(C+B<=s)D+=c;else break;C+=B}return D}})(oD);const aD=_;var lD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};function d(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=N(e),e.length===0))return 0;e=e.replace(lD()," ");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const r of e){const s=r.codePointAt(0);if(!(s<=31||s>=127&&s<=159||s>=768&&s<=879))switch(aD.eastAsianWidth(r)){case"F":case"W":F+=2;break;case"A":F+=t;break;default:F+=1}}return F}const j=10,K=(e=0)=>u=>`\x1B[${u+e}m`,I=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,P=(e=0)=>(u,t,F)=>`\x1B[${38+e};2;${u};${t};${F}m`,o={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(o.modifier);const BD=Object.keys(o.color),hD=Object.keys(o.bgColor);[...BD,...hD];function cD(){const e=new Map;for(const[u,t]of Object.entries(o)){for(const[F,r]of Object.entries(t))o[F]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},t[F]=o[F],e.set(r[0],r[1]);Object.defineProperty(o,u,{value:t,enumerable:!1})}return Object.defineProperty(o,"codes",{value:e,enumerable:!1}),o.color.close="\x1B[39m",o.bgColor.close="\x1B[49m",o.color.ansi=K(),o.color.ansi256=I(),o.color.ansi16m=P(),o.bgColor.ansi=K(j),o.bgColor.ansi256=I(j),o.bgColor.ansi16m=P(j),Object.defineProperties(o,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:!1},hexToRgb:{value:u=>{const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[F]=t;F.length===3&&(F=[...F].map(s=>s+s).join(""));const r=Number.parseInt(F,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:u=>o.rgbToAnsi256(...o.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,r;if(u>=232)t=((u-232)*10+8)/255,F=t,r=t;else{u-=16;const C=u%36;t=Math.floor(u/36)/5,F=Math.floor(C/6)/5,r=C%6/5}const s=Math.max(t,F,r)*2;if(s===0)return 30;let D=30+(Math.round(r)<<2|Math.round(F)<<1|Math.round(t));return s===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,F)=>o.ansi256ToAnsi(o.rgbToAnsi256(u,t,F)),enumerable:!1},hexToAnsi:{value:u=>o.ansi256ToAnsi(o.hexToAnsi256(u)),enumerable:!1}}),o}const pD=cD(),v=new Set(["\x1B","\x9B"]),mD=39,V="\x07",G="[",AD="]",q="m",M=`${AD}8;;`,Y=e=>`${v.values().next().value}${G}${e}${q}`,Z=e=>`${v.values().next().value}${M}${e}${V}`,gD=e=>e.split(" ").map(u=>d(u)),W=(e,u,t)=>{const F=[...u];let r=!1,s=!1,D=d(N(e[e.length-1]));for(const[C,h]of F.entries()){const l=d(h);if(D+l<=t?e[e.length-1]+=h:(e.push(h),D=0),v.has(h)&&(r=!0,s=F.slice(C+1).join("").startsWith(M)),r){s?h===V&&(r=!1,s=!1):h===q&&(r=!1);continue}D+=l,D===t&&C<F.length-1&&(e.push(""),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},dD=e=>{const u=e.split(" ");let t=u.length;for(;t>0&&!(d(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},$D=(e,u,t={})=>{if(t.trim!==!1&&e.trim()==="")return"";let F="",r,s;const D=gD(e);let C=[""];for(const[l,c]of e.split(" ").entries()){t.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let B=d(C[C.length-1]);if(l!==0&&(B>=u&&(t.wordWrap===!1||t.trim===!1)&&(C.push(""),B=0),(B>0||t.trim===!1)&&(C[C.length-1]+=" ",B++)),t.hard&&D[l]>u){const A=u-B,$=1+Math.floor((D[l]-A-1)/u);Math.floor((D[l]-1)/u)<$&&C.push(""),W(C,c,u);continue}if(B+D[l]>u&&B>0&&D[l]>0){if(t.wordWrap===!1&&B<u){W(C,c,u);continue}C.push("")}if(B+D[l]>u&&t.wordWrap===!1){W(C,c,u);continue}C[C.length-1]+=c}t.trim!==!1&&(C=C.map(l=>dD(l)));const h=[...C.join(`
2
2
  `)];for(const[l,c]of h.entries()){if(F+=c,v.has(c)){const{groups:A}=new RegExp(`(?:\\${G}(?<code>\\d+)m|\\${M}(?<uri>.*)${V})`).exec(h.slice(l).join(""))||{groups:{}};if(A.code!==void 0){const $=Number.parseFloat(A.code);r=$===mD?void 0:$}else A.uri!==void 0&&(s=A.uri.length===0?void 0:A.uri)}const B=pD.codes.get(Number(r));h[l+1]===`
3
3
  `?(s&&(F+=Z("")),r&&B&&(F+=Y(B))):c===`
4
4
  `&&(r&&B&&(F+=Y(r)),s&&(F+=Z(s)))}return F};function H(e,u,t){return String(e).normalize().replace(/\r\n/g,`
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{hrtime as zs,cwd as hi,stdout as Hs,exit as Gs,argv as Ys}from"node:process";import{m as qt,o as pi,p as qs,s as Js,N as mi,t as Ks,v as gi,y as Qs,z as Xs,A as Di,B as Ci,D as Zs,E as b,F as er,G as De,I as tr,K as nr,M as ke,R as ir,U as sr,V as rr,W as wi,X as Ai,e as qe,C as ur,Y as or,$ as Jt,q as Ei,b as yn,a0 as bi,a1 as ar,a2 as Fi,a3 as yi,a4 as vi,a5 as cr}from"../shared/likec4.DIJE01bW.mjs";import{notStrictEqual as lr,strictEqual as fr}from"assert";import{resolve as je,dirname as vn,normalize as dr,basename as hr,extname as pr,relative as mr}from"path";import{statSync as Bi,readdirSync as gr,readFileSync as Bn,writeFile as Dr}from"fs";import{format as Oi,inspect as Cr}from"util";import{fileURLToPath as wr}from"url";import{resolve as Q,dirname as _t,join as St,extname as Kt,relative as wt,isAbsolute as _i,basename as On}from"node:path";import{existsSync as st,copyFileSync as Si,rmSync as Ii}from"node:fs";import{mkdtemp as Qt,writeFile as At,mkdir as Je,stat as xi,copyFile as Ar,rm as Er}from"node:fs/promises";import br,{tmpdir as Xt}from"node:os";import{fileURLToPath as Fr}from"node:url";import{build as It,createServer as yr,preview as vr}from"vite";import{chromium as $i}from"playwright";import Br from"node:net";import{setTimeout as Or}from"node:timers/promises";import _r from"@vitejs/plugin-react-swc";import"tty";import"@hpcc-js/wasm-graphviz";import"node:util";import"node:tty";import"node:child_process";import"node:string_decoder";import"child_process";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"buffer";import"os";import"crypto";import"net";const Sr={right:Nr,center:Lr},Ir=0,Zt=1,xr=2,en=3;class $r{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){const t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0&&this.div(""),this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]=="string")return this.applyLayoutDSL(e[0]);const t=e.map(n=>typeof n=="string"?this.colFromString(n):n);return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]=="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){const t=e.split(`
2
+ import{hrtime as zs,cwd as hi,stdout as Hs,exit as Gs,argv as Ys}from"node:process";import{m as qt,o as pi,p as qs,s as Js,N as mi,t as Ks,v as gi,y as Qs,z as Xs,A as Di,B as Ci,D as Zs,E as b,F as er,G as De,I as tr,K as nr,M as ke,R as ir,U as sr,V as rr,W as wi,X as Ai,e as qe,C as ur,Y as or,$ as Jt,q as Ei,b as yn,a0 as bi,a1 as ar,a2 as Fi,a3 as yi,a4 as vi,a5 as cr}from"../shared/likec4.BYHvTT3g.mjs";import{notStrictEqual as lr,strictEqual as fr}from"assert";import{resolve as je,dirname as vn,normalize as dr,basename as hr,extname as pr,relative as mr}from"path";import{statSync as Bi,readdirSync as gr,readFileSync as Bn,writeFile as Dr}from"fs";import{format as Oi,inspect as Cr}from"util";import{fileURLToPath as wr}from"url";import{resolve as Q,dirname as _t,join as St,extname as Kt,relative as wt,isAbsolute as _i,basename as On}from"node:path";import{existsSync as st,copyFileSync as Si,rmSync as Ii}from"node:fs";import{mkdtemp as Qt,writeFile as At,mkdir as Je,stat as xi,copyFile as Ar,rm as Er}from"node:fs/promises";import br,{tmpdir as Xt}from"node:os";import{fileURLToPath as Fr}from"node:url";import{build as It,createServer as yr,preview as vr}from"vite";import{chromium as $i}from"playwright";import Br from"node:net";import{setTimeout as Or}from"node:timers/promises";import _r from"@vitejs/plugin-react-swc";import"tty";import"@hpcc-js/wasm-graphviz";import"node:util";import"node:tty";import"node:child_process";import"node:string_decoder";import"child_process";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"buffer";import"os";import"crypto";import"net";const Sr={right:Nr,center:Lr},Ir=0,Zt=1,xr=2,en=3;class $r{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){const t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0&&this.div(""),this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]=="string")return this.applyLayoutDSL(e[0]);const t=e.map(n=>typeof n=="string"?this.colFromString(n):n);return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]=="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){const t=e.split(`
3
3
  `).map(s=>s.split(" "));let n=0;return t.forEach(s=>{s.length>1&&Ee.stringWidth(s[0])>n&&(n=Math.min(Math.floor(this.width*.5),Ee.stringWidth(s[0])))}),t.forEach(s=>{this.div(...s.map((r,u)=>({text:r.trim(),padding:this.measurePadding(r),width:u===0&&s.length>1?n:void 0})))}),this.rows[this.rows.length-1]}colFromString(e){return{text:e,padding:this.measurePadding(e)}}measurePadding(e){const t=Ee.stripAnsi(e);return[0,t.match(/\s*$/)[0].length,0,t.match(/^\s*/)[0].length]}toString(){const e=[];return this.rows.forEach(t=>{this.rowToString(t,e)}),e.filter(t=>!t.hidden).map(t=>t.text).join(`
4
4
  `)}rowToString(e,t){return this.rasterize(e).forEach((n,s)=>{let r="";n.forEach((u,a)=>{const{width:c}=e[a],h=this.negatePadding(e[a]);let l=u;if(h>Ee.stringWidth(u)&&(l+=" ".repeat(h-Ee.stringWidth(u))),e[a].align&&e[a].align!=="left"&&this.wrap){const m=Sr[e[a].align];l=m(l,h),Ee.stringWidth(l)<h&&(l+=" ".repeat((c||0)-Ee.stringWidth(l)-1))}const f=e[a].padding||[0,0,0,0];f[en]&&(r+=" ".repeat(f[en])),r+=ji(e[a],l,"| "),r+=l,r+=ji(e[a],l," |"),f[Zt]&&(r+=" ".repeat(f[Zt])),s===0&&t.length>0&&(r=this.renderInline(r,t[t.length-1]))}),t.push({text:r.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){const n=e.match(/^ */),s=n?n[0].length:0,r=t.text,u=Ee.stringWidth(r.trimRight());return t.span?this.wrap?s<u?e:(t.hidden=!0,r.trimRight()+" ".repeat(s-u)+e.trimLeft()):(t.hidden=!0,r+e):e}rasterize(e){const t=[],n=this.columnWidths(e);let s;return e.forEach((r,u)=>{r.width=n[u],this.wrap?s=Ee.wrap(r.text,this.negatePadding(r),{hard:!0}).split(`
5
5
  `):s=r.text.split(`
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{H as BorderStyles,n as ElementColors,J as ElementShapes,e as LikeC4,Q as LikeC4DiagramModel,Z as LikeC4Model,a as LikeC4ViewModel,d as RelationshipColors,L as ancestorsFqn,O as commonAncestor,j as compareByFqnHierarchically,_ as compareFqnHierarchically,T as compareRelations,r as defaultTheme,l as extractStep,C as hasAtLeast,b as invariant,u as isAncestor,f as isComputedDynamicView,h as isDescendantOf,S as isSameHierarchy,x as isStepEdgeId,c as nameFromFqn,P as nonNullable,q as nonexhaustive,w as parentFqn}from"./shared/likec4.DIJE01bW.mjs";import"node:fs";import"node:path";import"node:url";import"tty";import"@hpcc-js/wasm-graphviz";import"node:util";import"node:process";import"node:tty";import"node:child_process";import"node:string_decoder";import"child_process";import"path";import"fs";import"node:timers/promises";import"node:os";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"vite";import"buffer";import"util";import"os";import"crypto";import"net";import"url";
1
+ export{H as BorderStyles,n as ElementColors,J as ElementShapes,e as LikeC4,Q as LikeC4DiagramModel,Z as LikeC4Model,a as LikeC4ViewModel,d as RelationshipColors,L as ancestorsFqn,O as commonAncestor,j as compareByFqnHierarchically,_ as compareFqnHierarchically,T as compareRelations,r as defaultTheme,l as extractStep,C as hasAtLeast,b as invariant,u as isAncestor,f as isComputedDynamicView,h as isDescendantOf,S as isSameHierarchy,x as isStepEdgeId,c as nameFromFqn,P as nonNullable,q as nonexhaustive,w as parentFqn}from"./shared/likec4.BYHvTT3g.mjs";import"node:fs";import"node:path";import"node:url";import"tty";import"@hpcc-js/wasm-graphviz";import"node:util";import"node:process";import"node:tty";import"node:child_process";import"node:string_decoder";import"child_process";import"path";import"fs";import"node:timers/promises";import"node:os";import"node:events";import"node:v8";import"node:stream";import"node:buffer";import"node:stream/promises";import"vite";import"buffer";import"util";import"os";import"crypto";import"net";import"url";
@@ -1808,7 +1808,7 @@ Instead, \`yield\` should either be called with a value, or not be called at all
1808
1808
  but returned
1809
1809
  ${n.stdout}`):Ze.error(`[BinaryGraphvizLayouter.layout] '${n.command}' failed: ${n.stderr}
1810
1810
 
1811
- nothing returned, ignoring...`)),n.stdout&&(e=n.stdout.replaceAll(/\t\[/g," [").replaceAll(/\t/g," ")),e})}async layoutJson(e){return await A0(async()=>{const n=await _0(this.path,["-Tjson","-y"],{reject:!1,timeout:1e4,input:e,stdin:"pipe",encoding:"utf8"});if(n instanceof Error){if(!n.stdout)throw Ze.error(`[BinaryGraphvizLayouter.layout] '${n.command}' nothing returned and failed: "${n.stderr}"`),n;Ze.warn(`[BinaryGraphvizLayouter.layout] '${n.command}' returned result but also failed "${n.stderr}"`)}return n.stdout})}async acyclic(e){return Promise.reject(new Error("Method not implemented."))}async svg(e){return await A0(async()=>{const n=await _0(this.path,["-Tsvg","-y"],{reject:!1,timeout:1e4,input:e,stdin:"pipe",encoding:"utf8"});if(n instanceof Error){if(!n.stdout)throw Ze.error(`[BinaryGraphvizLayouter.layout] '${n.command}' nothing returned and failed: ${n.stderr}`),n;Ze.warn(`[BinaryGraphvizLayouter.layout] '${n.command}' returned result but also failed ${n.stderr}`)}return n.stdout})}}const Nre="likec4",Ore="1.12.1",Fre="MIT",Lre="https://likec4.dev",Mre="Denis Davydkov <denis@davydkov.com>",zre={url:"https://github.com/sponsors/davydkov"},Bre={type:"git",url:"https://github.com/likec4/likec4.git",directory:"packages/likec4"},jre={node:">=20.17.0"},qre="https://github.com/likec4/likec4/issues",Ure="module",Wre="./bin/likec4.mjs",Gre={".":"./src/index.ts","./react":{types:"./app/react/components/index.ts",default:"./react/index.mjs"},"./react/style.css":"./react/style.css","./icons/all":{types:"./icons/all.d.ts",default:"./icons/all.js"},"./icons/*":{types:"./icons/icon.d.ts",default:"./icons/*"}},Hre={registry:"https://registry.npmjs.org",access:"public",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.mjs"},"./react":{types:"./react/index.d.ts",default:"./react/index.mjs"},"./react/style.css":"./react/style.css","./icons/all":{types:"./icons/all.d.ts",default:"./icons/all.js"},"./icons/*":{types:"./icons/icon.d.ts",default:"./icons/*"}}},Kre={"turbo-build":"turbo run build --log-prefix=none --log-order=grouped",package:"yarn pack","typecheck:app":"tsc --noEmit -p ./app/tsconfig.json","typecheck:cli":"tsc --noEmit -p ./tsconfig.cli.json",typecheck:"run-p --print-label 'typecheck:*'","build-cli":"unbuild","build-app":"run-p --print-label 'bundle:*'","bundle:app":"tsx scripts/bundle-app.ts","bundle:react":"tsx scripts/bundle-react.ts","bundle:react-dts":"tsx scripts/dts-react.ts","bundle:webcomponent":"tsx scripts/bundle-webcomponent.ts",generate:"tsx scripts/generate.ts",prepack:"turbo run build --log-prefix=none --log-order=grouped",lint:"run -T eslint src/ --fix",clean:"rm -r -f dist app/dist dev/.export dev/dist node_modules/.vite",dev:"tsx watch src/cli/index.ts serve dev","dev:docs:bigbank":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/bigbank","dev:docs:dynamic-view":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/dynamic-view","dev:docs:index-page":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/index-page","dev:docs:theme":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/likec4-theme","dev:template":"tsx watch src/cli/index.ts serve ../create-likec4/template","dev:example-cloud":"tsx watch src/cli/index.ts serve ../../examples/cloud-system","dev:failed":"tsx watch src/cli/index.ts serve ../../examples/failed","dev:example-dev":"tsx watch src/cli/index.ts serve ../../examples/diagrams-dev/likec4",cli:"tsx src/cli/index.ts","cli:serve":"tsx watch src/cli/index.ts serve dev","cli:build":"tsx src/cli/index.ts build -o dev/dist dev","cli:preview":"tsx src/cli/index.ts preview -o dev/dist dev","cli:export":"tsx src/cli/index.ts export png -o dev/export dev","cli:export:json":"tsx src/cli/index.ts export json -o dev/export/likec4.json dev",test:"vitest run --no-isolate","vitest:ui":"vitest --no-isolate --ui","test:watch":"vitest"},Vre={"@hpcc-js/wasm-graphviz":"1.6.1","@vitejs/plugin-react-swc":"3.7.1",playwright:"1.47.2",react:"^18.3.1","react-dom":"^18.3.1","type-fest":"4.26.1",vite:"5.4.8"},Yre={"@fontsource/ibm-plex-sans":"^5.1.0","@likec4/core":"workspace:*","@likec4/diagram":"workspace:*","@likec4/generators":"workspace:*","@likec4/icons":"workspace:*","@likec4/language-server":"workspace:*","@likec4/layouts":"workspace:*","@likec4/log":"workspace:*","@likec4/tsconfig":"workspace:*","@mantine/core":"7.13.2","@mantine/hooks":"7.13.2","@mantine/vanilla-extract":"7.13.2","@nanostores/react":"0.8.0","@react-hookz/web":"^24.0.4","@tabler/icons-react":"^3.19.0","@tanstack/react-router":"1.45.13","@tanstack/router-cli":"1.45.13","@tanstack/router-vite-plugin":"1.45.13","@types/node":"^20.16.5","@types/prop-types":"^15.7.13","@types/react":"18.3.4","@types/react-dom":"18.3.0","@types/string-hash":"^1.1.3","@types/yargs":"^17.0.33","@vanilla-extract/css":"^1.16.0","@vanilla-extract/dynamic":"^2.1.2","@vanilla-extract/vite-plugin":"^4.0.16","@xyflow/react":"12.3.1","@xyflow/system":"0.0.43",autoprefixer:"^10.4.20",classnames:"^2.5.1",clsx:"^2.1.1",defu:"^6.1.4","dts-bundle-generator":"^9.5.1",esbuild:"^0.24.0","esbuild-node-externals":"^1.15.0",execa:"^9.3.1","fast-equals":"^5.0.1",fdir:"^6.4.0","framer-motion":"^11.11.1","get-port":"^7.1.0",glob:"^11.0.0","html-to-image":"^1.11.11",json5:"^2.2.3",langium:"3.2.0",mkdirp:"^3.0.1",nanostores:"0.11.3","npm-run-all2":"^6.2.2","p-limit":"^6.1.0","package-up":"^5.0.0",postcss:"^8.4.47","postcss-preset-mantine":"^1.17.0","pretty-ms":"^9.1.0","react-error-boundary":"^4.0.13","react-resizable-panels":"^2.1.4","react-shadow":"^20.5.0",remeda:"^2.14.0","std-env":"^3.7.0","string-hash":"^1.1.3","strip-indent":"^4.0.0",terser:"^5.33.0",tinyrainbow:"^1.2.0",tsx:"~4.9.3",turbo:"^2.1.3",typescript:"^5.6.2",ufo:"^1.5.4",unbuild:"^3.0.0-rc.11","vite-plugin-css-injected-by-js":"^3.5.2","vite-plugin-shadow-style":"^1.1.1",vitest:"^2.1.2",yargs:"17.7.2"},Xre="yarn@4.5.0",iP={name:Nre,version:Ore,license:Fre,homepage:Lre,author:Mre,sponsor:zre,repository:Bre,engines:jre,bugs:qre,type:Ure,bin:Wre,exports:Gre,publishConfig:Hre,scripts:Kre,dependencies:Vre,devDependencies:Yre,packageManager:Xre},Lp=Object.create(null),Kl=t=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(t?Lp:globalThis),is=new Proxy(Lp,{get(t,e){return Kl()[e]??Lp[e]},has(t,e){const n=Kl();return e in n||e in Lp},set(t,e,n){const r=Kl(!0);return r[e]=n,!0},deleteProperty(t,e){if(!e)return!1;const n=Kl(!0);return delete n[e],!0},ownKeys(){const t=Kl(!0);return Object.keys(t)}}),Jre=typeof process<"u"&&process.env&&process.env.NODE_ENV||"",Zre=[["APPVEYOR"],["AWS_AMPLIFY","AWS_APP_ID",{ci:!0}],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["VERCEL","VERCEL",{ci:!1}],["VERCEL","VERCEL_ENV",{ci:!1}],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"],["ZEABUR"],["CODESPHERE","CODESPHERE_APP_ID",{ci:!0}],["RAILWAY","RAILWAY_PROJECT_ID"],["RAILWAY","RAILWAY_SERVICE_ID"]];function Qre(){if(globalThis.process?.env)for(const t of Zre){const e=t[1]||t[0];if(globalThis.process?.env[e])return{name:t[0].toLowerCase(),...t[2]}}return globalThis.process?.env?.SHELL==="/bin/jsh"&&globalThis.process?.versions?.webcontainer?{name:"stackblitz",ci:!1}:{name:"",ci:!1}}const sP=Qre();sP.name;function ho(t){return t?t!=="false":!1}const eie=globalThis.process?.platform||"",Mp=ho(is.CI)||sP.ci!==!1,oP=ho(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY);ho(is.DEBUG);const tie=Jre==="test"||ho(is.TEST);ho(is.MINIMAL);const nie=/^win/i.test(eie);!ho(is.NO_COLOR)&&(ho(is.FORCE_COLOR)||(oP||nie)&&is.TERM);const rie=(globalThis.process?.versions?.node||"").replace(/^v/,"")||null;Number(rie?.split(".")[0]);const iie=globalThis.process||Object.create(null),aP={versions:{}};new Proxy(iie,{get(t,e){if(e==="env")return is;if(e in t)return t[e];if(e in aP)return aP[e]}});const sie=globalThis.process?.release?.name==="node",oie=!!globalThis.Bun||!!globalThis.process?.versions?.bun,aie=!!globalThis.Deno,cie=!!globalThis.fastly,uie=!!globalThis.Netlify,lie=!!globalThis.EdgeRuntime,die=globalThis.navigator?.userAgent==="Cloudflare-Workers",fie=!!globalThis.__lagon__,hie=[[uie,"netlify"],[lie,"edge-light"],[die,"workerd"],[cie,"fastly"],[aie,"deno"],[oie,"bun"],[sie,"node"],[fie,"lagon"]];function pie(){const t=hie.find(e=>e[0]);if(t)return{name:t[1]}}const gie=pie();gie?.name;const cP=st.bold(st.bgRed(st.white("ERROR"))),mie=st.bold(st.yellow("WARN")),yie=st.bold(st.green("INFO"));function uP(t){const e=GP("info",{prefix:t,allowClearScreen:!Mp}),n=!Mp;return{...e,info(r,i){e.info(`${yie} ${r}`,{timestamp:n,...i})},warn(r,i){e.warn(`${mie} ${r}`,{timestamp:n,...i})},error(r,i){if(r instanceof Error){e.error(`${cP} ${st.red(r.stack??r.name+" "+r.message)}`,{timestamp:n,error:r,...i});return}e.error(`${cP} ${r}`,{timestamp:n,...i})}}}const x0=()=>{},vie={info:x0,warn:x0,error:x0},wie=1e6;function lP(t){const[e,n]=Xl(t),r=e*1e3+n/wie;return{ms:r,pretty:xx(r)}}function bie(t){const e=Xl();return{stopAndLog(n="done in "){n=st.green(`${n}${lP(e).pretty}`),t?t.info(n):Ze.success(n)}}}class Die{constructor(e){this.services=e,this.layouter=e.likec4.Layouter}cache=new WeakMap;layouter;previousAction=Promise.resolve();limit=dp(2);inflightRequest;async computedViews(){try{this.inflightRequest??=Promise.resolve().then(async()=>await this.services.likec4.ModelBuilder.buildComputedModel());const e=await Promise.resolve(this.inflightRequest);return Object.values(e?.views??{})}finally{this.inflightRequest=void 0}}async layoutViews(){const e=this.services.logger,n=this.previousAction.then(async()=>{const r=(await this.computedViews()).map(i=>this.limit(async()=>{try{let s=this.cache.get(i);return s||(s=await this.layouter.layout(i),this.cache.set(i,s)),s}catch(s){return e.error(s),null}}));return(await Promise.all(r)).filter(ne)});return this.previousAction=n.catch(r=>(e.error(r),Promise.resolve([]))),await n}async diagrams(){return(await this.layoutViews()).map(e=>e.diagram)}async viewsAsGraphvizOut(){const e="All-LayoutedViews-DotWithSvg",n=this.services.WorkspaceCache;if(n.has(e))return await Promise.resolve(n.get(e));const r=(await this.computedViews()).map(s=>this.limit(async()=>{const{dot:o,svg:a}=await this.layouter.svg(s);return{id:s.id,dot:o,svg:a}})),i=await Promise.all(r);return n.set(e,i),i}async overviewGraph(){const e="OverviewGraph",n=this.services.WorkspaceCache;if(n.has(e))return await Promise.resolve(n.get(e));const r=await this.computedViews(),i=await this.layouter.layoutOverviewGraph(r);return n.set(e,i),i}}class Eie{constructor(e){this.services=e}isInitialized=!1;async initWorkspace(e){if(this.isInitialized)throw new Error("Workspace already initialized");const n=this.services.logger,r=this.services.shared.workspace.WorkspaceManager;n.info(`${st.dim("workspace:")} ${e.uri}`),r.initialize({capabilities:{},processId:null,rootUri:null,workspaceFolders:[e]}),await r.initializeWorkspace([e])}async init(){if(this.isInitialized)throw new Error("Workspace already initialized");this.isInitialized=!0;const e=this.services.logger,n=this.services.likec4.ModelBuilder,r=this.services.shared.workspace.LangiumDocuments,i=this.services.shared.workspace.DocumentBuilder,s=r.all.toArray();if(s.length===0)throw e.error("no LikeC4 sources found"),new Error("no LikeC4 sources found");e.info(`${st.dim("workspace:")} found ${s.length} source files`),await i.build(s,{validation:!0});const o=await n.buildComputedModel(),a=Uf(o?.views??{}).length;if(a===0){e.warn(`${st.dim("workspace:")} no views found`);return}e.info(`${st.dim("workspace:")} ${st.green(`\u2713 computed ${a} views`)}`);const c=await this.services.likec4.Views.diagrams();c.length===a?e.info(`${st.dim("workspace:")} ${st.green("\u2713 all views layouted")}`):e.warn(`${st.dim("workspace:")} ${st.yellow(`\u2717 layouted ${c.length} views`)}`)}}function dP(t){return e=>new t(e)}const Tie={logger:()=>{throw new Error("Logger must be provided")},likec4:{Layouter:()=>{throw new Error("Layouter must be provided")},Views:dP(Die)},cli:{Workspace:dP(Eie)}};function fP(t){const e=$g(t,{useFileSystem:!0,logger:"default",graphviz:"wasm"});let n;switch(e.logger){case!1:n=vie;break;case"vite":n=uP("c4:lsp ");break;case"default":n=Ze.withTag("lsp");break;default:n=e.logger}const r=e.graphviz==="binary";n.info(`${st.dim("version")} ${iP.version}`),n.info(`${st.dim("layout")} ${r?"binary":"wasm"}`);const i={logger:()=>n,likec4:{Layouter:()=>new XV(r===!0?new Pre:new ZV)}};return UG(e.logger===!1?"silent":"info"),e.logger!==!1&&e.logger!=="default"&&$e.setReporters([{log:({level:s,...o},a)=>{const c=o.tag||"",u=o.args.map(d=>Iy(d)?d.stack??d.message:typeof d=="string"?d:String(d));c&&u.unshift(`[${c}]`);const l=u.join(" ");switch(!0){case s>=qe.debug:break;case s>=qe.info:{n.info(l);break}case s>=qe.log:{n.info(l);break}case s>=qe.warn:{n.warn(l);break}case s>=qe.fatal:{n.error(l);break}}}}]),pK(e.useFileSystem?X9:{},Tie,i).likec4}const hP=t=>new Error(`Invalid model:
1811
+ nothing returned, ignoring...`)),n.stdout&&(e=n.stdout.replaceAll(/\t\[/g," [").replaceAll(/\t/g," ")),e})}async layoutJson(e){return await A0(async()=>{const n=await _0(this.path,["-Tjson","-y"],{reject:!1,timeout:1e4,input:e,stdin:"pipe",encoding:"utf8"});if(n instanceof Error){if(!n.stdout)throw Ze.error(`[BinaryGraphvizLayouter.layout] '${n.command}' nothing returned and failed: "${n.stderr}"`),n;Ze.warn(`[BinaryGraphvizLayouter.layout] '${n.command}' returned result but also failed "${n.stderr}"`)}return n.stdout})}async acyclic(e){return Promise.reject(new Error("Method not implemented."))}async svg(e){return await A0(async()=>{const n=await _0(this.path,["-Tsvg","-y"],{reject:!1,timeout:1e4,input:e,stdin:"pipe",encoding:"utf8"});if(n instanceof Error){if(!n.stdout)throw Ze.error(`[BinaryGraphvizLayouter.layout] '${n.command}' nothing returned and failed: ${n.stderr}`),n;Ze.warn(`[BinaryGraphvizLayouter.layout] '${n.command}' returned result but also failed ${n.stderr}`)}return n.stdout})}}const Nre="likec4",Ore="1.12.2",Fre="MIT",Lre="https://likec4.dev",Mre="Denis Davydkov <denis@davydkov.com>",zre={url:"https://github.com/sponsors/davydkov"},Bre={type:"git",url:"https://github.com/likec4/likec4.git",directory:"packages/likec4"},jre={node:">=20.17.0"},qre="https://github.com/likec4/likec4/issues",Ure="module",Wre="./bin/likec4.mjs",Gre={".":"./src/index.ts","./react":{types:"./app/react/components/index.ts",default:"./react/index.mjs"},"./react/style.css":"./react/style.css","./icons/all":{types:"./icons/all.d.ts",default:"./icons/all.js"},"./icons/*":{types:"./icons/icon.d.ts",default:"./icons/*"}},Hre={registry:"https://registry.npmjs.org",access:"public",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.mjs"},"./react":{types:"./react/index.d.ts",default:"./react/index.mjs"},"./react/style.css":"./react/style.css","./icons/all":{types:"./icons/all.d.ts",default:"./icons/all.js"},"./icons/*":{types:"./icons/icon.d.ts",default:"./icons/*"}}},Kre={"turbo-build":"turbo run build --log-prefix=none --log-order=grouped",package:"yarn pack","typecheck:app":"tsc --noEmit -p ./app/tsconfig.json","typecheck:cli":"tsc --noEmit -p ./tsconfig.cli.json",typecheck:"run-p --print-label 'typecheck:*'","build-cli":"unbuild","build-app":"run-p --print-label 'bundle:*'","bundle:app":"tsx scripts/bundle-app.ts","bundle:react":"tsx scripts/bundle-react.ts","bundle:react-dts":"tsx scripts/dts-react.ts","bundle:webcomponent":"tsx scripts/bundle-webcomponent.ts",generate:"tsx scripts/generate.ts",prepack:"turbo run build --log-prefix=none --log-order=grouped",lint:"run -T eslint src/ --fix",clean:"rm -r -f dist app/dist dev/.export dev/dist node_modules/.vite",dev:"tsx watch src/cli/index.ts serve dev","dev:docs:bigbank":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/bigbank","dev:docs:dynamic-view":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/dynamic-view","dev:docs:index-page":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/index-page","dev:docs:theme":"tsx watch src/cli/index.ts serve ../../apps/docs/src/components/likec4-theme","dev:template":"tsx watch src/cli/index.ts serve ../create-likec4/template","dev:example-cloud":"tsx watch src/cli/index.ts serve ../../examples/cloud-system","dev:failed":"tsx watch src/cli/index.ts serve ../../examples/failed","dev:example-dev":"tsx watch src/cli/index.ts serve ../../examples/diagrams-dev/likec4",cli:"tsx src/cli/index.ts","cli:serve":"tsx watch src/cli/index.ts serve dev","cli:build":"tsx src/cli/index.ts build -o dev/dist dev","cli:preview":"tsx src/cli/index.ts preview -o dev/dist dev","cli:export":"tsx src/cli/index.ts export png -o dev/export dev","cli:export:json":"tsx src/cli/index.ts export json -o dev/export/likec4.json dev",test:"vitest run --no-isolate","vitest:ui":"vitest --no-isolate --ui","test:watch":"vitest"},Vre={"@hpcc-js/wasm-graphviz":"1.6.1","@vitejs/plugin-react-swc":"3.7.1",playwright:"1.47.2",react:"^18.3.1","react-dom":"^18.3.1","type-fest":"4.26.1",vite:"5.4.8"},Yre={"@fontsource/ibm-plex-sans":"^5.1.0","@likec4/core":"workspace:*","@likec4/diagram":"workspace:*","@likec4/generators":"workspace:*","@likec4/icons":"workspace:*","@likec4/language-server":"workspace:*","@likec4/layouts":"workspace:*","@likec4/log":"workspace:*","@likec4/tsconfig":"workspace:*","@mantine/core":"7.13.2","@mantine/hooks":"7.13.2","@mantine/vanilla-extract":"7.13.2","@nanostores/react":"0.8.0","@react-hookz/web":"^24.0.4","@tabler/icons-react":"3.17.0","@tanstack/react-router":"1.45.13","@tanstack/router-cli":"1.45.13","@tanstack/router-vite-plugin":"1.45.13","@types/node":"^20.16.5","@types/prop-types":"^15.7.13","@types/react":"18.3.4","@types/react-dom":"18.3.0","@types/string-hash":"^1.1.3","@types/yargs":"^17.0.33","@vanilla-extract/css":"^1.16.0","@vanilla-extract/dynamic":"^2.1.2","@vanilla-extract/vite-plugin":"^4.0.16","@xyflow/react":"12.3.1","@xyflow/system":"0.0.43",autoprefixer:"^10.4.20",classnames:"^2.5.1",clsx:"^2.1.1",defu:"^6.1.4","dts-bundle-generator":"^9.5.1",esbuild:"^0.24.0","esbuild-node-externals":"^1.15.0",execa:"^9.3.1","fast-equals":"^5.0.1",fdir:"^6.4.0","framer-motion":"^11.11.1","get-port":"^7.1.0",glob:"^11.0.0","html-to-image":"^1.11.11",json5:"^2.2.3",langium:"3.2.0",mkdirp:"^3.0.1",nanostores:"0.11.3","npm-run-all2":"^6.2.2","p-limit":"^6.1.0","package-up":"^5.0.0",postcss:"^8.4.47","postcss-preset-mantine":"^1.17.0","pretty-ms":"^9.1.0","react-error-boundary":"^4.0.13","react-resizable-panels":"^2.1.4","react-shadow":"^20.5.0",remeda:"^2.14.0","std-env":"^3.7.0","string-hash":"^1.1.3","strip-indent":"^4.0.0",terser:"^5.33.0",tinyrainbow:"^1.2.0",tsx:"~4.9.3",turbo:"^2.1.3",typescript:"^5.6.2",ufo:"^1.5.4",unbuild:"^3.0.0-rc.11","vite-plugin-css-injected-by-js":"^3.5.2","vite-plugin-shadow-style":"^1.1.1",vitest:"^2.1.2",yargs:"17.7.2"},Xre="yarn@4.5.0",iP={name:Nre,version:Ore,license:Fre,homepage:Lre,author:Mre,sponsor:zre,repository:Bre,engines:jre,bugs:qre,type:Ure,bin:Wre,exports:Gre,publishConfig:Hre,scripts:Kre,dependencies:Vre,devDependencies:Yre,packageManager:Xre},Lp=Object.create(null),Kl=t=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(t?Lp:globalThis),is=new Proxy(Lp,{get(t,e){return Kl()[e]??Lp[e]},has(t,e){const n=Kl();return e in n||e in Lp},set(t,e,n){const r=Kl(!0);return r[e]=n,!0},deleteProperty(t,e){if(!e)return!1;const n=Kl(!0);return delete n[e],!0},ownKeys(){const t=Kl(!0);return Object.keys(t)}}),Jre=typeof process<"u"&&process.env&&process.env.NODE_ENV||"",Zre=[["APPVEYOR"],["AWS_AMPLIFY","AWS_APP_ID",{ci:!0}],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["VERCEL","VERCEL",{ci:!1}],["VERCEL","VERCEL_ENV",{ci:!1}],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"],["ZEABUR"],["CODESPHERE","CODESPHERE_APP_ID",{ci:!0}],["RAILWAY","RAILWAY_PROJECT_ID"],["RAILWAY","RAILWAY_SERVICE_ID"]];function Qre(){if(globalThis.process?.env)for(const t of Zre){const e=t[1]||t[0];if(globalThis.process?.env[e])return{name:t[0].toLowerCase(),...t[2]}}return globalThis.process?.env?.SHELL==="/bin/jsh"&&globalThis.process?.versions?.webcontainer?{name:"stackblitz",ci:!1}:{name:"",ci:!1}}const sP=Qre();sP.name;function ho(t){return t?t!=="false":!1}const eie=globalThis.process?.platform||"",Mp=ho(is.CI)||sP.ci!==!1,oP=ho(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY);ho(is.DEBUG);const tie=Jre==="test"||ho(is.TEST);ho(is.MINIMAL);const nie=/^win/i.test(eie);!ho(is.NO_COLOR)&&(ho(is.FORCE_COLOR)||(oP||nie)&&is.TERM);const rie=(globalThis.process?.versions?.node||"").replace(/^v/,"")||null;Number(rie?.split(".")[0]);const iie=globalThis.process||Object.create(null),aP={versions:{}};new Proxy(iie,{get(t,e){if(e==="env")return is;if(e in t)return t[e];if(e in aP)return aP[e]}});const sie=globalThis.process?.release?.name==="node",oie=!!globalThis.Bun||!!globalThis.process?.versions?.bun,aie=!!globalThis.Deno,cie=!!globalThis.fastly,uie=!!globalThis.Netlify,lie=!!globalThis.EdgeRuntime,die=globalThis.navigator?.userAgent==="Cloudflare-Workers",fie=!!globalThis.__lagon__,hie=[[uie,"netlify"],[lie,"edge-light"],[die,"workerd"],[cie,"fastly"],[aie,"deno"],[oie,"bun"],[sie,"node"],[fie,"lagon"]];function pie(){const t=hie.find(e=>e[0]);if(t)return{name:t[1]}}const gie=pie();gie?.name;const cP=st.bold(st.bgRed(st.white("ERROR"))),mie=st.bold(st.yellow("WARN")),yie=st.bold(st.green("INFO"));function uP(t){const e=GP("info",{prefix:t,allowClearScreen:!Mp}),n=!Mp;return{...e,info(r,i){e.info(`${yie} ${r}`,{timestamp:n,...i})},warn(r,i){e.warn(`${mie} ${r}`,{timestamp:n,...i})},error(r,i){if(r instanceof Error){e.error(`${cP} ${st.red(r.stack??r.name+" "+r.message)}`,{timestamp:n,error:r,...i});return}e.error(`${cP} ${r}`,{timestamp:n,...i})}}}const x0=()=>{},vie={info:x0,warn:x0,error:x0},wie=1e6;function lP(t){const[e,n]=Xl(t),r=e*1e3+n/wie;return{ms:r,pretty:xx(r)}}function bie(t){const e=Xl();return{stopAndLog(n="done in "){n=st.green(`${n}${lP(e).pretty}`),t?t.info(n):Ze.success(n)}}}class Die{constructor(e){this.services=e,this.layouter=e.likec4.Layouter}cache=new WeakMap;layouter;previousAction=Promise.resolve();limit=dp(2);inflightRequest;async computedViews(){try{this.inflightRequest??=Promise.resolve().then(async()=>await this.services.likec4.ModelBuilder.buildComputedModel());const e=await Promise.resolve(this.inflightRequest);return Object.values(e?.views??{})}finally{this.inflightRequest=void 0}}async layoutViews(){const e=this.services.logger,n=this.previousAction.then(async()=>{const r=(await this.computedViews()).map(i=>this.limit(async()=>{try{let s=this.cache.get(i);return s||(s=await this.layouter.layout(i),this.cache.set(i,s)),s}catch(s){return e.error(s),null}}));return(await Promise.all(r)).filter(ne)});return this.previousAction=n.catch(r=>(e.error(r),Promise.resolve([]))),await n}async diagrams(){return(await this.layoutViews()).map(e=>e.diagram)}async viewsAsGraphvizOut(){const e="All-LayoutedViews-DotWithSvg",n=this.services.WorkspaceCache;if(n.has(e))return await Promise.resolve(n.get(e));const r=(await this.computedViews()).map(s=>this.limit(async()=>{const{dot:o,svg:a}=await this.layouter.svg(s);return{id:s.id,dot:o,svg:a}})),i=await Promise.all(r);return n.set(e,i),i}async overviewGraph(){const e="OverviewGraph",n=this.services.WorkspaceCache;if(n.has(e))return await Promise.resolve(n.get(e));const r=await this.computedViews(),i=await this.layouter.layoutOverviewGraph(r);return n.set(e,i),i}}class Eie{constructor(e){this.services=e}isInitialized=!1;async initWorkspace(e){if(this.isInitialized)throw new Error("Workspace already initialized");const n=this.services.logger,r=this.services.shared.workspace.WorkspaceManager;n.info(`${st.dim("workspace:")} ${e.uri}`),r.initialize({capabilities:{},processId:null,rootUri:null,workspaceFolders:[e]}),await r.initializeWorkspace([e])}async init(){if(this.isInitialized)throw new Error("Workspace already initialized");this.isInitialized=!0;const e=this.services.logger,n=this.services.likec4.ModelBuilder,r=this.services.shared.workspace.LangiumDocuments,i=this.services.shared.workspace.DocumentBuilder,s=r.all.toArray();if(s.length===0)throw e.error("no LikeC4 sources found"),new Error("no LikeC4 sources found");e.info(`${st.dim("workspace:")} found ${s.length} source files`),await i.build(s,{validation:!0});const o=await n.buildComputedModel(),a=Uf(o?.views??{}).length;if(a===0){e.warn(`${st.dim("workspace:")} no views found`);return}e.info(`${st.dim("workspace:")} ${st.green(`\u2713 computed ${a} views`)}`);const c=await this.services.likec4.Views.diagrams();c.length===a?e.info(`${st.dim("workspace:")} ${st.green("\u2713 all views layouted")}`):e.warn(`${st.dim("workspace:")} ${st.yellow(`\u2717 layouted ${c.length} views`)}`)}}function dP(t){return e=>new t(e)}const Tie={logger:()=>{throw new Error("Logger must be provided")},likec4:{Layouter:()=>{throw new Error("Layouter must be provided")},Views:dP(Die)},cli:{Workspace:dP(Eie)}};function fP(t){const e=$g(t,{useFileSystem:!0,logger:"default",graphviz:"wasm"});let n;switch(e.logger){case!1:n=vie;break;case"vite":n=uP("c4:lsp ");break;case"default":n=Ze.withTag("lsp");break;default:n=e.logger}const r=e.graphviz==="binary";n.info(`${st.dim("version")} ${iP.version}`),n.info(`${st.dim("layout")} ${r?"binary":"wasm"}`);const i={logger:()=>n,likec4:{Layouter:()=>new XV(r===!0?new Pre:new ZV)}};return UG(e.logger===!1?"silent":"info"),e.logger!==!1&&e.logger!=="default"&&$e.setReporters([{log:({level:s,...o},a)=>{const c=o.tag||"",u=o.args.map(d=>Iy(d)?d.stack??d.message:typeof d=="string"?d:String(d));c&&u.unshift(`[${c}]`);const l=u.join(" ");switch(!0){case s>=qe.debug:break;case s>=qe.info:{n.info(l);break}case s>=qe.log:{n.info(l);break}case s>=qe.warn:{n.warn(l);break}case s>=qe.fatal:{n.error(l);break}}}}]),pK(e.useFileSystem?X9:{},Tie,i).likec4}const hP=t=>new Error(`Invalid model:
1812
1812
  ${t.getErrors().map(e=>` ${e.sourceFsPath}:${e.line} ${e.message.slice(0,200)}`).join(`
1813
1813
  `)}`);class ss{constructor(e,n,r){this.workspace=e,this.langium=n,this.isPrintErrorEnabled=r,this.logger=n.logger,this.langiumDocuments=n.shared.workspace.LangiumDocuments,this.views=n.likec4.Views,this.isPrintErrorEnabled&&this.printErrors()}static async fromSource(e,n){const r=fP($g(n,{useFileSystem:!1,logger:!1,graphviz:"wasm"})),i=Yt.from({scheme:"virtual",path:"/workspace"});await r.cli.Workspace.initWorkspace({uri:i.toString(),name:"virtual"});const s=mt.joinPath(i,"source.likec4");r.shared.workspace.LangiumDocuments.createDocument(s,e),await r.cli.Workspace.init();const o=new ss(i.path,r,n?.printErrors??!0);return n?.throwIfInvalid===!0&&o.hasErrors()?(o.dispose(),Promise.reject(hP(o))):o}static likec4Instances=new Map;static async fromWorkspace(e="",n){const r=EP(e);if(!bP(r))throw new Error(`Workspace not found: ${r}`);let i=ss.likec4Instances.get(r);if(!i){const s=fP($g(n,{useFileSystem:!0,logger:"default",graphviz:"wasm"}));await s.cli.Workspace.initWorkspace({uri:RP(r).toString(),name:TP(r)}),await s.cli.Workspace.init(),i=new ss(r,s,n?.printErrors??!0),ss.likec4Instances.set(r,i)}return n?.throwIfInvalid===!0&&i.hasErrors()?(i.dispose(),Promise.reject(hP(i))):i}modelComputedRef;modelLayoutedRef;logger;langiumDocuments;views;async diagrams(){return await this.langium.likec4.Views.diagrams()}model(){return this.computedModel()}computedModel(){let e=this.modelComputedRef?.deref();if(!e){const n=this.langium.likec4.ModelBuilder.unsafeSyncBuildModel();if(!n)throw new Error("Failed to build model");const r=this.langium.likec4.ModelBuilder.unsafeSyncBuildComputedModel(n);e=Aa.computed(r),this.modelComputedRef=new WeakRef(e)}return e}async layoutedModel(){let e=this.modelLayoutedRef?.deref();if(!e){const n=await this.langium.likec4.ModelBuilder.buildComputedModel();if(!n)throw new Error("Failed to build model");const r=await this.views.diagrams();e=Aa.layouted({__:"layouted",...n,views:Py(r,Lr("id"))}),this.modelLayoutedRef=new WeakRef(e)}return e}getErrors(){return this.langiumDocuments.all.toArray().flatMap(e=>(e.diagnostics??[]).filter(n=>n.severity===Fc.Error).map(({message:n,range:r})=>({message:n,line:r.start.line,range:r,sourceFsPath:e.uri.fsPath})))}hasErrors(){return this.langiumDocuments.all.some(e=>e.diagnostics?.some(n=>n.severity===Fc.Error)??!1)}printErrors(){let e=!1;for(const n of this.langiumDocuments.all){const r=n.diagnostics?.filter(i=>i.severity===1);if(r&&r.length>0){e=!0;const i=r.flatMap(s=>{const o=s.range.start.line,a=s.message.split(`
1814
1814
  `);return a.length>10&&(a.length=10,a.push("...")),a.map((c,u)=>u===0?" "+st.dim(`Line ${o}: `)+st.red(c):" ".repeat(10)+st.red(c))}).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "likec4",
3
- "version": "1.12.1",
3
+ "version": "1.12.2",
4
4
  "license": "MIT",
5
5
  "homepage": "https://likec4.dev",
6
6
  "author": "Denis Davydkov <denis@davydkov.com>",
@@ -106,20 +106,20 @@
106
106
  },
107
107
  "devDependencies": {
108
108
  "@fontsource/ibm-plex-sans": "^5.1.0",
109
- "@likec4/core": "1.12.1",
110
- "@likec4/diagram": "1.12.1",
111
- "@likec4/generators": "1.12.1",
112
- "@likec4/icons": "1.12.1",
113
- "@likec4/language-server": "1.12.1",
114
- "@likec4/layouts": "1.12.1",
115
- "@likec4/log": "1.12.1",
116
- "@likec4/tsconfig": "1.12.1",
109
+ "@likec4/core": "1.12.2",
110
+ "@likec4/diagram": "1.12.2",
111
+ "@likec4/generators": "1.12.2",
112
+ "@likec4/icons": "1.12.2",
113
+ "@likec4/language-server": "1.12.2",
114
+ "@likec4/layouts": "1.12.2",
115
+ "@likec4/log": "1.12.2",
116
+ "@likec4/tsconfig": "1.12.2",
117
117
  "@mantine/core": "7.13.2",
118
118
  "@mantine/hooks": "7.13.2",
119
119
  "@mantine/vanilla-extract": "7.13.2",
120
120
  "@nanostores/react": "0.8.0",
121
121
  "@react-hookz/web": "^24.0.4",
122
- "@tabler/icons-react": "^3.19.0",
122
+ "@tabler/icons-react": "3.17.0",
123
123
  "@tanstack/react-router": "1.45.13",
124
124
  "@tanstack/router-cli": "1.45.13",
125
125
  "@tanstack/router-vite-plugin": "1.45.13",
package/react/index.mjs CHANGED
@@ -14911,6 +14911,16 @@ function useHotkeys(hotkeys, tagsToIgnore = ["INPUT", "TEXTAREA", "SELECT"], tri
14911
14911
  return document.documentElement.addEventListener("keydown", keydownListener), () => document.documentElement.removeEventListener("keydown", keydownListener);
14912
14912
  }, [hotkeys]);
14913
14913
  }
14914
+ function useHover$1() {
14915
+ const [hovered, setHovered] = useState(!1), ref = useRef(null), onMouseEnter = useCallback(() => setHovered(!0), []), onMouseLeave = useCallback(() => setHovered(!1), []);
14916
+ return useEffect(() => {
14917
+ if (ref.current)
14918
+ return ref.current.addEventListener("mouseenter", onMouseEnter), ref.current.addEventListener("mouseleave", onMouseLeave), () => {
14919
+ var _a3, _b2;
14920
+ (_a3 = ref.current) == null || _a3.removeEventListener("mouseenter", onMouseEnter), (_b2 = ref.current) == null || _b2.removeEventListener("mouseleave", onMouseLeave);
14921
+ };
14922
+ }, [ref.current]), { ref, hovered };
14923
+ }
14914
14924
  function useDisclosure(initialState = !1, callbacks) {
14915
14925
  const { onOpen, onClose } = callbacks || {}, [opened, setOpened] = useState(initialState), open = useCallback(() => {
14916
14926
  setOpened((isOpened) => isOpened || (onOpen == null || onOpen(), !0));
@@ -30747,7 +30757,7 @@ const selector = (state) => ({
30747
30757
  const store = useDiagramStoreApi(), [rootRef, setRootRef] = useState(null), [controlsRefs, setControlsRefs] = useState({}), {
30748
30758
  autoLayout,
30749
30759
  viewId
30750
- } = useDiagramState(selector), setControlRef = (name) => (node) => {
30760
+ } = useDiagramState(selector), { ref, hovered: isSpacingHovered } = useHover$1(), setControlRef = (name) => (node) => {
30751
30761
  controlsRefs[name] = node, setControlsRefs(controlsRefs);
30752
30762
  }, setAutoLayout = (direction) => (event) => {
30753
30763
  var _a3, _b2;
@@ -30762,7 +30772,9 @@ const selector = (state) => ({
30762
30772
  });
30763
30773
  }, setSpacing = (nodeSep, rankSep) => {
30764
30774
  var _a3, _b2;
30765
- (_b2 = (_a3 = store.getState()).onChange) == null || _b2.call(_a3, {
30775
+ store.setState({
30776
+ viewportChanged: !1
30777
+ }), (_b2 = (_a3 = store.getState()).onChange) == null || _b2.call(_a3, {
30766
30778
  change: {
30767
30779
  op: "change-autolayout",
30768
30780
  layout: {
@@ -30788,7 +30800,7 @@ const selector = (state) => ({
30788
30800
  ...props,
30789
30801
  children: [
30790
30802
  /* @__PURE__ */ jsx(PopoverTarget, { children: /* @__PURE__ */ jsx(Tooltip, { label: "Change Auto Layout", children: /* @__PURE__ */ jsx(ActionIcon, { children: /* @__PURE__ */ jsx(IconLayoutDashboard, {}) }) }) }),
30791
- /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
30803
+ /* @__PURE__ */ jsx(PopoverDropdown, { className: "likec4-top-left-panel", p: 8, pt: 6, opacity: isSpacingHovered ? 0.6 : 1, children: /* @__PURE__ */ jsxs(Box, { pos: "relative", ref: setRootRef, children: [
30792
30804
  /* @__PURE__ */ jsx(
30793
30805
  FloatingIndicator,
30794
30806
  {
@@ -30808,6 +30820,7 @@ const selector = (state) => ({
30808
30820
  /* @__PURE__ */ jsx(
30809
30821
  SpacingSliders,
30810
30822
  {
30823
+ ref,
30811
30824
  isVertical: autoLayout.direction === "TB" || autoLayout.direction === "BT",
30812
30825
  nodeSep: autoLayout.nodeSep,
30813
30826
  rankSep: autoLayout.rankSep,
@@ -30819,29 +30832,31 @@ const selector = (state) => ({
30819
30832
  ]
30820
30833
  }
30821
30834
  );
30822
- }, SpacingSliders = ({
30835
+ }, MAX_SPACING = 400, SpacingSliders = forwardRef(({
30823
30836
  isVertical,
30824
30837
  nodeSep,
30825
30838
  rankSep,
30826
30839
  onChange
30827
- }) => {
30840
+ }, _ref) => {
30828
30841
  isVertical || ([nodeSep, rankSep] = [rankSep, nodeSep]);
30829
30842
  const propagateChange = useDebouncedCallback$1(
30830
30843
  ({ x: x2, y: y2 }) => {
30831
- isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * 500), Math.round(y2 * 500));
30844
+ isVertical || ([x2, y2] = [y2, x2]), onChange(Math.round(x2 * MAX_SPACING), Math.round(y2 * MAX_SPACING));
30832
30845
  },
30833
30846
  [onChange, isVertical],
30834
30847
  150,
30835
30848
  2e3
30836
30849
  ), [value, setValue] = useUncontrolled({
30837
30850
  defaultValue: clampUseMovePosition({
30838
- x: (nodeSep ?? 250) / 500,
30839
- y: (rankSep ?? 250) / 500
30851
+ x: (nodeSep ?? 100) / MAX_SPACING,
30852
+ y: (rankSep ?? 120) / MAX_SPACING
30840
30853
  }),
30841
30854
  onChange: propagateChange
30842
30855
  }), { ref } = useMove(setValue);
30843
- let nodeSepValue = Math.round(value.x * 500), rankSepValue = Math.round(value.y * 500);
30844
- return isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]), /* @__PURE__ */ jsxs(Box, { ref, className: spacingSliderBody, pt: "100%", children: [
30856
+ let nodeSepValue = Math.round(value.x * MAX_SPACING), rankSepValue = Math.round(value.y * MAX_SPACING);
30857
+ isVertical || ([nodeSepValue, rankSepValue] = [rankSepValue, nodeSepValue]);
30858
+ const mergedRef = useMergedRef(ref, _ref);
30859
+ return /* @__PURE__ */ jsxs(Box, { ref: mergedRef, className: spacingSliderBody, pt: "100%", children: [
30845
30860
  /* @__PURE__ */ jsx(
30846
30861
  Box,
30847
30862
  {
@@ -30858,7 +30873,7 @@ const selector = (state) => ({
30858
30873
  nodeSepValue
30859
30874
  ] }) })
30860
30875
  ] });
30861
- }, historySelector = (s2) => ({
30876
+ }), historySelector = (s2) => ({
30862
30877
  showBurgerMenu: !!s2.onBurgerMenuClick,
30863
30878
  hasStepBack: s2.navigationHistoryIndex > 0,
30864
30879
  hasStepForward: s2.navigationHistoryIndex < s2.navigationHistory.length - 1