@luma.gl/core 9.2.6 → 9.3.0-alpha.10

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 (280) hide show
  1. package/dist/adapter/canvas-context.d.ts +6 -162
  2. package/dist/adapter/canvas-context.d.ts.map +1 -1
  3. package/dist/adapter/canvas-context.js +5 -419
  4. package/dist/adapter/canvas-context.js.map +1 -1
  5. package/dist/adapter/canvas-observer.d.ts +32 -0
  6. package/dist/adapter/canvas-observer.d.ts.map +1 -0
  7. package/dist/adapter/canvas-observer.js +90 -0
  8. package/dist/adapter/canvas-observer.js.map +1 -0
  9. package/dist/adapter/canvas-surface.d.ts +150 -0
  10. package/dist/adapter/canvas-surface.d.ts.map +1 -0
  11. package/dist/adapter/canvas-surface.js +392 -0
  12. package/dist/adapter/canvas-surface.js.map +1 -0
  13. package/dist/adapter/device.d.ts +81 -16
  14. package/dist/adapter/device.d.ts.map +1 -1
  15. package/dist/adapter/device.js +191 -10
  16. package/dist/adapter/device.js.map +1 -1
  17. package/dist/adapter/luma.js +1 -1
  18. package/dist/adapter/luma.js.map +1 -1
  19. package/dist/adapter/presentation-context.d.ts +11 -0
  20. package/dist/adapter/presentation-context.d.ts.map +1 -0
  21. package/dist/adapter/presentation-context.js +12 -0
  22. package/dist/adapter/presentation-context.js.map +1 -0
  23. package/dist/adapter/resources/buffer.d.ts +1 -1
  24. package/dist/adapter/resources/buffer.d.ts.map +1 -1
  25. package/dist/adapter/resources/buffer.js +14 -6
  26. package/dist/adapter/resources/buffer.js.map +1 -1
  27. package/dist/adapter/resources/command-buffer.d.ts +3 -1
  28. package/dist/adapter/resources/command-buffer.d.ts.map +1 -1
  29. package/dist/adapter/resources/command-buffer.js +3 -1
  30. package/dist/adapter/resources/command-buffer.js.map +1 -1
  31. package/dist/adapter/resources/command-encoder.d.ts +30 -7
  32. package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
  33. package/dist/adapter/resources/command-encoder.js +68 -2
  34. package/dist/adapter/resources/command-encoder.js.map +1 -1
  35. package/dist/adapter/resources/compute-pipeline.d.ts +2 -2
  36. package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -1
  37. package/dist/adapter/resources/fence.d.ts +16 -0
  38. package/dist/adapter/resources/fence.d.ts.map +1 -0
  39. package/dist/adapter/resources/fence.js +17 -0
  40. package/dist/adapter/resources/fence.js.map +1 -0
  41. package/dist/adapter/resources/framebuffer.d.ts +1 -1
  42. package/dist/adapter/resources/framebuffer.d.ts.map +1 -1
  43. package/dist/adapter/resources/framebuffer.js +15 -12
  44. package/dist/adapter/resources/framebuffer.js.map +1 -1
  45. package/dist/adapter/resources/query-set.d.ts +17 -1
  46. package/dist/adapter/resources/query-set.d.ts.map +1 -1
  47. package/dist/adapter/resources/query-set.js.map +1 -1
  48. package/dist/adapter/resources/render-pipeline.d.ts +28 -10
  49. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
  50. package/dist/adapter/resources/render-pipeline.js +21 -2
  51. package/dist/adapter/resources/render-pipeline.js.map +1 -1
  52. package/dist/adapter/resources/resource.d.ts +13 -0
  53. package/dist/adapter/resources/resource.d.ts.map +1 -1
  54. package/dist/adapter/resources/resource.js +243 -14
  55. package/dist/adapter/resources/resource.js.map +1 -1
  56. package/dist/adapter/resources/shader.js +27 -25
  57. package/dist/adapter/resources/shader.js.map +1 -1
  58. package/dist/adapter/resources/shared-render-pipeline.d.ts +22 -0
  59. package/dist/adapter/resources/shared-render-pipeline.d.ts.map +1 -0
  60. package/dist/adapter/resources/shared-render-pipeline.js +25 -0
  61. package/dist/adapter/resources/shared-render-pipeline.js.map +1 -0
  62. package/dist/adapter/resources/texture-view.d.ts +1 -1
  63. package/dist/adapter/resources/texture-view.d.ts.map +1 -1
  64. package/dist/adapter/resources/texture.d.ts +168 -28
  65. package/dist/adapter/resources/texture.d.ts.map +1 -1
  66. package/dist/adapter/resources/texture.js +284 -25
  67. package/dist/adapter/resources/texture.js.map +1 -1
  68. package/dist/adapter/types/attachments.d.ts +1 -1
  69. package/dist/adapter/types/attachments.d.ts.map +1 -1
  70. package/dist/adapter/types/buffer-layout.d.ts +1 -1
  71. package/dist/adapter/types/buffer-layout.d.ts.map +1 -1
  72. package/dist/adapter/types/parameters.d.ts +3 -1
  73. package/dist/adapter/types/parameters.d.ts.map +1 -1
  74. package/dist/adapter/types/parameters.js +1 -0
  75. package/dist/adapter/types/parameters.js.map +1 -1
  76. package/dist/adapter/types/shader-layout.d.ts +10 -6
  77. package/dist/adapter/types/shader-layout.d.ts.map +1 -1
  78. package/dist/adapter/types/uniforms.d.ts +6 -0
  79. package/dist/adapter/types/uniforms.d.ts.map +1 -1
  80. package/dist/adapter-utils/bind-groups.d.ts +9 -0
  81. package/dist/adapter-utils/bind-groups.d.ts.map +1 -0
  82. package/dist/adapter-utils/bind-groups.js +41 -0
  83. package/dist/adapter-utils/bind-groups.js.map +1 -0
  84. package/dist/adapter-utils/format-compiler-log.d.ts.map +1 -1
  85. package/dist/adapter-utils/format-compiler-log.js +23 -15
  86. package/dist/adapter-utils/format-compiler-log.js.map +1 -1
  87. package/dist/adapter-utils/get-attribute-from-layouts.d.ts +2 -2
  88. package/dist/adapter-utils/get-attribute-from-layouts.d.ts.map +1 -1
  89. package/dist/adapter-utils/get-attribute-from-layouts.js +6 -6
  90. package/dist/adapter-utils/get-attribute-from-layouts.js.map +1 -1
  91. package/dist/dist.dev.js +2686 -644
  92. package/dist/dist.min.js +10 -9
  93. package/dist/factories/bind-group-factory.d.ts +20 -0
  94. package/dist/factories/bind-group-factory.d.ts.map +1 -0
  95. package/dist/factories/bind-group-factory.js +79 -0
  96. package/dist/factories/bind-group-factory.js.map +1 -0
  97. package/dist/factories/core-module-state.d.ts +7 -0
  98. package/dist/factories/core-module-state.d.ts.map +1 -0
  99. package/dist/{shadertypes/data-types/shader-types.js → factories/core-module-state.js} +1 -1
  100. package/dist/factories/core-module-state.js.map +1 -0
  101. package/dist/factories/pipeline-factory.d.ts +54 -0
  102. package/dist/factories/pipeline-factory.d.ts.map +1 -0
  103. package/dist/factories/pipeline-factory.js +270 -0
  104. package/dist/factories/pipeline-factory.js.map +1 -0
  105. package/dist/factories/shader-factory.d.ts +20 -0
  106. package/dist/factories/shader-factory.d.ts.map +1 -0
  107. package/dist/factories/shader-factory.js +84 -0
  108. package/dist/factories/shader-factory.js.map +1 -0
  109. package/dist/index.cjs +2422 -554
  110. package/dist/index.cjs.map +4 -4
  111. package/dist/index.d.ts +30 -14
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +19 -7
  114. package/dist/index.js.map +1 -1
  115. package/dist/portable/shader-block-writer.d.ts +51 -0
  116. package/dist/portable/shader-block-writer.d.ts.map +1 -0
  117. package/dist/portable/shader-block-writer.js +185 -0
  118. package/dist/portable/shader-block-writer.js.map +1 -0
  119. package/dist/portable/uniform-block.d.ts +1 -1
  120. package/dist/portable/uniform-block.d.ts.map +1 -1
  121. package/dist/portable/uniform-store.d.ts +55 -24
  122. package/dist/portable/uniform-store.d.ts.map +1 -1
  123. package/dist/portable/uniform-store.js +73 -25
  124. package/dist/portable/uniform-store.js.map +1 -1
  125. package/dist/shadertypes/data-types/data-type-decoder.d.ts +20 -0
  126. package/dist/shadertypes/data-types/data-type-decoder.d.ts.map +1 -0
  127. package/dist/shadertypes/data-types/data-type-decoder.js +79 -0
  128. package/dist/shadertypes/data-types/data-type-decoder.js.map +1 -0
  129. package/dist/shadertypes/data-types/data-types.d.ts +31 -12
  130. package/dist/shadertypes/data-types/data-types.d.ts.map +1 -1
  131. package/dist/shadertypes/data-types/decode-data-types.d.ts.map +1 -1
  132. package/dist/shadertypes/data-types/decode-data-types.js +2 -1
  133. package/dist/shadertypes/data-types/decode-data-types.js.map +1 -1
  134. package/dist/{image-utils → shadertypes/image-types}/image-types.d.ts +0 -6
  135. package/dist/shadertypes/image-types/image-types.d.ts.map +1 -0
  136. package/dist/shadertypes/image-types/image-types.js.map +1 -0
  137. package/dist/shadertypes/shader-types/shader-block-layout.d.ts +72 -0
  138. package/dist/shadertypes/shader-types/shader-block-layout.d.ts.map +1 -0
  139. package/dist/shadertypes/shader-types/shader-block-layout.js +209 -0
  140. package/dist/shadertypes/shader-types/shader-block-layout.js.map +1 -0
  141. package/dist/shadertypes/shader-types/shader-type-decoder.d.ts +41 -0
  142. package/dist/shadertypes/shader-types/shader-type-decoder.d.ts.map +1 -0
  143. package/dist/shadertypes/{data-types/decode-shader-types.js → shader-types/shader-type-decoder.js} +43 -4
  144. package/dist/shadertypes/shader-types/shader-type-decoder.js.map +1 -0
  145. package/dist/shadertypes/shader-types/shader-types.d.ts +101 -0
  146. package/dist/shadertypes/shader-types/shader-types.d.ts.map +1 -0
  147. package/dist/shadertypes/shader-types/shader-types.js +30 -0
  148. package/dist/shadertypes/shader-types/shader-types.js.map +1 -0
  149. package/dist/shadertypes/texture-types/pixel-utils.d.ts.map +1 -0
  150. package/dist/shadertypes/{textures → texture-types}/pixel-utils.js +4 -4
  151. package/dist/shadertypes/texture-types/pixel-utils.js.map +1 -0
  152. package/dist/shadertypes/texture-types/texture-format-decoder.d.ts +36 -0
  153. package/dist/shadertypes/texture-types/texture-format-decoder.d.ts.map +1 -0
  154. package/dist/shadertypes/{textures → texture-types}/texture-format-decoder.js +109 -37
  155. package/dist/shadertypes/texture-types/texture-format-decoder.js.map +1 -0
  156. package/dist/shadertypes/texture-types/texture-format-generics.d.ts +34 -0
  157. package/dist/shadertypes/texture-types/texture-format-generics.d.ts.map +1 -0
  158. package/dist/shadertypes/texture-types/texture-format-generics.js.map +1 -0
  159. package/dist/shadertypes/texture-types/texture-format-table.d.ts.map +1 -0
  160. package/dist/shadertypes/{textures → texture-types}/texture-format-table.js +10 -9
  161. package/dist/shadertypes/texture-types/texture-format-table.js.map +1 -0
  162. package/dist/shadertypes/{textures → texture-types}/texture-formats.d.ts +51 -17
  163. package/dist/shadertypes/texture-types/texture-formats.d.ts.map +1 -0
  164. package/dist/shadertypes/{textures → texture-types}/texture-formats.js +1 -0
  165. package/dist/shadertypes/texture-types/texture-formats.js.map +1 -0
  166. package/dist/shadertypes/texture-types/texture-layout.d.ts +5 -0
  167. package/dist/shadertypes/texture-types/texture-layout.d.ts.map +1 -0
  168. package/dist/shadertypes/texture-types/texture-layout.js +41 -0
  169. package/dist/shadertypes/texture-types/texture-layout.js.map +1 -0
  170. package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts +24 -0
  171. package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts.map +1 -0
  172. package/dist/shadertypes/vertex-types/vertex-format-decoder.js +106 -0
  173. package/dist/shadertypes/vertex-types/vertex-format-decoder.js.map +1 -0
  174. package/dist/shadertypes/vertex-types/vertex-formats.d.ts +50 -0
  175. package/dist/shadertypes/vertex-types/vertex-formats.d.ts.map +1 -0
  176. package/dist/shadertypes/vertex-types/vertex-formats.js.map +1 -0
  177. package/dist/utils/array-equal.d.ts +1 -1
  178. package/dist/utils/array-equal.d.ts.map +1 -1
  179. package/dist/utils/array-equal.js +15 -9
  180. package/dist/utils/array-equal.js.map +1 -1
  181. package/dist/utils/assert.d.ts +5 -0
  182. package/dist/utils/assert.d.ts.map +1 -0
  183. package/dist/utils/assert.js +17 -0
  184. package/dist/utils/assert.js.map +1 -0
  185. package/dist/utils/stats-manager.d.ts.map +1 -1
  186. package/dist/utils/stats-manager.js +61 -1
  187. package/dist/utils/stats-manager.js.map +1 -1
  188. package/package.json +6 -6
  189. package/src/adapter/canvas-context.ts +7 -556
  190. package/src/adapter/canvas-observer.ts +130 -0
  191. package/src/adapter/canvas-surface.ts +521 -0
  192. package/src/adapter/device.ts +308 -24
  193. package/src/adapter/presentation-context.ts +16 -0
  194. package/src/adapter/resources/buffer.ts +13 -5
  195. package/src/adapter/resources/command-buffer.ts +4 -2
  196. package/src/adapter/resources/command-encoder.ts +101 -10
  197. package/src/adapter/resources/compute-pipeline.ts +2 -2
  198. package/src/adapter/resources/fence.ts +32 -0
  199. package/src/adapter/resources/framebuffer.ts +16 -13
  200. package/src/adapter/resources/query-set.ts +17 -1
  201. package/src/adapter/resources/render-pipeline.ts +52 -16
  202. package/src/adapter/resources/resource.ts +289 -14
  203. package/src/adapter/resources/shader.ts +28 -28
  204. package/src/adapter/resources/shared-render-pipeline.ts +40 -0
  205. package/src/adapter/resources/texture-view.ts +1 -1
  206. package/src/adapter/resources/texture.ts +427 -49
  207. package/src/adapter/types/attachments.ts +1 -1
  208. package/src/adapter/types/buffer-layout.ts +1 -1
  209. package/src/adapter/types/parameters.ts +4 -1
  210. package/src/adapter/types/shader-layout.ts +15 -9
  211. package/src/adapter/types/uniforms.ts +12 -0
  212. package/src/adapter-utils/bind-groups.ts +71 -0
  213. package/src/adapter-utils/format-compiler-log.ts +23 -15
  214. package/src/adapter-utils/get-attribute-from-layouts.ts +8 -11
  215. package/src/factories/bind-group-factory.ts +139 -0
  216. package/src/factories/core-module-state.ts +11 -0
  217. package/src/factories/pipeline-factory.ts +328 -0
  218. package/src/factories/shader-factory.ts +103 -0
  219. package/src/index.ts +70 -26
  220. package/src/portable/shader-block-writer.ts +254 -0
  221. package/src/portable/uniform-block.ts +1 -1
  222. package/src/portable/uniform-store.ts +98 -40
  223. package/src/shadertypes/data-types/data-type-decoder.ts +105 -0
  224. package/src/shadertypes/data-types/data-types.ts +100 -48
  225. package/src/shadertypes/data-types/decode-data-types.ts +2 -1
  226. package/src/{image-utils → shadertypes/image-types}/image-types.ts +0 -7
  227. package/src/shadertypes/shader-types/shader-block-layout.ts +340 -0
  228. package/src/shadertypes/{data-types/decode-shader-types.ts → shader-types/shader-type-decoder.ts} +88 -14
  229. package/src/shadertypes/shader-types/shader-types.ts +207 -0
  230. package/src/shadertypes/{textures → texture-types}/pixel-utils.ts +4 -4
  231. package/src/shadertypes/{textures → texture-types}/texture-format-decoder.ts +166 -45
  232. package/src/shadertypes/{textures → texture-types}/texture-format-generics.ts +42 -48
  233. package/src/shadertypes/{textures → texture-types}/texture-format-table.ts +10 -9
  234. package/src/shadertypes/{textures → texture-types}/texture-formats.ts +73 -17
  235. package/src/shadertypes/texture-types/texture-layout.ts +60 -0
  236. package/src/shadertypes/vertex-types/vertex-format-decoder.ts +131 -0
  237. package/src/shadertypes/vertex-types/vertex-formats.ts +183 -0
  238. package/src/utils/array-equal.ts +21 -9
  239. package/src/utils/assert.ts +18 -0
  240. package/src/utils/stats-manager.ts +76 -2
  241. package/dist/image-utils/image-types.d.ts.map +0 -1
  242. package/dist/image-utils/image-types.js.map +0 -1
  243. package/dist/portable/uniform-buffer-layout.d.ts +0 -28
  244. package/dist/portable/uniform-buffer-layout.d.ts.map +0 -1
  245. package/dist/portable/uniform-buffer-layout.js +0 -96
  246. package/dist/portable/uniform-buffer-layout.js.map +0 -1
  247. package/dist/shadertypes/data-types/decode-shader-types.d.ts +0 -17
  248. package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +0 -1
  249. package/dist/shadertypes/data-types/decode-shader-types.js.map +0 -1
  250. package/dist/shadertypes/data-types/shader-types.d.ts +0 -45
  251. package/dist/shadertypes/data-types/shader-types.d.ts.map +0 -1
  252. package/dist/shadertypes/data-types/shader-types.js.map +0 -1
  253. package/dist/shadertypes/textures/pixel-utils.d.ts.map +0 -1
  254. package/dist/shadertypes/textures/pixel-utils.js.map +0 -1
  255. package/dist/shadertypes/textures/texture-format-decoder.d.ts +0 -18
  256. package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +0 -1
  257. package/dist/shadertypes/textures/texture-format-decoder.js.map +0 -1
  258. package/dist/shadertypes/textures/texture-format-generics.d.ts +0 -33
  259. package/dist/shadertypes/textures/texture-format-generics.d.ts.map +0 -1
  260. package/dist/shadertypes/textures/texture-format-generics.js.map +0 -1
  261. package/dist/shadertypes/textures/texture-format-table.d.ts.map +0 -1
  262. package/dist/shadertypes/textures/texture-format-table.js.map +0 -1
  263. package/dist/shadertypes/textures/texture-formats.d.ts.map +0 -1
  264. package/dist/shadertypes/textures/texture-formats.js.map +0 -1
  265. package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts +0 -18
  266. package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts.map +0 -1
  267. package/dist/shadertypes/vertex-arrays/decode-vertex-format.js +0 -100
  268. package/dist/shadertypes/vertex-arrays/decode-vertex-format.js.map +0 -1
  269. package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts +0 -27
  270. package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts.map +0 -1
  271. package/dist/shadertypes/vertex-arrays/vertex-formats.js.map +0 -1
  272. package/src/portable/uniform-buffer-layout.ts +0 -118
  273. package/src/shadertypes/data-types/shader-types.ts +0 -87
  274. package/src/shadertypes/vertex-arrays/decode-vertex-format.ts +0 -124
  275. package/src/shadertypes/vertex-arrays/vertex-formats.ts +0 -91
  276. /package/dist/{image-utils → shadertypes/image-types}/image-types.js +0 -0
  277. /package/dist/shadertypes/{textures → texture-types}/pixel-utils.d.ts +0 -0
  278. /package/dist/shadertypes/{textures → texture-types}/texture-format-generics.js +0 -0
  279. /package/dist/shadertypes/{textures → texture-types}/texture-format-table.d.ts +0 -0
  280. /package/dist/shadertypes/{vertex-arrays → vertex-types}/vertex-formats.js +0 -0
@@ -0,0 +1,32 @@
1
+ type CanvasObserverProps = {
2
+ canvas?: HTMLCanvasElement;
3
+ trackPosition: boolean;
4
+ onResize: (entries: ResizeObserverEntry[]) => void;
5
+ onIntersection: (entries: IntersectionObserverEntry[]) => void;
6
+ onDevicePixelRatioChange: () => void;
7
+ onPositionChange: () => void;
8
+ };
9
+ /**
10
+ * Internal DOM observer orchestration for HTML canvas surfaces.
11
+ *
12
+ * CanvasSurface owns the tracked state and device callback dispatch. This helper only manages
13
+ * browser observers, timers, and polling loops, then reports events through callbacks.
14
+ */
15
+ export declare class CanvasObserver {
16
+ readonly props: CanvasObserverProps;
17
+ private _resizeObserver;
18
+ private _intersectionObserver;
19
+ private _observeDevicePixelRatioTimeout;
20
+ private _observeDevicePixelRatioMediaQuery;
21
+ private readonly _handleDevicePixelRatioChange;
22
+ private _trackPositionInterval;
23
+ private _started;
24
+ get started(): boolean;
25
+ constructor(props: CanvasObserverProps);
26
+ start(): void;
27
+ stop(): void;
28
+ private _refreshDevicePixelRatio;
29
+ private _trackPosition;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=canvas-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-observer.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-observer.ts"],"names":[],"mappings":"AAIA,KAAK,mBAAmB,GAAG;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,OAAO,EAAE,yBAAyB,EAAE,KAAK,IAAI,CAAC;IAC/D,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAEpC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,+BAA+B,CAA8C;IACrF,OAAO,CAAC,kCAAkC,CAA+B;IACzE,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAyC;IACvF,OAAO,CAAC,sBAAsB,CAA+C;IAC7E,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,OAAO,IAAI,OAAO,CAErB;gBAEW,KAAK,EAAE,mBAAmB;IAItC,KAAK,IAAI,IAAI;IAyBb,IAAI,IAAI,IAAI;IA6BZ,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,cAAc;CAgBvB"}
@@ -0,0 +1,90 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /**
5
+ * Internal DOM observer orchestration for HTML canvas surfaces.
6
+ *
7
+ * CanvasSurface owns the tracked state and device callback dispatch. This helper only manages
8
+ * browser observers, timers, and polling loops, then reports events through callbacks.
9
+ */
10
+ export class CanvasObserver {
11
+ props;
12
+ _resizeObserver;
13
+ _intersectionObserver;
14
+ _observeDevicePixelRatioTimeout = null;
15
+ _observeDevicePixelRatioMediaQuery = null;
16
+ _handleDevicePixelRatioChange = () => this._refreshDevicePixelRatio();
17
+ _trackPositionInterval = null;
18
+ _started = false;
19
+ get started() {
20
+ return this._started;
21
+ }
22
+ constructor(props) {
23
+ this.props = props;
24
+ }
25
+ start() {
26
+ if (this._started || !this.props.canvas) {
27
+ return;
28
+ }
29
+ this._started = true;
30
+ this._intersectionObserver ||= new IntersectionObserver(entries => this.props.onIntersection(entries));
31
+ this._resizeObserver ||= new ResizeObserver(entries => this.props.onResize(entries));
32
+ this._intersectionObserver.observe(this.props.canvas);
33
+ try {
34
+ this._resizeObserver.observe(this.props.canvas, { box: 'device-pixel-content-box' });
35
+ }
36
+ catch {
37
+ this._resizeObserver.observe(this.props.canvas, { box: 'content-box' });
38
+ }
39
+ this._observeDevicePixelRatioTimeout = setTimeout(() => this._refreshDevicePixelRatio(), 0);
40
+ if (this.props.trackPosition) {
41
+ this._trackPosition();
42
+ }
43
+ }
44
+ stop() {
45
+ if (!this._started) {
46
+ return;
47
+ }
48
+ this._started = false;
49
+ if (this._observeDevicePixelRatioTimeout) {
50
+ clearTimeout(this._observeDevicePixelRatioTimeout);
51
+ this._observeDevicePixelRatioTimeout = null;
52
+ }
53
+ if (this._observeDevicePixelRatioMediaQuery) {
54
+ this._observeDevicePixelRatioMediaQuery.removeEventListener('change', this._handleDevicePixelRatioChange);
55
+ this._observeDevicePixelRatioMediaQuery = null;
56
+ }
57
+ if (this._trackPositionInterval) {
58
+ clearInterval(this._trackPositionInterval);
59
+ this._trackPositionInterval = null;
60
+ }
61
+ this._resizeObserver?.disconnect();
62
+ this._intersectionObserver?.disconnect();
63
+ }
64
+ _refreshDevicePixelRatio() {
65
+ if (!this._started) {
66
+ return;
67
+ }
68
+ this.props.onDevicePixelRatioChange();
69
+ this._observeDevicePixelRatioMediaQuery?.removeEventListener('change', this._handleDevicePixelRatioChange);
70
+ this._observeDevicePixelRatioMediaQuery = matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);
71
+ this._observeDevicePixelRatioMediaQuery.addEventListener('change', this._handleDevicePixelRatioChange, { once: true });
72
+ }
73
+ _trackPosition(intervalMs = 100) {
74
+ if (this._trackPositionInterval) {
75
+ return;
76
+ }
77
+ this._trackPositionInterval = setInterval(() => {
78
+ if (!this._started) {
79
+ if (this._trackPositionInterval) {
80
+ clearInterval(this._trackPositionInterval);
81
+ this._trackPositionInterval = null;
82
+ }
83
+ }
84
+ else {
85
+ this.props.onPositionChange();
86
+ }
87
+ }, intervalMs);
88
+ }
89
+ }
90
+ //# sourceMappingURL=canvas-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-observer.js","sourceRoot":"","sources":["../../src/adapter/canvas-observer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import type { Device } from "./device.js";
2
+ import { CanvasObserver } from "./canvas-observer.js";
3
+ import type { Framebuffer } from "./resources/framebuffer.js";
4
+ import type { TextureFormatDepthStencil } from "../shadertypes/texture-types/texture-formats.js";
5
+ /** Properties for a CanvasContext */
6
+ export type CanvasContextProps = {
7
+ /** Identifier, for debugging */
8
+ id?: string;
9
+ /** If a canvas not supplied, one will be created and added to the DOM. If a string, a canvas with that id will be looked up in the DOM */
10
+ canvas?: HTMLCanvasElement | OffscreenCanvas | string | null;
11
+ /** If new canvas is created, it will be created in the specified container, otherwise is appended as a child of document.body */
12
+ container?: HTMLElement | string | null;
13
+ /** Width in pixels of the canvas - used when creating a new canvas */
14
+ width?: number;
15
+ /** Height in pixels of the canvas - used when creating a new canvas */
16
+ height?: number;
17
+ /** Visibility (only used if new canvas is created). */
18
+ visible?: boolean;
19
+ /** Whether to size the drawing buffer to the pixel size during auto resize. If a number is provided it is used as a static pixel ratio */
20
+ useDevicePixels?: boolean | number;
21
+ /** Whether to track window resizes. */
22
+ autoResize?: boolean;
23
+ /** @see https://developer.mozilla.org/en-US/docs/Web/API/GPUCanvasContext/configure#alphamode */
24
+ alphaMode?: 'opaque' | 'premultiplied';
25
+ /** @see https://developer.mozilla.org/en-US/docs/Web/API/GPUCanvasContext/configure#colorspace */
26
+ colorSpace?: 'srgb';
27
+ /** Whether to track position changes. Calls this.device.onPositionChange */
28
+ trackPosition?: boolean;
29
+ };
30
+ export type MutableCanvasContextProps = {
31
+ /** Whether to size the drawing buffer to the pixel size during auto resize. If a number is provided it is used as a static pixel ratio */
32
+ useDevicePixels?: boolean | number;
33
+ };
34
+ /**
35
+ * Shared tracked-canvas lifecycle used by both renderable and presentation contexts.
36
+ * - Creates a new canvas or looks up a canvas from the DOM
37
+ * - Provides check for DOM loaded
38
+ * @todo commit() @see https://github.com/w3ctag/design-reviews/issues/288
39
+ * @todo transferControlToOffscreen: @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen
40
+ */
41
+ export declare abstract class CanvasSurface {
42
+ static isHTMLCanvas(canvas: unknown): canvas is HTMLCanvasElement;
43
+ static isOffscreenCanvas(canvas: unknown): canvas is OffscreenCanvas;
44
+ static defaultProps: Required<CanvasContextProps>;
45
+ abstract readonly device: Device;
46
+ abstract readonly handle: unknown;
47
+ readonly id: string;
48
+ readonly props: Required<CanvasContextProps>;
49
+ readonly canvas: HTMLCanvasElement | OffscreenCanvas;
50
+ /** Handle to HTML canvas */
51
+ readonly htmlCanvas?: HTMLCanvasElement;
52
+ /** Handle to wrapped OffScreenCanvas */
53
+ readonly offscreenCanvas?: OffscreenCanvas;
54
+ readonly type: 'html-canvas' | 'offscreen-canvas' | 'node';
55
+ /** Promise that resolved once the resize observer has updated the pixel size */
56
+ initialized: Promise<void>;
57
+ isInitialized: boolean;
58
+ /** Visibility is automatically updated (via an IntersectionObserver) */
59
+ isVisible: boolean;
60
+ /** Width of canvas in CSS units (tracked by a ResizeObserver) */
61
+ cssWidth: number;
62
+ /** Height of canvas in CSS units (tracked by a ResizeObserver) */
63
+ cssHeight: number;
64
+ /** Device pixel ratio. Automatically updated via media queries */
65
+ devicePixelRatio: number;
66
+ /** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
67
+ devicePixelWidth: number;
68
+ /** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
69
+ devicePixelHeight: number;
70
+ /** Width of drawing buffer: automatically tracks this.pixelWidth if props.autoResize is true */
71
+ drawingBufferWidth: number;
72
+ /** Height of drawing buffer: automatically tracks this.pixelHeight if props.autoResize is true */
73
+ drawingBufferHeight: number;
74
+ /** Resolves when the canvas is initialized, i.e. when the ResizeObserver has updated the pixel size */
75
+ protected _initializedResolvers: {
76
+ promise: Promise<void>;
77
+ resolve: (t: void) => void;
78
+ reject: (error: Error) => void;
79
+ };
80
+ protected _canvasObserver: CanvasObserver;
81
+ /** Position of the canvas in the document, updated by a timer */
82
+ protected _position: [number, number];
83
+ /** Whether this canvas context has been destroyed */
84
+ protected destroyed: boolean;
85
+ /** Whether the drawing buffer size needs to be resized (deferred resizing to avoid flicker) */
86
+ protected _needsDrawingBufferResize: boolean;
87
+ abstract get [Symbol.toStringTag](): string;
88
+ toString(): string;
89
+ constructor(props?: CanvasContextProps);
90
+ destroy(): void;
91
+ setProps(props: MutableCanvasContextProps): this;
92
+ /** Returns a framebuffer with properly resized current 'swap chain' textures */
93
+ getCurrentFramebuffer(options?: {
94
+ depthStencilFormat?: TextureFormatDepthStencil | false;
95
+ }): Framebuffer;
96
+ getCSSSize(): [number, number];
97
+ getPosition(): [number, number];
98
+ getDevicePixelSize(): [number, number];
99
+ getDrawingBufferSize(): [number, number];
100
+ getMaxDrawingBufferSize(): [number, number];
101
+ setDrawingBufferSize(width: number, height: number): void;
102
+ getDevicePixelRatio(): number;
103
+ cssToDevicePixels(cssPixel: [number, number], yInvert?: boolean): {
104
+ x: number;
105
+ y: number;
106
+ width: number;
107
+ height: number;
108
+ };
109
+ /** @deprecated - use .getDevicePixelSize() */
110
+ getPixelSize(): [number, number];
111
+ /** @deprecated Use the current drawing buffer size for projection setup. */
112
+ getAspect(): number;
113
+ /** @deprecated Returns multiplier need to convert CSS size to Device size */
114
+ cssToDeviceRatio(): number;
115
+ /** @deprecated Use canvasContext.setDrawingBufferSize() */
116
+ resize(size: {
117
+ width: number;
118
+ height: number;
119
+ }): void;
120
+ protected abstract _configureDevice(): void;
121
+ protected abstract _getCurrentFramebuffer(options?: {
122
+ depthStencilFormat?: TextureFormatDepthStencil | false;
123
+ }): Framebuffer;
124
+ protected _setAutoCreatedCanvasId(id: string): void;
125
+ /**
126
+ * Starts DOM observation after the derived context and its device are fully initialized.
127
+ *
128
+ * `CanvasSurface` construction runs before subclasses can assign `this.device`, and the
129
+ * default WebGL canvas context is created before `WebGLDevice` has initialized `limits`,
130
+ * `features`, and the rest of its runtime state. Deferring observer startup avoids early
131
+ * `ResizeObserver` and DPR callbacks running against a partially initialized device.
132
+ */
133
+ _startObservers(): void;
134
+ /**
135
+ * Stops all DOM observation and timers associated with a canvas surface.
136
+ *
137
+ * This pairs with `_startObservers()` so teardown uses the same lifecycle whether a context is
138
+ * explicitly destroyed, abandoned during device reuse, or temporarily has not started observing
139
+ * yet. Centralizing shutdown here keeps resize/DPR/position watchers from surviving past the
140
+ * lifetime of the owning device.
141
+ */
142
+ _stopObservers(): void;
143
+ protected _handleIntersection(entries: IntersectionObserverEntry[]): void;
144
+ protected _handleResize(entries: ResizeObserverEntry[]): void;
145
+ protected _updateDrawingBufferSize(): void;
146
+ _resizeDrawingBufferIfNeeded(): void;
147
+ _observeDevicePixelRatio(): void;
148
+ updatePosition(): void;
149
+ }
150
+ //# sourceMappingURL=canvas-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-surface.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-surface.ts"],"names":[],"mappings":"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"}