@realitycollective/iwsdk-uiextensions 0.1.0-preview.0 → 0.1.0-preview.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.

Potentially problematic release.


This version of @realitycollective/iwsdk-uiextensions might be problematic. Click here for more details.

package/CHANGELOG.md CHANGED
@@ -13,5 +13,17 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
13
13
  - `@realitycollective/xrblocks-uiextensions` - EXPERIMENTAL Google XR Blocks / plain three.js adapter: panel document, window host, follow and scale maths, desktop controls and locomotion, pointer forwarding.
14
14
  - `@realitycollective/uix-devtools` - dev-only tooling: edit-session launch gate, runtime UIKitML compilation, and the `uix-dev` CLI (Cloudflare quick tunnel, QR onboarding, environment doctor).
15
15
  - Demo clients: the IWSDK showcase, the devtools playground, and the multiplatform lab that picks its pipeline from the hardware.
16
+ - `uixComponentSet`, exported from `@realitycollective/iwsdk-uiextensions`. Pass it to `spatialUI.componentSets` so the IWSDK 0.5 parser accepts the `<uix-*>` control elements. Without it a panel using any control fails to parse and never attaches. No equivalent is needed on the three.js or XR Blocks adapters.
17
+
18
+ ### Changed
19
+
20
+ - **Controls are declared as custom elements rather than attributes.** `<uix-stepper>` replaces `<div data-uix="stepper">`, and each part is its own element: `<uix-value>`, `<uix-line>`, `<uix-label>` and so on, replacing `data-uix-role`. Parameters are unchanged and stay `data-uix-*`. This is what makes one markup file portable: IWSDK 0.5 parses with `@drawcall/uikitml`, which rejects every `data-*` attribute on a built-in tag but accepts custom tags declared in a component set, while the three.js and XR Blocks parser accepts custom tags with no registration at all. Both expose the declared tag on `userData.customElement.componentName`, so the engine-free upgraders read one contract on every adapter.
21
+ - The expandable label's `toggle` part is now `<uix-more>`. As an element the old name would have collided with the `<uix-toggle>` control.
22
+ - `@realitycollective/iwsdk-uiextensions` targets **IWSDK 0.5.x**: peer range `>=0.5.0 <0.6.0`, developed against `@iwsdk/core` 0.5.3. `PanelUI` in 0.5 declares a single field, `config`, holding the URL of the UIKitML **source**; the compiled JSON it took on 0.4.x, and the `@iwsdk/vite-plugin-uikitml` step that produced it, are both gone. `maxWidth` and `maxHeight` were removed from the component schema, and ECS ignores unknown fields silently, so a panel that still writes them is mis-sized with no error. Size through `createUIWindow`, which routes to `UIWindow.targetWidth/Height`.
23
+ - `UixWindowHost` resolves a window's `config` by fetching the `.uikitml` source and parsing it, where it previously fetched compiled JSON. Supplying `loadConfig` is no longer necessary for an ordinary panel; override it only for an unusual transport.
24
+ - `compilePanelSource` in `@realitycollective/uix-devtools` serves the **source** on its `blob:` URL rather than compiled JSON, matching what 0.5 fetches. `CompiledPanel.json` is now `CompiledPanel.source`, and the `resolveFile` option is gone because the 0.5 parser has no `<link ref>` stylesheet resolution; put shared rules in a `<style>` block, of which several are allowed and merge. Validation now runs on `@drawcall/uikitml`, pinned to the version `@iwsdk/core` depends on, so a source that passes here is one `PanelUISystem` will accept and no second parser enters the tree.
25
+ - Example and demo markup uses `rgba()` or eight-digit hex rather than `background-opacity`, which the 0.5 parser removed. Both parsers accept the replacement, so one stylesheet serves every adapter.
26
+ - The IWSDK component kit is selected by name, `spatialUI: { kit: 'horizon' }`, rather than by passing an imported kit module. The kits now live inside the parser.
27
+ - `@types/three` is pinned to `0.184.0` across the workspace. IWSDK 0.5.3 and xrblocks resolved different copies, and two copies of the three typings make structurally identical `Object3D` types mutually unassignable, which surfaces as spurious errors far from their cause.
16
28
 
17
29
  [0.1.0]: https://github.com/realitycollective/WebXR-UIExtensions/commits/main
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Basic window - chrome, focus, docking and drag with one call.
3
- * Put window.uikitml in your app's ui/ folder (compiles to /ui/window.json).
3
+ * Put window.uikitml in your app's public/ui/ folder - IWSDK 0.5 fetches and
4
+ * parses the source at runtime, so there is no compile step.
4
5
  */
5
6
  import { World } from '@iwsdk/core';
6
7
  import {
@@ -19,7 +20,7 @@ export async function start(container: HTMLDivElement) {
19
20
  createUIWindow(world, {
20
21
  id: 'hello',
21
22
  title: 'Hello Window',
22
- config: './ui/window.json',
23
+ config: './ui/window.uikitml',
23
24
  dockMode: DockMode.BodyFollow, // follows until pinned or dragged
24
25
  followOffset: [0, -0.15, -1.2],
25
26
  });
@@ -3,8 +3,7 @@
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  width: 300;
6
- background-color: #101a26;
7
- background-opacity: 0.92;
6
+ background-color: rgba(16, 26, 38, 0.92);
8
7
  border-radius: 12.5;
9
8
  border-color: #2e4a66;
10
9
  border-width: 0.75;
@@ -4,8 +4,7 @@
4
4
  flex-direction: column;
5
5
  width: 300;
6
6
  padding: 10;
7
- background-color: #101a26;
8
- background-opacity: 0.92;
7
+ background-color: rgba(16, 26, 38, 0.92);
9
8
  border-radius: 12.5;
10
9
  }
11
10
  .row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; width: 100%; margin-top: 7; }
@@ -17,16 +17,20 @@ export async function start(container: HTMLDivElement) {
17
17
  });
18
18
  registerUIExtensions(world);
19
19
 
20
+ // `config` is the only field PanelUI carries in IWSDK 0.5. maxWidth/maxHeight
21
+ // were removed from the schema; ECS ignores unknown fields silently, so
22
+ // writing them here would mis-size the panel with no error. Size a panel
23
+ // through createUIWindow instead, which routes to UIWindow.targetWidth/Height.
20
24
  const panel = world
21
25
  .createTransformEntity()
22
- .addComponent(PanelUI, { config: './ui/controls.json', maxWidth: 0.8, maxHeight: 1 });
26
+ .addComponent(PanelUI, { config: './ui/controls.uikitml' });
23
27
  panel.object3D!.position.set(0, 1.5, -1.2);
24
28
 
25
29
  // Wire the handles once the panel loads.
26
30
  class WireSystem extends createSystem({
27
31
  panel: {
28
32
  required: [PanelUI, PanelDocument],
29
- where: [eq(PanelUI, 'config', './ui/controls.json')],
33
+ where: [eq(PanelUI, 'config', './ui/controls.uikitml')],
30
34
  },
31
35
  }) {
32
36
  override init(): void {
@@ -41,7 +41,7 @@ export async function start(container: HTMLDivElement) {
41
41
  createUIWindow(world, {
42
42
  id: 'docked',
43
43
  title: 'Docked Window',
44
- config: './ui/window.json',
44
+ config: './ui/window.uikitml',
45
45
  region: 'wall',
46
46
  });
47
47
 
@@ -49,7 +49,7 @@ export async function start(container: HTMLDivElement) {
49
49
  createUIWindow(world, {
50
50
  id: 'floating',
51
51
  title: 'Drag Me Into A Region',
52
- config: './ui/window.json',
52
+ config: './ui/window.uikitml',
53
53
  position: [0, 1.5, -1.4],
54
54
  });
55
55
  }
package/README.md CHANGED
@@ -20,7 +20,7 @@ Everything is authored in plain UIKitML (HTML/CSS-like) - no new markup language
20
20
 
21
21
  ```bash
22
22
  npm install @realitycollective/iwsdk-uiextensions
23
- # peer: @iwsdk/core >= 0.4
23
+ # peer: @iwsdk/core >=0.5.0 <0.6.0
24
24
  ```
25
25
 
26
26
  ## Quick start
@@ -45,7 +45,7 @@ createDockRegion(world, { id: 'wall', flow: 'column', position: [1.5, 1.8, -1.5]
45
45
  createUIWindow(world, {
46
46
  id: 'status',
47
47
  title: 'Player Status',
48
- config: './ui/status.json', // compiled UIKitML
48
+ config: './ui/status.uikitml', // UIKitML source; IWSDK 0.5 parses it at runtime
49
49
  dockMode: DockMode.BodyFollow, // follows until the user pins it
50
50
  });
51
51
 
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The UIKitML component set for `<uix-*>` control elements.
3
+ *
4
+ * IWSDK 0.5 parses panels with `@drawcall/uikitml`, which validates every tag
5
+ * against a component schema and rejects anything it does not know - including
6
+ * every `data-*` attribute on a built-in tag. Declaring the control elements
7
+ * here is the supported way to extend that vocabulary.
8
+ *
9
+ * The three.js and XR Blocks adapters need no equivalent: their parser accepts
10
+ * custom tags unregistered, exposing the tag on
11
+ * `userData.customElement.componentName`. This set reproduces that convention
12
+ * on the IWSDK side - the constructor below stamps the same key and lifts
13
+ * `data-uix-*` attributes into `userData` - so ONE markup file drives every
14
+ * adapter and the engine-free upgraders read it identically everywhere.
15
+ *
16
+ * Register it when creating the world:
17
+ * ```ts
18
+ * const world = await World.create(container, {
19
+ * features: { spatialUI: { kit: 'horizon', componentSets: [uixComponentSet] } },
20
+ * });
21
+ * ```
22
+ */
23
+ import { type ComponentSet } from '@drawcall/uikitml';
24
+ /**
25
+ * Pass to `spatialUI.componentSets` so `<uix-*>` elements parse on IWSDK 0.5.
26
+ * Without it, a panel using any control fails to parse and never attaches.
27
+ */
28
+ export declare const uixComponentSet: ComponentSet;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * The UIKitML component set for `<uix-*>` control elements.
3
+ *
4
+ * IWSDK 0.5 parses panels with `@drawcall/uikitml`, which validates every tag
5
+ * against a component schema and rejects anything it does not know - including
6
+ * every `data-*` attribute on a built-in tag. Declaring the control elements
7
+ * here is the supported way to extend that vocabulary.
8
+ *
9
+ * The three.js and XR Blocks adapters need no equivalent: their parser accepts
10
+ * custom tags unregistered, exposing the tag on
11
+ * `userData.customElement.componentName`. This set reproduces that convention
12
+ * on the IWSDK side - the constructor below stamps the same key and lifts
13
+ * `data-uix-*` attributes into `userData` - so ONE markup file drives every
14
+ * adapter and the engine-free upgraders read it identically everywhere.
15
+ *
16
+ * Register it when creating the world:
17
+ * ```ts
18
+ * const world = await World.create(container, {
19
+ * features: { spatialUI: { kit: 'horizon', componentSets: [uixComponentSet] } },
20
+ * });
21
+ * ```
22
+ */
23
+ import { htmlComponentSet } from '@drawcall/uikitml';
24
+ import { z } from 'zod';
25
+ /**
26
+ * Base container, taken from the parser's own `<div>` definition rather than
27
+ * imported from `@pmndrs/uikit` directly - that keeps a single copy of uikit
28
+ * in the tree, whichever version `@iwsdk/core` resolves.
29
+ */
30
+ const BaseContainer = htmlComponentSet['div']
31
+ ?.component;
32
+ /** Control elements an author writes, and the parts that live inside them. */
33
+ const CONTROL_TAGS = [
34
+ 'uix-stepper',
35
+ 'uix-toggle',
36
+ 'uix-expandable-label',
37
+ 'uix-log-view',
38
+ ];
39
+ const ROLE_TAGS = [
40
+ 'uix-decrement',
41
+ 'uix-value',
42
+ 'uix-increment',
43
+ 'uix-label',
44
+ 'uix-line',
45
+ 'uix-up',
46
+ 'uix-down',
47
+ 'uix-clear',
48
+ 'uix-status',
49
+ 'uix-text',
50
+ 'uix-more',
51
+ ];
52
+ /**
53
+ * `data-uix-min` → `uixMin`, matching how the other parser fills userData.
54
+ *
55
+ * The parser hands properties over already camelCased, so `data-uix-min`
56
+ * arrives as `dataUixMin`; both spellings are normalised here.
57
+ */
58
+ function toUserDataKey(attribute) {
59
+ if (/^data[A-Z]/.test(attribute)) {
60
+ const rest = attribute.slice(4);
61
+ return rest.charAt(0).toLowerCase() + rest.slice(1);
62
+ }
63
+ return attribute
64
+ .replace(/^data-/, '')
65
+ .replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
66
+ }
67
+ /**
68
+ * A plain uikit Container that records what it was declared as.
69
+ *
70
+ * Anything the schema let through that is not a uikit property - the
71
+ * `data-uix-*` parameters - is moved into `userData` rather than handed to
72
+ * uikit, which would warn about properties it does not recognise.
73
+ */
74
+ function controlComponent(tag) {
75
+ return class UixControlContainer extends BaseContainer {
76
+ constructor(properties = {}) {
77
+ const uikitProps = {};
78
+ const userData = {};
79
+ for (const [key, value] of Object.entries(properties)) {
80
+ if (key.startsWith('data-') || /^data[A-Z]/.test(key)) {
81
+ userData[toUserDataKey(key)] = value;
82
+ }
83
+ else {
84
+ uikitProps[key] = value;
85
+ }
86
+ }
87
+ super(uikitProps);
88
+ Object.assign(this.userData, userData, {
89
+ customElement: { componentName: tag, sourceTag: tag },
90
+ });
91
+ }
92
+ };
93
+ }
94
+ /** Permissive: the parameters are ours, and the upgraders validate them. */
95
+ const schema = z.object({}).passthrough();
96
+ function define(tag) {
97
+ return {
98
+ component: controlComponent(tag),
99
+ schema,
100
+ canHaveChildren: true,
101
+ };
102
+ }
103
+ /**
104
+ * Pass to `spatialUI.componentSets` so `<uix-*>` elements parse on IWSDK 0.5.
105
+ * Without it, a panel using any control fails to parse and never attaches.
106
+ */
107
+ export const uixComponentSet = Object.fromEntries([...CONTROL_TAGS, ...ROLE_TAGS].map((tag) => [tag, define(tag)]));
108
+ //# sourceMappingURL=component-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-set.js","sourceRoot":"","sources":["../src/component-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,gBAAgB,EAA+C,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAC3C,EAAE,SAEH,CAAC;AAEF,8EAA8E;AAC9E,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,YAAY;IACZ,sBAAsB;IACtB,cAAc;CACN,CAAC;AAEX,MAAM,SAAS,GAAG;IAChB,eAAe;IACf,WAAW;IACX,eAAe;IACf,WAAW;IACX,UAAU;IACV,QAAQ;IACR,UAAU;IACV,WAAW;IACX,YAAY;IACZ,UAAU;IACV,UAAU;CACF,CAAC;AAEX;;;;;GAKG;AACH,SAAS,aAAa,CAAC,SAAiB;IACtC,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,SAAS;SACb,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,MAAM,mBAAoB,SAAQ,aAAa;QACpD,YAAY,aAAsC,EAAE;YAClD,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBACrC,aAAa,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;aACtD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1C,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO;QACL,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAgD;QAC/E,MAAM;QACN,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiB,MAAM,CAAC,WAAW,CAC7D,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CACjE,CAAC","sourcesContent":["/**\n * The UIKitML component set for `<uix-*>` control elements.\n *\n * IWSDK 0.5 parses panels with `@drawcall/uikitml`, which validates every tag\n * against a component schema and rejects anything it does not know - including\n * every `data-*` attribute on a built-in tag. Declaring the control elements\n * here is the supported way to extend that vocabulary.\n *\n * The three.js and XR Blocks adapters need no equivalent: their parser accepts\n * custom tags unregistered, exposing the tag on\n * `userData.customElement.componentName`. This set reproduces that convention\n * on the IWSDK side - the constructor below stamps the same key and lifts\n * `data-uix-*` attributes into `userData` - so ONE markup file drives every\n * adapter and the engine-free upgraders read it identically everywhere.\n *\n * Register it when creating the world:\n * ```ts\n * const world = await World.create(container, {\n * features: { spatialUI: { kit: 'horizon', componentSets: [uixComponentSet] } },\n * });\n * ```\n */\nimport { htmlComponentSet, type ComponentSet, type ComponentDefinition } from '@drawcall/uikitml';\nimport { z } from 'zod';\n\n/**\n * Base container, taken from the parser's own `<div>` definition rather than\n * imported from `@pmndrs/uikit` directly - that keeps a single copy of uikit\n * in the tree, whichever version `@iwsdk/core` resolves.\n */\nconst BaseContainer = htmlComponentSet['div']\n ?.component as unknown as new (properties?: Record<string, unknown>) => {\n userData: Record<string, unknown>;\n};\n\n/** Control elements an author writes, and the parts that live inside them. */\nconst CONTROL_TAGS = [\n 'uix-stepper',\n 'uix-toggle',\n 'uix-expandable-label',\n 'uix-log-view',\n] as const;\n\nconst ROLE_TAGS = [\n 'uix-decrement',\n 'uix-value',\n 'uix-increment',\n 'uix-label',\n 'uix-line',\n 'uix-up',\n 'uix-down',\n 'uix-clear',\n 'uix-status',\n 'uix-text',\n 'uix-more',\n] as const;\n\n/**\n * `data-uix-min` → `uixMin`, matching how the other parser fills userData.\n *\n * The parser hands properties over already camelCased, so `data-uix-min`\n * arrives as `dataUixMin`; both spellings are normalised here.\n */\nfunction toUserDataKey(attribute: string): string {\n if (/^data[A-Z]/.test(attribute)) {\n const rest = attribute.slice(4);\n return rest.charAt(0).toLowerCase() + rest.slice(1);\n }\n return attribute\n .replace(/^data-/, '')\n .replace(/-([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * A plain uikit Container that records what it was declared as.\n *\n * Anything the schema let through that is not a uikit property - the\n * `data-uix-*` parameters - is moved into `userData` rather than handed to\n * uikit, which would warn about properties it does not recognise.\n */\nfunction controlComponent(tag: string): typeof BaseContainer {\n return class UixControlContainer extends BaseContainer {\n constructor(properties: Record<string, unknown> = {}) {\n const uikitProps: Record<string, unknown> = {};\n const userData: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(properties)) {\n if (key.startsWith('data-') || /^data[A-Z]/.test(key)) {\n userData[toUserDataKey(key)] = value;\n } else {\n uikitProps[key] = value;\n }\n }\n super(uikitProps);\n Object.assign(this.userData, userData, {\n customElement: { componentName: tag, sourceTag: tag },\n });\n }\n };\n}\n\n/** Permissive: the parameters are ours, and the upgraders validate them. */\nconst schema = z.object({}).passthrough();\n\nfunction define(tag: string): ComponentDefinition {\n return {\n component: controlComponent(tag) as unknown as ComponentDefinition['component'],\n schema,\n canHaveChildren: true,\n };\n}\n\n/**\n * Pass to `spatialUI.componentSets` so `<uix-*>` elements parse on IWSDK 0.5.\n * Without it, a panel using any control fails to parse and never attaches.\n */\nexport const uixComponentSet: ComponentSet = Object.fromEntries(\n [...CONTROL_TAGS, ...ROLE_TAGS].map((tag) => [tag, define(tag)]),\n);\n"]}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from '@realitycollective/webxr-uiextensions';
14
14
  export * from './components.js';
15
15
  export * from './manager-registry.js';
16
16
  export * from './region-registry-store.js';
17
+ export * from './component-set.js';
17
18
  export * from './factory.js';
18
19
  export * from './scene-host.js';
19
20
  export * from './register.js';
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ export * from '@realitycollective/webxr-uiextensions';
16
16
  export * from './components.js';
17
17
  export * from './manager-registry.js';
18
18
  export * from './region-registry-store.js';
19
+ export * from './component-set.js';
19
20
  export * from './factory.js';
20
21
  export * from './scene-host.js';
21
22
  export * from './register.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,sEAAsE;AACtE,cAAc,uCAAuC,CAAC;AAEtD,oBAAoB;AACpB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC","sourcesContent":["/**\n * @realitycollective/iwsdk-uiextensions - the Meta IWSDK adapter.\n *\n * The engine-free UX core (window manager, dock state, region math, drag\n * math, control models, markup upgraders, adapter interfaces) lives in\n * `@realitycollective/webxr-uiextensions` and is re-exported here in full,\n * so this package remains a drop-in single dependency for IWSDK apps.\n *\n * What this package adds is the IWSDK binding: ECS components + systems\n * that apply the core onto `@iwsdk/core` entities, plus the one-call\n * factories and `registerUIExtensions`.\n */\n// The portable core - re-exported for a single-dependency experience.\nexport * from '@realitycollective/webxr-uiextensions';\n\n// IWSDK ECS binding\nexport * from './components.js';\nexport * from './manager-registry.js';\nexport * from './region-registry-store.js';\nexport * from './factory.js';\nexport * from './scene-host.js';\nexport * from './register.js';\nexport * from './systems/window-system.js';\nexport * from './systems/dock-system.js';\nexport * from './systems/drag-system.js';\nexport * from './systems/dock-region-system.js';\nexport * from './systems/controls-system.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,sEAAsE;AACtE,cAAc,uCAAuC,CAAC;AAEtD,oBAAoB;AACpB,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC","sourcesContent":["/**\n * @realitycollective/iwsdk-uiextensions - the Meta IWSDK adapter.\n *\n * The engine-free UX core (window manager, dock state, region math, drag\n * math, control models, markup upgraders, adapter interfaces) lives in\n * `@realitycollective/webxr-uiextensions` and is re-exported here in full,\n * so this package remains a drop-in single dependency for IWSDK apps.\n *\n * What this package adds is the IWSDK binding: ECS components + systems\n * that apply the core onto `@iwsdk/core` entities, plus the one-call\n * factories and `registerUIExtensions`.\n */\n// The portable core - re-exported for a single-dependency experience.\nexport * from '@realitycollective/webxr-uiextensions';\n\n// IWSDK ECS binding\nexport * from './components.js';\nexport * from './manager-registry.js';\nexport * from './region-registry-store.js';\nexport * from './component-set.js';\nexport * from './factory.js';\nexport * from './scene-host.js';\nexport * from './register.js';\nexport * from './systems/window-system.js';\nexport * from './systems/dock-system.js';\nexport * from './systems/drag-system.js';\nexport * from './systems/dock-region-system.js';\nexport * from './systems/controls-system.js';\n"]}
@@ -80,14 +80,6 @@ declare const UIWindowSystem_base: import("elics").SystemConstructor<import("eli
80
80
  type: import("@iwsdk/core").Types.String;
81
81
  default: string;
82
82
  };
83
- maxWidth: {
84
- type: import("@iwsdk/core").Types.Float32;
85
- default: number;
86
- };
87
- maxHeight: {
88
- type: import("@iwsdk/core").Types.Float32;
89
- default: number;
90
- };
91
83
  }> | import("elics").Component<{
92
84
  document: {
93
85
  type: import("@iwsdk/core").Types.Object;
@@ -293,14 +285,6 @@ declare const UIWindowSystem_base: import("elics").SystemConstructor<import("eli
293
285
  type: import("@iwsdk/core").Types.String;
294
286
  default: string;
295
287
  };
296
- maxWidth: {
297
- type: import("@iwsdk/core").Types.Float32;
298
- default: number;
299
- };
300
- maxHeight: {
301
- type: import("@iwsdk/core").Types.Float32;
302
- default: number;
303
- };
304
288
  }> | import("elics").Component<{
305
289
  document: {
306
290
  type: import("@iwsdk/core").Types.Object;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realitycollective/iwsdk-uiextensions",
3
- "version": "0.1.0-preview.0",
3
+ "version": "0.1.0-preview.1",
4
4
  "description": "Meta IWSDK adapter for the Reality Collective UI Extensions - windowing, docking, layout regions and extra controls, binding the engine-free @realitycollective/webxr-uiextensions core onto IWSDK's ECS, UIKitML and interaction systems.",
5
5
  "keywords": [
6
6
  "realitycollective",
@@ -36,16 +36,18 @@
36
36
  "typecheck": "tsc -p tsconfig.json --noEmit"
37
37
  },
38
38
  "dependencies": {
39
+ "@drawcall/uikitml": "0.1.8",
40
+ "zod": "^4.4.3",
39
41
  "@pmndrs/handle": "^6.6.16",
40
- "@realitycollective/webxr-uiextensions": "^0.1.0-preview.0"
42
+ "@realitycollective/webxr-uiextensions": "^0.1.0-preview.1"
41
43
  },
42
44
  "peerDependencies": {
43
- "@iwsdk/core": ">=0.4.0 <0.6.0"
45
+ "@iwsdk/core": ">=0.5.0 <0.6.0"
44
46
  },
45
47
  "devDependencies": {
46
- "@iwsdk/core": "0.4.2",
48
+ "@iwsdk/core": "0.5.3",
47
49
  "three": "npm:super-three@0.181.0",
48
- "@types/three": "*"
50
+ "@types/three": "0.184.0"
49
51
  },
50
52
  "repository": {
51
53
  "type": "git",