tangram-core 0.2.0__cp313-cp313-win_amd64.whl

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 (171) hide show
  1. tangram_core/App.vue +335 -0
  2. tangram_core/__init__.py +5 -0
  3. tangram_core/__main__.py +141 -0
  4. tangram_core/_core.cp313-win_amd64.pyd +0 -0
  5. tangram_core/_core.pyi +38 -0
  6. tangram_core/api.ts +456 -0
  7. tangram_core/backend.py +335 -0
  8. tangram_core/colour.ts +71 -0
  9. tangram_core/config.py +122 -0
  10. tangram_core/dist-frontend/aggregation-layers.js +521 -0
  11. tangram_core/dist-frontend/aggregation-layers.js.map +1 -0
  12. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js +2 -0
  13. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
  14. tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js +11 -0
  15. tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js.map +1 -0
  16. tangram_core/dist-frontend/assets/assert-hrfsarFU.js +3 -0
  17. tangram_core/dist-frontend/assets/assert-hrfsarFU.js.map +1 -0
  18. tangram_core/dist-frontend/assets/b612-latin-400-italic-DePNXA0a.woff +0 -0
  19. tangram_core/dist-frontend/assets/b612-latin-400-italic-a-4GLPtl.woff2 +0 -0
  20. tangram_core/dist-frontend/assets/b612-latin-400-normal-CC98FVm_.woff2 +0 -0
  21. tangram_core/dist-frontend/assets/b612-latin-400-normal-JbZ7xwUX.woff +0 -0
  22. tangram_core/dist-frontend/assets/b612-latin-700-normal-B_Snq1wd.woff +0 -0
  23. tangram_core/dist-frontend/assets/b612-latin-700-normal-BinQrnoB.woff2 +0 -0
  24. tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js +26 -0
  25. tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js.map +1 -0
  26. tangram_core/dist-frontend/assets/color-CUNNsFV-.js +17 -0
  27. tangram_core/dist-frontend/assets/color-CUNNsFV-.js.map +1 -0
  28. tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js +2 -0
  29. tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js.map +1 -0
  30. tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js +2 -0
  31. tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js.map +1 -0
  32. tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js +2 -0
  33. tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js.map +1 -0
  34. tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js +1010 -0
  35. tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js.map +1 -0
  36. tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js +94 -0
  37. tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js.map +1 -0
  38. tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js +2 -0
  39. tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js.map +1 -0
  40. tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js +2 -0
  41. tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js.map +1 -0
  42. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2 +0 -0
  43. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-HYADljCo.woff +0 -0
  44. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2 +0 -0
  45. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff +0 -0
  46. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2 +0 -0
  47. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff +0 -0
  48. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2 +0 -0
  49. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff +0 -0
  50. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff +0 -0
  51. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2 +0 -0
  52. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff +0 -0
  53. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2 +0 -0
  54. tangram_core/dist-frontend/assets/index-UPPakSLR.css +1 -0
  55. tangram_core/dist-frontend/assets/index-r8T0kY2p.js +821 -0
  56. tangram_core/dist-frontend/assets/index-r8T0kY2p.js.map +1 -0
  57. tangram_core/dist-frontend/assets/layer-DO63TrsS.js +555 -0
  58. tangram_core/dist-frontend/assets/layer-DO63TrsS.js.map +1 -0
  59. tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js +2 -0
  60. tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js.map +1 -0
  61. tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js +1123 -0
  62. tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js.map +1 -0
  63. tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js +2 -0
  64. tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js.map +1 -0
  65. tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js +2 -0
  66. tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js.map +1 -0
  67. tangram_core/dist-frontend/assets/project-CrvReKGW.js +760 -0
  68. tangram_core/dist-frontend/assets/project-CrvReKGW.js.map +1 -0
  69. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-4qS3_zkX.woff2 +0 -0
  70. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-CDK-EZBY.woff +0 -0
  71. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-Bgns473E.woff +0 -0
  72. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-_T2aQlWs.woff2 +0 -0
  73. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-CvEVpWxD.woff +0 -0
  74. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-s4PklZE0.woff2 +0 -0
  75. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-9RN-Z7cI.woff2 +0 -0
  76. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-BGMkBBYx.woff +0 -0
  77. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-C7erd-g8.woff +0 -0
  78. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-DR5R5TWx.woff2 +0 -0
  79. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-DGo1Ayjq.woff2 +0 -0
  80. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-WtM1l1qc.woff +0 -0
  81. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-C8FNIdXm.woff2 +0 -0
  82. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-TLDmfi3Q.woff +0 -0
  83. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CTXjXnze.woff2 +0 -0
  84. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CWPRiRXS.woff +0 -0
  85. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-CR6qj4Z4.woff2 +0 -0
  86. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-DHRaIs10.woff +0 -0
  87. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-D5vBSIyg.woff2 +0 -0
  88. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-FabMgVmk.woff +0 -0
  89. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-BIN62cw9.woff +0 -0
  90. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-Hsn-wDIp.woff2 +0 -0
  91. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-89Up2Xly.woff +0 -0
  92. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-DWMOA2VK.woff2 +0 -0
  93. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-D_BR-3LG.woff2 +0 -0
  94. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-om57GXsO.woff +0 -0
  95. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-BICmKrXV.woff2 +0 -0
  96. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-D2e7XwB1.woff +0 -0
  97. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-3p2daRJW.woff2 +0 -0
  98. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-Dc9bsamC.woff +0 -0
  99. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-BOl6B_hI.woff +0 -0
  100. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-DRbp0YnP.woff2 +0 -0
  101. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-BXrkWnoY.woff +0 -0
  102. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-Bhem1d5z.woff2 +0 -0
  103. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-DT8nEsYA.woff +0 -0
  104. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-OHaX69iP.woff2 +0 -0
  105. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-CcSTXKtO.woff2 +0 -0
  106. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-JgPl2bDS.woff +0 -0
  107. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-B004qtqu.woff2 +0 -0
  108. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-O6H_RRvN.woff +0 -0
  109. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-BwUYFJ2t.woff2 +0 -0
  110. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-DV8QogUk.woff +0 -0
  111. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-0o1laQ-g.woff2 +0 -0
  112. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-CPsdS8_S.woff +0 -0
  113. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-G9shSJ2z.woff +0 -0
  114. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-TFWhjk13.woff2 +0 -0
  115. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-BtNeb9D6.woff +0 -0
  116. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-D35V1G0s.woff2 +0 -0
  117. tangram_core/dist-frontend/assets/shader-BJmsOfPx.js +843 -0
  118. tangram_core/dist-frontend/assets/shader-BJmsOfPx.js.map +1 -0
  119. tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js +392 -0
  120. tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js.map +1 -0
  121. tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js +2 -0
  122. tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js.map +1 -0
  123. tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js +7 -0
  124. tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js.map +1 -0
  125. tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js +3 -0
  126. tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js.map +1 -0
  127. tangram_core/dist-frontend/assets/widget-BbOeHGj0.js +2 -0
  128. tangram_core/dist-frontend/assets/widget-BbOeHGj0.js.map +1 -0
  129. tangram_core/dist-frontend/core.js +60 -0
  130. tangram_core/dist-frontend/core.js.map +1 -0
  131. tangram_core/dist-frontend/extensions.js +609 -0
  132. tangram_core/dist-frontend/extensions.js.map +1 -0
  133. tangram_core/dist-frontend/favicon.ico +0 -0
  134. tangram_core/dist-frontend/favicon.png +0 -0
  135. tangram_core/dist-frontend/font-awesome.min.css +4 -0
  136. tangram_core/dist-frontend/fonts/FontAwesome.otf +0 -0
  137. tangram_core/dist-frontend/fonts/fontawesome-webfont.eot +0 -0
  138. tangram_core/dist-frontend/fonts/fontawesome-webfont.svg +2671 -0
  139. tangram_core/dist-frontend/fonts/fontawesome-webfont.ttf +0 -0
  140. tangram_core/dist-frontend/fonts/fontawesome-webfont.woff +0 -0
  141. tangram_core/dist-frontend/fonts/fontawesome-webfont.woff2 +0 -0
  142. tangram_core/dist-frontend/geo-layers.js +115 -0
  143. tangram_core/dist-frontend/geo-layers.js.map +1 -0
  144. tangram_core/dist-frontend/index.html +38 -0
  145. tangram_core/dist-frontend/json.js +3 -0
  146. tangram_core/dist-frontend/json.js.map +1 -0
  147. tangram_core/dist-frontend/layers.js +268 -0
  148. tangram_core/dist-frontend/layers.js.map +1 -0
  149. tangram_core/dist-frontend/lit-html.js +7 -0
  150. tangram_core/dist-frontend/lit-html.js.map +1 -0
  151. tangram_core/dist-frontend/mapbox.js +2 -0
  152. tangram_core/dist-frontend/mapbox.js.map +1 -0
  153. tangram_core/dist-frontend/maplibre-gl.js +59 -0
  154. tangram_core/dist-frontend/maplibre-gl.js.map +1 -0
  155. tangram_core/dist-frontend/mesh-layers.js +2 -0
  156. tangram_core/dist-frontend/mesh-layers.js.map +1 -0
  157. tangram_core/dist-frontend/rs1090_wasm.js +813 -0
  158. tangram_core/dist-frontend/rs1090_wasm_bg.wasm +0 -0
  159. tangram_core/dist-frontend/vue.esm-browser.prod.js +13 -0
  160. tangram_core/dist-frontend/widgets.js +3 -0
  161. tangram_core/dist-frontend/widgets.js.map +1 -0
  162. tangram_core/main.ts +16 -0
  163. tangram_core/plugin.py +70 -0
  164. tangram_core/plugin.ts +41 -0
  165. tangram_core/redis.py +89 -0
  166. tangram_core/user.css +114 -0
  167. tangram_core/vite-plugin-tangram.mjs +88 -0
  168. tangram_core-0.2.0.dist-info/METADATA +37 -0
  169. tangram_core-0.2.0.dist-info/RECORD +171 -0
  170. tangram_core-0.2.0.dist-info/WHEEL +4 -0
  171. tangram_core-0.2.0.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,2 @@
1
+ function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{e as g};
2
+ //# sourceMappingURL=_commonjsHelpers-CqkleIqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-CqkleIqs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import{R as u,A as l,E as v,F as h,G as w}from"./deep-equal-uriyKJca.js";class m extends u{static defaultProps={...u.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"none",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1};get[Symbol.toStringTag](){return"Sampler"}constructor(e,t){t=m.normalizeProps(e,t),super(e,t,m.defaultProps)}static normalizeProps(e,t){return t}}const E={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"};class c extends u{static SAMPLE=4;static STORAGE=8;static RENDER=16;static COPY_SRC=1;static COPY_DST=2;static TEXTURE=4;static RENDER_ATTACHMENT=16;dimension;baseDimension;format;width;height;depth;mipLevels;updateTimestamp;get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}constructor(e,t){if(t=c.normalizeProps(e,t),super(e,t,c.defaultProps),this.dimension=this.props.dimension,this.baseDimension=E[this.dimension],this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.mipLevels=this.props.mipLevels,this.props.width===void 0||this.props.height===void 0)if(e.isExternalImage(t.data)){const n=e.getExternalImageSize(t.data);this.width=n?.width||1,this.height=n?.height||1}else this.width=1,this.height=1,(this.props.width===void 0||this.props.height===void 0)&&l.warn(`${this} created with undefined width or height. This is deprecated. Use AsyncTexture instead.`)();this.updateTimestamp=e.incrementTimestamp()}setSampler(e){this.sampler=e instanceof m?e:this.device.createSampler(e)}clone(e){return this.device.createTexture({...this.props,...e})}static normalizeProps(e,t){const n={...t},{width:r,height:s}=n;return typeof r=="number"&&(n.width=Math.max(1,Math.ceil(r))),typeof s=="number"&&(n.height=Math.max(1,Math.ceil(s))),n}_initializeData(e){this.device.isExternalImage(e)?this.copyExternalImage({image:e,width:this.width,height:this.height,depth:this.depth,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}):e&&this.copyImageData({data:e,mipLevel:0,x:0,y:0,z:0,aspect:"all"})}_normalizeCopyImageDataOptions(e){const{width:t,height:n,depth:r}=this,s={...c.defaultCopyDataOptions,width:t,height:n,depth:r,...e},a=this.device.getTextureFormatInfo(this.format);if(!e.bytesPerRow&&!a.bytesPerPixel)throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);return s.bytesPerRow=e.bytesPerRow||t*(a.bytesPerPixel||4),s.rowsPerImage=e.rowsPerImage||n,s}_normalizeCopyExternalImageOptions(e){const t=this.device.getExternalImageSize(e.image),n={...c.defaultCopyExternalImageOptions,...t,...e};return n.width=Math.min(n.width,this.width-n.x),n.height=Math.min(n.height,this.height-n.y),n}static defaultProps={...u.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:c.TEXTURE|c.RENDER_ATTACHMENT|c.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0};static defaultCopyDataOptions={data:void 0,byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,mipLevel:0,x:0,y:0,z:0,aspect:"all"};static defaultCopyExternalImageOptions={image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}}class y extends u{get[Symbol.toStringTag](){return"TextureView"}constructor(e,t){super(e,t,y.defaultProps)}static defaultProps={...u.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0}}function P(o,e,t){let n="";const r=e.split(/\r?\n/),s=o.slice().sort((a,i)=>a.lineNum-i.lineNum);switch(t?.showSourceCode||"no"){case"all":let a=0;for(let i=1;i<=r.length;i++)for(n+=g(r[i-1],i,t);s.length>a&&s[a].lineNum===i;){const f=s[a++];n+=d(f,r,f.lineNum,{...t,inlineSource:!1})}for(;s.length>a;){const i=s[a++];n+=d(i,[],0,{...t,inlineSource:!1})}return n;case"issues":case"no":for(const i of o)n+=d(i,r,i.lineNum,{inlineSource:t?.showSourceCode!=="no"});return n}}function d(o,e,t,n){if(n?.inlineSource){const s=L(e,t),a=o.linePos>0?`${" ".repeat(o.linePos+5)}^^^
2
+ `:"";return`
3
+ ${s}${a}${o.type.toUpperCase()}: ${o.message}
4
+
5
+ `}const r=o.type==="error"?"red":"#8B4000";return n?.html?`<div class='luma-compiler-log-error' style="color:${r};"><b> ${o.type.toUpperCase()}: ${o.message}</b></div>`:`${o.type.toUpperCase()}: ${o.message}`}function L(o,e,t){let n="";for(let r=e-2;r<=e;r++){const s=o[r-1];s!==void 0&&(n+=g(s,e,t))}return n}function g(o,e,t){const n=t?.html?A(o):o;return`${I(String(e),4)}: ${n}${t?.html?"<br/>":`
6
+ `}`}function I(o,e){let t="";for(let n=o.length;n<e;++n)t+=" ";return t+o}function A(o){return o.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}class b extends u{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,t){t={...t,debugShaders:t.debugShaders||e.props.debugShaders||"errors"},super(e,{id:T(t),...t},b.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){const e=this.props.debugShaders;switch(e){case"never":return;case"errors":if(this.compilationStatus==="success")return;break}const t=await this.getCompilationInfo();e==="warnings"&&t?.length===0||this._displayShaderLog(t,this.id)}_displayShaderLog(e,t){if(typeof document>"u"||!document?.createElement)return;const n=t,r=`${this.stage} shader "${n}"`;let s=P(e,this.source,{showSourceCode:"all",html:!0});const a=this.getTranslatedSource();a&&(s+=`<br /><br /><h1>Translated Source</h1><br /><br /><code style="user-select:text;"><pre>${a}</pre></code>`);const i=document.createElement("Button");i.innerHTML=`
7
+ <h1>Compilation error in ${r}</h1><br /><br />
8
+ <code style="user-select:text;"><pre>
9
+ ${s}
10
+ </pre></code>`,i.style.top="10px",i.style.left="10px",i.style.position="absolute",i.style.zIndex="9999",i.style.width="100%",i.style.textAlign="left",document.body.appendChild(i),document.getElementsByClassName("luma-compiler-log-error")[0]?.scrollIntoView(),i.onclick=()=>{const S=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(S)}}static defaultProps={...u.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0}}function T(o){return M(o.source)||o.id||v(`unnamed ${o.stage}-shader`)}function M(o,e="unnamed"){const n=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(o);return n?n[1]:e}class x extends u{get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";constructor(e,t){super(e,t,x.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[]}static defaultProps={...u.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",colorAttachmentFormats:void 0,depthStencilAttachmentFormat:void 0,parameters:{},bindings:{},uniforms:{}}}function _(o){return $[o]}function C(o){const[e,t]=R[o],n=e==="i32"||e==="u32",r=e!=="u32",s=N[e]*t;return{primitiveType:e,components:t,byteLength:s,integer:n,signed:r}}const N={f32:4,f16:2,i32:4,u32:4},R={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},$={f32:{type:"f32",components:1},f16:{type:"f16",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<f16>":{type:"f16",components:2},"vec3<f16>":{type:"f16",components:3},"vec4<f16>":{type:"f16",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16},"mat2x2<f16>":{type:"f16",components:4},"mat2x3<f16>":{type:"f16",components:6},"mat2x4<f16>":{type:"f16",components:8},"mat3x2<f16>":{type:"f16",components:6},"mat3x3<f16>":{type:"f16",components:9},"mat3x4<f16>":{type:"f16",components:12},"mat4x2<f16>":{type:"f16",components:8},"mat4x3<f16>":{type:"f16",components:12},"mat4x4<f16>":{type:"f16",components:16},"mat2x2<i32>":{type:"i32",components:4},"mat2x3<i32>":{type:"i32",components:6},"mat2x4<i32>":{type:"i32",components:8},"mat3x2<i32>":{type:"i32",components:6},"mat3x3<i32>":{type:"i32",components:9},"mat3x4<i32>":{type:"i32",components:12},"mat4x2<i32>":{type:"i32",components:8},"mat4x3<i32>":{type:"i32",components:12},"mat4x4<i32>":{type:"i32",components:16},"mat2x2<u32>":{type:"u32",components:4},"mat2x3<u32>":{type:"u32",components:6},"mat2x4<u32>":{type:"u32",components:8},"mat3x2<u32>":{type:"u32",components:6},"mat3x3<u32>":{type:"u32",components:9},"mat3x4<u32>":{type:"u32",components:12},"mat4x2<u32>":{type:"u32",components:8},"mat4x3<u32>":{type:"u32",components:12},"mat4x4<u32>":{type:"u32",components:16}};function F(o,e){const t={};for(const n of o.attributes){const r=O(o,e,n.name);r&&(t[n.name]=r)}return t}function X(o,e,t=16){const n=F(o,e),r=new Array(t).fill(null);for(const s of Object.values(n))r[s.location]=s;return r}function O(o,e,t){const n=z(o,t),r=D(e,t);if(!n)return null;const s=C(n.type),a=w(s),i=r?.vertexFormat||a,f=h(i);return{attributeName:r?.attributeName||n.name,bufferName:r?.bufferName||n.name,location:n.location,shaderType:n.type,primitiveType:s.primitiveType,shaderComponents:s.components,vertexFormat:i,bufferDataType:f.type,bufferComponents:f.components,normalized:f.normalized,integer:s.integer,stepMode:r?.stepMode||n.stepMode||"vertex",byteOffset:r?.byteOffset||0,byteStride:r?.byteStride||0}}function z(o,e){const t=o.attributes.find(n=>n.name===e);return t||l.warn(`shader layout attribute "${e}" not present in shader`),t||null}function D(o,e){B(o);let t=U(o,e);return t||(t=Y(o,e),t)?t:(l.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function B(o){for(const e of o)(e.attributes&&e.format||!e.attributes&&!e.format)&&l.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function U(o,e){for(const t of o)if(t.format&&t.name===e)return{attributeName:t.name,bufferName:e,stepMode:t.stepMode,vertexFormat:t.format,byteOffset:0,byteStride:t.byteStride||0};return null}function Y(o,e){for(const t of o){let n=t.byteStride;if(typeof t.byteStride!="number")for(const s of t.attributes||[]){const a=h(s.format);n+=a.byteLength}const r=t.attributes?.find(s=>s.attribute===e);if(r)return{attributeName:r.attribute,bufferName:t.name,stepMode:t.stepMode,vertexFormat:r.format,byteOffset:r.byteOffset,byteStride:n}}return null}let p;function H(o){return(!p||p.byteLength<o)&&(p=new ArrayBuffer(o)),p}function k(o,e){const t=H(o.BYTES_PER_ELEMENT*e);return new o(t,0,e)}export{x as R,b as S,c as T,H as a,m as b,y as c,F as d,X as e,k as f,_ as g};
11
+ //# sourceMappingURL=array-utils-flat-wyE8tIYR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils-flat-wyE8tIYR.js","sources":["../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/sampler.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/texture.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/texture-view.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter-utils/format-compiler-log.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/shader.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/render-pipeline.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/data-types/decode-shader-types.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter-utils/get-attribute-from-layouts.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/array-utils-flat.js"],"sourcesContent":["// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/** Immutable Sampler object */\nexport class Sampler extends Resource {\n static defaultProps = {\n ...Resource.defaultProps,\n type: 'color-sampler',\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n addressModeW: 'clamp-to-edge',\n magFilter: 'nearest',\n minFilter: 'nearest',\n mipmapFilter: 'none',\n lodMinClamp: 0,\n lodMaxClamp: 32, // Per WebGPU spec\n compare: 'less-equal',\n maxAnisotropy: 1\n };\n get [Symbol.toStringTag]() {\n return 'Sampler';\n }\n constructor(device, props) {\n props = Sampler.normalizeProps(device, props);\n super(device, props, Sampler.defaultProps);\n }\n static normalizeProps(device, props) {\n return props;\n }\n}\n//# sourceMappingURL=sampler.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\nimport { Sampler } from \"./sampler.js\";\nimport { log } from \"../../utils/log.js\";\nconst BASE_DIMENSIONS = {\n '1d': '1d',\n '2d': '2d',\n '2d-array': '2d',\n cube: '2d',\n 'cube-array': '2d',\n '3d': '3d'\n};\n/**\n * Abstract Texture interface\n * Texture Object\n * https://gpuweb.github.io/gpuweb/#gputexture\n */\nexport class Texture extends Resource {\n /** The texture can be bound for use as a sampled texture in a shader */\n static SAMPLE = 0x04;\n /** The texture can be bound for use as a storage texture in a shader */\n static STORAGE = 0x08;\n /** The texture can be used as a color or depth/stencil attachment in a render pass */\n static RENDER = 0x10;\n /** The texture can be used as the source of a copy operation */\n static COPY_SRC = 0x01;\n /** he texture can be used as the destination of a copy or write operation */\n static COPY_DST = 0x02;\n /** @deprecated Use Texture.SAMPLE */\n static TEXTURE = 0x04;\n /** @deprecated Use Texture.RENDER */\n static RENDER_ATTACHMENT = 0x10;\n /** dimension of this texture */\n dimension;\n /** base dimension of this texture */\n baseDimension;\n /** format of this texture */\n format;\n /** width in pixels of this texture */\n width;\n /** height in pixels of this texture */\n height;\n /** depth of this texture */\n depth;\n /** mip levels in this texture */\n mipLevels;\n /** \"Time\" of last update. Monotonically increasing timestamp. TODO move to AsyncTexture? */\n updateTimestamp;\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n toString() {\n return `Texture(${this.id},${this.format},${this.width}x${this.height})`;\n }\n /** Do not use directly. Create with device.createTexture() */\n constructor(device, props) {\n props = Texture.normalizeProps(device, props);\n super(device, props, Texture.defaultProps);\n this.dimension = this.props.dimension;\n this.baseDimension = BASE_DIMENSIONS[this.dimension];\n this.format = this.props.format;\n // Size\n this.width = this.props.width;\n this.height = this.props.height;\n this.depth = this.props.depth;\n this.mipLevels = this.props.mipLevels;\n // Calculate size, if not provided\n if (this.props.width === undefined || this.props.height === undefined) {\n if (device.isExternalImage(props.data)) {\n const size = device.getExternalImageSize(props.data);\n this.width = size?.width || 1;\n this.height = size?.height || 1;\n }\n else {\n this.width = 1;\n this.height = 1;\n if (this.props.width === undefined || this.props.height === undefined) {\n log.warn(`${this} created with undefined width or height. This is deprecated. Use AsyncTexture instead.`)();\n }\n }\n }\n // TODO - perhaps this should be set on async write completion?\n this.updateTimestamp = device.incrementTimestamp();\n }\n /** Set sampler props associated with this texture */\n setSampler(sampler) {\n this.sampler = sampler instanceof Sampler ? sampler : this.device.createSampler(sampler);\n }\n /**\n * Create a new texture with the same parameters and optionally a different size\n * @note Textures are immutable and cannot be resized after creation, but we can create a similar texture with the same parameters but a new size.\n * @note Does not copy contents of the texture\n */\n clone(size) {\n return this.device.createTexture({ ...this.props, ...size });\n }\n /** Ensure we have integer coordinates */\n static normalizeProps(device, props) {\n const newProps = { ...props };\n // Ensure we have integer coordinates\n const { width, height } = newProps;\n if (typeof width === 'number') {\n newProps.width = Math.max(1, Math.ceil(width));\n }\n if (typeof height === 'number') {\n newProps.height = Math.max(1, Math.ceil(height));\n }\n return newProps;\n }\n // HELPERS\n /** Initialize texture with supplied props */\n // eslint-disable-next-line max-statements\n _initializeData(data) {\n // Store opts for accessors\n if (this.device.isExternalImage(data)) {\n this.copyExternalImage({\n image: data,\n width: this.width,\n height: this.height,\n depth: this.depth,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all',\n colorSpace: 'srgb',\n premultipliedAlpha: false,\n flipY: false\n });\n }\n else if (data) {\n this.copyImageData({\n data,\n // width: this.width,\n // height: this.height,\n // depth: this.depth,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all'\n });\n }\n }\n _normalizeCopyImageDataOptions(options_) {\n const { width, height, depth } = this;\n const options = { ...Texture.defaultCopyDataOptions, width, height, depth, ...options_ };\n const info = this.device.getTextureFormatInfo(this.format);\n if (!options_.bytesPerRow && !info.bytesPerPixel) {\n throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);\n }\n options.bytesPerRow = options_.bytesPerRow || width * (info.bytesPerPixel || 4);\n options.rowsPerImage = options_.rowsPerImage || height;\n // WebGL will error if we try to copy outside the bounds of the texture\n // options.width = Math.min(options.width, this.width - options.x);\n // options.height = Math.min(options.height, this.height - options.y);\n return options;\n }\n _normalizeCopyExternalImageOptions(options_) {\n const size = this.device.getExternalImageSize(options_.image);\n const options = { ...Texture.defaultCopyExternalImageOptions, ...size, ...options_ };\n // WebGL will error if we try to copy outside the bounds of the texture\n options.width = Math.min(options.width, this.width - options.x);\n options.height = Math.min(options.height, this.height - options.y);\n return options;\n }\n /** Default options */\n static defaultProps = {\n ...Resource.defaultProps,\n data: null,\n dimension: '2d',\n format: 'rgba8unorm',\n usage: Texture.TEXTURE | Texture.RENDER_ATTACHMENT | Texture.COPY_DST,\n width: undefined,\n height: undefined,\n depth: 1,\n mipLevels: 1,\n samples: undefined,\n sampler: {},\n view: undefined\n };\n static defaultCopyDataOptions = {\n data: undefined,\n byteOffset: 0,\n bytesPerRow: undefined,\n rowsPerImage: undefined,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all'\n };\n /** Default options */\n static defaultCopyExternalImageOptions = {\n image: undefined,\n sourceX: 0,\n sourceY: 0,\n width: undefined,\n height: undefined,\n depth: 1,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all',\n colorSpace: 'srgb',\n premultipliedAlpha: false,\n flipY: false\n };\n}\n//# sourceMappingURL=texture.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/** Immutable TextureView object */\nexport class TextureView extends Resource {\n get [Symbol.toStringTag]() {\n return 'TextureView';\n }\n /** Should not be constructed directly. Use `texture.createView(props)` */\n constructor(device, props) {\n super(device, props, TextureView.defaultProps);\n }\n static defaultProps = {\n ...Resource.defaultProps,\n format: undefined,\n dimension: undefined,\n aspect: 'all',\n baseMipLevel: 0,\n mipLevelCount: undefined,\n baseArrayLayer: 0,\n arrayLayerCount: undefined\n };\n}\n//# sourceMappingURL=texture-view.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** @returns annotated errors or warnings */\nexport function formatCompilerLog(shaderLog, source, options) {\n let formattedLog = '';\n const lines = source.split(/\\r?\\n/);\n const log = shaderLog.slice().sort((a, b) => a.lineNum - b.lineNum);\n switch (options?.showSourceCode || 'no') {\n case 'all':\n // Parse the error - note: browser and driver dependent\n let currentMessage = 0;\n for (let lineNum = 1; lineNum <= lines.length; lineNum++) {\n formattedLog += getNumberedLine(lines[lineNum - 1], lineNum, options);\n while (log.length > currentMessage && log[currentMessage].lineNum === lineNum) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n ...options,\n inlineSource: false\n });\n }\n }\n // Print any remaining messages\n while (log.length > currentMessage) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, [], 0, {\n ...options,\n inlineSource: false\n });\n }\n return formattedLog;\n case 'issues':\n case 'no':\n // Parse the error - note: browser and driver dependent\n for (const message of shaderLog) {\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n inlineSource: options?.showSourceCode !== 'no'\n });\n }\n return formattedLog;\n }\n}\n// Helpers\n/** Format one message */\nfunction formatCompilerMessage(message, lines, lineNum, options) {\n if (options?.inlineSource) {\n const numberedLines = getNumberedLines(lines, lineNum);\n // If we got error position on line add a `^^^` indicator on next line\n const positionIndicator = message.linePos > 0 ? `${' '.repeat(message.linePos + 5)}^^^\\n` : '';\n return `\n${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.message}\n\n`;\n }\n const color = message.type === 'error' ? 'red' : '#8B4000'; // dark orange\n return options?.html\n ? `<div class='luma-compiler-log-error' style=\"color:${color};\"><b> ${message.type.toUpperCase()}: ${message.message}</b></div>`\n : `${message.type.toUpperCase()}: ${message.message}`;\n}\nfunction getNumberedLines(lines, lineNum, options) {\n let numberedLines = '';\n for (let lineIndex = lineNum - 2; lineIndex <= lineNum; lineIndex++) {\n const sourceLine = lines[lineIndex - 1];\n if (sourceLine !== undefined) {\n numberedLines += getNumberedLine(sourceLine, lineNum, options);\n }\n }\n return numberedLines;\n}\nfunction getNumberedLine(line, lineNum, options) {\n const escapedLine = options?.html ? escapeHTML(line) : line;\n return `${padLeft(String(lineNum), 4)}: ${escapedLine}${options?.html ? '<br/>' : '\\n'}`;\n}\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, paddedLength) {\n let result = '';\n for (let i = string.length; i < paddedLength; ++i) {\n result += ' ';\n }\n return result + string;\n}\nfunction escapeHTML(unsafe) {\n return unsafe\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n}\n//# sourceMappingURL=format-compiler-log.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n// import { log } from '../../utils/log';\nimport { uid } from \"../../utils/uid.js\";\nimport { formatCompilerLog } from \"../../adapter-utils/format-compiler-log.js\";\n/**\n * Immutable Shader object\n * In WebGPU the handle can be copied between threads\n */\nexport class Shader extends Resource {\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n /** The stage of this shader */\n stage;\n /** The source code of this shader */\n source;\n /** The compilation status of the shader. 'pending' if compilation is asynchronous, and on production */\n compilationStatus = 'pending';\n /** Create a new Shader instance */\n constructor(device, props) {\n props = { ...props, debugShaders: props.debugShaders || device.props.debugShaders || 'errors' };\n super(device, { id: getShaderIdFromProps(props), ...props }, Shader.defaultProps);\n this.stage = this.props.stage;\n this.source = this.props.source;\n }\n /** Get compiler log synchronously (WebGL only) */\n getCompilationInfoSync() {\n return null;\n }\n /** Get translated shader source in host platform's native language (HLSL, GLSL, and even GLSL ES), if available */\n getTranslatedSource() {\n return null;\n }\n // PORTABLE HELPERS\n /** In browser logging of errors */\n async debugShader() {\n const trigger = this.props.debugShaders;\n switch (trigger) {\n case 'never':\n return;\n case 'errors':\n // On WebGL - Don't extract the log unless errors\n if (this.compilationStatus === 'success') {\n return;\n }\n break;\n case 'warnings':\n case 'always':\n break;\n }\n const messages = await this.getCompilationInfo();\n if (trigger === 'warnings' && messages?.length === 0) {\n return;\n }\n this._displayShaderLog(messages, this.id);\n }\n // PRIVATE\n /**\n * In-browser UI logging of errors\n * TODO - this HTML formatting code should not be in Device, should be pluggable\n */\n _displayShaderLog(messages, shaderId) {\n // Return if under Node.js / incomplete `document` polyfills\n if (typeof document === 'undefined' || !document?.createElement) {\n return;\n }\n const shaderName = shaderId; // getShaderName(this.source) || ;\n const shaderTitle = `${this.stage} shader \"${shaderName}\"`;\n let htmlLog = formatCompilerLog(messages, this.source, { showSourceCode: 'all', html: true });\n // Show translated source if available\n const translatedSource = this.getTranslatedSource();\n if (translatedSource) {\n htmlLog += `<br /><br /><h1>Translated Source</h1><br /><br /><code style=\"user-select:text;\"><pre>${translatedSource}</pre></code>`;\n }\n // Make it clickable so we can copy to clipboard\n const button = document.createElement('Button');\n button.innerHTML = `\n<h1>Compilation error in ${shaderTitle}</h1><br /><br />\n<code style=\"user-select:text;\"><pre>\n${htmlLog}\n</pre></code>`;\n button.style.top = '10px';\n button.style.left = '10px';\n button.style.position = 'absolute';\n button.style.zIndex = '9999';\n button.style.width = '100%';\n button.style.textAlign = 'left';\n document.body.appendChild(button);\n const errors = document.getElementsByClassName('luma-compiler-log-error');\n errors[0]?.scrollIntoView();\n // TODO - add a small embedded copy button (instead of main button)\n button.onclick = () => {\n // const source = this.source.replaceAll('\\n', '<br />');\n const dataURI = `data:text/plain,${encodeURIComponent(this.source)}`;\n navigator.clipboard.writeText(dataURI);\n };\n // TODO - add a small embedded close button\n }\n static defaultProps = {\n ...Resource.defaultProps,\n language: 'auto',\n stage: undefined,\n source: '',\n sourceMap: null,\n entryPoint: 'main',\n debugShaders: undefined\n };\n}\n// HELPERS\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props) {\n return getShaderName(props.source) || props.id || uid(`unnamed ${props.stage}-shader`);\n}\n/** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */\nfunction getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = SHADER_NAME_REGEXP.exec(shader);\n return match ? match[1] : defaultName;\n}\n//# sourceMappingURL=shader.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/**\n * A compiled and linked shader program\n */\nexport class RenderPipeline extends Resource {\n get [Symbol.toStringTag]() {\n return 'RenderPipeline';\n }\n /** The merged layout */\n shaderLayout;\n /** Buffer map describing buffer interleaving etc */\n bufferLayout;\n /** The linking status of the pipeline. 'pending' if linking is asynchronous, and on production */\n linkStatus = 'pending';\n /** The hash of the pipeline */\n hash = '';\n constructor(device, props) {\n super(device, props, RenderPipeline.defaultProps);\n this.shaderLayout = this.props.shaderLayout;\n this.bufferLayout = this.props.bufferLayout || [];\n }\n static defaultProps = {\n ...Resource.defaultProps,\n vs: null,\n vertexEntryPoint: 'vertexMain',\n vsConstants: {},\n fs: null,\n fragmentEntryPoint: 'fragmentMain',\n fsConstants: {},\n shaderLayout: null,\n bufferLayout: [],\n topology: 'triangle-list',\n colorAttachmentFormats: undefined,\n depthStencilAttachmentFormat: undefined,\n parameters: {},\n bindings: {},\n uniforms: {}\n };\n}\n//# sourceMappingURL=render-pipeline.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Split a uniform type string into type and components */\nexport function getVariableShaderTypeInfo(format) {\n const decoded = UNIFORM_FORMATS[format];\n return decoded;\n}\n/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */\nexport function getAttributeShaderTypeInfo(attributeType) {\n const [primitiveType, components] = TYPE_INFO[attributeType];\n const integer = primitiveType === 'i32' || primitiveType === 'u32';\n const signed = primitiveType !== 'u32';\n const byteLength = PRIMITIVE_TYPE_SIZES[primitiveType] * components;\n return {\n primitiveType,\n components,\n byteLength,\n integer,\n signed\n };\n}\nexport function makeShaderAttributeType(primitiveType, components) {\n return components === 1 ? primitiveType : `vec${components}<${primitiveType}>`;\n}\nexport function resolveAttributeShaderTypeAlias(alias) {\n return WGSL_ATTRIBUTE_TYPE_ALIAS_MAP[alias] || alias;\n}\nexport function resolveVariableShaderTypeAlias(alias) {\n return WGSL_VARIABLE_TYPE_ALIAS_MAP[alias] || alias;\n}\n// TABLES\nconst PRIMITIVE_TYPE_SIZES = {\n f32: 4,\n f16: 2,\n i32: 4,\n u32: 4\n // 'bool-webgl': 4,\n};\n/** All valid shader attribute types. A table guarantees exhaustive list and fast execution */\nconst TYPE_INFO = {\n f32: ['f32', 1],\n 'vec2<f32>': ['f32', 2],\n 'vec3<f32>': ['f32', 3],\n 'vec4<f32>': ['f32', 4],\n f16: ['f16', 1],\n 'vec2<f16>': ['f16', 2],\n 'vec3<f16>': ['f16', 3],\n 'vec4<f16>': ['f16', 4],\n i32: ['i32', 1],\n 'vec2<i32>': ['i32', 2],\n 'vec3<i32>': ['i32', 3],\n 'vec4<i32>': ['i32', 4],\n u32: ['u32', 1],\n 'vec2<u32>': ['u32', 2],\n 'vec3<u32>': ['u32', 3],\n 'vec4<u32>': ['u32', 4]\n};\n/** @todo These tables are quite big, consider parsing type strings instead */\nconst UNIFORM_FORMATS = {\n f32: { type: 'f32', components: 1 },\n f16: { type: 'f16', components: 1 },\n i32: { type: 'i32', components: 1 },\n u32: { type: 'u32', components: 1 },\n // 'bool-webgl': {type: 'bool-webgl', components: 1},\n 'vec2<f32>': { type: 'f32', components: 2 },\n 'vec3<f32>': { type: 'f32', components: 3 },\n 'vec4<f32>': { type: 'f32', components: 4 },\n 'vec2<f16>': { type: 'f16', components: 2 },\n 'vec3<f16>': { type: 'f16', components: 3 },\n 'vec4<f16>': { type: 'f16', components: 4 },\n 'vec2<i32>': { type: 'i32', components: 2 },\n 'vec3<i32>': { type: 'i32', components: 3 },\n 'vec4<i32>': { type: 'i32', components: 4 },\n 'vec2<u32>': { type: 'u32', components: 2 },\n 'vec3<u32>': { type: 'u32', components: 3 },\n 'vec4<u32>': { type: 'u32', components: 4 },\n 'mat2x2<f32>': { type: 'f32', components: 4 },\n 'mat2x3<f32>': { type: 'f32', components: 6 },\n 'mat2x4<f32>': { type: 'f32', components: 8 },\n 'mat3x2<f32>': { type: 'f32', components: 6 },\n 'mat3x3<f32>': { type: 'f32', components: 9 },\n 'mat3x4<f32>': { type: 'f32', components: 12 },\n 'mat4x2<f32>': { type: 'f32', components: 8 },\n 'mat4x3<f32>': { type: 'f32', components: 12 },\n 'mat4x4<f32>': { type: 'f32', components: 16 },\n 'mat2x2<f16>': { type: 'f16', components: 4 },\n 'mat2x3<f16>': { type: 'f16', components: 6 },\n 'mat2x4<f16>': { type: 'f16', components: 8 },\n 'mat3x2<f16>': { type: 'f16', components: 6 },\n 'mat3x3<f16>': { type: 'f16', components: 9 },\n 'mat3x4<f16>': { type: 'f16', components: 12 },\n 'mat4x2<f16>': { type: 'f16', components: 8 },\n 'mat4x3<f16>': { type: 'f16', components: 12 },\n 'mat4x4<f16>': { type: 'f16', components: 16 },\n 'mat2x2<i32>': { type: 'i32', components: 4 },\n 'mat2x3<i32>': { type: 'i32', components: 6 },\n 'mat2x4<i32>': { type: 'i32', components: 8 },\n 'mat3x2<i32>': { type: 'i32', components: 6 },\n 'mat3x3<i32>': { type: 'i32', components: 9 },\n 'mat3x4<i32>': { type: 'i32', components: 12 },\n 'mat4x2<i32>': { type: 'i32', components: 8 },\n 'mat4x3<i32>': { type: 'i32', components: 12 },\n 'mat4x4<i32>': { type: 'i32', components: 16 },\n 'mat2x2<u32>': { type: 'u32', components: 4 },\n 'mat2x3<u32>': { type: 'u32', components: 6 },\n 'mat2x4<u32>': { type: 'u32', components: 8 },\n 'mat3x2<u32>': { type: 'u32', components: 6 },\n 'mat3x3<u32>': { type: 'u32', components: 9 },\n 'mat3x4<u32>': { type: 'u32', components: 12 },\n 'mat4x2<u32>': { type: 'u32', components: 8 },\n 'mat4x3<u32>': { type: 'u32', components: 12 },\n 'mat4x4<u32>': { type: 'u32', components: 16 }\n};\n/** Predeclared aliases @see https://www.w3.org/TR/WGSL/#vector-types */\nexport const WGSL_ATTRIBUTE_TYPE_ALIAS_MAP = {\n vec2i: 'vec2<i32>',\n vec3i: 'vec3<i32>',\n vec4i: 'vec4<i32>',\n vec2u: 'vec2<u32>',\n vec3u: 'vec3<u32>',\n vec4u: 'vec4<u32>',\n vec2f: 'vec2<f32>',\n vec3f: 'vec3<f32>',\n vec4f: 'vec4<f32>',\n // Requires the f16 extension.\n vec2h: 'vec2<f16>',\n vec3h: 'vec3<f16>',\n vec4h: 'vec4<f16>'\n};\n/** @todo These tables are quite big, consider parsing alias strings instead */\nexport const WGSL_VARIABLE_TYPE_ALIAS_MAP = {\n ...WGSL_ATTRIBUTE_TYPE_ALIAS_MAP,\n mat2x2f: 'mat2x2<f32>',\n mat2x3f: 'mat2x3<f32>',\n mat2x4f: 'mat2x4<f32>',\n mat3x2f: 'mat3x2<f32>',\n mat3x3f: 'mat3x3<f32>',\n mat3x4f: 'mat3x4<f32>',\n mat4x2f: 'mat4x2<f32>',\n mat4x3f: 'mat4x3<f32>',\n mat4x4f: 'mat4x4<f32>',\n mat2x2i: 'mat2x2<i32>',\n mat2x3i: 'mat2x3<i32>',\n mat2x4i: 'mat2x4<i32>',\n mat3x2i: 'mat3x2<i32>',\n mat3x3i: 'mat3x3<i32>',\n mat3x4i: 'mat3x4<i32>',\n mat4x2i: 'mat4x2<i32>',\n mat4x3i: 'mat4x3<i32>',\n mat4x4i: 'mat4x4<i32>',\n mat2x2u: 'mat2x2<u32>',\n mat2x3u: 'mat2x3<u32>',\n mat2x4u: 'mat2x4<u32>',\n mat3x2u: 'mat3x2<u32>',\n mat3x3u: 'mat3x3<u32>',\n mat3x4u: 'mat3x4<u32>',\n mat4x2u: 'mat4x2<u32>',\n mat4x3u: 'mat4x3<u32>',\n mat4x4u: 'mat4x4<u32>',\n mat2x2h: 'mat2x2<f16>',\n mat2x3h: 'mat2x3<f16>',\n mat2x4h: 'mat2x4<f16>',\n mat3x2h: 'mat3x2<f16>',\n mat3x3h: 'mat3x3<f16>',\n mat3x4h: 'mat3x4<f16>',\n mat4x2h: 'mat4x2<f16>',\n mat4x3h: 'mat4x3<f16>',\n mat4x4h: 'mat4x4<f16>'\n};\n//# sourceMappingURL=decode-shader-types.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { log } from \"../utils/log.js\";\nimport { getAttributeShaderTypeInfo } from \"../shadertypes/data-types/decode-shader-types.js\";\nimport { getVertexFormatInfo, getCompatibleVertexFormat } from \"../shadertypes/vertex-arrays/decode-vertex-format.js\";\n/**\n * Map from \"attribute names\" to \"resolved attribute infos\"\n * containing information about both buffer layouts and shader attribute declarations\n */\nexport function getAttributeInfosFromLayouts(shaderLayout, bufferLayout) {\n const attributeInfos = {};\n for (const attribute of shaderLayout.attributes) {\n const attributeInfo = getAttributeInfoFromLayouts(shaderLayout, bufferLayout, attribute.name);\n if (attributeInfo) {\n attributeInfos[attribute.name] = attributeInfo;\n }\n }\n return attributeInfos;\n}\n/**\n * Array indexed by \"location\" holding \"resolved attribute infos\"\n */\nexport function getAttributeInfosByLocation(shaderLayout, bufferLayout, maxVertexAttributes = 16) {\n const attributeInfos = getAttributeInfosFromLayouts(shaderLayout, bufferLayout);\n const locationInfos = new Array(maxVertexAttributes).fill(null);\n for (const attributeInfo of Object.values(attributeInfos)) {\n locationInfos[attributeInfo.location] = attributeInfo;\n }\n return locationInfos;\n}\n/**\n * Get the combined information from a shader layout and a buffer layout for a specific attribute\n */\nfunction getAttributeInfoFromLayouts(shaderLayout, bufferLayout, name) {\n const shaderDeclaration = getAttributeFromShaderLayout(shaderLayout, name);\n const bufferMapping = getAttributeFromBufferLayout(bufferLayout, name);\n // TODO should no longer happen\n if (!shaderDeclaration) {\n // || !bufferMapping\n return null;\n }\n const attributeTypeInfo = getAttributeShaderTypeInfo(shaderDeclaration.type);\n const defaultVertexFormat = getCompatibleVertexFormat(attributeTypeInfo);\n const vertexFormat = bufferMapping?.vertexFormat || defaultVertexFormat;\n const vertexFormatInfo = getVertexFormatInfo(vertexFormat);\n return {\n attributeName: bufferMapping?.attributeName || shaderDeclaration.name,\n bufferName: bufferMapping?.bufferName || shaderDeclaration.name,\n location: shaderDeclaration.location,\n shaderType: shaderDeclaration.type,\n primitiveType: attributeTypeInfo.primitiveType,\n shaderComponents: attributeTypeInfo.components,\n vertexFormat,\n bufferDataType: vertexFormatInfo.type,\n bufferComponents: vertexFormatInfo.components,\n // normalized is a property of the buffer's vertex format\n normalized: vertexFormatInfo.normalized,\n // integer is a property of the shader declaration\n integer: attributeTypeInfo.integer,\n stepMode: bufferMapping?.stepMode || shaderDeclaration.stepMode || 'vertex',\n byteOffset: bufferMapping?.byteOffset || 0,\n byteStride: bufferMapping?.byteStride || 0\n };\n}\nfunction getAttributeFromShaderLayout(shaderLayout, name) {\n const attribute = shaderLayout.attributes.find(attr => attr.name === name);\n if (!attribute) {\n log.warn(`shader layout attribute \"${name}\" not present in shader`);\n }\n return attribute || null;\n}\nfunction getAttributeFromBufferLayout(bufferLayouts, name) {\n // Check that bufferLayouts are valid (each either has format or attribute)\n checkBufferLayouts(bufferLayouts);\n let bufferLayoutInfo = getAttributeFromShortHand(bufferLayouts, name);\n if (bufferLayoutInfo) {\n return bufferLayoutInfo;\n }\n bufferLayoutInfo = getAttributeFromAttributesList(bufferLayouts, name);\n if (bufferLayoutInfo) {\n return bufferLayoutInfo;\n }\n // Didn't find...\n log.warn(`layout for attribute \"${name}\" not present in buffer layout`);\n return null;\n}\n/** Check that bufferLayouts are valid (each either has format or attribute) */\nfunction checkBufferLayouts(bufferLayouts) {\n for (const bufferLayout of bufferLayouts) {\n if ((bufferLayout.attributes && bufferLayout.format) ||\n (!bufferLayout.attributes && !bufferLayout.format)) {\n log.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`);\n }\n }\n}\n/** Get attribute from format shorthand if specified */\nfunction getAttributeFromShortHand(bufferLayouts, name) {\n for (const bufferLayout of bufferLayouts) {\n if (bufferLayout.format && bufferLayout.name === name) {\n return {\n attributeName: bufferLayout.name,\n bufferName: name,\n stepMode: bufferLayout.stepMode,\n vertexFormat: bufferLayout.format,\n // If offset is needed, use `attributes` field.\n byteOffset: 0,\n byteStride: bufferLayout.byteStride || 0\n };\n }\n }\n return null;\n}\n/**\n * Search attribute mappings (e.g. interleaved attributes) for buffer mapping.\n * Not the name of the buffer might be the same as one of the interleaved attributes.\n */\nfunction getAttributeFromAttributesList(bufferLayouts, name) {\n for (const bufferLayout of bufferLayouts) {\n let byteStride = bufferLayout.byteStride;\n // Calculate a default byte stride if not provided\n if (typeof bufferLayout.byteStride !== 'number') {\n for (const attributeMapping of bufferLayout.attributes || []) {\n const info = getVertexFormatInfo(attributeMapping.format);\n // @ts-ignore\n byteStride += info.byteLength;\n }\n }\n const attributeMapping = bufferLayout.attributes?.find(mapping => mapping.attribute === name);\n if (attributeMapping) {\n return {\n attributeName: attributeMapping.attribute,\n bufferName: bufferLayout.name,\n stepMode: bufferLayout.stepMode,\n vertexFormat: attributeMapping.format,\n byteOffset: attributeMapping.byteOffset,\n // @ts-ignore\n byteStride\n };\n }\n }\n return null;\n}\n//# sourceMappingURL=get-attribute-from-layouts.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nlet arrayBuffer;\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n//# sourceMappingURL=array-utils-flat.js.map"],"names":["Sampler","Resource","device","props","BASE_DIMENSIONS","Texture","size","log","sampler","newProps","width","height","data","options_","depth","options","info","TextureView","formatCompilerLog","shaderLog","source","formattedLog","lines","b","currentMessage","lineNum","getNumberedLine","message","formatCompilerMessage","numberedLines","getNumberedLines","positionIndicator","color","lineIndex","sourceLine","line","escapedLine","escapeHTML","padLeft","string","paddedLength","result","i","unsafe","Shader","getShaderIdFromProps","trigger","messages","shaderId","shaderName","shaderTitle","htmlLog","translatedSource","button","dataURI","getShaderName","uid","shader","defaultName","match","RenderPipeline","getVariableShaderTypeInfo","format","UNIFORM_FORMATS","getAttributeShaderTypeInfo","attributeType","primitiveType","components","TYPE_INFO","integer","signed","byteLength","PRIMITIVE_TYPE_SIZES","getAttributeInfosFromLayouts","shaderLayout","bufferLayout","attributeInfos","attribute","attributeInfo","getAttributeInfoFromLayouts","getAttributeInfosByLocation","maxVertexAttributes","locationInfos","name","shaderDeclaration","getAttributeFromShaderLayout","bufferMapping","getAttributeFromBufferLayout","attributeTypeInfo","defaultVertexFormat","getCompatibleVertexFormat","vertexFormat","vertexFormatInfo","getVertexFormatInfo","attr","bufferLayouts","checkBufferLayouts","bufferLayoutInfo","getAttributeFromShortHand","getAttributeFromAttributesList","byteStride","attributeMapping","mapping","arrayBuffer","getScratchArrayBuffer","getScratchArray","Type","length","scratchArrayBuffer"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
@@ -0,0 +1,3 @@
1
+ import{D as z,A as o,E as L,F as M,B as H}from"./deep-equal-uriyKJca.js";function y(){let r;if(typeof window<"u"&&window.performance)r=window.performance.now();else if(typeof process<"u"&&process.hrtime){const e=process.hrtime();r=e[0]*1e3+e[1]/1e6}else r=Date.now();return r}class P{constructor(e,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=y(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(y()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}class R{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,t="count"){return this._getOrCreate({name:e,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(const e of Object.values(this.stats))e.reset();return this}forEach(e){for(const t of Object.values(this.stats))e(t)}getTable(){const e={};return this.forEach(t=>{e[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(t=>this._getOrCreate(t))}_getOrCreate(e){const{name:t,type:s}=e;let i=this.stats[t];return i||(e instanceof P?i=e:i=new P(t,s),this.stats[t]=i),i}}class W{stats=new Map;getStats(e){return this.get(e)}get(e){return this.stats.has(e)||this.stats.set(e,new R({id:e})),this.stats.get(e)}}const O=new W,a="texture-compression-bc",n="texture-compression-astc",c="texture-compression-etc2",A="texture-compression-etc1-webgl",f="texture-compression-pvrtc-webgl",C="texture-compression-atc-webgl",d="float32-renderable-webgl",T="float16-renderable-webgl",B="rgb9e5ufloat-renderable-webgl",S="snorm8-renderable-webgl",g="norm16-renderable-webgl",E="snorm16-renderable-webgl",p="float32-filterable",v="float16-filterable-webgl";function F(r){const e=V[r];if(!e)throw new Error(`Unsupported texture format ${r}`);return e}const G={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:S},rg8snorm:{render:S},"rgb8snorm-webgl":{},rgba8snorm:{render:S},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:g},rg16unorm:{render:g},"rgb16unorm-webgl":{f:g},rgba16unorm:{render:g},r16snorm:{f:E},rg16snorm:{render:E},"rgb16snorm-webgl":{f:g},rgba16snorm:{render:E},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:T,filter:"float16-filterable-webgl"},rg16float:{render:T,filter:v},rgba16float:{render:T,filter:v},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:d,filter:p},rg32float:{render:!1,filter:p},"rgb32float-webgl":{render:d,filter:p},rgba32float:{render:d,filter:p},"rgba4unorm-webgl":{channels:"rgba",bitsPerChannel:[4,4,4,4],packed:!0},"rgb565unorm-webgl":{channels:"rgb",bitsPerChannel:[5,6,5,0],packed:!0},"rgb5a1unorm-webgl":{channels:"rgba",bitsPerChannel:[5,5,5,1],packed:!0},rgb9e5ufloat:{channels:"rgb",packed:!0,render:B},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:d},rgb10a2unorm:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},rgb10a2uint:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},stencil8:{attachment:"stencil",bitsPerChannel:[8,0,0,0],dataType:"uint8"},depth16unorm:{attachment:"depth",bitsPerChannel:[16,0,0,0],dataType:"uint16"},depth24plus:{attachment:"depth",bitsPerChannel:[24,0,0,0],dataType:"uint32"},depth32float:{attachment:"depth",bitsPerChannel:[32,0,0,0],dataType:"float32"},"depth24plus-stencil8":{attachment:"depth-stencil",bitsPerChannel:[24,8,0,0],packed:!0},"depth32float-stencil8":{attachment:"depth-stencil",bitsPerChannel:[32,8,0,0],packed:!0}},$={"bc1-rgb-unorm-webgl":{f:a},"bc1-rgb-unorm-srgb-webgl":{f:a},"bc1-rgba-unorm":{f:a},"bc1-rgba-unorm-srgb":{f:a},"bc2-rgba-unorm":{f:a},"bc2-rgba-unorm-srgb":{f:a},"bc3-rgba-unorm":{f:a},"bc3-rgba-unorm-srgb":{f:a},"bc4-r-unorm":{f:a},"bc4-r-snorm":{f:a},"bc5-rg-unorm":{f:a},"bc5-rg-snorm":{f:a},"bc6h-rgb-ufloat":{f:a},"bc6h-rgb-float":{f:a},"bc7-rgba-unorm":{f:a},"bc7-rgba-unorm-srgb":{f:a},"etc2-rgb8unorm":{f:c},"etc2-rgb8unorm-srgb":{f:c},"etc2-rgb8a1unorm":{f:c},"etc2-rgb8a1unorm-srgb":{f:c},"etc2-rgba8unorm":{f:c},"etc2-rgba8unorm-srgb":{f:c},"eac-r11unorm":{f:c},"eac-r11snorm":{f:c},"eac-rg11unorm":{f:c},"eac-rg11snorm":{f:c},"astc-4x4-unorm":{f:n},"astc-4x4-unorm-srgb":{f:n},"astc-5x4-unorm":{f:n},"astc-5x4-unorm-srgb":{f:n},"astc-5x5-unorm":{f:n},"astc-5x5-unorm-srgb":{f:n},"astc-6x5-unorm":{f:n},"astc-6x5-unorm-srgb":{f:n},"astc-6x6-unorm":{f:n},"astc-6x6-unorm-srgb":{f:n},"astc-8x5-unorm":{f:n},"astc-8x5-unorm-srgb":{f:n},"astc-8x6-unorm":{f:n},"astc-8x6-unorm-srgb":{f:n},"astc-8x8-unorm":{f:n},"astc-8x8-unorm-srgb":{f:n},"astc-10x5-unorm":{f:n},"astc-10x5-unorm-srgb":{f:n},"astc-10x6-unorm":{f:n},"astc-10x6-unorm-srgb":{f:n},"astc-10x8-unorm":{f:n},"astc-10x8-unorm-srgb":{f:n},"astc-10x10-unorm":{f:n},"astc-10x10-unorm-srgb":{f:n},"astc-12x10-unorm":{f:n},"astc-12x10-unorm-srgb":{f:n},"astc-12x12-unorm":{f:n},"astc-12x12-unorm-srgb":{f:n},"pvrtc-rgb4unorm-webgl":{f},"pvrtc-rgba4unorm-webgl":{f},"pvrtc-rbg2unorm-webgl":{f},"pvrtc-rgba2unorm-webgl":{f},"etc1-rbg-unorm-webgl":{f:A},"atc-rgb-unorm-webgl":{f:C},"atc-rgba-unorm-webgl":{f:C},"atc-rgbai-unorm-webgl":{f:C}},V={...G,...$},U=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],X=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/;class j{getInfo(e){return D(e)}isColor(e){return e.startsWith("rgba")||e.startsWith("bgra")||e.startsWith("rgb")}isDepthStencil(e){return e.startsWith("depth")||e.startsWith("stencil")}isCompressed(e){return U.some(t=>e.startsWith(t))}getCapabilities(e){const t=F(e),s={format:e,create:t.f??!0,render:t.render??!0,filter:t.filter??!0,blend:t.blend??!0,store:t.store??!0},i=D(e),l=e.startsWith("depth")||e.startsWith("stencil"),m=i?.signed,w=i?.integer,_=i?.webgl;return s.render&&=!m,s.filter&&=!l&&!m&&!w&&!_,s}}const x=new j;function D(r){let e=N(r);if(x.isCompressed(r)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0;const s=J(r);s&&(e.blockWidth=s.blockWidth,e.blockHeight=s.blockHeight)}const t=X.exec(r);if(t){const[,s,i,l,m,w]=t,_=`${l}${i}`,u=z(_),b=u.byteLength*8,h=s.length,I=[b,h>=2?b:0,h>=3?b:0,h>=4?b:0];e={format:r,attachment:e.attachment,dataType:u.signedType,components:h,channels:s,integer:u.integer,signed:u.signed,normalized:u.normalized,bitsPerChannel:I,bytesPerPixel:u.byteLength*s.length,packed:e.packed,srgb:e.srgb},w==="-webgl"&&(e.webgl=!0),m==="-srgb"&&(e.srgb=!0)}return r.endsWith("-webgl")&&(e.webgl=!0),r.endsWith("-srgb")&&(e.srgb=!0),e}function N(r){const e=F(r),t=e.bytesPerPixel||1,s=e.bitsPerChannel||[8,8,8,8];return delete e.bitsPerChannel,delete e.bytesPerPixel,delete e.f,delete e.render,delete e.filter,delete e.blend,delete e.store,{...e,format:r,attachment:e.attachment||"color",channels:e.channels||"r",components:e.components||e.channels?.length||1,bytesPerPixel:t,bitsPerChannel:s,dataType:e.dataType||"uint8",srgb:e.srgb??!1,packed:e.packed??!1,webgl:e.webgl??!1,integer:e.integer??!1,signed:e.signed??!1,normalized:e.normalized??!1,compressed:e.compressed??!1}}function J(r){const t=/.*-(\d+)x(\d+)-.*/.exec(r);if(t){const[,s,i]=t;return{blockWidth:Number(s),blockHeight:Number(i)}}return null}function q(r){return typeof ImageData<"u"&&r instanceof ImageData||typeof ImageBitmap<"u"&&r instanceof ImageBitmap||typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement||typeof VideoFrame<"u"&&r instanceof VideoFrame||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas}function K(r){if(typeof ImageData<"u"&&r instanceof ImageData||typeof ImageBitmap<"u"&&r instanceof ImageBitmap||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas)return{width:r.width,height:r.height};if(typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement)return{width:r.naturalWidth,height:r.naturalHeight};if(typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement)return{width:r.videoWidth,height:r.videoHeight};if(typeof VideoFrame<"u"&&r instanceof VideoFrame)return{width:r.displayWidth,height:r.displayHeight};throw new Error("Unknown image type")}class Y{}class Z{features;disabledFeatures;constructor(e=[],t){this.features=new Set(e),this.disabledFeatures=t||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures?.[e]&&this.features.has(e)}}class k{static defaultProps={id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,t)=>{},onResize:(e,t)=>{const[s,i]=e.getDevicePixelSize();o.log(1,`${e} resized => ${s}x${i}px`)()},onPositionChange:(e,t)=>{const[s,i]=e.getPosition();o.log(1,`${e} repositioned => ${s},${i}`)()},onVisibilityChange:e=>o.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,t)=>o.log(1,`${e} DPR changed ${t.oldRatio} => ${e.devicePixelRatio}`)(),debug:o.get("debug")||void 0,debugShaders:o.get("debug-shaders")||void 0,debugFramebuffers:!!o.get("debug-framebuffers"),debugFactories:!!o.get("debug-factories"),debugWebGL:!!o.get("debug-webgl"),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_reuseDevices:!1,_requestMaxLimits:!0,_cacheShaders:!1,_cachePipelines:!1,_cacheDestroyPolicy:"unused",_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_handle:void 0};get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=O;timestamp=0;_reused=!1;_lumaData={};_textureCaps={};constructor(e){this.props={...k.defaultProps,...e},this.id=this.props.id||L(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return M(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return x.getInfo(e)}getTextureFormatCapabilities(e){let t=this._textureCaps[e];if(!t){const s=this._getDeviceTextureFormatCapabilities(e);t=this._getDeviceSpecificTextureFormatCapabilities(s),this._textureCaps[e]=t}return t}getMipLevelCount(e,t,s=1){const i=Math.max(e,t,s);return 1+Math.floor(Math.log2(i))}isExternalImage(e){return q(e)}getExternalImageSize(e){return K(e)}isTextureFormatSupported(e){return this.getTextureFormatCapabilities(e).create}isTextureFormatFilterable(e){return this.getTextureFormatCapabilities(e).filter}isTextureFormatRenderable(e){return this.getTextureFormatCapabilities(e).render}isTextureFormatCompressed(e){return x.isCompressed(e)}pushDebugGroup(e){this.commandEncoder.pushDebugGroup(e)}popDebugGroup(){this.commandEncoder?.popDebugGroup()}insertDebugMarker(e){this.commandEncoder?.insertDebugMarker(e)}loseDevice(){return!1}incrementTimestamp(){return this.timestamp++}reportError(e,t,...s){return this.props.onError(e,t)?()=>{}:o.error(e.message,t,...s)}debug(){if(this.props.debug)debugger;else o.once(0,`'Type luma.log.set({debug: true}) in console to enable debug breakpoints',
2
+ or create a device with the 'debug: true' prop.`)()}getDefaultCanvasContext(){if(!this.canvasContext)throw new Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}beginRenderPass(e){return this.commandEncoder.beginRenderPass(e)}beginComputePass(e){return this.commandEncoder.beginComputePass(e)}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(e,t){throw new Error("not implemented")}readPixelsToBufferWebGL(e,t){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,t){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}static _getCanvasContextProps(e){return e.createCanvasContext===!0?{}:e.createCanvasContext}_getDeviceTextureFormatCapabilities(e){const t=x.getCapabilities(e),s=l=>(typeof l=="string"?this.features.has(l):l)??!0,i=s(t.create);return{format:e,create:i,render:i&&s(t.render),filter:i&&s(t.filter),blend:i&&s(t.blend),store:i&&s(t.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});const t={...e};if((e.usage||0)&H.INDEX&&(e.indexType||(e.data instanceof Uint32Array?t.indexType="uint32":e.data instanceof Uint16Array&&(t.indexType="uint16")),!t.indexType))throw new Error("indices buffer content must be of type uint16 or uint32");return t}}function ee(r,e){if(!r)throw new Error(e||"deck.gl: assertion failed.")}export{k as D,R as S,ee as a,Z as b,Y as c,O as l,x as t};
3
+ //# sourceMappingURL=assert-hrfsarFU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-hrfsarFU.js","sources":["../../../../../../node_modules/.pnpm/@probe.gl+stats@4.1.0/node_modules/@probe.gl/stats/dist/utils/hi-res-timestamp.js","../../../../../../node_modules/.pnpm/@probe.gl+stats@4.1.0/node_modules/@probe.gl/stats/dist/lib/stat.js","../../../../../../node_modules/.pnpm/@probe.gl+stats@4.1.0/node_modules/@probe.gl/stats/dist/lib/stats.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/stats-manager.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/textures/texture-format-table.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/textures/texture-format-decoder.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/image-utils/image-types.js","../../../../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/device.js","../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/utils/assert.js"],"sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nexport default function getHiResTimestamp() {\n let timestamp;\n // Get best timer available.\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n }\n else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n }\n else {\n timestamp = Date.now();\n }\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","import getHiResTimestamp from \"../utils/hi-res-timestamp.js\";\nexport default class Stat {\n constructor(name, type) {\n this.sampleSize = 1;\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n this.name = name;\n this.type = type;\n this.reset();\n }\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n return this;\n }\n setSampleSize(samples) {\n this.sampleSize = samples;\n return this;\n }\n /** Call to increment count (+1) */\n incrementCount() {\n this.addCount(1);\n return this;\n }\n /** Call to decrement count (-1) */\n decrementCount() {\n this.subtractCount(1);\n return this;\n }\n /** Increase count */\n addCount(value) {\n this._count += value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n /** Decrease count */\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n /** Add an arbitrary timing and bump the count */\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n return this;\n }\n /** Start a timer */\n timeStart() {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n return this;\n }\n /** End a timer. Adds to time and bumps the timing count. */\n timeEnd() {\n if (!this._timerPending) {\n return this;\n }\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n return this;\n }\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n /** Calculate average time / count for the previous window */\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n /** Calculate counts per second for the previous window */\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n /** Calculate average time / count */\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n /** Calculate counts per second */\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n//# sourceMappingURL=stat.js.map","// probe.gl, MIT license\nimport Stat from \"./stat.js\";\n/** A \"bag\" of `Stat` objects, can be visualized using `StatsWidget` */\nexport default class Stats {\n constructor(options) {\n this.stats = {};\n this.id = options.id;\n this.stats = {};\n this._initializeStats(options.stats);\n Object.seal(this);\n }\n /** Acquire a stat. Create if it doesn't exist. */\n get(name, type = 'count') {\n return this._getOrCreate({ name, type });\n }\n get size() {\n return Object.keys(this.stats).length;\n }\n /** Reset all stats */\n reset() {\n for (const stat of Object.values(this.stats)) {\n stat.reset();\n }\n return this;\n }\n forEach(fn) {\n for (const stat of Object.values(this.stats)) {\n fn(stat);\n }\n }\n getTable() {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n return table;\n }\n _initializeStats(stats = []) {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n _getOrCreate(stat) {\n const { name, type } = stat;\n let result = this.stats[name];\n if (!result) {\n if (stat instanceof Stat) {\n result = stat;\n }\n else {\n result = new Stat(name, type);\n }\n this.stats[name] = result;\n }\n return result;\n }\n}\n//# sourceMappingURL=stats.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Stats } from '@probe.gl/stats';\n/**\n * Helper class managing a collection of probe.gl stats objects\n */\nexport class StatsManager {\n stats = new Map();\n getStats(name) {\n return this.get(name);\n }\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({ id: name }));\n }\n return this.stats.get(name);\n }\n}\n/** Global stats for all luma.gl devices */\nexport const lumaStats = new StatsManager();\n//# sourceMappingURL=stats-manager.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/* eslint-disable camelcase */\n// Define local device feature strings to optimize minification\nconst texture_compression_bc = 'texture-compression-bc';\nconst texture_compression_astc = 'texture-compression-astc';\nconst texture_compression_etc2 = 'texture-compression-etc2';\nconst texture_compression_etc1_webgl = 'texture-compression-etc1-webgl';\nconst texture_compression_pvrtc_webgl = 'texture-compression-pvrtc-webgl';\nconst texture_compression_atc_webgl = 'texture-compression-atc-webgl';\nconst float32_renderable = 'float32-renderable-webgl';\nconst float16_renderable = 'float16-renderable-webgl';\nconst rgb9e5ufloat_renderable = 'rgb9e5ufloat-renderable-webgl';\nconst snorm8_renderable = 'snorm8-renderable-webgl';\nconst norm16_renderable = 'norm16-renderable-webgl';\nconst snorm16_renderable = 'snorm16-renderable-webgl';\nconst float32_filterable = 'float32-filterable';\nconst float16_filterable = 'float16-filterable-webgl';\nexport function getTextureFormatDefinition(format) {\n const info = TEXTURE_FORMAT_TABLE[format];\n if (!info) {\n throw new Error(`Unsupported texture format ${format}`);\n }\n return info;\n}\nexport function getTextureFormatTable() {\n return TEXTURE_FORMAT_TABLE;\n}\n// prettier-ignore\nconst TEXTURE_FORMAT_COLOR_DEPTH_TABLE = {\n // 8-bit formats\n 'r8unorm': {},\n 'rg8unorm': {},\n 'rgb8unorm-webgl': {},\n 'rgba8unorm': {},\n 'rgba8unorm-srgb': {},\n 'r8snorm': { render: snorm8_renderable },\n 'rg8snorm': { render: snorm8_renderable },\n 'rgb8snorm-webgl': {},\n 'rgba8snorm': { render: snorm8_renderable },\n 'r8uint': {},\n 'rg8uint': {},\n 'rgba8uint': {},\n 'r8sint': {},\n 'rg8sint': {},\n 'rgba8sint': {},\n 'bgra8unorm': {},\n 'bgra8unorm-srgb': {},\n 'r16unorm': { f: norm16_renderable },\n 'rg16unorm': { render: norm16_renderable },\n 'rgb16unorm-webgl': { f: norm16_renderable }, // rgb not renderable\n 'rgba16unorm': { render: norm16_renderable },\n 'r16snorm': { f: snorm16_renderable },\n 'rg16snorm': { render: snorm16_renderable },\n 'rgb16snorm-webgl': { f: norm16_renderable }, // rgb not renderable\n 'rgba16snorm': { render: snorm16_renderable },\n 'r16uint': {},\n 'rg16uint': {},\n 'rgba16uint': {},\n 'r16sint': {},\n 'rg16sint': {},\n 'rgba16sint': {},\n 'r16float': { render: float16_renderable, filter: 'float16-filterable-webgl' },\n 'rg16float': { render: float16_renderable, filter: float16_filterable },\n 'rgba16float': { render: float16_renderable, filter: float16_filterable },\n 'r32uint': {},\n 'rg32uint': {},\n 'rgba32uint': {},\n 'r32sint': {},\n 'rg32sint': {},\n 'rgba32sint': {},\n 'r32float': { render: float32_renderable, filter: float32_filterable },\n 'rg32float': { render: false, filter: float32_filterable },\n 'rgb32float-webgl': { render: float32_renderable, filter: float32_filterable },\n 'rgba32float': { render: float32_renderable, filter: float32_filterable },\n // Packed 16-bit formats\n 'rgba4unorm-webgl': { channels: 'rgba', bitsPerChannel: [4, 4, 4, 4], packed: true },\n 'rgb565unorm-webgl': { channels: 'rgb', bitsPerChannel: [5, 6, 5, 0], packed: true },\n 'rgb5a1unorm-webgl': { channels: 'rgba', bitsPerChannel: [5, 5, 5, 1], packed: true },\n // Packed 32 bit formats\n 'rgb9e5ufloat': { channels: 'rgb', packed: true, render: rgb9e5ufloat_renderable }, // , filter: true},\n 'rg11b10ufloat': { channels: 'rgb', bitsPerChannel: [11, 11, 10, 0], packed: true, p: 1, render: float32_renderable },\n 'rgb10a2unorm': { channels: 'rgba', bitsPerChannel: [10, 10, 10, 2], packed: true, p: 1 },\n 'rgb10a2uint': { channels: 'rgba', bitsPerChannel: [10, 10, 10, 2], packed: true, p: 1 },\n // Depth/stencil Formats\n // Depth and stencil formats\n stencil8: { attachment: 'stencil', bitsPerChannel: [8, 0, 0, 0], dataType: 'uint8' },\n 'depth16unorm': { attachment: 'depth', bitsPerChannel: [16, 0, 0, 0], dataType: 'uint16' },\n 'depth24plus': { attachment: 'depth', bitsPerChannel: [24, 0, 0, 0], dataType: 'uint32' },\n 'depth32float': { attachment: 'depth', bitsPerChannel: [32, 0, 0, 0], dataType: 'float32' },\n // The depth component of the \"depth24plus\" and \"depth24plus-stencil8\" formats may be implemented as either a 24-bit depth value or a \"depth32float\" value.\n 'depth24plus-stencil8': { attachment: 'depth-stencil', bitsPerChannel: [24, 8, 0, 0], packed: true },\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8': { attachment: 'depth-stencil', bitsPerChannel: [32, 8, 0, 0], packed: true },\n};\n// prettier-ignore\nconst TEXTURE_FORMAT_COMPRESSED_TABLE = {\n // BC compressed formats: check device.features.has(\"texture-compression-bc\");\n 'bc1-rgb-unorm-webgl': { f: texture_compression_bc },\n 'bc1-rgb-unorm-srgb-webgl': { f: texture_compression_bc },\n 'bc1-rgba-unorm': { f: texture_compression_bc },\n 'bc1-rgba-unorm-srgb': { f: texture_compression_bc },\n 'bc2-rgba-unorm': { f: texture_compression_bc },\n 'bc2-rgba-unorm-srgb': { f: texture_compression_bc },\n 'bc3-rgba-unorm': { f: texture_compression_bc },\n 'bc3-rgba-unorm-srgb': { f: texture_compression_bc },\n 'bc4-r-unorm': { f: texture_compression_bc },\n 'bc4-r-snorm': { f: texture_compression_bc },\n 'bc5-rg-unorm': { f: texture_compression_bc },\n 'bc5-rg-snorm': { f: texture_compression_bc },\n 'bc6h-rgb-ufloat': { f: texture_compression_bc },\n 'bc6h-rgb-float': { f: texture_compression_bc },\n 'bc7-rgba-unorm': { f: texture_compression_bc },\n 'bc7-rgba-unorm-srgb': { f: texture_compression_bc },\n // WEBGL_compressed_texture_etc: device.features.has(\"texture-compression-etc2\")\n // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression\n 'etc2-rgb8unorm': { f: texture_compression_etc2 },\n 'etc2-rgb8unorm-srgb': { f: texture_compression_etc2 },\n 'etc2-rgb8a1unorm': { f: texture_compression_etc2 },\n 'etc2-rgb8a1unorm-srgb': { f: texture_compression_etc2 },\n 'etc2-rgba8unorm': { f: texture_compression_etc2 },\n 'etc2-rgba8unorm-srgb': { f: texture_compression_etc2 },\n 'eac-r11unorm': { f: texture_compression_etc2 },\n 'eac-r11snorm': { f: texture_compression_etc2 },\n 'eac-rg11unorm': { f: texture_compression_etc2 },\n 'eac-rg11snorm': { f: texture_compression_etc2 },\n // X_ASTC compressed formats: device.features.has(\"texture-compression-astc\")\n 'astc-4x4-unorm': { f: texture_compression_astc },\n 'astc-4x4-unorm-srgb': { f: texture_compression_astc },\n 'astc-5x4-unorm': { f: texture_compression_astc },\n 'astc-5x4-unorm-srgb': { f: texture_compression_astc },\n 'astc-5x5-unorm': { f: texture_compression_astc },\n 'astc-5x5-unorm-srgb': { f: texture_compression_astc },\n 'astc-6x5-unorm': { f: texture_compression_astc },\n 'astc-6x5-unorm-srgb': { f: texture_compression_astc },\n 'astc-6x6-unorm': { f: texture_compression_astc },\n 'astc-6x6-unorm-srgb': { f: texture_compression_astc },\n 'astc-8x5-unorm': { f: texture_compression_astc },\n 'astc-8x5-unorm-srgb': { f: texture_compression_astc },\n 'astc-8x6-unorm': { f: texture_compression_astc },\n 'astc-8x6-unorm-srgb': { f: texture_compression_astc },\n 'astc-8x8-unorm': { f: texture_compression_astc },\n 'astc-8x8-unorm-srgb': { f: texture_compression_astc },\n 'astc-10x5-unorm': { f: texture_compression_astc },\n 'astc-10x5-unorm-srgb': { f: texture_compression_astc },\n 'astc-10x6-unorm': { f: texture_compression_astc },\n 'astc-10x6-unorm-srgb': { f: texture_compression_astc },\n 'astc-10x8-unorm': { f: texture_compression_astc },\n 'astc-10x8-unorm-srgb': { f: texture_compression_astc },\n 'astc-10x10-unorm': { f: texture_compression_astc },\n 'astc-10x10-unorm-srgb': { f: texture_compression_astc },\n 'astc-12x10-unorm': { f: texture_compression_astc },\n 'astc-12x10-unorm-srgb': { f: texture_compression_astc },\n 'astc-12x12-unorm': { f: texture_compression_astc },\n 'astc-12x12-unorm-srgb': { f: texture_compression_astc },\n // WEBGL_compressed_texture_pvrtc\n 'pvrtc-rgb4unorm-webgl': { f: texture_compression_pvrtc_webgl },\n 'pvrtc-rgba4unorm-webgl': { f: texture_compression_pvrtc_webgl },\n 'pvrtc-rbg2unorm-webgl': { f: texture_compression_pvrtc_webgl },\n 'pvrtc-rgba2unorm-webgl': { f: texture_compression_pvrtc_webgl },\n // WEBGL_compressed_texture_etc1\n 'etc1-rbg-unorm-webgl': { f: texture_compression_etc1_webgl },\n // WEBGL_compressed_texture_atc\n 'atc-rgb-unorm-webgl': { f: texture_compression_atc_webgl },\n 'atc-rgba-unorm-webgl': { f: texture_compression_atc_webgl },\n 'atc-rgbai-unorm-webgl': { f: texture_compression_atc_webgl }\n};\nexport const TEXTURE_FORMAT_TABLE = {\n ...TEXTURE_FORMAT_COLOR_DEPTH_TABLE,\n ...TEXTURE_FORMAT_COMPRESSED_TABLE\n};\n//# sourceMappingURL=texture-format-table.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeInfo } from \"../data-types/decode-data-types.js\";\nimport { getTextureFormatDefinition } from \"./texture-format-table.js\";\n// prettier-ignore\nconst COMPRESSED_TEXTURE_FORMAT_PREFIXES = [\n 'bc1', 'bc2', 'bc3', 'bc4', 'bc5', 'bc6', 'bc7', 'etc1', 'etc2', 'eac', 'atc', 'astc', 'pvrtc'\n];\nconst RGB_FORMAT_REGEX = /^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/;\nexport class TextureFormatDecoder {\n /** Returns information about a texture format, e.g. attatchment type, components, byte length and flags (integer, signed, normalized) */\n getInfo(format) {\n return getTextureFormatInfo(format);\n }\n /** Checks if a texture format is color */\n isColor(format) {\n return format.startsWith('rgba') || format.startsWith('bgra') || format.startsWith('rgb');\n }\n /** Checks if a texture format is depth or stencil */\n isDepthStencil(format) {\n return format.startsWith('depth') || format.startsWith('stencil');\n }\n /** Checks if a texture format is compressed */\n isCompressed(format) {\n return COMPRESSED_TEXTURE_FORMAT_PREFIXES.some(prefix => format.startsWith(prefix));\n }\n /**\n * Returns the \"static\" capabilities of a texture format.\n * @note Needs to be checked against current device\n */\n getCapabilities(format) {\n const info = getTextureFormatDefinition(format);\n const formatCapabilities = {\n format,\n create: info.f ?? true,\n render: info.render ?? true,\n filter: info.filter ?? true,\n blend: info.blend ?? true,\n store: info.store ?? true\n };\n const formatInfo = getTextureFormatInfo(format);\n const isDepthStencil = format.startsWith('depth') || format.startsWith('stencil');\n const isSigned = formatInfo?.signed;\n const isInteger = formatInfo?.integer;\n const isWebGLSpecific = formatInfo?.webgl;\n // signed formats are not renderable\n formatCapabilities.render &&= !isSigned;\n // signed and integer formats are not filterable\n formatCapabilities.filter &&= !isDepthStencil && !isSigned && !isInteger && !isWebGLSpecific;\n return formatCapabilities;\n }\n}\nexport const textureFormatDecoder = new TextureFormatDecoder();\n// HELPERS\n/**\n * Decodes a texture format, returning e.g. attatchment type, components, byte length and flags (integer, signed, normalized)\n */\nfunction getTextureFormatInfo(format) {\n let formatInfo = getTextureFormatInfoUsingTable(format);\n if (textureFormatDecoder.isCompressed(format)) {\n formatInfo.channels = 'rgb';\n formatInfo.components = 3;\n formatInfo.bytesPerPixel = 1;\n formatInfo.srgb = false;\n formatInfo.compressed = true;\n const blockSize = getCompressedTextureBlockSize(format);\n if (blockSize) {\n formatInfo.blockWidth = blockSize.blockWidth;\n formatInfo.blockHeight = blockSize.blockHeight;\n }\n }\n // Fill in missing information that can be derived from the format string\n const matches = RGB_FORMAT_REGEX.exec(format);\n if (matches) {\n const [, channels, length, type, srgb, suffix] = matches;\n const dataType = `${type}${length}`;\n const decodedType = getDataTypeInfo(dataType);\n const bits = decodedType.byteLength * 8;\n const components = channels.length;\n const bitsPerChannel = [\n bits,\n components >= 2 ? bits : 0,\n components >= 3 ? bits : 0,\n components >= 4 ? bits : 0\n ];\n formatInfo = {\n format,\n attachment: formatInfo.attachment,\n dataType: decodedType.signedType,\n components,\n channels: channels,\n integer: decodedType.integer,\n signed: decodedType.signed,\n normalized: decodedType.normalized,\n bitsPerChannel,\n bytesPerPixel: decodedType.byteLength * channels.length,\n packed: formatInfo.packed,\n srgb: formatInfo.srgb\n };\n if (suffix === '-webgl') {\n formatInfo.webgl = true;\n }\n // dataType - overwritten by decodedType\n if (srgb === '-srgb') {\n formatInfo.srgb = true;\n }\n }\n if (format.endsWith('-webgl')) {\n formatInfo.webgl = true;\n }\n if (format.endsWith('-srgb')) {\n formatInfo.srgb = true;\n }\n return formatInfo;\n}\n/** Decode texture format info from the table */\nfunction getTextureFormatInfoUsingTable(format) {\n const info = getTextureFormatDefinition(format);\n const bytesPerPixel = info.bytesPerPixel || 1;\n const bitsPerChannel = info.bitsPerChannel || [8, 8, 8, 8];\n delete info.bitsPerChannel;\n delete info.bytesPerPixel;\n delete info.f;\n delete info.render;\n delete info.filter;\n delete info.blend;\n delete info.store;\n const formatInfo = {\n ...info,\n format,\n attachment: info.attachment || 'color',\n channels: info.channels || 'r',\n components: (info.components || info.channels?.length || 1),\n bytesPerPixel,\n bitsPerChannel,\n dataType: info.dataType || 'uint8',\n srgb: info.srgb ?? false,\n packed: info.packed ?? false,\n webgl: info.webgl ?? false,\n integer: info.integer ?? false,\n signed: info.signed ?? false,\n normalized: info.normalized ?? false,\n compressed: info.compressed ?? false\n };\n return formatInfo;\n}\n/** Parses ASTC block widths from format string */\nfunction getCompressedTextureBlockSize(format) {\n const REGEX = /.*-(\\d+)x(\\d+)-.*/;\n const matches = REGEX.exec(format);\n if (matches) {\n const [, blockWidth, blockHeight] = matches;\n return { blockWidth: Number(blockWidth), blockHeight: Number(blockHeight) };\n }\n return null;\n}\n/*\n'r8unorm':\t{s: \"float\"}, // \t✓\t✓\t✓\t},\n'r8snorm':\t{s: \"float\"}, // \t\t✓\t\t},\n'r8uint':\t{s: \"uint\"}, // \t✓\t✓\t\t},\n'r8sint':\t{s: \"sint\"}, // \t✓\t✓\t\t},\n'rg8unorm':\t{s: \"float\"}, // \t✓\t✓\t✓\t},\n'rg8snorm':\t{s: \"float\"}, // \t\t✓\t\t},\n'rg8uint':\t{s: \"uint\"}, // \t✓\t✓\t\t},\n'rg8sint':\t{s: \"sint\"}, // \t✓\t✓\t\t},\n'rgba8unorm':\t{s: \"float\"}, // \t✓\t✓\t✓\t✓},\n'rgba8unorm-srgb': {s: \"float\"}, // \t✓\t✓\t✓\t},\n'rgba8snorm':\t{s: \"float\"}, // \t\t✓\t\t✓},\n'rgba8uint':\t{s: \"uint\"}, // \t✓\t✓\t\t✓},\n'rgba8sint':\t{s: \"sint\"}, // \t✓\t✓\t\t✓},\n'bgra8unorm':\t{s: \"float\"}, // \t✓\t✓\t✓\t},\n'bgra8unorm-srgb': {s: \"float\"}, // \t✓\t✓\t✓\t},\n// 16-bit per component\n'r16uint': {s: \"uint\"}, // \t✓\t✓\t\t},\n'r16sint': {s: \"sint\"}, // \t✓\t✓\t\t},\n'r16float': {s: \"float\"}, // \t✓\t✓\t✓\t},\n'rg16uint': {s: \"uint\"}, // \t✓\t✓\t\t},\n'rg16sint': {s: \"sint\"}, // \t✓\t✓\t\t},\n'rg16float': {s: \"float\"}, // \t✓\t✓\t✓\t},\n'rgba16uint': {s: \"uint\"}, // \t✓\t✓\t\t✓},\n'rgba16sint': {s: \"sint\"}, // \t✓\t✓\t\t✓},\n'rgba16float': {s: \"float\"}, // \t✓\t✓\t✓\t✓},\n// 32-bit per component\n'r32uint': {s: \"uint\"}, // \t✓\t\t\t✓},\n'r32sint': {s: \"sint\"}, // \t✓\t\t\t✓},\n'r32float': {\"unfilterable-float\"\t✓\t✓\t\t✓},\n'rg32uint': {s: \"uint\"}, // \t✓\t\t\t✓},\n'rg32sint': {s: \"sint\"}, // \t✓\t\t\t✓},\n'rg32float': {\"unfilterable-float\"\t✓\t\t\t✓},\n'rgba32uint': {s: \"uint\"}, // \t✓\t\t\t✓},\n'rgba32sint': {s: \"sint\"}, // \t✓\t\t\t✓},\n'rgba32float': {\"unfilterable-float\"\t✓\t\t\t✓},\n// mixed component width\n'rgb10a2unorm': {s: \"float\"}, // \t✓\t✓\t✓\t}\n'rg11b10ufloat': {s: \"float\"}, // \t\t✓\t\t}\n// Format\tBytes per texel\tAspect\tGPUTextureSampleType\tValid image copy source\tValid image copy destination\n'stencil8': {1 − 4\tstencil\t\"uint\"\t✓}\n'depth16unorm': {2\tdepth\t\"depth\"\t✓}\n'depth24plus': {4\tdepth\t\"depth\"\t✗}\n'depth24plus': {stencil8\t4 − 8\tdepth\t\"depth\"\t✗}\n'stencil': {s: \"uint\"}, // \t✓}\n'depth32float': {4\tdepth\t\"depth\"\t✓\t✗}\n'depth24unorm': {stencil8\t4\tdepth\t\"depth\"\t✗}\n'stencil': {s: \"uint\"}, // \t✓}\n'depth32float': {stencil8}\n\n// Format\tBytes per block\tGPUTextureSampleType\tBlock Size\tFeature\n'rgb9e5ufloat': {c: 4, s: \"float\",\tbpp: 4/(1*1)},\n\n'bc1-rgba-unorm': {c: 4. s: \"float\", bpp: 8/(4 * 4) f: 'texture-compression-bc'},\n'bc1-rgba-unorm-srgb': {c: 4. s: \"float\", bpp: 8/(4 * 4) f: 'texture-compression-bc'},\n'bc2-rgba-unorm': {c: 4. s: \"float\", bpp: 16/(4 * 4) f: 'texture-compression-bc'},\n'bc2-rgba-unorm-srgb': {c: 4. s: \"float\", bpp: 16/(4 * 4) f: 'texture-compression-bc'},\n'bc3-rgba-unorm': {c: 4. s: \"float\", bpp: 16/(4 * 4) f: 'texture-compression-bc'},\n'bc3-rgba-unorm-srgb': {c: 4. s: \"float\", bpp: 16/(4 * 4) f: 'texture-compression-bc'},\n'bc4-r-unorm': {c: 1. s: \"float\", bpp: 8/(4 * 4) f: 'texture-compression-bc'},\n'bc4-r-snorm': {c: 1. s: \"float\", bpp: 8/(4 * 4) f: 'texture-compression-bc'},\n'bc5-rg-unorm': {c: 2. s: \"float\", bpp: 16/(4 * 4) f: 'texture-compression-bc'},\n'bc5-rg-snorm': { },\n'bc6h-rgb-ufloat': {\t16 },\n'bc6h-rgb-float': { },\n'bc7-rgba-unorm': {\t16 },\n'bc7-rgba-unorm-srgb': { },\n\n'etc2-rgb8unorm': {\t8\t\"float\"\t4 × 4\ttexture-compression-etc2 },\n'etc2-rgb8unorm-srgb': { },\n'etc2-rgb8a1unorm': {\t8 },\n'etc2-rgb8a1unorm-srgb': { },\n'etc2-rgba8unorm': {\t16 },\n'etc2-rgba8unorm-srgb': { },\n\n'eac-r11unorm': {\t8 },\n'eac-r11snorm': { },\n'eac-rg11unorm': {\t16 },\n'eac-rg11snorm': { },\n\n'astc-4x4-unorm': {\t16\t\"float\"\t4 × 4\ttexture-compression-astc },\n'astc-4x4-unorm-srgb': { },\n'astc-5x4-unorm': {\t16\t5 × 4 },\n'astc-5x4-unorm-srgb': { },\n'astc-5x5-unorm': {\t16\t5 × 5 },\n'astc-5x5-unorm-srgb': { },\n'astc-6x5-unorm': {\t16\t6 × 5 },\n'astc-6x5-unorm-srgb': { },\n'astc-6x6-unorm': {\t16\t6 × 6 },\n'astc-6x6-unorm-srgb': { },\n'astc-8x5-unorm': {\t16\t8 × 5 },\n'astc-8x5-unorm-srgb': { },\n'astc-8x6-unorm': {\t16\t8 × 6 },\n'astc-8x6-unorm-srgb': { },\n'astc-8x8-unorm': {\t16\t8 × 8 },\n'astc-8x8-unorm-srgb': { },\n'astc-10x5-unorm': {\t16\t10 × 5 },\n'astc-10x5-unorm-srgb': { },\n'astc-10x6-unorm': {\t16\t10 × 6 },\n'astc-10x6-unorm-srgb': { },\n'astc-10x8-unorm': {\t16\t10 × 8 },\n'astc-10x8-unorm-srgb': { },\n'astc-10x10-unorm': {\t16\t10 × 10 },\n'astc-10x10-unorm-srgb': { },\n'astc-12x10-unorm': {\t16\t12 × 10 },\n'astc-12x10-unorm-srgb': { },\n'astc-12x12-unorm': {\t16 },\n*/\n//# sourceMappingURL=texture-format-decoder.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Check if data is an external image */\nexport function isExternalImage(data) {\n return ((typeof ImageData !== 'undefined' && data instanceof ImageData) ||\n (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) ||\n (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) ||\n (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) ||\n (typeof VideoFrame !== 'undefined' && data instanceof VideoFrame) ||\n (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) ||\n (typeof OffscreenCanvas !== 'undefined' && data instanceof OffscreenCanvas));\n}\n/** Determine size (width and height) of provided image data */\nexport function getExternalImageSize(data) {\n if ((typeof ImageData !== 'undefined' && data instanceof ImageData) ||\n (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) ||\n (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) ||\n (typeof OffscreenCanvas !== 'undefined' && data instanceof OffscreenCanvas)) {\n return { width: data.width, height: data.height };\n }\n if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n return { width: data.naturalWidth, height: data.naturalHeight };\n }\n if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n return { width: data.videoWidth, height: data.videoHeight };\n }\n if (typeof VideoFrame !== 'undefined' && data instanceof VideoFrame) {\n // TODO: is this the right choice for width and height?\n return { width: data.displayWidth, height: data.displayHeight };\n }\n throw new Error('Unknown image type');\n}\n//# sourceMappingURL=image-types.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { lumaStats } from \"../utils/stats-manager.js\";\nimport { log } from \"../utils/log.js\";\nimport { uid } from \"../utils/uid.js\";\nimport { Buffer } from \"./resources/buffer.js\";\nimport { getVertexFormatInfo } from \"../shadertypes/vertex-arrays/decode-vertex-format.js\";\nimport { textureFormatDecoder } from \"../shadertypes/textures/texture-format-decoder.js\";\nimport { isExternalImage, getExternalImageSize } from \"../image-utils/image-types.js\";\n/** Limits for a device (max supported sizes of resources, max number of bindings etc) */\nexport class DeviceLimits {\n}\n/** Set-like class for features (lets apps check for WebGL / WebGPU extensions) */\nexport class DeviceFeatures {\n features;\n disabledFeatures;\n constructor(features = [], disabledFeatures) {\n this.features = new Set(features);\n this.disabledFeatures = disabledFeatures || {};\n }\n *[Symbol.iterator]() {\n yield* this.features;\n }\n has(feature) {\n return !this.disabledFeatures?.[feature] && this.features.has(feature);\n }\n}\n/**\n * WebGPU Device/WebGL context abstraction\n */\nexport class Device {\n static defaultProps = {\n id: null,\n powerPreference: 'high-performance',\n failIfMajorPerformanceCaveat: false,\n createCanvasContext: undefined,\n // WebGL specific\n webgl: {},\n // Callbacks\n // eslint-disable-next-line handle-callback-err\n onError: (error, context) => { },\n onResize: (context, info) => {\n const [width, height] = context.getDevicePixelSize();\n log.log(1, `${context} resized => ${width}x${height}px`)();\n },\n onPositionChange: (context, info) => {\n const [left, top] = context.getPosition();\n log.log(1, `${context} repositioned => ${left},${top}`)();\n },\n onVisibilityChange: (context) => log.log(1, `${context} Visibility changed ${context.isVisible}`)(),\n onDevicePixelRatioChange: (context, info) => log.log(1, `${context} DPR changed ${info.oldRatio} => ${context.devicePixelRatio}`)(),\n // Debug flags\n debug: log.get('debug') || undefined,\n debugShaders: log.get('debug-shaders') || undefined,\n debugFramebuffers: Boolean(log.get('debug-framebuffers')),\n debugFactories: Boolean(log.get('debug-factories')),\n debugWebGL: Boolean(log.get('debug-webgl')),\n debugSpectorJS: undefined, // Note: log setting is queried by the spector.js code\n debugSpectorJSUrl: undefined,\n // Experimental\n _reuseDevices: false,\n _requestMaxLimits: true,\n _cacheShaders: false,\n _cachePipelines: false,\n _cacheDestroyPolicy: 'unused',\n // TODO - Change these after confirming things work as expected\n _initializeFeatures: true,\n _disabledFeatures: {\n 'compilation-status-async-webgl': true\n },\n // INTERNAL\n _handle: undefined\n };\n get [Symbol.toStringTag]() {\n return 'Device';\n }\n toString() {\n return `Device(${this.id})`;\n }\n /** id of this device, primarily for debugging */\n id;\n /** A copy of the device props */\n props;\n /** Available for the application to store data on the device */\n userData = {};\n /** stats */\n statsManager = lumaStats;\n /** An abstract timestamp used for change tracking */\n timestamp = 0;\n /** True if this device has been reused during device creation (app has multiple references) */\n _reused = false;\n /** Used by other luma.gl modules to store data on the device */\n _lumaData = {};\n _textureCaps = {};\n constructor(props) {\n this.props = { ...Device.defaultProps, ...props };\n this.id = this.props.id || uid(this[Symbol.toStringTag].toLowerCase());\n }\n getVertexFormatInfo(format) {\n return getVertexFormatInfo(format);\n }\n isVertexFormatSupported(format) {\n return true;\n }\n /** Returns information about a texture format, such as data type, channels, bits per channel, compression etc */\n getTextureFormatInfo(format) {\n return textureFormatDecoder.getInfo(format);\n }\n /** Determines what operations are supported on a texture format on this particular device (checks against supported device features) */\n getTextureFormatCapabilities(format) {\n let textureCaps = this._textureCaps[format];\n if (!textureCaps) {\n const capabilities = this._getDeviceTextureFormatCapabilities(format);\n textureCaps = this._getDeviceSpecificTextureFormatCapabilities(capabilities);\n this._textureCaps[format] = textureCaps;\n }\n return textureCaps;\n }\n /** Calculates the number of mip levels for a texture of width, height and in case of 3d textures only, depth */\n getMipLevelCount(width, height, depth3d = 1) {\n const maxSize = Math.max(width, height, depth3d);\n return 1 + Math.floor(Math.log2(maxSize));\n }\n /** Check if data is an external image */\n isExternalImage(data) {\n return isExternalImage(data);\n }\n /** Get the size of an external image */\n getExternalImageSize(data) {\n return getExternalImageSize(data);\n }\n /** Check if device supports a specific texture format (creation and `nearest` sampling) */\n isTextureFormatSupported(format) {\n return this.getTextureFormatCapabilities(format).create;\n }\n /** Check if linear filtering (sampler interpolation) is supported for a specific texture format */\n isTextureFormatFilterable(format) {\n return this.getTextureFormatCapabilities(format).filter;\n }\n /** Check if device supports rendering to a framebuffer color attachment of a specific texture format */\n isTextureFormatRenderable(format) {\n return this.getTextureFormatCapabilities(format).render;\n }\n /** Check if a specific texture format is GPU compressed */\n isTextureFormatCompressed(format) {\n return textureFormatDecoder.isCompressed(format);\n }\n // DEBUG METHODS\n pushDebugGroup(groupLabel) {\n this.commandEncoder.pushDebugGroup(groupLabel);\n }\n popDebugGroup() {\n this.commandEncoder?.popDebugGroup();\n }\n insertDebugMarker(markerLabel) {\n this.commandEncoder?.insertDebugMarker(markerLabel);\n }\n /**\n * Trigger device loss.\n * @returns `true` if context loss could actually be triggered.\n * @note primarily intended for testing how application reacts to device loss\n */\n loseDevice() {\n return false;\n }\n /** A monotonic counter for tracking buffer and texture updates */\n incrementTimestamp() {\n return this.timestamp++;\n }\n /**\n * Reports Device errors in a way that optimizes for developer experience / debugging.\n * - Logs so that the console error links directly to the source code that generated the error.\n * - Includes the object that reported the error in the log message, even if the error is asynchronous.\n *\n * Conventions when calling reportError():\n * - Always call the returned function - to ensure error is logged, at the error site\n * - Follow with a call to device.debug() - to ensure that the debugger breaks at the error site\n *\n * @param error - the error to report. If needed, just create a new Error object with the appropriate message.\n * @param context - pass `this` as context, otherwise it may not be available in the debugger for async errors.\n * @returns the logger function returned by device.props.onError() so that it can be called from the error site.\n *\n * @example\n * device.reportError(new Error(...), this)();\n * device.debug();\n */\n reportError(error, context, ...args) {\n // Call the error handler\n const isHandled = this.props.onError(error, context);\n if (!isHandled) {\n // Note: Returns a function that must be called: `device.reportError(...)()`\n return log.error(error.message, context, ...args);\n }\n return () => { };\n }\n /** Break in the debugger - if device.props.debug is true */\n debug() {\n if (this.props.debug) {\n // @ts-ignore\n debugger; // eslint-disable-line\n }\n else {\n // TODO(ibgreen): Does not appear to be printed in the console\n const message = `\\\n'Type luma.log.set({debug: true}) in console to enable debug breakpoints',\nor create a device with the 'debug: true' prop.`;\n log.once(0, message)();\n }\n }\n /** Returns the default / primary canvas context. Throws an error if no canvas context is available (a WebGPU compute device) */\n getDefaultCanvasContext() {\n if (!this.canvasContext) {\n throw new Error('Device has no default CanvasContext. See props.createCanvasContext');\n }\n return this.canvasContext;\n }\n /** Create a RenderPass using the default CommandEncoder */\n beginRenderPass(props) {\n return this.commandEncoder.beginRenderPass(props);\n }\n /** Create a ComputePass using the default CommandEncoder*/\n beginComputePass(props) {\n return this.commandEncoder.beginComputePass(props);\n }\n // DEPRECATED METHODS\n /** @deprecated Use getDefaultCanvasContext() */\n getCanvasContext() {\n return this.getDefaultCanvasContext();\n }\n // WebGL specific HACKS - enables app to remove webgl import\n // Use until we have a better way to handle these\n /** @deprecated - will be removed - should use command encoder */\n readPixelsToArrayWebGL(source, options) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use command encoder */\n readPixelsToBufferWebGL(source, options) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n setParametersWebGL(parameters) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n getParametersWebGL(parameters) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use WebGPU parameters (pipeline) */\n withParametersWebGL(parameters, func) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use clear arguments in RenderPass */\n clearWebGL(options) {\n throw new Error('not implemented');\n }\n /** @deprecated - will be removed - should use for debugging only */\n resetWebGL() {\n throw new Error('not implemented');\n }\n // IMPLEMENTATION\n /** Helper to get the canvas context props */\n static _getCanvasContextProps(props) {\n return props.createCanvasContext === true ? {} : props.createCanvasContext;\n }\n _getDeviceTextureFormatCapabilities(format) {\n const genericCapabilities = textureFormatDecoder.getCapabilities(format);\n // Check standard features\n const checkFeature = (feature) => (typeof feature === 'string' ? this.features.has(feature) : feature) ?? true;\n const supported = checkFeature(genericCapabilities.create);\n return {\n format,\n create: supported,\n render: supported && checkFeature(genericCapabilities.render),\n filter: supported && checkFeature(genericCapabilities.filter),\n blend: supported && checkFeature(genericCapabilities.blend),\n store: supported && checkFeature(genericCapabilities.store)\n };\n }\n /** Subclasses use this to support .createBuffer() overloads */\n _normalizeBufferProps(props) {\n if (props instanceof ArrayBuffer || ArrayBuffer.isView(props)) {\n props = { data: props };\n }\n // TODO(ibgreen) - fragile, as this is done before we merge with default options\n // inside the Buffer constructor\n const newProps = { ...props };\n // Deduce indexType\n const usage = props.usage || 0;\n if (usage & Buffer.INDEX) {\n if (!props.indexType) {\n if (props.data instanceof Uint32Array) {\n newProps.indexType = 'uint32';\n }\n else if (props.data instanceof Uint16Array) {\n newProps.indexType = 'uint16';\n }\n }\n if (!newProps.indexType) {\n throw new Error('indices buffer content must be of type uint16 or uint32');\n }\n }\n return newProps;\n }\n}\n//# sourceMappingURL=device.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'deck.gl: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map"],"names":["getHiResTimestamp","timestamp","timeParts","Stat","name","type","samples","value","time","Stats","options","stat","fn","table","stats","result","StatsManager","lumaStats","texture_compression_bc","texture_compression_astc","texture_compression_etc2","texture_compression_etc1_webgl","texture_compression_pvrtc_webgl","texture_compression_atc_webgl","float32_renderable","float16_renderable","rgb9e5ufloat_renderable","snorm8_renderable","norm16_renderable","snorm16_renderable","float32_filterable","float16_filterable","getTextureFormatDefinition","format","info","TEXTURE_FORMAT_TABLE","TEXTURE_FORMAT_COLOR_DEPTH_TABLE","TEXTURE_FORMAT_COMPRESSED_TABLE","COMPRESSED_TEXTURE_FORMAT_PREFIXES","RGB_FORMAT_REGEX","TextureFormatDecoder","getTextureFormatInfo","prefix","formatCapabilities","formatInfo","isDepthStencil","isSigned","isInteger","isWebGLSpecific","textureFormatDecoder","getTextureFormatInfoUsingTable","blockSize","getCompressedTextureBlockSize","matches","channels","length","srgb","suffix","dataType","decodedType","getDataTypeInfo","bits","components","bitsPerChannel","bytesPerPixel","blockWidth","blockHeight","isExternalImage","data","getExternalImageSize","DeviceLimits","DeviceFeatures","features","disabledFeatures","feature","Device","error","context","width","height","log","left","top","props","uid","getVertexFormatInfo","textureCaps","capabilities","depth3d","maxSize","groupLabel","markerLabel","args","source","parameters","func","genericCapabilities","checkFeature","supported","newProps","Buffer","assert","condition","message"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
@@ -0,0 +1,26 @@
1
+ import{L as c}from"./layer-extension-CZ3zsHuN.js";const l={clipBounds:[0,0,1,1],clipByInstance:void 0},t=`
2
+ uniform clipUniforms {
3
+ vec4 bounds;
4
+ } clip;
5
+
6
+ bool clip_isInBounds(vec2 position) {
7
+ return position.x >= clip.bounds[0] && position.y >= clip.bounds[1] && position.x < clip.bounds[2] && position.y < clip.bounds[3];
8
+ }
9
+ `,p={name:"clip",vs:t,uniformTypes:{bounds:"vec4<f32>"}},d={"vs:#decl":`
10
+ out float clip_isVisible;
11
+ `,"vs:DECKGL_FILTER_GL_POSITION":`
12
+ clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
13
+ `,"fs:#decl":`
14
+ in float clip_isVisible;
15
+ `,"fs:DECKGL_FILTER_COLOR":`
16
+ if (clip_isVisible < 0.5) discard;
17
+ `},a={name:"clip",fs:t,uniformTypes:{bounds:"vec4<f32>"}},r={"vs:#decl":`
18
+ out vec2 clip_commonPosition;
19
+ `,"vs:DECKGL_FILTER_GL_POSITION":`
20
+ clip_commonPosition = geometry.position.xy;
21
+ `,"fs:#decl":`
22
+ in vec2 clip_commonPosition;
23
+ `,"fs:DECKGL_FILTER_COLOR":`
24
+ if (!clip_isInBounds(clip_commonPosition)) discard;
25
+ `};class e extends c{getShaders(){let i="instancePositions"in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(i=!!this.props.clipByInstance),this.state.clipByInstance=i,i?{modules:[p],inject:d}:{modules:[a],inject:r}}draw(){const{clipBounds:i}=this.props,n={};if(this.state.clipByInstance)n.bounds=i;else{const s=this.projectPosition([i[0],i[1],0]),o=this.projectPosition([i[2],i[3],0]);n.bounds=[Math.min(s[0],o[0]),Math.min(s[1],o[1]),Math.max(s[0],o[0]),Math.max(s[1],o[1])]}this.setShaderModuleProps({clip:n})}}e.defaultProps=l;e.extensionName="ClipExtension";export{e as C};
26
+ //# sourceMappingURL=clip-extension-DTCP51Ak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clip-extension-DTCP51Ak.js","sources":["../../../../../../node_modules/.pnpm/@deck.gl+extensions@9.2.2_@deck.gl+core@9.2.2_@luma.gl+core@9.2.4_@luma.gl+engine@9.2.4_d31ba145b94292aee326bf1572dcd2be/node_modules/@deck.gl/extensions/dist/clip/clip-extension.js"],"sourcesContent":["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { LayerExtension } from '@deck.gl/core';\nconst defaultProps = {\n clipBounds: [0, 0, 1, 1],\n clipByInstance: undefined\n};\nconst shaderFunction = /* glsl */ `\nuniform clipUniforms {\n vec4 bounds;\n} clip;\n\nbool clip_isInBounds(vec2 position) {\n return position.x >= clip.bounds[0] && position.y >= clip.bounds[1] && position.x < clip.bounds[2] && position.y < clip.bounds[3];\n}\n`;\n/*\n * The vertex-shader version clips geometries by their anchor position\n * e.g. ScatterplotLayer - show if the center of a circle is within bounds\n */\nconst shaderModuleVs = {\n name: 'clip',\n vs: shaderFunction,\n uniformTypes: {\n bounds: 'vec4<f32>'\n }\n};\nconst injectionVs = {\n 'vs:#decl': /* glsl */ `\nout float clip_isVisible;\n`,\n 'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `\n clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));\n`,\n 'fs:#decl': /* glsl */ `\nin float clip_isVisible;\n`,\n 'fs:DECKGL_FILTER_COLOR': /* glsl */ `\n if (clip_isVisible < 0.5) discard;\n`\n};\n/*\n * The fragment-shader version clips pixels at the bounds\n * e.g. PolygonLayer - show the part of the polygon that intersect with the bounds\n */\nconst shaderModuleFs = {\n name: 'clip',\n fs: shaderFunction,\n uniformTypes: {\n bounds: 'vec4<f32>'\n }\n};\nconst injectionFs = {\n 'vs:#decl': /* glsl */ `\nout vec2 clip_commonPosition;\n`,\n 'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `\n clip_commonPosition = geometry.position.xy;\n`,\n 'fs:#decl': /* glsl */ `\nin vec2 clip_commonPosition;\n`,\n 'fs:DECKGL_FILTER_COLOR': /* glsl */ `\n if (!clip_isInBounds(clip_commonPosition)) discard;\n`\n};\n/** Adds support for clipping rendered layers by rectangular bounds. */\nclass ClipExtension extends LayerExtension {\n getShaders() {\n // If `clipByInstance: true`, the entire object is shown/hidden based on its anchor position (done by vertex shader)\n // Otherwise, the object is trimmed by the clip bounds (done by fragment shader)\n // Default behavior: consider a layer instanced if it has attribute `instancePositions`\n let clipByInstance = 'instancePositions' in this.getAttributeManager().attributes;\n // Users can override by setting the `clipByInstance` prop\n if (this.props.clipByInstance !== undefined) {\n clipByInstance = Boolean(this.props.clipByInstance);\n }\n this.state.clipByInstance = clipByInstance;\n return clipByInstance\n ? {\n modules: [shaderModuleVs],\n inject: injectionVs\n }\n : {\n modules: [shaderModuleFs],\n inject: injectionFs\n };\n }\n /* eslint-disable camelcase */\n draw() {\n const { clipBounds } = this.props;\n const clipProps = {};\n if (this.state.clipByInstance) {\n clipProps.bounds = clipBounds;\n }\n else {\n const corner0 = this.projectPosition([clipBounds[0], clipBounds[1], 0]);\n const corner1 = this.projectPosition([clipBounds[2], clipBounds[3], 0]);\n clipProps.bounds = [\n Math.min(corner0[0], corner1[0]),\n Math.min(corner0[1], corner1[1]),\n Math.max(corner0[0], corner1[0]),\n Math.max(corner0[1], corner1[1])\n ];\n }\n this.setShaderModuleProps({ clip: clipProps });\n }\n}\nClipExtension.defaultProps = defaultProps;\nClipExtension.extensionName = 'ClipExtension';\nexport default ClipExtension;\n//# sourceMappingURL=clip-extension.js.map"],"names":["defaultProps","shaderFunction","shaderModuleVs","injectionVs","shaderModuleFs","injectionFs","ClipExtension","LayerExtension","clipByInstance","clipBounds","clipProps","corner0","corner1"],"mappings":"kDAIA,MAAMA,EAAe,CACjB,WAAY,CAAC,EAAG,EAAG,EAAG,CAAC,EACvB,eAAgB,MACpB,EACMC,EAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAa5BC,EAAiB,CACnB,KAAM,OACN,GAAID,EACJ,aAAc,CACV,OAAQ,WAChB,CACA,EACME,EAAc,CAChB,WAAuB;AAAA;AAAA,EAGvB,+BAA2C;AAAA;AAAA,EAG3C,WAAuB;AAAA;AAAA,EAGvB,yBAAqC;AAAA;AAAA,CAGzC,EAKMC,EAAiB,CACnB,KAAM,OACN,GAAIH,EACJ,aAAc,CACV,OAAQ,WAChB,CACA,EACMI,EAAc,CAChB,WAAuB;AAAA;AAAA,EAGvB,+BAA2C;AAAA;AAAA,EAG3C,WAAuB;AAAA;AAAA,EAGvB,yBAAqC;AAAA;AAAA,CAGzC,EAEA,MAAMC,UAAsBC,CAAe,CACvC,YAAa,CAIT,IAAIC,EAAiB,sBAAuB,KAAK,oBAAmB,EAAG,WAEvE,OAAI,KAAK,MAAM,iBAAmB,SAC9BA,EAAiB,EAAQ,KAAK,MAAM,gBAExC,KAAK,MAAM,eAAiBA,EACrBA,EACD,CACE,QAAS,CAACN,CAAc,EACxB,OAAQC,CACxB,EACc,CACE,QAAS,CAACC,CAAc,EACxB,OAAQC,CACxB,CACI,CAEA,MAAO,CACH,KAAM,CAAE,WAAAI,GAAe,KAAK,MACtBC,EAAY,CAAA,EAClB,GAAI,KAAK,MAAM,eACXA,EAAU,OAASD,MAElB,CACD,MAAME,EAAU,KAAK,gBAAgB,CAACF,EAAW,CAAC,EAAGA,EAAW,CAAC,EAAG,CAAC,CAAC,EAChEG,EAAU,KAAK,gBAAgB,CAACH,EAAW,CAAC,EAAGA,EAAW,CAAC,EAAG,CAAC,CAAC,EACtEC,EAAU,OAAS,CACf,KAAK,IAAIC,EAAQ,CAAC,EAAGC,EAAQ,CAAC,CAAC,EAC/B,KAAK,IAAID,EAAQ,CAAC,EAAGC,EAAQ,CAAC,CAAC,EAC/B,KAAK,IAAID,EAAQ,CAAC,EAAGC,EAAQ,CAAC,CAAC,EAC/B,KAAK,IAAID,EAAQ,CAAC,EAAGC,EAAQ,CAAC,CAAC,CAC/C,CACQ,CACA,KAAK,qBAAqB,CAAE,KAAMF,CAAS,CAAE,CACjD,CACJ,CACAJ,EAAc,aAAeN,EAC7BM,EAAc,cAAgB","x_google_ignoreList":[0]}
@@ -0,0 +1,17 @@
1
+ const o=`
2
+
3
+ struct ColorUniforms {
4
+ opacity: f32,
5
+ };
6
+
7
+ var<private> color: ColorUniforms = ColorUniforms(1.0);
8
+ // TODO (kaapp) avoiding binding index collisions to handle layer opacity
9
+ // requires some thought.
10
+ // @group(0) @binding(0) var<uniform> color: ColorUniforms;
11
+
12
+ @must_use
13
+ fn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {
14
+ return vec4(fragColor.rgb * fragColor.a, fragColor.a);
15
+ };
16
+ `,e={name:"color",dependencies:[],source:o,getUniforms:r=>({}),uniformTypes:{opacity:"f32"}};export{e as c};
17
+ //# sourceMappingURL=color-CUNNsFV-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-CUNNsFV-.js","sources":["../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/shaderlib/color/color.js"],"sourcesContent":["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst colorWGSL = /* WGSL */ `\n\nstruct ColorUniforms {\n opacity: f32,\n};\n\nvar<private> color: ColorUniforms = ColorUniforms(1.0);\n// TODO (kaapp) avoiding binding index collisions to handle layer opacity \n// requires some thought.\n// @group(0) @binding(0) var<uniform> color: ColorUniforms;\n\n@must_use\nfn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {\n return vec4(fragColor.rgb * fragColor.a, fragColor.a); \n};\n`;\nexport default {\n name: 'color',\n dependencies: [],\n source: colorWGSL,\n getUniforms: (_props) => {\n // TODO (kaapp) Handle layer opacity\n // apply gamma to opacity to make it visually \"linear\"\n // TODO - v10: use raw opacity?\n // opacity: Math.pow(props.opacity!, 1 / 2.2)\n return {};\n },\n uniformTypes: {\n opacity: 'f32'\n }\n // @ts-ignore TODO v9.1\n};\n//# sourceMappingURL=color.js.map"],"names":["colorWGSL","color","_props"],"mappings":"AAGA,MAAMA,EAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgB7BC,EAAe,CACX,KAAM,QACN,aAAc,CAAA,EACd,OAAQD,EACR,YAAcE,IAKH,CAAA,GAEX,aAAc,CACV,QAAS,KACjB,CAEA","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{G as s}from"./layer-DO63TrsS.js";import{u as o}from"./shader-BJmsOfPx.js";class T extends s{constructor(e={}){const{id:t=o("cube-geometry"),indices:a=!0}=e;super(a?{...e,id:t,topology:"triangle-list",indices:{size:1,value:r},attributes:{...u,...e.attributes}}:{...e,id:t,topology:"triangle-list",indices:void 0,attributes:{...N,...e.attributes}})}}const r=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),i=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),n=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),O=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),E=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),l=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),_=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),u={POSITION:{size:3,value:i},NORMAL:{size:3,value:n},TEXCOORD_0:{size:2,value:O}},N={POSITION:{size:3,value:E},TEXCOORD_0:{size:2,value:l},COLOR_0:{size:3,value:_}};export{T as C};
2
+ //# sourceMappingURL=cube-geometry-CzJ_uBWa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cube-geometry-CzJ_uBWa.js","sources":["../../../../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/geometries/cube-geometry.js"],"sourcesContent":["// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Geometry } from \"../geometry/geometry.js\";\nimport { uid } from \"../utils/uid.js\";\nexport class CubeGeometry extends Geometry {\n constructor(props = {}) {\n const { id = uid('cube-geometry'), indices = true } = props;\n super(indices\n ? {\n ...props,\n id,\n topology: 'triangle-list',\n indices: { size: 1, value: CUBE_INDICES },\n attributes: { ...ATTRIBUTES, ...props.attributes }\n }\n : {\n ...props,\n id,\n topology: 'triangle-list',\n indices: undefined,\n attributes: { ...NON_INDEXED_ATTRIBUTES, ...props.attributes }\n });\n }\n}\n// prettier-ignore\nconst CUBE_INDICES = new Uint16Array([\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13,\n 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n]);\n// prettier-ignore\nconst CUBE_POSITIONS = new Float32Array([\n -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,\n -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1,\n -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1,\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1,\n 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1\n]);\n// TODO - could be Uint8\n// prettier-ignore\nconst CUBE_NORMALS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,\n // Back face\n 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1,\n // Top face\n 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n // Bottom face\n 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\n // Right face\n 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n // Left face\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0\n]);\n// prettier-ignore\nconst CUBE_TEX_COORDS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 1, 1, 0, 1,\n // Back face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Top face\n 0, 1, 0, 0, 1, 0, 1, 1,\n // Bottom face\n 1, 1, 0, 1, 0, 0, 1, 0,\n // Right face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Left face\n 0, 0, 1, 0, 1, 1, 0, 1\n]);\n// float4 position\n// prettier-ignore\nexport const CUBE_NON_INDEXED_POSITIONS = new Float32Array([\n 1, -1, 1,\n -1, -1, 1,\n -1, -1, -1,\n 1, -1, -1,\n 1, -1, 1,\n -1, -1, -1,\n 1, 1, 1,\n 1, -1, 1,\n 1, -1, -1,\n 1, 1, -1,\n 1, 1, 1,\n 1, -1, -1,\n -1, 1, 1,\n 1, 1, 1,\n 1, 1, -1,\n -1, 1, -1,\n -1, 1, 1,\n 1, 1, -1,\n -1, -1, 1,\n -1, 1, 1,\n -1, 1, -1,\n -1, -1, -1,\n -1, -1, 1,\n -1, 1, -1,\n 1, 1, 1,\n -1, 1, 1,\n -1, -1, 1,\n -1, -1, 1,\n 1, -1, 1,\n 1, 1, 1,\n 1, -1, -1,\n -1, -1, -1,\n -1, 1, -1,\n 1, 1, -1,\n 1, -1, -1,\n -1, 1, -1,\n]);\n// float2 uv,\n// prettier-ignore\nexport const CUBE_NON_INDEXED_TEX_COORDS = new Float32Array([\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n 1, 1,\n 0, 1,\n 0, 0,\n 0, 0,\n 1, 0,\n 1, 1,\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n]);\n// float4 color\n// prettier-ignore\nexport const CUBE_NON_INDEXED_COLORS = new Float32Array([\n 1, 0, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 0, 1,\n 1, 0, 0, 1,\n 1, 0, 1, 1,\n 0, 0, 0, 1,\n 1, 1, 1, 1,\n 1, 0, 1, 1,\n 1, 0, 0, 1,\n 1, 1, 0, 1,\n 1, 1, 1, 1,\n 1, 0, 0, 1,\n 0, 1, 1, 1,\n 1, 1, 1, 1,\n 1, 1, 0, 1,\n 0, 1, 0, 1,\n 0, 1, 1, 1,\n 1, 1, 0, 1,\n 0, 0, 1, 1,\n 0, 1, 1, 1,\n 0, 1, 0, 1,\n 0, 0, 0, 1,\n 0, 0, 1, 1,\n 0, 1, 0, 1,\n 1, 1, 1, 1,\n 0, 1, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 1, 1,\n 1, 0, 1, 1,\n 1, 1, 1, 1,\n 1, 0, 0, 1,\n 0, 0, 0, 1,\n 0, 1, 0, 1,\n 1, 1, 0, 1,\n 1, 0, 0, 1,\n 0, 1, 0, 1,\n]);\nconst ATTRIBUTES = {\n POSITION: { size: 3, value: CUBE_POSITIONS },\n NORMAL: { size: 3, value: CUBE_NORMALS },\n TEXCOORD_0: { size: 2, value: CUBE_TEX_COORDS }\n};\nconst NON_INDEXED_ATTRIBUTES = {\n POSITION: { size: 3, value: CUBE_NON_INDEXED_POSITIONS },\n // NORMAL: {size: 3, value: CUBE_NON_INDEXED_NORMALS},\n TEXCOORD_0: { size: 2, value: CUBE_NON_INDEXED_TEX_COORDS },\n COLOR_0: { size: 3, value: CUBE_NON_INDEXED_COLORS }\n};\n//# sourceMappingURL=cube-geometry.js.map"],"names":["CubeGeometry","Geometry","props","id","uid","indices","CUBE_INDICES","ATTRIBUTES","NON_INDEXED_ATTRIBUTES","CUBE_POSITIONS","CUBE_NORMALS","CUBE_TEX_COORDS","CUBE_NON_INDEXED_POSITIONS","CUBE_NON_INDEXED_TEX_COORDS","CUBE_NON_INDEXED_COLORS"],"mappings":"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","x_google_ignoreList":[0]}