@arronqzy/react-view 0.0.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 (112) hide show
  1. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/aix-ppc64.json +1 -0
  2. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/android-arm.json +1 -0
  3. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/android-arm64.json +1 -0
  4. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/android-x64.json +1 -0
  5. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/darwin-arm64.json +1 -0
  6. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/darwin-x64.json +1 -0
  7. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/freebsd-arm64.json +1 -0
  8. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/freebsd-x64.json +1 -0
  9. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-arm.json +1 -0
  10. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-arm64.json +1 -0
  11. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-ia32.json +1 -0
  12. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-loong64.json +1 -0
  13. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-mips64el.json +1 -0
  14. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-ppc64.json +1 -0
  15. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-riscv64.json +1 -0
  16. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-s390x.json +1 -0
  17. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/linux-x64.json +1 -0
  18. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/netbsd-x64.json +1 -0
  19. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/openbsd-x64.json +1 -0
  20. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/sunos-x64.json +1 -0
  21. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/win32-arm64.json +1 -0
  22. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/win32-ia32.json +1 -0
  23. package/.pnpm-cache/metadata/registry.npmjs.org/@esbuild/win32-x64.json +1 -0
  24. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-android-arm-eabi.json +1 -0
  25. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-android-arm64.json +1 -0
  26. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-darwin-arm64.json +1 -0
  27. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-darwin-x64.json +1 -0
  28. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-freebsd-arm64.json +1 -0
  29. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-freebsd-x64.json +1 -0
  30. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf.json +1 -0
  31. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf.json +1 -0
  32. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-arm64-gnu.json +1 -0
  33. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-arm64-musl.json +1 -0
  34. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu.json +1 -0
  35. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu.json +1 -0
  36. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu.json +1 -0
  37. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-riscv64-musl.json +1 -0
  38. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-s390x-gnu.json +1 -0
  39. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-x64-gnu.json +1 -0
  40. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-linux-x64-musl.json +1 -0
  41. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-win32-arm64-msvc.json +1 -0
  42. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-win32-ia32-msvc.json +1 -0
  43. package/.pnpm-cache/metadata/registry.npmjs.org/@rollup/rollup-win32-x64-msvc.json +1 -0
  44. package/.pnpm-cache/metadata/registry.npmjs.org/eslint.json +1 -0
  45. package/.pnpm-cache/metadata/registry.npmjs.org/fsevents.json +1 -0
  46. package/.pnpm-cache/metadata/registry.npmjs.org/pnpm.json +1 -0
  47. package/.pnpm-cache/metadata/registry.npmjs.org/react-dom.json +1 -0
  48. package/.pnpm-cache/metadata/registry.npmjs.org/react-is.json +1 -0
  49. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-darwin-64.json +1 -0
  50. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-darwin-arm64.json +1 -0
  51. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-linux-64.json +1 -0
  52. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-linux-arm64.json +1 -0
  53. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-windows-64.json +1 -0
  54. package/.pnpm-cache/metadata/registry.npmjs.org/turbo-windows-arm64.json +1 -0
  55. package/.pnpm-cache/metadata/registry.npmjs.org/typescript.json +1 -0
  56. package/.turbo/turbo-lint.log +4 -0
  57. package/dist/styles.css +2624 -0
  58. package/env.d.ts +11 -0
  59. package/operation-guide.md +275 -0
  60. package/package.json +43 -0
  61. package/postcss.config.cjs +7 -0
  62. package/readme.md +21 -0
  63. package/src/core/createAction.ts +5 -0
  64. package/src/core/createView.ts +28 -0
  65. package/src/core/instructions.tsx +57 -0
  66. package/src/core/nodePool.ts +127 -0
  67. package/src/core/signal.ts +130 -0
  68. package/src/core/template.tsx +25 -0
  69. package/src/index.ts +7 -0
  70. package/src/panel/ReactViewOnlinePreview.tsx +331 -0
  71. package/src/panel/ReactViewPanel.tsx +3221 -0
  72. package/src/panel/components/ElementsLayer.tsx +891 -0
  73. package/src/panel/components/MaterialSidebar.tsx +1142 -0
  74. package/src/panel/components/MoveableLayer.tsx +803 -0
  75. package/src/panel/components/PanelCanvas.tsx +660 -0
  76. package/src/panel/components/PanelConfigSidebar.tsx +3703 -0
  77. package/src/panel/components/PanelRulers.tsx +89 -0
  78. package/src/panel/components/SelectLayer.tsx +106 -0
  79. package/src/panel/components/ViewElementScopePanel.tsx +79 -0
  80. package/src/panel/components/WorkspaceConfigSidebar.tsx +158 -0
  81. package/src/panel/components/WorkspaceProjectNav.tsx +220 -0
  82. package/src/panel/components/WorkspaceStageSplit.tsx +179 -0
  83. package/src/panel/components/scope-config/ScopeConfigContext.tsx +170 -0
  84. package/src/panel/components/scope-config/ScopeTemplateAutocompleteHost.tsx +250 -0
  85. package/src/panel/components/scope-config/ScopeTemplateWarningsPanel.tsx +59 -0
  86. package/src/panel/constants/messages.ts +34 -0
  87. package/src/panel/constants/zIndex.ts +6 -0
  88. package/src/panel/hooks/usePanelElements.ts +1108 -0
  89. package/src/panel/hooks/useWorkspaceProjects.ts +278 -0
  90. package/src/panel/index.tsx +3 -0
  91. package/src/panel/library/workspace-project-cache.ts +23 -0
  92. package/src/panel/library/workspace-project-db.ts +112 -0
  93. package/src/panel/library/workspace-project-sync.ts +41 -0
  94. package/src/panel/library/workspace-snapshot.ts +27 -0
  95. package/src/panel/scope/view-scope-store.ts +55 -0
  96. package/src/panel/types.ts +125 -0
  97. package/src/panel/utils/chartOptionBuilder.ts +316 -0
  98. package/src/panel/utils/gridPlacement.ts +189 -0
  99. package/src/panel/utils/mappingLayerOps.ts +142 -0
  100. package/src/panel/utils/panelElementDefaults.ts +161 -0
  101. package/src/panel/utils/panelElementNodes.ts +35 -0
  102. package/src/panel/utils/panelStateIO.ts +124 -0
  103. package/src/panel/utils/scope-autocomplete.ts +114 -0
  104. package/src/panel/utils/scope-field-labels.ts +45 -0
  105. package/src/panel/utils/scope-template-warnings.ts +135 -0
  106. package/src/panel/utils/scope-template.ts +75 -0
  107. package/src/panel/utils/updateElementDraft.ts +221 -0
  108. package/src/panel/viewportZoom.ts +26 -0
  109. package/src/tailwind.css +58 -0
  110. package/src/types/react-infinite-viewer.d.ts +39 -0
  111. package/tailwind.config.ts +7 -0
  112. package/tsconfig.json +14 -0
@@ -0,0 +1,221 @@
1
+ import type { Node, State } from "../../../../rx-store/src/types";
2
+ import type { PanelElement } from "../types";
3
+ import { getGridChildSpanRect, getGridSlotLayout } from "./gridPlacement";
4
+ import {
5
+ canonicalMappingFamilyRootId,
6
+ concreteGridParentIdForLayer,
7
+ logicalGridParentIdFromConcrete,
8
+ } from "./mappingLayerOps";
9
+ import { isPanelElementNode } from "./panelElementNodes";
10
+
11
+ /** 防止同源合并把「映射层上的网格 id」泄露到其它图层,保证节点树 parentGridId 只指向本图层网格 */
12
+ function fixCrossLayerParentGrid(
13
+ merged: PanelElement,
14
+ propsBefore: PanelElement,
15
+ byId: Map<string, PanelElement>,
16
+ allFlat: PanelElement[]
17
+ ): void {
18
+ const layerId = propsBefore.layerId;
19
+ const pg = merged.parentGridId;
20
+ if (!pg) return;
21
+
22
+ const parentNode = byId.get(pg);
23
+ const validHere =
24
+ !!parentNode &&
25
+ parentNode.materialType === "grid" &&
26
+ parentNode.layerId === layerId;
27
+
28
+ if (validHere) return;
29
+
30
+ const logical =
31
+ logicalGridParentIdFromConcrete(pg, byId) ??
32
+ (propsBefore.parentGridId !== undefined
33
+ ? logicalGridParentIdFromConcrete(propsBefore.parentGridId, byId)
34
+ : undefined);
35
+
36
+ if (logical !== undefined) {
37
+ const cp = concreteGridParentIdForLayer(logical, layerId, allFlat);
38
+ const gridEl = cp ? byId.get(cp) : undefined;
39
+ if (gridEl?.materialType === "grid") {
40
+ merged.parentGridId = cp;
41
+ const spanRect = getGridChildSpanRect(
42
+ gridEl,
43
+ merged.gridSlotIndex ?? 0,
44
+ merged.gridColSpan ?? 1,
45
+ merged.gridRowSpan ?? 1
46
+ );
47
+ merged.gridSlotIndex = spanRect.index;
48
+ merged.gridColSpan = spanRect.colSpan;
49
+ merged.gridRowSpan = spanRect.rowSpan;
50
+ merged.x = spanRect.x;
51
+ merged.y = spanRect.y;
52
+ merged.width = spanRect.width;
53
+ merged.height = spanRect.height;
54
+ return;
55
+ }
56
+ }
57
+
58
+ merged.parentGridId = propsBefore.parentGridId;
59
+ merged.gridSlotIndex = propsBefore.gridSlotIndex;
60
+ merged.gridColSpan = propsBefore.gridColSpan;
61
+ merged.gridRowSpan = propsBefore.gridRowSpan;
62
+ merged.x = propsBefore.x;
63
+ merged.y = propsBefore.y;
64
+ merged.width = propsBefore.width;
65
+ merged.height = propsBefore.height;
66
+ }
67
+
68
+ /** 同源映射:外层网格布局改动时,同源簇内每张网格实例一并 reflow 其子节点几何 */
69
+ export function applyGridLayoutPatchAcrossMappingFamily(
70
+ draft: State,
71
+ logicalGridSourceId: string,
72
+ patch: Partial<PanelElement>
73
+ ): void {
74
+ const nodes = draft.root.children ?? [];
75
+ const byIdPre = new Map<string, PanelElement>();
76
+ nodes.forEach((n) => {
77
+ if (!isPanelElementNode(n) || !n.props) return;
78
+ const p = n.props as PanelElement;
79
+ byIdPre.set(p.id, p);
80
+ });
81
+ const gridTargets = nodes.filter((n) => {
82
+ if (!isPanelElementNode(n) || !n.props) return false;
83
+ const p = n.props as PanelElement;
84
+ if (p.materialType !== "grid") return false;
85
+ return canonicalMappingFamilyRootId(byIdPre, p.id) === logicalGridSourceId;
86
+ });
87
+ if (gridTargets.length === 0) return;
88
+ const byParent = new Map<string, PanelElement[]>();
89
+ nodes.forEach((n) => {
90
+ if (!isPanelElementNode(n) || !n.props) return;
91
+ const p = n.props as PanelElement;
92
+ if (!p.parentGridId) return;
93
+ const list = byParent.get(p.parentGridId) ?? [];
94
+ list.push(p);
95
+ byParent.set(p.parentGridId, list);
96
+ });
97
+ const byIdNode = new Map<string, Node>();
98
+ nodes.forEach((n) => {
99
+ if (!isPanelElementNode(n) || !n.props) return;
100
+ byIdNode.set((n.props as PanelElement).id, n);
101
+ });
102
+ const reflowGridDescendants = (grid: PanelElement) => {
103
+ const { slots } = getGridSlotLayout(grid);
104
+ if (slots.length === 0) return;
105
+ const directChildren = byParent.get(grid.id) ?? [];
106
+ directChildren.forEach((child) => {
107
+ const slotIndex =
108
+ child.gridSlotIndex !== undefined ? Math.max(0, Math.floor(child.gridSlotIndex)) : 0;
109
+ const spanRect = getGridChildSpanRect(
110
+ grid,
111
+ slotIndex % slots.length,
112
+ child.gridColSpan ?? 1,
113
+ child.gridRowSpan ?? 1
114
+ );
115
+ child.gridSlotIndex = spanRect.index;
116
+ child.gridColSpan = spanRect.colSpan;
117
+ child.gridRowSpan = spanRect.rowSpan;
118
+ child.x = spanRect.x;
119
+ child.y = spanRect.y;
120
+ child.width = spanRect.width;
121
+ child.height = spanRect.height;
122
+ const childNode = byIdNode.get(child.id);
123
+ if (childNode) childNode.props = child;
124
+ if (child.materialType === "grid") {
125
+ reflowGridDescendants(child);
126
+ }
127
+ });
128
+ };
129
+ gridTargets.forEach((targetNode) => {
130
+ if (!targetNode.props) return;
131
+ const nextGrid = {
132
+ ...(targetNode.props as PanelElement),
133
+ ...patch,
134
+ } as PanelElement;
135
+ targetNode.props = nextGrid;
136
+ reflowGridDescendants(nextGrid);
137
+ });
138
+ }
139
+
140
+ /** 同源节点簇在非网格独占分支下的批量合并(含跨图层 parentGridId remap) */
141
+ export function applyMappingFamilySyncPatch(
142
+ draft: State,
143
+ syncSourceId: string,
144
+ syncPatch: Partial<PanelElement>,
145
+ patch: Partial<PanelElement>
146
+ ): void {
147
+ const nodes = draft.root.children ?? [];
148
+ const byId = new Map<string, PanelElement>();
149
+ nodes.forEach((n) => {
150
+ if (!isPanelElementNode(n) || !n.props) return;
151
+ const p = n.props as PanelElement;
152
+ byId.set(p.id, p);
153
+ });
154
+ const allFlat = [...byId.values()];
155
+ nodes.forEach((n) => {
156
+ if (!isPanelElementNode(n) || !n.props) return;
157
+ const props = n.props as PanelElement;
158
+ const sameFamily = canonicalMappingFamilyRootId(byId, props.id) === syncSourceId;
159
+ if (!sameFamily) return;
160
+
161
+ const merged = { ...props, ...syncPatch } as PanelElement;
162
+
163
+ if ("parentGridId" in patch && patch.parentGridId === undefined) {
164
+ merged.parentGridId = undefined;
165
+ merged.gridSlotIndex = undefined;
166
+ n.props = merged;
167
+ byId.set(merged.id, merged);
168
+ return;
169
+ }
170
+
171
+ const logicalParent =
172
+ patch.parentGridId !== undefined
173
+ ? logicalGridParentIdFromConcrete(patch.parentGridId, byId)
174
+ : props.parentGridId !== undefined
175
+ ? logicalGridParentIdFromConcrete(props.parentGridId, byId)
176
+ : undefined;
177
+
178
+ const touchesGridPlacement =
179
+ ("parentGridId" in patch && patch.parentGridId !== undefined) ||
180
+ "gridSlotIndex" in patch ||
181
+ "gridColSpan" in patch ||
182
+ "gridRowSpan" in patch;
183
+
184
+ if (touchesGridPlacement && logicalParent !== undefined) {
185
+ const concreteParent = concreteGridParentIdForLayer(logicalParent, props.layerId, allFlat);
186
+ if (concreteParent) {
187
+ const parentEl = byId.get(concreteParent);
188
+ if (parentEl?.materialType === "grid") {
189
+ merged.parentGridId = concreteParent;
190
+ const spanRect = getGridChildSpanRect(
191
+ parentEl,
192
+ merged.gridSlotIndex ?? 0,
193
+ merged.gridColSpan ?? 1,
194
+ merged.gridRowSpan ?? 1
195
+ );
196
+ merged.gridSlotIndex = spanRect.index;
197
+ merged.gridColSpan = spanRect.colSpan;
198
+ merged.gridRowSpan = spanRect.rowSpan;
199
+ merged.x = spanRect.x;
200
+ merged.y = spanRect.y;
201
+ merged.width = spanRect.width;
202
+ merged.height = spanRect.height;
203
+ }
204
+ } else {
205
+ merged.parentGridId = props.parentGridId;
206
+ merged.gridSlotIndex = props.gridSlotIndex;
207
+ merged.gridColSpan = props.gridColSpan;
208
+ merged.gridRowSpan = props.gridRowSpan;
209
+ merged.x = props.x;
210
+ merged.y = props.y;
211
+ merged.width = props.width;
212
+ merged.height = props.height;
213
+ }
214
+ }
215
+
216
+ fixCrossLayerParentGrid(merged, props, byId, allFlat);
217
+
218
+ n.props = merged;
219
+ byId.set(merged.id, merged);
220
+ });
221
+ }
@@ -0,0 +1,26 @@
1
+ export type ViewportZoom = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+
6
+ export function uniformViewportZoom(zoom: ViewportZoom): number {
7
+ return Math.min(zoom.x, zoom.y);
8
+ }
9
+
10
+ export function clampViewportZoom(value: number): number {
11
+ return Math.min(4, Math.max(0.25, value));
12
+ }
13
+
14
+ export function clampViewportZoomXY(zoom: ViewportZoom): ViewportZoom {
15
+ return { x: clampViewportZoom(zoom.x), y: clampViewportZoom(zoom.y) };
16
+ }
17
+
18
+ export function scaleViewportZoom(
19
+ zoom: ViewportZoom,
20
+ factor: number
21
+ ): ViewportZoom {
22
+ return clampViewportZoomXY({
23
+ x: zoom.x * factor,
24
+ y: zoom.y * factor,
25
+ });
26
+ }
@@ -0,0 +1,58 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* Global themed scrollbar */
6
+ * {
7
+ scrollbar-width: thin;
8
+ scrollbar-color: hsl(var(--border)) hsl(var(--muted) / 0.4);
9
+ }
10
+
11
+ *::-webkit-scrollbar {
12
+ width: 8px;
13
+ height: 8px;
14
+ }
15
+
16
+ *::-webkit-scrollbar-track {
17
+ background: hsl(var(--muted) / 0.4);
18
+ }
19
+
20
+ *::-webkit-scrollbar-thumb {
21
+ background: hsl(var(--border));
22
+ border-radius: 9999px;
23
+ }
24
+
25
+ *::-webkit-scrollbar-thumb:hover {
26
+ background: hsl(var(--foreground) / 0.45);
27
+ }
28
+
29
+ /* Moveable:仅角点控制柄固定屏幕像素;勿作用于 moveable-direction 边线 */
30
+ .rv-moveable-layer {
31
+ --moveable-color: #1990ff;
32
+ }
33
+
34
+ .rv-moveable-layer .moveable-control {
35
+ width: 14px !important;
36
+ height: 14px !important;
37
+ margin-top: -7px !important;
38
+ margin-left: -7px !important;
39
+ border-radius: 50% !important;
40
+ box-sizing: border-box !important;
41
+ border: 2px solid hsl(var(--background)) !important;
42
+ background: #1990ff !important;
43
+ background: var(--moveable-color) !important;
44
+ }
45
+
46
+ .rv-moveable-layer .moveable-line.moveable-direction {
47
+ width: 1px !important;
48
+ height: 1px !important;
49
+ margin: 0 !important;
50
+ }
51
+
52
+ .rv-moveable-layer .moveable-line {
53
+ --moveable-color: #1990ff;
54
+ }
55
+
56
+ .rv-moveable-layer .moveable-around-control {
57
+ background: transparent !important;
58
+ }
@@ -0,0 +1,39 @@
1
+ declare module "react-infinite-viewer" {
2
+ import * as React from "react";
3
+
4
+ export type InfiniteViewerOnScroll = {
5
+ scrollLeft: number;
6
+ scrollTop: number;
7
+ zoomX: number;
8
+ zoomY: number;
9
+ };
10
+
11
+ export type InfiniteViewerOnDragStart = {
12
+ inputEvent?: any;
13
+ target?: Element;
14
+ stop?: () => void;
15
+ };
16
+
17
+ export type InfiniteViewerProps = React.PropsWithChildren<{
18
+ className?: string;
19
+ margin?: number;
20
+ threshold?: number;
21
+ rangeX?: number[];
22
+ rangeY?: number[];
23
+ useMouseDrag?: boolean;
24
+ useWheelScroll?: boolean;
25
+ preventWheelClick?: boolean;
26
+ displayVerticalScroll?: boolean;
27
+ displayHorizontalScroll?: boolean;
28
+ onScroll?: (e: InfiniteViewerOnScroll) => void;
29
+ onDragStart?: (e: InfiniteViewerOnDragStart) => boolean | void;
30
+ onDragEnd?: (e: any) => void;
31
+ }>;
32
+
33
+ const InfiniteViewer: React.ForwardRefExoticComponent<
34
+ InfiniteViewerProps & React.RefAttributes<any>
35
+ >;
36
+
37
+ export default InfiniteViewer;
38
+ }
39
+
@@ -0,0 +1,7 @@
1
+ import preset from "../tailwind/src/preset";
2
+
3
+ export default {
4
+ presets: [preset],
5
+ content: ["./src/**/*.{ts,tsx}"],
6
+ };
7
+
package/tsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "@arronqzy/typescript-config/react-library.json",
3
+ "compilerOptions": {
4
+ "jsx": "react-jsx",
5
+ "baseUrl": ".",
6
+ "paths": {
7
+ "@arronqzy/blueprint-dsl": ["../blueprint-dsl/src/index.ts"],
8
+ "@arronqzy/react-blueprint": ["../react-blueprint/index.ts"],
9
+ "@arronqzy/ui": ["../ui/index.ts"]
10
+ }
11
+ },
12
+ "include": ["."],
13
+ "exclude": ["node_modules"]
14
+ }