@vibes.diy/vibe-runtime 14.3.167 → 14.3.172

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.
@@ -1 +1 @@
1
- {"version":3,"file":"backend-executor.js","sourceRoot":"","sources":["../jsr/backend-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAMlF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAI3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGnG,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAInG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAE7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AA+oB3E,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAgCD,MAAM,UAAU,qBAAqB,CAAC,IAAmB,EAAE,IAAI,GAAiC,EAAE;IAChG,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"backend-executor.js","sourceRoot":"","sources":["../jsr/backend-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAMlF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAI3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGnG,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAInG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAE7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAipB3E,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAgCD,MAAM,UAAU,qBAAqB,CAAC,IAAmB,EAAE,IAAI,GAAiC,EAAE;IAChG,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;AACH,CAAC"}
@@ -9,6 +9,8 @@ export declare function githubPermissionAllows(input: {
9
9
  readonly needed: GithubPermission;
10
10
  }): boolean;
11
11
  export declare function intersectGithubPermissions(a: readonly GithubPermission[], b: readonly GithubPermission[]): GithubPermission[];
12
+ export type GithubTokenPermissions = Readonly<Record<string, "read" | "write">>;
13
+ export declare function githubTokenPermissionsFor(set: readonly GithubPermission[]): GithubTokenPermissions;
12
14
  export declare function githubPermissionsOf(decl: {
13
15
  readonly permissions?: readonly GithubPermission[];
14
16
  } | undefined): readonly GithubPermission[];
@@ -60,6 +60,14 @@ export function intersectGithubPermissions(a, b) {
60
60
  }
61
61
  return normalizeGithubPermissions(out);
62
62
  }
63
+ export function githubTokenPermissionsFor(set) {
64
+ const out = { metadata: "read" };
65
+ for (const p of normalizeGithubPermissions(set)) {
66
+ const { resource, level } = splitPermission(p);
67
+ out[resource] = level;
68
+ }
69
+ return out;
70
+ }
63
71
  export function githubPermissionsOf(decl) {
64
72
  return decl?.permissions ?? GITHUB_LEGACY_PERMISSIONS;
65
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"github-permissions.js","sourceRoot":"","sources":["../jsr/github-permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-permissions.js","sourceRoot":"","sources":["../jsr/github-permissions.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAO/B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;IACrB,aAAa;IACb,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,cAAc;CACN,CAAC;AAUX,MAAM,CAAC,MAAM,yBAAyB,GAAgC,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AAG/G,MAAM,CAAC,MAAM,8BAA8B,GAAG,yCAAyC,CAAC;AAExF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACpD,CAAC;AAID,SAAS,eAAe,CAAC,CAAmB;IAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAgC;IACxD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAGD,MAAM,UAAU,0BAA0B,CAAC,GAAgC;IACzE,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACrC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,MAAM,UAAU,sBAAsB,CAAC,KAGtC;IACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;AACnD,CAAC;AAGD,MAAM,UAAU,0BAA0B,CAAC,CAA8B,EAAE,CAA8B;IACvG,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,KAAK,GAAU,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/E,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAWD,MAAM,UAAU,yBAAyB,CAAC,GAAgC;IACxE,MAAM,GAAG,GAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,MAAM,UAAU,mBAAmB,CACjC,IAAwE;IAExE,OAAO,IAAI,EAAE,WAAW,IAAI,yBAAyB,CAAC;AACxD,CAAC;AAGD,MAAM,UAAU,0BAA0B,CAAC,GAAgC;IACzE,OAAO,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAO3C,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,OAAO,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC9C,OAAO,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACxE,CAAC;AAGD,MAAM,OAAO,GAA+C;IAC1D,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,0BAA0B;IAC5C,oBAAoB,EAAE,wBAAwB;IAC9C,qBAAqB,EAAE,kDAAkD;IACzE,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,6BAA6B;IAC7C,eAAe,EAAE,kCAAkC;IACnD,gBAAgB,EAAE,oCAAoC;IACtD,aAAa,EAAE,+BAA+B;IAC9C,cAAc,EAAE,+BAA+B;IAC/C,cAAc,EAAE,uBAAuB;CACxC,CAAC;AAGF,MAAM,UAAU,uBAAuB,CAAC,GAAgC;IACtE,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC"}
package/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export { useSocial, type UseSocialResult, type SocialEdgeView } from "./use-soci
26
26
  export { useConnection, type UseConnectionResult, type ConnectionState } from "./use-connection.js";
27
27
  export { apiFetch, type ApiFetchInit, type ApiFetchResponse } from "./api-fetch.js";
28
28
  export { useInterest } from "./use-interest.js";
29
+ export { useWorldControls, type UseWorldControlsOptions, type UseWorldControlsResult, type WorldControlsCamera, type WorldControlsMode, type WorldControlsTune, } from "./use-world-controls.js";
29
30
  export { addInterest, removeInterest, heldInterests, registerInterestSink, __resetInterestRegistryForTests, type InterestSink, } from "./interest-registry.js";
30
31
  export { ensureMirrorInterestBridge, __resetMirrorInterestBridgeForTests, type MirrorInterestTransport, } from "./mirror-interest-bridge.js";
31
32
  export { useGraceDegraded, armGrace, isGraceDegraded, subscribeGrace, setGraceMsForTest, __resetGraceForTest, } from "./use-vibe-grace.js";
package/index.js CHANGED
@@ -24,6 +24,7 @@ export { useSocial } from "./use-social.js";
24
24
  export { useConnection } from "./use-connection.js";
25
25
  export { apiFetch } from "./api-fetch.js";
26
26
  export { useInterest } from "./use-interest.js";
27
+ export { useWorldControls, } from "./use-world-controls.js";
27
28
  export { addInterest, removeInterest, heldInterests, registerInterestSink, __resetInterestRegistryForTests, } from "./interest-registry.js";
28
29
  export { ensureMirrorInterestBridge, __resetMirrorInterestBridgeForTests, } from "./mirror-interest-bridge.js";
29
30
  export { useGraceDegraded, armGrace, isGraceDegraded, subscribeGrace, setGraceMsForTest, __resetGraceForTest, } from "./use-vibe-grace.js";
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/vibe-runtime",
3
- "version": "14.3.167",
3
+ "version": "14.3.172",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -24,7 +24,8 @@
24
24
  "./edit-text": "./edit-text.js",
25
25
  "./pull-to-refresh": "./pull-to-refresh.js",
26
26
  "./img-gen-view": "./img-gen-view.js",
27
- "./handle-input": "./use-handle-input.js"
27
+ "./handle-input": "./use-handle-input.js",
28
+ "./world-controls": "./world-controls.js"
28
29
  },
29
30
  "scripts": {
30
31
  "gen:ssr-deps": "tsx scripts/build-ssr-isolate-deps.ts",
@@ -33,9 +34,9 @@
33
34
  },
34
35
  "dependencies": {
35
36
  "@adviser/cement": "~0.5.34",
36
- "@vibes.diy/api-types": "14.3.167",
37
- "@vibes.diy/base": "14.3.167",
38
- "@vibes.diy/vibe-types": "14.3.167",
37
+ "@vibes.diy/api-types": "14.3.172",
38
+ "@vibes.diy/base": "14.3.172",
39
+ "@vibes.diy/vibe-types": "14.3.172",
39
40
  "arktype": "~2.2.6",
40
41
  "charwise": "~3.0.1",
41
42
  "es-module-lexer": "~2.3.2",
@@ -72,6 +72,18 @@ function scrollersAtTop(target) {
72
72
  }
73
73
  return true;
74
74
  }
75
+ function appOwnsVerticalDrag(target) {
76
+ let el = target instanceof Element ? target : null;
77
+ for (; el; el = el.parentElement) {
78
+ const ta = getComputedStyle(el).touchAction;
79
+ if (!ta || ta === "auto" || ta === "manipulation")
80
+ continue;
81
+ if (/\bpan-(y|up)\b/.test(ta))
82
+ continue;
83
+ return true;
84
+ }
85
+ return false;
86
+ }
75
87
  function damp(delta) {
76
88
  return Math.min((delta - START_SLOP_PX) * DAMPING, MAX_PULL_PX);
77
89
  }
@@ -83,7 +95,7 @@ let engaged = false;
83
95
  let refreshing = false;
84
96
  let reloadFn = () => window.location.reload();
85
97
  const onTouchStart = (e) => {
86
- if (refreshing || e.touches.length !== 1 || !scrollersAtTop(e.target)) {
98
+ if (refreshing || e.defaultPrevented || e.touches.length !== 1 || appOwnsVerticalDrag(e.target) || !scrollersAtTop(e.target)) {
87
99
  startY = -1;
88
100
  return;
89
101
  }
@@ -103,6 +115,13 @@ const onTouchMove = (e) => {
103
115
  }
104
116
  const delta = e.touches[0].clientY - startY;
105
117
  lastDelta = delta;
118
+ if (e.defaultPrevented) {
119
+ if (engaged)
120
+ indicator?.dismiss();
121
+ startY = -1;
122
+ engaged = false;
123
+ return;
124
+ }
106
125
  if (!engaged) {
107
126
  if (delta < 0) {
108
127
  startY = -1;
@@ -1 +1 @@
1
- {"version":3,"file":"pull-to-refresh.js","sourceRoot":"","sources":["../jsr/pull-to-refresh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull-to-refresh.js","sourceRoot":"","sources":["../jsr/pull-to-refresh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { type RefObject } from "react";
2
+ export type WorldControlsMode = "player" | "free";
3
+ export interface WorldControlsCamera {
4
+ fov: number;
5
+ aspect: number;
6
+ updateProjectionMatrix(): void;
7
+ }
8
+ export interface WorldControlsTune {
9
+ readonly tapPx: number;
10
+ readonly holdMs: number;
11
+ readonly flickPx: number;
12
+ readonly flickMaxPx: number;
13
+ readonly flickMs: number;
14
+ readonly flickSpeed: number;
15
+ readonly flickWindowMs: number;
16
+ readonly axisRatio: number;
17
+ readonly pitchEaseMs: number;
18
+ readonly lookSpeed: number;
19
+ readonly orbitSpeed: number;
20
+ readonly mouseSpeed: number;
21
+ readonly mouseSpikePx: number;
22
+ readonly pinchSpeed: number;
23
+ readonly wheelStep: number;
24
+ readonly trailMs: number;
25
+ readonly stickFadeMs: number;
26
+ readonly edgeBand: number;
27
+ readonly edgeBandY: number;
28
+ readonly edgeRate: number;
29
+ readonly edgeCurve: number;
30
+ readonly stickDeadZone: number;
31
+ readonly stickFullAt: number;
32
+ readonly stickLeash: number;
33
+ readonly stickCurve: number;
34
+ }
35
+ export interface UseWorldControlsOptions {
36
+ readonly mode: WorldControlsMode;
37
+ readonly flying?: boolean;
38
+ readonly camera?: WorldControlsCamera | {
39
+ readonly current: WorldControlsCamera | null | undefined;
40
+ };
41
+ readonly onMove?: (x: number, y: number) => void;
42
+ readonly onLook?: (dx: number, dy: number) => void;
43
+ readonly onTurn?: (yaw: number, pitch: number) => void;
44
+ readonly onPinch?: (factor: number) => void;
45
+ readonly onAim?: (x: number | null, y: number | null) => void;
46
+ readonly onTap?: (x: number, y: number) => void;
47
+ readonly onHold?: (x: number, y: number) => void;
48
+ readonly onFlick?: (dir: "up" | "down") => void;
49
+ readonly onKey?: (code: string, down: boolean) => unknown;
50
+ readonly onFirstTouch?: () => void;
51
+ readonly tune?: Partial<WorldControlsTune>;
52
+ }
53
+ export interface UseWorldControlsResult {
54
+ readonly isTouch: boolean;
55
+ readonly locked: boolean;
56
+ requestLock(): void;
57
+ readonly keys: ReadonlySet<string>;
58
+ tick(dt: number): void;
59
+ }
60
+ export declare const worldControlsSeam: import("./lazy-seam.js").LazySeam<typeof import("./world-controls.js")>;
61
+ export declare function useWorldControls(rootRef: RefObject<HTMLElement | null>, options: UseWorldControlsOptions): UseWorldControlsResult;
@@ -0,0 +1,44 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { lazySeam } from "./lazy-seam.js";
3
+ export const worldControlsSeam = lazySeam(() => import("./world-controls.js"));
4
+ function detectTouch() {
5
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function")
6
+ return false;
7
+ return (window.matchMedia("(pointer: coarse)").matches ||
8
+ ("ontouchstart" in window && window.matchMedia("(hover: hover)").matches === false));
9
+ }
10
+ export function useWorldControls(rootRef, options) {
11
+ const optionsRef = useRef(options);
12
+ optionsRef.current = options;
13
+ const [locked, setLocked] = useState(false);
14
+ const [isTouch, setTouch] = useState(detectTouch);
15
+ const [keys] = useState(() => new Set());
16
+ const attached = useRef(undefined);
17
+ useEffect(() => {
18
+ const el = rootRef.current;
19
+ if (el === null)
20
+ return;
21
+ let live = true;
22
+ worldControlsSeam.run((m) => {
23
+ if (live === false)
24
+ return;
25
+ attached.current = m.attachWorldControls({ el, options: optionsRef, sink: { keys, setLocked, setTouch } });
26
+ });
27
+ return () => {
28
+ live = false;
29
+ attached.current?.detach();
30
+ attached.current = undefined;
31
+ };
32
+ }, [rootRef, keys]);
33
+ const tick = useCallback((dt) => {
34
+ attached.current?.tick(dt);
35
+ }, []);
36
+ const requestLock = useCallback(() => {
37
+ const el = rootRef.current;
38
+ if (el === null || typeof el.requestPointerLock !== "function")
39
+ return;
40
+ void Promise.resolve(el.requestPointerLock()).catch(() => undefined);
41
+ }, [rootRef]);
42
+ return useMemo(() => ({ isTouch, locked, requestLock, keys, tick }), [isTouch, locked, requestLock, keys, tick]);
43
+ }
44
+ //# sourceMappingURL=use-world-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-world-controls.js","sourceRoot":"","sources":["../jsr/use-world-controls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { UseWorldControlsOptions, WorldControlsTune } from "./use-world-controls.js";
2
+ interface DesktopArgs {
3
+ readonly el: HTMLElement;
4
+ readonly options: {
5
+ readonly current: UseWorldControlsOptions;
6
+ };
7
+ readonly sink: {
8
+ readonly keys: Set<string>;
9
+ setLocked(locked: boolean): void;
10
+ };
11
+ }
12
+ export declare function isElement(t: EventTarget | null): t is Element;
13
+ export declare function onOwnControl(el: HTMLElement, target: EventTarget | null): boolean;
14
+ export declare function attachDesktopControls(args: DesktopArgs & {
15
+ readonly defaults: WorldControlsTune;
16
+ }): {
17
+ detach(): void;
18
+ };
19
+ export {};
@@ -0,0 +1,219 @@
1
+ import { exception2Result } from "@adviser/cement";
2
+ const CLICK_SLOP_PX = 6;
3
+ const CLAIMED_KEYS = new Set([
4
+ "KeyW",
5
+ "KeyA",
6
+ "KeyS",
7
+ "KeyD",
8
+ "ArrowUp",
9
+ "ArrowDown",
10
+ "ArrowLeft",
11
+ "ArrowRight",
12
+ "Space",
13
+ "ShiftLeft",
14
+ "ShiftRight",
15
+ ]);
16
+ const TYPING = 'input, textarea, select, [contenteditable]:not([contenteditable="false"]), [role=textbox]';
17
+ function isTyping(focused) {
18
+ if ("isContentEditable" in focused && focused.isContentEditable === true)
19
+ return true;
20
+ return focused.closest(TYPING) !== null;
21
+ }
22
+ function keyboardIsOurs(el) {
23
+ if (document.pointerLockElement === el)
24
+ return true;
25
+ const focused = document.activeElement;
26
+ if (focused !== null && isTyping(focused))
27
+ return false;
28
+ return focused === null || focused === document.body || focused === document.documentElement || el.contains(focused);
29
+ }
30
+ const OWN_CONTROLS = "button, input, textarea, select, a[href], [role=button], [contenteditable=true], [data-world-controls-ignore]";
31
+ export function isElement(t) {
32
+ return t !== null && "closest" in t && typeof t.closest === "function";
33
+ }
34
+ export function onOwnControl(el, target) {
35
+ if (isElement(target) === false)
36
+ return false;
37
+ const control = target.closest(OWN_CONTROLS);
38
+ return control !== null && control !== el && el.contains(control);
39
+ }
40
+ function held(keys, codes) {
41
+ return codes.some((c) => keys.has(c)) ? 1 : 0;
42
+ }
43
+ function moveFromKeys(keys) {
44
+ const x = held(keys, ["KeyD", "ArrowRight"]) - held(keys, ["KeyA", "ArrowLeft"]);
45
+ const y = held(keys, ["KeyS", "ArrowDown"]) - held(keys, ["KeyW", "ArrowUp"]);
46
+ const len = Math.hypot(x, y);
47
+ return len === 0 ? { x: 0, y: 0 } : { x: x / len, y: y / len };
48
+ }
49
+ function tuneOf(options, defaults) {
50
+ return { ...defaults, ...options.tune };
51
+ }
52
+ export function attachDesktopControls(args) {
53
+ const { el, options, sink } = args;
54
+ const keys = sink.keys;
55
+ const claimed = new Set();
56
+ let moving = { x: 0, y: 0 };
57
+ function opts() {
58
+ return options.current;
59
+ }
60
+ function emitMove() {
61
+ const next = moveFromKeys(keys);
62
+ if (next.x === moving.x && next.y === moving.y)
63
+ return;
64
+ moving = next;
65
+ opts().onMove?.(next.x, next.y);
66
+ }
67
+ function clearKeys() {
68
+ const had = [...keys];
69
+ keys.clear();
70
+ claimed.clear();
71
+ for (const code of had)
72
+ opts().onKey?.(code, false);
73
+ emitMove();
74
+ }
75
+ function isLocked() {
76
+ return document.pointerLockElement === el;
77
+ }
78
+ function onKeyDown(e) {
79
+ if (e.metaKey || e.ctrlKey || e.altKey) {
80
+ clearKeys();
81
+ return;
82
+ }
83
+ if (keyboardIsOurs(el) === false)
84
+ return;
85
+ if (e.repeat === false) {
86
+ keys.add(e.code);
87
+ if (opts().onKey?.(e.code, true) === true)
88
+ claimed.add(e.code);
89
+ emitMove();
90
+ }
91
+ if (CLAIMED_KEYS.has(e.code) || claimed.has(e.code))
92
+ e.preventDefault();
93
+ }
94
+ function onKeyUp(e) {
95
+ if (keys.delete(e.code) === false)
96
+ return;
97
+ claimed.delete(e.code);
98
+ opts().onKey?.(e.code, false);
99
+ emitMove();
100
+ }
101
+ function onMouseMove(e) {
102
+ if (isLocked() === false)
103
+ return;
104
+ const t = tuneOf(opts(), args.defaults);
105
+ const mx = Math.max(-t.mouseSpikePx, Math.min(t.mouseSpikePx, e.movementX));
106
+ const my = Math.max(-t.mouseSpikePx, Math.min(t.mouseSpikePx, e.movementY));
107
+ if (mx === 0 && my === 0)
108
+ return;
109
+ opts().onLook?.(mx * t.mouseSpeed, my * t.mouseSpeed);
110
+ }
111
+ function onLockChange() {
112
+ sink.setLocked(isLocked());
113
+ if (isLocked() === false)
114
+ clearKeys();
115
+ }
116
+ let drag;
117
+ function onPointerDown(e) {
118
+ if (e.pointerType !== "mouse")
119
+ return;
120
+ if (isLocked()) {
121
+ const r = el.getBoundingClientRect();
122
+ const cx = r.left + r.width / 2;
123
+ const cy = r.top + r.height / 2;
124
+ if (e.button === 0)
125
+ opts().onTap?.(cx, cy);
126
+ else if (e.button === 2)
127
+ opts().onHold?.(cx, cy);
128
+ return;
129
+ }
130
+ if (opts().mode !== "free")
131
+ return;
132
+ if (e.button !== 0 && e.button !== 2)
133
+ return;
134
+ if (onOwnControl(el, e.target))
135
+ return;
136
+ drag = { x: e.clientX, y: e.clientY, lastX: e.clientX, lastY: e.clientY, t: e.timeStamp, button: e.button, moved: false };
137
+ exception2Result(() => el.setPointerCapture(e.pointerId));
138
+ }
139
+ function onPointerMove(e) {
140
+ if (e.pointerType !== "mouse" || drag === undefined)
141
+ return;
142
+ const dx = e.clientX - drag.lastX;
143
+ const dy = e.clientY - drag.lastY;
144
+ drag.lastX = e.clientX;
145
+ drag.lastY = e.clientY;
146
+ if (Math.abs(e.clientX - drag.x) + Math.abs(e.clientY - drag.y) > CLICK_SLOP_PX)
147
+ drag.moved = true;
148
+ if (drag.moved === false || (dx === 0 && dy === 0))
149
+ return;
150
+ const k = tuneOf(opts(), args.defaults).orbitSpeed;
151
+ opts().onLook?.(dx * k, dy * k);
152
+ }
153
+ function onPointerUp(e) {
154
+ if (e.pointerType !== "mouse" || drag === undefined)
155
+ return;
156
+ const d = drag;
157
+ drag = undefined;
158
+ if (e.type !== "pointerup" || d.moved || opts().mode !== "free")
159
+ return;
160
+ const long = e.timeStamp - d.t >= tuneOf(opts(), args.defaults).holdMs;
161
+ if (d.button === 2 || long)
162
+ opts().onHold?.(e.clientX, e.clientY);
163
+ else
164
+ opts().onTap?.(e.clientX, e.clientY);
165
+ }
166
+ function onContextMenu(e) {
167
+ if (opts().mode === "free" || isLocked())
168
+ e.preventDefault();
169
+ }
170
+ function onFocusIn(e) {
171
+ if (isElement(e.target) && isTyping(e.target))
172
+ clearKeys();
173
+ }
174
+ function onBlur() {
175
+ drag = undefined;
176
+ clearKeys();
177
+ }
178
+ function onWheel(e) {
179
+ if (opts().mode !== "free" || e.deltaY === 0)
180
+ return;
181
+ e.preventDefault();
182
+ opts().onPinch?.(1 + Math.sign(e.deltaY) * tuneOf(opts(), args.defaults).wheelStep);
183
+ }
184
+ el.addEventListener("wheel", onWheel, { passive: false });
185
+ el.addEventListener("pointerdown", onPointerDown);
186
+ el.addEventListener("pointermove", onPointerMove);
187
+ el.addEventListener("pointerup", onPointerUp);
188
+ el.addEventListener("pointercancel", onPointerUp);
189
+ el.addEventListener("contextmenu", onContextMenu);
190
+ document.addEventListener("focusin", onFocusIn);
191
+ document.addEventListener("mousemove", onMouseMove);
192
+ document.addEventListener("pointerlockchange", onLockChange);
193
+ window.addEventListener("keydown", onKeyDown);
194
+ window.addEventListener("keyup", onKeyUp);
195
+ window.addEventListener("blur", onBlur);
196
+ if (isLocked())
197
+ sink.setLocked(true);
198
+ return {
199
+ detach() {
200
+ el.removeEventListener("wheel", onWheel);
201
+ el.removeEventListener("pointerdown", onPointerDown);
202
+ el.removeEventListener("pointermove", onPointerMove);
203
+ el.removeEventListener("pointerup", onPointerUp);
204
+ el.removeEventListener("pointercancel", onPointerUp);
205
+ el.removeEventListener("contextmenu", onContextMenu);
206
+ document.removeEventListener("focusin", onFocusIn);
207
+ document.removeEventListener("mousemove", onMouseMove);
208
+ document.removeEventListener("pointerlockchange", onLockChange);
209
+ window.removeEventListener("keydown", onKeyDown);
210
+ window.removeEventListener("keyup", onKeyUp);
211
+ window.removeEventListener("blur", onBlur);
212
+ keys.clear();
213
+ claimed.clear();
214
+ if (isLocked())
215
+ document.exitPointerLock();
216
+ },
217
+ };
218
+ }
219
+ //# sourceMappingURL=world-controls-desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-controls-desktop.js","sourceRoot":"","sources":["../jsr/world-controls-desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { UseWorldControlsOptions, WorldControlsTune } from "./use-world-controls.js";
2
+ export declare const WORLD_CONTROLS_TUNE: WorldControlsTune;
3
+ export interface WorldControlsSink {
4
+ readonly keys: Set<string>;
5
+ setLocked(locked: boolean): void;
6
+ setTouch(touch: boolean): void;
7
+ }
8
+ export interface AttachWorldControlsArgs {
9
+ readonly el: HTMLElement;
10
+ readonly options: {
11
+ readonly current: UseWorldControlsOptions;
12
+ };
13
+ readonly sink: WorldControlsSink;
14
+ }
15
+ export interface WorldControlsAttached {
16
+ tick(dt: number): void;
17
+ detach(): void;
18
+ }
19
+ export declare function fovFor(size: {
20
+ readonly width: number;
21
+ readonly height: number;
22
+ }): number;
23
+ export declare function tuneOf(options: UseWorldControlsOptions): WorldControlsTune;
24
+ export declare function attachWorldControls(args: AttachWorldControlsArgs): WorldControlsAttached;
@@ -0,0 +1,511 @@
1
+ import { exception2Result } from "@adviser/cement";
2
+ import { attachDesktopControls, onOwnControl } from "./world-controls-desktop.js";
3
+ export const WORLD_CONTROLS_TUNE = {
4
+ tapPx: 12,
5
+ holdMs: 450,
6
+ flickPx: 34,
7
+ flickMaxPx: 220,
8
+ flickMs: 250,
9
+ flickSpeed: 0.5,
10
+ flickWindowMs: 80,
11
+ axisRatio: 1.35,
12
+ pitchEaseMs: 120,
13
+ lookSpeed: 0.006,
14
+ orbitSpeed: 0.008,
15
+ mouseSpeed: 0.0025,
16
+ mouseSpikePx: 200,
17
+ pinchSpeed: 1,
18
+ wheelStep: 0.08,
19
+ trailMs: 260,
20
+ stickFadeMs: 170,
21
+ edgeBand: 0.14,
22
+ edgeBandY: 0.08,
23
+ edgeRate: 2.6,
24
+ edgeCurve: 1.6,
25
+ stickDeadZone: 8,
26
+ stickFullAt: 60,
27
+ stickLeash: 74,
28
+ stickCurve: 1.35,
29
+ };
30
+ function clamp(v, lo, hi) {
31
+ return Math.min(hi, Math.max(lo, v));
32
+ }
33
+ function clamp01(v) {
34
+ return clamp(v, 0, 1);
35
+ }
36
+ export function fovFor(size) {
37
+ const t = clamp((1.2 - size.width / size.height) / 0.7, 0, 1);
38
+ return Math.max(60 + t * 25, size.width < 500 ? 75 : 0);
39
+ }
40
+ export function tuneOf(options) {
41
+ return { ...WORLD_CONTROLS_TUNE, ...options.tune };
42
+ }
43
+ function cameraOf(options) {
44
+ const c = options.camera;
45
+ if (c === undefined)
46
+ return undefined;
47
+ if ("updateProjectionMatrix" in c)
48
+ return c;
49
+ return c.current ?? undefined;
50
+ }
51
+ function readStick(args) {
52
+ const { stick, tune } = args;
53
+ let dx = args.x - stick.cx;
54
+ let dy = args.y - stick.cy;
55
+ let d = Math.hypot(dx, dy);
56
+ if (d > tune.stickLeash) {
57
+ const k = (d - tune.stickLeash) / d;
58
+ stick.cx += dx * k;
59
+ stick.cy += dy * k;
60
+ dx = args.x - stick.cx;
61
+ dy = args.y - stick.cy;
62
+ d = tune.stickLeash;
63
+ }
64
+ if (d < tune.stickDeadZone)
65
+ return { x: 0, y: 0 };
66
+ const lin = Math.min(1, (d - tune.stickDeadZone) / (tune.stickFullAt - tune.stickDeadZone));
67
+ const power = Math.pow(lin, tune.stickCurve);
68
+ return { x: (dx / d) * power, y: (dy / d) * power };
69
+ }
70
+ function vibrate(ms) {
71
+ if (typeof navigator !== "undefined" && typeof navigator.vibrate === "function")
72
+ navigator.vibrate(ms);
73
+ }
74
+ function attachTouchControls(args) {
75
+ const { el } = args;
76
+ function opts() {
77
+ return args.options.current;
78
+ }
79
+ function tune() {
80
+ return tuneOf(opts());
81
+ }
82
+ function isPlayer() {
83
+ return opts().mode !== "free";
84
+ }
85
+ const active = new Map();
86
+ const fx = { trail: [], pulses: [], stickGhost: undefined };
87
+ let pinch;
88
+ const tweens = [];
89
+ function at(e) {
90
+ const r = el.getBoundingClientRect();
91
+ return { x: e.clientX - r.left, y: e.clientY - r.top, w: r.width };
92
+ }
93
+ function setStick(x, y) {
94
+ opts().onMove?.(x, y);
95
+ }
96
+ function aim(x, y) {
97
+ opts().onAim?.(x, y);
98
+ }
99
+ function look(dx, dy) {
100
+ if (dx === 0 && dy === 0)
101
+ return;
102
+ const t = tune();
103
+ const k = isPlayer() ? t.lookSpeed : t.orbitSpeed;
104
+ opts().onLook?.(dx * k, dy * k);
105
+ }
106
+ function sideTaken(side) {
107
+ return [...active.values()].some((g) => g.side === side);
108
+ }
109
+ function fireHold(g) {
110
+ g.kind = "hold";
111
+ opts().onHold?.(g.cx, g.cy);
112
+ aim(null, null);
113
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), color: "255,77,109" });
114
+ vibrate(15);
115
+ }
116
+ function down(e) {
117
+ if (e.pointerType === "mouse")
118
+ return;
119
+ if (onOwnControl(el, e.target))
120
+ return;
121
+ e.preventDefault();
122
+ args.firstTouch();
123
+ const p = at(e);
124
+ const freeCam = isPlayer() === false;
125
+ if (freeCam && active.size === 1) {
126
+ const [other] = active.values();
127
+ other.kind = "pinch";
128
+ aim(null, null);
129
+ setStick(0, 0);
130
+ pinch = { a: other.id, b: e.pointerId, d: Math.hypot(p.x - other.x, p.y - other.y) || 1 };
131
+ }
132
+ else if (active.size >= 2)
133
+ return;
134
+ const side = p.x < p.w / 2 ? "stick" : "look";
135
+ if (freeCam === false && sideTaken(side))
136
+ return;
137
+ exception2Result(() => el.setPointerCapture(e.pointerId));
138
+ const g = {
139
+ id: e.pointerId,
140
+ side,
141
+ kind: pinch !== undefined && pinch.b === e.pointerId ? "pinch" : undefined,
142
+ x0: p.x,
143
+ y0: p.y,
144
+ x: p.x,
145
+ y: p.y,
146
+ cx: e.clientX,
147
+ cy: e.clientY,
148
+ t0: e.timeStamp,
149
+ lastT: undefined,
150
+ travel: 0,
151
+ stick: { cx: p.x, cy: p.y },
152
+ vert: [{ y: p.y, t: e.timeStamp }],
153
+ seenAt: performance.now(),
154
+ pitchBuf: 0,
155
+ pitchLive: false,
156
+ };
157
+ active.set(e.pointerId, g);
158
+ fx.trail.push({ x: p.x, y: p.y, t: performance.now() });
159
+ if (g.kind === undefined)
160
+ aim(e.clientX, e.clientY);
161
+ }
162
+ function couldFlick(g, now) {
163
+ const t = tune();
164
+ const up = g.y0 - g.y;
165
+ const side = Math.abs(g.x - g.x0);
166
+ if (now - g.t0 > t.flickMs)
167
+ return false;
168
+ if (Math.abs(up) > t.flickMaxPx)
169
+ return false;
170
+ if (side > t.flickPx && Math.abs(up) < side * t.axisRatio)
171
+ return false;
172
+ if (up < -t.tapPx && opts().flying !== true)
173
+ return false;
174
+ return true;
175
+ }
176
+ function releasePitch(g) {
177
+ g.pitchLive = true;
178
+ if (g.pitchBuf !== 0)
179
+ tweens.push({ left: g.pitchBuf, ms: tune().pitchEaseMs });
180
+ g.pitchBuf = 0;
181
+ }
182
+ function move(e) {
183
+ const g = active.get(e.pointerId);
184
+ if (g === undefined)
185
+ return;
186
+ const t = tune();
187
+ const p = at(e);
188
+ const dx = p.x - g.x;
189
+ const dy = p.y - g.y;
190
+ g.x = p.x;
191
+ g.y = p.y;
192
+ g.cx = e.clientX;
193
+ g.cy = e.clientY;
194
+ g.travel = Math.max(g.travel, Math.hypot(p.x - g.x0, p.y - g.y0));
195
+ g.vert.push({ y: p.y, t: e.timeStamp });
196
+ g.lastT = e.timeStamp;
197
+ g.seenAt = performance.now();
198
+ if (g.vert.length > 12)
199
+ g.vert.shift();
200
+ fx.trail.push({ x: p.x, y: p.y, t: performance.now() });
201
+ if (g.kind === "pinch") {
202
+ const a = pinch === undefined ? undefined : active.get(pinch.a);
203
+ const b = pinch === undefined ? undefined : active.get(pinch.b);
204
+ if (pinch === undefined || a === undefined || b === undefined)
205
+ return;
206
+ const d = Math.hypot(a.x - b.x, a.y - b.y) || 1;
207
+ opts().onPinch?.(Math.pow(pinch.d / d, t.pinchSpeed));
208
+ pinch.d = d;
209
+ return;
210
+ }
211
+ if (g.kind === "hold" || g.kind === "done")
212
+ return;
213
+ if (g.travel < t.tapPx && g.kind === undefined)
214
+ return;
215
+ if (g.kind === undefined) {
216
+ aim(null, null);
217
+ g.kind = g.side;
218
+ }
219
+ if (g.kind === "stick") {
220
+ const s = readStick({ stick: g.stick, x: p.x, y: p.y, tune: t });
221
+ setStick(s.x, s.y);
222
+ return;
223
+ }
224
+ look(dx, 0);
225
+ if (g.pitchLive)
226
+ look(0, dy);
227
+ else {
228
+ g.pitchBuf += dy;
229
+ if (couldFlick(g, e.timeStamp) === false)
230
+ releasePitch(g);
231
+ }
232
+ }
233
+ function flickOf(g, now) {
234
+ const t = tune();
235
+ const v = g.vert;
236
+ const up = g.y0 - g.y;
237
+ if (now - g.t0 > t.flickMs)
238
+ return undefined;
239
+ if (Math.abs(up) < t.flickPx || Math.abs(up) > t.flickMaxPx)
240
+ return undefined;
241
+ if (Math.abs(up) < Math.abs(g.x - g.x0) * t.axisRatio)
242
+ return undefined;
243
+ const recent = v.filter((s) => now - s.t <= t.flickWindowMs);
244
+ const first = recent[0] ?? v[v.length - 1];
245
+ if (first === undefined)
246
+ return undefined;
247
+ const speed = (first.y - g.y) / Math.max(1, now - first.t);
248
+ if (Math.sign(speed) !== Math.sign(up) || Math.abs(speed) < t.flickSpeed)
249
+ return undefined;
250
+ return up > 0 ? "up" : "down";
251
+ }
252
+ function up(e) {
253
+ const g = active.get(e.pointerId);
254
+ if (g === undefined)
255
+ return;
256
+ const t = tune();
257
+ active.delete(e.pointerId);
258
+ if (pinch !== undefined && (pinch.a === g.id || pinch.b === g.id)) {
259
+ pinch = undefined;
260
+ for (const o of active.values())
261
+ o.kind = "done";
262
+ }
263
+ if (g.kind === "stick") {
264
+ setStick(0, 0);
265
+ fx.stickGhost = { cx: g.stick.cx, cy: g.stick.cy, x: g.x, y: g.y, t: performance.now() };
266
+ }
267
+ aim(null, null);
268
+ const judged = e.type === "pointerup" && g.kind === "look" && g.pitchLive === false ? flickOf(g, e.timeStamp) : undefined;
269
+ const flick = judged === "down" && opts().flying !== true ? undefined : judged;
270
+ if (flick !== undefined)
271
+ g.pitchBuf = 0;
272
+ if (flick !== undefined && isPlayer()) {
273
+ opts().onFlick?.(flick);
274
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), arrow: flick === "up" ? -1 : 1, color: "255,255,255" });
275
+ vibrate(10);
276
+ }
277
+ if (g.kind === "look" && g.pitchLive === false)
278
+ releasePitch(g);
279
+ const still = e.type === "pointerup" && g.kind === undefined && g.travel < t.tapPx;
280
+ if (still && e.timeStamp - g.t0 >= t.holdMs)
281
+ fireHold(g);
282
+ else if (still) {
283
+ opts().onTap?.(g.cx, g.cy);
284
+ fx.pulses.push({ x: g.x, y: g.y, t: performance.now(), color: "255,255,255" });
285
+ vibrate(8);
286
+ }
287
+ }
288
+ function reset() {
289
+ active.clear();
290
+ pinch = undefined;
291
+ tweens.length = 0;
292
+ setStick(0, 0);
293
+ aim(null, null);
294
+ }
295
+ el.addEventListener("pointerdown", down);
296
+ el.addEventListener("pointermove", move);
297
+ el.addEventListener("pointerup", up);
298
+ el.addEventListener("pointercancel", up);
299
+ window.addEventListener("blur", reset);
300
+ function edgeTick(dt) {
301
+ const t = tune();
302
+ const r = el.getBoundingClientRect();
303
+ const w = r.width;
304
+ const hgt = r.height;
305
+ const bx = w * t.edgeBand;
306
+ const by = hgt * t.edgeBandY;
307
+ function ramp(d) {
308
+ return Math.pow(clamp01(d), t.edgeCurve);
309
+ }
310
+ for (let i = tweens.length - 1; i >= 0; i--) {
311
+ const tw = tweens[i];
312
+ const k = Math.min(1, (dt * 1000) / tw.ms);
313
+ const step = tw.left * k;
314
+ look(0, step);
315
+ tw.left -= step;
316
+ tw.ms -= dt * 1000;
317
+ if (tw.ms <= 0 || Math.abs(tw.left) < 0.01)
318
+ tweens.splice(i, 1);
319
+ }
320
+ for (const g of active.values()) {
321
+ const now = (g.lastT ?? g.t0) + (performance.now() - g.seenAt);
322
+ if (g.kind === undefined && g.travel < t.tapPx && now - g.t0 >= t.holdMs)
323
+ fireHold(g);
324
+ if (g.kind !== "look")
325
+ continue;
326
+ if (g.pitchLive === false && couldFlick(g, now) === false)
327
+ releasePitch(g);
328
+ const ex = ramp((g.x - (w - bx)) / bx) - ramp((bx - g.x) / bx);
329
+ let ey = 0;
330
+ if (g.pitchLive === false)
331
+ ey = 0;
332
+ else if (g.y < g.y0 - t.tapPx)
333
+ ey = -ramp((by - g.y) / by);
334
+ else if (g.y > g.y0 + t.tapPx)
335
+ ey = ramp((g.y - (hgt - by)) / by);
336
+ if (ex === 0 && ey === 0)
337
+ continue;
338
+ opts().onTurn?.(ex * t.edgeRate * dt, ey * t.edgeRate * 0.6 * dt);
339
+ }
340
+ }
341
+ function draw(d) {
342
+ const { ctx, now } = d;
343
+ const t = tune();
344
+ ctx.clearRect(0, 0, d.width, d.height);
345
+ fx.trail = fx.trail.filter((p) => now - p.t < t.trailMs);
346
+ ctx.fillStyle = "#ffffff";
347
+ fx.trail.forEach((p, i) => {
348
+ ctx.globalAlpha = 0.5 * (1 - (now - p.t) / t.trailMs);
349
+ ctx.beginPath();
350
+ ctx.arc(p.x, p.y, 3 + Math.min(i, 12) * 0.25, 0, Math.PI * 2);
351
+ ctx.fill();
352
+ });
353
+ function stickAt(s) {
354
+ const dist = Math.hypot(s.x - s.cx, s.y - s.cy);
355
+ const k = dist > t.stickLeash ? t.stickLeash / dist : 1;
356
+ ctx.globalAlpha = 0.35 * s.alpha;
357
+ ctx.strokeStyle = "#ffffff";
358
+ ctx.lineWidth = 3;
359
+ ctx.beginPath();
360
+ ctx.arc(s.cx, s.cy, t.stickFullAt, 0, Math.PI * 2);
361
+ ctx.stroke();
362
+ if (dist >= t.stickFullAt) {
363
+ ctx.globalAlpha = 0.8 * s.alpha;
364
+ const a = Math.atan2(s.y - s.cy, s.x - s.cx);
365
+ ctx.beginPath();
366
+ ctx.arc(s.cx, s.cy, t.stickFullAt, a - 0.5, a + 0.5);
367
+ ctx.stroke();
368
+ }
369
+ ctx.globalAlpha = 0.7 * s.alpha;
370
+ ctx.fillStyle = "#ffffff";
371
+ ctx.beginPath();
372
+ ctx.arc(s.cx + (s.x - s.cx) * k, s.cy + (s.y - s.cy) * k, 22, 0, Math.PI * 2);
373
+ ctx.fill();
374
+ }
375
+ for (const g of active.values()) {
376
+ if (g.kind === "stick")
377
+ stickAt({ cx: g.stick.cx, cy: g.stick.cy, x: g.x, y: g.y, alpha: 1 });
378
+ if (g.kind === undefined) {
379
+ const q = Math.min(1, ((g.lastT ?? g.t0) + (now - g.seenAt) - g.t0) / t.holdMs);
380
+ if (q > 0.15) {
381
+ ctx.globalAlpha = 0.9;
382
+ ctx.strokeStyle = "#ff4d6d";
383
+ ctx.lineWidth = 4;
384
+ ctx.beginPath();
385
+ ctx.arc(g.x, g.y, 30, -Math.PI / 2, -Math.PI / 2 + q * Math.PI * 2);
386
+ ctx.stroke();
387
+ }
388
+ }
389
+ }
390
+ const sg = fx.stickGhost;
391
+ if (sg !== undefined) {
392
+ const a = 1 - (now - sg.t) / t.stickFadeMs;
393
+ if (a > 0)
394
+ stickAt({ cx: sg.cx, cy: sg.cy, x: sg.x, y: sg.y, alpha: a });
395
+ else
396
+ fx.stickGhost = undefined;
397
+ }
398
+ fx.pulses = fx.pulses.filter((p) => now - p.t < 320);
399
+ for (const p of fx.pulses) {
400
+ const q = (now - p.t) / 320;
401
+ ctx.globalAlpha = 1 - q;
402
+ ctx.strokeStyle = `rgb(${p.color})`;
403
+ ctx.lineWidth = 3;
404
+ ctx.beginPath();
405
+ if (p.arrow !== undefined) {
406
+ const y = p.y + p.arrow * q * 30;
407
+ ctx.moveTo(p.x - 14, y - p.arrow * 12);
408
+ ctx.lineTo(p.x, y);
409
+ ctx.lineTo(p.x + 14, y - p.arrow * 12);
410
+ }
411
+ else
412
+ ctx.arc(p.x, p.y, 10 + q * 26, 0, Math.PI * 2);
413
+ ctx.stroke();
414
+ }
415
+ ctx.globalAlpha = 1;
416
+ }
417
+ return {
418
+ edgeTick,
419
+ draw,
420
+ detach() {
421
+ reset();
422
+ el.removeEventListener("pointerdown", down);
423
+ el.removeEventListener("pointermove", move);
424
+ el.removeEventListener("pointerup", up);
425
+ el.removeEventListener("pointercancel", up);
426
+ window.removeEventListener("blur", reset);
427
+ },
428
+ };
429
+ }
430
+ const ROOT_STYLE = [
431
+ ["touch-action", "none"],
432
+ ["user-select", "none"],
433
+ ["-webkit-user-select", "none"],
434
+ ["-webkit-touch-callout", "none"],
435
+ ];
436
+ function claimRootStyle(el) {
437
+ const style = el.style;
438
+ const claims = getComputedStyle(el).position === "static" ? [...ROOT_STYLE, ["position", "relative"]] : ROOT_STYLE;
439
+ const before = claims.map(([name]) => style.getPropertyValue(name));
440
+ for (const [name, value] of claims)
441
+ style.setProperty(name, value);
442
+ return function restore() {
443
+ claims.forEach(([name], i) => {
444
+ if (before[i] === "")
445
+ style.removeProperty(name);
446
+ else
447
+ style.setProperty(name, before[i]);
448
+ });
449
+ };
450
+ }
451
+ export function attachWorldControls(args) {
452
+ const { el, options, sink } = args;
453
+ const restoreStyle = claimRootStyle(el);
454
+ let touched = false;
455
+ const touch = attachTouchControls({
456
+ ...args,
457
+ firstTouch() {
458
+ if (touched)
459
+ return;
460
+ touched = true;
461
+ sink.setTouch(true);
462
+ options.current.onFirstTouch?.();
463
+ },
464
+ });
465
+ const desktop = attachDesktopControls({ ...args, defaults: WORLD_CONTROLS_TUNE });
466
+ const canvas = document.createElement("canvas");
467
+ canvas.setAttribute("aria-hidden", "true");
468
+ canvas.dataset.worldControls = "fx";
469
+ Object.assign(canvas.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none" });
470
+ el.appendChild(canvas);
471
+ const ctx = canvas.getContext("2d") ?? undefined;
472
+ let lensCamera;
473
+ function applyLens() {
474
+ const width = Math.max(1, el.clientWidth);
475
+ const height = Math.max(1, el.clientHeight);
476
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
477
+ canvas.width = Math.round(width * dpr);
478
+ canvas.height = Math.round(height * dpr);
479
+ ctx?.setTransform(dpr, 0, 0, dpr, 0, 0);
480
+ lensCamera = cameraOf(options.current);
481
+ if (lensCamera === undefined)
482
+ return;
483
+ lensCamera.aspect = width / height;
484
+ lensCamera.fov = fovFor({ width, height });
485
+ lensCamera.updateProjectionMatrix();
486
+ }
487
+ applyLens();
488
+ window.addEventListener("resize", applyLens);
489
+ window.addEventListener("orientationchange", applyLens);
490
+ const ro = typeof ResizeObserver === "undefined" ? undefined : new ResizeObserver(applyLens);
491
+ ro?.observe(el);
492
+ return {
493
+ tick(dt) {
494
+ if (cameraOf(options.current) !== lensCamera)
495
+ applyLens();
496
+ touch.edgeTick(dt);
497
+ if (ctx !== undefined)
498
+ touch.draw({ ctx, width: el.clientWidth, height: el.clientHeight, now: performance.now() });
499
+ },
500
+ detach() {
501
+ touch.detach();
502
+ desktop.detach();
503
+ window.removeEventListener("resize", applyLens);
504
+ window.removeEventListener("orientationchange", applyLens);
505
+ ro?.disconnect();
506
+ canvas.remove();
507
+ restoreStyle();
508
+ },
509
+ };
510
+ }
511
+ //# sourceMappingURL=world-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-controls.js","sourceRoot":"","sources":["../jsr/world-controls.ts"],"names":[],"mappings":"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"}