likec4 0.41.0 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +108 -0
  2. package/dist/__app__/src/App.jsx +1 -1
  3. package/dist/__app__/src/components/view-page/ExportDiagram.jsx +72 -0
  4. package/dist/__app__/src/components/view-page/ViewActionsToolbar.jsx +38 -12
  5. package/dist/cli/index.js +53 -53
  6. package/package.json +6 -6
  7. package/dist/@likec4/diagrams/cjs/components/EmbeddedDiagram.js +0 -83
  8. package/dist/@likec4/diagrams/cjs/components/FullscreenDiagramBrowser.js +0 -50
  9. package/dist/@likec4/diagrams/cjs/components/index.js +0 -49
  10. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/CloseButton.js +0 -44
  11. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/FullscreenDiagram.js +0 -110
  12. package/dist/@likec4/diagrams/cjs/components/primitives/fullscreen/FullscreenDiagramTitle.js +0 -39
  13. package/dist/@likec4/diagrams/cjs/components/primitives/index.js +0 -38
  14. package/dist/@likec4/diagrams/cjs/components/primitives/responsive/ResponsiveDiagram.js +0 -56
  15. package/dist/@likec4/diagrams/cjs/components/types.js +0 -1
  16. package/dist/@likec4/diagrams/cjs/diagram/Diagram.js +0 -326
  17. package/dist/@likec4/diagrams/cjs/diagram/Edges.js +0 -121
  18. package/dist/@likec4/diagrams/cjs/diagram/Nodes.js +0 -204
  19. package/dist/@likec4/diagrams/cjs/diagram/icons/BrainIcon.js +0 -25
  20. package/dist/@likec4/diagrams/cjs/diagram/icons/ExternalLink.js +0 -82
  21. package/dist/@likec4/diagrams/cjs/diagram/icons/index.js +0 -27
  22. package/dist/@likec4/diagrams/cjs/diagram/index.js +0 -27
  23. package/dist/@likec4/diagrams/cjs/diagram/shapes/Browser.js +0 -67
  24. package/dist/@likec4/diagrams/cjs/diagram/shapes/Compound.js +0 -55
  25. package/dist/@likec4/diagrams/cjs/diagram/shapes/Cylinder.js +0 -71
  26. package/dist/@likec4/diagrams/cjs/diagram/shapes/Edge.js +0 -62
  27. package/dist/@likec4/diagrams/cjs/diagram/shapes/Mobile.js +0 -45
  28. package/dist/@likec4/diagrams/cjs/diagram/shapes/NodeIcon.js +0 -38
  29. package/dist/@likec4/diagrams/cjs/diagram/shapes/NodeLabel.js +0 -62
  30. package/dist/@likec4/diagrams/cjs/diagram/shapes/Person.js +0 -48
  31. package/dist/@likec4/diagrams/cjs/diagram/shapes/Queue.js +0 -72
  32. package/dist/@likec4/diagrams/cjs/diagram/shapes/Rectangle.js +0 -30
  33. package/dist/@likec4/diagrams/cjs/diagram/shapes/index.js +0 -54
  34. package/dist/@likec4/diagrams/cjs/diagram/shapes/types.js +0 -1
  35. package/dist/@likec4/diagrams/cjs/diagram/shapes/utils.js +0 -19
  36. package/dist/@likec4/diagrams/cjs/diagram/springs.js +0 -61
  37. package/dist/@likec4/diagrams/cjs/diagram/state/atoms.js +0 -63
  38. package/dist/@likec4/diagrams/cjs/diagram/state/gestures.js +0 -26
  39. package/dist/@likec4/diagrams/cjs/diagram/state/hooks.js +0 -36
  40. package/dist/@likec4/diagrams/cjs/diagram/state/index.js +0 -38
  41. package/dist/@likec4/diagrams/cjs/diagram/state/provider.js +0 -18
  42. package/dist/@likec4/diagrams/cjs/diagram/types.js +0 -1
  43. package/dist/@likec4/diagrams/cjs/hooks/index.js +0 -49
  44. package/dist/@likec4/diagrams/cjs/hooks/useDarkMode.js +0 -11
  45. package/dist/@likec4/diagrams/cjs/hooks/useDiagramApi.js +0 -27
  46. package/dist/@likec4/diagrams/cjs/hooks/useImageLoader.js +0 -68
  47. package/dist/@likec4/diagrams/cjs/hooks/useViewIdFromHash.js +0 -93
  48. package/dist/@likec4/diagrams/cjs/index.js +0 -51
  49. package/dist/@likec4/diagrams/cjs/konva-html.js +0 -93
  50. package/dist/@likec4/diagrams/cjs/konva-portal.js +0 -50
  51. package/dist/@likec4/diagrams/cjs/konva.js +0 -102
  52. package/dist/@likec4/diagrams/cjs/likec4.js +0 -91
  53. package/dist/@likec4/diagrams/components/EmbeddedDiagram.mjs +0 -77
  54. package/dist/@likec4/diagrams/components/FullscreenDiagramBrowser.mjs +0 -52
  55. package/dist/@likec4/diagrams/components/index.mjs +0 -4
  56. package/dist/@likec4/diagrams/components/primitives/fullscreen/CloseButton.mjs +0 -43
  57. package/dist/@likec4/diagrams/components/primitives/fullscreen/FullscreenDiagram.mjs +0 -116
  58. package/dist/@likec4/diagrams/components/primitives/fullscreen/FullscreenDiagramTitle.mjs +0 -32
  59. package/dist/@likec4/diagrams/components/primitives/index.mjs +0 -3
  60. package/dist/@likec4/diagrams/components/primitives/responsive/ResponsiveDiagram.mjs +0 -42
  61. package/dist/@likec4/diagrams/components/types.mjs +0 -0
  62. package/dist/@likec4/diagrams/diagram/Diagram.mjs +0 -307
  63. package/dist/@likec4/diagrams/diagram/Edges.mjs +0 -117
  64. package/dist/@likec4/diagrams/diagram/Nodes.mjs +0 -178
  65. package/dist/@likec4/diagrams/diagram/icons/BrainIcon.mjs +0 -20
  66. package/dist/@likec4/diagrams/diagram/icons/ExternalLink.mjs +0 -90
  67. package/dist/@likec4/diagrams/diagram/icons/index.mjs +0 -2
  68. package/dist/@likec4/diagrams/diagram/index.mjs +0 -2
  69. package/dist/@likec4/diagrams/diagram/shapes/Browser.mjs +0 -49
  70. package/dist/@likec4/diagrams/diagram/shapes/Compound.mjs +0 -48
  71. package/dist/@likec4/diagrams/diagram/shapes/Cylinder.mjs +0 -57
  72. package/dist/@likec4/diagrams/diagram/shapes/Edge.mjs +0 -63
  73. package/dist/@likec4/diagrams/diagram/shapes/Mobile.mjs +0 -33
  74. package/dist/@likec4/diagrams/diagram/shapes/NodeIcon.mjs +0 -28
  75. package/dist/@likec4/diagrams/diagram/shapes/NodeLabel.mjs +0 -59
  76. package/dist/@likec4/diagrams/diagram/shapes/Person.mjs +0 -42
  77. package/dist/@likec4/diagrams/diagram/shapes/Queue.mjs +0 -58
  78. package/dist/@likec4/diagrams/diagram/shapes/Rectangle.mjs +0 -20
  79. package/dist/@likec4/diagrams/diagram/shapes/index.mjs +0 -7
  80. package/dist/@likec4/diagrams/diagram/shapes/types.mjs +0 -0
  81. package/dist/@likec4/diagrams/diagram/shapes/utils.mjs +0 -12
  82. package/dist/@likec4/diagrams/diagram/springs.mjs +0 -57
  83. package/dist/@likec4/diagrams/diagram/state/atoms.mjs +0 -71
  84. package/dist/@likec4/diagrams/diagram/state/gestures.mjs +0 -19
  85. package/dist/@likec4/diagrams/diagram/state/hooks.mjs +0 -28
  86. package/dist/@likec4/diagrams/diagram/state/index.mjs +0 -3
  87. package/dist/@likec4/diagrams/diagram/state/provider.mjs +0 -7
  88. package/dist/@likec4/diagrams/diagram/types.mjs +0 -0
  89. package/dist/@likec4/diagrams/esm/components/EmbeddedDiagram.js +0 -77
  90. package/dist/@likec4/diagrams/esm/components/FullscreenDiagramBrowser.js +0 -52
  91. package/dist/@likec4/diagrams/esm/components/index.js +0 -4
  92. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/CloseButton.js +0 -43
  93. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/FullscreenDiagram.js +0 -116
  94. package/dist/@likec4/diagrams/esm/components/primitives/fullscreen/FullscreenDiagramTitle.js +0 -32
  95. package/dist/@likec4/diagrams/esm/components/primitives/index.js +0 -3
  96. package/dist/@likec4/diagrams/esm/components/primitives/responsive/ResponsiveDiagram.js +0 -42
  97. package/dist/@likec4/diagrams/esm/components/types.js +0 -0
  98. package/dist/@likec4/diagrams/esm/diagram/Diagram.js +0 -307
  99. package/dist/@likec4/diagrams/esm/diagram/Edges.js +0 -117
  100. package/dist/@likec4/diagrams/esm/diagram/Nodes.js +0 -178
  101. package/dist/@likec4/diagrams/esm/diagram/icons/BrainIcon.js +0 -20
  102. package/dist/@likec4/diagrams/esm/diagram/icons/ExternalLink.js +0 -90
  103. package/dist/@likec4/diagrams/esm/diagram/icons/index.js +0 -2
  104. package/dist/@likec4/diagrams/esm/diagram/index.js +0 -2
  105. package/dist/@likec4/diagrams/esm/diagram/shapes/Browser.js +0 -49
  106. package/dist/@likec4/diagrams/esm/diagram/shapes/Compound.js +0 -48
  107. package/dist/@likec4/diagrams/esm/diagram/shapes/Cylinder.js +0 -57
  108. package/dist/@likec4/diagrams/esm/diagram/shapes/Edge.js +0 -63
  109. package/dist/@likec4/diagrams/esm/diagram/shapes/Mobile.js +0 -33
  110. package/dist/@likec4/diagrams/esm/diagram/shapes/NodeIcon.js +0 -28
  111. package/dist/@likec4/diagrams/esm/diagram/shapes/NodeLabel.js +0 -59
  112. package/dist/@likec4/diagrams/esm/diagram/shapes/Person.js +0 -42
  113. package/dist/@likec4/diagrams/esm/diagram/shapes/Queue.js +0 -58
  114. package/dist/@likec4/diagrams/esm/diagram/shapes/Rectangle.js +0 -20
  115. package/dist/@likec4/diagrams/esm/diagram/shapes/index.js +0 -7
  116. package/dist/@likec4/diagrams/esm/diagram/shapes/types.js +0 -0
  117. package/dist/@likec4/diagrams/esm/diagram/shapes/utils.js +0 -12
  118. package/dist/@likec4/diagrams/esm/diagram/springs.js +0 -57
  119. package/dist/@likec4/diagrams/esm/diagram/state/atoms.js +0 -71
  120. package/dist/@likec4/diagrams/esm/diagram/state/gestures.js +0 -19
  121. package/dist/@likec4/diagrams/esm/diagram/state/hooks.js +0 -28
  122. package/dist/@likec4/diagrams/esm/diagram/state/index.js +0 -3
  123. package/dist/@likec4/diagrams/esm/diagram/state/provider.js +0 -7
  124. package/dist/@likec4/diagrams/esm/diagram/types.js +0 -0
  125. package/dist/@likec4/diagrams/esm/hooks/index.js +0 -4
  126. package/dist/@likec4/diagrams/esm/hooks/useDarkMode.js +0 -5
  127. package/dist/@likec4/diagrams/esm/hooks/useDiagramApi.js +0 -27
  128. package/dist/@likec4/diagrams/esm/hooks/useImageLoader.js +0 -64
  129. package/dist/@likec4/diagrams/esm/hooks/useViewIdFromHash.js +0 -87
  130. package/dist/@likec4/diagrams/esm/index.js +0 -4
  131. package/dist/@likec4/diagrams/esm/konva-html.js +0 -74
  132. package/dist/@likec4/diagrams/esm/konva-portal.js +0 -34
  133. package/dist/@likec4/diagrams/esm/konva.js +0 -22
  134. package/dist/@likec4/diagrams/esm/likec4.js +0 -54
  135. package/dist/@likec4/diagrams/hooks/index.mjs +0 -4
  136. package/dist/@likec4/diagrams/hooks/useDarkMode.mjs +0 -5
  137. package/dist/@likec4/diagrams/hooks/useDiagramApi.mjs +0 -27
  138. package/dist/@likec4/diagrams/hooks/useImageLoader.mjs +0 -64
  139. package/dist/@likec4/diagrams/hooks/useViewIdFromHash.mjs +0 -87
  140. package/dist/@likec4/diagrams/index.mjs +0 -4
  141. package/dist/@likec4/diagrams/konva-html.mjs +0 -74
  142. package/dist/@likec4/diagrams/konva-portal.mjs +0 -34
  143. package/dist/@likec4/diagrams/konva.mjs +0 -33
  144. package/dist/@likec4/diagrams/likec4.mjs +0 -54
@@ -1,34 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useEffect, useLayoutEffect, useRef } from "react";
3
- import { Group } from "./konva.mjs";
4
- export function Portal({ selector, enabled, children }) {
5
- const outer = useRef(null);
6
- const inner = useRef(null);
7
- const safeRef = useRef();
8
- const shouldMove = enabled ?? true;
9
- useLayoutEffect(() => {
10
- if (!outer.current || !inner.current) {
11
- return;
12
- }
13
- const stage = outer.current.getStage();
14
- if (!stage) {
15
- return;
16
- }
17
- if (shouldMove) {
18
- const newContainer = stage.findOne(selector);
19
- if (newContainer) {
20
- safeRef.current = inner.current;
21
- inner.current.moveTo(newContainer);
22
- }
23
- } else if (safeRef.current) {
24
- safeRef.current.moveTo(outer.current);
25
- safeRef.current = void 0;
26
- }
27
- }, [selector, shouldMove]);
28
- useEffect(() => {
29
- return () => {
30
- safeRef.current?.destroy();
31
- };
32
- }, []);
33
- return /* @__PURE__ */ jsx(Group, { ref: outer, children: /* @__PURE__ */ jsx(Group, { ref: inner, children }) });
34
- }
@@ -1,33 +0,0 @@
1
- import {
2
- Rect,
3
- Stage,
4
- Text,
5
- Group,
6
- Path,
7
- Circle,
8
- Line,
9
- Layer,
10
- Image,
11
- Ellipse
12
- } from "react-konva/es/ReactKonvaCore";
13
- import KonvaCore from "konva/lib/Core";
14
- import "konva/lib/shapes/Rect";
15
- import "konva/lib/shapes/Text";
16
- import "konva/lib/shapes/Path";
17
- import "konva/lib/shapes/Circle";
18
- import "konva/lib/shapes/Line";
19
- import "konva/lib/shapes/Image";
20
- import "konva/lib/shapes/Ellipse";
21
- import { animated } from "@react-spring/konva";
22
- KonvaCore.hitOnDragEnabled = true;
23
- KonvaCore.capturePointerEventsEnabled = true;
24
- KonvaCore.dragButtons = [0, 2];
25
- export { KonvaCore, Stage, Group, Layer, Path, Text, Line, Circle, Rect, Image, Ellipse };
26
- export const AnimatedStage = /* @__PURE__ */ animated(Stage);
27
- export const AnimatedRect = /* @__PURE__ */ animated(Rect);
28
- export const AnimatedGroup = /* @__PURE__ */ animated(Group);
29
- export const AnimatedText = /* @__PURE__ */ animated(Text);
30
- export const AnimatedPath = /* @__PURE__ */ animated(Path);
31
- export const AnimatedLine = /* @__PURE__ */ animated(Line);
32
- export const AnimatedCircle = /* @__PURE__ */ animated(Circle);
33
- export const AnimatedEllipse = /* @__PURE__ */ animated(Ellipse);
@@ -1,54 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
- import { Diagram } from "./diagram/index.mjs";
4
- import { FullscreenDiagramBrowser, EmbeddedDiagram } from "./components/index.mjs";
5
- import { ResponsiveDiagram, FullscreenDiagram } from "./components/primitives/index.mjs";
6
- import { useViewIdFromHash } from "./hooks/useViewIdFromHash.mjs";
7
- export class LikeC4 {
8
- constructor(views) {
9
- this.views = views;
10
- }
11
- isViewId = (value) => {
12
- return value != null && typeof value === "string" && Object.prototype.hasOwnProperty.call(this.views, value);
13
- };
14
- /**
15
- * React hook to use location hash for ViewId.
16
- * When the element with this hook is mounted, hash is set to `...#likec4={initialViewId}`
17
- * When element with this hook is unmounted, `likec4` is removed from hash if `resetHashOnUnmount` is true (default: true)
18
- * You can also provide `onReturnToInitial` callback to handle back navigation (when user goes beyond the initialViewId)
19
- */
20
- useViewId = (props) => useViewIdFromHash({ ...props, isViewId: this.isViewId });
21
- Diagram = forwardRef(({ viewId, ...props }, ref) => {
22
- const diagram = this.views[viewId];
23
- if (!diagram) {
24
- throw new Error(`View "${viewId}" not found in views`);
25
- }
26
- return /* @__PURE__ */ jsx(Diagram, { ref, diagram, ...props });
27
- });
28
- Responsive = forwardRef(({ viewId, ...props }, ref) => {
29
- const diagram = this.views[viewId];
30
- if (!diagram) {
31
- throw new Error(`View "${viewId}" not found in views`);
32
- }
33
- return /* @__PURE__ */ jsx(ResponsiveDiagram, { ref, diagram, ...props });
34
- });
35
- Fullscreen = ({ viewId, ...props }) => {
36
- const diagram = this.views[viewId];
37
- if (!diagram) {
38
- throw new Error(`View "${viewId}" not found in views`);
39
- }
40
- return /* @__PURE__ */ jsx(FullscreenDiagram, { diagram, ...props });
41
- };
42
- Embedded = forwardRef((props, ref) => {
43
- return /* @__PURE__ */ jsx(EmbeddedDiagram, { ref, views: this.views, ...props });
44
- });
45
- Browser = (props) => {
46
- return /* @__PURE__ */ jsx(FullscreenDiagramBrowser, { views: this.views, ...props });
47
- };
48
- static create(views) {
49
- if (Object.keys(views).length === 0) {
50
- throw new Error("LikeC4: views must not be empty");
51
- }
52
- return new LikeC4(views);
53
- }
54
- }