@codefluss/sandbox 0.0.1-alpha.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 (233) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +413 -0
  3. package/dist/__tests__/auto-resize-script.test.d.ts +2 -0
  4. package/dist/__tests__/auto-resize-script.test.d.ts.map +1 -0
  5. package/dist/__tests__/auto-resize-script.test.js +49 -0
  6. package/dist/__tests__/auto-resize-script.test.js.map +1 -0
  7. package/dist/__tests__/sandbox-component.test.d.ts +2 -0
  8. package/dist/__tests__/sandbox-component.test.d.ts.map +1 -0
  9. package/dist/__tests__/sandbox-component.test.js +281 -0
  10. package/dist/__tests__/sandbox-component.test.js.map +1 -0
  11. package/dist/__tests__/sandbox-config.test.d.ts +2 -0
  12. package/dist/__tests__/sandbox-config.test.d.ts.map +1 -0
  13. package/dist/__tests__/sandbox-config.test.js +148 -0
  14. package/dist/__tests__/sandbox-config.test.js.map +1 -0
  15. package/dist/__tests__/sandbox-iframe.test.d.ts +2 -0
  16. package/dist/__tests__/sandbox-iframe.test.d.ts.map +1 -0
  17. package/dist/__tests__/sandbox-iframe.test.js +212 -0
  18. package/dist/__tests__/sandbox-iframe.test.js.map +1 -0
  19. package/dist/__tests__/setup.d.ts +2 -0
  20. package/dist/__tests__/setup.d.ts.map +1 -0
  21. package/dist/__tests__/setup.js +27 -0
  22. package/dist/__tests__/setup.js.map +1 -0
  23. package/dist/components/index.d.ts +5 -0
  24. package/dist/components/index.d.ts.map +1 -0
  25. package/dist/components/index.js +5 -0
  26. package/dist/components/index.js.map +1 -0
  27. package/dist/components/performance-wrapper.d.ts +12 -0
  28. package/dist/components/performance-wrapper.d.ts.map +1 -0
  29. package/dist/components/performance-wrapper.js +162 -0
  30. package/dist/components/performance-wrapper.js.map +1 -0
  31. package/dist/components/sandbox-component.d.ts +3 -0
  32. package/dist/components/sandbox-component.d.ts.map +1 -0
  33. package/dist/components/sandbox-component.js +123 -0
  34. package/dist/components/sandbox-component.js.map +1 -0
  35. package/dist/components/sandbox-iframe-cached.d.ts +3 -0
  36. package/dist/components/sandbox-iframe-cached.d.ts.map +1 -0
  37. package/dist/components/sandbox-iframe-cached.js +176 -0
  38. package/dist/components/sandbox-iframe-cached.js.map +1 -0
  39. package/dist/components/sandbox-iframe.d.ts +3 -0
  40. package/dist/components/sandbox-iframe.d.ts.map +1 -0
  41. package/dist/components/sandbox-iframe.js +131 -0
  42. package/dist/components/sandbox-iframe.js.map +1 -0
  43. package/dist/converters/auto-detect/auto-detect.d.ts +13 -0
  44. package/dist/converters/auto-detect/auto-detect.d.ts.map +1 -0
  45. package/dist/converters/auto-detect/auto-detect.js +224 -0
  46. package/dist/converters/auto-detect/auto-detect.js.map +1 -0
  47. package/dist/converters/auto-detect/index.d.ts +3 -0
  48. package/dist/converters/auto-detect/index.d.ts.map +1 -0
  49. package/dist/converters/auto-detect/index.js +2 -0
  50. package/dist/converters/auto-detect/index.js.map +1 -0
  51. package/dist/converters/codepen/codepen-converter.d.ts +9 -0
  52. package/dist/converters/codepen/codepen-converter.d.ts.map +1 -0
  53. package/dist/converters/codepen/codepen-converter.js +99 -0
  54. package/dist/converters/codepen/codepen-converter.js.map +1 -0
  55. package/dist/converters/codepen/index.d.ts +2 -0
  56. package/dist/converters/codepen/index.d.ts.map +1 -0
  57. package/dist/converters/codepen/index.js +2 -0
  58. package/dist/converters/codepen/index.js.map +1 -0
  59. package/dist/converters/gist/gist-converter.d.ts +31 -0
  60. package/dist/converters/gist/gist-converter.d.ts.map +1 -0
  61. package/dist/converters/gist/gist-converter.js +162 -0
  62. package/dist/converters/gist/gist-converter.js.map +1 -0
  63. package/dist/converters/gist/index.d.ts +2 -0
  64. package/dist/converters/gist/index.d.ts.map +1 -0
  65. package/dist/converters/gist/index.js +2 -0
  66. package/dist/converters/gist/index.js.map +1 -0
  67. package/dist/converters/shared/html-parser.d.ts +4 -0
  68. package/dist/converters/shared/html-parser.d.ts.map +1 -0
  69. package/dist/converters/shared/html-parser.js +39 -0
  70. package/dist/converters/shared/html-parser.js.map +1 -0
  71. package/dist/converters/shared/index.d.ts +4 -0
  72. package/dist/converters/shared/index.d.ts.map +1 -0
  73. package/dist/converters/shared/index.js +3 -0
  74. package/dist/converters/shared/index.js.map +1 -0
  75. package/dist/converters/shared/sanitization.d.ts +5 -0
  76. package/dist/converters/shared/sanitization.d.ts.map +1 -0
  77. package/dist/converters/shared/sanitization.js +176 -0
  78. package/dist/converters/shared/sanitization.js.map +1 -0
  79. package/dist/converters/shared/types.d.ts +23 -0
  80. package/dist/converters/shared/types.d.ts.map +1 -0
  81. package/dist/converters/shared/types.js +2 -0
  82. package/dist/converters/shared/types.js.map +1 -0
  83. package/dist/core/index.d.ts +13 -0
  84. package/dist/core/index.d.ts.map +1 -0
  85. package/dist/core/index.js +10 -0
  86. package/dist/core/index.js.map +1 -0
  87. package/dist/frameworks/__tests__/file-utils.test.d.ts +2 -0
  88. package/dist/frameworks/__tests__/file-utils.test.d.ts.map +1 -0
  89. package/dist/frameworks/__tests__/file-utils.test.js +408 -0
  90. package/dist/frameworks/__tests__/file-utils.test.js.map +1 -0
  91. package/dist/frameworks/__tests__/sandpack-wrapper.test.d.ts +2 -0
  92. package/dist/frameworks/__tests__/sandpack-wrapper.test.d.ts.map +1 -0
  93. package/dist/frameworks/__tests__/sandpack-wrapper.test.js +147 -0
  94. package/dist/frameworks/__tests__/sandpack-wrapper.test.js.map +1 -0
  95. package/dist/frameworks/file-utils.d.ts +20 -0
  96. package/dist/frameworks/file-utils.d.ts.map +1 -0
  97. package/dist/frameworks/file-utils.js +293 -0
  98. package/dist/frameworks/file-utils.js.map +1 -0
  99. package/dist/frameworks/framework-detector.d.ts +5 -0
  100. package/dist/frameworks/framework-detector.d.ts.map +1 -0
  101. package/dist/frameworks/framework-detector.js +117 -0
  102. package/dist/frameworks/framework-detector.js.map +1 -0
  103. package/dist/frameworks/index.d.ts +6 -0
  104. package/dist/frameworks/index.d.ts.map +1 -0
  105. package/dist/frameworks/index.js +5 -0
  106. package/dist/frameworks/index.js.map +1 -0
  107. package/dist/frameworks/sandpack-wrapper.d.ts +28 -0
  108. package/dist/frameworks/sandpack-wrapper.d.ts.map +1 -0
  109. package/dist/frameworks/sandpack-wrapper.js +55 -0
  110. package/dist/frameworks/sandpack-wrapper.js.map +1 -0
  111. package/dist/frameworks/templates/index.d.ts +8 -0
  112. package/dist/frameworks/templates/index.d.ts.map +1 -0
  113. package/dist/frameworks/templates/index.js +29 -0
  114. package/dist/frameworks/templates/index.js.map +1 -0
  115. package/dist/frameworks/templates/react-template.d.ts +3 -0
  116. package/dist/frameworks/templates/react-template.d.ts.map +1 -0
  117. package/dist/frameworks/templates/react-template.js +376 -0
  118. package/dist/frameworks/templates/react-template.js.map +1 -0
  119. package/dist/frameworks/templates/svelte-template.d.ts +3 -0
  120. package/dist/frameworks/templates/svelte-template.d.ts.map +1 -0
  121. package/dist/frameworks/templates/svelte-template.js +373 -0
  122. package/dist/frameworks/templates/svelte-template.js.map +1 -0
  123. package/dist/frameworks/templates/vanilla-template.d.ts +3 -0
  124. package/dist/frameworks/templates/vanilla-template.d.ts.map +1 -0
  125. package/dist/frameworks/templates/vanilla-template.js +455 -0
  126. package/dist/frameworks/templates/vanilla-template.js.map +1 -0
  127. package/dist/frameworks/templates/vue-template.d.ts +3 -0
  128. package/dist/frameworks/templates/vue-template.d.ts.map +1 -0
  129. package/dist/frameworks/templates/vue-template.js +388 -0
  130. package/dist/frameworks/templates/vue-template.js.map +1 -0
  131. package/dist/frameworks/types.d.ts +57 -0
  132. package/dist/frameworks/types.d.ts.map +1 -0
  133. package/dist/frameworks/types.js +2 -0
  134. package/dist/frameworks/types.js.map +1 -0
  135. package/dist/index.d.ts +7 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +7 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/lib/performance-tracker.d.ts +45 -0
  140. package/dist/lib/performance-tracker.d.ts.map +1 -0
  141. package/dist/lib/performance-tracker.js +165 -0
  142. package/dist/lib/performance-tracker.js.map +1 -0
  143. package/dist/lib/sandbox-cache.d.ts +24 -0
  144. package/dist/lib/sandbox-cache.d.ts.map +1 -0
  145. package/dist/lib/sandbox-cache.js +138 -0
  146. package/dist/lib/sandbox-cache.js.map +1 -0
  147. package/dist/locales/de.json +72 -0
  148. package/dist/locales/en.json +72 -0
  149. package/dist/locales/index.d.ts +148 -0
  150. package/dist/locales/index.d.ts.map +1 -0
  151. package/dist/locales/index.js +7 -0
  152. package/dist/locales/index.js.map +1 -0
  153. package/dist/performance/sandpack-bundle-cache.d.ts +19 -0
  154. package/dist/performance/sandpack-bundle-cache.d.ts.map +1 -0
  155. package/dist/performance/sandpack-bundle-cache.js +48 -0
  156. package/dist/performance/sandpack-bundle-cache.js.map +1 -0
  157. package/dist/sandbox-config.d.ts +4 -0
  158. package/dist/sandbox-config.d.ts.map +1 -0
  159. package/dist/sandbox-config.js +235 -0
  160. package/dist/sandbox-config.js.map +1 -0
  161. package/dist/storage/__tests__/indexeddb-adapter.test.d.ts +2 -0
  162. package/dist/storage/__tests__/indexeddb-adapter.test.d.ts.map +1 -0
  163. package/dist/storage/__tests__/indexeddb-adapter.test.js +192 -0
  164. package/dist/storage/__tests__/indexeddb-adapter.test.js.map +1 -0
  165. package/dist/storage/__tests__/project-manager.test.d.ts +2 -0
  166. package/dist/storage/__tests__/project-manager.test.d.ts.map +1 -0
  167. package/dist/storage/__tests__/project-manager.test.js +266 -0
  168. package/dist/storage/__tests__/project-manager.test.js.map +1 -0
  169. package/dist/storage/index.d.ts +5 -0
  170. package/dist/storage/index.d.ts.map +1 -0
  171. package/dist/storage/index.js +4 -0
  172. package/dist/storage/index.js.map +1 -0
  173. package/dist/storage/indexeddb-adapter.d.ts +18 -0
  174. package/dist/storage/indexeddb-adapter.d.ts.map +1 -0
  175. package/dist/storage/indexeddb-adapter.js +232 -0
  176. package/dist/storage/indexeddb-adapter.js.map +1 -0
  177. package/dist/storage/project-manager.d.ts +35 -0
  178. package/dist/storage/project-manager.d.ts.map +1 -0
  179. package/dist/storage/project-manager.js +213 -0
  180. package/dist/storage/project-manager.js.map +1 -0
  181. package/dist/storage/types.d.ts +59 -0
  182. package/dist/storage/types.d.ts.map +1 -0
  183. package/dist/storage/types.js +2 -0
  184. package/dist/storage/types.js.map +1 -0
  185. package/dist/storage/zip-handler.d.ts +5 -0
  186. package/dist/storage/zip-handler.d.ts.map +1 -0
  187. package/dist/storage/zip-handler.js +200 -0
  188. package/dist/storage/zip-handler.js.map +1 -0
  189. package/dist/types/sandbox-types.d.ts +54 -0
  190. package/dist/types/sandbox-types.d.ts.map +1 -0
  191. package/dist/types/sandbox-types.js +2 -0
  192. package/dist/types/sandbox-types.js.map +1 -0
  193. package/dist/utils/__tests__/converters/auto-detect.test.d.ts +2 -0
  194. package/dist/utils/__tests__/converters/auto-detect.test.d.ts.map +1 -0
  195. package/dist/utils/__tests__/converters/auto-detect.test.js +381 -0
  196. package/dist/utils/__tests__/converters/auto-detect.test.js.map +1 -0
  197. package/dist/utils/__tests__/converters/codepen-converter.test.d.ts +2 -0
  198. package/dist/utils/__tests__/converters/codepen-converter.test.d.ts.map +1 -0
  199. package/dist/utils/__tests__/converters/codepen-converter.test.js +408 -0
  200. package/dist/utils/__tests__/converters/codepen-converter.test.js.map +1 -0
  201. package/dist/utils/__tests__/converters/gist-converter.test.d.ts +2 -0
  202. package/dist/utils/__tests__/converters/gist-converter.test.d.ts.map +1 -0
  203. package/dist/utils/__tests__/converters/gist-converter.test.js +458 -0
  204. package/dist/utils/__tests__/converters/gist-converter.test.js.map +1 -0
  205. package/dist/utils/__tests__/converters/html-parser.test.d.ts +2 -0
  206. package/dist/utils/__tests__/converters/html-parser.test.d.ts.map +1 -0
  207. package/dist/utils/__tests__/converters/html-parser.test.js +285 -0
  208. package/dist/utils/__tests__/converters/html-parser.test.js.map +1 -0
  209. package/dist/utils/__tests__/converters/sanitization.test.d.ts +2 -0
  210. package/dist/utils/__tests__/converters/sanitization.test.d.ts.map +1 -0
  211. package/dist/utils/__tests__/converters/sanitization.test.js +210 -0
  212. package/dist/utils/__tests__/converters/sanitization.test.js.map +1 -0
  213. package/dist/utils/auto-resize-script.d.ts +4 -0
  214. package/dist/utils/auto-resize-script.d.ts.map +1 -0
  215. package/dist/utils/auto-resize-script.js +125 -0
  216. package/dist/utils/auto-resize-script.js.map +1 -0
  217. package/dist/widgets/banner/BannerWidget.d.ts +15 -0
  218. package/dist/widgets/banner/BannerWidget.d.ts.map +1 -0
  219. package/dist/widgets/banner/BannerWidget.js +33 -0
  220. package/dist/widgets/banner/BannerWidget.js.map +1 -0
  221. package/dist/widgets/form/FormWidget.d.ts +23 -0
  222. package/dist/widgets/form/FormWidget.d.ts.map +1 -0
  223. package/dist/widgets/form/FormWidget.js +42 -0
  224. package/dist/widgets/form/FormWidget.js.map +1 -0
  225. package/dist/widgets/index.d.ts +8 -0
  226. package/dist/widgets/index.d.ts.map +1 -0
  227. package/dist/widgets/index.js +28 -0
  228. package/dist/widgets/index.js.map +1 -0
  229. package/dist/widgets/types.d.ts +28 -0
  230. package/dist/widgets/types.d.ts.map +1 -0
  231. package/dist/widgets/types.js +2 -0
  232. package/dist/widgets/types.js.map +1 -0
  233. package/package.json +116 -0
@@ -0,0 +1,281 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { describe, it, expect, vi } from 'vitest';
3
+ import { render, screen, waitFor } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+ import { SandboxComponent } from '../components/sandbox-component';
6
+ const mockDependencies = {
7
+ designSystem: {
8
+ fonts: {},
9
+ colors: {},
10
+ spacing: {},
11
+ layout: {
12
+ grid: {
13
+ presets: {},
14
+ },
15
+ },
16
+ },
17
+ utils: {
18
+ getPresetValue: () => ({ top: 0, right: 0, bottom: 0, left: 0 }),
19
+ getGapValue: () => ({ row: 0, column: 0 }),
20
+ resolveGridPreset: () => ({ columns: 12, gap: { row: 0, column: 0 } }),
21
+ },
22
+ };
23
+ describe('SandboxComponent', () => {
24
+ const mockData = {
25
+ id: 'sandbox-1',
26
+ htmlCode: '<div>Test HTML</div>',
27
+ cssCode: '.test { color: red; }',
28
+ jsCode: 'console.log("test");',
29
+ height: 400,
30
+ autoResize: true,
31
+ maxHeight: 1200,
32
+ executionTimeout: 5000,
33
+ showBadge: true,
34
+ };
35
+ const defaultProps = {
36
+ data: mockData,
37
+ language: 'en',
38
+ isEditorMode: false,
39
+ dependencies: mockDependencies,
40
+ };
41
+ it('should render loading state initially', () => {
42
+ render(_jsx(SandboxComponent, { ...defaultProps }));
43
+ expect(screen.getByText('Loading sandbox...')).toBeInTheDocument();
44
+ });
45
+ it('should render iframe after client-side initialization', async () => {
46
+ render(_jsx(SandboxComponent, { ...defaultProps }));
47
+ await waitFor(() => {
48
+ const iframe = screen.getByTitle('Sandbox Preview');
49
+ expect(iframe).toBeInTheDocument();
50
+ });
51
+ });
52
+ it('should display badge in editor mode when showBadge is true', async () => {
53
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, data: { ...mockData, showBadge: true } }));
54
+ await waitFor(() => {
55
+ expect(screen.getByText('🔒 Sandboxed Content')).toBeInTheDocument();
56
+ });
57
+ });
58
+ it('should not display badge when showBadge is false', async () => {
59
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, data: { ...mockData, showBadge: false } }));
60
+ await waitFor(() => {
61
+ expect(screen.queryByText('🔒 Sandboxed Content')).not.toBeInTheDocument();
62
+ });
63
+ });
64
+ it('should not display badge in non-editor mode', async () => {
65
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: false, data: { ...mockData, showBadge: true } }));
66
+ await waitFor(() => {
67
+ expect(screen.queryByText('🔒 Sandboxed Content')).not.toBeInTheDocument();
68
+ });
69
+ });
70
+ it('should handle separate input mode', async () => {
71
+ const data = {
72
+ ...mockData,
73
+ inputMode: 'separate',
74
+ };
75
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
76
+ await waitFor(() => {
77
+ const iframe = screen.getByTitle('Sandbox Preview');
78
+ const srcdoc = iframe.getAttribute('srcdoc');
79
+ expect(srcdoc).toContain(data.htmlCode);
80
+ expect(srcdoc).toContain(data.cssCode);
81
+ expect(srcdoc).toContain(data.jsCode);
82
+ });
83
+ });
84
+ it('should handle combined input mode', async () => {
85
+ const combinedCode = `<!DOCTYPE html>
86
+ <html>
87
+ <head>
88
+ <style>.test { color: blue; }</style>
89
+ </head>
90
+ <body>
91
+ <div class="test">Combined HTML</div>
92
+ <script>console.log("combined");</script>
93
+ </body>
94
+ </html>`;
95
+ const data = {
96
+ ...mockData,
97
+ inputMode: 'combined',
98
+ combinedCode,
99
+ };
100
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
101
+ await waitFor(() => {
102
+ const iframe = screen.getByTitle('Sandbox Preview');
103
+ const srcdoc = iframe.getAttribute('srcdoc');
104
+ expect(srcdoc).toContain('Combined HTML');
105
+ expect(srcdoc).toContain('color: blue');
106
+ });
107
+ });
108
+ it('should parse external libraries from multi-line string', async () => {
109
+ const data = {
110
+ ...mockData,
111
+ externalLibraries: 'https://cdn.tailwindcss.com\nhttps://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js',
112
+ };
113
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
114
+ await waitFor(() => {
115
+ const iframe = screen.getByTitle('Sandbox Preview');
116
+ const srcdoc = iframe.getAttribute('srcdoc');
117
+ expect(srcdoc).toContain('cdn.tailwindcss.com');
118
+ expect(srcdoc).toContain('jquery');
119
+ });
120
+ });
121
+ it('should handle empty external libraries', async () => {
122
+ const data = {
123
+ ...mockData,
124
+ externalLibraries: '',
125
+ };
126
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
127
+ await waitFor(() => {
128
+ const iframe = screen.getByTitle('Sandbox Preview');
129
+ expect(iframe).toBeInTheDocument();
130
+ });
131
+ });
132
+ it('should display error when error occurs', async () => {
133
+ render(_jsx(SandboxComponent, { ...defaultProps }));
134
+ await waitFor(() => {
135
+ const iframe = screen.getByTitle('Sandbox Preview');
136
+ expect(iframe).toBeInTheDocument();
137
+ });
138
+ const errorMessage = {
139
+ type: 'error',
140
+ message: 'Test error message',
141
+ timestamp: Date.now(),
142
+ };
143
+ window.dispatchEvent(new MessageEvent('message', { data: errorMessage }));
144
+ await waitFor(() => {
145
+ expect(screen.getByText(/Test error message/)).toBeInTheDocument();
146
+ });
147
+ });
148
+ it('should show debug info when selected in editor mode', async () => {
149
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, isSelected: true }));
150
+ await waitFor(() => {
151
+ expect(screen.getByText(/Mode:/)).toBeInTheDocument();
152
+ expect(screen.getByText(/Height:/)).toBeInTheDocument();
153
+ expect(screen.getByText(/Auto-resize:/)).toBeInTheDocument();
154
+ expect(screen.getByText(/Timeout:/)).toBeInTheDocument();
155
+ });
156
+ });
157
+ it('should not show debug info when not selected', async () => {
158
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, isSelected: false }));
159
+ await waitFor(() => {
160
+ expect(screen.queryByText(/Mode:/)).not.toBeInTheDocument();
161
+ });
162
+ });
163
+ it('should call onClick when clicked', async () => {
164
+ const onClick = vi.fn();
165
+ const user = userEvent.setup();
166
+ render(_jsx(SandboxComponent, { ...defaultProps, onClick: onClick }));
167
+ await waitFor(() => {
168
+ const container = screen.getByTitle('Sandbox Preview').parentElement;
169
+ expect(container).toBeInTheDocument();
170
+ });
171
+ const container = screen.getByTitle('Sandbox Preview').parentElement;
172
+ await user.click(container);
173
+ expect(onClick).toHaveBeenCalled();
174
+ });
175
+ it('should show selection outline when isSelected is true', async () => {
176
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, isSelected: true }));
177
+ await waitFor(() => {
178
+ const container = screen.getByTitle('Sandbox Preview').parentElement;
179
+ expect(container).toHaveStyle({ outline: '2px solid #3b82f6' });
180
+ });
181
+ });
182
+ it('should not show selection outline when isSelected is false', async () => {
183
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, isSelected: false }));
184
+ await waitFor(() => {
185
+ const container = screen.getByTitle('Sandbox Preview').parentElement;
186
+ expect(container).toHaveStyle({ outline: 'none' });
187
+ });
188
+ });
189
+ it('should handle converter mode with placeholder', async () => {
190
+ const data = {
191
+ ...mockData,
192
+ inputMode: 'converter',
193
+ pasteCode: 'Some pasted code',
194
+ };
195
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
196
+ await waitFor(() => {
197
+ const iframe = screen.getByTitle('Sandbox Preview');
198
+ const srcdoc = iframe.getAttribute('srcdoc');
199
+ expect(srcdoc).toContain('Converter mode coming soon');
200
+ });
201
+ });
202
+ it('should update height when height change event occurs', async () => {
203
+ render(_jsx(SandboxComponent, { ...defaultProps, isEditorMode: true, isSelected: true }));
204
+ await waitFor(() => {
205
+ const iframe = screen.getByTitle('Sandbox Preview');
206
+ expect(iframe).toBeInTheDocument();
207
+ });
208
+ const resizeMessage = {
209
+ type: 'resize',
210
+ height: 600,
211
+ timestamp: Date.now(),
212
+ };
213
+ window.dispatchEvent(new MessageEvent('message', { data: resizeMessage }));
214
+ await waitFor(() => {
215
+ expect(screen.getByText(/Height: 600px/)).toBeInTheDocument();
216
+ });
217
+ });
218
+ it('should extract CSS from combined HTML', async () => {
219
+ const combinedCode = `
220
+ <!DOCTYPE html>
221
+ <html>
222
+ <head>
223
+ <style>
224
+ .extracted { color: green; }
225
+ .another { font-size: 20px; }
226
+ </style>
227
+ </head>
228
+ <body>
229
+ <div>Content</div>
230
+ </body>
231
+ </html>`;
232
+ const data = {
233
+ ...mockData,
234
+ inputMode: 'combined',
235
+ combinedCode,
236
+ };
237
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
238
+ await waitFor(() => {
239
+ const iframe = screen.getByTitle('Sandbox Preview');
240
+ const srcdoc = iframe.getAttribute('srcdoc');
241
+ expect(srcdoc).toContain('.extracted');
242
+ expect(srcdoc).toContain('color: green');
243
+ });
244
+ });
245
+ it('should extract JavaScript from combined HTML', async () => {
246
+ const combinedCode = `
247
+ <!DOCTYPE html>
248
+ <html>
249
+ <body>
250
+ <div>Content</div>
251
+ <script>
252
+ const test = 'extracted';
253
+ console.log(test);
254
+ </script>
255
+ </body>
256
+ </html>`;
257
+ const data = {
258
+ ...mockData,
259
+ inputMode: 'combined',
260
+ combinedCode,
261
+ };
262
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data }));
263
+ await waitFor(() => {
264
+ const iframe = screen.getByTitle('Sandbox Preview');
265
+ const srcdoc = iframe.getAttribute('srcdoc');
266
+ expect(srcdoc).toContain('extracted');
267
+ expect(srcdoc).toContain('console.log');
268
+ });
269
+ });
270
+ it('should show libraries count in debug info when libraries are loaded', async () => {
271
+ const data = {
272
+ ...mockData,
273
+ externalLibraries: 'https://cdn.tailwindcss.com\nhttps://cdn.jsdelivr.net/npm/jquery',
274
+ };
275
+ render(_jsx(SandboxComponent, { ...defaultProps, data: data, isEditorMode: true, isSelected: true }));
276
+ await waitFor(() => {
277
+ expect(screen.getByText(/Libraries: 2 loaded/)).toBeInTheDocument();
278
+ });
279
+ });
280
+ });
281
+ //# sourceMappingURL=sandbox-component.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-component.test.js","sourceRoot":"","sources":["../../src/__tests__/sandbox-component.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sandbox-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sandbox-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { sandboxPluginConfig } from '../sandbox-config';
3
+ import { SandboxComponent } from '../components/sandbox-component';
4
+ describe('sandboxPluginConfig', () => {
5
+ it('should have correct plugin metadata', () => {
6
+ expect(sandboxPluginConfig.id).toBe('sandbox');
7
+ expect(sandboxPluginConfig.name).toBe('Sandbox');
8
+ expect(sandboxPluginConfig.version).toBe('0.1.0');
9
+ expect(sandboxPluginConfig.category).toBe('advanced');
10
+ expect(sandboxPluginConfig.component).toBe(SandboxComponent);
11
+ });
12
+ it('should have SSR disabled', () => {
13
+ expect(sandboxPluginConfig.ssr).toBe(false);
14
+ });
15
+ it('should be responsive enabled', () => {
16
+ expect(sandboxPluginConfig.responsive).toBe(true);
17
+ });
18
+ it('should have correct capabilities', () => {
19
+ const { capabilities } = sandboxPluginConfig;
20
+ expect(capabilities.supportsChildren).toBe(false);
21
+ expect(capabilities.isRootComponent).toBe(false);
22
+ expect(capabilities.requiresParent).toBe(true);
23
+ expect(capabilities.childrenType).toBe(null);
24
+ expect(capabilities.allowedParentPlugins).toEqual(['base-container']);
25
+ expect(capabilities.allowedChildPlugins).toEqual([]);
26
+ expect(capabilities.maxChildren).toBe(0);
27
+ expect(capabilities.minChildren).toBe(0);
28
+ });
29
+ it('should have 11 properties defined', () => {
30
+ expect(sandboxPluginConfig.properties).toHaveLength(11);
31
+ });
32
+ it('should have content properties', () => {
33
+ const contentProps = sandboxPluginConfig.properties.filter((p) => p.category === 'content');
34
+ expect(contentProps).toHaveLength(4);
35
+ expect(contentProps.map((p) => p.key)).toContain('htmlCode');
36
+ expect(contentProps.map((p) => p.key)).toContain('cssCode');
37
+ expect(contentProps.map((p) => p.key)).toContain('jsCode');
38
+ expect(contentProps.map((p) => p.key)).toContain('externalLibraries');
39
+ });
40
+ it('should have layout properties', () => {
41
+ const layoutProps = sandboxPluginConfig.properties.filter((p) => p.category === 'layout');
42
+ expect(layoutProps).toHaveLength(3);
43
+ expect(layoutProps.map((p) => p.key)).toContain('height');
44
+ expect(layoutProps.map((p) => p.key)).toContain('autoResize');
45
+ expect(layoutProps.map((p) => p.key)).toContain('maxHeight');
46
+ });
47
+ it('should have advanced properties', () => {
48
+ const advancedProps = sandboxPluginConfig.properties.filter((p) => p.category === 'advanced');
49
+ expect(advancedProps).toHaveLength(4);
50
+ expect(advancedProps.map((p) => p.key)).toContain('inputMode');
51
+ expect(advancedProps.map((p) => p.key)).toContain('executionTimeout');
52
+ expect(advancedProps.map((p) => p.key)).toContain('combinedCode');
53
+ expect(advancedProps.map((p) => p.key)).toContain('showBadge');
54
+ });
55
+ it('should have correct default values', () => {
56
+ const { defaults } = sandboxPluginConfig;
57
+ expect(defaults.htmlCode).toContain('Hello Sandbox');
58
+ expect(defaults.cssCode).toContain('.demo');
59
+ expect(defaults.jsCode).toContain('console.log');
60
+ expect(defaults.height).toBe(400);
61
+ expect(defaults.autoResize).toBe(true);
62
+ expect(defaults.maxHeight).toBe(1200);
63
+ expect(defaults.showBadge).toBe(true);
64
+ expect(defaults.inputMode).toBe('separate');
65
+ expect(defaults.executionTimeout).toBe(5000);
66
+ });
67
+ it('should have quick priority properties', () => {
68
+ const quickProps = sandboxPluginConfig.properties.filter((p) => p.priority === 'quick');
69
+ expect(quickProps.length).toBeGreaterThan(0);
70
+ expect(quickProps.map((p) => p.key)).toContain('htmlCode');
71
+ expect(quickProps.map((p) => p.key)).toContain('cssCode');
72
+ expect(quickProps.map((p) => p.key)).toContain('jsCode');
73
+ });
74
+ it('should have common priority properties', () => {
75
+ const commonProps = sandboxPluginConfig.properties.filter((p) => p.priority === 'common');
76
+ expect(commonProps.length).toBeGreaterThan(0);
77
+ expect(commonProps.map((p) => p.key)).toContain('height');
78
+ expect(commonProps.map((p) => p.key)).toContain('autoResize');
79
+ });
80
+ it('should have advanced priority properties', () => {
81
+ const advancedProps = sandboxPluginConfig.properties.filter((p) => p.priority === 'advanced');
82
+ expect(advancedProps.length).toBeGreaterThan(0);
83
+ expect(advancedProps.map((p) => p.key)).toContain('maxHeight');
84
+ expect(advancedProps.map((p) => p.key)).toContain('showBadge');
85
+ expect(advancedProps.map((p) => p.key)).toContain('inputMode');
86
+ expect(advancedProps.map((p) => p.key)).toContain('executionTimeout');
87
+ });
88
+ it('should have textarea controls for code properties', () => {
89
+ const codeProps = ['htmlCode', 'cssCode', 'jsCode'];
90
+ codeProps.forEach((key) => {
91
+ const prop = sandboxPluginConfig.properties.find((p) => p.key === key);
92
+ expect(prop?.ui?.control).toBe('textarea');
93
+ expect(prop?.ui?.textarea?.rows).toBeGreaterThan(0);
94
+ expect(prop?.ui?.textarea?.autoResize).toBe(true);
95
+ });
96
+ });
97
+ it('should have number inputs for dimension properties', () => {
98
+ const dimensionProps = ['height', 'maxHeight', 'executionTimeout'];
99
+ dimensionProps.forEach((key) => {
100
+ const prop = sandboxPluginConfig.properties.find((p) => p.key === key);
101
+ expect(prop?.ui?.control).toBe('number-input');
102
+ expect(prop?.ui?.number).toBeDefined();
103
+ });
104
+ });
105
+ it('should have toggle controls for boolean properties', () => {
106
+ const booleanProps = ['autoResize', 'showBadge'];
107
+ booleanProps.forEach((key) => {
108
+ const prop = sandboxPluginConfig.properties.find((p) => p.key === key);
109
+ expect(prop?.type).toBe('toggle');
110
+ expect(prop?.ui?.control).toBe('toggle');
111
+ });
112
+ });
113
+ it('should have select control for inputMode', () => {
114
+ const prop = sandboxPluginConfig.properties.find((p) => p.key === 'inputMode');
115
+ expect(prop?.ui?.control).toBe('select');
116
+ expect(prop?.ui?.select?.options).toHaveLength(3);
117
+ expect(prop?.ui?.select?.options?.map((o) => o.value)).toContain('separate');
118
+ expect(prop?.ui?.select?.options?.map((o) => o.value)).toContain('combined');
119
+ expect(prop?.ui?.select?.options?.map((o) => o.value)).toContain('converter');
120
+ });
121
+ it('should have locales for en and de', () => {
122
+ expect(sandboxPluginConfig.locales).toHaveProperty('en');
123
+ expect(sandboxPluginConfig.locales).toHaveProperty('de');
124
+ });
125
+ it('should have plugin meta description', () => {
126
+ expect(sandboxPluginConfig.meta?.description).toContain('sandbox');
127
+ expect(sandboxPluginConfig.meta?.description).toContain('HTML');
128
+ expect(sandboxPluginConfig.meta?.tags).toContain('sandbox');
129
+ expect(sandboxPluginConfig.meta?.tags).toContain('iframe');
130
+ });
131
+ it('should have correct property types', () => {
132
+ const htmlProp = sandboxPluginConfig.properties.find((p) => p.key === 'htmlCode');
133
+ expect(htmlProp?.type).toBe('text');
134
+ const heightProp = sandboxPluginConfig.properties.find((p) => p.key === 'height');
135
+ expect(heightProp?.type).toBe('number');
136
+ const autoResizeProp = sandboxPluginConfig.properties.find((p) => p.key === 'autoResize');
137
+ expect(autoResizeProp?.type).toBe('toggle');
138
+ const modeProp = sandboxPluginConfig.properties.find((p) => p.key === 'inputMode');
139
+ expect(modeProp?.type).toBe('select');
140
+ });
141
+ it('should have display condition for combinedCode', () => {
142
+ const prop = sandboxPluginConfig.properties.find((p) => p.key === 'combinedCode');
143
+ expect(prop?.ui?.display?.condition).toBeDefined();
144
+ expect(prop?.ui?.display?.condition?.when).toBe('inputMode');
145
+ expect(prop?.ui?.display?.condition?.equals).toBe('combined');
146
+ });
147
+ });
148
+ //# sourceMappingURL=sandbox-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-config.test.js","sourceRoot":"","sources":["../../src/__tests__/sandbox-config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sandbox-iframe.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-iframe.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sandbox-iframe.test.tsx"],"names":[],"mappings":""}