@beeintel/batch-image 0.0.0-stage → 1.0.0

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 (241) hide show
  1. package/FONT-LICENSE.txt +93 -0
  2. package/README.md +181 -2
  3. package/dist/assets/11st-D7qGO5e4.webp +0 -0
  4. package/dist/assets/UPNG-CPfdwFSy.js +2298 -0
  5. package/dist/assets/adjust-card-B63b81iV.webp +0 -0
  6. package/dist/assets/adjust-final.worker-C2JbTvv5.js +6945 -0
  7. package/dist/assets/amazon-CjTtpZTq.webp +0 -0
  8. package/dist/assets/ascii_art-B4UGbtGs.webp +0 -0
  9. package/dist/assets/auction-j26eVUQO.webp +0 -0
  10. package/dist/assets/background-DGdZUdkL.webp +0 -0
  11. package/dist/assets/background-card-wK7DRpvM.png +0 -0
  12. package/dist/assets/body-CUFdRg8w.webp +0 -0
  13. package/dist/assets/bounded-cutout.worker-BZR6mbaI.js +9615 -0
  14. package/dist/assets/brand-mark-card-cFUeDeO2.webp +0 -0
  15. package/dist/assets/buyma-dAxYNjow.webp +0 -0
  16. package/dist/assets/codec.worker-7W6hmsm6.js +7349 -0
  17. package/dist/assets/contour_lines-C_CqrgV1.webp +0 -0
  18. package/dist/assets/creema-B1tWyCPx.webp +0 -0
  19. package/dist/assets/crop-final.worker-Owin7TvX.js +7035 -0
  20. package/dist/assets/cutout-CzMvV5An.webp +0 -0
  21. package/dist/assets/cutout-card-CN4gNFBz.png +0 -0
  22. package/dist/assets/cutout.worker-DyH6Prbn.js +3894 -0
  23. package/dist/assets/depop-CkVC5Fn1.webp +0 -0
  24. package/dist/assets/dewrinkle-kFzP6LqD.webp +0 -0
  25. package/dist/assets/dither-CcxmO2e6.webp +0 -0
  26. package/dist/assets/douyin-CP_HwBDF.webp +0 -0
  27. package/dist/assets/download.worker-DnGSB6P_.js +17779 -0
  28. package/dist/assets/duotone-Cdg_3fQf.webp +0 -0
  29. package/dist/assets/ebay-CxLfrRAf.webp +0 -0
  30. package/dist/assets/edit-Cv-txfZm.webp +0 -0
  31. package/dist/assets/effect.worker-qu1eCcII.js +9227 -0
  32. package/dist/assets/engraving-BENh1O2O.webp +0 -0
  33. package/dist/assets/etsy-CSvz9GpY.webp +0 -0
  34. package/dist/assets/expand-C60VE9nK.webp +0 -0
  35. package/dist/assets/facebook-Ca2nJJiQ.webp +0 -0
  36. package/dist/assets/film_stock-Bqauwcq4.webp +0 -0
  37. package/dist/assets/final.worker-BnzJ3N5C.js +7035 -0
  38. package/dist/assets/final.worker-Csc1zoYS.js +7054 -0
  39. package/dist/assets/final.worker-DzBFT9xk.js +6922 -0
  40. package/dist/assets/final.worker-XpgKnlaz.js +7217 -0
  41. package/dist/assets/flatlay-CPiVmlAa.webp +0 -0
  42. package/dist/assets/flatlay-fold-B-CRYy87.webp +0 -0
  43. package/dist/assets/flatlay-open-Dzas8okC.webp +0 -0
  44. package/dist/assets/g-market-DXuYK_JH.webp +0 -0
  45. package/dist/assets/ghost-BCEAx_Zx.webp +0 -0
  46. package/dist/assets/ghost-front-WFgA4sUo.webp +0 -0
  47. package/dist/assets/ghost-three-quarter-Rt8cXj34.webp +0 -0
  48. package/dist/assets/gif-CObOIITx.js +303 -0
  49. package/dist/assets/glass_tiles-3IXP-Hmg.webp +0 -0
  50. package/dist/assets/glitch_art-D1i3qben.webp +0 -0
  51. package/dist/assets/glitch_blur-C4q_9zyq.webp +0 -0
  52. package/dist/assets/glow-Bv9EHBU5.webp +0 -0
  53. package/dist/assets/gradient_map-BR-UVYMP.webp +0 -0
  54. package/dist/assets/halftone-CWdKu2_6.webp +0 -0
  55. package/dist/assets/holo_sticker-BQDikLg2.webp +0 -0
  56. package/dist/assets/idus-7diqRNPs.webp +0 -0
  57. package/dist/assets/imagetracer.worker-CgunQTPG.js +7096 -0
  58. package/dist/assets/instagram-Bf0IVidT.webp +0 -0
  59. package/dist/assets/kakao-talk-Df79L_Mv.webp +0 -0
  60. package/dist/assets/kaleidoscope-BxqMZuWo.webp +0 -0
  61. package/dist/assets/karrot-BXFPhDwt.webp +0 -0
  62. package/dist/assets/kaufland-BDDy6e0C.webp +0 -0
  63. package/dist/assets/lazada-ConR4e1O.webp +0 -0
  64. package/dist/assets/lens_flare-DgyiAv_j.webp +0 -0
  65. package/dist/assets/light_leak-kUdpoFuC.webp +0 -0
  66. package/dist/assets/line-Dr1j___B.webp +0 -0
  67. package/dist/assets/linkedin-4s_9Wh03.webp +0 -0
  68. package/dist/assets/lo_fi-DSdl3yY_.webp +0 -0
  69. package/dist/assets/logo-preparation.worker-D9oa7SME.js +420 -0
  70. package/dist/assets/mercado-libre-C8CskEiS.webp +0 -0
  71. package/dist/assets/mercari-jp-DHj7nz4O.webp +0 -0
  72. package/dist/assets/metadata.worker-B_9_BgN1.js +6456 -0
  73. package/dist/assets/mirror_collage-JtSKCeSh.webp +0 -0
  74. package/dist/assets/model-BbeF-fsf.webp +0 -0
  75. package/dist/assets/model-BjWhieit.webp +0 -0
  76. package/dist/assets/momo-BWXO_8Df.webp +0 -0
  77. package/dist/assets/motion_blur-B8YUHeSg.webp +0 -0
  78. package/dist/assets/naver-xQKL8lWg.webp +0 -0
  79. package/dist/assets/nuvemshop-DPt6rnA-.webp +0 -0
  80. package/dist/assets/olx-B87gp-Il.webp +0 -0
  81. package/dist/assets/orient-card-Da0ii6mX.webp +0 -0
  82. package/dist/assets/orient-final.worker-CdF5Y5zD.js +6909 -0
  83. package/dist/assets/orientation-preview.worker-B7uFzz3J.js +6865 -0
  84. package/dist/assets/ort.bundle.min-CreFV8V1.js +9311 -0
  85. package/dist/assets/ort.webgpu.bundle.min-CAudaHZO.js +9311 -0
  86. package/dist/assets/otto-market-DWZyNKJn.webp +0 -0
  87. package/dist/assets/paper_texture-CXphyIrs.webp +0 -0
  88. package/dist/assets/pinterest-ByZqih2J.webp +0 -0
  89. package/dist/assets/polish-DFy6LNG7.webp +0 -0
  90. package/dist/assets/poshmark-DnZi2vA1.webp +0 -0
  91. package/dist/assets/posterize-SpLVGq1s.webp +0 -0
  92. package/dist/assets/preview.worker-DcrCKKWl.js +380 -0
  93. package/dist/assets/qoo10-C1pq81Jx.webp +0 -0
  94. package/dist/assets/rakuten-ulYog1hL.webp +0 -0
  95. package/dist/assets/recolor-mBX7vdFT.webp +0 -0
  96. package/dist/assets/resize-DVEAl0Um.webp +0 -0
  97. package/dist/assets/runtime-0663b902fb3937883a34.wasm +0 -0
  98. package/dist/assets/runtime-355a5c80c7bfdf8737de.mjs +2817 -0
  99. package/dist/assets/runtime-49871f5a4409519797e1.wasm +0 -0
  100. package/dist/assets/runtime-74cf72f9a2b7befc115a.mjs +2817 -0
  101. package/dist/assets/shadow-card-DTZEH60r.png +0 -0
  102. package/dist/assets/shopee-Bxfei6sj.webp +0 -0
  103. package/dist/assets/shopify-wVaBafcF.webp +0 -0
  104. package/dist/assets/shopline-DMoaJ7Bh.webp +0 -0
  105. package/dist/assets/sparkle-CD5GSGip.webp +0 -0
  106. package/dist/assets/ssg-DQoFx5u5.webp +0 -0
  107. package/dist/assets/staging-CIc8pQJ6.webp +0 -0
  108. package/dist/assets/standard-cutout.worker-BYLzdpR-.js +1261 -0
  109. package/dist/assets/text-DQW2mBGp.webp +0 -0
  110. package/dist/assets/textured_glass-D2coxp7n.webp +0 -0
  111. package/dist/assets/tga-VGxWDes0.js +752 -0
  112. package/dist/assets/tilt_shift-BKs46yeX.webp +0 -0
  113. package/dist/assets/transformers.web-DB57cIO5.js +28891 -0
  114. package/dist/assets/tritone-CcR4qizk.webp +0 -0
  115. package/dist/assets/upscale-BrLadyUk.webp +0 -0
  116. package/dist/assets/upscale-creative-DnZnQufJ.webp +0 -0
  117. package/dist/assets/upscale-crisp-Ckdmbsnn.webp +0 -0
  118. package/dist/assets/vinted-1QDsxvC6.webp +0 -0
  119. package/dist/assets/watercolor-CV67zYNE.webp +0 -0
  120. package/dist/assets/watermark-CpPrxaT5.webp +0 -0
  121. package/dist/assets/wave_distortion-CV5jVfK4.webp +0 -0
  122. package/dist/assets/whatsapp-CWJxqzR6.webp +0 -0
  123. package/dist/assets/worker-DfrCFP3O.js +55 -0
  124. package/dist/assets/xerox_noise-CbbHY1S1.webp +0 -0
  125. package/dist/assets/youtube-DS12d5mi.webp +0 -0
  126. package/dist/assets/zalando-CenfWOwz.webp +0 -0
  127. package/dist/browser-adapter.d.ts +4 -0
  128. package/dist/browser-cutout-capability.d.ts +4 -0
  129. package/dist/browser-cutout-resources.d.ts +3 -0
  130. package/dist/browser-local-capabilities.d.ts +5 -0
  131. package/dist/capabilities.d.ts +18 -0
  132. package/dist/chunks/AdjustToolPanel-B6dtlFlj.js +195 -0
  133. package/dist/chunks/BackgroundToolPanel-C3Rr9d4S.js +41 -0
  134. package/dist/chunks/BatchMaterials-DDoJTaS5.js +806 -0
  135. package/dist/chunks/BatchModeChoices-DeBARgvY.js +111 -0
  136. package/dist/chunks/BatchOutputColorPicker-D7WIDS4_.js +75 -0
  137. package/dist/chunks/BatchReferenceFields-Cr5WgFRJ.js +316 -0
  138. package/dist/chunks/BeautifyToolPanel-DDZXDQKM.js +215 -0
  139. package/dist/chunks/BrandMarkToolPanel-vKobk_R3.js +1179 -0
  140. package/dist/chunks/ContentTrimControl-BKCJEst5.js +297 -0
  141. package/dist/chunks/CropToolPanel-C_sW5tWL.js +218 -0
  142. package/dist/chunks/CutoutToolPanel-B7ObmiWd.js +73 -0
  143. package/dist/chunks/DisclosureToolPanel-F3ccFJIF.js +76 -0
  144. package/dist/chunks/ExpandToolPanel-BKjj5UJA.js +67 -0
  145. package/dist/chunks/ImageEffectsToolPanel-CsDIBpT6.js +966 -0
  146. package/dist/chunks/IpAuditToolPanel-CduDfFh-.js +96 -0
  147. package/dist/chunks/ListingToolPanel-8pJ2_zvI.js +783 -0
  148. package/dist/chunks/MaterialSelectionPlate-CW7HaS6v.js +30 -0
  149. package/dist/chunks/MetadataToolPanel-C8XJOamN.js +104 -0
  150. package/dist/chunks/OrientToolPanel-C1AzQchm.js +161 -0
  151. package/dist/chunks/PluginActionFooter.vue_vue_type_script_setup_true_lang-BGe419qz.js +102 -0
  152. package/dist/chunks/ResizeToolPanel-DWikcj2G.js +1178 -0
  153. package/dist/chunks/RetouchToolPanel-B4eQKk2W.js +350 -0
  154. package/dist/chunks/ShadowToolPanel-Bbj76hQd.js +254 -0
  155. package/dist/chunks/SvgExportToolPanel-BRxpzd7q.js +219 -0
  156. package/dist/chunks/TranslationToolPanel-Bxv8U2WY.js +125 -0
  157. package/dist/chunks/UpscaleToolPanel-BRIgpszs.js +127 -0
  158. package/dist/chunks/engine-D-T-1RSx.js +69 -0
  159. package/dist/chunks/entry-CboOSe2r.js +42945 -0
  160. package/dist/chunks/gpu-CScw5MNG.js +231 -0
  161. package/dist/chunks/hosted-resources-COzZ7nZY.js +8196 -0
  162. package/dist/chunks/loader-circle-CylCgDqP.js +16 -0
  163. package/dist/chunks/motionFeatures-D67ghPG1.js +4405 -0
  164. package/dist/chunks/search-BwsDnulU.js +18 -0
  165. package/dist/chunks/standard-cutout-vPpP6xBc.js +45 -0
  166. package/dist/chunks/static-logo-2F9ORZWc.js +34 -0
  167. package/dist/config.d.ts +66 -0
  168. package/dist/contracts.d.ts +272 -0
  169. package/dist/index.d.ts +23 -0
  170. package/dist/index.js +13 -0
  171. package/dist/node/catalog.mjs +45 -0
  172. package/dist/node/cli.mjs +11 -0
  173. package/dist/node/index.d.mts +20 -0
  174. package/dist/node/index.mjs +2 -0
  175. package/dist/node/prepare.mjs +114 -0
  176. package/dist/node/vite.mjs +46 -0
  177. package/dist/processing.d.ts +1 -0
  178. package/dist/processing.js +12105 -0
  179. package/dist/remote-contracts.d.ts +114 -0
  180. package/dist/resource-contracts.d.ts +40 -0
  181. package/dist/resources/cutout/9ae2e5375a34fa413530954dc20d085d175faffc86108c13619220d0557f80bf.json +1 -0
  182. package/dist/resources/cutout/f119dabecc64bc436d3d08425dde96ec2598fd40541eba97d8d53a4e8bbdcaea.json +1 -0
  183. package/dist/resources/cutout/resources.json +195 -0
  184. package/dist/resources/cutout/sources.json +294 -0
  185. package/dist/resources.json +1191 -0
  186. package/dist/service-contracts.d.ts +43 -0
  187. package/dist/slots.d.ts +21 -0
  188. package/dist/style.css +1 -0
  189. package/dist/types/batch/api.d.ts +89 -0
  190. package/dist/types/batch/cutout-output.d.ts +2 -0
  191. package/dist/types/batch/features/background/engine.d.mts +12 -0
  192. package/dist/types/batch/features/basic-edit/contracts.d.ts +87 -0
  193. package/dist/types/batch/features/basic-edit/engine.d.mts +96 -0
  194. package/dist/types/batch/features/brand-mark/contracts.d.ts +84 -0
  195. package/dist/types/batch/features/brand-mark/engine.d.mts +68 -0
  196. package/dist/types/batch/features/export-compression/contracts.d.ts +44 -0
  197. package/dist/types/batch/features/export-compression/gifenc.d.ts +33 -0
  198. package/dist/types/batch/features/export-compression/plan.d.ts +45 -0
  199. package/dist/types/batch/features/export-compression/presentation.d.ts +70 -0
  200. package/dist/types/batch/features/export-compression/upng.d.ts +6 -0
  201. package/dist/types/batch/features/final-image/resize.d.mts +15 -0
  202. package/dist/types/batch/features/image-effects/contracts.d.ts +58 -0
  203. package/dist/types/batch/features/image-effects/gpu-pixel-runtime.d.ts +15 -0
  204. package/dist/types/batch/features/image-effects/photo-audit.d.ts +21 -0
  205. package/dist/types/batch/features/image-effects/photo-v7-cpu.d.ts +9 -0
  206. package/dist/types/batch/features/image-effects/profiles-v4.d.ts +157 -0
  207. package/dist/types/batch/features/image-effects/profiles-v5.d.ts +20 -0
  208. package/dist/types/batch/features/image-effects/profiles-v6.d.ts +14 -0
  209. package/dist/types/batch/features/image-effects/profiles-v7.d.ts +53 -0
  210. package/dist/types/batch/features/image-effects/profiles-v8.d.ts +113 -0
  211. package/dist/types/batch/features/image-effects/profiles-v9.d.ts +20 -0
  212. package/dist/types/batch/features/image-translation/params.d.ts +257 -0
  213. package/dist/types/batch/features/listing-remake/transport.d.ts +21 -0
  214. package/dist/types/batch/features/metadata/bytes.d.mts +13 -0
  215. package/dist/types/batch/features/metadata/containers.d.mts +20 -0
  216. package/dist/types/batch/features/metadata/declaration.d.mts +5 -0
  217. package/dist/types/batch/features/metadata/engine.d.mts +9 -0
  218. package/dist/types/batch/features/metadata/exchange.d.mts +48 -0
  219. package/dist/types/batch/features/shadow/contracts.d.ts +43 -0
  220. package/dist/types/batch/features/shadow/engine.d.mts +33 -0
  221. package/dist/types/batch/features/svg-export/download-contract.d.ts +33 -0
  222. package/dist/types/batch/features/svg-export/download-prepare.d.ts +2 -0
  223. package/dist/types/batch/features/svg-export/download.d.ts +7 -0
  224. package/dist/types/batch/features/svg-export/imagetracer.d.ts +6 -0
  225. package/dist/types/batch/features/svg-export/optimizer.d.ts +2 -0
  226. package/dist/types/batch/ids.d.ts +1 -0
  227. package/dist/types/batch/model.d.ts +317 -0
  228. package/dist/types/batch/public/config.d.ts +66 -0
  229. package/dist/types/batch/public/contracts.d.ts +272 -0
  230. package/dist/types/batch/public/remote-contracts.d.ts +114 -0
  231. package/dist/types/batch/public/resource-contracts.d.ts +40 -0
  232. package/dist/types/batch/public/service-contracts.d.ts +43 -0
  233. package/dist/types/batch/queue.d.ts +34 -0
  234. package/dist/types/batch/receipts.d.ts +85 -0
  235. package/dist/types/batch/retention.d.ts +13 -0
  236. package/dist/types/onnxruntime-web.d.ts +5 -0
  237. package/dist/types/plugins/cutout/core/hosted-resources.d.ts +11 -0
  238. package/dist/types/processing.d.ts +18 -0
  239. package/dist/types/shared/svg-security.d.mts +4 -0
  240. package/dist/types/workspace-worker.d.ts +2 -0
  241. package/package.json +91 -3
@@ -0,0 +1,231 @@
1
+ class n extends Error {
2
+ constructor(r) {
3
+ super(`Material GPU: ${r}`), this.reason = r, this.name = "MaterialGpuError";
4
+ }
5
+ }
6
+ const q = (
7
+ /* wgsl */
8
+ `
9
+ struct Params {
10
+ size: vec2f, radius: f32, dark: f32,
11
+ refraction: f32, edgeWidth: f32, transmission: f32, blur: f32,
12
+ highlight: f32, uvOrigin: vec2f, uvSize: vec2f,
13
+ meanLuminance: f32, localLuminance: f32, edgeDensity: f32, textDensity: f32,
14
+ pointer: vec2f, pointerStrength: f32, pressStrength: f32
15
+ }
16
+ @group(0) @binding(0) var image: texture_2d<f32>;
17
+ @group(0) @binding(1) var imageSampler: sampler;
18
+ @group(0) @binding(2) var<uniform> params: Params;
19
+ struct Vertex { @builtin(position) position: vec4f, @location(0) uv: vec2f }
20
+ @vertex fn vertex(@builtin(vertex_index) index: u32) -> Vertex {
21
+ let positions = array<vec2f, 3>(vec2f(-1., -1.), vec2f(3., -1.), vec2f(-1., 3.));
22
+ let p = positions[index];
23
+ var result: Vertex;
24
+ result.position = vec4f(p, 0., 1.);
25
+ result.uv = vec2f((p.x + 1.) * .5, (1. - p.y) * .5);
26
+ return result;
27
+ }
28
+ @fragment fn fragment(input: Vertex) -> @location(0) vec4f {
29
+ let halfSize = params.size * .5;
30
+ let p = (input.uv - .5) * params.size;
31
+ let radius = min(params.radius, min(halfSize.x, halfSize.y));
32
+ let q = abs(p) - halfSize + radius;
33
+ let distance = length(max(q, vec2f(0.))) + min(max(q.x, q.y), 0.) - radius;
34
+ let edge = 1. - smoothstep(0., params.edgeWidth, -distance);
35
+ let normal = normalize(p / max(halfSize, vec2f(1.)) + vec2f(.0001));
36
+ let pointerDelta = input.uv - params.pointer;
37
+ let pointerGlow = exp(-dot(pointerDelta, pointerDelta) * 18.) * params.pointerStrength;
38
+ let bend = edge * params.refraction / max(params.size, vec2f(1.));
39
+ let uv = clamp(params.uvOrigin + input.uv * params.uvSize - normal * bend + pointerDelta * pointerGlow * .02, vec2f(0.), vec2f(1.));
40
+ let offset = params.blur / max(params.size, vec2f(1.));
41
+ var sampleColor = textureSampleLevel(image, imageSampler, uv, 0.).rgb * .25;
42
+ sampleColor += textureSampleLevel(image, imageSampler, uv + vec2f(offset.x, 0.), 0.).rgb * .125;
43
+ sampleColor += textureSampleLevel(image, imageSampler, uv - vec2f(offset.x, 0.), 0.).rgb * .125;
44
+ sampleColor += textureSampleLevel(image, imageSampler, uv + vec2f(0., offset.y), 0.).rgb * .125;
45
+ sampleColor += textureSampleLevel(image, imageSampler, uv - vec2f(0., offset.y), 0.).rgb * .125;
46
+ let tint = mix(vec3f(.96, .97, .99), vec3f(.035, .042, .055), params.dark);
47
+ let localDim = clamp((.52 - params.localLuminance) * .12 + params.edgeDensity * .04, -.04, .08);
48
+ let color = clamp(mix(tint, sampleColor, params.transmission) + localDim, vec3f(0.), vec3f(1.));
49
+ let highlight = pow(edge, 3.) * params.highlight * mix(1., .45, params.dark) * (.65 - normal.y * .35) + pointerGlow * .08 + params.pressStrength * edge * .05;
50
+ let alpha = 1. - smoothstep(-1., 0., distance);
51
+ return vec4f((color + highlight) * alpha, alpha);
52
+ }
53
+ `
54
+ );
55
+ function B(i) {
56
+ const r = i.params ?? i.material, p = i.sceneUV ?? { x: 0, y: 0, width: 1, height: 1 }, o = i.environment, t = o?.pointer;
57
+ return new Float32Array([
58
+ i.cssWidth,
59
+ i.cssHeight,
60
+ i.radiusCssPx,
61
+ Number(i.dark),
62
+ r.refractionCssPx,
63
+ r.edgeWidthCssPx,
64
+ r.transmission,
65
+ r.blurCssPx,
66
+ r.highlight,
67
+ 0,
68
+ p.x,
69
+ p.y,
70
+ p.width,
71
+ p.height,
72
+ o?.meanLuminance ?? 0.5,
73
+ o?.localLuminance ?? 0.5,
74
+ o?.edgeDensity ?? 0,
75
+ o?.textDensity ?? 0,
76
+ t?.x ?? 0.5,
77
+ t?.y ?? 0.5,
78
+ t?.strength ?? 0,
79
+ o?.pressStrength ?? 0,
80
+ 0,
81
+ 0
82
+ ]);
83
+ }
84
+ async function F(i, r) {
85
+ if (typeof navigator > "u" || !navigator.gpu) throw new n("unsupported");
86
+ const p = navigator.gpu;
87
+ let o;
88
+ try {
89
+ o = r === "no-adapter" ? null : await p.requestAdapter({ powerPreference: "low-power" });
90
+ } catch {
91
+ throw new n("no-adapter");
92
+ }
93
+ if (!o) throw new n("no-adapter");
94
+ let t;
95
+ try {
96
+ if (r === "no-device") throw new n("no-device");
97
+ t = await o.requestDevice();
98
+ } catch {
99
+ throw new n("no-device");
100
+ }
101
+ let h = !0, y = "device-lost";
102
+ const d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Set();
103
+ let S, s;
104
+ const b = () => {
105
+ if (h) {
106
+ h = !1, t.removeEventListener("uncapturederror", E), s && (s.destroy(), f.delete(s)), s = void 0, S = void 0;
107
+ for (const e of f) e.destroy();
108
+ f.clear();
109
+ for (const e of d.values()) e.unconfigure();
110
+ d.clear(), t.destroy();
111
+ }
112
+ }, D = (e) => {
113
+ h && (y = e, b(), i(e));
114
+ }, E = () => D("render-failed");
115
+ t.addEventListener("uncapturederror", E), t.lost.then(() => D("device-lost"));
116
+ const v = () => {
117
+ if (!h) throw new n(y);
118
+ }, C = p.getPreferredCanvasFormat();
119
+ let P;
120
+ t.pushErrorScope("validation");
121
+ let G = !0;
122
+ try {
123
+ const e = t.createShaderModule({
124
+ code: r === "compile-failed" ? "invalid WGSL" : q
125
+ });
126
+ if (P = await t.createRenderPipelineAsync({
127
+ layout: "auto",
128
+ vertex: { module: e, entryPoint: "vertex" },
129
+ fragment: { module: e, entryPoint: "fragment", targets: [{ format: C }] },
130
+ primitive: { topology: "triangle-list" }
131
+ }), G = !1, await t.popErrorScope()) throw new n("compile-failed");
132
+ v();
133
+ } catch {
134
+ G && await t.popErrorScope().catch(() => {
135
+ });
136
+ const e = h ? "compile-failed" : y;
137
+ throw b(), new n(e);
138
+ }
139
+ const M = t.createSampler({
140
+ minFilter: "linear",
141
+ magFilter: "linear"
142
+ });
143
+ let T = Promise.resolve();
144
+ const L = (e) => {
145
+ if (v(), S === e && s) return s;
146
+ if (s && (s.destroy(), f.delete(s)), S = e, !e.width || !e.height || e.width > t.limits.maxTextureDimension2D || e.height > t.limits.maxTextureDimension2D)
147
+ throw new n("render-failed");
148
+ const l = t.createTexture({
149
+ size: [e.width, e.height],
150
+ format: "rgba8unorm",
151
+ usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
152
+ });
153
+ return s = l, f.add(l), t.queue.copyExternalImageToTexture({ source: e }, { texture: l }, [
154
+ e.width,
155
+ e.height
156
+ ]), l;
157
+ }, U = async (e, l, a) => {
158
+ if (v(), !Number.isFinite(a.cssWidth) || a.cssWidth <= 0 || !Number.isFinite(a.cssHeight) || a.cssHeight <= 0 || !Number.isFinite(a.radiusCssPx) || a.radiusCssPx < 0)
159
+ throw new n("render-failed");
160
+ let u = d.get(e);
161
+ if (!u) {
162
+ if (d.size >= 4) return { kind: "local-fallback", reason: "context-budget" };
163
+ const c = e.getContext("webgpu");
164
+ if (!c) return { kind: "local-fallback", reason: "context-unavailable" };
165
+ u = c, d.set(e, u);
166
+ }
167
+ let m, x;
168
+ t.pushErrorScope("out-of-memory"), t.pushErrorScope("internal"), t.pushErrorScope("validation");
169
+ try {
170
+ const c = L(l), g = Math.max(1, typeof devicePixelRatio == "number" ? devicePixelRatio : 1);
171
+ e.width = Math.max(1, Math.round(a.cssWidth * g)), e.height = Math.max(1, Math.round(a.cssHeight * g)), u.configure({ device: t, format: C, alphaMode: "premultiplied" }), m = t.createBuffer({
172
+ size: 96,
173
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
174
+ }), f.add(m), t.queue.writeBuffer(m, 0, B(a));
175
+ const k = t.createBindGroup({
176
+ layout: P.getBindGroupLayout(0),
177
+ entries: [
178
+ { binding: 0, resource: c.createView() },
179
+ { binding: 1, resource: M },
180
+ { binding: 2, resource: { buffer: m } }
181
+ ]
182
+ }), z = t.createCommandEncoder(), w = z.beginRenderPass({
183
+ colorAttachments: [
184
+ {
185
+ view: u.getCurrentTexture().createView(),
186
+ clearValue: { r: 0, g: 0, b: 0, a: 0 },
187
+ loadOp: "clear",
188
+ storeOp: "store"
189
+ }
190
+ ]
191
+ });
192
+ w.setPipeline(P), w.setBindGroup(0, k), w.draw(3), w.end(), t.queue.submit([z.finish()]), await t.queue.onSubmittedWorkDone();
193
+ } catch (c) {
194
+ x = c;
195
+ } finally {
196
+ for (let c = 0; c < 3; c++)
197
+ try {
198
+ const g = await t.popErrorScope();
199
+ g && (x = g);
200
+ } catch (g) {
201
+ x = g;
202
+ }
203
+ m && (m.destroy(), f.delete(m));
204
+ }
205
+ if (v(), x) throw new n("render-failed");
206
+ return { kind: "painted" };
207
+ };
208
+ return {
209
+ paint(e, l, a) {
210
+ const u = T.then(() => U(e, l, a));
211
+ return T = u.then(
212
+ () => {
213
+ },
214
+ () => {
215
+ }
216
+ ), u;
217
+ },
218
+ release(e) {
219
+ d.get(e)?.unconfigure(), d.delete(e);
220
+ },
221
+ loseDevice() {
222
+ h && t.destroy();
223
+ },
224
+ dispose: b
225
+ };
226
+ }
227
+ export {
228
+ n as MaterialGpuError,
229
+ F as createGpuMaterialSession,
230
+ B as packMaterialFrame
231
+ };