@webspatial/react-sdk 0.0.10 → 0.0.11

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,50 +1,12 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/jsx/jsx-dev-runtime.ts
31
- var jsx_dev_runtime_exports = {};
32
- __export(jsx_dev_runtime_exports, {
33
- Fragment: () => import_jsx_runtime2.Fragment,
34
- jsx: () => jsx,
35
- jsxDEV: () => jsxDEV
36
- });
37
- module.exports = __toCommonJS(jsx_dev_runtime_exports);
38
-
39
1
  // src/jsx/spatialPolyfill.ts
40
- var import_react_sdk2 = require("@webspatial/react-sdk");
2
+ import { getSession as getSession2, parseCornerRadius, XRApp as XRApp2 } from "@webspatial/react-sdk";
41
3
 
42
4
  // src/jsx/injectSceneHook.ts
43
- var import_react_sdk = require("@webspatial/react-sdk");
5
+ import { defaultSceneConfig, XRApp, getSession } from "@webspatial/react-sdk";
44
6
  async function injectSceneHook() {
45
7
  if (!window.opener) return;
46
8
  if (window._SceneHookOff) return;
47
- await (0, import_react_sdk.getSession)()?.setLoading("show");
9
+ await getSession()?.setLoading("show");
48
10
  function onContentLoaded(callback) {
49
11
  if (document.readyState === "interactive" || document.readyState === "complete") {
50
12
  callback();
@@ -53,7 +15,7 @@ async function injectSceneHook() {
53
15
  }
54
16
  }
55
17
  onContentLoaded(async () => {
56
- let cfg = import_react_sdk.defaultSceneConfig;
18
+ let cfg = defaultSceneConfig;
57
19
  if (typeof window.xrCurrentSceneDefaults === "function") {
58
20
  try {
59
21
  cfg = await window.xrCurrentSceneDefaults?.();
@@ -66,20 +28,20 @@ async function injectSceneHook() {
66
28
  resolve(null);
67
29
  }, 1e3);
68
30
  });
69
- await (0, import_react_sdk.getSession)()?.setLoading("hide");
70
- await import_react_sdk.XRApp.getInstance().show(window, cfg);
31
+ await getSession()?.setLoading("hide");
32
+ await XRApp.getInstance().show(window, cfg);
71
33
  });
72
34
  }
73
35
 
74
36
  // src/jsx/spatialPolyfill.ts
75
- var isWebSpatialEnv = (0, import_react_sdk2.getSession)() !== null;
37
+ var isWebSpatialEnv = getSession2() !== null;
76
38
  var SpatialGlobalCustomVars = {
77
39
  backgroundMaterial: "--xr-background-material"
78
40
  };
79
41
  var htmlBackgroundMaterial = "";
80
42
  function setCurrentWindowStyle(backgroundMaterial) {
81
43
  if (backgroundMaterial !== htmlBackgroundMaterial) {
82
- const session = (0, import_react_sdk2.getSession)();
44
+ const session = getSession2();
83
45
  session.getCurrentWindowComponent().setStyle({
84
46
  material: { type: backgroundMaterial }
85
47
  });
@@ -101,12 +63,12 @@ var htmlCornerRadius = {
101
63
  };
102
64
  function checkCornerRadius() {
103
65
  const computedStyle = getComputedStyle(document.documentElement);
104
- const cornerRadius = (0, import_react_sdk2.parseCornerRadius)(computedStyle);
66
+ const cornerRadius = parseCornerRadius(computedStyle);
105
67
  setCornerRadius(cornerRadius);
106
68
  }
107
69
  function setCornerRadius(cornerRadius) {
108
70
  if (htmlCornerRadius.topLeading !== cornerRadius.topLeading || htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading || htmlCornerRadius.topTrailing !== cornerRadius.topTrailing || htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing) {
109
- const session = (0, import_react_sdk2.getSession)();
71
+ const session = getSession2();
110
72
  if (!session) return;
111
73
  session.getCurrentWindowComponent().setStyle({
112
74
  cornerRadius
@@ -118,7 +80,7 @@ function setCornerRadius(cornerRadius) {
118
80
  }
119
81
  }
120
82
  function setOpacity(opacity) {
121
- const session = (0, import_react_sdk2.getSession)();
83
+ const session = getSession2();
122
84
  if (!session) return;
123
85
  session.getCurrentWindowComponent().setOpacity(opacity);
124
86
  }
@@ -128,7 +90,7 @@ function checkOpacity() {
128
90
  setOpacity(opacity);
129
91
  }
130
92
  async function setHtmlVisible(visible) {
131
- const session = (0, import_react_sdk2.getSession)();
93
+ const session = getSession2();
132
94
  if (!session) return;
133
95
  const wc = session.getCurrentWindowComponent();
134
96
  const ent = await wc.getEntity();
@@ -230,7 +192,7 @@ function hijackGetComputedStyle() {
230
192
  };
231
193
  }
232
194
  function hijackWindowOpen() {
233
- import_react_sdk2.XRApp.getInstance().init();
195
+ XRApp2.getInstance().init();
234
196
  }
235
197
  function spatialPolyfill() {
236
198
  if (!isWebSpatialEnv) {
@@ -245,24 +207,29 @@ function spatialPolyfill() {
245
207
  }
246
208
 
247
209
  // src/jsx/jsx-dev-runtime.ts
248
- var import_jsx_runtime2 = require("react/jsx-runtime");
210
+ import { Fragment } from "react/jsx-runtime";
249
211
 
250
212
  // src/jsx/jsx-shared.ts
251
- var import_jsx_dev_runtime = require("react/jsx-dev-runtime");
252
- var import_jsx_runtime = __toESM(require("react/jsx-runtime"));
253
- var import_react_sdk3 = require("@webspatial/react-sdk");
213
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
214
+ import reactJSXRuntime from "react/jsx-runtime";
215
+ import { withCSSSpatial, withSpatialMonitor } from "@webspatial/react-sdk";
254
216
  var attributeFlag = "enable-xr";
255
217
  var styleFlag = "enableXr";
256
218
  var classFlag = "__enableXr__";
219
+ var xrMonitorFlag = "enable-xr-monitor";
257
220
  function replaceToSpatialPrimitiveType(type, props) {
258
221
  const propsObject = props;
259
222
  if (attributeFlag in propsObject) {
260
223
  delete propsObject[attributeFlag];
261
- return (0, import_react_sdk3.withCSSSpatial)(type);
224
+ return withCSSSpatial(type);
225
+ }
226
+ if (xrMonitorFlag in propsObject) {
227
+ delete propsObject[xrMonitorFlag];
228
+ return withSpatialMonitor(type);
262
229
  }
263
230
  if (propsObject && propsObject.style && styleFlag in propsObject.style) {
264
231
  delete propsObject.style[styleFlag];
265
- return (0, import_react_sdk3.withCSSSpatial)(type);
232
+ return withCSSSpatial(type);
266
233
  }
267
234
  if (propsObject && propsObject.className) {
268
235
  const originalClassNames = propsObject.className.split(" ");
@@ -270,26 +237,25 @@ function replaceToSpatialPrimitiveType(type, props) {
270
237
  if (idx !== -1) {
271
238
  originalClassNames.splice(idx, 1);
272
239
  propsObject.className = originalClassNames.join(" ");
273
- return (0, import_react_sdk3.withCSSSpatial)(type);
240
+ return withCSSSpatial(type);
274
241
  }
275
242
  }
276
243
  return type;
277
244
  }
278
245
  function jsx(type, props, key) {
279
246
  type = replaceToSpatialPrimitiveType(type, props);
280
- return import_jsx_runtime.default.jsx(type, props, key);
247
+ return reactJSXRuntime.jsx(type, props, key);
281
248
  }
282
249
  function jsxDEV(type, props, key, isStatic, source, self) {
283
250
  type = replaceToSpatialPrimitiveType(type, props);
284
- return (0, import_jsx_dev_runtime.jsxDEV)(type, props, key, isStatic, source, self);
251
+ return _jsxDEV(type, props, key, isStatic, source, self);
285
252
  }
286
253
 
287
254
  // src/jsx/jsx-dev-runtime.ts
288
255
  spatialPolyfill();
289
- // Annotate the CommonJS export names for ESM import in node:
290
- 0 && (module.exports = {
256
+ export {
291
257
  Fragment,
292
258
  jsx,
293
259
  jsxDEV
294
- });
260
+ };
295
261
  //# sourceMappingURL=jsx-dev-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/jsx/jsx-dev-runtime.ts","../../src/jsx/spatialPolyfill.ts","../../src/jsx/injectSceneHook.ts","../../src/jsx/jsx-shared.ts"],"sourcesContent":["import { spatialPolyfill } from './spatialPolyfill'\n\nspatialPolyfill()\n\nexport { Fragment } from 'react/jsx-runtime'\nexport { jsxDEV, jsx } from './jsx-shared'\n","import { getSession, parseCornerRadius, XRApp } from '@webspatial/react-sdk'\nimport { injectSceneHook } from './injectSceneHook'\n\nconst isWebSpatialEnv = getSession() !== null\n\nconst SpatialGlobalCustomVars = {\n backgroundMaterial: '--xr-background-material',\n}\n\n// keep track of current html background material\nlet htmlBackgroundMaterial = ''\nfunction setCurrentWindowStyle(backgroundMaterial: string) {\n if (backgroundMaterial !== htmlBackgroundMaterial) {\n const session = getSession()!\n session.getCurrentWindowComponent().setStyle({\n material: { type: backgroundMaterial as any },\n })\n htmlBackgroundMaterial = backgroundMaterial\n }\n}\n\nfunction checkHtmlBackgroundMaterial() {\n const computedStyle = getComputedStyle(document.documentElement)\n\n const backgroundMaterial = computedStyle.getPropertyValue(\n SpatialGlobalCustomVars.backgroundMaterial,\n )\n\n setCurrentWindowStyle(backgroundMaterial || 'none')\n}\n\n// keep track of current corner radius\nlet htmlCornerRadius = {\n topLeading: 0,\n bottomLeading: 0,\n topTrailing: 0,\n bottomTrailing: 0,\n}\nfunction checkCornerRadius() {\n const computedStyle = getComputedStyle(document.documentElement)\n const cornerRadius = parseCornerRadius(computedStyle)\n setCornerRadius(cornerRadius)\n}\n\nfunction setCornerRadius(cornerRadius: any) {\n if (\n htmlCornerRadius.topLeading !== cornerRadius.topLeading ||\n htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading ||\n htmlCornerRadius.topTrailing !== cornerRadius.topTrailing ||\n htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing\n ) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setStyle({\n cornerRadius,\n })\n htmlCornerRadius.topLeading = cornerRadius.topLeading\n htmlCornerRadius.bottomLeading = cornerRadius.bottomLeading\n htmlCornerRadius.topTrailing = cornerRadius.topTrailing\n htmlCornerRadius.bottomTrailing = cornerRadius.bottomTrailing\n }\n}\n\nfunction setOpacity(opacity: number) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setOpacity(opacity)\n}\n\nfunction checkOpacity() {\n const computedStyle = getComputedStyle(document.documentElement)\n const opacity = parseFloat(computedStyle.getPropertyValue('opacity'))\n setOpacity(opacity)\n}\n\nasync function setHtmlVisible(visible: boolean) {\n const session = getSession()!\n if (!session) return\n const wc = session.getCurrentWindowComponent()\n const ent = await wc.getEntity()\n ent?.setVisible(visible)\n}\n\nfunction checkHtmlVisible() {\n const computedStyle = getComputedStyle(document.documentElement)\n const visibility = computedStyle.getPropertyValue('visibility') !== 'hidden'\n const widthGtZero = parseFloat(computedStyle.getPropertyValue('width')) > 0\n setHtmlVisible(visibility && widthGtZero)\n}\n\nfunction hijackDocumentElementStyle() {\n const rawDocumentStyle = document.documentElement.style\n const styleProxy = new Proxy(rawDocumentStyle, {\n set: function (target, key, value) {\n const ret = Reflect.set(target, key, value)\n\n if (key === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n\n if (\n key === 'border-radius' ||\n key === 'borderRadius' ||\n key === 'border-top-left-radius' ||\n key === 'borderTopLeftRadius' ||\n key === 'border-top-right-radius' ||\n key === 'borderTopRightRadius' ||\n key === 'border-bottom-left-radius' ||\n key === 'borderBottomLeftRadius' ||\n key === 'border-bottom-right-radius' ||\n key === 'borderBottomRightRadius'\n ) {\n checkCornerRadius()\n }\n\n if (key === 'opacity') {\n checkOpacity()\n }\n\n if (key === 'visibility' || key === 'display') {\n checkHtmlVisible()\n }\n\n return ret\n },\n get: function (target, prop: string) {\n if (typeof target[prop as keyof CSSStyleDeclaration] === 'function') {\n return function (this: any, ...args: any[]) {\n if (prop === 'setProperty') {\n const [property, value] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n } else if (prop === 'removeProperty') {\n const [property] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle('none')\n }\n }\n return (target[prop as keyof CSSStyleDeclaration] as Function)(\n ...args,\n )\n }\n }\n return Reflect.get(target, prop)\n },\n })\n Object.defineProperty(document.documentElement, 'style', {\n get: function () {\n return styleProxy\n },\n })\n}\n\nfunction monitorExternalStyleChange() {\n const headObserver = new MutationObserver(function (mutationsList) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n let needCheck = false\n mutation.addedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n\n if (node.nodeName === 'STYLE') {\n needCheck = true\n }\n })\n\n mutation.removedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n })\n\n if (needCheck) {\n checkCSSProperties()\n }\n }\n }\n })\n\n headObserver.observe(document.head, { childList: true, subtree: true })\n}\n\nfunction checkCSSProperties() {\n checkHtmlBackgroundMaterial()\n checkCornerRadius()\n checkOpacity()\n checkHtmlVisible()\n window.addEventListener('resize', checkHtmlVisible)\n}\n\nfunction hijackGetComputedStyle() {\n const rawFn = window.getComputedStyle.bind(window)\n window.getComputedStyle = (element, pseudoElt) => {\n if ((element as any).__isSpatialDiv) {\n return (element as any).__getComputedStyle(rawFn, pseudoElt)\n }\n return rawFn(element, pseudoElt)\n }\n}\n\nfunction hijackWindowOpen() {\n XRApp.getInstance().init()\n}\n\nexport function spatialPolyfill() {\n if (!isWebSpatialEnv) {\n return\n }\n\n injectSceneHook()\n hijackWindowOpen()\n checkCSSProperties()\n hijackGetComputedStyle()\n hijackDocumentElementStyle()\n monitorExternalStyleChange()\n}\n","import { defaultSceneConfig, XRApp, getSession } from '@webspatial/react-sdk'\n\nexport async function injectSceneHook() {\n if (!window.opener) return\n if ((window as any)._SceneHookOff) return\n\n await getSession()?.setLoading('show')\n // see this flag, we have done create the root scene\n\n function onContentLoaded(callback: any) {\n if (\n document.readyState === 'interactive' ||\n document.readyState === 'complete'\n ) {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', callback)\n }\n }\n\n onContentLoaded(async () => {\n let cfg = defaultSceneConfig\n if (typeof (window as any).xrCurrentSceneDefaults === 'function') {\n try {\n cfg = await (window as any).xrCurrentSceneDefaults?.()\n } catch (error) {\n console.error(error)\n }\n }\n // fixme: this duration is too short so that hide and show is at racing, so add a little delay to avoid\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(null)\n }, 1000)\n })\n await getSession()?.setLoading('hide')\n await XRApp.getInstance().show(window, cfg)\n })\n}\n","import { jsxDEV as _jsxDEV, JSXSource } from 'react/jsx-dev-runtime'\nimport reactJSXRuntime from 'react/jsx-runtime'\n//@ts-ignore bypass ts check for external\nimport { withCSSSpatial } from '@webspatial/react-sdk'\nconst attributeFlag = 'enable-xr'\nconst styleFlag = 'enableXr'\nconst classFlag = '__enableXr__'\n\nexport function replaceToSpatialPrimitiveType(\n type: React.ElementType,\n props: unknown,\n) {\n const propsObject = props as Record<string, any>\n if (attributeFlag in propsObject) {\n delete propsObject[attributeFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.style && styleFlag in propsObject.style) {\n delete propsObject.style[styleFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.className) {\n const originalClassNames = propsObject.className.split(' ')\n const idx = originalClassNames.indexOf(classFlag)\n if (idx !== -1) {\n originalClassNames.splice(idx, 1)\n propsObject.className = originalClassNames.join(' ')\n return withCSSSpatial(type)\n }\n }\n\n return type\n}\n\nexport function jsxs(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsxs(type, props, key)\n}\n\nexport function jsx(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsx(type, props, key)\n}\n\nexport function jsxDEV(\n type: React.ElementType,\n props: unknown,\n key: React.Key,\n isStatic: boolean,\n source?: JSXSource,\n self?: unknown,\n) {\n type = replaceToSpatialPrimitiveType(type, props)\n return _jsxDEV(type, props, key, isStatic, source, self)\n}\n"],"mappings":"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","names":["import_react_sdk","import_jsx_runtime","import_react_sdk","reactJSXRuntime","_jsxDEV"]}
1
+ {"version":3,"sources":["../../src/jsx/spatialPolyfill.ts","../../src/jsx/injectSceneHook.ts","../../src/jsx/jsx-dev-runtime.ts","../../src/jsx/jsx-shared.ts"],"sourcesContent":["import { getSession, parseCornerRadius, XRApp } from '@webspatial/react-sdk'\nimport { injectSceneHook } from './injectSceneHook'\n\nconst isWebSpatialEnv = getSession() !== null\n\nconst SpatialGlobalCustomVars = {\n backgroundMaterial: '--xr-background-material',\n}\n\n// keep track of current html background material\nlet htmlBackgroundMaterial = ''\nfunction setCurrentWindowStyle(backgroundMaterial: string) {\n if (backgroundMaterial !== htmlBackgroundMaterial) {\n const session = getSession()!\n session.getCurrentWindowComponent().setStyle({\n material: { type: backgroundMaterial as any },\n })\n htmlBackgroundMaterial = backgroundMaterial\n }\n}\n\nfunction checkHtmlBackgroundMaterial() {\n const computedStyle = getComputedStyle(document.documentElement)\n\n const backgroundMaterial = computedStyle.getPropertyValue(\n SpatialGlobalCustomVars.backgroundMaterial,\n )\n\n setCurrentWindowStyle(backgroundMaterial || 'none')\n}\n\n// keep track of current corner radius\nlet htmlCornerRadius = {\n topLeading: 0,\n bottomLeading: 0,\n topTrailing: 0,\n bottomTrailing: 0,\n}\nfunction checkCornerRadius() {\n const computedStyle = getComputedStyle(document.documentElement)\n const cornerRadius = parseCornerRadius(computedStyle)\n setCornerRadius(cornerRadius)\n}\n\nfunction setCornerRadius(cornerRadius: any) {\n if (\n htmlCornerRadius.topLeading !== cornerRadius.topLeading ||\n htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading ||\n htmlCornerRadius.topTrailing !== cornerRadius.topTrailing ||\n htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing\n ) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setStyle({\n cornerRadius,\n })\n htmlCornerRadius.topLeading = cornerRadius.topLeading\n htmlCornerRadius.bottomLeading = cornerRadius.bottomLeading\n htmlCornerRadius.topTrailing = cornerRadius.topTrailing\n htmlCornerRadius.bottomTrailing = cornerRadius.bottomTrailing\n }\n}\n\nfunction setOpacity(opacity: number) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setOpacity(opacity)\n}\n\nfunction checkOpacity() {\n const computedStyle = getComputedStyle(document.documentElement)\n const opacity = parseFloat(computedStyle.getPropertyValue('opacity'))\n setOpacity(opacity)\n}\n\nasync function setHtmlVisible(visible: boolean) {\n const session = getSession()!\n if (!session) return\n const wc = session.getCurrentWindowComponent()\n const ent = await wc.getEntity()\n ent?.setVisible(visible)\n}\n\nfunction checkHtmlVisible() {\n const computedStyle = getComputedStyle(document.documentElement)\n const visibility = computedStyle.getPropertyValue('visibility') !== 'hidden'\n const widthGtZero = parseFloat(computedStyle.getPropertyValue('width')) > 0\n setHtmlVisible(visibility && widthGtZero)\n}\n\nfunction hijackDocumentElementStyle() {\n const rawDocumentStyle = document.documentElement.style\n const styleProxy = new Proxy(rawDocumentStyle, {\n set: function (target, key, value) {\n const ret = Reflect.set(target, key, value)\n\n if (key === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n\n if (\n key === 'border-radius' ||\n key === 'borderRadius' ||\n key === 'border-top-left-radius' ||\n key === 'borderTopLeftRadius' ||\n key === 'border-top-right-radius' ||\n key === 'borderTopRightRadius' ||\n key === 'border-bottom-left-radius' ||\n key === 'borderBottomLeftRadius' ||\n key === 'border-bottom-right-radius' ||\n key === 'borderBottomRightRadius'\n ) {\n checkCornerRadius()\n }\n\n if (key === 'opacity') {\n checkOpacity()\n }\n\n if (key === 'visibility' || key === 'display') {\n checkHtmlVisible()\n }\n\n return ret\n },\n get: function (target, prop: string) {\n if (typeof target[prop as keyof CSSStyleDeclaration] === 'function') {\n return function (this: any, ...args: any[]) {\n if (prop === 'setProperty') {\n const [property, value] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n } else if (prop === 'removeProperty') {\n const [property] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle('none')\n }\n }\n return (target[prop as keyof CSSStyleDeclaration] as Function)(\n ...args,\n )\n }\n }\n return Reflect.get(target, prop)\n },\n })\n Object.defineProperty(document.documentElement, 'style', {\n get: function () {\n return styleProxy\n },\n })\n}\n\nfunction monitorExternalStyleChange() {\n const headObserver = new MutationObserver(function (mutationsList) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n let needCheck = false\n mutation.addedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n\n if (node.nodeName === 'STYLE') {\n needCheck = true\n }\n })\n\n mutation.removedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n })\n\n if (needCheck) {\n checkCSSProperties()\n }\n }\n }\n })\n\n headObserver.observe(document.head, { childList: true, subtree: true })\n}\n\nfunction checkCSSProperties() {\n checkHtmlBackgroundMaterial()\n checkCornerRadius()\n checkOpacity()\n checkHtmlVisible()\n window.addEventListener('resize', checkHtmlVisible)\n}\n\nfunction hijackGetComputedStyle() {\n const rawFn = window.getComputedStyle.bind(window)\n window.getComputedStyle = (element, pseudoElt) => {\n if ((element as any).__isSpatialDiv) {\n return (element as any).__getComputedStyle(rawFn, pseudoElt)\n }\n return rawFn(element, pseudoElt)\n }\n}\n\nfunction hijackWindowOpen() {\n XRApp.getInstance().init()\n}\n\nexport function spatialPolyfill() {\n if (!isWebSpatialEnv) {\n return\n }\n\n injectSceneHook()\n hijackWindowOpen()\n checkCSSProperties()\n hijackGetComputedStyle()\n hijackDocumentElementStyle()\n monitorExternalStyleChange()\n}\n","import { defaultSceneConfig, XRApp, getSession } from '@webspatial/react-sdk'\n\nexport async function injectSceneHook() {\n if (!window.opener) return\n if ((window as any)._SceneHookOff) return\n\n await getSession()?.setLoading('show')\n // see this flag, we have done create the root scene\n\n function onContentLoaded(callback: any) {\n if (\n document.readyState === 'interactive' ||\n document.readyState === 'complete'\n ) {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', callback)\n }\n }\n\n onContentLoaded(async () => {\n let cfg = defaultSceneConfig\n if (typeof (window as any).xrCurrentSceneDefaults === 'function') {\n try {\n cfg = await (window as any).xrCurrentSceneDefaults?.()\n } catch (error) {\n console.error(error)\n }\n }\n // fixme: this duration is too short so that hide and show is at racing, so add a little delay to avoid\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(null)\n }, 1000)\n })\n await getSession()?.setLoading('hide')\n await XRApp.getInstance().show(window, cfg)\n })\n}\n","import { spatialPolyfill } from './spatialPolyfill'\n\nspatialPolyfill()\n\nexport { Fragment } from 'react/jsx-runtime'\nexport { jsxDEV, jsx } from './jsx-shared'\n","import { jsxDEV as _jsxDEV, JSXSource } from 'react/jsx-dev-runtime'\nimport reactJSXRuntime from 'react/jsx-runtime'\n//@ts-ignore bypass ts check for external\nimport { withCSSSpatial, withSpatialMonitor } from '@webspatial/react-sdk'\nconst attributeFlag = 'enable-xr'\nconst styleFlag = 'enableXr'\nconst classFlag = '__enableXr__'\nconst xrMonitorFlag = 'enable-xr-monitor'\n\nexport function replaceToSpatialPrimitiveType(\n type: React.ElementType,\n props: unknown,\n) {\n const propsObject = props as Record<string, any>\n if (attributeFlag in propsObject) {\n delete propsObject[attributeFlag]\n return withCSSSpatial(type)\n }\n\n if (xrMonitorFlag in propsObject) {\n delete propsObject[xrMonitorFlag]\n return withSpatialMonitor(type)\n }\n\n if (propsObject && propsObject.style && styleFlag in propsObject.style) {\n delete propsObject.style[styleFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.className) {\n const originalClassNames = propsObject.className.split(' ')\n const idx = originalClassNames.indexOf(classFlag)\n if (idx !== -1) {\n originalClassNames.splice(idx, 1)\n propsObject.className = originalClassNames.join(' ')\n return withCSSSpatial(type)\n }\n }\n\n return type\n}\n\nexport function jsxs(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsxs(type, props, key)\n}\n\nexport function jsx(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsx(type, props, key)\n}\n\nexport function jsxDEV(\n type: React.ElementType,\n props: unknown,\n key: React.Key,\n isStatic: boolean,\n source?: JSXSource,\n self?: unknown,\n) {\n type = replaceToSpatialPrimitiveType(type, props)\n return _jsxDEV(type, props, key, isStatic, source, self)\n}\n"],"mappings":"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","names":["getSession","XRApp","getSession","XRApp"]}
@@ -1,50 +1,12 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/jsx/jsx-runtime.ts
31
- var jsx_runtime_exports = {};
32
- __export(jsx_runtime_exports, {
33
- Fragment: () => import_jsx_runtime2.Fragment,
34
- jsx: () => jsx,
35
- jsxs: () => jsxs
36
- });
37
- module.exports = __toCommonJS(jsx_runtime_exports);
38
-
39
1
  // src/jsx/spatialPolyfill.ts
40
- var import_react_sdk2 = require("@webspatial/react-sdk");
2
+ import { getSession as getSession2, parseCornerRadius, XRApp as XRApp2 } from "@webspatial/react-sdk";
41
3
 
42
4
  // src/jsx/injectSceneHook.ts
43
- var import_react_sdk = require("@webspatial/react-sdk");
5
+ import { defaultSceneConfig, XRApp, getSession } from "@webspatial/react-sdk";
44
6
  async function injectSceneHook() {
45
7
  if (!window.opener) return;
46
8
  if (window._SceneHookOff) return;
47
- await (0, import_react_sdk.getSession)()?.setLoading("show");
9
+ await getSession()?.setLoading("show");
48
10
  function onContentLoaded(callback) {
49
11
  if (document.readyState === "interactive" || document.readyState === "complete") {
50
12
  callback();
@@ -53,7 +15,7 @@ async function injectSceneHook() {
53
15
  }
54
16
  }
55
17
  onContentLoaded(async () => {
56
- let cfg = import_react_sdk.defaultSceneConfig;
18
+ let cfg = defaultSceneConfig;
57
19
  if (typeof window.xrCurrentSceneDefaults === "function") {
58
20
  try {
59
21
  cfg = await window.xrCurrentSceneDefaults?.();
@@ -66,20 +28,20 @@ async function injectSceneHook() {
66
28
  resolve(null);
67
29
  }, 1e3);
68
30
  });
69
- await (0, import_react_sdk.getSession)()?.setLoading("hide");
70
- await import_react_sdk.XRApp.getInstance().show(window, cfg);
31
+ await getSession()?.setLoading("hide");
32
+ await XRApp.getInstance().show(window, cfg);
71
33
  });
72
34
  }
73
35
 
74
36
  // src/jsx/spatialPolyfill.ts
75
- var isWebSpatialEnv = (0, import_react_sdk2.getSession)() !== null;
37
+ var isWebSpatialEnv = getSession2() !== null;
76
38
  var SpatialGlobalCustomVars = {
77
39
  backgroundMaterial: "--xr-background-material"
78
40
  };
79
41
  var htmlBackgroundMaterial = "";
80
42
  function setCurrentWindowStyle(backgroundMaterial) {
81
43
  if (backgroundMaterial !== htmlBackgroundMaterial) {
82
- const session = (0, import_react_sdk2.getSession)();
44
+ const session = getSession2();
83
45
  session.getCurrentWindowComponent().setStyle({
84
46
  material: { type: backgroundMaterial }
85
47
  });
@@ -101,12 +63,12 @@ var htmlCornerRadius = {
101
63
  };
102
64
  function checkCornerRadius() {
103
65
  const computedStyle = getComputedStyle(document.documentElement);
104
- const cornerRadius = (0, import_react_sdk2.parseCornerRadius)(computedStyle);
66
+ const cornerRadius = parseCornerRadius(computedStyle);
105
67
  setCornerRadius(cornerRadius);
106
68
  }
107
69
  function setCornerRadius(cornerRadius) {
108
70
  if (htmlCornerRadius.topLeading !== cornerRadius.topLeading || htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading || htmlCornerRadius.topTrailing !== cornerRadius.topTrailing || htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing) {
109
- const session = (0, import_react_sdk2.getSession)();
71
+ const session = getSession2();
110
72
  if (!session) return;
111
73
  session.getCurrentWindowComponent().setStyle({
112
74
  cornerRadius
@@ -118,7 +80,7 @@ function setCornerRadius(cornerRadius) {
118
80
  }
119
81
  }
120
82
  function setOpacity(opacity) {
121
- const session = (0, import_react_sdk2.getSession)();
83
+ const session = getSession2();
122
84
  if (!session) return;
123
85
  session.getCurrentWindowComponent().setOpacity(opacity);
124
86
  }
@@ -128,7 +90,7 @@ function checkOpacity() {
128
90
  setOpacity(opacity);
129
91
  }
130
92
  async function setHtmlVisible(visible) {
131
- const session = (0, import_react_sdk2.getSession)();
93
+ const session = getSession2();
132
94
  if (!session) return;
133
95
  const wc = session.getCurrentWindowComponent();
134
96
  const ent = await wc.getEntity();
@@ -230,7 +192,7 @@ function hijackGetComputedStyle() {
230
192
  };
231
193
  }
232
194
  function hijackWindowOpen() {
233
- import_react_sdk2.XRApp.getInstance().init();
195
+ XRApp2.getInstance().init();
234
196
  }
235
197
  function spatialPolyfill() {
236
198
  if (!isWebSpatialEnv) {
@@ -245,24 +207,29 @@ function spatialPolyfill() {
245
207
  }
246
208
 
247
209
  // src/jsx/jsx-runtime.ts
248
- var import_jsx_runtime2 = require("react/jsx-runtime");
210
+ import { Fragment } from "react/jsx-runtime";
249
211
 
250
212
  // src/jsx/jsx-shared.ts
251
- var import_jsx_dev_runtime = require("react/jsx-dev-runtime");
252
- var import_jsx_runtime = __toESM(require("react/jsx-runtime"));
253
- var import_react_sdk3 = require("@webspatial/react-sdk");
213
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
214
+ import reactJSXRuntime from "react/jsx-runtime";
215
+ import { withCSSSpatial, withSpatialMonitor } from "@webspatial/react-sdk";
254
216
  var attributeFlag = "enable-xr";
255
217
  var styleFlag = "enableXr";
256
218
  var classFlag = "__enableXr__";
219
+ var xrMonitorFlag = "enable-xr-monitor";
257
220
  function replaceToSpatialPrimitiveType(type, props) {
258
221
  const propsObject = props;
259
222
  if (attributeFlag in propsObject) {
260
223
  delete propsObject[attributeFlag];
261
- return (0, import_react_sdk3.withCSSSpatial)(type);
224
+ return withCSSSpatial(type);
225
+ }
226
+ if (xrMonitorFlag in propsObject) {
227
+ delete propsObject[xrMonitorFlag];
228
+ return withSpatialMonitor(type);
262
229
  }
263
230
  if (propsObject && propsObject.style && styleFlag in propsObject.style) {
264
231
  delete propsObject.style[styleFlag];
265
- return (0, import_react_sdk3.withCSSSpatial)(type);
232
+ return withCSSSpatial(type);
266
233
  }
267
234
  if (propsObject && propsObject.className) {
268
235
  const originalClassNames = propsObject.className.split(" ");
@@ -270,26 +237,25 @@ function replaceToSpatialPrimitiveType(type, props) {
270
237
  if (idx !== -1) {
271
238
  originalClassNames.splice(idx, 1);
272
239
  propsObject.className = originalClassNames.join(" ");
273
- return (0, import_react_sdk3.withCSSSpatial)(type);
240
+ return withCSSSpatial(type);
274
241
  }
275
242
  }
276
243
  return type;
277
244
  }
278
245
  function jsxs(type, props, key) {
279
246
  type = replaceToSpatialPrimitiveType(type, props);
280
- return import_jsx_runtime.default.jsxs(type, props, key);
247
+ return reactJSXRuntime.jsxs(type, props, key);
281
248
  }
282
249
  function jsx(type, props, key) {
283
250
  type = replaceToSpatialPrimitiveType(type, props);
284
- return import_jsx_runtime.default.jsx(type, props, key);
251
+ return reactJSXRuntime.jsx(type, props, key);
285
252
  }
286
253
 
287
254
  // src/jsx/jsx-runtime.ts
288
255
  spatialPolyfill();
289
- // Annotate the CommonJS export names for ESM import in node:
290
- 0 && (module.exports = {
256
+ export {
291
257
  Fragment,
292
258
  jsx,
293
259
  jsxs
294
- });
260
+ };
295
261
  //# sourceMappingURL=jsx-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/jsx/jsx-runtime.ts","../../src/jsx/spatialPolyfill.ts","../../src/jsx/injectSceneHook.ts","../../src/jsx/jsx-shared.ts"],"sourcesContent":["import { spatialPolyfill } from './spatialPolyfill'\n\nspatialPolyfill()\n\nexport { Fragment } from 'react/jsx-runtime'\nexport { jsx, jsxs } from './jsx-shared'\n","import { getSession, parseCornerRadius, XRApp } from '@webspatial/react-sdk'\nimport { injectSceneHook } from './injectSceneHook'\n\nconst isWebSpatialEnv = getSession() !== null\n\nconst SpatialGlobalCustomVars = {\n backgroundMaterial: '--xr-background-material',\n}\n\n// keep track of current html background material\nlet htmlBackgroundMaterial = ''\nfunction setCurrentWindowStyle(backgroundMaterial: string) {\n if (backgroundMaterial !== htmlBackgroundMaterial) {\n const session = getSession()!\n session.getCurrentWindowComponent().setStyle({\n material: { type: backgroundMaterial as any },\n })\n htmlBackgroundMaterial = backgroundMaterial\n }\n}\n\nfunction checkHtmlBackgroundMaterial() {\n const computedStyle = getComputedStyle(document.documentElement)\n\n const backgroundMaterial = computedStyle.getPropertyValue(\n SpatialGlobalCustomVars.backgroundMaterial,\n )\n\n setCurrentWindowStyle(backgroundMaterial || 'none')\n}\n\n// keep track of current corner radius\nlet htmlCornerRadius = {\n topLeading: 0,\n bottomLeading: 0,\n topTrailing: 0,\n bottomTrailing: 0,\n}\nfunction checkCornerRadius() {\n const computedStyle = getComputedStyle(document.documentElement)\n const cornerRadius = parseCornerRadius(computedStyle)\n setCornerRadius(cornerRadius)\n}\n\nfunction setCornerRadius(cornerRadius: any) {\n if (\n htmlCornerRadius.topLeading !== cornerRadius.topLeading ||\n htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading ||\n htmlCornerRadius.topTrailing !== cornerRadius.topTrailing ||\n htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing\n ) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setStyle({\n cornerRadius,\n })\n htmlCornerRadius.topLeading = cornerRadius.topLeading\n htmlCornerRadius.bottomLeading = cornerRadius.bottomLeading\n htmlCornerRadius.topTrailing = cornerRadius.topTrailing\n htmlCornerRadius.bottomTrailing = cornerRadius.bottomTrailing\n }\n}\n\nfunction setOpacity(opacity: number) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setOpacity(opacity)\n}\n\nfunction checkOpacity() {\n const computedStyle = getComputedStyle(document.documentElement)\n const opacity = parseFloat(computedStyle.getPropertyValue('opacity'))\n setOpacity(opacity)\n}\n\nasync function setHtmlVisible(visible: boolean) {\n const session = getSession()!\n if (!session) return\n const wc = session.getCurrentWindowComponent()\n const ent = await wc.getEntity()\n ent?.setVisible(visible)\n}\n\nfunction checkHtmlVisible() {\n const computedStyle = getComputedStyle(document.documentElement)\n const visibility = computedStyle.getPropertyValue('visibility') !== 'hidden'\n const widthGtZero = parseFloat(computedStyle.getPropertyValue('width')) > 0\n setHtmlVisible(visibility && widthGtZero)\n}\n\nfunction hijackDocumentElementStyle() {\n const rawDocumentStyle = document.documentElement.style\n const styleProxy = new Proxy(rawDocumentStyle, {\n set: function (target, key, value) {\n const ret = Reflect.set(target, key, value)\n\n if (key === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n\n if (\n key === 'border-radius' ||\n key === 'borderRadius' ||\n key === 'border-top-left-radius' ||\n key === 'borderTopLeftRadius' ||\n key === 'border-top-right-radius' ||\n key === 'borderTopRightRadius' ||\n key === 'border-bottom-left-radius' ||\n key === 'borderBottomLeftRadius' ||\n key === 'border-bottom-right-radius' ||\n key === 'borderBottomRightRadius'\n ) {\n checkCornerRadius()\n }\n\n if (key === 'opacity') {\n checkOpacity()\n }\n\n if (key === 'visibility' || key === 'display') {\n checkHtmlVisible()\n }\n\n return ret\n },\n get: function (target, prop: string) {\n if (typeof target[prop as keyof CSSStyleDeclaration] === 'function') {\n return function (this: any, ...args: any[]) {\n if (prop === 'setProperty') {\n const [property, value] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n } else if (prop === 'removeProperty') {\n const [property] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle('none')\n }\n }\n return (target[prop as keyof CSSStyleDeclaration] as Function)(\n ...args,\n )\n }\n }\n return Reflect.get(target, prop)\n },\n })\n Object.defineProperty(document.documentElement, 'style', {\n get: function () {\n return styleProxy\n },\n })\n}\n\nfunction monitorExternalStyleChange() {\n const headObserver = new MutationObserver(function (mutationsList) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n let needCheck = false\n mutation.addedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n\n if (node.nodeName === 'STYLE') {\n needCheck = true\n }\n })\n\n mutation.removedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n })\n\n if (needCheck) {\n checkCSSProperties()\n }\n }\n }\n })\n\n headObserver.observe(document.head, { childList: true, subtree: true })\n}\n\nfunction checkCSSProperties() {\n checkHtmlBackgroundMaterial()\n checkCornerRadius()\n checkOpacity()\n checkHtmlVisible()\n window.addEventListener('resize', checkHtmlVisible)\n}\n\nfunction hijackGetComputedStyle() {\n const rawFn = window.getComputedStyle.bind(window)\n window.getComputedStyle = (element, pseudoElt) => {\n if ((element as any).__isSpatialDiv) {\n return (element as any).__getComputedStyle(rawFn, pseudoElt)\n }\n return rawFn(element, pseudoElt)\n }\n}\n\nfunction hijackWindowOpen() {\n XRApp.getInstance().init()\n}\n\nexport function spatialPolyfill() {\n if (!isWebSpatialEnv) {\n return\n }\n\n injectSceneHook()\n hijackWindowOpen()\n checkCSSProperties()\n hijackGetComputedStyle()\n hijackDocumentElementStyle()\n monitorExternalStyleChange()\n}\n","import { defaultSceneConfig, XRApp, getSession } from '@webspatial/react-sdk'\n\nexport async function injectSceneHook() {\n if (!window.opener) return\n if ((window as any)._SceneHookOff) return\n\n await getSession()?.setLoading('show')\n // see this flag, we have done create the root scene\n\n function onContentLoaded(callback: any) {\n if (\n document.readyState === 'interactive' ||\n document.readyState === 'complete'\n ) {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', callback)\n }\n }\n\n onContentLoaded(async () => {\n let cfg = defaultSceneConfig\n if (typeof (window as any).xrCurrentSceneDefaults === 'function') {\n try {\n cfg = await (window as any).xrCurrentSceneDefaults?.()\n } catch (error) {\n console.error(error)\n }\n }\n // fixme: this duration is too short so that hide and show is at racing, so add a little delay to avoid\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(null)\n }, 1000)\n })\n await getSession()?.setLoading('hide')\n await XRApp.getInstance().show(window, cfg)\n })\n}\n","import { jsxDEV as _jsxDEV, JSXSource } from 'react/jsx-dev-runtime'\nimport reactJSXRuntime from 'react/jsx-runtime'\n//@ts-ignore bypass ts check for external\nimport { withCSSSpatial } from '@webspatial/react-sdk'\nconst attributeFlag = 'enable-xr'\nconst styleFlag = 'enableXr'\nconst classFlag = '__enableXr__'\n\nexport function replaceToSpatialPrimitiveType(\n type: React.ElementType,\n props: unknown,\n) {\n const propsObject = props as Record<string, any>\n if (attributeFlag in propsObject) {\n delete propsObject[attributeFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.style && styleFlag in propsObject.style) {\n delete propsObject.style[styleFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.className) {\n const originalClassNames = propsObject.className.split(' ')\n const idx = originalClassNames.indexOf(classFlag)\n if (idx !== -1) {\n originalClassNames.splice(idx, 1)\n propsObject.className = originalClassNames.join(' ')\n return withCSSSpatial(type)\n }\n }\n\n return type\n}\n\nexport function jsxs(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsxs(type, props, key)\n}\n\nexport function jsx(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsx(type, props, key)\n}\n\nexport function jsxDEV(\n type: React.ElementType,\n props: unknown,\n key: React.Key,\n isStatic: boolean,\n source?: JSXSource,\n self?: unknown,\n) {\n type = replaceToSpatialPrimitiveType(type, props)\n return _jsxDEV(type, props, key, isStatic, source, self)\n}\n"],"mappings":"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","names":["import_react_sdk","import_jsx_runtime","import_react_sdk","reactJSXRuntime"]}
1
+ {"version":3,"sources":["../../src/jsx/spatialPolyfill.ts","../../src/jsx/injectSceneHook.ts","../../src/jsx/jsx-runtime.ts","../../src/jsx/jsx-shared.ts"],"sourcesContent":["import { getSession, parseCornerRadius, XRApp } from '@webspatial/react-sdk'\nimport { injectSceneHook } from './injectSceneHook'\n\nconst isWebSpatialEnv = getSession() !== null\n\nconst SpatialGlobalCustomVars = {\n backgroundMaterial: '--xr-background-material',\n}\n\n// keep track of current html background material\nlet htmlBackgroundMaterial = ''\nfunction setCurrentWindowStyle(backgroundMaterial: string) {\n if (backgroundMaterial !== htmlBackgroundMaterial) {\n const session = getSession()!\n session.getCurrentWindowComponent().setStyle({\n material: { type: backgroundMaterial as any },\n })\n htmlBackgroundMaterial = backgroundMaterial\n }\n}\n\nfunction checkHtmlBackgroundMaterial() {\n const computedStyle = getComputedStyle(document.documentElement)\n\n const backgroundMaterial = computedStyle.getPropertyValue(\n SpatialGlobalCustomVars.backgroundMaterial,\n )\n\n setCurrentWindowStyle(backgroundMaterial || 'none')\n}\n\n// keep track of current corner radius\nlet htmlCornerRadius = {\n topLeading: 0,\n bottomLeading: 0,\n topTrailing: 0,\n bottomTrailing: 0,\n}\nfunction checkCornerRadius() {\n const computedStyle = getComputedStyle(document.documentElement)\n const cornerRadius = parseCornerRadius(computedStyle)\n setCornerRadius(cornerRadius)\n}\n\nfunction setCornerRadius(cornerRadius: any) {\n if (\n htmlCornerRadius.topLeading !== cornerRadius.topLeading ||\n htmlCornerRadius.bottomLeading !== cornerRadius.bottomLeading ||\n htmlCornerRadius.topTrailing !== cornerRadius.topTrailing ||\n htmlCornerRadius.bottomTrailing !== cornerRadius.bottomTrailing\n ) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setStyle({\n cornerRadius,\n })\n htmlCornerRadius.topLeading = cornerRadius.topLeading\n htmlCornerRadius.bottomLeading = cornerRadius.bottomLeading\n htmlCornerRadius.topTrailing = cornerRadius.topTrailing\n htmlCornerRadius.bottomTrailing = cornerRadius.bottomTrailing\n }\n}\n\nfunction setOpacity(opacity: number) {\n const session = getSession()!\n if (!session) return\n session.getCurrentWindowComponent().setOpacity(opacity)\n}\n\nfunction checkOpacity() {\n const computedStyle = getComputedStyle(document.documentElement)\n const opacity = parseFloat(computedStyle.getPropertyValue('opacity'))\n setOpacity(opacity)\n}\n\nasync function setHtmlVisible(visible: boolean) {\n const session = getSession()!\n if (!session) return\n const wc = session.getCurrentWindowComponent()\n const ent = await wc.getEntity()\n ent?.setVisible(visible)\n}\n\nfunction checkHtmlVisible() {\n const computedStyle = getComputedStyle(document.documentElement)\n const visibility = computedStyle.getPropertyValue('visibility') !== 'hidden'\n const widthGtZero = parseFloat(computedStyle.getPropertyValue('width')) > 0\n setHtmlVisible(visibility && widthGtZero)\n}\n\nfunction hijackDocumentElementStyle() {\n const rawDocumentStyle = document.documentElement.style\n const styleProxy = new Proxy(rawDocumentStyle, {\n set: function (target, key, value) {\n const ret = Reflect.set(target, key, value)\n\n if (key === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n\n if (\n key === 'border-radius' ||\n key === 'borderRadius' ||\n key === 'border-top-left-radius' ||\n key === 'borderTopLeftRadius' ||\n key === 'border-top-right-radius' ||\n key === 'borderTopRightRadius' ||\n key === 'border-bottom-left-radius' ||\n key === 'borderBottomLeftRadius' ||\n key === 'border-bottom-right-radius' ||\n key === 'borderBottomRightRadius'\n ) {\n checkCornerRadius()\n }\n\n if (key === 'opacity') {\n checkOpacity()\n }\n\n if (key === 'visibility' || key === 'display') {\n checkHtmlVisible()\n }\n\n return ret\n },\n get: function (target, prop: string) {\n if (typeof target[prop as keyof CSSStyleDeclaration] === 'function') {\n return function (this: any, ...args: any[]) {\n if (prop === 'setProperty') {\n const [property, value] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle(value)\n }\n } else if (prop === 'removeProperty') {\n const [property] = args\n if (property === SpatialGlobalCustomVars.backgroundMaterial) {\n setCurrentWindowStyle('none')\n }\n }\n return (target[prop as keyof CSSStyleDeclaration] as Function)(\n ...args,\n )\n }\n }\n return Reflect.get(target, prop)\n },\n })\n Object.defineProperty(document.documentElement, 'style', {\n get: function () {\n return styleProxy\n },\n })\n}\n\nfunction monitorExternalStyleChange() {\n const headObserver = new MutationObserver(function (mutationsList) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n let needCheck = false\n mutation.addedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n\n if (node.nodeName === 'STYLE') {\n needCheck = true\n }\n })\n\n mutation.removedNodes.forEach(node => {\n if (\n node.nodeName === 'LINK' &&\n (node as HTMLLinkElement).rel === 'stylesheet'\n ) {\n needCheck = true\n }\n })\n\n if (needCheck) {\n checkCSSProperties()\n }\n }\n }\n })\n\n headObserver.observe(document.head, { childList: true, subtree: true })\n}\n\nfunction checkCSSProperties() {\n checkHtmlBackgroundMaterial()\n checkCornerRadius()\n checkOpacity()\n checkHtmlVisible()\n window.addEventListener('resize', checkHtmlVisible)\n}\n\nfunction hijackGetComputedStyle() {\n const rawFn = window.getComputedStyle.bind(window)\n window.getComputedStyle = (element, pseudoElt) => {\n if ((element as any).__isSpatialDiv) {\n return (element as any).__getComputedStyle(rawFn, pseudoElt)\n }\n return rawFn(element, pseudoElt)\n }\n}\n\nfunction hijackWindowOpen() {\n XRApp.getInstance().init()\n}\n\nexport function spatialPolyfill() {\n if (!isWebSpatialEnv) {\n return\n }\n\n injectSceneHook()\n hijackWindowOpen()\n checkCSSProperties()\n hijackGetComputedStyle()\n hijackDocumentElementStyle()\n monitorExternalStyleChange()\n}\n","import { defaultSceneConfig, XRApp, getSession } from '@webspatial/react-sdk'\n\nexport async function injectSceneHook() {\n if (!window.opener) return\n if ((window as any)._SceneHookOff) return\n\n await getSession()?.setLoading('show')\n // see this flag, we have done create the root scene\n\n function onContentLoaded(callback: any) {\n if (\n document.readyState === 'interactive' ||\n document.readyState === 'complete'\n ) {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', callback)\n }\n }\n\n onContentLoaded(async () => {\n let cfg = defaultSceneConfig\n if (typeof (window as any).xrCurrentSceneDefaults === 'function') {\n try {\n cfg = await (window as any).xrCurrentSceneDefaults?.()\n } catch (error) {\n console.error(error)\n }\n }\n // fixme: this duration is too short so that hide and show is at racing, so add a little delay to avoid\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(null)\n }, 1000)\n })\n await getSession()?.setLoading('hide')\n await XRApp.getInstance().show(window, cfg)\n })\n}\n","import { spatialPolyfill } from './spatialPolyfill'\n\nspatialPolyfill()\n\nexport { Fragment } from 'react/jsx-runtime'\nexport { jsx, jsxs } from './jsx-shared'\n","import { jsxDEV as _jsxDEV, JSXSource } from 'react/jsx-dev-runtime'\nimport reactJSXRuntime from 'react/jsx-runtime'\n//@ts-ignore bypass ts check for external\nimport { withCSSSpatial, withSpatialMonitor } from '@webspatial/react-sdk'\nconst attributeFlag = 'enable-xr'\nconst styleFlag = 'enableXr'\nconst classFlag = '__enableXr__'\nconst xrMonitorFlag = 'enable-xr-monitor'\n\nexport function replaceToSpatialPrimitiveType(\n type: React.ElementType,\n props: unknown,\n) {\n const propsObject = props as Record<string, any>\n if (attributeFlag in propsObject) {\n delete propsObject[attributeFlag]\n return withCSSSpatial(type)\n }\n\n if (xrMonitorFlag in propsObject) {\n delete propsObject[xrMonitorFlag]\n return withSpatialMonitor(type)\n }\n\n if (propsObject && propsObject.style && styleFlag in propsObject.style) {\n delete propsObject.style[styleFlag]\n return withCSSSpatial(type)\n }\n\n if (propsObject && propsObject.className) {\n const originalClassNames = propsObject.className.split(' ')\n const idx = originalClassNames.indexOf(classFlag)\n if (idx !== -1) {\n originalClassNames.splice(idx, 1)\n propsObject.className = originalClassNames.join(' ')\n return withCSSSpatial(type)\n }\n }\n\n return type\n}\n\nexport function jsxs(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsxs(type, props, key)\n}\n\nexport function jsx(type: React.ElementType, props: unknown, key?: React.Key) {\n type = replaceToSpatialPrimitiveType(type, props)\n return reactJSXRuntime.jsx(type, props, key)\n}\n\nexport function jsxDEV(\n type: React.ElementType,\n props: unknown,\n key: React.Key,\n isStatic: boolean,\n source?: JSXSource,\n self?: unknown,\n) {\n type = replaceToSpatialPrimitiveType(type, props)\n return _jsxDEV(type, props, key, isStatic, source, self)\n}\n"],"mappings":"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","names":["getSession","XRApp","getSession","XRApp"]}
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { ReactNode, CSSProperties, ElementType, ForwardedRef } from 'react';
3
3
  import { BackgroundMaterialType, CornerRadius, SpatialEntity, Vec3, SpatialSession } from '@webspatial/core-sdk';
4
- import * as react_jsx_runtime from 'react/jsx-runtime';
5
4
  import { ModelViewerElement } from '@google/model-viewer';
6
5
  import { WindowContainerOptions } from '@webspatial/core-sdk/';
7
6
 
@@ -47,11 +46,12 @@ declare function withSpatial(Component: React__default.ElementType): any;
47
46
  declare const SpatialPrimitive: Record<string, typeof SpatialReactComponent>;
48
47
  declare const SpatialDiv: React__default.ForwardRefExoticComponent<SpatialReactComponentProps & React__default.RefAttributes<HTMLDivElement>>;
49
48
 
50
- /**
51
- * Component that add MutationObserver to monitor all dom changes including its children.
52
- * If any dom changes, it will notify all SpatialDiv to render again for the purpose of sync standInstance layout to portalInstance.
53
- */
54
- declare function SpatialMonitor(props: any): react_jsx_runtime.JSX.Element;
49
+ declare function withSpatialMonitor(El: React__default.ElementType): any;
50
+
51
+ type SpatialMonitorProps = {
52
+ El?: ElementType;
53
+ };
54
+ declare const SpatialMonitor: React.ForwardRefExoticComponent<SpatialMonitorProps & React.RefAttributes<HTMLElement>>;
55
55
 
56
56
  /**
57
57
  * External-developers can call this function to sync the standardInstance layout to PortalInstance.
@@ -161,4 +161,4 @@ declare class XRApp {
161
161
  }
162
162
  declare function initScene(name: string, callback: (pre: WindowContainerOptions) => WindowContainerOptions): void;
163
163
 
164
- export { CSSSpatialDiv, CSSSpatialPrimitive, Model, type ModelProps, SpatialDiv, type SpatialReactComponentProps as SpatialDivProps, type SpatialReactComponentRef as SpatialDivRef, SpatialMonitor, SpatialPrimitive, type SpatialReactComponentProps, type SpatialReactComponentRef, SpatialView, type SpatialViewRef, XRApp, defaultSceneConfig, enableDebugTool, getSession, initScene, notifyUpdateStandInstanceLayout, parseCornerRadius, withCSSSpatial, withSpatial };
164
+ export { CSSSpatialDiv, CSSSpatialPrimitive, Model, type ModelProps, SpatialDiv, type SpatialReactComponentProps as SpatialDivProps, type SpatialReactComponentRef as SpatialDivRef, SpatialMonitor, SpatialPrimitive, type SpatialReactComponentProps, type SpatialReactComponentRef, SpatialView, type SpatialViewRef, XRApp, defaultSceneConfig, enableDebugTool, getSession, initScene, notifyUpdateStandInstanceLayout, parseCornerRadius, withCSSSpatial, withSpatial, withSpatialMonitor };