@flighthq/render 0.3.0-next.906.07cea63 → 0.3.1-next.1041.35b950c

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 (82) hide show
  1. package/dist/contract.d.ts +6 -1
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +6 -1
  4. package/dist/contract.js.map +1 -1
  5. package/dist/enableColorAdjustmentGuards.d.ts.map +1 -1
  6. package/dist/enableColorAdjustmentGuards.js +19 -10
  7. package/dist/enableColorAdjustmentGuards.js.map +1 -1
  8. package/dist/enableColorAdjustments.d.ts +4 -0
  9. package/dist/enableColorAdjustments.d.ts.map +1 -0
  10. package/dist/enableColorAdjustments.js +119 -0
  11. package/dist/enableColorAdjustments.js.map +1 -0
  12. package/dist/enableSceneRenderGuards.d.ts +22 -0
  13. package/dist/enableSceneRenderGuards.d.ts.map +1 -0
  14. package/dist/enableSceneRenderGuards.js +36 -0
  15. package/dist/enableSceneRenderGuards.js.map +1 -0
  16. package/dist/explainScene2DCoverage.d.ts +4 -0
  17. package/dist/explainScene2DCoverage.d.ts.map +1 -0
  18. package/dist/explainScene2DCoverage.js +95 -0
  19. package/dist/explainScene2DCoverage.js.map +1 -0
  20. package/dist/explainScene2DRender.d.ts.map +1 -1
  21. package/dist/explainScene2DRender.js +2 -1
  22. package/dist/explainScene2DRender.js.map +1 -1
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/renderProxy.d.ts.map +1 -1
  28. package/dist/renderProxy.js +44 -11
  29. package/dist/renderProxy.js.map +1 -1
  30. package/dist/renderRegistryGuards.d.ts +5 -0
  31. package/dist/renderRegistryGuards.d.ts.map +1 -0
  32. package/dist/renderRegistryGuards.js +89 -0
  33. package/dist/renderRegistryGuards.js.map +1 -0
  34. package/dist/renderRegistrySignals.d.ts +3 -0
  35. package/dist/renderRegistrySignals.d.ts.map +1 -0
  36. package/dist/renderRegistrySignals.js +19 -0
  37. package/dist/renderRegistrySignals.js.map +1 -0
  38. package/dist/renderState.d.ts +3 -1
  39. package/dist/renderState.d.ts.map +1 -1
  40. package/dist/renderState.js +32 -3
  41. package/dist/renderState.js.map +1 -1
  42. package/dist/renderTarget.d.ts +4 -2
  43. package/dist/renderTarget.d.ts.map +1 -1
  44. package/dist/renderTarget.js +52 -2
  45. package/dist/renderTarget.js.map +1 -1
  46. package/dist/renderTransform2d.d.ts.map +1 -1
  47. package/dist/renderTransform2d.js +4 -1
  48. package/dist/renderTransform2d.js.map +1 -1
  49. package/dist/renderer.d.ts +1 -0
  50. package/dist/renderer.d.ts.map +1 -1
  51. package/dist/renderer.js +43 -5
  52. package/dist/renderer.js.map +1 -1
  53. package/dist/scene2dWorkingColorSpace.d.ts +3 -0
  54. package/dist/scene2dWorkingColorSpace.d.ts.map +1 -0
  55. package/dist/scene2dWorkingColorSpace.js +19 -0
  56. package/dist/scene2dWorkingColorSpace.js.map +1 -0
  57. package/dist/sceneRender.d.ts +6 -2
  58. package/dist/sceneRender.d.ts.map +1 -1
  59. package/dist/sceneRender.js +47 -13
  60. package/dist/sceneRender.js.map +1 -1
  61. package/package.json +16 -12
  62. package/src/enableColorAdjustmentGuards.test.ts +23 -5
  63. package/src/enableColorAdjustments.test.ts +250 -0
  64. package/src/enableSceneRenderGuards.test.ts +96 -0
  65. package/src/explainScene2DCoverage.test.ts +169 -0
  66. package/src/renderCache.test.ts +2 -1
  67. package/src/renderProxy.test.ts +156 -12
  68. package/src/renderQueue.test.ts +1 -1
  69. package/src/renderRegistryGuards.test.ts +94 -0
  70. package/src/renderRegistrySignals.test.ts +15 -0
  71. package/src/renderState.test.ts +60 -6
  72. package/src/renderTarget.test.ts +113 -5
  73. package/src/renderTransform2d.test.ts +15 -1
  74. package/src/renderViewport.test.ts +1 -1
  75. package/src/renderer.test.ts +174 -12
  76. package/src/scene2dWorkingColorSpace.test.ts +11 -0
  77. package/src/sceneRender.test.ts +75 -2
  78. package/dist/renderColorScaleBias.d.ts +0 -3
  79. package/dist/renderColorScaleBias.d.ts.map +0 -1
  80. package/dist/renderColorScaleBias.js +0 -21
  81. package/dist/renderColorScaleBias.js.map +0 -1
  82. package/src/renderColorScaleBias.test.ts +0 -53
@@ -1,17 +1,22 @@
1
+ export * from './enableSceneRenderGuards';
1
2
  export * from './enableColorAdjustmentGuards';
3
+ export * from './enableColorAdjustments';
2
4
  export * from './explainScene2DRender';
3
5
  export * from './renderAppearance';
4
6
  export * from './renderCache';
5
7
  export * from './renderColor';
6
- export * from './renderColorScaleBias';
7
8
  export * from './renderer';
8
9
  export * from './renderMaterial';
9
10
  export * from './renderProxy';
10
11
  export * from './renderProxyAdapter';
11
12
  export * from './renderQueue';
13
+ export * from './explainScene2DCoverage';
14
+ export * from './renderRegistryGuards';
15
+ export * from './renderRegistrySignals';
12
16
  export * from './renderState';
13
17
  export * from './renderTarget';
14
18
  export * from './renderTransform2d';
15
19
  export * from './renderViewport';
16
20
  export * from './sceneRender';
21
+ export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
17
22
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/contract.js CHANGED
@@ -1,17 +1,22 @@
1
+ export * from './enableSceneRenderGuards';
1
2
  export * from './enableColorAdjustmentGuards';
3
+ export * from './enableColorAdjustments';
2
4
  export * from './explainScene2DRender';
3
5
  export * from './renderAppearance';
4
6
  export * from './renderCache';
5
7
  export * from './renderColor';
6
- export * from './renderColorScaleBias';
7
8
  export * from './renderer';
8
9
  export * from './renderMaterial';
9
10
  export * from './renderProxy';
10
11
  export * from './renderProxyAdapter';
11
12
  export * from './renderQueue';
13
+ export * from './explainScene2DCoverage';
14
+ export * from './renderRegistryGuards';
15
+ export * from './renderRegistrySignals';
12
16
  export * from './renderState';
13
17
  export * from './renderTarget';
14
18
  export * from './renderTransform2d';
15
19
  export * from './renderViewport';
16
20
  export * from './sceneRender';
21
+ export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
17
22
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enableColorAdjustmentGuards.d.ts","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE3E;AAOD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEpE"}
1
+ {"version":3,"file":"enableColorAdjustmentGuards.d.ts","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE3E;AAOD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAWpE"}
@@ -1,21 +1,30 @@
1
1
  import { logOnce } from '@flighthq/log/contract';
2
- import { LogLevel } from '@flighthq/types/contract';
3
- import { getRenderStateRuntime } from './renderState';
2
+ import { createSlotTable } from '@flighthq/registry/contract';
3
+ import { LogLevel, RegistryEntryState } from '@flighthq/types/contract';
4
+ import { getColorAdjustmentUnsupportedGuard, getRenderStateRuntime } from './renderState';
4
5
  // Returns whether the color-adjustment deferral guard is installed on `state`.
5
6
  export function areColorAdjustmentGuardsEnabled(state) {
6
- return getRenderStateRuntime(state).colorAdjustmentUnsupportedGuard != null;
7
+ return getColorAdjustmentUnsupportedGuard(state) != null;
7
8
  }
8
- // Installs the shakeable color-adjustment guard on `state`: when a node's stack contains a non-matrix
9
- // operation that neither the compact affine path nor the full 4×5 path can represent, the render walk
10
- // reaches this guard through its nullable runtime slot and warns once. Not calling this the production
11
- // default costs the render walk nothing, since the message and @flighthq/log dependency live only in
12
- // this separately-imported module. Idempotent.
9
+ // Installs only the shakeable color-adjustment diagnostic on `state`: when enableColorAdjustments is
10
+ // also installed and a node's stack contains a non-matrix operation that neither the compact affine
11
+ // path nor the full 4×5 path can represent, the resolver reaches this guard through its independent
12
+ // optional persistent registry slot and warns once. This does not enable accumulation or backend realization.
13
+ // Idempotent.
13
14
  export function enableColorAdjustmentGuards(state) {
14
- getRenderStateRuntime(state).colorAdjustmentUnsupportedGuard = warnUnsupportedColorAdjustment;
15
+ const runtime = getRenderStateRuntime(state);
16
+ const table = runtime.registries.colorAdjustmentUnsupportedGuard ??
17
+ createSlotTable('ColorAdjustmentUnsupportedGuard', 'Disabled');
18
+ if (table.entry?.state !== RegistryEntryState.Bound || table.entry.value !== warnUnsupportedColorAdjustment) {
19
+ runtime.registries.colorAdjustmentUnsupportedGuard = {
20
+ ...table,
21
+ entry: { state: RegistryEntryState.Bound, value: warnUnsupportedColorAdjustment },
22
+ };
23
+ }
15
24
  }
16
25
  function warnUnsupportedColorAdjustment() {
17
26
  logOnce('render:unsupported-color-adjustment', LogLevel.Warn, {
18
- message: 'updateRenderProxyColorScaleBias: a per-object color adjustment is not inline-able because it has no 4×5 matrix representation. Use an Effect pass for the unsupported operation.',
27
+ message: 'enableColorAdjustments: a per-object color adjustment is not inline-able because it has no 4×5 matrix representation. Use an Effect pass for the unsupported operation.',
19
28
  }, 'render');
20
29
  }
21
30
  //# sourceMappingURL=enableColorAdjustmentGuards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enableColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,KAAkB;IAChE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,+BAA+B,IAAI,IAAI,CAAC;AAC9E,CAAC;AAED,sGAAsG;AACtG,sGAAsG;AACtG,yGAAyG;AACzG,uGAAuG;AACvG,+CAA+C;AAC/C,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC5D,qBAAqB,CAAC,KAAK,CAAC,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;AAChG,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO,CACL,qCAAqC,EACrC,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,kLAAkL;KACrL,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"enableColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAE,kCAAkC,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE1F,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,KAAkB;IAChE,OAAO,kCAAkC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED,qGAAqG;AACrG,oGAAoG;AACpG,oGAAoG;AACpG,8GAA8G;AAC9G,cAAc;AACd,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GACT,OAAO,CAAC,UAAU,CAAC,+BAA+B;QAClD,eAAe,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,8BAA8B,EAAE,CAAC;QAC5G,OAAO,CAAC,UAAU,CAAC,+BAA+B,GAAG;YACnD,GAAG,KAAK;YACR,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE;SAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO,CACL,qCAAqC,EACrC,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,yKAAyK;KAC5K,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RenderState } from '@flighthq/types/contract';
2
+ export declare function areColorAdjustmentsEnabled(state: RenderState): boolean;
3
+ export declare function enableColorAdjustments(state: RenderState): void;
4
+ //# sourceMappingURL=enableColorAdjustments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableColorAdjustments.d.ts","sourceRoot":"","sources":["../src/enableColorAdjustments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAMV,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAEtE;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAQ/D"}
@@ -0,0 +1,119 @@
1
+ import { multiplyColorMatrix } from '@flighthq/adjustments/contract';
2
+ import { concatColorScaleBias, createColorScaleBias } from '@flighthq/materials/contract';
3
+ import { getNodeRuntime } from '@flighthq/node/contract';
4
+ import { createSlotTable } from '@flighthq/registry/contract';
5
+ import { RegistryEntryState } from '@flighthq/types/contract';
6
+ import { getColorAdjustmentUnsupportedGuard, getRenderStateRuntime } from './renderState';
7
+ // Returns whether color-adjustment accumulation is installed on `state`.
8
+ export function areColorAdjustmentsEnabled(state) {
9
+ return getRenderStateRuntime(state).registries.colorAdjustments?.entry?.state === RegistryEntryState.Bound;
10
+ }
11
+ // Installs color-adjustment accumulation on `state`. The base render walk reaches this module only
12
+ // through the persistent resolver slot, so states that do not opt in retain one empty-slot check and do
13
+ // not pull @flighthq/adjustments or @flighthq/materials into their bundle. Backend feature registrars
14
+ // that can realize these values call this as part of their own opt-in. Idempotent.
15
+ export function enableColorAdjustments(state) {
16
+ const runtime = getRenderStateRuntime(state);
17
+ const table = runtime.registries.colorAdjustments ?? createSlotTable('ColorAdjustments', 'Disabled');
18
+ if (table.entry?.state === RegistryEntryState.Bound && table.entry.value === updateRenderProxyColorScaleBias)
19
+ return;
20
+ runtime.registries.colorAdjustments = {
21
+ ...table,
22
+ entry: { state: RegistryEntryState.Bound, value: updateRenderProxyColorScaleBias },
23
+ };
24
+ }
25
+ // Hands the node's resolved color adjustment to the render node. A node's color-adjustment stack
26
+ // (NodeRuntime.colorAdjustments) is fused once into the affine `resolvedColorScaleBias` cache by the
27
+ // set-accessors on change — never per frame. The render walk then applies the local value first and its
28
+ // parent's inherited value second, matching the appearance and alpha axes: a transform on a container
29
+ // must reach every renderer-bearing descendant. Null and single-adjustment paths remain reference-only;
30
+ // only a node with both local and inherited adjustments performs composition. The result is the
31
+ // Adjustment-tier fold input; it is not a material and does not key the batch.
32
+ //
33
+ // Matrix-tier channel mixing travels through `resolvedColorMatrix`. A non-matrix operation that cannot
34
+ // be represented by either path leaves `colorAdjustmentsUnsupported` set, invoking the shakeable guard
35
+ // so unsupported adjustment data is reported rather than silently discarded.
36
+ function updateRenderProxyColorScaleBias(state, data, parentData) {
37
+ const runtime = getNodeRuntime(data.source);
38
+ const localColorScaleBias = runtime.resolvedColorScaleBias ?? null;
39
+ const localColorMatrix = runtime.resolvedColorMatrix ?? null;
40
+ const parentColorScaleBias = parentData?.colorScaleBias ?? null;
41
+ const parentColorMatrix = parentData?.colorMatrix ?? null;
42
+ if (localColorMatrix !== null || parentColorMatrix !== null) {
43
+ data.colorMatrix = resolveInheritedColorMatrix(data.colorMatrix, parentColorMatrix, parentColorScaleBias, localColorMatrix, localColorScaleBias);
44
+ data.colorScaleBias = null;
45
+ }
46
+ else {
47
+ data.colorMatrix = null;
48
+ data.colorScaleBias = resolveInheritedColorScaleBias(data.colorScaleBias, parentColorScaleBias, localColorScaleBias);
49
+ }
50
+ if (runtime.colorAdjustmentsUnsupported) {
51
+ getColorAdjustmentUnsupportedGuard(state)?.(state, data.source);
52
+ }
53
+ }
54
+ function resolveInheritedColorScaleBias(previous, parent, local) {
55
+ if (parent === null)
56
+ return local;
57
+ if (local === null)
58
+ return parent;
59
+ const out = previous !== parent && previous !== local && previous !== null && inheritedColorScaleBiases.has(previous)
60
+ ? previous
61
+ : createInheritedColorScaleBias();
62
+ // SWF and scene-graph semantics apply the local adjustment first, then the parent's adjustment.
63
+ concatColorScaleBias(out, parent, local);
64
+ return out;
65
+ }
66
+ function resolveInheritedColorMatrix(previous, parentMatrix, parentColorScaleBias, localMatrix, localColorScaleBias) {
67
+ if (parentMatrix === null && parentColorScaleBias === null)
68
+ return localMatrix;
69
+ if (localMatrix === null && localColorScaleBias === null)
70
+ return parentMatrix;
71
+ const parent = parentMatrix ?? writeColorScaleBiasMatrix(parentColorMatrixScratch, parentColorScaleBias);
72
+ const local = localMatrix ?? writeColorScaleBiasMatrix(localColorMatrixScratch, localColorScaleBias);
73
+ const out = previous !== parentMatrix &&
74
+ previous !== localMatrix &&
75
+ previous !== null &&
76
+ previous !== undefined &&
77
+ inheritedColorMatrices.has(previous)
78
+ ? previous
79
+ : createInheritedColorMatrix();
80
+ return multiplyColorMatrix(parent, local, out);
81
+ }
82
+ function writeColorScaleBiasMatrix(out, value) {
83
+ out[0] = value.redScale;
84
+ out[1] = 0;
85
+ out[2] = 0;
86
+ out[3] = 0;
87
+ out[4] = value.redBias;
88
+ out[5] = 0;
89
+ out[6] = value.greenScale;
90
+ out[7] = 0;
91
+ out[8] = 0;
92
+ out[9] = value.greenBias;
93
+ out[10] = 0;
94
+ out[11] = 0;
95
+ out[12] = value.blueScale;
96
+ out[13] = 0;
97
+ out[14] = value.blueBias;
98
+ out[15] = 0;
99
+ out[16] = 0;
100
+ out[17] = 0;
101
+ out[18] = value.alphaScale;
102
+ out[19] = value.alphaBias;
103
+ return out;
104
+ }
105
+ function createInheritedColorScaleBias() {
106
+ const value = createColorScaleBias();
107
+ inheritedColorScaleBiases.add(value);
108
+ return value;
109
+ }
110
+ function createInheritedColorMatrix() {
111
+ const value = new Array(20);
112
+ inheritedColorMatrices.add(value);
113
+ return value;
114
+ }
115
+ const inheritedColorScaleBiases = new WeakSet();
116
+ const inheritedColorMatrices = new WeakSet();
117
+ const parentColorMatrixScratch = new Array(20);
118
+ const localColorMatrixScratch = new Array(20);
119
+ //# sourceMappingURL=enableColorAdjustments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableColorAdjustments.js","sourceRoot":"","sources":["../src/enableColorAdjustments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** Uninstalls the guards installed by `enableSceneRenderGuards`. */
2
+ export declare function disableSceneRenderGuards(): void;
3
+ /**
4
+ * Installs the caller-facing scene-render guards (opt-in, dev-only). It warns once — through
5
+ * `@flighthq/log` — when a skinned mesh reaches frustum culling with no posed bounds, meaning the
6
+ * deform pass `prepareScene3DRender` documents as a precondition never ran.
7
+ *
8
+ * That is worth a message because the failure is invisible at the point of the mistake. A GPU-skinned
9
+ * mesh deforms in the shader, so its geometry bounds stay bind pose; without the deform pass, culling
10
+ * tests a swung limb against the box the character occupied in bind pose and removes it from the frame.
11
+ * The symptom is a limb or a whole character flickering out at certain angles, which reads as a
12
+ * culling bug or a camera bug — anything except a missing call in the frame loop.
13
+ *
14
+ * `prepareScene3DRender` cannot simply run the deform pass itself: that would make `@flighthq/render`
15
+ * depend on `@flighthq/skeleton3d` and bundle skinning into every rigid and 2D consumer. So the
16
+ * precondition is real and the guard is how it becomes discoverable.
17
+ *
18
+ * Not importing this module costs production nothing: the message and the `@flighthq/log` dependency
19
+ * live only here.
20
+ */
21
+ export declare function enableSceneRenderGuards(): void;
22
+ //# sourceMappingURL=enableSceneRenderGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableSceneRenderGuards.d.ts","sourceRoot":"","sources":["../src/enableSceneRenderGuards.ts"],"names":[],"mappings":"AAMA,oEAAoE;AACpE,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -0,0 +1,36 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { setSkinnedMeshBoundsGuard } from './sceneRender';
4
+ /** Uninstalls the guards installed by `enableSceneRenderGuards`. */
5
+ export function disableSceneRenderGuards() {
6
+ setSkinnedMeshBoundsGuard(null);
7
+ }
8
+ /**
9
+ * Installs the caller-facing scene-render guards (opt-in, dev-only). It warns once — through
10
+ * `@flighthq/log` — when a skinned mesh reaches frustum culling with no posed bounds, meaning the
11
+ * deform pass `prepareScene3DRender` documents as a precondition never ran.
12
+ *
13
+ * That is worth a message because the failure is invisible at the point of the mistake. A GPU-skinned
14
+ * mesh deforms in the shader, so its geometry bounds stay bind pose; without the deform pass, culling
15
+ * tests a swung limb against the box the character occupied in bind pose and removes it from the frame.
16
+ * The symptom is a limb or a whole character flickering out at certain angles, which reads as a
17
+ * culling bug or a camera bug — anything except a missing call in the frame loop.
18
+ *
19
+ * `prepareScene3DRender` cannot simply run the deform pass itself: that would make `@flighthq/render`
20
+ * depend on `@flighthq/skeleton3d` and bundle skinning into every rigid and 2D consumer. So the
21
+ * precondition is real and the guard is how it becomes discoverable.
22
+ *
23
+ * Not importing this module costs production nothing: the message and the `@flighthq/log` dependency
24
+ * live only here.
25
+ */
26
+ export function enableSceneRenderGuards() {
27
+ setSkinnedMeshBoundsGuard(warnOnUnposedSkinnedMesh);
28
+ }
29
+ function warnOnUnposedSkinnedMesh(_mesh) {
30
+ logOnce('render:skinned-mesh-without-deformed-bounds', LogLevel.Warn, {
31
+ message: 'prepareScene3DRender: a skinned mesh has no posed bounds, so culling is testing it against its ' +
32
+ 'BIND POSE box and a deformed limb can be wrongly culled. Call prepareScene3DSkinning ' +
33
+ '(@flighthq/skeleton3d) before prepareScene3DRender each frame.',
34
+ }, 'render');
35
+ }
36
+ //# sourceMappingURL=enableSceneRenderGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableSceneRenderGuards.js","sourceRoot":"","sources":["../src/enableSceneRenderGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,oEAAoE;AACpE,MAAM,UAAU,wBAAwB;IACtC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB;IACrC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAqB;IACrD,OAAO,CACL,6CAA6C,EAC7C,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,iGAAiG;YACjG,uFAAuF;YACvF,gEAAgE;KACnE,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RenderState, Scene2DKindUsage, SceneCoverageCatalog, SceneCoverageEntry } from '@flighthq/types/contract';
2
+ export declare function explainScene2DCoverage(out: SceneCoverageEntry[], state: RenderState, usage: Readonly<Scene2DKindUsage>, catalog: SceneCoverageCatalog): void;
3
+ export declare function hasScene2DCoverage(state: RenderState, usage: Readonly<Scene2DKindUsage>): boolean;
4
+ //# sourceMappingURL=explainScene2DCoverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainScene2DCoverage.d.ts","sourceRoot":"","sources":["../src/explainScene2DCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACjC,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAGN;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAEjG"}
@@ -0,0 +1,95 @@
1
+ import { RegistryEntryState, RenderRegistry, RequirementFacet, SceneCoverage } from '@flighthq/types/contract';
2
+ import { getRenderStateRuntime } from './renderState';
3
+ // Clears `out`, then reports every requirement in `usage` that any 2D backend answers the same way,
4
+ // with how well this state is wired for it — satisfied entries included, so one call is a manifest.
5
+ //
6
+ // This covers the two registries that live on the BASE render-state runtime and so mean the same thing
7
+ // on Canvas, DOM, GL and WebGPU: the node-renderer table every backend dispatches through, and the shape
8
+ // command set every backend replays through when it rasterizes. A backend adds its own specifics — GL
9
+ // blend realizations, per-backend material renderers — on top of this, rather than restating it.
10
+ //
11
+ // Unlike the 3D seam, node kinds ARE a requirement here: the 2D pipeline resolves every node through
12
+ // `registerRenderer(state, kind, renderer)`, where the 3D pipeline collects meshes structurally.
13
+ // `catalog` is the caller's complete backend inventory; an unserved requirement uses its first ordered
14
+ // registration as the primary remedy, while a satisfied requirement needs no catalog lookup.
15
+ export function explainScene2DCoverage(out, state, usage, catalog) {
16
+ out.length = 0;
17
+ collectScene2DCoverageGaps(out, state, usage, false, catalog);
18
+ }
19
+ // Whether this state can serve every node kind and shape command `usage` names. Stops at the first
20
+ // shortfall and never allocates. Use the explain form to find out WHICH requirement and how badly.
21
+ export function hasScene2DCoverage(state, usage) {
22
+ return !collectScene2DCoverageGaps(null, state, usage, true, null);
23
+ }
24
+ // The single implementation both tiers read, so the boolean can never disagree with the explanation.
25
+ // `found` counts only real shortfalls, so appending satisfied entries to `out` never flips the predicate.
26
+ function collectScene2DCoverageGaps(out, state, usage, stopAtFirst, catalog) {
27
+ let found = false;
28
+ const runtime = getRenderStateRuntime(state);
29
+ // A node kind with no renderer produces no render proxy, so the node and its whole subtree are
30
+ // absent from the frame — the loudest failure in this seam and the one worth asking about first.
31
+ for (let i = 0; i < usage.nodeKinds.length; i++) {
32
+ const kind = usage.nodeKinds[i];
33
+ if (runtime.registries.renderers.entries.get(kind)?.state === RegistryEntryState.Bound) {
34
+ out?.push({
35
+ coverage: SceneCoverage.Satisfied,
36
+ facet: RequirementFacet.SceneNodeKind,
37
+ kind,
38
+ registry: RenderRegistry.NodeRenderer,
39
+ });
40
+ continue;
41
+ }
42
+ found = true;
43
+ if (stopAtFirst)
44
+ return true;
45
+ out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneNodeKind, kind, RenderRegistry.NodeRenderer));
46
+ }
47
+ // Only meaningful for a state that rasterizes shapes. A GL or WebGPU state drawing every shape
48
+ // through the mesh path never replays a command, so these entries are reported and simply not acted
49
+ // on — the same shape as reporting 3D node kinds a backend collects structurally.
50
+ const commands = runtime.registries.canvasShapeCommands?.entries;
51
+ for (let i = 0; i < usage.shapeCommandKeys.length; i++) {
52
+ const kind = usage.shapeCommandKeys[i];
53
+ if (commands?.get(kind)?.state === 'bound') {
54
+ out?.push({
55
+ coverage: SceneCoverage.Satisfied,
56
+ facet: RequirementFacet.SceneShapeCommand,
57
+ kind,
58
+ registry: RenderRegistry.ShapeCommandHandler,
59
+ });
60
+ continue;
61
+ }
62
+ found = true;
63
+ if (stopAtFirst)
64
+ return true;
65
+ out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneShapeCommand, kind, RenderRegistry.ShapeCommandHandler));
66
+ }
67
+ return found;
68
+ }
69
+ function createShortfallEntry(catalog, fallback, facet, kind, registry) {
70
+ const registration = findCatalogRegistration(catalog, kind, registry);
71
+ const base = { facet, kind, registry };
72
+ if (registration === null) {
73
+ return {
74
+ ...base,
75
+ coverage: fallback ? SceneCoverage.FallbackUnavailable : SceneCoverage.Unavailable,
76
+ };
77
+ }
78
+ return {
79
+ ...base,
80
+ coverage: fallback ? SceneCoverage.FallbackRemediable : SceneCoverage.Unregistered,
81
+ module: registration.module,
82
+ registrar: registration.registrar,
83
+ };
84
+ }
85
+ // Package-private and row-agnostic: generated, probed, and fixture catalogs all feed the same seam.
86
+ function findCatalogRegistration(catalog, kind, registry) {
87
+ if (catalog === null)
88
+ return null;
89
+ for (const entry of catalog) {
90
+ if (entry.kind === kind && entry.registry === registry)
91
+ return entry.registrations[0] ?? null;
92
+ }
93
+ return null;
94
+ }
95
+ //# sourceMappingURL=explainScene2DCoverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainScene2DCoverage.js","sourceRoot":"","sources":["../src/explainScene2DCoverage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"explainScene2DRender.d.ts","sourceRoot":"","sources":["../src/explainScene2DRender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EAExB,UAAU,EACV,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAqBlC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,wBAAwB,CAmBrG"}
1
+ {"version":3,"file":"explainScene2DRender.d.ts","sourceRoot":"","sources":["../src/explainScene2DRender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EAExB,UAAU,EACV,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,wBAAwB,CAoBrG"}
@@ -1,3 +1,4 @@
1
+ import { RegistryEntryState } from '@flighthq/types/contract';
1
2
  import { getRenderProxy2D } from './renderProxy';
2
3
  import { getRenderStateRuntime } from './renderState';
3
4
  // Recomputes why `source` would or would not draw against `state`, and returns it as plain data. Pure:
@@ -18,7 +19,7 @@ import { getRenderStateRuntime } from './renderState';
18
19
  // a new blank-reason gate, this function must gain the matching check or it silently goes stale.
19
20
  export function explainScene2DRender(state, source) {
20
21
  const kind = source.kind;
21
- const hasRenderer = getRenderStateRuntime(state).rendererMap.get(kind) !== undefined;
22
+ const hasRenderer = getRenderStateRuntime(state).registries.renderers.entries.get(kind)?.state === RegistryEntryState.Bound;
22
23
  const proxy = getRenderProxy2D(state, source);
23
24
  const prepared = proxy !== undefined;
24
25
  const appearance = source;
@@ -1 +1 @@
1
- {"version":3,"file":"explainScene2DRender.js","sourceRoot":"","sources":["../src/explainScene2DRender.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,uGAAuG;AACvG,qGAAqG;AACrG,oGAAoG;AACpG,uFAAuF;AACvF,EAAE;AACF,oGAAoG;AACpG,gGAAgG;AAChG,kGAAkG;AAClG,uGAAuG;AACvG,6FAA6F;AAC7F,yFAAyF;AACzF,EAAE;AACF,sGAAsG;AACtG,4FAA4F;AAC5F,uGAAuG;AACvG,iGAAiG;AACjG,MAAM,UAAU,oBAAoB,CAAC,KAAkB,EAAE,MAAkB;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAErF,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC;IAErC,MAAM,UAAU,GAAG,MAAkC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IACzE,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IAE5E,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC,WAAW;QAAE,MAAM,GAAG,aAAa,CAAC;SACpC,IAAI,CAAC,QAAQ;QAAE,MAAM,GAAG,cAAc,CAAC;SACvC,IAAI,CAAC,OAAO;QAAE,MAAM,GAAG,aAAa,CAAC;SACrC,IAAI,cAAc,IAAI,CAAC;QAAE,MAAM,GAAG,YAAY,CAAC;;QAC/C,MAAM,GAAG,IAAI,CAAC;IAEnB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"explainScene2DRender.js","sourceRoot":"","sources":["../src/explainScene2DRender.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,uGAAuG;AACvG,qGAAqG;AACrG,oGAAoG;AACpG,uFAAuF;AACvF,EAAE;AACF,oGAAoG;AACpG,gGAAgG;AAChG,kGAAkG;AAClG,uGAAuG;AACvG,6FAA6F;AAC7F,yFAAyF;AACzF,EAAE;AACF,sGAAsG;AACtG,4FAA4F;AAC5F,uGAAuG;AACvG,iGAAiG;AACjG,MAAM,UAAU,oBAAoB,CAAC,KAAkB,EAAE,MAAkB;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,WAAW,GACf,qBAAqB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC;IAE1G,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC;IAErC,MAAM,UAAU,GAAG,MAAkC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IACzE,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IAE5E,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC,WAAW;QAAE,MAAM,GAAG,aAAa,CAAC;SACpC,IAAI,CAAC,QAAQ;QAAE,MAAM,GAAG,cAAc,CAAC;SACvC,IAAI,CAAC,OAAO;QAAE,MAAM,GAAG,aAAa,CAAC;SACrC,IAAI,cAAc,IAAI,CAAC;QAAE,MAAM,GAAG,YAAY,CAAC;;QAC/C,MAAM,GAAG,IAAI,CAAC;IAEnB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC1E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export { createRenderCache, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
1
+ export { areColorAdjustmentsEnabled, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
2
+ export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export { createRenderCache, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
1
+ export { areColorAdjustmentsEnabled, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
2
+ export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EAEd,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AASlC,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CAyBrF;AAKD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,kBAAkB,GACvD,aAAa,CAMf;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAM/E;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAE/E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAY9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAElG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE9E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAWT;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEjE;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEpF;AAMD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAGN;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CASN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAWrF;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CA+CjG"}
1
+ {"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EAEd,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAQlC,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CA2BrF;AAKD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,kBAAkB,GACvD,aAAa,CAMf;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAQ/E;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAE/E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAa9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAElG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE9E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAeT;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEjE;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEpF;AAMD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAGN;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAsBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAWrF;AAgBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAiDjG"}