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
+ import{V as j,b as g,p as y,g as d,n as P,h as w}from"./deep-equal-uriyKJca.js";const z=new g().lookAt({eye:[0,0,1]});function A({width:s,height:t,near:n,far:o,padding:a}){let c=-s/2,e=s/2,u=-t/2,f=t/2;if(a){const{left:M=0,right:i=0,top:l=0,bottom:m=0}=a,r=w((M+s-i)/2,0,s)-s/2,p=w((l+t-m)/2,0,t)-t/2;c-=r,e-=r,u+=p,f+=p}return new g().ortho({left:c,right:e,bottom:u,top:f,near:n,far:o})}class F extends j{constructor(t){const{width:n,height:o,near:a=.1,far:c=1e3,zoom:e=0,target:u=[0,0,0],padding:f=null,flipY:M=!0}=t,i=Array.isArray(e)?e[0]:e,l=Array.isArray(e)?e[1]:e,m=Math.min(i,l),r=Math.pow(2,m);let p;if(i!==l){const h=Math.pow(2,i),x=Math.pow(2,l);p={unitsPerMeter:[h/r,x/r,1],metersPerUnit:[r/h,r/x,1]}}super({...t,longitude:void 0,position:u,viewMatrix:z.clone().scale([r,r*(M?-1:1),r]),projectionMatrix:A({width:n||1,height:o||1,padding:f,near:a,far:c}),zoom:m,distanceScales:p})}projectFlat([t,n]){const{unitsPerMeter:o}=this.distanceScales;return[t*o[0],n*o[1]]}unprojectFlat([t,n]){const{metersPerUnit:o}=this.distanceScales;return[t*o[0],n*o[1]]}panByPosition(t,n){const o=y(n,this.pixelUnprojectionMatrix),a=this.projectFlat(t),c=d([],a,P([],o)),e=d([],this.center,c);return{target:this.unprojectFlat(e)}}}export{F as O};
2
+ //# sourceMappingURL=orthographic-viewport-CzZmHDEZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orthographic-viewport-CzZmHDEZ.js","sources":["../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/viewports/orthographic-viewport.js"],"sourcesContent":["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport Viewport from \"../viewports/viewport.js\";\nimport { Matrix4, clamp, vec2 } from '@math.gl/core';\nimport { pixelsToWorld } from '@math.gl/web-mercator';\nconst viewMatrix = new Matrix4().lookAt({ eye: [0, 0, 1] });\nfunction getProjectionMatrix({ width, height, near, far, padding }) {\n let left = -width / 2;\n let right = width / 2;\n let bottom = -height / 2;\n let top = height / 2;\n if (padding) {\n const { left: l = 0, right: r = 0, top: t = 0, bottom: b = 0 } = padding;\n const offsetX = clamp((l + width - r) / 2, 0, width) - width / 2;\n const offsetY = clamp((t + height - b) / 2, 0, height) - height / 2;\n left -= offsetX;\n right -= offsetX;\n bottom += offsetY;\n top += offsetY;\n }\n return new Matrix4().ortho({\n left,\n right,\n bottom,\n top,\n near,\n far\n });\n}\nexport default class OrthographicViewport extends Viewport {\n constructor(props) {\n const { width, height, near = 0.1, far = 1000, zoom = 0, target = [0, 0, 0], padding = null, flipY = true } = props;\n const zoomX = Array.isArray(zoom) ? zoom[0] : zoom;\n const zoomY = Array.isArray(zoom) ? zoom[1] : zoom;\n const zoom_ = Math.min(zoomX, zoomY);\n const scale = Math.pow(2, zoom_);\n let distanceScales;\n if (zoomX !== zoomY) {\n const scaleX = Math.pow(2, zoomX);\n const scaleY = Math.pow(2, zoomY);\n distanceScales = {\n unitsPerMeter: [scaleX / scale, scaleY / scale, 1],\n metersPerUnit: [scale / scaleX, scale / scaleY, 1]\n };\n }\n super({\n ...props,\n // in case viewState contains longitude/latitude values,\n // make sure that the base Viewport class does not treat this as a geospatial viewport\n longitude: undefined,\n position: target,\n viewMatrix: viewMatrix.clone().scale([scale, scale * (flipY ? -1 : 1), scale]),\n projectionMatrix: getProjectionMatrix({\n width: width || 1,\n height: height || 1,\n padding,\n near,\n far\n }),\n zoom: zoom_,\n distanceScales\n });\n }\n projectFlat([X, Y]) {\n const { unitsPerMeter } = this.distanceScales;\n return [X * unitsPerMeter[0], Y * unitsPerMeter[1]];\n }\n unprojectFlat([x, y]) {\n const { metersPerUnit } = this.distanceScales;\n return [x * metersPerUnit[0], y * metersPerUnit[1]];\n }\n /* Needed by LinearInterpolator */\n panByPosition(coords, pixel) {\n const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(coords);\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n return { target: this.unprojectFlat(newCenter) };\n }\n}\n//# sourceMappingURL=orthographic-viewport.js.map"],"names":["viewMatrix","Matrix4","getProjectionMatrix","width","height","near","far","padding","left","right","bottom","top","l","r","t","b","offsetX","clamp","offsetY","OrthographicViewport","Viewport","props","zoom","target","flipY","zoomX","zoomY","zoom_","scale","distanceScales","scaleX","scaleY","X","Y","unitsPerMeter","x","y","metersPerUnit","coords","pixel","fromLocation","pixelsToWorld","toLocation","translate","vec2.add","vec2.negate","newCenter"],"mappings":"gFAMA,MAAMA,EAAa,IAAIC,EAAO,EAAG,OAAO,CAAE,IAAK,CAAC,EAAG,EAAG,CAAC,EAAG,EAC1D,SAASC,EAAoB,CAAE,MAAAC,EAAO,OAAAC,EAAQ,KAAAC,EAAM,IAAAC,EAAK,QAAAC,GAAW,CAChE,IAAIC,EAAO,CAACL,EAAQ,EAChBM,EAAQN,EAAQ,EAChBO,EAAS,CAACN,EAAS,EACnBO,EAAMP,EAAS,EACnB,GAAIG,EAAS,CACT,KAAM,CAAE,KAAMK,EAAI,EAAG,MAAOC,EAAI,EAAG,IAAKC,EAAI,EAAG,OAAQC,EAAI,CAAC,EAAKR,EAC3DS,EAAUC,GAAOL,EAAIT,EAAQU,GAAK,EAAG,EAAGV,CAAK,EAAIA,EAAQ,EACzDe,EAAUD,GAAOH,EAAIV,EAASW,GAAK,EAAG,EAAGX,CAAM,EAAIA,EAAS,EAClEI,GAAQQ,EACRP,GAASO,EACTN,GAAUQ,EACVP,GAAOO,CACX,CACA,OAAO,IAAIjB,EAAO,EAAG,MAAM,CACvB,KAAAO,EACA,MAAAC,EACA,OAAAC,EACA,IAAAC,EACA,KAAAN,EACA,IAAAC,CACR,CAAK,CACL,CACe,MAAMa,UAA6BC,CAAS,CACvD,YAAYC,EAAO,CACf,KAAM,CAAE,MAAAlB,EAAO,OAAAC,EAAQ,KAAAC,EAAO,GAAK,IAAAC,EAAM,IAAM,KAAAgB,EAAO,EAAG,OAAAC,EAAS,CAAC,EAAG,EAAG,CAAC,EAAG,QAAAhB,EAAU,KAAM,MAAAiB,EAAQ,EAAI,EAAKH,EACxGI,EAAQ,MAAM,QAAQH,CAAI,EAAIA,EAAK,CAAC,EAAIA,EACxCI,EAAQ,MAAM,QAAQJ,CAAI,EAAIA,EAAK,CAAC,EAAIA,EACxCK,EAAQ,KAAK,IAAIF,EAAOC,CAAK,EAC7BE,EAAQ,KAAK,IAAI,EAAGD,CAAK,EAC/B,IAAIE,EACJ,GAAIJ,IAAUC,EAAO,CACjB,MAAMI,EAAS,KAAK,IAAI,EAAGL,CAAK,EAC1BM,EAAS,KAAK,IAAI,EAAGL,CAAK,EAChCG,EAAiB,CACb,cAAe,CAACC,EAASF,EAAOG,EAASH,EAAO,CAAC,EACjD,cAAe,CAACA,EAAQE,EAAQF,EAAQG,EAAQ,CAAC,CACjE,CACQ,CACA,MAAM,CACF,GAAGV,EAGH,UAAW,OACX,SAAUE,EACV,WAAYvB,EAAW,MAAK,EAAG,MAAM,CAAC4B,EAAOA,GAASJ,EAAQ,GAAK,GAAII,CAAK,CAAC,EAC7E,iBAAkB1B,EAAoB,CAClC,MAAOC,GAAS,EAChB,OAAQC,GAAU,EAClB,QAAAG,EACA,KAAAF,EACA,IAAAC,CAChB,CAAa,EACD,KAAMqB,EACN,eAAAE,CACZ,CAAS,CACL,CACA,YAAY,CAACG,EAAGC,CAAC,EAAG,CAChB,KAAM,CAAE,cAAAC,GAAkB,KAAK,eAC/B,MAAO,CAACF,EAAIE,EAAc,CAAC,EAAGD,EAAIC,EAAc,CAAC,CAAC,CACtD,CACA,cAAc,CAACC,EAAGC,CAAC,EAAG,CAClB,KAAM,CAAE,cAAAC,GAAkB,KAAK,eAC/B,MAAO,CAACF,EAAIE,EAAc,CAAC,EAAGD,EAAIC,EAAc,CAAC,CAAC,CACtD,CAEA,cAAcC,EAAQC,EAAO,CACzB,MAAMC,EAAeC,EAAcF,EAAO,KAAK,uBAAuB,EAChEG,EAAa,KAAK,YAAYJ,CAAM,EACpCK,EAAYC,EAAS,CAAA,EAAIF,EAAYG,EAAY,CAAA,EAAIL,CAAY,CAAC,EAClEM,EAAYF,EAAS,CAAA,EAAI,KAAK,OAAQD,CAAS,EACrD,MAAO,CAAE,OAAQ,KAAK,cAAcG,CAAS,CAAC,CAClD,CACJ","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{x as k}from"./deep-equal-uriyKJca.js";class x{constructor(e,r={id:"pass"}){const{id:t}=r;this.id=t,this.device=e,this.props={...r}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}}class S extends x{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){const[r,t]=this.device.canvasContext.getDrawingBufferSize(),o=e.clearCanvas??!0,n=e.clearColor??(o?[0,0,0,0]:!1),s=o?1:!1,a=o?0:!1,l=e.colorMask??15,i={viewport:[0,0,r,t]};e.colorMask&&(i.colorMask=l),e.scissorRect&&(i.scissorRect=e.scissorRect);const c=this.device.beginRenderPass({framebuffer:e.target,parameters:i,clearColor:n,clearDepth:s,clearStencil:a});try{return this._drawLayers(c,e)}finally{c.end(),this.device.submit()}}_drawLayers(e,r){const{target:t,shaderModuleProps:o,viewports:n,views:s,onViewportActive:a,clearStack:l=!0}=r;r.pass=r.pass||"unknown",l&&(this._lastRenderIndex=-1);const i=[];for(const c of n){const g=s&&s[c.id];a?.(c);const u=this._getDrawLayerParams(c,r),w=c.subViewports||[c];for(const f of w){const p=this._drawLayersInViewport(e,{target:t,shaderModuleProps:o,viewport:f,view:g,pass:r.pass,layers:r.layers},u);i.push(p)}}return i}_getDrawLayerParams(e,{layers:r,pass:t,isPicking:o=!1,layerFilter:n,cullRect:s,effects:a,shaderModuleProps:l},i=!1){const c=[],g=b(this._lastRenderIndex+1),u={layer:r[0],viewport:e,isPicking:o,renderPass:t,cullRect:s},w={};for(let f=0;f<r.length;f++){const p=r[f],h=this._shouldDrawLayer(p,u,n,w),y={shouldDrawLayer:h};h&&!i&&(y.shouldDrawLayer=!0,y.layerRenderIndex=g(p,h),y.shaderModuleProps=this._getShaderModuleProps(p,a,t,l),y.layerParameters={...p.context.deck?.props.parameters,...this.getLayerParameters(p,f,e)}),c[f]=y}return c}_drawLayersInViewport(e,{layers:r,shaderModuleProps:t,pass:o,target:n,viewport:s,view:a},l){const i=_(this.device,{shaderModuleProps:t,target:n,viewport:s});if(a){const{clear:g,clearColor:u,clearDepth:w,clearStencil:f}=a.props;if(g){let p=[0,0,0,0],h=1,y=0;Array.isArray(u)?p=[...u.slice(0,3),u[3]||255].map(m=>m/255):u===!1&&(p=!1),w!==void 0&&(h=w),f!==void 0&&(y=f),this.device.beginRenderPass({framebuffer:n,parameters:{viewport:i,scissorRect:i},clearColor:p,clearDepth:h,clearStencil:y}).end()}}const c={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:i});for(let g=0;g<r.length;g++){const u=r[g],w=l[g],{shouldDrawLayer:f}=w;if(f&&u.props.pickable&&c.pickableCount++,u.isComposite&&c.compositeCount++,u.isDrawable&&w.shouldDrawLayer){const{layerRenderIndex:p,shaderModuleProps:h,layerParameters:y}=w;c.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,p),h.project&&(h.project.viewport=s),u.context.renderPass=e;try{u._drawLayer({renderPass:e,shaderModuleProps:h,uniforms:{layerIndex:p},parameters:y})}catch(P){u.raiseError(P,`drawing ${u} to ${o}`)}}}return c}shouldDrawLayer(e){return!0}getShaderModuleProps(e,r,t){return null}getLayerParameters(e,r,t){return e.props.parameters}_shouldDrawLayer(e,r,t,o){if(!(e.props.visible&&this.shouldDrawLayer(e)))return!1;r.layer=e;let s=e.parent;for(;s;){if(!s.props.visible||!s.filterSubLayer(r))return!1;r.layer=s,s=s.parent}if(t){const a=r.layer.id;if(a in o||(o[a]=t(r)),!o[a])return!1}return e.activateViewport(r.viewport),!0}_getShaderModuleProps(e,r,t,o){const n=this.device.canvasContext.cssToDeviceRatio(),s=e.internalState?.propsInTransition||e.props,a={layer:s,picking:{isActive:!1},project:{viewport:e.context.viewport,devicePixelRatio:n,modelMatrix:s.modelMatrix,coordinateSystem:s.coordinateSystem,coordinateOrigin:s.coordinateOrigin,autoWrapLongitude:e.wrapLongitude}};if(r)for(const l of r)v(a,l.getShaderModuleProps?.(e,a));return v(a,this.getShaderModuleProps(e,r,a),o)}}function b(d=0,e={}){const r={},t=(o,n)=>{const s=o.props._offset,a=o.id,l=o.parent&&o.parent.id;let i;if(l&&!(l in e)&&t(o.parent,!1),l in r){const c=r[l]=r[l]||b(e[l],e);i=c(o,n),r[a]=c}else Number.isFinite(s)?(i=s+(e[l]||0),r[a]=null):i=d;return n&&i>=d&&(d=i+1),e[a]=i,i};return t}function _(d,{shaderModuleProps:e,target:r,viewport:t}){const o=e?.project?.devicePixelRatio??d.canvasContext.cssToDeviceRatio(),[,n]=d.canvasContext.getDrawingBufferSize(),s=r?r.height:n,a=t;return[a.x*o,s-(a.y+a.height)*o,a.width*o,a.height*o]}function v(d,...e){for(const r of e)if(r)for(const t in r)d[t]?Object.assign(d[t],r[t]):d[t]=r[t];return d}const C={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"};class I extends S{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:r,views:t,viewports:o,onViewportActive:n,pickingFBO:s,deviceRect:{x:a,y:l,width:i,height:c},cullRect:g,effects:u,pass:w="picking",pickZ:f,shaderModuleProps:p}){this.pickZ=f;const h=this._resetColorEncoder(f),y=[a,l,i,c],P=super.render({target:s,layers:e,layerFilter:r,views:t,viewports:o,onViewportActive:n,cullRect:g,effects:u?.filter(L=>L.useInPicking),pass:w,isPicking:!0,shaderModuleProps:p,clearColor:[0,0,0,0],colorMask:15,scissorRect:y});return this._colorEncoderState=null,{decodePickingColor:h&&R.bind(null,h),stats:P}}shouldDrawLayer(e){const{pickable:r,operation:t}=e.props;return r&&t.includes("draw")||t.includes("terrain")||t.includes("mask")}getShaderModuleProps(e,r,t){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(e,r,t){const o={...e.props.parameters},{pickable:n,operation:s}=e.props;return!this._colorEncoderState||s.includes("terrain")?o.blend=!1:n&&s.includes("draw")&&(Object.assign(o,C),o.blend=!0,o.blendColor=M(this._colorEncoderState,e,t)),o}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}}function M(d,e,r){const{byLayer:t,byAlpha:o}=d;let n,s=t.get(e);return s?(s.viewports.push(r),n=s.a):(n=t.size+1,n<=255?(s={a:n,layer:e,viewports:[r]},t.set(e,s),o[n]=s):(k.warn("Too many pickable layers, only picking the first 255")(),n=0)),[0,0,0,n/255]}function R(d,e){const r=d.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}export{S as L,x as P,I as a};
2
+ //# sourceMappingURL=pick-layers-pass-xhWsgZtf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick-layers-pass-xhWsgZtf.js","sources":["../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/passes/pass.js","../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/passes/layers-pass.js","../../../../../../node_modules/.pnpm/@deck.gl+core@9.2.2/node_modules/@deck.gl/core/dist/passes/pick-layers-pass.js"],"sourcesContent":["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Base class for passes\n * @todo v9 - should the luma.gl RenderPass be owned by this class?\n * Currently owned by subclasses\n */\nexport default class Pass {\n /** Create a new Pass instance */\n constructor(device, props = { id: 'pass' }) {\n const { id } = props;\n this.id = id; // id of this pass\n this.device = device;\n this.props = { ...props };\n }\n setProps(props) {\n Object.assign(this.props, props);\n }\n render(params) { } // eslint-disable-line @typescript-eslint/no-empty-function\n cleanup() { } // eslint-disable-line @typescript-eslint/no-empty-function\n}\n//# sourceMappingURL=pass.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport Pass from \"./pass.js\";\n/** A Pass that renders all layers */\nexport default class LayersPass extends Pass {\n constructor() {\n super(...arguments);\n this._lastRenderIndex = -1;\n }\n render(options) {\n // @ts-expect-error TODO - assuming WebGL context\n const [width, height] = this.device.canvasContext.getDrawingBufferSize();\n // Explicitly specify clearColor and clearDepth, overriding render pass defaults.\n const clearCanvas = options.clearCanvas ?? true;\n const clearColor = options.clearColor ?? (clearCanvas ? [0, 0, 0, 0] : false);\n const clearDepth = clearCanvas ? 1 : false;\n const clearStencil = clearCanvas ? 0 : false;\n const colorMask = options.colorMask ?? 0xf;\n const parameters = { viewport: [0, 0, width, height] };\n if (options.colorMask) {\n parameters.colorMask = colorMask;\n }\n if (options.scissorRect) {\n parameters.scissorRect = options.scissorRect;\n }\n const renderPass = this.device.beginRenderPass({\n framebuffer: options.target,\n parameters,\n clearColor: clearColor,\n clearDepth,\n clearStencil\n });\n try {\n return this._drawLayers(renderPass, options);\n }\n finally {\n renderPass.end();\n // TODO(ibgreen): WebGPU - submit may not be needed here but initial port had issues with out of render loop rendering\n this.device.submit();\n }\n }\n /** Draw a list of layers in a list of viewports */\n _drawLayers(renderPass, options) {\n const { target, shaderModuleProps, viewports, views, onViewportActive, clearStack = true } = options;\n options.pass = options.pass || 'unknown';\n if (clearStack) {\n this._lastRenderIndex = -1;\n }\n const renderStats = [];\n for (const viewport of viewports) {\n const view = views && views[viewport.id];\n // Update context to point to this viewport\n onViewportActive?.(viewport);\n const drawLayerParams = this._getDrawLayerParams(viewport, options);\n // render this viewport\n const subViewports = viewport.subViewports || [viewport];\n for (const subViewport of subViewports) {\n const stats = this._drawLayersInViewport(renderPass, {\n target,\n shaderModuleProps,\n viewport: subViewport,\n view,\n pass: options.pass,\n layers: options.layers\n }, drawLayerParams);\n renderStats.push(stats);\n }\n }\n return renderStats;\n }\n // When a viewport contains multiple subviewports (e.g. repeated web mercator map),\n // this is only done once for the parent viewport\n /* Resolve the parameters needed to draw each layer */\n _getDrawLayerParams(viewport, { layers, pass, isPicking = false, layerFilter, cullRect, effects, shaderModuleProps }, \n /** Internal flag, true if only used to determine whether each layer should be drawn */\n evaluateShouldDrawOnly = false) {\n const drawLayerParams = [];\n const indexResolver = layerIndexResolver(this._lastRenderIndex + 1);\n const drawContext = {\n layer: layers[0],\n viewport,\n isPicking,\n renderPass: pass,\n cullRect\n };\n const layerFilterCache = {};\n for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n const layer = layers[layerIndex];\n // Check if we should draw layer\n const shouldDrawLayer = this._shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache);\n const layerParam = { shouldDrawLayer };\n if (shouldDrawLayer && !evaluateShouldDrawOnly) {\n layerParam.shouldDrawLayer = true;\n // This is the \"logical\" index for ordering this layer in the stack\n // used to calculate polygon offsets\n // It can be the same as another layer\n layerParam.layerRenderIndex = indexResolver(layer, shouldDrawLayer);\n layerParam.shaderModuleProps = this._getShaderModuleProps(layer, effects, pass, shaderModuleProps);\n layerParam.layerParameters = {\n ...layer.context.deck?.props.parameters,\n ...this.getLayerParameters(layer, layerIndex, viewport)\n };\n }\n drawLayerParams[layerIndex] = layerParam;\n }\n return drawLayerParams;\n }\n // Draws a list of layers in one viewport\n // TODO - when picking we could completely skip rendering viewports that dont\n // intersect with the picking rect\n /* eslint-disable max-depth, max-statements, complexity */\n _drawLayersInViewport(renderPass, { layers, shaderModuleProps: globalModuleParameters, pass, target, viewport, view }, drawLayerParams) {\n const glViewport = getGLViewport(this.device, {\n shaderModuleProps: globalModuleParameters,\n target,\n viewport\n });\n if (view) {\n const { clear, clearColor, clearDepth, clearStencil } = view.props;\n if (clear) {\n // If clear option is set, clear all buffers by default.\n let colorToUse = [0, 0, 0, 0];\n let depthToUse = 1.0;\n let stencilToUse = 0;\n if (Array.isArray(clearColor)) {\n colorToUse = [...clearColor.slice(0, 3), clearColor[3] || 255].map(c => c / 255);\n }\n else if (clearColor === false) {\n colorToUse = false;\n }\n if (clearDepth !== undefined) {\n depthToUse = clearDepth;\n }\n if (clearStencil !== undefined) {\n stencilToUse = clearStencil;\n }\n const clearRenderPass = this.device.beginRenderPass({\n framebuffer: target,\n parameters: {\n viewport: glViewport,\n scissorRect: glViewport\n },\n clearColor: colorToUse,\n clearDepth: depthToUse,\n clearStencil: stencilToUse\n });\n clearRenderPass.end();\n }\n }\n // render layers in normal colors\n const renderStatus = {\n totalCount: layers.length,\n visibleCount: 0,\n compositeCount: 0,\n pickableCount: 0\n };\n renderPass.setParameters({ viewport: glViewport });\n // render layers in normal colors\n for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {\n const layer = layers[layerIndex];\n const drawLayerParameters = drawLayerParams[layerIndex];\n const { shouldDrawLayer } = drawLayerParameters;\n // Calculate stats\n if (shouldDrawLayer && layer.props.pickable) {\n renderStatus.pickableCount++;\n }\n if (layer.isComposite) {\n renderStatus.compositeCount++;\n }\n if (layer.isDrawable && drawLayerParameters.shouldDrawLayer) {\n const { layerRenderIndex, shaderModuleProps, layerParameters } = drawLayerParameters;\n // Draw the layer\n renderStatus.visibleCount++;\n this._lastRenderIndex = Math.max(this._lastRenderIndex, layerRenderIndex);\n // overwrite layer.context.viewport with the sub viewport\n if (shaderModuleProps.project) {\n shaderModuleProps.project.viewport = viewport;\n }\n // TODO v9 - we are sending renderPass both as a parameter and through the context.\n // Long-term, it is likely better not to have user defined layer methods have to access\n // the \"global\" layer context.\n layer.context.renderPass = renderPass;\n try {\n layer._drawLayer({\n renderPass,\n shaderModuleProps,\n uniforms: { layerIndex: layerRenderIndex },\n parameters: layerParameters\n });\n }\n catch (err) {\n layer.raiseError(err, `drawing ${layer} to ${pass}`);\n }\n }\n }\n return renderStatus;\n }\n /* eslint-enable max-depth, max-statements */\n /* Methods for subclass overrides */\n shouldDrawLayer(layer) {\n return true;\n }\n getShaderModuleProps(layer, effects, otherShaderModuleProps) {\n return null;\n }\n getLayerParameters(layer, layerIndex, viewport) {\n return layer.props.parameters;\n }\n /* Private */\n _shouldDrawLayer(layer, drawContext, layerFilter, layerFilterCache) {\n const shouldDrawLayer = layer.props.visible && this.shouldDrawLayer(layer);\n if (!shouldDrawLayer) {\n return false;\n }\n drawContext.layer = layer;\n let parent = layer.parent;\n while (parent) {\n // @ts-ignore\n if (!parent.props.visible || !parent.filterSubLayer(drawContext)) {\n return false;\n }\n drawContext.layer = parent;\n parent = parent.parent;\n }\n if (layerFilter) {\n const rootLayerId = drawContext.layer.id;\n if (!(rootLayerId in layerFilterCache)) {\n layerFilterCache[rootLayerId] = layerFilter(drawContext);\n }\n if (!layerFilterCache[rootLayerId]) {\n return false;\n }\n }\n // If a layer is drawn, update its viewportChanged flag\n layer.activateViewport(drawContext.viewport);\n return true;\n }\n _getShaderModuleProps(layer, effects, pass, overrides) {\n // @ts-expect-error TODO - assuming WebGL context\n const devicePixelRatio = this.device.canvasContext.cssToDeviceRatio();\n const layerProps = layer.internalState?.propsInTransition || layer.props;\n const shaderModuleProps = {\n layer: layerProps,\n picking: {\n isActive: false\n },\n project: {\n viewport: layer.context.viewport,\n devicePixelRatio,\n modelMatrix: layerProps.modelMatrix,\n coordinateSystem: layerProps.coordinateSystem,\n coordinateOrigin: layerProps.coordinateOrigin,\n autoWrapLongitude: layer.wrapLongitude\n }\n };\n if (effects) {\n for (const effect of effects) {\n mergeModuleParameters(shaderModuleProps, effect.getShaderModuleProps?.(layer, shaderModuleProps));\n }\n }\n return mergeModuleParameters(shaderModuleProps, this.getShaderModuleProps(layer, effects, shaderModuleProps), overrides);\n }\n}\n// If the _index prop is defined, return a layer index that's relative to its parent\n// Otherwise return the index of the layer among all rendered layers\n// This is done recursively, i.e. if the user overrides a layer's default index,\n// all its descendants will be resolved relative to that index.\n// This implementation assumes that parent layers always appear before its children\n// which is true if the layer array comes from the LayerManager\nexport function layerIndexResolver(startIndex = 0, layerIndices = {}) {\n const resolvers = {};\n const resolveLayerIndex = (layer, isDrawn) => {\n const indexOverride = layer.props._offset;\n const layerId = layer.id;\n const parentId = layer.parent && layer.parent.id;\n let index;\n if (parentId && !(parentId in layerIndices)) {\n // Populate layerIndices with the parent layer's index\n resolveLayerIndex(layer.parent, false);\n }\n if (parentId in resolvers) {\n const resolver = (resolvers[parentId] =\n resolvers[parentId] || layerIndexResolver(layerIndices[parentId], layerIndices));\n index = resolver(layer, isDrawn);\n resolvers[layerId] = resolver;\n }\n else if (Number.isFinite(indexOverride)) {\n index = indexOverride + (layerIndices[parentId] || 0);\n // Mark layer as needing its own resolver\n // We don't actually create it until it's used for the first time\n resolvers[layerId] = null;\n }\n else {\n index = startIndex;\n }\n if (isDrawn && index >= startIndex) {\n startIndex = index + 1;\n }\n layerIndices[layerId] = index;\n return index;\n };\n return resolveLayerIndex;\n}\n// Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\nfunction getGLViewport(device, { shaderModuleProps, target, viewport }) {\n const pixelRatio = shaderModuleProps?.project?.devicePixelRatio ??\n // @ts-expect-error TODO - assuming WebGL context\n device.canvasContext.cssToDeviceRatio();\n // Default framebuffer is used when writing to canvas\n // @ts-expect-error TODO - assuming WebGL context\n const [, drawingBufferHeight] = device.canvasContext.getDrawingBufferSize();\n const height = target ? target.height : drawingBufferHeight;\n // Convert viewport top-left CSS coordinates to bottom up WebGL coordinates\n const dimensions = viewport;\n return [\n dimensions.x * pixelRatio,\n height - (dimensions.y + dimensions.height) * pixelRatio,\n dimensions.width * pixelRatio,\n dimensions.height * pixelRatio\n ];\n}\nfunction mergeModuleParameters(target, ...sources) {\n for (const source of sources) {\n if (source) {\n for (const key in source) {\n if (target[key]) {\n Object.assign(target[key], source[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n}\n//# sourceMappingURL=layers-pass.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport LayersPass from \"./layers-pass.js\";\nimport log from \"../utils/log.js\";\nconst PICKING_BLENDING = {\n blendColorOperation: 'add',\n blendColorSrcFactor: 'one',\n blendColorDstFactor: 'zero',\n blendAlphaOperation: 'add',\n blendAlphaSrcFactor: 'constant',\n blendAlphaDstFactor: 'zero'\n};\nexport default class PickLayersPass extends LayersPass {\n constructor() {\n super(...arguments);\n this._colorEncoderState = null;\n }\n render(props) {\n if ('pickingFBO' in props) {\n // When drawing into an off-screen buffer, use the alpha channel to encode layer index\n return this._drawPickingBuffer(props);\n }\n // When drawing to screen (debug mode), do not use the alpha channel so that result is always visible\n return super.render(props);\n }\n // Private\n // Draws list of layers and viewports into the picking buffer\n // Note: does not sample the buffer, that has to be done by the caller\n _drawPickingBuffer({ layers, layerFilter, views, viewports, onViewportActive, pickingFBO, deviceRect: { x, y, width, height }, cullRect, effects, pass = 'picking', pickZ, shaderModuleProps }) {\n this.pickZ = pickZ;\n const colorEncoderState = this._resetColorEncoder(pickZ);\n const scissorRect = [x, y, width, height];\n // Make sure we clear scissor test and fbo bindings in case of exceptions\n // We are only interested in one pixel, no need to render anything else\n // Note that the callback here is called synchronously.\n // Set blend mode for picking\n // always overwrite existing pixel with [r,g,b,layerIndex]\n const renderStatus = super.render({\n target: pickingFBO,\n layers,\n layerFilter,\n views,\n viewports,\n onViewportActive,\n cullRect,\n effects: effects?.filter(e => e.useInPicking),\n pass,\n isPicking: true,\n shaderModuleProps,\n clearColor: [0, 0, 0, 0],\n colorMask: 0xf,\n scissorRect\n });\n // Clear the temp field\n this._colorEncoderState = null;\n const decodePickingColor = colorEncoderState && decodeColor.bind(null, colorEncoderState);\n return { decodePickingColor, stats: renderStatus };\n }\n shouldDrawLayer(layer) {\n const { pickable, operation } = layer.props;\n return ((pickable && operation.includes('draw')) ||\n operation.includes('terrain') ||\n operation.includes('mask'));\n }\n getShaderModuleProps(layer, effects, otherShaderModuleProps) {\n return {\n picking: {\n isActive: 1,\n isAttribute: this.pickZ\n },\n lighting: { enabled: false }\n };\n }\n getLayerParameters(layer, layerIndex, viewport) {\n // TODO use Parameters type\n const pickParameters = {\n ...layer.props.parameters\n };\n const { pickable, operation } = layer.props;\n if (!this._colorEncoderState || operation.includes('terrain')) {\n pickParameters.blend = false;\n }\n else if (pickable && operation.includes('draw')) {\n Object.assign(pickParameters, PICKING_BLENDING);\n pickParameters.blend = true;\n // TODO: blendColor no longer part of luma.gl API\n pickParameters.blendColor = encodeColor(this._colorEncoderState, layer, viewport);\n }\n return pickParameters;\n }\n _resetColorEncoder(pickZ) {\n // Track encoded layer indices\n this._colorEncoderState = pickZ\n ? null\n : {\n byLayer: new Map(),\n byAlpha: []\n };\n // Temporarily store it on the instance so that it can be accessed by this.getLayerParameters\n return this._colorEncoderState;\n }\n}\n// Assign an unique alpha value for each pickable layer and track the encoding in the cache object\n// Returns normalized blend color\nfunction encodeColor(encoded, layer, viewport) {\n const { byLayer, byAlpha } = encoded;\n let a;\n // Encode layerIndex in the alpha channel\n // TODO - combine small layers to better utilize the picking color space\n let entry = byLayer.get(layer);\n if (entry) {\n entry.viewports.push(viewport);\n a = entry.a;\n }\n else {\n a = byLayer.size + 1;\n if (a <= 255) {\n entry = { a, layer, viewports: [viewport] };\n byLayer.set(layer, entry);\n byAlpha[a] = entry;\n }\n else {\n log.warn('Too many pickable layers, only picking the first 255')();\n a = 0;\n }\n }\n return [0, 0, 0, a / 255];\n}\n// Given a picked color, retrieve the corresponding layer and viewports from cache\nfunction decodeColor(encoded, pickedColor) {\n const entry = encoded.byAlpha[pickedColor[3]];\n return (entry && {\n pickedLayer: entry.layer,\n pickedViewports: entry.viewports,\n pickedObjectIndex: entry.layer.decodePickingColor(pickedColor)\n });\n}\n//# sourceMappingURL=pick-layers-pass.js.map"],"names":["Pass","device","props","id","params","LayersPass","options","width","height","clearCanvas","clearColor","clearDepth","clearStencil","colorMask","parameters","renderPass","target","shaderModuleProps","viewports","views","onViewportActive","clearStack","renderStats","viewport","view","drawLayerParams","subViewports","subViewport","stats","layers","pass","isPicking","layerFilter","cullRect","effects","evaluateShouldDrawOnly","indexResolver","layerIndexResolver","drawContext","layerFilterCache","layerIndex","layer","shouldDrawLayer","layerParam","globalModuleParameters","glViewport","getGLViewport","clear","colorToUse","depthToUse","stencilToUse","c","renderStatus","drawLayerParameters","layerRenderIndex","layerParameters","err","otherShaderModuleProps","parent","rootLayerId","overrides","devicePixelRatio","layerProps","effect","mergeModuleParameters","startIndex","layerIndices","resolvers","resolveLayerIndex","isDrawn","indexOverride","layerId","parentId","index","resolver","pixelRatio","drawingBufferHeight","dimensions","sources","source","key","PICKING_BLENDING","PickLayersPass","pickingFBO","x","y","pickZ","colorEncoderState","scissorRect","e","decodeColor","pickable","operation","pickParameters","encodeColor","encoded","byLayer","byAlpha","a","entry","log","pickedColor"],"mappings":"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","x_google_ignoreList":[0,1,2]}