handler-playable-sdk 0.3.41 → 0.3.43
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/{chunk-NN7DY2BF.js → chunk-XSKUGJJF.js} +101 -53
- 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/index.cjs +152 -104
- package/dist/index.css +200 -0
- package/dist/index.d.cts +16 -2
- package/dist/index.d.ts +16 -2
- package/dist/index.js +1 -1
- package/dist/pixi/index.cjs +11 -11
- package/dist/pixi/index.css +200 -0
- package/dist/pixi/index.js +1 -1
- package/dist/three/index.cjs +1 -1
- package/dist/three/index.css +200 -0
- package/dist/three/index.js +1 -1
- package/package.json +2 -2
package/dist/index.css
CHANGED
|
@@ -3817,6 +3817,29 @@
|
|
|
3817
3817
|
}
|
|
3818
3818
|
|
|
3819
3819
|
|
|
3820
|
+
/* ========== 08-breadcrumbs.css ========== */
|
|
3821
|
+
/* Breadcrumbs */
|
|
3822
|
+
.scene-breadcrumbs {
|
|
3823
|
+
display: flex;
|
|
3824
|
+
align-items: center;
|
|
3825
|
+
gap: 6px;
|
|
3826
|
+
padding: 8px 14px;
|
|
3827
|
+
background: var(--ui-surface-2);
|
|
3828
|
+
border-bottom: 1px solid var(--ui-border);
|
|
3829
|
+
font-size: 11px;
|
|
3830
|
+
color: var(--ui-muted);
|
|
3831
|
+
}
|
|
3832
|
+
|
|
3833
|
+
.breadcrumb-item {
|
|
3834
|
+
font-weight: var(--font-weight-medium);
|
|
3835
|
+
color: var(--ui-text);
|
|
3836
|
+
}
|
|
3837
|
+
|
|
3838
|
+
.breadcrumb-separator {
|
|
3839
|
+
color: var(--ui-muted);
|
|
3840
|
+
font-size: 12px;
|
|
3841
|
+
}
|
|
3842
|
+
|
|
3820
3843
|
/* ========== 08-inspector.css ========== */
|
|
3821
3844
|
/* 08 Inspector */
|
|
3822
3845
|
/* Auto-generated from preview.css */
|
|
@@ -4619,6 +4642,183 @@
|
|
|
4619
4642
|
|
|
4620
4643
|
|
|
4621
4644
|
|
|
4645
|
+
/* ========== 13-nudge-panel.css ========== */
|
|
4646
|
+
/* Nudge Panel - Floating on left side */
|
|
4647
|
+
.nudge-panel {
|
|
4648
|
+
position: absolute;
|
|
4649
|
+
left: 16px;
|
|
4650
|
+
top: 50%;
|
|
4651
|
+
transform: translateY(-50%);
|
|
4652
|
+
width: 180px;
|
|
4653
|
+
background: var(--ui-surface);
|
|
4654
|
+
border: 1px solid var(--ui-border);
|
|
4655
|
+
border-radius: 14px;
|
|
4656
|
+
box-shadow: var(--ui-shadow);
|
|
4657
|
+
z-index: 60;
|
|
4658
|
+
pointer-events: auto;
|
|
4659
|
+
transition: opacity var(--ui-duration-fast) var(--ui-ease);
|
|
4660
|
+
}
|
|
4661
|
+
|
|
4662
|
+
.nudge-panel.hidden {
|
|
4663
|
+
opacity: 0;
|
|
4664
|
+
pointer-events: none;
|
|
4665
|
+
}
|
|
4666
|
+
|
|
4667
|
+
.nudge-panel-header {
|
|
4668
|
+
padding: 10px 12px;
|
|
4669
|
+
background: var(--ui-bg-2);
|
|
4670
|
+
border-bottom: 1px solid var(--ui-border);
|
|
4671
|
+
border-radius: 14px 14px 0 0;
|
|
4672
|
+
}
|
|
4673
|
+
|
|
4674
|
+
.nudge-panel-title {
|
|
4675
|
+
font-size: 11px;
|
|
4676
|
+
font-weight: var(--font-weight-semibold);
|
|
4677
|
+
color: var(--ui-text);
|
|
4678
|
+
letter-spacing: 0.4px;
|
|
4679
|
+
text-transform: uppercase;
|
|
4680
|
+
}
|
|
4681
|
+
|
|
4682
|
+
.nudge-panel-body {
|
|
4683
|
+
padding: 12px;
|
|
4684
|
+
display: flex;
|
|
4685
|
+
flex-direction: column;
|
|
4686
|
+
gap: 14px;
|
|
4687
|
+
}
|
|
4688
|
+
|
|
4689
|
+
.nudge-section {
|
|
4690
|
+
display: flex;
|
|
4691
|
+
flex-direction: column;
|
|
4692
|
+
gap: 8px;
|
|
4693
|
+
}
|
|
4694
|
+
|
|
4695
|
+
.nudge-section-label {
|
|
4696
|
+
font-size: 11px;
|
|
4697
|
+
font-weight: var(--font-weight-medium);
|
|
4698
|
+
color: var(--ui-muted);
|
|
4699
|
+
text-transform: uppercase;
|
|
4700
|
+
letter-spacing: 0.3px;
|
|
4701
|
+
}
|
|
4702
|
+
|
|
4703
|
+
.nudge-step-input {
|
|
4704
|
+
background: var(--ui-bg);
|
|
4705
|
+
border: 1px solid var(--ui-border);
|
|
4706
|
+
border-radius: 6px;
|
|
4707
|
+
padding: 6px 8px;
|
|
4708
|
+
font-size: 12px;
|
|
4709
|
+
color: var(--ui-text);
|
|
4710
|
+
font-family: var(--font-primary);
|
|
4711
|
+
width: 100%;
|
|
4712
|
+
}
|
|
4713
|
+
|
|
4714
|
+
.nudge-step-input:focus {
|
|
4715
|
+
outline: none;
|
|
4716
|
+
border-color: var(--ui-terracotta);
|
|
4717
|
+
box-shadow: 0 0 0 2px rgba(227, 138, 90, 0.2);
|
|
4718
|
+
}
|
|
4719
|
+
|
|
4720
|
+
/* Nudge arrow grid */
|
|
4721
|
+
.nudge-arrow-grid {
|
|
4722
|
+
display: grid;
|
|
4723
|
+
grid-template-columns: repeat(3, 1fr);
|
|
4724
|
+
grid-template-rows: repeat(2, 1fr);
|
|
4725
|
+
gap: 4px;
|
|
4726
|
+
}
|
|
4727
|
+
|
|
4728
|
+
.nudge-arrow-btn {
|
|
4729
|
+
background: var(--ui-surface);
|
|
4730
|
+
border: 1px solid var(--ui-border);
|
|
4731
|
+
border-radius: 8px;
|
|
4732
|
+
padding: 8px;
|
|
4733
|
+
cursor: pointer;
|
|
4734
|
+
transition: all var(--ui-duration-fast) var(--ui-ease);
|
|
4735
|
+
color: var(--ui-text);
|
|
4736
|
+
display: flex;
|
|
4737
|
+
align-items: center;
|
|
4738
|
+
justify-content: center;
|
|
4739
|
+
}
|
|
4740
|
+
|
|
4741
|
+
.nudge-arrow-btn svg {
|
|
4742
|
+
width: 16px;
|
|
4743
|
+
height: 16px;
|
|
4744
|
+
stroke-width: var(--ui-icon-stroke);
|
|
4745
|
+
}
|
|
4746
|
+
|
|
4747
|
+
.nudge-arrow-btn:hover {
|
|
4748
|
+
background: var(--ui-terracotta);
|
|
4749
|
+
border-color: var(--ui-terracotta);
|
|
4750
|
+
color: var(--ui-text-white);
|
|
4751
|
+
transform: translateY(-1px);
|
|
4752
|
+
}
|
|
4753
|
+
|
|
4754
|
+
.nudge-arrow-btn:active {
|
|
4755
|
+
transform: translateY(0);
|
|
4756
|
+
background: var(--ui-terracotta-active);
|
|
4757
|
+
}
|
|
4758
|
+
|
|
4759
|
+
.nudge-arrow-btn[data-nudge="up"] {
|
|
4760
|
+
grid-column: 2;
|
|
4761
|
+
grid-row: 1;
|
|
4762
|
+
}
|
|
4763
|
+
|
|
4764
|
+
.nudge-arrow-btn[data-nudge="left"] {
|
|
4765
|
+
grid-column: 1;
|
|
4766
|
+
grid-row: 2;
|
|
4767
|
+
}
|
|
4768
|
+
|
|
4769
|
+
.nudge-arrow-btn[data-nudge="down"] {
|
|
4770
|
+
grid-column: 2;
|
|
4771
|
+
grid-row: 2;
|
|
4772
|
+
}
|
|
4773
|
+
|
|
4774
|
+
.nudge-arrow-btn[data-nudge="right"] {
|
|
4775
|
+
grid-column: 3;
|
|
4776
|
+
grid-row: 2;
|
|
4777
|
+
}
|
|
4778
|
+
|
|
4779
|
+
/* Scale controls */
|
|
4780
|
+
.nudge-scale-controls {
|
|
4781
|
+
display: flex;
|
|
4782
|
+
flex-direction: column;
|
|
4783
|
+
gap: 6px;
|
|
4784
|
+
}
|
|
4785
|
+
|
|
4786
|
+
.nudge-scale-btn {
|
|
4787
|
+
background: var(--ui-surface);
|
|
4788
|
+
border: 1px solid var(--ui-border);
|
|
4789
|
+
border-radius: 8px;
|
|
4790
|
+
padding: 8px 10px;
|
|
4791
|
+
cursor: pointer;
|
|
4792
|
+
transition: all var(--ui-duration-fast) var(--ui-ease);
|
|
4793
|
+
color: var(--ui-text);
|
|
4794
|
+
display: flex;
|
|
4795
|
+
align-items: center;
|
|
4796
|
+
gap: 6px;
|
|
4797
|
+
font-size: 11px;
|
|
4798
|
+
font-weight: var(--font-weight-medium);
|
|
4799
|
+
}
|
|
4800
|
+
|
|
4801
|
+
.nudge-scale-btn svg {
|
|
4802
|
+
width: 14px;
|
|
4803
|
+
height: 14px;
|
|
4804
|
+
stroke-width: var(--ui-icon-stroke);
|
|
4805
|
+
}
|
|
4806
|
+
|
|
4807
|
+
.nudge-scale-btn:hover {
|
|
4808
|
+
background: var(--ui-terracotta);
|
|
4809
|
+
border-color: var(--ui-terracotta);
|
|
4810
|
+
color: var(--ui-text-white);
|
|
4811
|
+
}
|
|
4812
|
+
|
|
4813
|
+
.nudge-scale-btn:active {
|
|
4814
|
+
background: var(--ui-terracotta-active);
|
|
4815
|
+
}
|
|
4816
|
+
|
|
4817
|
+
/* Hide nudge panel in compare mode */
|
|
4818
|
+
.preview-shell.compare-mode .nudge-panel {
|
|
4819
|
+
display: none;
|
|
4820
|
+
}
|
|
4821
|
+
|
|
4622
4822
|
/* ========== 99-misc.css ========== */
|
|
4623
4823
|
/* 99 Misc */
|
|
4624
4824
|
/* Auto-generated from preview.css */
|
package/dist/index.d.cts
CHANGED
|
@@ -217,7 +217,6 @@ declare class SceneToolsPanel {
|
|
|
217
217
|
private isCollapsed;
|
|
218
218
|
render(): string;
|
|
219
219
|
initialize(container: HTMLElement, options: SceneToolsPanelOptions): void;
|
|
220
|
-
getNudgeStep(): number;
|
|
221
220
|
updateInfo(info: {
|
|
222
221
|
instanceId: string;
|
|
223
222
|
worldX: number;
|
|
@@ -227,6 +226,20 @@ declare class SceneToolsPanel {
|
|
|
227
226
|
} | null): void;
|
|
228
227
|
}
|
|
229
228
|
|
|
229
|
+
type NudgePanelOptions = {
|
|
230
|
+
onNudge: (dx: number, dy: number) => void;
|
|
231
|
+
onScale: (delta: number) => void;
|
|
232
|
+
};
|
|
233
|
+
declare class NudgePanel {
|
|
234
|
+
private root;
|
|
235
|
+
private options;
|
|
236
|
+
render(): string;
|
|
237
|
+
initialize(container: HTMLElement, options: NudgePanelOptions): void;
|
|
238
|
+
show(): void;
|
|
239
|
+
hide(): void;
|
|
240
|
+
getNudgeStep(): number;
|
|
241
|
+
}
|
|
242
|
+
|
|
230
243
|
type LibraryPanelOptions = {
|
|
231
244
|
onApply: (objectId: string, assetPath: string, category: string) => Promise<void>;
|
|
232
245
|
onReset: (objectId: string, defaultAsset: string, category: string) => Promise<void>;
|
|
@@ -581,6 +594,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
581
594
|
activeTab: WorkbenchTab;
|
|
582
595
|
sceneObjectsPanel: SceneObjectsPanel;
|
|
583
596
|
sceneToolsPanel: SceneToolsPanel;
|
|
597
|
+
nudgePanel: NudgePanel;
|
|
584
598
|
inspectorPanel: InspectorPanel;
|
|
585
599
|
libraryPanel: LibraryPanel;
|
|
586
600
|
brandVisionPanel: BrandVisionPanel;
|
|
@@ -633,7 +647,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
633
647
|
toggleDebug(force?: boolean): void;
|
|
634
648
|
updateDebugBadge(): void;
|
|
635
649
|
private handleObjectSelect;
|
|
636
|
-
|
|
650
|
+
nudgeSelectedObject(dx: number, dy: number): void;
|
|
637
651
|
}
|
|
638
652
|
|
|
639
653
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -217,7 +217,6 @@ declare class SceneToolsPanel {
|
|
|
217
217
|
private isCollapsed;
|
|
218
218
|
render(): string;
|
|
219
219
|
initialize(container: HTMLElement, options: SceneToolsPanelOptions): void;
|
|
220
|
-
getNudgeStep(): number;
|
|
221
220
|
updateInfo(info: {
|
|
222
221
|
instanceId: string;
|
|
223
222
|
worldX: number;
|
|
@@ -227,6 +226,20 @@ declare class SceneToolsPanel {
|
|
|
227
226
|
} | null): void;
|
|
228
227
|
}
|
|
229
228
|
|
|
229
|
+
type NudgePanelOptions = {
|
|
230
|
+
onNudge: (dx: number, dy: number) => void;
|
|
231
|
+
onScale: (delta: number) => void;
|
|
232
|
+
};
|
|
233
|
+
declare class NudgePanel {
|
|
234
|
+
private root;
|
|
235
|
+
private options;
|
|
236
|
+
render(): string;
|
|
237
|
+
initialize(container: HTMLElement, options: NudgePanelOptions): void;
|
|
238
|
+
show(): void;
|
|
239
|
+
hide(): void;
|
|
240
|
+
getNudgeStep(): number;
|
|
241
|
+
}
|
|
242
|
+
|
|
230
243
|
type LibraryPanelOptions = {
|
|
231
244
|
onApply: (objectId: string, assetPath: string, category: string) => Promise<void>;
|
|
232
245
|
onReset: (objectId: string, defaultAsset: string, category: string) => Promise<void>;
|
|
@@ -581,6 +594,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
581
594
|
activeTab: WorkbenchTab;
|
|
582
595
|
sceneObjectsPanel: SceneObjectsPanel;
|
|
583
596
|
sceneToolsPanel: SceneToolsPanel;
|
|
597
|
+
nudgePanel: NudgePanel;
|
|
584
598
|
inspectorPanel: InspectorPanel;
|
|
585
599
|
libraryPanel: LibraryPanel;
|
|
586
600
|
brandVisionPanel: BrandVisionPanel;
|
|
@@ -633,7 +647,7 @@ declare class DebugPanel implements DebugPanelContext {
|
|
|
633
647
|
toggleDebug(force?: boolean): void;
|
|
634
648
|
updateDebugBadge(): void;
|
|
635
649
|
private handleObjectSelect;
|
|
636
|
-
|
|
650
|
+
nudgeSelectedObject(dx: number, dy: number): void;
|
|
637
651
|
}
|
|
638
652
|
|
|
639
653
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{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,T as U,U as V,a}from"./chunk-
|
|
1
|
+
import{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,T as U,U as V,a}from"./chunk-XSKUGJJF.js";import"./chunk-I5OOVR5U.js";import{a as q,b as r,c as s,d as t,e as u,f as v,g as w,h as x,i as y,j as z,k as A,l as B,m as C,n as D,o as E}from"./chunk-LV4HGC5G.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}from"./chunk-ZLL42OOV.js";import"./chunk-E6WJCS24.js";import"./chunk-JXBG6UFL.js";export{Q as COLORS,B as ConfigWatcher,K as DebugPanel,A as DefaultReloadStrategy,U as Handler,T as PlayableLoadingScreen,L as PreviewShell,R as STROKE_WIDTH,S as THEME,d as applyConfigOverride,e as applyConfigOverrides,n as applyConfigsToDisk,x as applyDefaults,a as baseLottie,P as bootstrap,f as clearConfigOverrides,g as clearConfigOverridesForObject,j as configOverrideManager,M as createPreviewShell,k as deepClone,V as default,H as defaultPreset,G as deviceGroups,F as devicePresets,C as diffConfigs,l as exportConfigsAsJSON,i as getConfigOverrides,m as getConfigStateSummary,b as getOverrideMode,I as getPresetById,J as getPresetsByCategory,s as loadAllObjectConfigs,q as loadComponentSchemas,t as loadEngineConfig,u as loadGamePromptConfig,y as loadObjectCentricConfig,r as loadObjectConfig,v as loadSceneConfig,D as rehydrateObject,h as removeConfigOverride,o as resetToApplied,p as resetToOriginal,O as setBootstrapDependencies,c as setOverrideMode,E as setupHotReload,N as setupLiveEditBridge,z as toLegacyFormat,w as validateObjectConfig};
|