@xrift/world-components 0.18.0 → 0.19.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/dist/components/TextInput/index.d.ts +23 -0
- package/dist/components/TextInput/index.d.ts.map +1 -0
- package/dist/components/TextInput/index.js +76 -0
- package/dist/components/TextInput/index.js.map +1 -0
- package/dist/components/TextInput/types.d.ts +20 -0
- package/dist/components/TextInput/types.d.ts.map +1 -0
- package/dist/components/TextInput/types.js +2 -0
- package/dist/components/TextInput/types.js.map +1 -0
- package/dist/contexts/TextInputContext.d.ts +65 -0
- package/dist/contexts/TextInputContext.d.ts.map +1 -0
- package/dist/contexts/TextInputContext.js +51 -0
- package/dist/contexts/TextInputContext.js.map +1 -0
- package/dist/contexts/XRiftContext.d.ts +7 -1
- package/dist/contexts/XRiftContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.js +5 -2
- package/dist/contexts/XRiftContext.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/scenes/TestScene.d.ts.map +1 -1
- package/dist/scenes/TestScene.js +7 -1
- package/dist/scenes/TestScene.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { Props } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 3D空間内でテキスト入力を可能にするコンポーネント
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <TextInput
|
|
9
|
+
* id="my-input"
|
|
10
|
+
* value={inputValue}
|
|
11
|
+
* onSubmit={handleSubmit}
|
|
12
|
+
* placeholder="テキストを入力..."
|
|
13
|
+
* >
|
|
14
|
+
* <mesh>
|
|
15
|
+
* <boxGeometry args={[1, 0.5, 0.1]} />
|
|
16
|
+
* <meshStandardMaterial color="#333" />
|
|
17
|
+
* </mesh>
|
|
18
|
+
* </TextInput>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const TextInput: FC<Props>;
|
|
22
|
+
export type { Props as TextInputProps } from './types';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TextInput/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAA;AAK/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,KAAK,CAmE/B,CAAA;AAED,YAAY,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { LAYERS } from '../../constants/layers';
|
|
4
|
+
import { useTextInputContext } from '../../contexts/TextInputContext';
|
|
5
|
+
import { useXRift } from '../../contexts/XRiftContext';
|
|
6
|
+
/**
|
|
7
|
+
* 3D空間内でテキスト入力を可能にするコンポーネント
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <TextInput
|
|
12
|
+
* id="my-input"
|
|
13
|
+
* value={inputValue}
|
|
14
|
+
* onSubmit={handleSubmit}
|
|
15
|
+
* placeholder="テキストを入力..."
|
|
16
|
+
* >
|
|
17
|
+
* <mesh>
|
|
18
|
+
* <boxGeometry args={[1, 0.5, 0.1]} />
|
|
19
|
+
* <meshStandardMaterial color="#333" />
|
|
20
|
+
* </mesh>
|
|
21
|
+
* </TextInput>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export const TextInput = ({ id, children, placeholder, maxLength, value, onSubmit, interactionText = 'クリックして入力', disabled = false, }) => {
|
|
25
|
+
const { registerInteractable, unregisterInteractable } = useXRift();
|
|
26
|
+
const { requestTextInput } = useTextInputContext();
|
|
27
|
+
const groupRef = useRef(null);
|
|
28
|
+
// インタラクション時のハンドラー
|
|
29
|
+
const handleInteract = useCallback(() => {
|
|
30
|
+
if (disabled)
|
|
31
|
+
return;
|
|
32
|
+
requestTextInput({
|
|
33
|
+
id,
|
|
34
|
+
placeholder,
|
|
35
|
+
maxLength,
|
|
36
|
+
initialValue: value,
|
|
37
|
+
onSubmit: (inputValue) => {
|
|
38
|
+
onSubmit?.(inputValue);
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
}, [id, placeholder, maxLength, value, onSubmit, disabled, requestTextInput]);
|
|
42
|
+
// レイヤー設定 & オブジェクト登録(マウント時のみ)
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const object = groupRef.current;
|
|
45
|
+
if (!object)
|
|
46
|
+
return;
|
|
47
|
+
// レイヤーを設定(レイキャスト最適化のため)
|
|
48
|
+
object.traverse((child) => {
|
|
49
|
+
child.layers.enable(LAYERS.INTERACTABLE);
|
|
50
|
+
});
|
|
51
|
+
// インタラクト可能オブジェクトとして登録
|
|
52
|
+
registerInteractable(object);
|
|
53
|
+
// クリーンアップ
|
|
54
|
+
return () => {
|
|
55
|
+
unregisterInteractable(object);
|
|
56
|
+
object.traverse((child) => {
|
|
57
|
+
child.layers.disable(LAYERS.INTERACTABLE);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}, [registerInteractable, unregisterInteractable]);
|
|
61
|
+
// userData の更新(props が変わった時)
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
const object = groupRef.current;
|
|
64
|
+
if (!object)
|
|
65
|
+
return;
|
|
66
|
+
Object.assign(object.userData, {
|
|
67
|
+
id,
|
|
68
|
+
type: 'textInput',
|
|
69
|
+
onInteract: handleInteract,
|
|
70
|
+
interactionText: disabled ? undefined : interactionText,
|
|
71
|
+
enabled: !disabled,
|
|
72
|
+
});
|
|
73
|
+
}, [id, handleInteract, interactionText, disabled]);
|
|
74
|
+
return _jsx("group", { ref: groupRef, children: children });
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TextInput/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGtD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc,CAAC,EACnC,EAAE,EACF,QAAQ,EACR,WAAW,EACX,SAAS,EACT,KAAK,EACL,QAAQ,EACR,eAAe,GAAG,UAAU,EAC5B,QAAQ,GAAG,KAAK,GACjB,EAAE,EAAE;IACH,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,QAAQ,EAAE,CAAA;IACnE,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAA;IAEpC,kBAAkB;IAClB,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,QAAQ;YAAE,OAAM;QAEpB,gBAAgB,CAAC;YACf,EAAE;YACF,WAAW;YACX,SAAS;YACT,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;gBACvB,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAA;YACxB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE7E,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,wBAAwB;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,sBAAsB;QACtB,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE5B,UAAU;QACV,OAAO,GAAG,EAAE;YACV,sBAAsB,CAAC,MAAM,CAAC,CAAA;YAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC3C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAElD,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7B,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;YACvD,OAAO,EAAE,CAAC,QAAQ;SACnB,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEnD,OAAO,gBAAO,GAAG,EAAE,QAAQ,YAAG,QAAQ,GAAS,CAAA;AACjD,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface Props {
|
|
3
|
+
/** 入力フィールドの一意なID */
|
|
4
|
+
id: string;
|
|
5
|
+
/** 子要素(3Dオブジェクト) */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
/** プレースホルダーテキスト */
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/** 最大文字数 */
|
|
10
|
+
maxLength?: number;
|
|
11
|
+
/** 現在の値(制御コンポーネントとして使う場合) */
|
|
12
|
+
value?: string;
|
|
13
|
+
/** 入力完了時のコールバック */
|
|
14
|
+
onSubmit?: (value: string) => void;
|
|
15
|
+
/** インタラクション時に表示するテキスト */
|
|
16
|
+
interactionText?: string;
|
|
17
|
+
/** 入力を無効にするか */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/TextInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,KAAK;IACpB,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAA;IACnB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,yBAAyB;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/TextInput/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* テキスト入力のリクエスト情報
|
|
4
|
+
*/
|
|
5
|
+
export interface TextInputRequest {
|
|
6
|
+
/** 入力フィールドの一意なID */
|
|
7
|
+
id: string;
|
|
8
|
+
/** プレースホルダーテキスト */
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
/** 最大文字数 */
|
|
11
|
+
maxLength?: number;
|
|
12
|
+
/** 初期値 */
|
|
13
|
+
initialValue?: string;
|
|
14
|
+
/** 入力完了時のコールバック */
|
|
15
|
+
onSubmit: (value: string) => void;
|
|
16
|
+
/** キャンセル時のコールバック */
|
|
17
|
+
onCancel?: () => void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* テキスト入力のContext値
|
|
21
|
+
*/
|
|
22
|
+
export interface TextInputContextValue {
|
|
23
|
+
/**
|
|
24
|
+
* テキスト入力オーバーレイを表示する
|
|
25
|
+
* xrift-frontend側でオーバーレイUIを表示し、入力完了後にonSubmitが呼ばれる
|
|
26
|
+
*/
|
|
27
|
+
requestTextInput: (request: TextInputRequest) => void;
|
|
28
|
+
/**
|
|
29
|
+
* 現在アクティブなテキスト入力があるか
|
|
30
|
+
*/
|
|
31
|
+
isActive: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* デフォルトの実装(開発環境用)
|
|
35
|
+
* コンソールにログを出力し、1秒後にダミー値でsubmitを呼ぶ
|
|
36
|
+
*/
|
|
37
|
+
export declare const createDefaultTextInputImplementation: () => TextInputContextValue;
|
|
38
|
+
/**
|
|
39
|
+
* テキスト入力のContext
|
|
40
|
+
*/
|
|
41
|
+
export declare const TextInputContext: import("react").Context<TextInputContextValue | null>;
|
|
42
|
+
interface Props {
|
|
43
|
+
value: TextInputContextValue;
|
|
44
|
+
children: ReactNode;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* テキスト入力のContextProvider
|
|
48
|
+
*/
|
|
49
|
+
export declare const TextInputProvider: ({ value, children }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
/**
|
|
51
|
+
* テキスト入力の機能を取得するhook
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* const { requestTextInput } = useTextInputContext()
|
|
55
|
+
* requestTextInput({
|
|
56
|
+
* id: 'my-input',
|
|
57
|
+
* placeholder: '名前を入力',
|
|
58
|
+
* onSubmit: (value) => console.log('入力値:', value),
|
|
59
|
+
* })
|
|
60
|
+
*
|
|
61
|
+
* @throws {Error} TextInputProvider の外で呼び出された場合
|
|
62
|
+
*/
|
|
63
|
+
export declare const useTextInputContext: () => TextInputContextValue;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=TextInputContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextInputContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TextInputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU;IACV,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBAYtD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uDAAoD,CAAA;AAEjF,UAAU,KAAK;IACb,KAAK,EAAE,qBAAqB,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,KAAK,4CAE3D,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,QAAO,qBAQtC,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* デフォルトの実装(開発環境用)
|
|
5
|
+
* コンソールにログを出力し、1秒後にダミー値でsubmitを呼ぶ
|
|
6
|
+
*/
|
|
7
|
+
export const createDefaultTextInputImplementation = () => ({
|
|
8
|
+
requestTextInput: (request) => {
|
|
9
|
+
console.log('[TextInput] requestTextInput called:', request);
|
|
10
|
+
// 開発環境ではブラウザのpromptを使用
|
|
11
|
+
const value = window.prompt(request.placeholder ?? 'テキストを入力', request.initialValue ?? '');
|
|
12
|
+
if (value !== null) {
|
|
13
|
+
request.onSubmit(value);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
request.onCancel?.();
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
isActive: false,
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* テキスト入力のContext
|
|
23
|
+
*/
|
|
24
|
+
export const TextInputContext = createContext(null);
|
|
25
|
+
/**
|
|
26
|
+
* テキスト入力のContextProvider
|
|
27
|
+
*/
|
|
28
|
+
export const TextInputProvider = ({ value, children }) => {
|
|
29
|
+
return _jsx(TextInputContext.Provider, { value: value, children: children });
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* テキスト入力の機能を取得するhook
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const { requestTextInput } = useTextInputContext()
|
|
36
|
+
* requestTextInput({
|
|
37
|
+
* id: 'my-input',
|
|
38
|
+
* placeholder: '名前を入力',
|
|
39
|
+
* onSubmit: (value) => console.log('入力値:', value),
|
|
40
|
+
* })
|
|
41
|
+
*
|
|
42
|
+
* @throws {Error} TextInputProvider の外で呼び出された場合
|
|
43
|
+
*/
|
|
44
|
+
export const useTextInputContext = () => {
|
|
45
|
+
const context = useContext(TextInputContext);
|
|
46
|
+
if (!context) {
|
|
47
|
+
throw new Error('useTextInputContext must be used within TextInputProvider');
|
|
48
|
+
}
|
|
49
|
+
return context;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=TextInputContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextInputContext.js","sourceRoot":"","sources":["../../src/contexts/TextInputContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAA;AAmCjE;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAA0B,EAAE,CAAC,CAAC;IAChF,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAA;QAC5D,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;QACzF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QACtB,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAA;AAOjF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC9D,OAAO,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA6B,CAAA;AACxF,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA0B,EAAE;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -3,6 +3,7 @@ import type { Object3D } from 'three';
|
|
|
3
3
|
import { type InstanceStateContextValue } from './InstanceStateContext';
|
|
4
4
|
import { type ScreenShareContextValue } from './ScreenShareContext';
|
|
5
5
|
import { type SpawnPointContextValue } from './SpawnPointContext';
|
|
6
|
+
import { type TextInputContextValue } from './TextInputContext';
|
|
6
7
|
import { type UsersContextValue } from './UsersContext';
|
|
7
8
|
export interface XRiftContextValue {
|
|
8
9
|
/**
|
|
@@ -46,6 +47,11 @@ interface Props {
|
|
|
46
47
|
* 指定しない場合はデフォルト実装(ローカルstate)が使用される
|
|
47
48
|
*/
|
|
48
49
|
spawnPointImplementation?: SpawnPointContextValue;
|
|
50
|
+
/**
|
|
51
|
+
* テキスト入力の実装(オプション)
|
|
52
|
+
* 指定しない場合はデフォルト実装(ブラウザのprompt)が使用される
|
|
53
|
+
*/
|
|
54
|
+
textInputImplementation?: TextInputContextValue;
|
|
49
55
|
/**
|
|
50
56
|
* ユーザー情報の実装(オプション)
|
|
51
57
|
* 指定しない場合はデフォルト実装(空の状態)が使用される
|
|
@@ -58,7 +64,7 @@ interface Props {
|
|
|
58
64
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
59
65
|
* 必要な情報を注入するために使用
|
|
60
66
|
*/
|
|
61
|
-
export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, usersImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, textInputImplementation, usersImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
62
68
|
/**
|
|
63
69
|
* XRift ワールドの情報を取得するhook
|
|
64
70
|
* ワールドプロジェクト側でアセットの相対パスを絶対パスに変換する際に使用
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAWtE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,mBAAmB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClC;;OAEG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChD;;OAEG;IACH,sBAAsB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;CAKnD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAA;AAEzE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAA;IACvD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,uBAAuB,CAAA;IACnD;;;OAGG;IACH,wBAAwB,CAAC,EAAE,sBAAsB,CAAA;IACjD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;IACvC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI
|
|
1
|
+
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAWtE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,mBAAmB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClC;;OAEG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChD;;OAEG;IACH,sBAAsB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;CAKnD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAA;AAEzE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAA;IACvD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,uBAAuB,CAAA;IACnD;;;OAGG;IACH,wBAAwB,CAAC,EAAE,sBAAsB,CAAA;IACjD;;;OAGG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;IACvC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,wJAQ3B,KAAK,4CAgDP,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,CAAA"}
|
|
@@ -3,6 +3,7 @@ import { createContext, useCallback, useContext, useMemo, useState } from 'react
|
|
|
3
3
|
import { InstanceStateProvider } from './InstanceStateContext';
|
|
4
4
|
import { ScreenShareProvider } from './ScreenShareContext';
|
|
5
5
|
import { SpawnPointProvider } from './SpawnPointContext';
|
|
6
|
+
import { TextInputProvider, createDefaultTextInputImplementation, } from './TextInputContext';
|
|
6
7
|
import { UsersProvider } from './UsersContext';
|
|
7
8
|
// デフォルトの画面共有実装(開発環境用)
|
|
8
9
|
const createDefaultScreenShareImplementation = () => ({
|
|
@@ -22,11 +23,13 @@ export const XRiftContext = createContext(null);
|
|
|
22
23
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
23
24
|
* 必要な情報を注入するために使用
|
|
24
25
|
*/
|
|
25
|
-
export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, usersImplementation, children, }) => {
|
|
26
|
+
export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, textInputImplementation, usersImplementation, children, }) => {
|
|
26
27
|
// インタラクト可能なオブジェクトの管理
|
|
27
28
|
const [interactableObjects] = useState(() => new Set());
|
|
28
29
|
// 画面共有の実装(指定がない場合はデフォルト実装を使用)
|
|
29
30
|
const screenShareImpl = useMemo(() => screenShareImplementation ?? createDefaultScreenShareImplementation(), [screenShareImplementation]);
|
|
31
|
+
// テキスト入力の実装(指定がない場合はデフォルト実装を使用)
|
|
32
|
+
const textInputImpl = useMemo(() => textInputImplementation ?? createDefaultTextInputImplementation(), [textInputImplementation]);
|
|
30
33
|
// オブジェクトの登録
|
|
31
34
|
const registerInteractable = useCallback((object) => {
|
|
32
35
|
interactableObjects.add(object);
|
|
@@ -40,7 +43,7 @@ export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShar
|
|
|
40
43
|
interactableObjects,
|
|
41
44
|
registerInteractable,
|
|
42
45
|
unregisterInteractable,
|
|
43
|
-
}, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: _jsx(SpawnPointProvider, { implementation: spawnPointImplementation, children: _jsx(UsersProvider, { implementation: usersImplementation, children: children }) }) }) }) }));
|
|
46
|
+
}, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(TextInputProvider, { value: textInputImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: _jsx(SpawnPointProvider, { implementation: spawnPointImplementation, children: _jsx(UsersProvider, { implementation: usersImplementation, children: children }) }) }) }) }) }));
|
|
44
47
|
};
|
|
45
48
|
/**
|
|
46
49
|
* XRift ワールドの情報を取得するhook
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEjG,OAAO,EAAE,qBAAqB,EAAkC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,mBAAmB,EAAgC,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAA+B,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,aAAa,EAA0B,MAAM,gBAAgB,CAAA;AAEtE,sBAAsB;AACtB,MAAM,sCAAsC,GAAG,GAA4B,EAAE,CAAC,CAAC;IAC7E,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,KAAK;IAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAC5E,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;IAC1E,eAAe,EAAE,KAAK;CACvB,CAAC,CAAA;AA2BF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { InstanceStateContext, useInstanceStateContext, type InstanceStateContex
|
|
|
3
3
|
export { ScreenShareContext, ScreenShareProvider, useScreenShareContext, type ScreenShareContextValue, } from './contexts/ScreenShareContext';
|
|
4
4
|
export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, type SpawnPoint as SpawnPointData, type SpawnPointContextValue, } from './contexts/SpawnPointContext';
|
|
5
5
|
export { UsersContext, UsersProvider, useUsers, type User, type UsersContextValue, } from './contexts/UsersContext';
|
|
6
|
+
export { TextInputContext, TextInputProvider, useTextInputContext, createDefaultTextInputImplementation, type TextInputContextValue, type TextInputRequest, } from './contexts/TextInputContext';
|
|
6
7
|
export { Interactable, type InteractableProps, } from './components/Interactable';
|
|
7
8
|
export { Mirror, type MirrorProps } from './components/Mirror';
|
|
8
9
|
export { Skybox, type SkyboxProps } from './components/Skybox';
|
|
@@ -11,6 +12,7 @@ export { RichVideoPlayer, type RichVideoPlayerProps, } from './components/RichVi
|
|
|
11
12
|
export { LiveVideoPlayer, type LiveVideoPlayerProps, } from './components/LiveVideoPlayer';
|
|
12
13
|
export { ScreenShareDisplay, type ScreenShareDisplayProps, } from './components/ScreenShareDisplay';
|
|
13
14
|
export { SpawnPoint, type SpawnPointProps, } from './components/SpawnPoint';
|
|
15
|
+
export { TextInput, type TextInputProps, } from './components/TextInput';
|
|
14
16
|
export { useInstanceState } from './hooks/useInstanceState';
|
|
15
17
|
export { useSpawnPoint } from './hooks/useSpawnPoint';
|
|
16
18
|
export { type PlayerMovement, type Position3D, type Rotation3D, type VRTrackingData, type VRMovementDirection, } from './types/movement';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oCAAoC,EACpC,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,SAAS,EACT,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { InstanceStateContext, useInstanceStateContext, } from './contexts/Insta
|
|
|
4
4
|
export { ScreenShareContext, ScreenShareProvider, useScreenShareContext, } from './contexts/ScreenShareContext';
|
|
5
5
|
export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, } from './contexts/SpawnPointContext';
|
|
6
6
|
export { UsersContext, UsersProvider, useUsers, } from './contexts/UsersContext';
|
|
7
|
+
export { TextInputContext, TextInputProvider, useTextInputContext, createDefaultTextInputImplementation, } from './contexts/TextInputContext';
|
|
7
8
|
// Components
|
|
8
9
|
export { Interactable, } from './components/Interactable';
|
|
9
10
|
export { Mirror } from './components/Mirror';
|
|
@@ -13,6 +14,7 @@ export { RichVideoPlayer, } from './components/RichVideoPlayer';
|
|
|
13
14
|
export { LiveVideoPlayer, } from './components/LiveVideoPlayer';
|
|
14
15
|
export { ScreenShareDisplay, } from './components/ScreenShareDisplay';
|
|
15
16
|
export { SpawnPoint, } from './components/SpawnPoint';
|
|
17
|
+
export { TextInput, } from './components/TextInput';
|
|
16
18
|
// Hooks
|
|
17
19
|
export { useInstanceState } from './hooks/useInstanceState';
|
|
18
20
|
export { useSpawnPoint } from './hooks/useSpawnPoint';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAET,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAGT,MAAM,yBAAyB,CAAA;AAEhC,aAAa;AACb,OAAO,EACL,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,GAGZ,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,eAAe,GAEhB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,eAAe,GAEhB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,GAEX,MAAM,yBAAyB,CAAA;AAEhC,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAET,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAGT,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oCAAoC,GAGrC,MAAM,6BAA6B,CAAA;AAEpC,aAAa;AACb,OAAO,EACL,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,GAGZ,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,eAAe,GAEhB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,eAAe,GAEhB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,GAEX,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,SAAS,GAEV,MAAM,wBAAwB,CAAA;AAE/B,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestScene.d.ts","sourceRoot":"","sources":["../../src/scenes/TestScene.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TestScene.d.ts","sourceRoot":"","sources":["../../src/scenes/TestScene.tsx"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,SAAS,4CA4GxB"}
|
package/dist/scenes/TestScene.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import { RichVideoPlayer } from '../components/RichVideoPlayer';
|
|
3
4
|
import { LiveVideoPlayer } from '../components/LiveVideoPlayer';
|
|
4
5
|
import { Mirror } from '../components/Mirror';
|
|
5
6
|
import { Skybox } from '../components/Skybox';
|
|
7
|
+
import { TextInput } from '../components/TextInput';
|
|
6
8
|
/**
|
|
7
9
|
* VideoScreenとMirrorのテストシーン
|
|
8
10
|
* Triplexでコンポーネントを確認するためのシーン
|
|
9
11
|
*/
|
|
10
12
|
export function TestScene() {
|
|
11
|
-
|
|
13
|
+
const [textInputValue, setTextInputValue] = useState('');
|
|
14
|
+
return (_jsxs(_Fragment, { children: [_jsx(Skybox, {}), _jsx("ambientLight", { intensity: 0.5 }), _jsx("directionalLight", { position: [5, 10, 5], intensity: 1 }), _jsxs("mesh", { rotation: [-Math.PI / 2, 0, 0], position: [0, 0, 0], receiveShadow: true, children: [_jsx("planeGeometry", { args: [20, 20] }), _jsx("meshStandardMaterial", { color: "#cccccc" })] }), _jsx(RichVideoPlayer, { id: "rich-player", position: [-4, 2, -2], rotation: [0, Math.PI / 6, 0], width: 3, volume: 0, playing: true, url: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" }), _jsx(LiveVideoPlayer, { id: "live-player", position: [4, 2, -2], rotation: [0, -Math.PI / 6, 0], width: 3, volume: 0, playing: true, url: "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8" }), _jsx(Mirror, { position: [-5, 2.5, -3], size: [3, 4], textureResolution: 512 }), _jsx(Mirror, { position: [-3, 1.5, -7], size: [2, 2], color: 0xffd700 }), _jsxs("mesh", { position: [0, 0.5, 0], children: [_jsx("boxGeometry", { args: [1, 1, 1] }), _jsx("meshStandardMaterial", { color: "orange" })] }), _jsxs("mesh", { position: [2, 1, -1], children: [_jsx("sphereGeometry", { args: [0.5, 32, 32] }), _jsx("meshStandardMaterial", { color: "blue", metalness: 0.8, roughness: 0.2 })] }), _jsxs("mesh", { position: [-2, 0.75, -1], children: [_jsx("cylinderGeometry", { args: [0.5, 0.5, 1.5, 32] }), _jsx("meshStandardMaterial", { color: "green" })] }), _jsx(TextInput, { id: "test-input", placeholder: "\u540D\u524D\u3092\u5165\u529B...", maxLength: 20, value: textInputValue, onSubmit: (value) => {
|
|
15
|
+
console.log('TextInput submitted:', value);
|
|
16
|
+
setTextInputValue(value);
|
|
17
|
+
}, children: _jsxs("mesh", { position: [0, 1.5, -2], children: [_jsx("boxGeometry", { args: [2, 0.5, 0.1] }), _jsx("meshStandardMaterial", { color: "#333" })] }) })] }));
|
|
12
18
|
}
|
|
13
19
|
//# sourceMappingURL=TestScene.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestScene.js","sourceRoot":"","sources":["../../src/scenes/TestScene.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TestScene.js","sourceRoot":"","sources":["../../src/scenes/TestScene.tsx"],"names":[],"mappings":"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"}
|