@edv4h/usketch-plugin-mode7 0.2.0 → 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/LICENSE +21 -0
- package/README.md +19 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mode7-layers.d.ts.map +1 -1
- package/dist/mode7-layers.js +5 -2
- package/dist/mode7-layers.js.map +1 -1
- package/dist/mode7-runtime.d.ts.map +1 -1
- package/dist/mode7-runtime.js +5 -4
- package/dist/mode7-runtime.js.map +1 -1
- package/dist/mode7-service.d.ts +15 -6
- package/dist/mode7-service.d.ts.map +1 -1
- package/dist/mode7-service.js +6 -4
- package/dist/mode7-service.js.map +1 -1
- package/dist/mode7-store.d.ts +14 -0
- package/dist/mode7-store.d.ts.map +1 -1
- package/dist/mode7-store.js +21 -3
- package/dist/mode7-store.js.map +1 -1
- package/dist/mode7-transform.d.ts +10 -1
- package/dist/mode7-transform.d.ts.map +1 -1
- package/dist/mode7-transform.js +17 -2
- package/dist/mode7-transform.js.map +1 -1
- package/dist/mode7-transition.d.ts +34 -0
- package/dist/mode7-transition.d.ts.map +1 -0
- package/dist/mode7-transition.js +99 -0
- package/dist/mode7-transition.js.map +1 -0
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -1
- package/dist/plugin.js.map +1 -1
- package/package.json +48 -48
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 EdV4H
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
ビルドで除去され実行時に存在しないため)。スタイルシート方式なので React の再レンダで消えず、後からマウント
|
|
13
13
|
する層にも適用され、per-element の注入も `MutationObserver` も要らない。コアの座標変換(affine `{x,y,zoom}`)には触れない。
|
|
14
14
|
- 傾ける対象は **allow 方式**で、既定は「**固定UIクロム以外のほぼ全層**」(背景/Shape/GPU に加え、
|
|
15
|
-
|
|
15
|
+
選択・コネクタ・各種オーバーレイ層、`usketch-plugin-character` の `character` 層も含む。除外は `vim-status-line`/`vim-which-key`/`vim-help`/
|
|
16
16
|
`side-panel`/`presentation-overlay` の固定UI)。**HUD の「Mode 7 レイヤー」パネルから実行時に選択できる**
|
|
17
17
|
(例: Shape 層のオン/オフ)。HUD 自身やプラグインの sky/fog/capture 層は選択肢から除外され、絶対に
|
|
18
18
|
傾かない(`skipLayerIds` で除外を追加可)。既定一覧は `DEFAULT_TILT_LAYER_IDS` を参照。
|
|
@@ -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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/mode7-layers.js
CHANGED
|
@@ -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
|
/**
|
package/dist/mode7-layers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"mode7-layers.js","sourceRoot":"","sources":["../src/mode7-layers.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/mode7-runtime.js
CHANGED
|
@@ -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
|
-
|
|
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":";AAaA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,
|
|
1
|
+
{"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"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"}
|
package/dist/mode7-service.d.ts
CHANGED
|
@@ -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
|
|
6
|
+
/** Whether the 3D view is currently shown (still `true` during an exit transition). */
|
|
6
7
|
isActive(): boolean;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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;
|
|
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"}
|
package/dist/mode7-service.js
CHANGED
|
@@ -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: () =>
|
|
10
|
-
disable: () =>
|
|
11
|
-
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":"AAAA,mFAAmF;AACnF,oFAAoF;AACpF,6CAA6C;AAC7C,OAAO,EAAoB,aAAa,EAAwB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
|
package/dist/mode7-store.d.ts
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
|
package/dist/mode7-store.js
CHANGED
|
@@ -45,12 +45,17 @@ export const DEFAULT_TILT_LAYER_IDS = [
|
|
|
45
45
|
"transient",
|
|
46
46
|
"portal",
|
|
47
47
|
"usketch-presence-activity",
|
|
48
|
+
// controllable characters (usketch-plugin-character) walk on the ground plane
|
|
49
|
+
"character",
|
|
48
50
|
];
|
|
49
51
|
export function createMode7Store(init = {}) {
|
|
50
52
|
const baseCamera = clampCamera({ ...DEFAULT_CAMERA, ...init.camera });
|
|
51
53
|
const baseLook = { ...DEFAULT_LOOK, ...init.look };
|
|
52
54
|
let state = {
|
|
53
55
|
active: init.active ?? false,
|
|
56
|
+
progress: init.active ? 1 : 0,
|
|
57
|
+
amount: init.active ? 1 : 0,
|
|
58
|
+
transitioning: false,
|
|
54
59
|
camera: baseCamera,
|
|
55
60
|
look: baseLook,
|
|
56
61
|
tiltLayers: [...(init.tiltLayers ?? DEFAULT_TILT_LAYER_IDS)],
|
|
@@ -72,13 +77,26 @@ export function createMode7Store(init = {}) {
|
|
|
72
77
|
};
|
|
73
78
|
},
|
|
74
79
|
setActive(active) {
|
|
75
|
-
|
|
80
|
+
const v = active ? 1 : 0;
|
|
81
|
+
if (state.active === active && state.progress === v && !state.transitioning)
|
|
76
82
|
return;
|
|
77
|
-
state = { ...state, active };
|
|
83
|
+
state = { ...state, active, progress: v, amount: v, transitioning: false };
|
|
78
84
|
notify();
|
|
79
85
|
},
|
|
80
86
|
toggle() {
|
|
81
|
-
|
|
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 };
|
|
82
100
|
notify();
|
|
83
101
|
},
|
|
84
102
|
setCamera(patch) {
|
package/dist/mode7-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAY3F,MAAM,CAAC,MAAM,YAAY,GAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAErF;mFACmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,2FAA2F;AAC3F,SAAS,aAAa,CAAC,CAAS;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACxD,wBAAwB;IACxB,SAAS;IACT,SAAS;IACT,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,uCAAuC;IACvC,+EAA+E;IAC/E,gBAAgB;IAChB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,wBAAwB;IACxB,yCAAyC;IACzC,6BAA6B;IAC7B,4BAA4B;IAC5B,wDAAwD;IACxD,aAAa;IACb,aAAa;IACb,OAAO;IACP,iBAAiB;IACjB,WAAW;IACX,eAAe;IACf,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,QAAQ;IACR,2BAA2B;
|
|
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
|
|
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,
|
|
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"}
|
package/dist/mode7-transform.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAsBA,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,GAAW;IACxC,OAAO;QACN,SAAS,EAAE,eAAe,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;QAC3G,eAAe,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG;KACnD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAe;IACzD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,8BAA8B,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,kBAAkB,WAAW,IAAI,CAAC;AACvH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IAC5E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,0CAA0C,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC3G,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,
|
|
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":"AA2BA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAwBzC,MAAM,OAAO,GAA+E;IAC3F,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,CAA0B;IACvD,IAAI,OAAO,CAAC,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,UAAU,YAAY;IAC3B,OAAO;QACN,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAChF,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CACpB,OAAO,qBAAqB,KAAK,UAAU;YAC1C,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAE,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAuB;QAC/D,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;YACnB,IAAI,OAAO,oBAAoB,KAAK,UAAU;gBAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;;gBACpE,YAAY,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,oBAAoB,EAAE,GAAG,EAAE,CAC1B,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;YACvC,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO;KAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,KAAiB,EACjB,OAAO,GAA2B,EAAE,EACpC,KAAK,GAAe,YAAY,EAAE;IAElC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,SAAS,GAAW,CAAC,CAAC;IAC1B,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,GAAS,EAAE;QACvB,IAAI,KAAK,KAAK,IAAI;YAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,GAAG,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,kFAAkF;IAClF,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAE3F,MAAM,MAAM,GAAG,CAAC,EAAW,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,UAAkB,EAAQ,EAAE;QACtD,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;QACX,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,eAAe,CAAC;gBACrB,MAAM,EAAE,SAAS,KAAK,CAAC;gBACvB,QAAQ,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,aAAa,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,EAAW,EAAE,IAAoC,EAAQ,EAAE;QACvE,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACvE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,OAAO;QACR,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,6DAA6D;QAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO;QAC7E,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,6DAA6D;QACzF,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,iFAAiF;QACjF,KAAK,CAAC,eAAe,CAAC;YACrB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxB,aAAa,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,OAAO;QACN,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;QACnC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;QACtC,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa;QACrD,OAAO,EAAE,IAAI;KACb,CAAC;AACH,CAAC"}
|
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
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
},
|
package/dist/plugin.js.map
CHANGED
|
@@ -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;
|
|
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,49 +1,49 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
2
|
+
"name": "@edv4h/usketch-plugin-mode7",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"source": "./src/index.ts",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@edv4h/usketch-store": "3.8.0",
|
|
16
|
+
"@edv4h/usketch-shared": "4.14.0"
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"react": ">=19"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/EdV4H/usketch.git",
|
|
32
|
+
"directory": "plugins/usketch-plugin-mode7"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://github.com/EdV4H/usketch#readme",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/EdV4H/usketch/issues"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/react": "19.2.18",
|
|
40
|
+
"typescript": "7.0.2",
|
|
41
|
+
"vitest": "4.1.11"
|
|
42
|
+
},
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsc -p tsconfig.json",
|
|
45
|
+
"typecheck": "tsc --noEmit",
|
|
46
|
+
"test": "vitest run --passWithNoTests",
|
|
47
|
+
"clean": "rm -rf dist"
|
|
48
|
+
}
|
|
49
|
+
}
|