@edv4h/usketch-plugin-mode7 0.2.1 → 0.3.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.
package/README.md CHANGED
@@ -39,6 +39,7 @@ createApp({
39
39
  look: { sky: "#0b1026", fog: 0.35 },
40
40
  // tiltLayerIds: [...], // 傾ける層を上書き
41
41
  // shortcuts: { toggle: "…" }, // キーバインド(opt-in・既定なし)
42
+ // transition: { durationMs: 900, easing: "ease-in-out" }, // 切替アニメ(既定 0=即時)
42
43
  }),
43
44
  ],
44
45
  });
@@ -47,6 +48,21 @@ createApp({
47
48
  有効化は HUD の「3Dビュー切替」アクション、サービス `getMode7Api(app.services)?.toggle()`、
48
49
  またはイベント `app.events.emit("mode7:toggle")` のいずれでも可能。
49
50
 
51
+ ### 切替アニメーション(`transition`)
52
+
53
+ `transition.durationMs` を指定すると、ON/OFF が**アニメーション**になる(既定 `0`=従来どおり即時)。
54
+
55
+ - **ON**: 地面が平ら(pitch 0)から `camera.pitch` までせり上がり、空・フォグがフェードイン。
56
+ - **OFF**: 逆再生し、平らに戻りきってから非アクティブになる(それまで capture 層が編集を塞ぐ)。
57
+ - 途中で切り替えると、**今の状態から逆再生**(ジャンプしない)。
58
+ - 保存されたカメラ/見た目は常に目標値のまま。アニメするのは描画値だけ(pitch・yaw を
59
+ 遷移量でスケール、空/フォグは不透明度、描画距離の手前切り取りも同率でフェード)。
60
+ - 1 フレームにつき store 更新は 1 回。`prefers-reduced-motion` なら終了状態へ即時。
61
+ - 呼び出し単位で上書き可: `api.enable({ animate: true })` / `api.disable({ animate: false })`。
62
+ `durationMs` 未設定で `animate: true` の場合は 900ms。
63
+ - `api.isTransitioning()` / `api.getTransitionAmount()`(0…1)で進行中かを取れる。`onChange` は
64
+ 遷移中も毎フレーム発火するので、ホスト側のオーバーレイを同期できる。
65
+
50
66
  ## カメラ
51
67
 
52
68
  | パラメータ | 意味 | 範囲 |
@@ -91,7 +107,8 @@ api?.setPitch(60);
91
107
  api?.setYaw(30);
92
108
  ```
93
109
 
94
- `Mode7Api`: `isActive` / `enable` / `disable` / `toggle` / `getCamera` / `setPitch` / `setYaw` /
110
+ `Mode7Api`: `isActive` / `enable` / `disable` / `toggle`(各 `{ animate? }`)/ `isTransitioning` /
111
+ `getTransitionAmount` / `getCamera` / `setPitch` / `setYaw` /
95
112
  `setFov` / `setHorizon` / `adjust` / `getLook` / `setSky` / `setFog` / `setFogColor` / `reset` /
96
113
  `getTiltLayers` / `setTiltLayers` / `toggleTiltLayer` / `getDrawDistance` / `setDrawDistance` /
97
114
  `isCaptureFrameVisible` / `setCaptureFrameVisible` / `toggleCaptureFrame` / `getCaptureRect` / `onChange`。
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { CAMERA_LIMITS, type Camera, DEFAULT_CAMERA, } from "./mode7-camera.js";
2
2
  export { getMode7Api, type Mode7Api, mode7Service } from "./mode7-service.js";
3
3
  export type { Look } from "./mode7-store.js";
4
4
  export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, type TiltTransform, tiltTransform, } from "./mode7-transform.js";
5
+ export { DEFAULT_TRANSITION_MS, type Mode7Easing, type Mode7SwitchOptions, type Mode7TransitionOptions, } from "./mode7-transition.js";
5
6
  export { createMode7Plugin, type Mode7PluginOptions } from "./plugin.js";
6
7
  export type { Mode7ActionKey, Mode7Shortcuts, } from "./register-mode7-actions.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,MAAM,EACX,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,aAAa,EAClB,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACX,cAAc,EACd,cAAc,GACd,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,MAAM,EACX,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,aAAa,EAClB,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACX,cAAc,EACd,cAAc,GACd,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { CAMERA_LIMITS, DEFAULT_CAMERA, } from "./mode7-camera.js";
2
2
  export { getMode7Api, mode7Service } from "./mode7-service.js";
3
3
  export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, tiltTransform, } from "./mode7-transform.js";
4
+ export { DEFAULT_TRANSITION_MS, } from "./mode7-transition.js";
4
5
  export { createMode7Plugin } from "./plugin.js";
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAEb,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EAEb,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAEb,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EAEb,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-layers.d.ts","sourceRoot":"","sources":["../src/mode7-layers.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBnD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,sCAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sCAmBrF;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,sCAaxD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC3B,GAAG,EACH,KAAK,EACL,QAAQ,GACR,EAAE;IACF,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,+BAwCA;AAED,MAAM,WAAW,eAAe;IAC/B,wDAAwD;IACxD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/D;AAED,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,QAAQ,GACR,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC1B,sCAoCA"}
1
+ {"version":3,"file":"mode7-layers.d.ts","sourceRoot":"","sources":["../src/mode7-layers.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBnD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,sCAexD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,sCAmBrF;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,sCAcxD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC3B,GAAG,EACH,KAAK,EACL,QAAQ,GACR,EAAE;IACF,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,+BAwCA;AAED,MAAM,WAAW,eAAe;IAC/B,wDAAwD;IACxD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/D;AAED,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,QAAQ,GACR,EAAE;IACF,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;CAC1B,sCAoCA"}
@@ -11,7 +11,7 @@ function localCenter(e) {
11
11
  return { x: e.clientX - r.left, y: e.clientY - r.top };
12
12
  }
13
13
  export function SkyLayer({ store }) {
14
- const { active, camera, look } = useMode7(store);
14
+ const { active, amount, camera, look } = useMode7(store);
15
15
  if (!active)
16
16
  return null;
17
17
  return (_jsx("div", { style: {
@@ -19,6 +19,8 @@ export function SkyLayer({ store }) {
19
19
  inset: 0,
20
20
  pointerEvents: "none",
21
21
  background: skyBackground(look.sky, camera.horizon),
22
+ // Fades with the enter/exit transition (1 when settled).
23
+ opacity: amount,
22
24
  } }));
23
25
  }
24
26
  /**
@@ -47,7 +49,7 @@ export function CaptureFrameLayer({ store, zoom }) {
47
49
  } }));
48
50
  }
49
51
  export function FogLayer({ store }) {
50
- const { active, camera, look } = useMode7(store);
52
+ const { active, amount, camera, look } = useMode7(store);
51
53
  if (!active || fogOpacity(look.fog) <= 0)
52
54
  return null;
53
55
  return (_jsx("div", { style: {
@@ -55,6 +57,7 @@ export function FogLayer({ store }) {
55
57
  inset: 0,
56
58
  pointerEvents: "none",
57
59
  background: fogBackground(look.fogColor, look.fog, camera.horizon),
60
+ opacity: amount,
58
61
  } }));
59
62
  }
60
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-layers.js","sourceRoot":"","sources":["../src/mode7-layers.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-layers.js","sourceRoot":"","sources":["../src/mode7-layers.tsx"],"names":[],"mappings":";AASA,OAAO,EAA0C,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhF,SAAS,QAAQ,CAAC,KAAiB;IAClC,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED;sFACsF;AACtF,SAAS,WAAW,CAAC,CAA+D;IAInF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAClD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAyB;IACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,CACN,cACC,KAAK,EAAE;YACN,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAM;YACrB,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC;YACnD,yDAAyD;YACzD,OAAO,EAAE,MAAM;SACf,GACA,CACF,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAuC;IACrF,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,MAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,mDAAmD;IACnF,OAAO,CACN,cACC,KAAK,EAAE;YACN,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,WAAW,CAAC,CAAC;YACnB,GAAG,EAAE,WAAW,CAAC,CAAC;YAClB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,GAAG,MAAM,mCAAmC;YACpD,UAAU,EAAE,0BAA0B;YACtC,aAAa,EAAE,MAAM;SACrB,GACA,CACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAyB;IACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,CACN,cACC,KAAK,EAAE;YACN,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAM;YACrB,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC;YAClE,OAAO,EAAE,MAAM;SACf,GACA,CACF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EAC3B,GAAG,EACH,KAAK,EACL,QAAQ,GAKR;IACA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;SACvB,SAAS,EAAE;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrC,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEpC,OAAO,CACN,eACC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAE7F,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,8DAAkB,EAChF,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACtB,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,6EAAkB,CACjF,CAAC,CAAC,CAAC,CACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,iBAEC,KAAK,EAAE;oBACN,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;oBACN,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,SAAS;iBACjB,aAED,gBACC,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1C,EACF,yBAAO,CAAC,CAAC,EAAE,GAAQ,KAdd,CAAC,CAAC,EAAE,CAeF,CACR,CAAC,CACF,IACI,CACN,CAAC;AACH,CAAC;AASD,MAAM,UAAU,YAAY,CAAC,EAC5B,KAAK,EACL,QAAQ,GAIR;IACA,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAkC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,GAAG,GAAG,CAAC,CAAoB,EAAE,EAAE;QACpC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACN;QACC,yEAAyE;QACzE,+EAA+E;QAC/E,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAC9E,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACpB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC,EACD,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACxB,CAAC,EACD,WAAW,EAAE,GAAG,EAChB,eAAe,EAAE,GAAG,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,GACA,CACF,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-runtime.d.ts","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,iDAAiD;AACjD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAoC5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,IAAI,CA8KnF"}
1
+ {"version":3,"file":"mode7-runtime.d.ts","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,iDAAiD;AACjD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAoC5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,IAAI,CA+KnF"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { CaptureFrameLayer, CaptureLayer, FogLayer, SkyLayer } from "./mode7-layers.js";
3
- import { drawDistanceClip, drawDistanceOverscanPx, tiltTransform } from "./mode7-transform.js";
3
+ import { drawDistanceClip, drawDistanceOverscanPx, tiltTransform, transitionCamera, } from "./mode7-transform.js";
4
4
  /** The plugin's own layer ids (never tilted). */
5
5
  export const SKY_LAYER_ID = "mode7-sky";
6
6
  export const FOG_LAYER_ID = "mode7-fog";
@@ -74,8 +74,9 @@ export function setupMode7Runtime(ctx, store) {
74
74
  ensureStyleEl();
75
75
  if (!styleEl)
76
76
  return;
77
- const { camera, drawDistance } = store.getState();
78
- const { transform, transformOrigin } = tiltTransform(camera);
77
+ const { camera, drawDistance, amount } = store.getState();
78
+ // During an enter/exit transition the tilt is scaled by the eased amount.
79
+ const { transform, transformOrigin } = tiltTransform(transitionCamera(camera, amount));
79
80
  // Clip each tilted wrapper (so overflow:visible doesn't float content past the
80
81
  // grid); a finite draw distance tightens the top, one beyond the viewport lets it
81
82
  // extend (negative inset) with the grid overscanned to match. Distance is canvas
@@ -83,7 +84,7 @@ export function setupMode7Runtime(ctx, store) {
83
84
  // changes. clip-path keeps the tilt (overflow flattens).
84
85
  const zoom = ctx.store.getViewport().zoom;
85
86
  const heightPx = container.getBoundingClientRect().height;
86
- const clip = drawDistanceClip(drawDistance, zoom, heightPx);
87
+ const clip = drawDistanceClip(drawDistance, zoom, heightPx, amount);
87
88
  const overscan = drawDistanceOverscanPx(drawDistance, zoom, heightPx);
88
89
  driveGridOverscan(overscan > 0 ? overscan + OVERSCAN_BUFFER : 0);
89
90
  const clipRule = `clip-path:${clip} !important;`;
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAE9B,iDAAiD;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,gFAAgF;AAChF,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,6FAA6F;AAC7F,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;;GAQG;AACH,SAAS,aAAa;IACrB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,IAAI,GAAuB,IAAI,CAAC;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAI,EAAkB,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;QAChC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,GAAG,MAAM,CAAC;QACf,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAkB,EAAE,KAAiB;IACtE,MAAM,UAAU,GAAG,kBAAkB,CAAC;IACtC,IAAI,OAAO,GAA4B,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAS,EAAE;QAChC,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QACvD,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,kFAAkF;IAClF,MAAM,SAAS,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEnE,uFAAuF;IACvF,mFAAmF;IACnF,uFAAuF;IACvF,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAQ,EAAE;QAC9C,IAAI,EAAE,KAAK,YAAY;YAAE,OAAO;QAChC,YAAY,GAAG,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QAC5B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzC,aAAa,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1D,0EAA0E;QAC1E,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,+EAA+E;QAC/E,kFAAkF;QAClF,iFAAiF;QACjF,qFAAqF;QACrF,yDAAyD;QACzD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtE,iBAAiB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,aAAa,IAAI,cAAc,CAAC;QACjD,8EAA8E;QAC9E,6EAA6E;QAC7E,+EAA+E;QAC/E,4EAA4E;QAC5E,2EAA2E;QAC3E,qEAAqE;QACrE,oFAAoF;QACpF,MAAM,UAAU,GAAG,KAAK;aACtB,QAAQ,EAAE;aACV,UAAU,CAAC,GAAG,CACd,CAAC,EAAE,EAAE,EAAE,CACN,IAAI,UAAU,0BAA0B,SAAS,CAAC,EAAE,CAAC,gBAAgB,SAAS,gCAAgC,eAAe,kFAAkF,QAAQ,GAAG,CAC3N;aACA,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC3B,IAAI,OAAO;YAAE,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;QACtC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACrC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,UAAU,GAAG,CAAC;gBAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC/F,CAAC;QACD,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,wDAAwD;IAC/E,CAAC,CAAC;IAEF;;;;OAIG;IACH,MAAM,iBAAiB,GAAG,GAAuB,EAAE;QAClD,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO;YACN,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI;YAClB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI;SAC1B,CAAC;IACH,CAAC,CAAC;IAEF,+EAA+E;IAC/E,kFAAkF;IAClF,oDAAoD;IACpD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,YAAY,GAAG,GAAS,EAAE;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC;QACxC,gFAAgF;QAChF,+EAA+E;QAC/E,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;QACvB,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;YACjC,IAAI,IAAI;gBAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAS,EAAE;QACvB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;YAAE,SAAS,EAAE,CAAC;;YACpC,QAAQ,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,mEAAmE;IACnE,MAAM,QAAQ,GAAG;QAChB,KAAK,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,MAAc,EAAE,MAAgC,EAAE,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;KACD,CAAC;IAEF,wEAAwE;IACxE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI;KACxC,CAAC,CAAC;IACH,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI;KACxC,CAAC,CAAC;IACH,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI;KAChE,CAAC,CAAC;IACH,0EAA0E;IAC1E,mFAAmF;IACnF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnB,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAI;KAC3E,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE1C,oFAAoF;IACpF,mFAAmF;IACnF,MAAM,eAAe,GAAG,GAAS,EAAE;QAClC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;YAAE,SAAS,EAAE,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAAE,eAAe,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,IAAI,QAAQ;QAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1D,2CAA2C;IAC3C,IAAI,EAAE,CAAC;IAEP,OAAO,GAAG,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,GAAG,IAAI,CAAC;QACf,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,IAAI,QAAQ;YAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACxC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC,CAAC;AACH,CAAC"}
@@ -1,12 +1,21 @@
1
1
  import { type BoundingBox, type ServiceRegistry } from "@edv4h/usketch-shared";
2
2
  import type { Camera } from "./mode7-camera.js";
3
3
  import type { Look, Mode7Store } from "./mode7-store.js";
4
+ import type { Mode7SwitchOptions, Mode7Transition } from "./mode7-transition.js";
4
5
  export interface Mode7Api {
5
- /** Whether the 3D view is currently on. */
6
+ /** Whether the 3D view is currently shown (still `true` during an exit transition). */
6
7
  isActive(): boolean;
7
- enable(): void;
8
- disable(): void;
9
- toggle(): void;
8
+ /** Turn the view on. `{ animate: true }` raises the ground from flat and fades the
9
+ * sky/fog in; the default follows the plugin's `transition` option. */
10
+ enable(opts?: Mode7SwitchOptions): void;
11
+ /** Turn the view off (animated: back to flat, then inactive). */
12
+ disable(opts?: Mode7SwitchOptions): void;
13
+ /** Flip the view; mid-transition it reverses from the current state. */
14
+ toggle(opts?: Mode7SwitchOptions): void;
15
+ /** Whether an enter/exit transition is running (fires `onChange` per frame). */
16
+ isTransitioning(): boolean;
17
+ /** The rendered transition amount, 0 (flat/off) … 1 (fully 3D), eased. */
18
+ getTransitionAmount(): number;
10
19
  /** The current camera geometry. */
11
20
  getCamera(): Camera;
12
21
  setPitch(deg: number): void;
@@ -40,11 +49,11 @@ export interface Mode7Api {
40
49
  toggleCaptureFrame(): void;
41
50
  /** The world rect captured at the last switch-on, or `null`. */
42
51
  getCaptureRect(): BoundingBox | null;
43
- /** Fire on any active/camera/look/tilt-layer/frame change. Returns an unsubscribe. */
52
+ /** Fire on any active/transition/camera/look/tilt-layer/frame change. Returns an unsubscribe. */
44
53
  onChange(listener: () => void): () => void;
45
54
  }
46
55
  export declare const mode7Service: import("@edv4h/usketch-shared").ServiceHandle<Mode7Api>;
47
- export declare function createMode7Api(store: Mode7Store): Mode7Api;
56
+ export declare function createMode7Api(store: Mode7Store, transition: Mode7Transition): Mode7Api;
48
57
  /** Host accessor: `getMode7Api(app.services)?.toggle()`. Undefined when inactive. */
49
58
  export declare function getMode7Api(services: ServiceRegistry): Mode7Api | undefined;
50
59
  //# sourceMappingURL=mode7-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-service.d.ts","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACxB,2CAA2C;IAC3C,QAAQ,IAAI,OAAO,CAAC;IACpB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;IACf,mCAAmC;IACnC,SAAS,IAAI,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,8CAA8C;IAC9C,aAAa,IAAI,SAAS,MAAM,EAAE,CAAC;IACnC,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,eAAe,IAAI,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,4DAA4D;IAC5D,qBAAqB,IAAI,OAAO,CAAC;IACjC,2CAA2C;IAC3C,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,iDAAiD;IACjD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,gEAAgE;IAChE,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,YAAY,yDAAkD,CAAC;AAE5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CA4B1D;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
1
+ {"version":3,"file":"mode7-service.d.ts","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,QAAQ;IACxB,uFAAuF;IACvF,QAAQ,IAAI,OAAO,CAAC;IACpB;4EACwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,iEAAiE;IACjE,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,wEAAwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,gFAAgF;IAChF,eAAe,IAAI,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,mBAAmB,IAAI,MAAM,CAAC;IAC9B,mCAAmC;IACnC,SAAS,IAAI,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,8CAA8C;IAC9C,aAAa,IAAI,SAAS,MAAM,EAAE,CAAC;IACnC,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,eAAe,IAAI,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,4DAA4D;IAC5D,qBAAqB,IAAI,OAAO,CAAC;IACjC,2CAA2C;IAC3C,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,iDAAiD;IACjD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,gEAAgE;IAChE,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,YAAY,yDAAkD,CAAC;AAE5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,QAAQ,CA8BvF;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
@@ -3,12 +3,14 @@
3
3
  // can drive the Mode 7 view without the HUD.
4
4
  import { defineService } from "@edv4h/usketch-shared";
5
5
  export const mode7Service = defineService("usketch-plugin-mode7");
6
- export function createMode7Api(store) {
6
+ export function createMode7Api(store, transition) {
7
7
  return {
8
8
  isActive: () => store.getState().active,
9
- enable: () => store.setActive(true),
10
- disable: () => store.setActive(false),
11
- toggle: () => store.toggle(),
9
+ enable: (opts) => transition.enable(opts),
10
+ disable: (opts) => transition.disable(opts),
11
+ toggle: (opts) => transition.toggle(opts),
12
+ isTransitioning: () => transition.isTransitioning(),
13
+ getTransitionAmount: () => store.getState().amount,
12
14
  getCamera: () => store.getState().camera,
13
15
  setPitch: (deg) => store.setCamera({ pitch: deg }),
14
16
  setYaw: (deg) => store.setCamera({ yaw: deg }),
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,16 @@ export declare const DEFAULT_DRAW_DISTANCE = 1500;
22
22
  */
23
23
  export declare const DEFAULT_TILT_LAYER_IDS: readonly string[];
24
24
  export interface Mode7State {
25
+ /** Whether the 3D view is shown. Stays `true` while an exit transition plays, so the
26
+ * capture layer keeps blocking edits until the board is flat again. */
25
27
  active: boolean;
28
+ /** Linear transition progress, 0 (flat / off) … 1 (fully in 3D). Settled at `1`
29
+ * while active and `0` while inactive; only in between during a transition. */
30
+ progress: number;
31
+ /** The eased amount actually RENDERED (tilt scale, sky/fog opacity), 0 … 1. */
32
+ amount: number;
33
+ /** Whether an enter/exit transition is running. */
34
+ transitioning: boolean;
26
35
  camera: Camera;
27
36
  look: Look;
28
37
  /** Layer ids currently rendered in 3D (user-selectable at runtime). */
@@ -48,11 +57,16 @@ export interface Mode7Init {
48
57
  drawDistance?: number;
49
58
  showCaptureFrame?: boolean;
50
59
  }
60
+ /** The presentation fields a transition drives, set together in ONE update per frame. */
61
+ export type Mode7Presentation = Pick<Mode7State, "active" | "progress" | "amount" | "transitioning">;
51
62
  export interface Mode7Store {
52
63
  getState(): Mode7State;
53
64
  subscribe(cb: () => void): () => void;
65
+ /** Switch instantly (settles progress/amount, cancels nothing — see the transition). */
54
66
  setActive(active: boolean): void;
55
67
  toggle(): void;
68
+ /** Set the transition-driven fields in one notification (used by the transition). */
69
+ setPresentation(p: Mode7Presentation): void;
56
70
  setCamera(patch: Partial<Camera>): void;
57
71
  adjustCamera(delta: Partial<Camera>): void;
58
72
  setLook(patch: Partial<Look>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAA6C,MAAM,mBAAmB,CAAC;AAE3F,+DAA+D;AAC/D,MAAM,WAAW,IAAI;IACpB,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,IAAyD,CAAC;AAErF;mFACmF;AACnF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAQ1C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EA+BnD,CAAC;AAEF,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,uEAAuE;IACvE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;2FACuF;IACvF,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,IAAI,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,MAAM,IAAI,IAAI,CAAC;IACf,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sFAAsF;IACtF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,qDAAqD;IACrD,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,iDAAiD;IACjD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,SAAc,GAAG,UAAU,CA2FjE"}
1
+ {"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,9 @@ export function createMode7Store(init = {}) {
53
53
  const baseLook = { ...DEFAULT_LOOK, ...init.look };
54
54
  let state = {
55
55
  active: init.active ?? false,
56
+ progress: init.active ? 1 : 0,
57
+ amount: init.active ? 1 : 0,
58
+ transitioning: false,
56
59
  camera: baseCamera,
57
60
  look: baseLook,
58
61
  tiltLayers: [...(init.tiltLayers ?? DEFAULT_TILT_LAYER_IDS)],
@@ -74,13 +77,26 @@ export function createMode7Store(init = {}) {
74
77
  };
75
78
  },
76
79
  setActive(active) {
77
- if (state.active === active)
80
+ const v = active ? 1 : 0;
81
+ if (state.active === active && state.progress === v && !state.transitioning)
78
82
  return;
79
- state = { ...state, active };
83
+ state = { ...state, active, progress: v, amount: v, transitioning: false };
80
84
  notify();
81
85
  },
82
86
  toggle() {
83
- state = { ...state, active: !state.active };
87
+ const active = !state.active;
88
+ const v = active ? 1 : 0;
89
+ state = { ...state, active, progress: v, amount: v, transitioning: false };
90
+ notify();
91
+ },
92
+ setPresentation(p) {
93
+ if (state.active === p.active &&
94
+ state.progress === p.progress &&
95
+ state.amount === p.amount &&
96
+ state.transitioning === p.transitioning) {
97
+ return;
98
+ }
99
+ state = { ...state, ...p };
84
100
  notify();
85
101
  },
86
102
  setCamera(patch) {
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export interface TiltTransform {
6
6
  transformOrigin: string;
7
7
  }
8
8
  /** The full CSS transform (perspective + rotate) for a tilted layer wrapper. */
9
+ /**
10
+ * The camera as rendered at transition `amount` (0 = flat, 1 = the stored camera):
11
+ * pitch and yaw scale toward 0 so the ground rises from (and settles back to) the
12
+ * flat board without a heading snap. fov/horizon are kept — at pitch 0 they're inert.
13
+ */
14
+ export declare function transitionCamera(cam: Camera, amount: number): Camera;
9
15
  export declare function tiltTransform(cam: Camera): TiltTransform;
10
16
  /**
11
17
  * Sky backdrop (painted behind the tilted plane): a vertical gradient from the sky
@@ -39,7 +45,10 @@ export declare function fogOpacity(density: number): number;
39
45
  * must be extended to match (see {@link drawDistanceOverscanPx}) or that far content
40
46
  * would float; `clip-path` keeps the 3D tilt intact (unlike `overflow`, flattening).
41
47
  */
42
- export declare function drawDistanceClip(distance: number, zoom: number, viewportHeightPx: number): string;
48
+ export declare function drawDistanceClip(distance: number, zoom: number, viewportHeightPx: number,
49
+ /** Transition amount 0…1: a near-band clip fades in with the tilt, so the still-flat
50
+ * board isn't cut off at the top while the ground rises. */
51
+ strength?: number): string;
43
52
  /**
44
53
  * The px the background grid must extend ABOVE/BEYOND the viewport box to stay under the
45
54
  * content that {@link drawDistanceClip} reveals for a draw `distance` larger than the
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-transform.d.ts","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAKxD;AAUD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAcjG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAIR;AAuBD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzD"}
1
+ {"version":3,"file":"mode7-transform.d.ts","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAKxD;AAUD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM;AACxB;6DAC6D;AAC7D,QAAQ,SAAI,GACV,MAAM,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAIR;AAuBD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzD"}
@@ -1,4 +1,15 @@
1
1
  /** The full CSS transform (perspective + rotate) for a tilted layer wrapper. */
2
+ /**
3
+ * The camera as rendered at transition `amount` (0 = flat, 1 = the stored camera):
4
+ * pitch and yaw scale toward 0 so the ground rises from (and settles back to) the
5
+ * flat board without a heading snap. fov/horizon are kept — at pitch 0 they're inert.
6
+ */
7
+ export function transitionCamera(cam, amount) {
8
+ const a = Math.min(1, Math.max(0, amount));
9
+ if (a === 1)
10
+ return cam;
11
+ return { ...cam, pitch: cam.pitch * a, yaw: cam.yaw * a };
12
+ }
2
13
  export function tiltTransform(cam) {
3
14
  return {
4
15
  transform: `perspective(${round(cam.fov)}px) rotateX(${round(cam.pitch)}deg) rotateZ(${round(cam.yaw)}deg)`,
@@ -57,14 +68,18 @@ export function fogOpacity(density) {
57
68
  * must be extended to match (see {@link drawDistanceOverscanPx}) or that far content
58
69
  * would float; `clip-path` keeps the 3D tilt intact (unlike `overflow`, flattening).
59
70
  */
60
- export function drawDistanceClip(distance, zoom, viewportHeightPx) {
71
+ export function drawDistanceClip(distance, zoom, viewportHeightPx,
72
+ /** Transition amount 0…1: a near-band clip fades in with the tilt, so the still-flat
73
+ * board isn't cut off at the top while the ground rises. */
74
+ strength = 1) {
61
75
  if (!(distance > 0) || !(zoom > 0) || !(viewportHeightPx > 0)) {
62
76
  return "inset(0% 0% 0% 0%)"; // auto → clip to the box
63
77
  }
64
78
  const bandPx = distance * zoom;
65
79
  if (bandPx <= viewportHeightPx) {
66
80
  // Within the viewport: keep only the near band; sides stay at the box.
67
- return `inset(${round((1 - bandPx / viewportHeightPx) * 100)}% 0% 0% 0%)`;
81
+ const s = Math.min(1, Math.max(0, strength));
82
+ return `inset(${round((1 - bandPx / viewportHeightPx) * 100 * s)}% 0% 0% 0%)`;
68
83
  }
69
84
  // Beyond the viewport: extend equally on ALL sides so the far ground fans out
70
85
  // (not just a box-wide strip). The grid overscans to match; the canvas container
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-transform.js","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-transform.js","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Mode7Store } from "./mode7-store.js";
2
+ export type Mode7Easing = "linear" | "ease-in" | "ease-out" | "ease-in-out" | ((t: number) => number);
3
+ export interface Mode7TransitionOptions {
4
+ /** Duration of a full enter/exit in ms. `0` (default) = switch instantly unless a
5
+ * call passes `{ animate: true }` (which then uses {@link DEFAULT_TRANSITION_MS}). */
6
+ durationMs?: number;
7
+ /** Default `"ease-in-out"`. */
8
+ easing?: Mode7Easing;
9
+ }
10
+ /** Duration used by an explicit `{ animate: true }` when no `durationMs` is configured. */
11
+ export declare const DEFAULT_TRANSITION_MS = 900;
12
+ export interface Mode7SwitchOptions {
13
+ /** Animate this switch (default: animate iff a `transition.durationMs > 0` is set). */
14
+ animate?: boolean;
15
+ }
16
+ /** Injectable timing (tests drive frames by hand). */
17
+ export interface Mode7Clock {
18
+ now(): number;
19
+ requestFrame(cb: (now: number) => void): number;
20
+ cancelFrame(id: number): void;
21
+ prefersReducedMotion(): boolean;
22
+ }
23
+ export interface Mode7Transition {
24
+ enable(opts?: Mode7SwitchOptions): void;
25
+ disable(opts?: Mode7SwitchOptions): void;
26
+ toggle(opts?: Mode7SwitchOptions): void;
27
+ isTransitioning(): boolean;
28
+ /** Stop any running animation, leaving the current rendered state. */
29
+ dispose(): void;
30
+ }
31
+ export declare function resolveEasing(e: Mode7Easing | undefined): (t: number) => number;
32
+ export declare function browserClock(): Mode7Clock;
33
+ export declare function createMode7Transition(store: Mode7Store, options?: Mode7TransitionOptions, clock?: Mode7Clock): Mode7Transition;
34
+ //# sourceMappingURL=mode7-transition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode7-transition.d.ts","sourceRoot":"","sources":["../src/mode7-transition.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,WAAW,GACpB,QAAQ,GACR,SAAS,GACT,UAAU,GACV,aAAa,GACb,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACtC;2FACuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,2FAA2F;AAC3F,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IAClC,uFAAuF;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,sDAAsD;AACtD,MAAM,WAAW,UAAU;IAC1B,GAAG,IAAI,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;IAChD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,IAAI,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,eAAe,IAAI,OAAO,CAAC;IAC3B,sEAAsE;IACtE,OAAO,IAAI,IAAI,CAAC;CAChB;AASD,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAG/E;AAID,wBAAgB,YAAY,IAAI,UAAU,CAgBzC;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,sBAA2B,EACpC,KAAK,GAAE,UAA2B,GAChC,eAAe,CAqEjB"}
@@ -0,0 +1,99 @@
1
+ /** Duration used by an explicit `{ animate: true }` when no `durationMs` is configured. */
2
+ export const DEFAULT_TRANSITION_MS = 900;
3
+ const EASINGS = {
4
+ linear: (t) => t,
5
+ "ease-in": (t) => t * t * t,
6
+ "ease-out": (t) => 1 - (1 - t) ** 3,
7
+ "ease-in-out": (t) => (t < 0.5 ? 4 * t * t * t : 1 - (-2 * t + 2) ** 3 / 2),
8
+ };
9
+ export function resolveEasing(e) {
10
+ if (typeof e === "function")
11
+ return e;
12
+ return EASINGS[e ?? "ease-in-out"] ?? EASINGS["ease-in-out"];
13
+ }
14
+ const clamp01 = (v) => (v < 0 ? 0 : v > 1 ? 1 : v);
15
+ export function browserClock() {
16
+ return {
17
+ now: () => (typeof performance !== "undefined" ? performance.now() : Date.now()),
18
+ requestFrame: (cb) => typeof requestAnimationFrame === "function"
19
+ ? requestAnimationFrame(cb)
20
+ : setTimeout(() => cb(Date.now()), 16),
21
+ cancelFrame: (id) => {
22
+ if (typeof cancelAnimationFrame === "function")
23
+ cancelAnimationFrame(id);
24
+ else
25
+ clearTimeout(id);
26
+ },
27
+ prefersReducedMotion: () => typeof window !== "undefined" &&
28
+ typeof window.matchMedia === "function" &&
29
+ window.matchMedia("(prefers-reduced-motion: reduce)").matches,
30
+ };
31
+ }
32
+ export function createMode7Transition(store, options = {}, clock = browserClock()) {
33
+ const configured = Math.max(0, options.durationMs ?? 0);
34
+ const ease = resolveEasing(options.easing);
35
+ let frame = null;
36
+ let direction = 1;
37
+ let last = 0;
38
+ const stop = () => {
39
+ if (frame !== null)
40
+ clock.cancelFrame(frame);
41
+ frame = null;
42
+ };
43
+ /** Where a switch would end up: the running direction, else the settled state. */
44
+ const target = () => (frame !== null ? direction === 1 : store.getState().active);
45
+ const settle = (on) => {
46
+ stop();
47
+ store.setActive(on);
48
+ };
49
+ const step = (now, durationMs) => {
50
+ frame = null;
51
+ const dt = Math.max(0, now - last);
52
+ last = now;
53
+ const p = clamp01(store.getState().progress + (direction * dt) / durationMs);
54
+ const done = direction === 1 ? p >= 1 : p <= 0;
55
+ if (done) {
56
+ store.setPresentation({
57
+ active: direction === 1,
58
+ progress: direction === 1 ? 1 : 0,
59
+ amount: direction === 1 ? 1 : 0,
60
+ transitioning: false,
61
+ });
62
+ return;
63
+ }
64
+ store.setPresentation({ active: true, progress: p, amount: ease(p), transitioning: true });
65
+ frame = clock.requestFrame((t) => step(t, durationMs));
66
+ };
67
+ const run = (on, opts) => {
68
+ const animate = opts?.animate ?? configured > 0;
69
+ const durationMs = configured > 0 ? configured : DEFAULT_TRANSITION_MS;
70
+ if (!animate || clock.prefersReducedMotion()) {
71
+ settle(on);
72
+ return;
73
+ }
74
+ const s = store.getState();
75
+ // Already settled at the requested end → nothing to animate.
76
+ if (frame === null && s.active === on && s.progress === (on ? 1 : 0))
77
+ return;
78
+ direction = on ? 1 : -1;
79
+ if (frame !== null)
80
+ return; // reversing mid-flight: keep the running loop, new direction
81
+ last = clock.now();
82
+ // Mark the transition started (and `active` on for an enter) in the same update.
83
+ store.setPresentation({
84
+ active: true,
85
+ progress: s.progress,
86
+ amount: ease(s.progress),
87
+ transitioning: true,
88
+ });
89
+ frame = clock.requestFrame((t) => step(t, durationMs));
90
+ };
91
+ return {
92
+ enable: (opts) => run(true, opts),
93
+ disable: (opts) => run(false, opts),
94
+ toggle: (opts) => run(!target(), opts),
95
+ isTransitioning: () => store.getState().transitioning,
96
+ dispose: stop,
97
+ };
98
+ }
99
+ //# sourceMappingURL=mode7-transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode7-transition.js","sourceRoot":"","sources":["../src/mode7-transition.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { UsketchPlugin } from "@edv4h/usketch-shared";
2
2
  import type { Camera } from "./mode7-camera.js";
3
3
  import { type Look } from "./mode7-store.js";
4
+ import { type Mode7TransitionOptions } from "./mode7-transition.js";
4
5
  import { type Mode7Shortcuts } from "./register-mode7-actions.js";
5
6
  export interface Mode7PluginOptions {
6
7
  /** Start with the 3D view already on (default `false`). */
@@ -22,6 +23,13 @@ export interface Mode7PluginOptions {
22
23
  showCaptureFrame?: boolean;
23
24
  /** Keyboard shortcut bindings (opt-in; no defaults). */
24
25
  shortcuts?: Mode7Shortcuts;
26
+ /**
27
+ * Animate switching the view on/off: the ground rises from flat to `camera.pitch`
28
+ * (and back) while the sky/fog fade. Default `durationMs: 0` = instant; with it
29
+ * set, every switch (HUD, actions, `mode7:toggle`, service) animates unless a call
30
+ * passes `{ animate: false }`. Honors `prefers-reduced-motion`.
31
+ */
32
+ transition?: Mode7TransitionOptions;
25
33
  }
26
34
  export declare function createMode7Plugin(options?: Mode7PluginOptions): UsketchPlugin;
27
35
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAShD,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,6BAA6B,CAAC;AAGxF,MAAM,WAAW,kBAAkB;IAClC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;4DACwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAuCjF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAShD,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,6BAA6B,CAAC;AAGxF,MAAM,WAAW,kBAAkB;IAClC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;4DACwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAyCjF"}
package/dist/plugin.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { CAPTURE_FRAME_LAYER_ID, CAPTURE_LAYER_ID, FOG_LAYER_ID, SKY_LAYER_ID, setupMode7Runtime, } from "./mode7-runtime.js";
2
2
  import { createMode7Api, mode7Service } from "./mode7-service.js";
3
3
  import { createMode7Store } from "./mode7-store.js";
4
+ import { createMode7Transition } from "./mode7-transition.js";
4
5
  import { registerMode7Actions } from "./register-mode7-actions.js";
5
6
  import { registerMode7Hud } from "./register-mode7-hud.js";
6
7
  export function createMode7Plugin(options = {}) {
@@ -12,7 +13,8 @@ export function createMode7Plugin(options = {}) {
12
13
  drawDistance: options.drawDistance,
13
14
  showCaptureFrame: options.showCaptureFrame,
14
15
  });
15
- const api = createMode7Api(store);
16
+ const transition = createMode7Transition(store, options.transition);
17
+ const api = createMode7Api(store, transition);
16
18
  // Layers the picker must never tilt (tilting the HUD or our own overlays makes
17
19
  // no sense and could hide the very controls used to turn the view off).
18
20
  const excludedLayerIds = [
@@ -36,6 +38,7 @@ export function createMode7Plugin(options = {}) {
36
38
  unprovideService();
37
39
  stopHud();
38
40
  stopActions();
41
+ transition.dispose();
39
42
  stopRuntime();
40
43
  };
41
44
  },
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,EACN,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAuB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAwB3D,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAuB,EAAE;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,YAAY;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,gBAAgB,GAAG;QACxB,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,WAAW;QACX,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,GAAkB;YACvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACpE,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEjE,OAAO,GAAG,EAAE;gBACX,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;YACf,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,EACN,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAA+B,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAuB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA+B3D,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAuB,EAAE;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,YAAY;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9C,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,gBAAgB,GAAG;QACxB,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,WAAW;QACX,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,GAAkB;YACvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACpE,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEjE,OAAO,GAAG,EAAE;gBACX,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,WAAW,EAAE,CAAC;YACf,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edv4h/usketch-plugin-mode7",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@edv4h/usketch-shared": "4.14.0",
16
- "@edv4h/usketch-store": "3.8.0"
15
+ "@edv4h/usketch-store": "3.8.0",
16
+ "@edv4h/usketch-shared": "4.14.0"
17
17
  },
18
18
  "peerDependencies": {
19
19
  "react": ">=19"