handler-playable-sdk 0.5.36 → 0.5.40
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.
- package/dist/ConfigOverride-V7DLPL5I.js +1 -0
- package/dist/chunk-HVKF2KYL.js +1 -0
- package/dist/{chunk-NHKCXBUZ.js → chunk-PW2FGMCO.js} +1 -1
- package/dist/{chunk-ROFM4I6A.js → chunk-WTWSWRFR.js} +175 -146
- package/dist/cli/brand-dna.mjs +1 -1
- package/dist/cli/canva-import.mjs +1 -1
- package/dist/cli/cleanup-assets.mjs +1 -1
- package/dist/cli/fix-scales.mjs +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/screen-helper.mjs +1 -1
- package/dist/cli/setup-library.mjs +1 -1
- package/dist/cli/student-helper.mjs +1 -1
- package/dist/cli/sync-screens.mjs +1 -1
- package/dist/cli/validate-assets.mjs +1 -1
- package/dist/cli/validate.mjs +1 -1
- package/dist/{config-OH6SMCBB.js → config-3JDCJ3GB.js} +1 -1
- package/dist/index.cjs +189 -160
- package/dist/index.css +242 -7
- package/dist/index.d.cts +30 -2
- package/dist/index.d.ts +30 -2
- package/dist/index.js +1 -1
- package/dist/pixi/index.cjs +11 -11
- package/dist/pixi/index.css +242 -7
- package/dist/pixi/index.js +1 -1
- package/dist/three/index.cjs +34 -34
- package/dist/three/index.css +242 -7
- package/dist/three/index.js +1 -1
- package/package.json +1 -1
- package/dist/ConfigOverride-X57ZHK2W.js +0 -1
- package/dist/chunk-C4GAOSNW.js +0 -1
package/dist/index.css
CHANGED
|
@@ -636,13 +636,6 @@
|
|
|
636
636
|
order: -1;
|
|
637
637
|
}
|
|
638
638
|
|
|
639
|
-
.scene-tools-title {
|
|
640
|
-
font-size: 12px;
|
|
641
|
-
font-weight: var(--font-weight-semibold);
|
|
642
|
-
color: var(--ui-text);
|
|
643
|
-
letter-spacing: 0.4px;
|
|
644
|
-
text-transform: uppercase;
|
|
645
|
-
}
|
|
646
639
|
|
|
647
640
|
.scene-tools-collapse-btn {
|
|
648
641
|
width: 24px;
|
|
@@ -846,6 +839,68 @@
|
|
|
846
839
|
gap: 8px;
|
|
847
840
|
}
|
|
848
841
|
|
|
842
|
+
/* Unsaved changes indicator */
|
|
843
|
+
.preview-unsaved-indicator {
|
|
844
|
+
font-size: 16px;
|
|
845
|
+
color: var(--ui-accent);
|
|
846
|
+
animation: preview-star-pulse 2s ease-in-out infinite;
|
|
847
|
+
display: inline-block;
|
|
848
|
+
margin-right: 4px;
|
|
849
|
+
line-height: 1;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
@keyframes preview-star-pulse {
|
|
853
|
+
0%, 100% {
|
|
854
|
+
opacity: 1;
|
|
855
|
+
transform: scale(1);
|
|
856
|
+
}
|
|
857
|
+
50% {
|
|
858
|
+
opacity: 0.7;
|
|
859
|
+
transform: scale(1.1);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
/* Save button in toolbar */
|
|
864
|
+
.preview-save-btn {
|
|
865
|
+
display: inline-flex;
|
|
866
|
+
align-items: center;
|
|
867
|
+
gap: 6px;
|
|
868
|
+
padding: 8px 12px;
|
|
869
|
+
background: linear-gradient(135deg, var(--ui-accent), var(--ui-accent-overlay-3));
|
|
870
|
+
color: var(--ui-black);
|
|
871
|
+
border: none;
|
|
872
|
+
border-radius: 6px;
|
|
873
|
+
font-size: 11px;
|
|
874
|
+
font-weight: 700;
|
|
875
|
+
letter-spacing: 0.02em;
|
|
876
|
+
cursor: pointer;
|
|
877
|
+
box-shadow: 0 2px 8px var(--ui-accent-overlay-1);
|
|
878
|
+
transition: all var(--ui-duration-fast) var(--ui-ease);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
.preview-save-btn:hover {
|
|
882
|
+
transform: translateY(-1px);
|
|
883
|
+
box-shadow: 0 4px 12px var(--ui-accent-overlay-2);
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
.preview-save-btn:active {
|
|
887
|
+
transform: translateY(0);
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
.preview-save-btn svg {
|
|
891
|
+
width: 14px;
|
|
892
|
+
height: 14px;
|
|
893
|
+
stroke-width: 2.5;
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
.preview-save-shortcut {
|
|
897
|
+
font-size: 9px;
|
|
898
|
+
opacity: 0.7;
|
|
899
|
+
font-weight: 600;
|
|
900
|
+
letter-spacing: 0.5px;
|
|
901
|
+
margin-left: 2px;
|
|
902
|
+
}
|
|
903
|
+
|
|
849
904
|
.view-toggle {
|
|
850
905
|
display: flex;
|
|
851
906
|
flex-direction: row;
|
|
@@ -1053,6 +1108,25 @@
|
|
|
1053
1108
|
color: #ff9500;
|
|
1054
1109
|
}
|
|
1055
1110
|
|
|
1111
|
+
.scene-object-badge.template {
|
|
1112
|
+
background: rgba(168, 85, 247, 0.18);
|
|
1113
|
+
color: #c084fc;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
.scene-templates-toggle {
|
|
1117
|
+
display: inline-flex;
|
|
1118
|
+
align-items: center;
|
|
1119
|
+
gap: 6px;
|
|
1120
|
+
font-size: 12px;
|
|
1121
|
+
color: var(--ui-text-secondary);
|
|
1122
|
+
margin-left: 10px;
|
|
1123
|
+
user-select: none;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
.scene-templates-toggle input[type="checkbox"] {
|
|
1127
|
+
accent-color: var(--ui-accent);
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1056
1130
|
.scene-object-group-system {
|
|
1057
1131
|
border-left: 3px solid #ff9500;
|
|
1058
1132
|
padding-left: 8px;
|
|
@@ -2591,6 +2665,7 @@
|
|
|
2591
2665
|
display: none;
|
|
2592
2666
|
}
|
|
2593
2667
|
|
|
2668
|
+
|
|
2594
2669
|
/* ========== 04-device-frame.css ========== */
|
|
2595
2670
|
/* 04 Device Frame */
|
|
2596
2671
|
/* Auto-generated from preview.css */
|
|
@@ -5232,6 +5307,166 @@
|
|
|
5232
5307
|
word-wrap: break-word;
|
|
5233
5308
|
}
|
|
5234
5309
|
|
|
5310
|
+
/* Add Object Menu modals – Screen picker & name prompt (hierarchy + Add) */
|
|
5311
|
+
.add-menu-modal-overlay {
|
|
5312
|
+
position: fixed;
|
|
5313
|
+
top: 0;
|
|
5314
|
+
left: 0;
|
|
5315
|
+
width: 100%;
|
|
5316
|
+
height: 100%;
|
|
5317
|
+
background-color: var(--ui-overlay-dark-4);
|
|
5318
|
+
z-index: 10002;
|
|
5319
|
+
display: flex;
|
|
5320
|
+
align-items: center;
|
|
5321
|
+
justify-content: center;
|
|
5322
|
+
}
|
|
5323
|
+
|
|
5324
|
+
.add-menu-modal {
|
|
5325
|
+
background-color: var(--ui-surface);
|
|
5326
|
+
border: 1px solid var(--ui-border);
|
|
5327
|
+
border-radius: 10px;
|
|
5328
|
+
box-shadow: var(--ui-shadow-strong);
|
|
5329
|
+
width: 90%;
|
|
5330
|
+
max-width: 380px;
|
|
5331
|
+
display: flex;
|
|
5332
|
+
flex-direction: column;
|
|
5333
|
+
}
|
|
5334
|
+
|
|
5335
|
+
.add-menu-modal-header {
|
|
5336
|
+
display: flex;
|
|
5337
|
+
align-items: center;
|
|
5338
|
+
justify-content: space-between;
|
|
5339
|
+
padding: 14px 18px;
|
|
5340
|
+
border-bottom: 1px solid var(--ui-border);
|
|
5341
|
+
}
|
|
5342
|
+
|
|
5343
|
+
.add-menu-modal-title {
|
|
5344
|
+
margin: 0;
|
|
5345
|
+
color: var(--ui-text);
|
|
5346
|
+
font-size: 15px;
|
|
5347
|
+
font-weight: 600;
|
|
5348
|
+
}
|
|
5349
|
+
|
|
5350
|
+
.add-menu-modal-close {
|
|
5351
|
+
background: none;
|
|
5352
|
+
border: none;
|
|
5353
|
+
color: var(--ui-muted);
|
|
5354
|
+
font-size: 20px;
|
|
5355
|
+
line-height: 1;
|
|
5356
|
+
padding: 0;
|
|
5357
|
+
width: 28px;
|
|
5358
|
+
height: 28px;
|
|
5359
|
+
display: flex;
|
|
5360
|
+
align-items: center;
|
|
5361
|
+
justify-content: center;
|
|
5362
|
+
border-radius: 6px;
|
|
5363
|
+
cursor: pointer;
|
|
5364
|
+
transition: color 0.15s var(--ui-ease), background 0.15s var(--ui-ease);
|
|
5365
|
+
}
|
|
5366
|
+
|
|
5367
|
+
.add-menu-modal-close:hover {
|
|
5368
|
+
color: var(--ui-text);
|
|
5369
|
+
background: var(--ui-accent-overlay-1);
|
|
5370
|
+
}
|
|
5371
|
+
|
|
5372
|
+
.add-menu-modal-body {
|
|
5373
|
+
padding: 18px;
|
|
5374
|
+
display: flex;
|
|
5375
|
+
flex-direction: column;
|
|
5376
|
+
gap: 10px;
|
|
5377
|
+
}
|
|
5378
|
+
|
|
5379
|
+
.add-menu-modal-label {
|
|
5380
|
+
display: block;
|
|
5381
|
+
color: var(--ui-text);
|
|
5382
|
+
font-size: 13px;
|
|
5383
|
+
font-weight: 500;
|
|
5384
|
+
margin-bottom: 2px;
|
|
5385
|
+
}
|
|
5386
|
+
|
|
5387
|
+
.add-menu-modal-select,
|
|
5388
|
+
.add-menu-modal-input {
|
|
5389
|
+
width: 100%;
|
|
5390
|
+
background-color: var(--ui-surface);
|
|
5391
|
+
color: var(--ui-text);
|
|
5392
|
+
border: 1px solid var(--ui-border);
|
|
5393
|
+
border-radius: 6px;
|
|
5394
|
+
padding: 8px 12px;
|
|
5395
|
+
font-size: 13px;
|
|
5396
|
+
transition: border-color var(--ui-duration-fast) var(--ui-ease),
|
|
5397
|
+
box-shadow var(--ui-duration-fast) var(--ui-ease);
|
|
5398
|
+
appearance: none;
|
|
5399
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L2 4h8z'/%3E%3C/svg%3E");
|
|
5400
|
+
background-repeat: no-repeat;
|
|
5401
|
+
background-position: right 10px center;
|
|
5402
|
+
padding-right: 32px;
|
|
5403
|
+
}
|
|
5404
|
+
|
|
5405
|
+
.add-menu-modal-input {
|
|
5406
|
+
background-image: none;
|
|
5407
|
+
padding-right: 12px;
|
|
5408
|
+
}
|
|
5409
|
+
|
|
5410
|
+
.add-menu-modal-select:hover,
|
|
5411
|
+
.add-menu-modal-input:hover {
|
|
5412
|
+
border-color: var(--ui-terracotta);
|
|
5413
|
+
background-color: var(--ui-accent-overlay-1);
|
|
5414
|
+
}
|
|
5415
|
+
|
|
5416
|
+
.add-menu-modal-select:focus,
|
|
5417
|
+
.add-menu-modal-input:focus {
|
|
5418
|
+
outline: none;
|
|
5419
|
+
border-color: var(--ui-accent);
|
|
5420
|
+
box-shadow: 0 0 0 2px var(--ui-accent-overlay-1);
|
|
5421
|
+
}
|
|
5422
|
+
|
|
5423
|
+
.add-menu-modal-hint {
|
|
5424
|
+
font-size: 11px;
|
|
5425
|
+
color: var(--ui-muted);
|
|
5426
|
+
margin-top: 2px;
|
|
5427
|
+
}
|
|
5428
|
+
|
|
5429
|
+
.add-menu-modal-footer {
|
|
5430
|
+
display: flex;
|
|
5431
|
+
align-items: center;
|
|
5432
|
+
justify-content: flex-end;
|
|
5433
|
+
gap: 10px;
|
|
5434
|
+
padding: 14px 18px;
|
|
5435
|
+
border-top: 1px solid var(--ui-border);
|
|
5436
|
+
}
|
|
5437
|
+
|
|
5438
|
+
.add-menu-modal-btn {
|
|
5439
|
+
padding: 8px 16px;
|
|
5440
|
+
border-radius: 6px;
|
|
5441
|
+
font-size: 13px;
|
|
5442
|
+
font-weight: 500;
|
|
5443
|
+
cursor: pointer;
|
|
5444
|
+
transition: all 0.15s var(--ui-ease);
|
|
5445
|
+
border: 1px solid transparent;
|
|
5446
|
+
}
|
|
5447
|
+
|
|
5448
|
+
.add-menu-modal-btn-secondary {
|
|
5449
|
+
background: var(--ui-surface);
|
|
5450
|
+
color: var(--ui-text);
|
|
5451
|
+
border-color: var(--ui-border);
|
|
5452
|
+
}
|
|
5453
|
+
|
|
5454
|
+
.add-menu-modal-btn-secondary:hover {
|
|
5455
|
+
background: var(--ui-surface-2);
|
|
5456
|
+
border-color: var(--ui-accent);
|
|
5457
|
+
}
|
|
5458
|
+
|
|
5459
|
+
.add-menu-modal-btn-primary {
|
|
5460
|
+
background: var(--ui-accent);
|
|
5461
|
+
color: var(--ui-text-white);
|
|
5462
|
+
border-color: var(--ui-accent);
|
|
5463
|
+
}
|
|
5464
|
+
|
|
5465
|
+
.add-menu-modal-btn-primary:hover {
|
|
5466
|
+
background: var(--ui-terracotta-hover);
|
|
5467
|
+
border-color: var(--ui-terracotta-hover);
|
|
5468
|
+
}
|
|
5469
|
+
|
|
5235
5470
|
/* ========== 11-wizard.css ========== */
|
|
5236
5471
|
/* Wizard Modal Overlay */
|
|
5237
5472
|
.wizard-modal {
|
package/dist/index.d.cts
CHANGED
|
@@ -115,6 +115,8 @@ declare class PreviewShell {
|
|
|
115
115
|
private gameReady;
|
|
116
116
|
private resizeListenersDisabled;
|
|
117
117
|
private compareSnapshotTimer;
|
|
118
|
+
private hasUnsavedChanges;
|
|
119
|
+
private getShortcutKey;
|
|
118
120
|
constructor(options?: PreviewOptions);
|
|
119
121
|
mount(target?: HTMLElement): void;
|
|
120
122
|
destroy(): void;
|
|
@@ -152,6 +154,8 @@ declare class PreviewShell {
|
|
|
152
154
|
private setupSpaceKeyListener;
|
|
153
155
|
private isInputFocused;
|
|
154
156
|
private setupShortcutListeners;
|
|
157
|
+
private setupUnsavedChangesIndicator;
|
|
158
|
+
private updateUnsavedChangesIndicator;
|
|
155
159
|
private updateDragCursor;
|
|
156
160
|
private onFrameDragMove;
|
|
157
161
|
private onFrameDragEnd;
|
|
@@ -181,20 +185,28 @@ declare function createPreviewShell(options?: PreviewOptions): PreviewShell;
|
|
|
181
185
|
|
|
182
186
|
type SceneObjectsPanelOptions = {
|
|
183
187
|
onSelect: (objectId: string) => void;
|
|
188
|
+
onMultiSelect?: (objectIds: string[]) => void;
|
|
184
189
|
};
|
|
185
190
|
declare class SceneObjectsPanel {
|
|
186
191
|
private root;
|
|
187
192
|
private listContainer;
|
|
188
193
|
private searchInput;
|
|
189
194
|
private selectedId;
|
|
195
|
+
private selectedIds;
|
|
196
|
+
private lastSelectedIndex;
|
|
197
|
+
private objectEntries;
|
|
190
198
|
private options;
|
|
191
199
|
private retryTimer;
|
|
192
200
|
private screenFilter;
|
|
201
|
+
private showTemplates;
|
|
193
202
|
private isContextMenuOpen;
|
|
194
203
|
private getScreenFilterStorageKey;
|
|
204
|
+
private getShowTemplatesStorageKey;
|
|
195
205
|
render(): string;
|
|
196
206
|
initialize(container: HTMLElement, options: SceneObjectsPanelOptions): void;
|
|
197
207
|
setSelected(objectId: string | null): void;
|
|
208
|
+
getSelectedIds(): string[];
|
|
209
|
+
private updateSelectionUI;
|
|
198
210
|
refreshObjects(): void;
|
|
199
211
|
/**
|
|
200
212
|
* Format display name: removes json. prefix, converts underscores to spaces, title case
|
|
@@ -214,6 +226,9 @@ declare class SceneObjectsPanel {
|
|
|
214
226
|
private getMetadata;
|
|
215
227
|
private scheduleRetry;
|
|
216
228
|
private select;
|
|
229
|
+
private toggleSelect;
|
|
230
|
+
private selectRange;
|
|
231
|
+
private updateLastSelectedIndex;
|
|
217
232
|
private getDefaultScreenForCreate;
|
|
218
233
|
private openAddObjectMenu;
|
|
219
234
|
/**
|
|
@@ -222,7 +237,10 @@ declare class SceneObjectsPanel {
|
|
|
222
237
|
private openAddObjectWizard;
|
|
223
238
|
private showContextMenu;
|
|
224
239
|
private deleteObject;
|
|
240
|
+
private deleteMultipleObjects;
|
|
225
241
|
private deleteSystemGroup;
|
|
242
|
+
private moveObject;
|
|
243
|
+
private moveMultipleObjects;
|
|
226
244
|
private syncScreens;
|
|
227
245
|
}
|
|
228
246
|
|
|
@@ -685,7 +703,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
685
703
|
toggleDebug(force?: boolean): void;
|
|
686
704
|
updateDebugBadge(): void;
|
|
687
705
|
private handleObjectSelect;
|
|
688
|
-
nudgeSelectedObject(dx: number, dy: number): void
|
|
706
|
+
nudgeSelectedObject(dx: number, dy: number): Promise<void>;
|
|
689
707
|
}
|
|
690
708
|
|
|
691
709
|
/**
|
|
@@ -809,6 +827,8 @@ interface ConfigChange {
|
|
|
809
827
|
oldValue: any;
|
|
810
828
|
newValue: any;
|
|
811
829
|
ts: number;
|
|
830
|
+
changeType?: 'property' | 'object_create' | 'object_delete';
|
|
831
|
+
metadata?: any;
|
|
812
832
|
}
|
|
813
833
|
interface ConfigOverrideOptions {
|
|
814
834
|
silent?: boolean;
|
|
@@ -855,6 +875,14 @@ declare function undoLastConfigChange(): boolean;
|
|
|
855
875
|
* Returns true if redo was successful, false if no changes to redo
|
|
856
876
|
*/
|
|
857
877
|
declare function redoLastConfigChange(): boolean;
|
|
878
|
+
/**
|
|
879
|
+
* Track object creation in undo history
|
|
880
|
+
*/
|
|
881
|
+
declare function trackObjectCreation(objectId: string, screenId: string, objectConfig: any): void;
|
|
882
|
+
/**
|
|
883
|
+
* Track object deletion in undo history
|
|
884
|
+
*/
|
|
885
|
+
declare function trackObjectDeletion(objectId: string, screenId: string, objectConfig: any): void;
|
|
858
886
|
/**
|
|
859
887
|
* Deep clone utility for baseline copying
|
|
860
888
|
*/
|
|
@@ -1031,4 +1059,4 @@ declare const Handler: {
|
|
|
1031
1059
|
resize(width?: number, height?: number): void;
|
|
1032
1060
|
};
|
|
1033
1061
|
|
|
1034
|
-
export { COLORS, type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, PlayableLoadingScreen, type PreviewOptions, PreviewShell, type ReloadStrategy, STROKE_WIDTH, type SetupLiveEditBridgeOptions, THEME, applyConfigOverride, applyConfigOverrides, applyConfigsToDisk, baseLottie, bootstrap, clearConfigOverrides, clearConfigOverridesForObject, configOverrideManager, createPreviewShell, deepClone, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, exportConfigsAsJSON, getConfigOverrides, getConfigStateSummary, getOverrideMode, getPresetById, getPresetsByCategory, redoLastConfigChange, rehydrateObject, removeConfigOverride, resetToApplied, resetToOriginal, setBootstrapDependencies, setOverrideMode, setupHotReload, setupLiveEditBridge, undoLastConfigChange };
|
|
1062
|
+
export { COLORS, type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, PlayableLoadingScreen, type PreviewOptions, PreviewShell, type ReloadStrategy, STROKE_WIDTH, type SetupLiveEditBridgeOptions, THEME, applyConfigOverride, applyConfigOverrides, applyConfigsToDisk, baseLottie, bootstrap, clearConfigOverrides, clearConfigOverridesForObject, configOverrideManager, createPreviewShell, deepClone, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, exportConfigsAsJSON, getConfigOverrides, getConfigStateSummary, getOverrideMode, getPresetById, getPresetsByCategory, redoLastConfigChange, rehydrateObject, removeConfigOverride, resetToApplied, resetToOriginal, setBootstrapDependencies, setOverrideMode, setupHotReload, setupLiveEditBridge, trackObjectCreation, trackObjectDeletion, undoLastConfigChange };
|
package/dist/index.d.ts
CHANGED
|
@@ -115,6 +115,8 @@ declare class PreviewShell {
|
|
|
115
115
|
private gameReady;
|
|
116
116
|
private resizeListenersDisabled;
|
|
117
117
|
private compareSnapshotTimer;
|
|
118
|
+
private hasUnsavedChanges;
|
|
119
|
+
private getShortcutKey;
|
|
118
120
|
constructor(options?: PreviewOptions);
|
|
119
121
|
mount(target?: HTMLElement): void;
|
|
120
122
|
destroy(): void;
|
|
@@ -152,6 +154,8 @@ declare class PreviewShell {
|
|
|
152
154
|
private setupSpaceKeyListener;
|
|
153
155
|
private isInputFocused;
|
|
154
156
|
private setupShortcutListeners;
|
|
157
|
+
private setupUnsavedChangesIndicator;
|
|
158
|
+
private updateUnsavedChangesIndicator;
|
|
155
159
|
private updateDragCursor;
|
|
156
160
|
private onFrameDragMove;
|
|
157
161
|
private onFrameDragEnd;
|
|
@@ -181,20 +185,28 @@ declare function createPreviewShell(options?: PreviewOptions): PreviewShell;
|
|
|
181
185
|
|
|
182
186
|
type SceneObjectsPanelOptions = {
|
|
183
187
|
onSelect: (objectId: string) => void;
|
|
188
|
+
onMultiSelect?: (objectIds: string[]) => void;
|
|
184
189
|
};
|
|
185
190
|
declare class SceneObjectsPanel {
|
|
186
191
|
private root;
|
|
187
192
|
private listContainer;
|
|
188
193
|
private searchInput;
|
|
189
194
|
private selectedId;
|
|
195
|
+
private selectedIds;
|
|
196
|
+
private lastSelectedIndex;
|
|
197
|
+
private objectEntries;
|
|
190
198
|
private options;
|
|
191
199
|
private retryTimer;
|
|
192
200
|
private screenFilter;
|
|
201
|
+
private showTemplates;
|
|
193
202
|
private isContextMenuOpen;
|
|
194
203
|
private getScreenFilterStorageKey;
|
|
204
|
+
private getShowTemplatesStorageKey;
|
|
195
205
|
render(): string;
|
|
196
206
|
initialize(container: HTMLElement, options: SceneObjectsPanelOptions): void;
|
|
197
207
|
setSelected(objectId: string | null): void;
|
|
208
|
+
getSelectedIds(): string[];
|
|
209
|
+
private updateSelectionUI;
|
|
198
210
|
refreshObjects(): void;
|
|
199
211
|
/**
|
|
200
212
|
* Format display name: removes json. prefix, converts underscores to spaces, title case
|
|
@@ -214,6 +226,9 @@ declare class SceneObjectsPanel {
|
|
|
214
226
|
private getMetadata;
|
|
215
227
|
private scheduleRetry;
|
|
216
228
|
private select;
|
|
229
|
+
private toggleSelect;
|
|
230
|
+
private selectRange;
|
|
231
|
+
private updateLastSelectedIndex;
|
|
217
232
|
private getDefaultScreenForCreate;
|
|
218
233
|
private openAddObjectMenu;
|
|
219
234
|
/**
|
|
@@ -222,7 +237,10 @@ declare class SceneObjectsPanel {
|
|
|
222
237
|
private openAddObjectWizard;
|
|
223
238
|
private showContextMenu;
|
|
224
239
|
private deleteObject;
|
|
240
|
+
private deleteMultipleObjects;
|
|
225
241
|
private deleteSystemGroup;
|
|
242
|
+
private moveObject;
|
|
243
|
+
private moveMultipleObjects;
|
|
226
244
|
private syncScreens;
|
|
227
245
|
}
|
|
228
246
|
|
|
@@ -685,7 +703,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
685
703
|
toggleDebug(force?: boolean): void;
|
|
686
704
|
updateDebugBadge(): void;
|
|
687
705
|
private handleObjectSelect;
|
|
688
|
-
nudgeSelectedObject(dx: number, dy: number): void
|
|
706
|
+
nudgeSelectedObject(dx: number, dy: number): Promise<void>;
|
|
689
707
|
}
|
|
690
708
|
|
|
691
709
|
/**
|
|
@@ -809,6 +827,8 @@ interface ConfigChange {
|
|
|
809
827
|
oldValue: any;
|
|
810
828
|
newValue: any;
|
|
811
829
|
ts: number;
|
|
830
|
+
changeType?: 'property' | 'object_create' | 'object_delete';
|
|
831
|
+
metadata?: any;
|
|
812
832
|
}
|
|
813
833
|
interface ConfigOverrideOptions {
|
|
814
834
|
silent?: boolean;
|
|
@@ -855,6 +875,14 @@ declare function undoLastConfigChange(): boolean;
|
|
|
855
875
|
* Returns true if redo was successful, false if no changes to redo
|
|
856
876
|
*/
|
|
857
877
|
declare function redoLastConfigChange(): boolean;
|
|
878
|
+
/**
|
|
879
|
+
* Track object creation in undo history
|
|
880
|
+
*/
|
|
881
|
+
declare function trackObjectCreation(objectId: string, screenId: string, objectConfig: any): void;
|
|
882
|
+
/**
|
|
883
|
+
* Track object deletion in undo history
|
|
884
|
+
*/
|
|
885
|
+
declare function trackObjectDeletion(objectId: string, screenId: string, objectConfig: any): void;
|
|
858
886
|
/**
|
|
859
887
|
* Deep clone utility for baseline copying
|
|
860
888
|
*/
|
|
@@ -1031,4 +1059,4 @@ declare const Handler: {
|
|
|
1031
1059
|
resize(width?: number, height?: number): void;
|
|
1032
1060
|
};
|
|
1033
1061
|
|
|
1034
|
-
export { COLORS, type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, PlayableLoadingScreen, type PreviewOptions, PreviewShell, type ReloadStrategy, STROKE_WIDTH, type SetupLiveEditBridgeOptions, THEME, applyConfigOverride, applyConfigOverrides, applyConfigsToDisk, baseLottie, bootstrap, clearConfigOverrides, clearConfigOverridesForObject, configOverrideManager, createPreviewShell, deepClone, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, exportConfigsAsJSON, getConfigOverrides, getConfigStateSummary, getOverrideMode, getPresetById, getPresetsByCategory, redoLastConfigChange, rehydrateObject, removeConfigOverride, resetToApplied, resetToOriginal, setBootstrapDependencies, setOverrideMode, setupHotReload, setupLiveEditBridge, undoLastConfigChange };
|
|
1062
|
+
export { COLORS, type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, PlayableLoadingScreen, type PreviewOptions, PreviewShell, type ReloadStrategy, STROKE_WIDTH, type SetupLiveEditBridgeOptions, THEME, applyConfigOverride, applyConfigOverrides, applyConfigsToDisk, baseLottie, bootstrap, clearConfigOverrides, clearConfigOverridesForObject, configOverrideManager, createPreviewShell, deepClone, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, exportConfigsAsJSON, getConfigOverrides, getConfigStateSummary, getOverrideMode, getPresetById, getPresetsByCategory, redoLastConfigChange, rehydrateObject, removeConfigOverride, resetToApplied, resetToOriginal, setBootstrapDependencies, setOverrideMode, setupHotReload, setupLiveEditBridge, trackObjectCreation, trackObjectDeletion, undoLastConfigChange };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as
|
|
1
|
+
import{E as J,F as K,G as L,H as M,I as N,J as O,K as P,L as Q,M as R,N as S,O as T,P as U,Q as V,R as W,S as X,T as Y,U as Z,a}from"./chunk-WTWSWRFR.js";import"./chunk-I5OOVR5U.js";import{a as u,b as v,c as w,d as x,e as y,f as z,g as A,h as B,i as C,j as D,k as E,l as F,m as G,n as H,o as I}from"./chunk-PW2FGMCO.js";import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i,i as j,j as k,k as l,l as m,m as n,n as o,o as p,p as q,q as r,r as s,s as t}from"./chunk-HVKF2KYL.js";import"./chunk-E6WJCS24.js";import"./chunk-JXBG6UFL.js";export{U as COLORS,F as ConfigWatcher,O as DebugPanel,E as DefaultReloadStrategy,Y as Handler,X as PlayableLoadingScreen,P as PreviewShell,V as STROKE_WIDTH,W as THEME,d as applyConfigOverride,e as applyConfigOverrides,r as applyConfigsToDisk,B as applyDefaults,a as baseLottie,T as bootstrap,f as clearConfigOverrides,g as clearConfigOverridesForObject,j as configOverrideManager,Q as createPreviewShell,o as deepClone,Z as default,L as defaultPreset,K as deviceGroups,J as devicePresets,G as diffConfigs,p as exportConfigsAsJSON,i as getConfigOverrides,q as getConfigStateSummary,b as getOverrideMode,M as getPresetById,N as getPresetsByCategory,w as loadAllObjectConfigs,u as loadComponentSchemas,x as loadEngineConfig,y as loadGamePromptConfig,C as loadObjectCentricConfig,v as loadObjectConfig,z as loadSceneConfig,l as redoLastConfigChange,H as rehydrateObject,h as removeConfigOverride,s as resetToApplied,t as resetToOriginal,S as setBootstrapDependencies,c as setOverrideMode,I as setupHotReload,R as setupLiveEditBridge,D as toLegacyFormat,m as trackObjectCreation,n as trackObjectDeletion,k as undoLastConfigChange,A as validateObjectConfig};
|