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.
- package/dist/__app__/src/chunks/{-index-overview-BCq3uZl4.js → -index-overview-BkDZVsmQ.js} +4 -4
- package/dist/__app__/src/chunks/{main-TBVrmxK9.js → main-BqtsxvKL.js} +58 -47
- package/dist/__app__/src/chunks/{mantine-CDAXKBgY.js → mantine-CN5aX5HW.js} +41 -30
- package/dist/__app__/src/main.js +1 -1
- package/dist/__app__/webcomponent/webcomponent.js +47 -33
- package/dist/chunks/prompt.mjs +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/shared/{likec4.DIJE01bW.mjs → likec4.BYHvTT3g.mjs} +1 -1
- package/package.json +10 -10
- package/react/index.mjs +26 -11
|
@@ -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-
|
|
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-
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 *
|
|
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 ??
|
|
15172
|
-
y: (rankSep ??
|
|
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 *
|
|
15177
|
-
|
|
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-
|
|
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: () =>
|
|
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
|
-
|
|
12420
|
-
|
|
12421
|
-
|
|
12422
|
-
|
|
12423
|
-
|
|
12424
|
-
|
|
12425
|
-
|
|
12426
|
-
|
|
12427
|
-
|
|
12428
|
-
|
|
12429
|
-
|
|
12430
|
-
|
|
12431
|
-
|
|
12432
|
-
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
|
|
12436
|
-
|
|
12437
|
-
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12443
|
-
|
|
12444
|
-
|
|
12445
|
-
|
|
12446
|
-
|
|
12447
|
-
|
|
12448
|
-
|
|
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,
|
package/dist/__app__/src/main.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 *
|
|
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 ??
|
|
30805
|
-
y: (rankSep ??
|
|
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 *
|
|
30810
|
-
|
|
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
|
package/dist/chunks/prompt.mjs
CHANGED
|
@@ -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,`
|
package/dist/cli/index.mjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
110
|
-
"@likec4/diagram": "1.12.
|
|
111
|
-
"@likec4/generators": "1.12.
|
|
112
|
-
"@likec4/icons": "1.12.
|
|
113
|
-
"@likec4/language-server": "1.12.
|
|
114
|
-
"@likec4/layouts": "1.12.
|
|
115
|
-
"@likec4/log": "1.12.
|
|
116
|
-
"@likec4/tsconfig": "1.12.
|
|
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": "
|
|
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
|
-
|
|
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 *
|
|
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 ??
|
|
30839
|
-
y: (rankSep ??
|
|
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 *
|
|
30844
|
-
|
|
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
|