@tomorrowevening/theatre-r3f 1.0.1

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.
Files changed (73) hide show
  1. package/LICENSE +203 -0
  2. package/README.md +104 -0
  3. package/dist/drei/OrthographicCamera.d.ts +17 -0
  4. package/dist/drei/OrthographicCamera.d.ts.map +1 -0
  5. package/dist/drei/PerspectiveCamera.d.ts +17 -0
  6. package/dist/drei/PerspectiveCamera.d.ts.map +1 -0
  7. package/dist/drei/index.d.ts +3 -0
  8. package/dist/drei/index.d.ts.map +1 -0
  9. package/dist/extension/InfiniteGridHelper/index.d.ts +12 -0
  10. package/dist/extension/InfiniteGridHelper/index.d.ts.map +1 -0
  11. package/dist/extension/components/DragDetector.d.ts +8 -0
  12. package/dist/extension/components/DragDetector.d.ts.map +1 -0
  13. package/dist/extension/components/EditableProxy.d.ts +9 -0
  14. package/dist/extension/components/EditableProxy.d.ts.map +1 -0
  15. package/dist/extension/components/OrbitControls/OrbitControlsImpl.d.ts +65 -0
  16. package/dist/extension/components/OrbitControls/OrbitControlsImpl.d.ts.map +1 -0
  17. package/dist/extension/components/OrbitControls/index.d.ts +24 -0
  18. package/dist/extension/components/OrbitControls/index.d.ts.map +1 -0
  19. package/dist/extension/components/ProxyManager.d.ts +9 -0
  20. package/dist/extension/components/ProxyManager.d.ts.map +1 -0
  21. package/dist/extension/components/ReferenceWindow/ReferenceWindow.d.ts +10 -0
  22. package/dist/extension/components/ReferenceWindow/ReferenceWindow.d.ts.map +1 -0
  23. package/dist/extension/components/ReferenceWindow/noiseImage.d.ts +3 -0
  24. package/dist/extension/components/ReferenceWindow/noiseImage.d.ts.map +1 -0
  25. package/dist/extension/components/SnapshotEditor.d.ts +6 -0
  26. package/dist/extension/components/SnapshotEditor.d.ts.map +1 -0
  27. package/dist/extension/components/TransformControls.d.ts +19 -0
  28. package/dist/extension/components/TransformControls.d.ts.map +1 -0
  29. package/dist/extension/components/useRefAndState.d.ts +18 -0
  30. package/dist/extension/components/useRefAndState.d.ts.map +1 -0
  31. package/dist/extension/components/useSelected.d.ts +3 -0
  32. package/dist/extension/components/useSelected.d.ts.map +1 -0
  33. package/dist/extension/components/useSnapshotEditorCamera.d.ts +9 -0
  34. package/dist/extension/components/useSnapshotEditorCamera.d.ts.map +1 -0
  35. package/dist/extension/editorStuff.d.ts +19 -0
  36. package/dist/extension/editorStuff.d.ts.map +1 -0
  37. package/dist/extension/icons.d.ts +13 -0
  38. package/dist/extension/icons.d.ts.map +1 -0
  39. package/dist/extension/index.d.ts +4 -0
  40. package/dist/extension/index.d.ts.map +1 -0
  41. package/dist/extension/index.esm.js +22176 -0
  42. package/dist/extension/index.esm.js.map +7 -0
  43. package/dist/extension/index.js +22142 -0
  44. package/dist/extension/index.js.map +7 -0
  45. package/dist/extension/useExtensionStore.d.ts +3 -0
  46. package/dist/extension/useExtensionStore.d.ts.map +1 -0
  47. package/dist/index.d.ts +8 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.esm.js +780 -0
  50. package/dist/index.esm.js.map +7 -0
  51. package/dist/index.js +778 -0
  52. package/dist/index.js.map +7 -0
  53. package/dist/main/RafDriverProvider.d.ts +10 -0
  54. package/dist/main/RafDriverProvider.d.ts.map +1 -0
  55. package/dist/main/RefreshSnapshot.d.ts +19 -0
  56. package/dist/main/RefreshSnapshot.d.ts.map +1 -0
  57. package/dist/main/SheetProvider.d.ts +10 -0
  58. package/dist/main/SheetProvider.d.ts.map +1 -0
  59. package/dist/main/defaultEditableFactoryConfig.d.ts +579 -0
  60. package/dist/main/defaultEditableFactoryConfig.d.ts.map +1 -0
  61. package/dist/main/editable.d.ts +124 -0
  62. package/dist/main/editable.d.ts.map +1 -0
  63. package/dist/main/editableFactoryConfigUtils.d.ts +58 -0
  64. package/dist/main/editableFactoryConfigUtils.d.ts.map +1 -0
  65. package/dist/main/store.d.ts +46 -0
  66. package/dist/main/store.d.ts.map +1 -0
  67. package/dist/main/useInvalidate.d.ts +2 -0
  68. package/dist/main/useInvalidate.d.ts.map +1 -0
  69. package/dist/main/utils.d.ts +4 -0
  70. package/dist/main/utils.d.ts.map +1 -0
  71. package/dist/types.d.ts +3 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/package.json +87 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/zustand/vanilla.js", "../src/main/editable.tsx", "../src/main/store.ts", "../../../node_modules/react-merge-refs/src/index.tsx", "../src/main/useInvalidate.ts", "../src/main/SheetProvider.tsx", "../src/main/editableFactoryConfigUtils.ts", "../src/main/defaultEditableFactoryConfig.ts", "../src/main/utils.ts", "../src/main/RafDriverProvider.tsx", "../src/main/RefreshSnapshot.tsx", "../src/drei/PerspectiveCamera.tsx", "../src/drei/OrthographicCamera.tsx"],
4
+ "sourcesContent": ["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction create(createState) {\n var state;\n var listeners = new Set();\n\n var setState = function setState(partial, replace) {\n var nextState = typeof partial === 'function' ? partial(state) : partial;\n\n if (nextState !== state) {\n var _previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach(function (listener) {\n return listener(state, _previousState);\n });\n }\n };\n\n var getState = function getState() {\n return state;\n };\n\n var subscribeWithSelector = function subscribeWithSelector(listener, selector, equalityFn) {\n if (selector === void 0) {\n selector = getState;\n }\n\n if (equalityFn === void 0) {\n equalityFn = Object.is;\n }\n\n var currentSlice = selector(state);\n\n function listenerToAdd() {\n var nextSlice = selector(state);\n\n if (!equalityFn(currentSlice, nextSlice)) {\n var _previousSlice = currentSlice;\n listener(currentSlice = nextSlice, _previousSlice);\n }\n }\n\n listeners.add(listenerToAdd);\n return function () {\n return listeners.delete(listenerToAdd);\n };\n };\n\n var subscribe = function subscribe(listener, selector, equalityFn) {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n\n listeners.add(listener);\n return function () {\n return listeners.delete(listener);\n };\n };\n\n var destroy = function destroy() {\n return listeners.clear();\n };\n\n var api = {\n setState: setState,\n getState: getState,\n subscribe: subscribe,\n destroy: destroy\n };\n state = createState(setState, getState, api);\n return api;\n}\n\nexports.default = create;\n", "import type {ComponentProps, ComponentType, Ref, RefAttributes} from 'react'\r\nimport {useMemo, useState} from 'react'\r\nimport React, {forwardRef, useEffect, useLayoutEffect, useRef} from 'react'\r\nimport {allRegisteredObjects, editorStore} from './store'\r\nimport {mergeRefs} from 'react-merge-refs'\r\nimport useInvalidate from './useInvalidate'\r\nimport {useCurrentSheet} from './SheetProvider'\r\nimport defaultEditableFactoryConfig from './defaultEditableFactoryConfig'\r\nimport type {EditableFactoryConfig} from './editableFactoryConfigUtils'\r\nimport {makeStoreKey} from './utils'\r\nimport type {$FixMe, $IntentionalAny} from '../types'\r\nimport type {ISheetObject} from '@theatre/core'\r\nimport {notify} from '@theatre/core'\r\nimport {useCurrentRafDriver} from './RafDriverProvider'\r\n\r\nconst createEditable = <Keys extends keyof JSX.IntrinsicElements>(\r\n config: EditableFactoryConfig,\r\n) => {\r\n const editable = <\r\n T extends ComponentType<any> | keyof JSX.IntrinsicElements | 'primitive',\r\n U extends Keys,\r\n >(\r\n Component: T,\r\n type: T extends 'primitive' ? null : U,\r\n ) => {\r\n type Props = Omit<ComponentProps<T>, 'visible'> & {\r\n theatreKey: string\r\n visible?: boolean | 'editor'\r\n additionalProps?: $FixMe\r\n objRef?: $FixMe\r\n } & (T extends 'primitive'\r\n ? {\r\n editableType: U\r\n }\r\n : {}) &\r\n RefAttributes<JSX.IntrinsicElements[U]>\r\n\r\n if (Component !== 'primitive' && !type) {\r\n throw new Error(\r\n `You must provide the type of the component you're creating an editable for. For example: editable(MyComponent, 'mesh').`,\r\n )\r\n }\r\n\r\n // TODO: detect if `editable()` is being called in the body of a react component, which is a common\r\n // mistake. If it is, throw an error.\r\n\r\n return forwardRef(\r\n (\r\n {\r\n theatreKey,\r\n visible,\r\n editableType,\r\n additionalProps,\r\n objRef,\r\n ...props\r\n }: Props,\r\n ref,\r\n ) => {\r\n //region Runtime type checks\r\n if (typeof theatreKey !== 'string') {\r\n throw new Error(\r\n `No valid theatreKey was provided to the editable component. theatreKey must be a string. Received: ${theatreKey}`,\r\n )\r\n }\r\n\r\n if (Component === 'primitive' && !editableType) {\r\n throw new Error(\r\n `When using the primitive component, you must provide the editableType prop. Received: ${editableType}`,\r\n )\r\n }\r\n //endregion\r\n\r\n const actualType = type ?? editableType\r\n\r\n const objectRef = useRef<JSX.IntrinsicElements[U]>()\r\n\r\n const sheet = useCurrentSheet()!\r\n const rafDriver = useCurrentRafDriver()\r\n\r\n const [sheetObject, setSheetObject] = useState<\r\n undefined | ISheetObject<$FixMe>\r\n >(undefined)\r\n\r\n const storeKey = useMemo(\r\n () =>\r\n makeStoreKey({\r\n ...sheet.address,\r\n objectKey: theatreKey as $IntentionalAny,\r\n }),\r\n [sheet, theatreKey],\r\n )\r\n\r\n const invalidate = useInvalidate()\r\n\r\n // warn about cameras in r3f\r\n useEffect(() => {\r\n if (\r\n Component === 'perspectiveCamera' ||\r\n Component === 'orthographicCamera'\r\n ) {\r\n const dreiComponent =\r\n Component.charAt(0).toUpperCase() + Component.slice(1)\r\n\r\n notify.warning(\r\n `Possibly incorrect use of <e.${Component} />`,\r\n `You seem to have declared the camera \"${theatreKey}\" simply as \\`<e.${Component} ... />\\`. This alone won't make r3f use it for rendering.\r\n\r\nThe easiest way to create a custom animatable \\`${dreiComponent}\\` is to import it from \\`@react-three/drei\\`, and make it editable.\r\n\\`\\`\\`\r\nimport {${dreiComponent}} from '@react-three/drei'\r\n\r\nconst EditableCamera =\r\n editable(${dreiComponent}, '${Component}')\r\n\\`\\`\\`\r\nThen you can use it in your JSX like any other editable component. Note the makeDefault prop exposed by drei, which makes r3f use it for rendering.\r\n\\`\\`\\`\r\n<EditableCamera\r\n theatreKey=\"${theatreKey}\"\r\n makeDefault\r\n>\r\n\\`\\`\\`\r\n`,\r\n )\r\n }\r\n }, [Component, theatreKey])\r\n\r\n // create sheet object and add editable to store\r\n useLayoutEffect(() => {\r\n if (!sheet) return\r\n if (sheetObject) {\r\n sheet.object(\r\n theatreKey,\r\n Object.assign(\r\n {\r\n ...additionalProps,\r\n },\r\n // @ts-ignore\r\n ...Object.values(config[actualType].props).map(\r\n // @ts-ignore\r\n (value) => value.type,\r\n ),\r\n ),\r\n {reconfigure: true},\r\n )\r\n return\r\n } else {\r\n const sheetObject = sheet.object(\r\n theatreKey,\r\n Object.assign(\r\n {\r\n ...additionalProps,\r\n },\r\n // @ts-ignore\r\n ...Object.values(config[actualType].props).map(\r\n // @ts-ignore\r\n (value) => value.type,\r\n ),\r\n ),\r\n )\r\n allRegisteredObjects.add(sheetObject)\r\n setSheetObject(sheetObject)\r\n\r\n if (objRef)\r\n typeof objRef === 'function'\r\n ? objRef(sheetObject)\r\n : (objRef.current = sheetObject)\r\n\r\n editorStore.getState().addEditable(storeKey, {\r\n type: actualType,\r\n sheetObject,\r\n visibleOnlyInEditor: visible === 'editor',\r\n // @ts-ignore\r\n objectConfig: config[actualType],\r\n })\r\n }\r\n }, [sheet, storeKey, additionalProps])\r\n\r\n // store initial values of props\r\n useLayoutEffect(() => {\r\n if (!sheetObject) return\r\n sheetObject!.initialValue = Object.fromEntries(\r\n // @ts-ignore\r\n Object.entries(config[actualType].props).map(\r\n // @ts-ignore\r\n ([key, value]) => [key, value.parse(props)],\r\n ),\r\n )\r\n }, [\r\n sheetObject,\r\n // @ts-ignore\r\n ...Object.keys(config[actualType].props).map(\r\n // @ts-ignore\r\n (key) => props[key],\r\n ),\r\n ])\r\n\r\n // subscribe to prop changes from theatre\r\n useLayoutEffect(() => {\r\n if (!sheetObject) return\r\n\r\n const object = objectRef.current!\r\n\r\n const setFromTheatre = (newValues: any) => {\r\n // @ts-ignore\r\n Object.entries(config[actualType].props).forEach(\r\n // @ts-ignore\r\n ([key, value]) => value.apply(newValues[key], object),\r\n )\r\n // @ts-ignore\r\n config[actualType].updateObject?.(object)\r\n invalidate()\r\n }\r\n\r\n setFromTheatre(sheetObject.value)\r\n\r\n const unsubscribe = sheetObject.onValuesChange(\r\n setFromTheatre,\r\n rafDriver,\r\n )\r\n\r\n return () => {\r\n unsubscribe()\r\n sheetObject.sheet.detachObject(theatreKey)\r\n allRegisteredObjects.delete(sheetObject)\r\n editorStore.getState().removeEditable(storeKey)\r\n }\r\n }, [sheetObject, rafDriver])\r\n\r\n return (\r\n // @ts-ignore\r\n <Component\r\n ref={mergeRefs([objectRef, ref])}\r\n {...props}\r\n visible={visible !== 'editor' && visible}\r\n userData={{\r\n __editable: true,\r\n __storeKey: storeKey,\r\n }}\r\n />\r\n )\r\n },\r\n )\r\n }\r\n\r\n const extensions = {\r\n ...Object.fromEntries(\r\n Object.keys(config).map((key) => [\r\n key,\r\n // @ts-ignore\r\n editable(key, key),\r\n ]),\r\n ),\r\n primitive: editable('primitive', null),\r\n } as unknown as {\r\n [Property in Keys]: React.ForwardRefExoticComponent<\r\n Omit<JSX.IntrinsicElements[Property], 'visible'> & {\r\n theatreKey: string\r\n visible?: boolean | 'editor'\r\n additionalProps?: $FixMe\r\n objRef?: $FixMe\r\n // not exactly sure how to get the type of the threejs object itself\r\n ref?: Ref<unknown>\r\n }\r\n >\r\n } & {\r\n primitive: React.ForwardRefExoticComponent<\r\n {\r\n object: any\r\n theatreKey: string\r\n visible?: boolean | 'editor'\r\n additionalProps?: $FixMe\r\n objRef?: $FixMe\r\n editableType: keyof JSX.IntrinsicElements\r\n // not exactly sure how to get the type of the threejs object itself\r\n ref?: Ref<unknown>\r\n } & {\r\n // Have to reproduce the primitive component's props here because we need to\r\n // lift this index type here to the outside to make auto-complete work\r\n [props: string]: any\r\n }\r\n >\r\n }\r\n\r\n return Object.assign(editable, extensions)\r\n}\r\n\r\nconst editable = createEditable<keyof typeof defaultEditableFactoryConfig>(\r\n defaultEditableFactoryConfig,\r\n)\r\n\r\nexport default editable\r\n", "import type {StateCreator} from 'zustand'\r\nimport create from 'zustand/vanilla'\r\nimport type {Object3D, Scene, WebGLRenderer} from 'three'\r\nimport {Group} from 'three'\r\nimport type {ISheetObject} from '@theatre/core'\r\nimport type {ObjectConfig} from './editableFactoryConfigUtils'\r\n\r\nexport type TransformControlsMode = 'translate' | 'rotate' | 'scale'\r\nexport type TransformControlsSpace = 'world' | 'local'\r\nexport type ViewportShading = 'wireframe' | 'flat' | 'solid' | 'rendered'\r\n\r\nexport type BaseSheetObjectType = ISheetObject<any>\r\n\r\nexport const allRegisteredObjects = new WeakSet<BaseSheetObjectType>()\r\n\r\nexport interface Editable<T> {\r\n type: string\r\n sheetObject: ISheetObject<any>\r\n objectConfig: ObjectConfig<T>\r\n visibleOnlyInEditor: boolean\r\n}\r\n\r\nexport type EditableSnapshot<T extends Editable<any> = Editable<any>> = {\r\n proxyObject?: Object3D | null\r\n} & T\r\n\r\nexport interface SerializedEditable {\r\n type: string\r\n}\r\n\r\nexport interface EditableState {\r\n editables: Record<string, SerializedEditable>\r\n}\r\n\r\nexport type EditorStore = {\r\n scene: Scene | null\r\n gl: WebGLRenderer | null\r\n helpersRoot: Group\r\n editables: Record<string, Editable<any>>\r\n // this will come in handy when we start supporting multiple canvases\r\n canvasName: string\r\n sceneSnapshot: Scene | null\r\n editablesSnapshot: Record<string, EditableSnapshot> | null\r\n\r\n init: (scene: Scene, gl: WebGLRenderer) => void\r\n\r\n addEditable: (theatreKey: string, editable: Editable<any>) => void\r\n removeEditable: (theatreKey: string) => void\r\n createSnapshot: () => void\r\n setSnapshotProxyObject: (\r\n proxyObject: Object3D | null,\r\n theatreKey: string,\r\n ) => void\r\n}\r\n\r\nconst config: StateCreator<EditorStore> = (set, get) => {\r\n return {\r\n sheet: null,\r\n editorObject: null,\r\n scene: null,\r\n gl: null,\r\n helpersRoot: new Group(),\r\n editables: {},\r\n canvasName: 'default',\r\n sceneSnapshot: null,\r\n editablesSnapshot: null,\r\n initialEditorCamera: {},\r\n\r\n init: (scene, gl) => {\r\n set({\r\n scene,\r\n gl,\r\n })\r\n\r\n // Create a snapshot, so that if the editor is already open, it gets refreshed\r\n // when the scene is initialized\r\n get().createSnapshot()\r\n },\r\n\r\n addEditable: (theatreKey, editable) => {\r\n set((state) => ({\r\n editables: {\r\n ...state.editables,\r\n [theatreKey]: editable,\r\n },\r\n }))\r\n },\r\n\r\n removeEditable: (theatreKey) => {\r\n set((state) => {\r\n const editables = {...state.editables}\r\n delete editables[theatreKey]\r\n return {\r\n editables,\r\n }\r\n })\r\n },\r\n\r\n createSnapshot: () => {\r\n set((state) => ({\r\n sceneSnapshot: state.scene?.clone() ?? null,\r\n editablesSnapshot: state.editables,\r\n }))\r\n },\r\n\r\n setSnapshotProxyObject: (proxyObject, theatreKey) => {\r\n set((state) => ({\r\n editablesSnapshot: {\r\n ...state.editablesSnapshot,\r\n [theatreKey]: {\r\n ...state.editablesSnapshot![theatreKey],\r\n proxyObject,\r\n },\r\n },\r\n }))\r\n },\r\n }\r\n}\r\n\r\nexport const editorStore = create<EditorStore>(config)\r\n\r\nexport type BindFunction = (options: {\r\n allowImplicitInstancing?: boolean\r\n gl: WebGLRenderer\r\n scene: Scene\r\n}) => void\r\n\r\nexport const bindToCanvas: BindFunction = ({gl, scene}) => {\r\n const init = editorStore.getState().init\r\n init(scene, gl)\r\n}\r\n", "import type * as React from \"react\";\n\nexport function mergeRefs<T = any>(\n refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>\n): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n}\n", "import {useThree} from '@react-three/fiber'\r\n\r\nexport default function useInvalidate() {\r\n return useThree(({invalidate}) => invalidate)\r\n}\r\n", "import type {ReactNode} from 'react'\r\nimport React, {\r\n createContext,\r\n useContext,\r\n useEffect,\r\n useLayoutEffect,\r\n} from 'react'\r\nimport {useThree} from '@react-three/fiber'\r\nimport type {ISheet} from '@theatre/core'\r\nimport {bindToCanvas} from './store'\r\n\r\nconst ctx = createContext<{sheet: ISheet}>(undefined!)\r\n\r\nconst useWrapperContext = (): {sheet: ISheet} => {\r\n const val = useContext(ctx)\r\n if (!val) {\r\n throw new Error(\r\n `No sheet found. You need to add a <SheetProvider> higher up in the tree. https://docs.theatrejs.com/r3f.html#sheetprovider`,\r\n )\r\n }\r\n return val\r\n}\r\n\r\nexport const useCurrentSheet = (): ISheet | undefined => {\r\n return useWrapperContext().sheet\r\n}\r\n\r\nconst SheetProvider: React.FC<{\r\n sheet: ISheet\r\n children: ReactNode\r\n}> = ({sheet, children}) => {\r\n const {scene, gl} = useThree((s) => ({scene: s.scene, gl: s.gl}))\r\n\r\n useEffect(() => {\r\n if (!sheet || sheet.type !== 'Theatre_Sheet_PublicAPI') {\r\n throw new Error(`sheet in <Wrapper sheet={sheet}> has an invalid value`)\r\n }\r\n }, [sheet])\r\n\r\n useLayoutEffect(() => {\r\n bindToCanvas({gl, scene})\r\n }, [scene, gl])\r\n\r\n return <ctx.Provider value={{sheet}}>{children}</ctx.Provider>\r\n}\r\n\r\nexport default SheetProvider\r\n", "import type {UnknownShorthandCompoundProps} from '@theatre/core'\r\nimport {notify} from '@theatre/core'\r\nimport {types} from '@theatre/core'\r\nimport type {Object3D} from 'three'\r\nimport type {IconID} from '../extension/icons'\r\nimport {Color} from 'three'\r\n\r\nexport type Helper = Object3D & {\r\n update?: () => void\r\n}\r\ntype PropConfig<T> = {\r\n parse: (props: Record<string, any>) => T\r\n apply: (value: T, object: any) => void\r\n type: UnknownShorthandCompoundProps\r\n}\r\ntype Props = Record<string, PropConfig<any>>\r\ntype Meta<T> = {\r\n useTransformControls: boolean\r\n updateObject?: (object: T) => void\r\n icon: IconID\r\n dimensionless?: boolean\r\n createHelper?: (object: T) => Helper\r\n}\r\nexport type ObjectConfig<T> = {props: Props} & Meta<T>\r\nexport type EditableFactoryConfig = Partial<\r\n Record<keyof JSX.IntrinsicElements, ObjectConfig<any>>\r\n>\r\n\r\ntype Vector3 = {\r\n x: number\r\n y: number\r\n z: number\r\n}\r\n\r\nfunction isNumber(value: any) {\r\n return typeof value === 'number' && isFinite(value)\r\n}\r\n\r\nfunction isVectorObject(value: any) {\r\n return (['x', 'y', 'z'] as const).every((axis) => isNumber(value[axis]))\r\n}\r\n\r\nexport const createVector = (components?: [number, number, number]) => {\r\n return components\r\n ? {x: components[0], y: components[1], z: components[2]}\r\n : {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n }\r\n}\r\n\r\nexport const createVectorPropConfig = (\r\n key: string,\r\n defaultValue = createVector(),\r\n {nudgeMultiplier = 0.01} = {},\r\n): PropConfig<Vector3> => ({\r\n parse: (props) => {\r\n const propValue = props[key]\r\n // if prop exists\r\n const vector = !propValue\r\n ? defaultValue\r\n : // if prop is an array\r\n Array.isArray(propValue)\r\n ? createVector(propValue as any)\r\n : // if prop is a scalar\r\n isNumber(propValue)\r\n ? {\r\n x: propValue,\r\n y: propValue,\r\n z: propValue,\r\n }\r\n : // if prop is a threejs Vector3\r\n isVectorObject(propValue)\r\n ? {\r\n x: propValue.x,\r\n y: propValue.y,\r\n z: propValue.z,\r\n }\r\n : // show a warning and return defaultValue\r\n (notify.warning(\r\n `Invalid value for vector prop \"${key}\"`,\r\n `Couldn't make sense of \\`${key}={${JSON.stringify(\r\n propValue,\r\n )}}\\`, falling back to \\`${key}={${JSON.stringify([\r\n defaultValue.x,\r\n defaultValue.y,\r\n defaultValue.z,\r\n ])}}\\`.\r\n\r\nTo fix this, make sure the prop is set to either a number, an array of numbers, or a three.js Vector3 object.`,\r\n ),\r\n defaultValue)\r\n ;(['x', 'y', 'z'] as const).forEach((axis) => {\r\n // e.g. r3f also accepts prop keys like \"scale-x\"\r\n if (props[`${key}-${axis}` as any])\r\n vector[axis] = props[`${key}-${axis}` as any]\r\n })\r\n return vector\r\n },\r\n apply: (value, object) => {\r\n object[key].set(value.x, value.y, value.z)\r\n },\r\n type: {\r\n [key]: {\r\n x: types.number(defaultValue.x, {nudgeMultiplier}),\r\n y: types.number(defaultValue.y, {nudgeMultiplier}),\r\n z: types.number(defaultValue.z, {nudgeMultiplier}),\r\n },\r\n },\r\n})\r\n\r\nexport const createNumberPropConfig = (\r\n key: string,\r\n defaultValue: number = 0,\r\n {nudgeMultiplier = 0.01} = {},\r\n): PropConfig<number> => ({\r\n parse: (props) => {\r\n return props[key] ?? defaultValue\r\n },\r\n apply: (value, object) => {\r\n object[key] = value\r\n },\r\n type: {\r\n [key]: types.number(defaultValue, {nudgeMultiplier}),\r\n },\r\n})\r\n\r\nexport type Rgba = {\r\n r: number\r\n g: number\r\n b: number\r\n a: number\r\n}\r\n\r\nexport const createColorPropConfig = (\r\n key: string,\r\n defaultValue = new Color(0, 0, 0),\r\n): PropConfig<Rgba> => ({\r\n parse: (props) => {\r\n return {...(props[key] ?? defaultValue), a: 1}\r\n },\r\n apply: (value, object) => {\r\n object[key].setRGB(value.r, value.g, value.b)\r\n },\r\n type: {\r\n [key]: types.rgba({...defaultValue, a: 1}),\r\n },\r\n})\r\n\r\nexport const extendObjectProps = <T extends {props: {}}>(\r\n objectConfig: T,\r\n extension: Props,\r\n) => ({\r\n ...objectConfig,\r\n props: {...objectConfig.props, ...extension},\r\n})\r\n", "import type {EditableFactoryConfig} from './editableFactoryConfigUtils'\r\nimport {\r\n createColorPropConfig,\r\n createNumberPropConfig,\r\n createVector,\r\n createVectorPropConfig,\r\n extendObjectProps,\r\n} from './editableFactoryConfigUtils'\r\nimport type {\r\n DirectionalLight,\r\n Object3D,\r\n OrthographicCamera,\r\n PerspectiveCamera,\r\n PointLight,\r\n SpotLight,\r\n} from 'three'\r\nimport {\r\n BoxHelper,\r\n CameraHelper,\r\n Color,\r\n DirectionalLightHelper,\r\n PointLightHelper,\r\n SpotLightHelper,\r\n} from 'three'\r\n\r\nconst baseObjectConfig = {\r\n props: {\r\n position: createVectorPropConfig('position'),\r\n rotation: createVectorPropConfig('rotation'),\r\n scale: createVectorPropConfig('scale', createVector([1, 1, 1])),\r\n },\r\n useTransformControls: true,\r\n icon: 'cube' as const,\r\n createHelper: (object: Object3D) => new BoxHelper(object, selectionColor),\r\n}\r\n\r\nconst baseLightConfig = {\r\n ...extendObjectProps(baseObjectConfig, {\r\n intensity: createNumberPropConfig('intensity', 1),\r\n distance: createNumberPropConfig('distance'),\r\n decay: createNumberPropConfig('decay'),\r\n color: createColorPropConfig('color', new Color('white')),\r\n }),\r\n dimensionless: true,\r\n}\r\n\r\nconst baseCameraConfig = {\r\n ...extendObjectProps(baseObjectConfig, {\r\n near: createNumberPropConfig('near', 0.1, {nudgeMultiplier: 0.1}),\r\n far: createNumberPropConfig('far', 2000, {nudgeMultiplier: 0.1}),\r\n }),\r\n updateObject: (camera: PerspectiveCamera | OrthographicCamera) => {\r\n camera.updateProjectionMatrix()\r\n },\r\n icon: 'camera' as const,\r\n dimensionless: true,\r\n createHelper: (camera: PerspectiveCamera) => new CameraHelper(camera),\r\n}\r\n\r\nconst selectionColor = '#40AAA4'\r\n\r\nconst defaultEditableFactoryConfig = {\r\n group: {\r\n ...baseObjectConfig,\r\n icon: 'collection' as const,\r\n createHelper: (object: Object3D) => new BoxHelper(object, selectionColor),\r\n },\r\n mesh: {\r\n ...baseObjectConfig,\r\n icon: 'cube' as const,\r\n createHelper: (object: Object3D) => new BoxHelper(object, selectionColor),\r\n },\r\n spotLight: {\r\n ...extendObjectProps(baseLightConfig, {\r\n angle: createNumberPropConfig('angle', 0, {nudgeMultiplier: 0.001}),\r\n penumbra: createNumberPropConfig('penumbra', 0, {nudgeMultiplier: 0.001}),\r\n }),\r\n icon: 'spotLight' as const,\r\n createHelper: (light: SpotLight) =>\r\n new SpotLightHelper(light, selectionColor),\r\n },\r\n directionalLight: {\r\n ...extendObjectProps(baseObjectConfig, {\r\n intensity: createNumberPropConfig('intensity', 1),\r\n color: createColorPropConfig('color', new Color('white')),\r\n }),\r\n icon: 'sun' as const,\r\n dimensionless: true,\r\n createHelper: (light: DirectionalLight) =>\r\n new DirectionalLightHelper(light, 1, selectionColor),\r\n },\r\n pointLight: {\r\n ...baseLightConfig,\r\n icon: 'lightBulb' as const,\r\n createHelper: (light: PointLight) =>\r\n new PointLightHelper(light, 1, selectionColor),\r\n },\r\n ambientLight: {\r\n props: {\r\n intensity: createNumberPropConfig('intensity', 1),\r\n color: createColorPropConfig('color', new Color('white')),\r\n },\r\n useTransformControls: false,\r\n icon: 'lightBulb' as const,\r\n },\r\n hemisphereLight: {\r\n props: {\r\n intensity: createNumberPropConfig('intensity', 1),\r\n color: createColorPropConfig('color', new Color('white')),\r\n groundColor: createColorPropConfig('groundColor', new Color('white')),\r\n },\r\n useTransformControls: false,\r\n icon: 'lightBulb' as const,\r\n },\r\n perspectiveCamera: extendObjectProps(baseCameraConfig, {\r\n fov: createNumberPropConfig('fov', 50, {nudgeMultiplier: 0.1}),\r\n zoom: createNumberPropConfig('zoom', 1),\r\n }),\r\n orthographicCamera: baseCameraConfig,\r\n points: baseObjectConfig,\r\n line: baseObjectConfig,\r\n lineLoop: baseObjectConfig,\r\n lineSegments: baseObjectConfig,\r\n fog: {\r\n props: {\r\n color: createColorPropConfig('color'),\r\n near: createNumberPropConfig('near', 1, {nudgeMultiplier: 0.1}),\r\n far: createNumberPropConfig('far', 1000, {nudgeMultiplier: 0.1}),\r\n },\r\n useTransformControls: false,\r\n icon: 'cloud' as const,\r\n },\r\n}\r\n\r\n// Assert that the config is indeed of EditableFactoryConfig without actually\r\n// forcing it to that type so that we can pass the real type to the editable factory\r\ndefaultEditableFactoryConfig as EditableFactoryConfig\r\n\r\nexport default defaultEditableFactoryConfig\r\n", "import {editorStore} from './store'\r\nimport type {ISheetObject} from '@theatre/core'\r\n\r\nexport const refreshSnapshot = editorStore.getState().createSnapshot\r\n\r\nexport const makeStoreKey = (sheetObjectAddress: ISheetObject['address']) =>\r\n `${sheetObjectAddress.sheetId}:${sheetObjectAddress.sheetInstanceId}:${sheetObjectAddress.objectKey}`\r\n", "import type {ReactNode} from 'react'\r\nimport React, {createContext, useContext, useEffect} from 'react'\r\nimport type {IRafDriver} from '@theatre/core'\r\n\r\nconst ctx = createContext<{rafDriver: IRafDriver}>(undefined!)\r\n\r\nexport const useCurrentRafDriver = (): IRafDriver | undefined => {\r\n return useContext(ctx)?.rafDriver\r\n}\r\n\r\nconst RafDriverProvider: React.FC<{\r\n driver: IRafDriver\r\n children: ReactNode\r\n}> = ({driver, children}) => {\r\n useEffect(() => {\r\n if (!driver || driver.type !== 'Theatre_RafDriver_PublicAPI') {\r\n throw new Error(\r\n `driver in <RafDriverProvider deriver={driver}> has an invalid value`,\r\n )\r\n }\r\n }, [driver])\r\n\r\n return <ctx.Provider value={{rafDriver: driver}}>{children}</ctx.Provider>\r\n}\r\n\r\nexport default RafDriverProvider\r\n", "import React, {useEffect} from 'react'\r\nimport {refreshSnapshot} from './utils'\r\n\r\n/**\r\n * Putting this element in a suspense tree makes sure the snapshot editor\r\n * gets refreshed once the tree renders.\r\n *\r\n * Alternatively you can use {@link refreshSnapshot}\r\n *\r\n * @example\r\n * Usage\r\n * ```jsx\r\n * <Suspense fallback={null}>\r\n * <RefreshSnapshot />\r\n * <Model url={sceneGLB} />\r\n * </Suspense>\r\n * ```\r\n */\r\nconst RefreshSnapshot: React.FC<{}> = () => {\r\n useEffect(() => {\r\n setTimeout(() => {\r\n refreshSnapshot()\r\n })\r\n }, [])\r\n return <></>\r\n}\r\n\r\nexport default RefreshSnapshot\r\n", "import * as React from 'react'\r\nimport type {PerspectiveCamera as PerspectiveCameraImpl, Object3D} from 'three'\r\nimport {useFrame, useThree} from '@react-three/fiber'\r\nimport {mergeRefs} from 'react-merge-refs'\r\nimport {editable} from '../index'\r\nimport {Vector3} from 'three'\r\nimport {editorStore} from '../main/store'\r\nimport type {MutableRefObject} from 'react'\r\n\r\nexport type PerspectiveCameraProps = Omit<\r\n JSX.IntrinsicElements['perspectiveCamera'],\r\n 'lookAt'\r\n> & {\r\n lookAt?:\r\n | [number, number, number]\r\n | Vector3\r\n | MutableRefObject<Object3D | null | undefined>\r\n makeDefault?: boolean\r\n manual?: boolean\r\n children?: React.ReactNode\r\n}\r\n\r\nexport const PerspectiveCamera = editable(\r\n React.forwardRef(\r\n ({makeDefault, lookAt, ...props}: PerspectiveCameraProps, ref) => {\r\n const set = useThree(({set}) => set)\r\n const camera = useThree(({camera}) => camera)\r\n const size = useThree(({size}) => size)\r\n const cameraRef = React.useRef<PerspectiveCameraImpl>(null!)\r\n\r\n React.useLayoutEffect(() => {\r\n if (!props.manual) {\r\n cameraRef.current.aspect = size.width / size.height\r\n }\r\n }, [size, props])\r\n\r\n React.useLayoutEffect(() => {\r\n cameraRef.current.updateProjectionMatrix()\r\n })\r\n\r\n React.useLayoutEffect(() => {\r\n if (makeDefault) {\r\n const oldCam = camera\r\n set(() => ({camera: cameraRef.current!}))\r\n return () => set(() => ({camera: oldCam}))\r\n }\r\n // The camera should not be part of the dependency list because this components camera is a stable reference\r\n // that must exchange the default, and clean up after itself on unmount.\r\n }, [cameraRef, makeDefault, set])\r\n\r\n useFrame(() => {\r\n if (lookAt && cameraRef.current) {\r\n cameraRef.current.lookAt(\r\n Array.isArray(lookAt)\r\n ? new Vector3(...lookAt)\r\n : (lookAt as MutableRefObject<Object3D>).current\r\n ? (lookAt as MutableRefObject<Object3D>).current.position\r\n : (lookAt as Vector3),\r\n )\r\n\r\n // how could we make it possible for users to do something like this too?\r\n const snapshot = editorStore.getState().editablesSnapshot\r\n if (snapshot) {\r\n snapshot[\r\n cameraRef.current.userData.__storeKey\r\n ].proxyObject?.rotation.copy(cameraRef.current.rotation)\r\n }\r\n }\r\n })\r\n\r\n return <perspectiveCamera ref={mergeRefs([cameraRef, ref])} {...props} />\r\n },\r\n ),\r\n 'perspectiveCamera',\r\n)\r\n", "import * as React from 'react'\r\nimport type {\r\n OrthographicCamera as OrthographicCameraImpl,\r\n Object3D,\r\n} from 'three'\r\nimport {useFrame, useThree} from '@react-three/fiber'\r\nimport {mergeRefs} from 'react-merge-refs'\r\nimport {editable} from '../index'\r\nimport {Vector3} from 'three'\r\nimport type {MutableRefObject} from 'react'\r\nimport {editorStore} from '../main/store'\r\n\r\nexport type OrthographicCameraProps = Omit<\r\n JSX.IntrinsicElements['orthographicCamera'],\r\n 'lookAt'\r\n> & {\r\n lookAt?:\r\n | [number, number, number]\r\n | Vector3\r\n | MutableRefObject<Object3D | null | undefined>\r\n makeDefault?: boolean\r\n manual?: boolean\r\n children?: React.ReactNode\r\n}\r\n\r\nexport const OrthographicCamera = editable(\r\n React.forwardRef(\r\n ({makeDefault, lookAt, ...props}: OrthographicCameraProps, ref) => {\r\n const set = useThree(({set}) => set)\r\n const camera = useThree(({camera}) => camera)\r\n const size = useThree(({size}) => size)\r\n const cameraRef = React.useRef<OrthographicCameraImpl>(null!)\r\n\r\n React.useLayoutEffect(() => {\r\n if (!props.manual) {\r\n cameraRef.current.updateProjectionMatrix()\r\n }\r\n }, [size, props])\r\n\r\n React.useLayoutEffect(() => {\r\n cameraRef.current.updateProjectionMatrix()\r\n })\r\n\r\n React.useLayoutEffect(() => {\r\n if (makeDefault) {\r\n const oldCam = camera\r\n set(() => ({camera: cameraRef.current!}))\r\n return () => set(() => ({camera: oldCam}))\r\n }\r\n // The camera should not be part of the dependency list because this components camera is a stable reference\r\n // that must exchange the default, and clean up after itself on unmount.\r\n }, [cameraRef, makeDefault, set])\r\n\r\n useFrame(() => {\r\n if (lookAt && cameraRef.current) {\r\n cameraRef.current.lookAt(\r\n Array.isArray(lookAt)\r\n ? new Vector3(...lookAt)\r\n : (lookAt as MutableRefObject<Object3D>).current\r\n ? (lookAt as MutableRefObject<Object3D>).current.position\r\n : (lookAt as Vector3),\r\n )\r\n\r\n // how could we make it possible for users to do something like this too?\r\n const snapshot = editorStore.getState().editablesSnapshot\r\n if (snapshot) {\r\n snapshot[\r\n cameraRef.current.userData.__storeKey\r\n ].proxyObject?.rotation.copy(cameraRef.current.rotation)\r\n }\r\n }\r\n })\r\n\r\n return (\r\n <orthographicCamera\r\n left={size.width / -2}\r\n right={size.width / 2}\r\n top={size.height / 2}\r\n bottom={size.height / -2}\r\n ref={mergeRefs([cameraRef, ref])}\r\n {...props}\r\n />\r\n )\r\n },\r\n ),\r\n 'orthographicCamera',\r\n)\r\n"],
5
+ "mappings": "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",
6
+ "names": ["create", "setState", "getState", "subscribeWithSelector", "subscribe", "destroy", "React", "useEffect", "useLayoutEffect", "editable", "create", "useThree", "useThree", "Color", "Color", "notify", "React", "createContext", "useContext", "useEffect", "ctx", "config", "editable", "useEffect", "notify", "useLayoutEffect", "sheetObject", "_a", "_b", "React", "React", "useEffect", "useEffect", "React", "React", "useThree", "useThree", "set", "camera", "size", "_a", "React", "useFrame", "useThree", "Vector3", "useThree", "set", "camera", "size", "useFrame", "_a", "Vector3"]
7
+ }