@littlecarlito/blorktools 0.50.3 → 0.51.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 (114) hide show
  1. package/bin/cli.js +69 -0
  2. package/package.json +13 -7
  3. package/src/asset_debugger/axis-indicator/axis-indicator.css +6 -0
  4. package/src/asset_debugger/axis-indicator/axis-indicator.html +20 -0
  5. package/src/asset_debugger/axis-indicator/axis-indicator.js +822 -0
  6. package/src/asset_debugger/debugger-scene/debugger-scene.css +142 -0
  7. package/src/asset_debugger/debugger-scene/debugger-scene.html +80 -0
  8. package/src/asset_debugger/debugger-scene/debugger-scene.js +791 -0
  9. package/src/asset_debugger/header/header.css +73 -0
  10. package/src/asset_debugger/header/header.html +24 -0
  11. package/src/asset_debugger/header/header.js +224 -0
  12. package/src/asset_debugger/index.html +76 -0
  13. package/src/asset_debugger/landing-page/landing-page.css +396 -0
  14. package/src/asset_debugger/landing-page/landing-page.html +81 -0
  15. package/src/asset_debugger/landing-page/landing-page.js +611 -0
  16. package/src/asset_debugger/loading-splash/loading-splash.css +195 -0
  17. package/src/asset_debugger/loading-splash/loading-splash.html +22 -0
  18. package/src/asset_debugger/loading-splash/loading-splash.js +59 -0
  19. package/src/asset_debugger/loading-splash/preview-loading-splash.js +66 -0
  20. package/src/asset_debugger/main.css +14 -0
  21. package/src/asset_debugger/modals/examples-modal/examples-modal.css +41 -0
  22. package/src/asset_debugger/modals/examples-modal/examples-modal.html +18 -0
  23. package/src/asset_debugger/modals/examples-modal/examples-modal.js +111 -0
  24. package/src/asset_debugger/modals/examples-modal/examples.js +125 -0
  25. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.css +452 -0
  26. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.html +87 -0
  27. package/src/asset_debugger/modals/html-editor-modal/html-editor-modal.js +675 -0
  28. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.css +219 -0
  29. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.html +20 -0
  30. package/src/asset_debugger/modals/mesh-info-modal/mesh-info-modal.js +548 -0
  31. package/src/asset_debugger/modals/settings-modal/settings-modal.css +103 -0
  32. package/src/asset_debugger/modals/settings-modal/settings-modal.html +158 -0
  33. package/src/asset_debugger/modals/settings-modal/settings-modal.js +475 -0
  34. package/src/asset_debugger/panels/asset-panel/asset-panel.css +263 -0
  35. package/src/asset_debugger/panels/asset-panel/asset-panel.html +123 -0
  36. package/src/asset_debugger/panels/asset-panel/asset-panel.js +136 -0
  37. package/src/asset_debugger/panels/asset-panel/atlas-heading/atlas-heading.css +94 -0
  38. package/src/asset_debugger/panels/asset-panel/atlas-heading/atlas-heading.js +312 -0
  39. package/src/asset_debugger/panels/asset-panel/mesh-heading/mesh-heading.css +129 -0
  40. package/src/asset_debugger/panels/asset-panel/mesh-heading/mesh-heading.js +486 -0
  41. package/src/asset_debugger/panels/asset-panel/rig-heading/rig-heading.css +545 -0
  42. package/src/asset_debugger/panels/asset-panel/rig-heading/rig-heading.js +538 -0
  43. package/src/asset_debugger/panels/asset-panel/uv-heading/uv-heading.css +70 -0
  44. package/src/asset_debugger/panels/asset-panel/uv-heading/uv-heading.js +586 -0
  45. package/src/asset_debugger/panels/world-panel/world-panel.css +364 -0
  46. package/src/asset_debugger/panels/world-panel/world-panel.html +173 -0
  47. package/src/asset_debugger/panels/world-panel/world-panel.js +1891 -0
  48. package/src/asset_debugger/router.js +190 -0
  49. package/src/asset_debugger/util/animation/playback/animation-playback-controller.js +150 -0
  50. package/src/asset_debugger/util/animation/playback/animation-preview-controller.js +316 -0
  51. package/src/asset_debugger/util/animation/playback/css3d-bounce-controller.js +400 -0
  52. package/src/asset_debugger/util/animation/playback/css3d-reversal-controller.js +821 -0
  53. package/src/asset_debugger/util/animation/render/css3d-prerender-controller.js +696 -0
  54. package/src/asset_debugger/util/animation/render/debug-texture-factory.js +0 -0
  55. package/src/asset_debugger/util/animation/render/iframe2texture-render-controller.js +199 -0
  56. package/src/asset_debugger/util/animation/render/image2texture-prerender-controller.js +461 -0
  57. package/src/asset_debugger/util/animation/render/pbr-material-factory.js +82 -0
  58. package/src/asset_debugger/util/common.css +280 -0
  59. package/src/asset_debugger/util/data/animation-classifier.js +323 -0
  60. package/src/asset_debugger/util/data/duplicate-handler.js +20 -0
  61. package/src/asset_debugger/util/data/glb-buffer-manager.js +407 -0
  62. package/src/asset_debugger/util/data/glb-classifier.js +290 -0
  63. package/src/asset_debugger/util/data/html-formatter.js +76 -0
  64. package/src/asset_debugger/util/data/html-linter.js +276 -0
  65. package/src/asset_debugger/util/data/localstorage-manager.js +265 -0
  66. package/src/asset_debugger/util/data/mesh-html-manager.js +295 -0
  67. package/src/asset_debugger/util/data/string-serder.js +303 -0
  68. package/src/asset_debugger/util/data/texture-classifier.js +663 -0
  69. package/src/asset_debugger/util/data/upload/background-file-handler.js +292 -0
  70. package/src/asset_debugger/util/data/upload/dropzone-preview-controller.js +396 -0
  71. package/src/asset_debugger/util/data/upload/file-upload-manager.js +495 -0
  72. package/src/asset_debugger/util/data/upload/glb-file-handler.js +36 -0
  73. package/src/asset_debugger/util/data/upload/glb-preview-controller.js +317 -0
  74. package/src/asset_debugger/util/data/upload/lighting-file-handler.js +194 -0
  75. package/src/asset_debugger/util/data/upload/model-file-manager.js +104 -0
  76. package/src/asset_debugger/util/data/upload/texture-file-handler.js +166 -0
  77. package/src/asset_debugger/util/data/upload/zip-handler.js +686 -0
  78. package/src/asset_debugger/util/loaders/html2canvas-loader.js +107 -0
  79. package/src/asset_debugger/util/rig/bone-kinematics.js +403 -0
  80. package/src/asset_debugger/util/rig/rig-constraint-manager.js +618 -0
  81. package/src/asset_debugger/util/rig/rig-controller.js +612 -0
  82. package/src/asset_debugger/util/rig/rig-factory.js +628 -0
  83. package/src/asset_debugger/util/rig/rig-handle-factory.js +46 -0
  84. package/src/asset_debugger/util/rig/rig-label-factory.js +441 -0
  85. package/src/asset_debugger/util/rig/rig-mouse-handler.js +377 -0
  86. package/src/asset_debugger/util/rig/rig-state-manager.js +175 -0
  87. package/src/asset_debugger/util/rig/rig-tooltip-manager.js +267 -0
  88. package/src/asset_debugger/util/rig/rig-ui-factory.js +700 -0
  89. package/src/asset_debugger/util/scene/background-manager.js +284 -0
  90. package/src/asset_debugger/util/scene/camera-controller.js +243 -0
  91. package/src/asset_debugger/util/scene/css3d-debug-controller.js +406 -0
  92. package/src/asset_debugger/util/scene/css3d-frame-factory.js +113 -0
  93. package/src/asset_debugger/util/scene/css3d-scene-manager.js +529 -0
  94. package/src/asset_debugger/util/scene/glb-controller.js +208 -0
  95. package/src/asset_debugger/util/scene/lighting-manager.js +690 -0
  96. package/src/asset_debugger/util/scene/threejs-model-manager.js +437 -0
  97. package/src/asset_debugger/util/scene/threejs-preview-manager.js +207 -0
  98. package/src/asset_debugger/util/scene/threejs-preview-setup.js +478 -0
  99. package/src/asset_debugger/util/scene/threejs-scene-controller.js +286 -0
  100. package/src/asset_debugger/util/scene/ui-manager.js +107 -0
  101. package/src/asset_debugger/util/state/animation-state.js +128 -0
  102. package/src/asset_debugger/util/state/css3d-state.js +83 -0
  103. package/src/asset_debugger/util/state/glb-preview-state.js +31 -0
  104. package/src/asset_debugger/util/state/log-util.js +197 -0
  105. package/src/asset_debugger/util/state/scene-state.js +452 -0
  106. package/src/asset_debugger/util/state/threejs-state.js +54 -0
  107. package/src/asset_debugger/util/workers/lighting-worker.js +61 -0
  108. package/src/asset_debugger/util/workers/model-worker.js +109 -0
  109. package/src/asset_debugger/util/workers/texture-worker.js +54 -0
  110. package/src/asset_debugger/util/workers/worker-manager.js +212 -0
  111. package/src/asset_debugger/widgets/mesh-info-widget.js +280 -0
  112. package/src/index.html +261 -0
  113. package/src/index.js +8 -0
  114. package/vite.config.js +66 -0
@@ -0,0 +1,452 @@
1
+ /* HTML Editor Modal Styles */
2
+ #html-editor-reset {
3
+ display: none;
4
+ }
5
+
6
+ /* Base modal styles */
7
+ #html-editor-modal {
8
+ display: none;
9
+ }
10
+
11
+ #html-editor-modal.visible {
12
+ display: flex !important;
13
+ z-index: 3000; /* Ensure it's above other UI elements */
14
+ }
15
+
16
+ .modal-container {
17
+ width: 80%;
18
+ height: 85%;
19
+ max-width: 1000px;
20
+ max-height: 600px;
21
+ display: flex;
22
+ flex-direction: column;
23
+ }
24
+
25
+ /* Preview mode class-based styling */
26
+ .preview-mode .dropdowns-container {
27
+ display: none !important;
28
+ }
29
+
30
+ .preview-mode #html-editor-preview {
31
+ display: none !important;
32
+ }
33
+
34
+ .preview-mode #html-editor-reset {
35
+ display: inline-block !important;
36
+ }
37
+
38
+ /* CSS-based toggling for preview mode */
39
+ .preview-mode .editor-container {
40
+ display: none !important;
41
+ }
42
+
43
+ .preview-mode .html-editor-textarea {
44
+ display: none !important;
45
+ }
46
+
47
+ /* Ensure editor container is displayed properly when not in preview mode */
48
+ #html-editor-modal:not(.preview-mode) .editor-container {
49
+ display: flex !important;
50
+ }
51
+
52
+ #html-editor-modal:not(.preview-mode) .html-editor-textarea {
53
+ display: block !important;
54
+ }
55
+
56
+ #html-editor-modal:not(.preview-mode) .editor-preview-container {
57
+ display: none !important;
58
+ }
59
+
60
+ /* Dropdown container styling */
61
+ .dropdowns-container {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 8px;
65
+ padding: 8px 12px;
66
+ background-color: rgba(30, 30, 30, 0.5);
67
+ border-radius: 4px;
68
+ border: 1px solid var(--panel-border);
69
+ margin-right: 10px;
70
+ flex-wrap: wrap;
71
+ justify-content: center;
72
+ }
73
+
74
+ /* Dropdown hint text */
75
+ .dropdown-hint {
76
+ font-size: 12px;
77
+ color: var(--label-text);
78
+ white-space: nowrap;
79
+ font-style: italic;
80
+ }
81
+
82
+ /* Dropdown styling */
83
+ .editor-dropdown {
84
+ max-width: 60px;
85
+ font-size: 12px;
86
+ padding: 4px 8px;
87
+ background-color: var(--input-bg);
88
+ color: var(--input-text);
89
+ border: 1px solid var(--panel-border);
90
+ border-radius: 3px;
91
+ cursor: pointer;
92
+ transition: border-color 0.2s, box-shadow 0.2s;
93
+ }
94
+
95
+ #html-render-type {
96
+ max-width: 100px;
97
+ }
98
+
99
+ .editor-dropdown:hover {
100
+ border-color: var(--button-color);
101
+ }
102
+
103
+ .editor-dropdown:focus {
104
+ outline: none;
105
+ border-color: var(--button-color);
106
+ box-shadow: 0 0 0 2px rgba(30, 136, 229, 0.25);
107
+ }
108
+
109
+ /* Format button container */
110
+ .format-btn-container {
111
+ height: 40px;
112
+ background-color: rgba(30, 30, 30, 0.8);
113
+ border-bottom: 1px solid var(--panel-border);
114
+ display: flex;
115
+ justify-content: space-between;
116
+ align-items: center;
117
+ padding: 0 10px;
118
+ z-index: 10;
119
+ }
120
+
121
+ /* Checkbox group styling */
122
+ .checkbox-group {
123
+ display: flex;
124
+ align-items: center;
125
+ }
126
+
127
+ /* Checkbox styling in the format bar */
128
+ .format-btn-container .checkbox-container {
129
+ color: #ddd;
130
+ font-size: 12px;
131
+ margin-right: 8px;
132
+ }
133
+
134
+ .format-btn-container .checkbox-label {
135
+ font-weight: normal;
136
+ }
137
+
138
+ .html-editor-textarea {
139
+ width: 100%;
140
+ height: 100%; /* Take full height of parent */
141
+ padding: 10px;
142
+ font-family: monospace;
143
+ font-size: 14px;
144
+ line-height: 1.5;
145
+ color: var(--input-text);
146
+ background-color: var(--input-bg);
147
+ border: none;
148
+ resize: none;
149
+ box-sizing: border-box;
150
+ white-space: nowrap;
151
+ overflow-x: scroll;
152
+ overflow-y: auto;
153
+ min-height: 0; /* Important for proper flex behavior */
154
+ }
155
+
156
+ /* Format button styling */
157
+ .format-btn {
158
+ background-color: var(--button-color);
159
+ border: none;
160
+ color: white;
161
+ cursor: pointer;
162
+ font-size: 14px;
163
+ padding: 4px 12px;
164
+ font-family: monospace;
165
+ transition: all 0.2s ease;
166
+ border-radius: 3px;
167
+ font-weight: 500;
168
+ }
169
+
170
+ .format-btn:hover {
171
+ background-color: #0d74c7;
172
+ }
173
+
174
+ /* Editor container */
175
+ .editor-container {
176
+ position: relative;
177
+ border: 1px solid var(--panel-border);
178
+ margin: 10px 15px;
179
+ background-color: rgba(0, 0, 0, 0.2);
180
+ display: flex;
181
+ flex-direction: column;
182
+ min-height: 0; /* Important for proper flex behavior */
183
+ height: 80%; /* Take up 80% of the modal height */
184
+ }
185
+
186
+ /* Button styling */
187
+ .editor-btn {
188
+ padding: 6px 12px;
189
+ background-color: var(--button-color);
190
+ color: white;
191
+ border: none;
192
+ border-radius: 3px;
193
+ cursor: pointer;
194
+ font-size: 14px;
195
+ font-family: monospace;
196
+ transition: background-color 0.3s ease;
197
+ font-weight: bold;
198
+ min-width: 80px;
199
+ }
200
+
201
+ .editor-btn:hover {
202
+ background-color: #0d74c7;
203
+ }
204
+
205
+ /* Reset button styling */
206
+ #html-editor-reset {
207
+ display: none;
208
+ background-color: transparent !important;
209
+ border: 2px solid var(--button-color);
210
+ color: var(--button-color);
211
+ }
212
+
213
+ #html-editor-reset:hover {
214
+ background-color: var(--button-color) !important;
215
+ color: white;
216
+ }
217
+
218
+ /* Preview container */
219
+ .editor-preview-container {
220
+ flex: 0; /* Don't take up space when not displayed */
221
+ min-height: 0;
222
+ margin: 10px 0;
223
+ display: none; /* Hidden by default */
224
+ background-color: #000;
225
+ position: relative;
226
+ border: 1px solid var(--panel-border);
227
+ height: 0; /* Start with zero height when not in preview mode */
228
+ overflow: hidden;
229
+ }
230
+
231
+ /* When in preview mode, the container takes proper dimensions */
232
+ .preview-mode .editor-preview-container {
233
+ display: block;
234
+ height: 400px;
235
+ min-height: 400px;
236
+ overflow: visible;
237
+ }
238
+
239
+ .html-preview {
240
+ height: 100%;
241
+ display: flex;
242
+ justify-content: center;
243
+ align-items: center;
244
+ position: relative;
245
+ }
246
+
247
+ /* Status messages */
248
+ .editor-status {
249
+ padding: 5px 10px;
250
+ margin-right: 10px;
251
+ font-size: 14px;
252
+ flex-grow: 1;
253
+ }
254
+
255
+ .editor-status.error {
256
+ color: #e74c3c;
257
+ }
258
+
259
+ .editor-status.success {
260
+ color: #2ecc71;
261
+ }
262
+
263
+ .editor-status.info {
264
+ color: #3498db;
265
+ }
266
+
267
+ .editor-status.warning {
268
+ color: #f39c12;
269
+ }
270
+
271
+ /* Editor controls */
272
+ .editor-controls {
273
+ display: flex;
274
+ justify-content: space-between;
275
+ align-items: center;
276
+ width: 100%;
277
+ }
278
+
279
+ .editor-options {
280
+ display: flex;
281
+ justify-content: center;
282
+ gap: 10px;
283
+ margin-bottom: 10px;
284
+ flex-wrap: wrap;
285
+ align-items: center;
286
+ }
287
+
288
+ /* Error display - moved outside the editor container */
289
+ .html-editor-errors {
290
+ margin: 0 15px;
291
+ padding: 8px 12px;
292
+ background-color: #f8d7da;
293
+ color: #721c24;
294
+ font-size: 12px;
295
+ max-height: 60px;
296
+ overflow-y: auto;
297
+ border-bottom-left-radius: 4px;
298
+ border-bottom-right-radius: 4px;
299
+ border: 1px solid #f5c6cb;
300
+ border-top: none;
301
+ display: none; /* Hide by default */
302
+ }
303
+
304
+ /* Show errors when they exist */
305
+ .html-editor-errors:not(:empty) {
306
+ display: block;
307
+ }
308
+
309
+ .html-editor-textarea.has-errors {
310
+ border: 1px solid #e74c3c;
311
+ }
312
+
313
+ /* Preview error log */
314
+ .preview-error-log {
315
+ position: absolute;
316
+ bottom: 0;
317
+ left: 0;
318
+ right: 0;
319
+ background-color: rgba(231, 76, 60, 0.9);
320
+ color: white;
321
+ padding: 10px;
322
+ max-height: 100px;
323
+ overflow-y: auto;
324
+ font-family: monospace;
325
+ font-size: 12px;
326
+ display: none;
327
+ }
328
+
329
+ .error-entry {
330
+ margin-bottom: 5px;
331
+ word-break: break-word;
332
+ }
333
+
334
+ .error-time {
335
+ font-weight: bold;
336
+ color: #f8f9fa;
337
+ }
338
+
339
+ /* Mobile responsiveness */
340
+ @media (max-width: 768px) {
341
+ .editor-options {
342
+ flex-direction: column;
343
+ }
344
+
345
+ .dropdown-container {
346
+ width: 100%;
347
+ }
348
+ }
349
+
350
+ /* Preview Info Panel Styles */
351
+ #preview-info-panel {
352
+ position: absolute;
353
+ z-index: 1000;
354
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
355
+ border: 1px solid var(--panel-border, rgba(50, 50, 50, 0.7));
356
+ border-radius: 5px;
357
+ overflow: hidden;
358
+ background-color: rgba(0, 0, 0, 0);
359
+ width: 250px;
360
+ transition: height 0.3s ease;
361
+ }
362
+
363
+ #preview-info-header {
364
+ background-color: rgba(30, 30, 30, 0.7);
365
+ color: white;
366
+ padding: 5px 10px;
367
+ cursor: grab;
368
+ user-select: none;
369
+ display: flex;
370
+ align-items: center;
371
+ justify-content: space-between;
372
+ width: 100%;
373
+ box-sizing: border-box;
374
+ }
375
+
376
+ #preview-info-header span.title {
377
+ font-weight: bold;
378
+ font-size: 12px;
379
+ }
380
+
381
+ #preview-info-header span.collapse-btn {
382
+ font-size: 12px;
383
+ cursor: pointer;
384
+ margin-left: 10px;
385
+ width: 15px;
386
+ text-align: center;
387
+ }
388
+
389
+ #preview-info-content {
390
+ background-color: rgba(20, 20, 20, 0.7);
391
+ color: white;
392
+ padding: 10px;
393
+ font-size: 12px;
394
+ max-height: 300px;
395
+ overflow-y: auto;
396
+ }
397
+
398
+ #preview-info-content strong {
399
+ color: #3498db;
400
+ font-weight: bold;
401
+ }
402
+
403
+ #preview-info-content ul {
404
+ margin: 0;
405
+ padding: 0 0 0 15px;
406
+ }
407
+
408
+ #preview-info-content li {
409
+ margin: 2px 0;
410
+ }
411
+
412
+ /* Style for bullet points */
413
+ #preview-info-content br + strong {
414
+ margin-top: 10px;
415
+ display: inline-block;
416
+ }
417
+
418
+ /* Preview options styling */
419
+ .preview-options {
420
+ display: flex;
421
+ align-items: center;
422
+ margin-left: 15px;
423
+ }
424
+
425
+ .checkbox-container {
426
+ display: flex;
427
+ align-items: center;
428
+ font-size: 12px;
429
+ color: var(--label-text);
430
+ cursor: pointer;
431
+ user-select: none;
432
+ }
433
+
434
+ .checkbox-container input[type="checkbox"] {
435
+ margin-right: 5px;
436
+ cursor: pointer;
437
+ }
438
+
439
+ .checkbox-label {
440
+ white-space: nowrap;
441
+ }
442
+
443
+ /* Hide border checkbox in preview mode */
444
+ .preview-mode .format-btn-container .checkbox-container {
445
+ display: none;
446
+ }
447
+
448
+ /* Hide animation dropdown when long-exposure-mode class is present */
449
+ #editor-dropdowns-container.long-exposure-mode .dropdown-hint:nth-child(5),
450
+ #editor-dropdowns-container.long-exposure-mode #html-animation-type {
451
+ display: none;
452
+ }
@@ -0,0 +1,87 @@
1
+ <!-- Link to external stylesheet -->
2
+ <link rel="stylesheet" href="/asset_debugger/modals/html-editor-modal/html-editor-modal.css">
3
+
4
+ <!-- Embedded HTML Editor Modal -->
5
+ <div id="html-editor-modal" class="modal-overlay">
6
+ <div class="modal-container">
7
+ <div class="modal-header">
8
+ <h3 class="modal-title">HTML Editor: <span id="html-editor-mesh-name"></span></h3>
9
+ <button class="modal-close" id="html-editor-close">&times;</button>
10
+ </div>
11
+
12
+ <div class="editor-controls">
13
+ <div class="editor-options">
14
+ <!-- Grouped dropdowns with hint text -->
15
+ <div id="editor-dropdowns-container" class="dropdowns-container">
16
+ <span class="dropdown-hint">Rendered using</span>
17
+ <select id="html-render-type" class="editor-dropdown">
18
+ <option value="threejs">img2texture</option>
19
+ <option value="css3d">CSS3D</option>
20
+ <option value="longExposure">Long Exposure</option>
21
+ </select>
22
+
23
+ <span class="dropdown-hint">at</span>
24
+ <select id="html-playback-speed" class="editor-dropdown">
25
+ <option value="0.25">x0.25</option>
26
+ <option value="0.5">x0.5</option>
27
+ <option value="0.75">x0.75</option>
28
+ <option value="1.0" selected>x1</option>
29
+ <option value="1.5">x1.5</option>
30
+ <option value="2.0">x2</option>
31
+ </select>
32
+
33
+ <span class="dropdown-hint">animated with</span>
34
+ <select id="html-animation-type" class="editor-dropdown">
35
+ <option value="play" selected>Play</option>
36
+ <option value="loop">Loop</option>
37
+ <option value="bounce">Bounce</option>
38
+ </select>
39
+ </div>
40
+
41
+ <!-- Preview options checkboxes -->
42
+ <div class="preview-options">
43
+ <!-- Removed duplicate checkbox -->
44
+ </div>
45
+ </div>
46
+ <!-- Buttons -->
47
+ <button id="html-editor-preview" class="editor-btn" title="Preview">Preview</button>
48
+ <button id="html-editor-reset" class="editor-btn" title="Reset">Reset</button>
49
+ </div>
50
+
51
+ <div class="editor-container">
52
+ <div class="format-btn-container">
53
+ <div class="checkbox-group">
54
+ <label class="checkbox-container">
55
+ <input type="checkbox" id="show-wireframe" checked>
56
+ <span class="checkbox-label">Show Borders</span>
57
+ </label>
58
+ <label class="checkbox-container">
59
+ <input type="checkbox" id="display-on-mesh">
60
+ <span class="checkbox-label">Display on Mesh</span>
61
+ </label>
62
+ <label class="checkbox-container">
63
+ <input type="checkbox" id="rig-control-node">
64
+ <span class="checkbox-label">Rig Control Node</span>
65
+ </label>
66
+ </div>
67
+ <button id="html-editor-format" class="format-btn" title="Format HTML">Format</button>
68
+ </div>
69
+ <textarea id="html-editor-textarea" class="code-editor html-editor-textarea" placeholder="Enter HTML code here..."></textarea>
70
+ </div>
71
+
72
+ <!-- Error messages container -->
73
+ <div class="html-editor-errors" id="html-editor-errors"></div>
74
+
75
+ <div class="editor-preview-container" id="html-preview-container">
76
+ <div id="html-preview-content" class="html-preview"></div>
77
+ </div>
78
+
79
+ <div class="modal-footer">
80
+ <div class="editor-status" id="html-editor-status"></div>
81
+ <div class="editor-buttons">
82
+ <button id="html-editor-cancel" class="modal-btn modal-btn-secondary">Cancel</button>
83
+ <button id="html-editor-apply" class="modal-btn modal-btn-primary">Save and Apply</button>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </div>