@xpert-ai/plugin-excalidraw 0.1.1 → 0.2.0

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 (42) hide show
  1. package/.xpertai-plugin/plugin.json +1 -1
  2. package/dist/index.js +153 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/lib/constants.js +42 -0
  5. package/dist/lib/constants.js.map +1 -0
  6. package/dist/lib/entities/excalidraw-action-log.entity.js +69 -0
  7. package/dist/lib/entities/excalidraw-action-log.entity.js.map +1 -0
  8. package/dist/lib/entities/excalidraw-drawing-version.entity.js +82 -0
  9. package/dist/lib/entities/excalidraw-drawing-version.entity.js.map +1 -0
  10. package/dist/lib/entities/excalidraw-drawing.entity.js +94 -0
  11. package/dist/lib/entities/excalidraw-drawing.entity.js.map +1 -0
  12. package/dist/lib/entities/index.js +4 -0
  13. package/dist/lib/entities/index.js.map +1 -0
  14. package/dist/lib/excalidraw-view.provider.js +423 -0
  15. package/dist/lib/excalidraw-view.provider.js.map +1 -0
  16. package/dist/lib/excalidraw.middleware.js +173 -0
  17. package/dist/lib/excalidraw.middleware.js.map +1 -0
  18. package/dist/lib/excalidraw.plugin.js +27 -0
  19. package/dist/lib/excalidraw.plugin.js.map +1 -0
  20. package/dist/lib/excalidraw.service.js +441 -0
  21. package/dist/lib/excalidraw.service.js.map +1 -0
  22. package/dist/lib/excalidraw.templates.js +78 -0
  23. package/dist/lib/excalidraw.templates.js.map +1 -0
  24. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js +103 -0
  25. package/dist/lib/remote-components/excalidraw-workbench/src/i18n.js.map +1 -0
  26. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js +4 -0
  27. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-client-shim.js.map +1 -0
  28. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js +11 -0
  29. package/dist/lib/remote-components/excalidraw-workbench/src/react-dom-shim.js.map +1 -0
  30. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js +8 -0
  31. package/dist/lib/remote-components/excalidraw-workbench/src/react-jsx-runtime-shim.js.map +1 -0
  32. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js +36 -0
  33. package/dist/lib/remote-components/excalidraw-workbench/src/react-shim.js.map +1 -0
  34. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js +198 -0
  35. package/dist/lib/remote-components/excalidraw-workbench/src/runtime.js.map +1 -0
  36. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js +324 -0
  37. package/dist/lib/remote-components/excalidraw-workbench/src/styles.js.map +1 -0
  38. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js +4 -0
  39. package/dist/lib/remote-components/excalidraw-workbench/src/vendor.js.map +1 -0
  40. package/dist/lib/types.js +2 -0
  41. package/dist/lib/types.js.map +1 -0
  42. package/package.json +1 -1
@@ -0,0 +1,324 @@
1
+ export function injectStyles() {
2
+ if (document.getElementById('excalidraw-workbench-styles')) {
3
+ return;
4
+ }
5
+ const style = document.createElement('style');
6
+ style.id = 'excalidraw-workbench-styles';
7
+ style.textContent = `
8
+ html, body, #root {
9
+ width: 100%;
10
+ height: 100%;
11
+ min-height: 100%;
12
+ margin: 0;
13
+ overflow: hidden;
14
+ background: var(--xps-background);
15
+ color: var(--xps-foreground);
16
+ font-family: var(--xps-font-sans);
17
+ }
18
+ * {
19
+ box-sizing: border-box;
20
+ }
21
+ button, input, select, textarea {
22
+ font: inherit;
23
+ }
24
+ .exw-shell {
25
+ --exw-rail-width: var(--xps-sidebar-rail-width, 44px);
26
+ --exw-panel-header-height: 2.5rem;
27
+ --exw-left-width: minmax(var(--exw-rail-width), clamp(240px, 20vw, 300px));
28
+ --exw-right-width: var(--exw-rail-width);
29
+ --exw-right-panel-width: min(320px, calc(100vw - var(--exw-rail-width) - 96px));
30
+ width: 100%;
31
+ height: 100vh;
32
+ min-height: 720px;
33
+ display: grid;
34
+ grid-template-columns: var(--exw-left-width) minmax(0, 1fr) var(--exw-right-width);
35
+ background: var(--xps-background);
36
+ overflow: hidden;
37
+ transition: grid-template-columns 160ms ease;
38
+ }
39
+ .exw-shell.left-collapsed {
40
+ --exw-left-width: var(--exw-rail-width);
41
+ }
42
+ .exw-shell.right-collapsed {
43
+ --exw-right-width: var(--exw-rail-width);
44
+ }
45
+ .exw-shell.left-collapsed.right-collapsed {
46
+ --exw-left-width: var(--exw-rail-width);
47
+ --exw-right-width: var(--exw-rail-width);
48
+ }
49
+ .exw-sidebar, .exw-inspector {
50
+ min-width: 0;
51
+ height: 100vh;
52
+ min-height: 720px;
53
+ }
54
+ .exw-inspector.xps-sidebar {
55
+ position: relative;
56
+ z-index: 30;
57
+ overflow: visible;
58
+ }
59
+ .exw-inspector[aria-expanded="true"] {
60
+ background: color-mix(in srgb, var(--xps-card) 94%, var(--xps-muted) 6%);
61
+ }
62
+ .exw-inspector[aria-expanded="true"] > .xps-sidebar-header,
63
+ .exw-inspector[aria-expanded="true"] > .xps-sidebar-content {
64
+ position: absolute;
65
+ right: 0;
66
+ width: var(--exw-right-panel-width);
67
+ max-width: calc(100vw - 16px);
68
+ z-index: 31;
69
+ background: var(--xps-card);
70
+ border-left: 1px solid var(--xps-border);
71
+ border-right: 1px solid var(--xps-border);
72
+ box-shadow: -12px 0 28px color-mix(in srgb, var(--xps-foreground) 14%, transparent);
73
+ }
74
+ .exw-inspector[aria-expanded="true"] > .xps-sidebar-header {
75
+ top: 0;
76
+ min-height: var(--exw-panel-header-height);
77
+ border-bottom: 1px solid var(--xps-border);
78
+ }
79
+ .exw-inspector[aria-expanded="true"] > .xps-sidebar-content {
80
+ top: var(--exw-panel-header-height);
81
+ bottom: 0;
82
+ min-height: 0;
83
+ overflow: hidden;
84
+ }
85
+ .exw-sidebar-title-truncate {
86
+ flex: 1 1 auto;
87
+ overflow: hidden;
88
+ text-overflow: ellipsis;
89
+ white-space: nowrap;
90
+ }
91
+ .exw-sidebar-trigger-right {
92
+ margin-left: auto;
93
+ }
94
+ .exw-inspector-actions {
95
+ min-width: 0;
96
+ flex: 0 0 auto;
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 6px;
100
+ }
101
+ .exw-inspector-actions .xps-button,
102
+ .exw-inspector-actions .xps-badge {
103
+ flex: 0 0 auto;
104
+ white-space: nowrap;
105
+ }
106
+ .exw-sidebar-controls {
107
+ padding: 8px;
108
+ display: flex;
109
+ flex-direction: column;
110
+ gap: 8px;
111
+ border-bottom: 1px solid var(--xps-border);
112
+ }
113
+ .exw-main {
114
+ min-width: 0;
115
+ height: 100vh;
116
+ min-height: 720px;
117
+ display: grid;
118
+ grid-template-rows: auto minmax(0, 1fr);
119
+ background: var(--xps-background);
120
+ }
121
+ .exw-toolbar {
122
+ display: grid;
123
+ grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
124
+ align-items: center;
125
+ gap: 8px 10px;
126
+ min-height: 48px;
127
+ padding: 8px 12px;
128
+ background: var(--xps-card);
129
+ border-bottom: 1px solid var(--xps-border);
130
+ min-width: 0;
131
+ overflow: visible;
132
+ }
133
+ .exw-toolbar-title {
134
+ min-width: 0;
135
+ }
136
+ .exw-toolbar-actions {
137
+ min-width: 0;
138
+ display: flex;
139
+ flex-wrap: wrap;
140
+ align-items: center;
141
+ gap: 8px;
142
+ }
143
+ .exw-toolbar-actions .xps-button,
144
+ .exw-toolbar-actions .xps-badge {
145
+ flex: 0 0 auto;
146
+ }
147
+ .exw-title-input {
148
+ width: 100%;
149
+ }
150
+ .exw-button-icon {
151
+ width: 1rem;
152
+ height: 1rem;
153
+ flex: 0 0 auto;
154
+ stroke-width: 2;
155
+ }
156
+ .exw-canvas {
157
+ min-height: 0;
158
+ height: 100%;
159
+ background: var(--xps-background);
160
+ position: relative;
161
+ overflow: hidden;
162
+ }
163
+ .exw-canvas .excalidraw {
164
+ --color-primary: var(--xps-primary);
165
+ }
166
+ .exw-list {
167
+ flex: 1 1 auto;
168
+ min-height: 0;
169
+ padding: 6px;
170
+ }
171
+ .exw-item-title {
172
+ display: block;
173
+ width: 100%;
174
+ color: var(--xps-foreground);
175
+ font-weight: 650;
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ white-space: nowrap;
179
+ }
180
+ .exw-item-meta, .exw-muted {
181
+ color: var(--xps-muted-foreground);
182
+ font-size: 12px;
183
+ min-width: 0;
184
+ overflow: hidden;
185
+ text-overflow: ellipsis;
186
+ white-space: nowrap;
187
+ }
188
+ .exw-status {
189
+ margin-left: auto;
190
+ flex: 0 0 auto;
191
+ }
192
+ .exw-inspector-scroll {
193
+ min-height: 0;
194
+ height: 100%;
195
+ flex: 1 1 auto;
196
+ }
197
+ .exw-inspector-stack {
198
+ padding: 10px;
199
+ padding-right: 12px;
200
+ display: flex;
201
+ flex-direction: column;
202
+ gap: 10px;
203
+ min-width: 0;
204
+ max-width: 100%;
205
+ }
206
+ .exw-section {
207
+ display: flex;
208
+ flex-direction: column;
209
+ gap: 8px;
210
+ min-width: 0;
211
+ max-width: 100%;
212
+ }
213
+ .exw-section-title {
214
+ font-size: 13px;
215
+ font-weight: 700;
216
+ color: var(--xps-foreground);
217
+ }
218
+ .exw-inline-actions {
219
+ display: flex;
220
+ flex-wrap: wrap;
221
+ gap: 8px;
222
+ }
223
+ .exw-version {
224
+ border: 1px solid var(--xps-border);
225
+ border-radius: var(--xps-radius);
226
+ background: color-mix(in srgb, var(--xps-card) 94%, var(--xps-muted) 6%);
227
+ padding: 8px;
228
+ display: grid;
229
+ grid-template-columns: minmax(0, 1fr) var(--xps-control-height);
230
+ align-items: center;
231
+ gap: 8px;
232
+ width: 100%;
233
+ min-width: 0;
234
+ overflow: hidden;
235
+ }
236
+ .exw-version > div {
237
+ min-width: 0;
238
+ overflow: hidden;
239
+ }
240
+ .exw-version > div > div {
241
+ min-width: 0;
242
+ overflow: hidden;
243
+ text-overflow: ellipsis;
244
+ white-space: nowrap;
245
+ }
246
+ .exw-version-action.xps-button {
247
+ width: var(--xps-control-height);
248
+ height: var(--xps-control-height);
249
+ padding: 0;
250
+ justify-self: end;
251
+ }
252
+ .exw-inspector .xps-input,
253
+ .exw-inspector .xps-textarea,
254
+ .exw-inspector .xps-scroll-area,
255
+ .exw-inspector .xps-scroll-area-viewport {
256
+ min-width: 0;
257
+ max-width: 100%;
258
+ }
259
+ .exw-inspector .xps-textarea {
260
+ overflow-x: hidden;
261
+ overflow-wrap: anywhere;
262
+ word-break: break-word;
263
+ }
264
+ .exw-inspector .exw-muted {
265
+ overflow: visible;
266
+ text-overflow: clip;
267
+ white-space: normal;
268
+ overflow-wrap: anywhere;
269
+ }
270
+ .exw-empty {
271
+ height: 100%;
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ color: var(--xps-muted-foreground);
276
+ }
277
+ .exw-hidden-file {
278
+ display: none;
279
+ }
280
+ @media (max-width: 1040px) {
281
+ .exw-shell,
282
+ .exw-shell.left-collapsed,
283
+ .exw-shell.right-collapsed,
284
+ .exw-shell.left-collapsed.right-collapsed {
285
+ --exw-left-width: var(--exw-rail-width);
286
+ --exw-right-width: var(--exw-rail-width);
287
+ --exw-right-panel-width: min(300px, calc(100vw - var(--exw-rail-width) - 32px));
288
+ grid-template-columns: var(--exw-left-width) minmax(0, 1fr) var(--exw-right-width);
289
+ }
290
+ .exw-sidebar:not([aria-expanded="false"]),
291
+ .exw-inspector:not([aria-expanded="false"]) {
292
+ width: var(--exw-rail-width);
293
+ }
294
+ .exw-sidebar .xps-sidebar-content,
295
+ .exw-inspector-scroll {
296
+ display: none;
297
+ }
298
+ .exw-inspector[aria-expanded="true"] .exw-inspector-scroll {
299
+ display: block;
300
+ }
301
+ .exw-sidebar .xps-sidebar-header .xps-sidebar-title,
302
+ .exw-sidebar .xps-sidebar-header .xps-badge,
303
+ .exw-sidebar .xps-sidebar-header .xps-button:not(.xps-sidebar-trigger),
304
+ .exw-inspector[aria-expanded="false"] .xps-sidebar-header .xps-sidebar-title,
305
+ .exw-inspector[aria-expanded="false"] .xps-sidebar-header .xps-badge,
306
+ .exw-inspector[aria-expanded="false"] .xps-sidebar-header .xps-button:not(.xps-sidebar-trigger) {
307
+ display: none;
308
+ }
309
+ .xps-sidebar-rail {
310
+ display: flex;
311
+ }
312
+ }
313
+ @media (max-width: 920px) {
314
+ .exw-toolbar {
315
+ grid-template-columns: minmax(0, 1fr);
316
+ }
317
+ .exw-status {
318
+ margin-left: 0;
319
+ }
320
+ }
321
+ `;
322
+ document.head.appendChild(style);
323
+ }
324
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/excalidraw-workbench/src/styles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC,EAAE,CAAC;QAC3D,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC7C,KAAK,CAAC,EAAE,GAAG,6BAA6B,CAAA;IACxC,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0TnB,CAAA;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const React = window.React;
2
+ export const ReactDOM = window.ReactDOM;
3
+ export const h = React.createElement;
4
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../../../src/lib/remote-components/excalidraw-workbench/src/vendor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK,CAAA;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAA;AAChD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xpert-ai/plugin-excalidraw",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Excalidraw app plugin for agent-created diagrams, reviewable drawing versions, Mermaid drafts, and an editable workbench.",
5
5
  "author": {
6
6
  "name": "XpertAI",