fundus 0.3.0 → 0.5.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 (219) hide show
  1. package/README.md +67 -2
  2. package/build/client/_app/immutable/assets/2.DLP0pEak.css +1 -0
  3. package/build/client/_app/immutable/assets/2.DLP0pEak.css.br +0 -0
  4. package/build/client/_app/immutable/assets/2.DLP0pEak.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/{3.ChSpCG-T.css → 3.CmXD8k9d.css} +1 -1
  6. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.br +0 -0
  7. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/B1UabfW7.js +1 -0
  9. package/build/client/_app/immutable/chunks/B1UabfW7.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/B1UabfW7.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/BmCZn5E-.js +108 -0
  12. package/build/client/_app/immutable/chunks/BmCZn5E-.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/BmCZn5E-.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{BPJdVAz5.js → BoEHtxM8.js} +1 -1
  15. package/build/client/_app/immutable/chunks/BoEHtxM8.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/BoEHtxM8.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/C-T1_s5P.js +1 -0
  18. package/build/client/_app/immutable/chunks/C-T1_s5P.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/C-T1_s5P.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{CLcR3DTB.js → CN-G-m-B.js} +1 -1
  21. package/build/client/_app/immutable/chunks/CN-G-m-B.js.br +4 -0
  22. package/build/client/_app/immutable/chunks/CN-G-m-B.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/D5sQSsUv.js +1 -0
  24. package/build/client/_app/immutable/chunks/D5sQSsUv.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/D5sQSsUv.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/D6VoU_x4.js +1 -0
  27. package/build/client/_app/immutable/chunks/D6VoU_x4.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/D6VoU_x4.js.gz +0 -0
  29. package/build/client/_app/immutable/entry/{app.xrZU0FIS.js → app.fVDDVV_y.js} +2 -2
  30. package/build/client/_app/immutable/entry/app.fVDDVV_y.js.br +0 -0
  31. package/build/client/_app/immutable/entry/app.fVDDVV_y.js.gz +0 -0
  32. package/build/client/_app/immutable/entry/start.BiWgLLju.js +1 -0
  33. package/build/client/_app/immutable/entry/start.BiWgLLju.js.br +1 -0
  34. package/build/client/_app/immutable/entry/start.BiWgLLju.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/0.BLnSe7Ya.js +2 -0
  36. package/build/client/_app/immutable/nodes/0.BLnSe7Ya.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/0.BLnSe7Ya.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{1.0KLmHZC4.js → 1.DEw3d5yL.js} +1 -1
  39. package/build/client/_app/immutable/nodes/1.DEw3d5yL.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/1.DEw3d5yL.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/2.DnVTXPVk.js +3 -0
  42. package/build/client/_app/immutable/nodes/2.DnVTXPVk.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/2.DnVTXPVk.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/3.1Hco6zU7.js +1 -0
  45. package/build/client/_app/immutable/nodes/3.1Hco6zU7.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/3.1Hco6zU7.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/{4.CsuRmAsC.js → 4.CKbcoBw2.js} +2 -2
  48. package/build/client/_app/immutable/nodes/4.CKbcoBw2.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/4.CKbcoBw2.js.gz +0 -0
  50. package/build/client/_app/version.json +1 -1
  51. package/build/client/_app/version.json.br +0 -0
  52. package/build/client/_app/version.json.gz +0 -0
  53. package/build/handler.js +7 -7
  54. package/build/index.js +7 -7
  55. package/build/server/chunks/chunks/asset-id.js-CFsW8jeL.js +48 -0
  56. package/build/server/chunks/chunks/asset-id.js-CFsW8jeL.js.map +1 -0
  57. package/build/server/chunks/chunks/{context.js-B77ZAVLi.js → context.js-bXe5hzjI.js} +573 -25
  58. package/build/server/chunks/chunks/context.js-bXe5hzjI.js.map +1 -0
  59. package/build/server/chunks/chunks/{library-store.js-DJ-JRE-g.js → contract.js-sHny3b-s.js} +133 -359
  60. package/build/server/chunks/chunks/contract.js-sHny3b-s.js.map +1 -0
  61. package/build/server/chunks/chunks/{core.js-EA_ysb1J.js → core.js-Clg1CHb6.js} +2 -48
  62. package/build/server/chunks/chunks/core.js-Clg1CHb6.js.map +1 -0
  63. package/build/server/chunks/chunks/{exports.js-ScnpVC8o.js → exports.js-FRj9eAnR.js} +2 -2
  64. package/build/server/chunks/chunks/{exports.js-ScnpVC8o.js.map → exports.js-FRj9eAnR.js.map} +1 -1
  65. package/build/server/chunks/chunks/{http.js-DyoR9XRI.js → http.js--6sDZFfm.js} +35 -3
  66. package/build/server/chunks/chunks/http.js--6sDZFfm.js.map +1 -0
  67. package/build/server/chunks/chunks/{internal.js-D_k3d8Qh.js → internal.js-D2Tk-vi1.js} +3 -3
  68. package/build/server/chunks/chunks/{internal.js-D_k3d8Qh.js.map → internal.js-D2Tk-vi1.js.map} +1 -1
  69. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
  70. package/build/server/chunks/chunks/raw-reconciliation.js-DOFtjkgu.js +343 -0
  71. package/build/server/chunks/chunks/raw-reconciliation.js-DOFtjkgu.js.map +1 -0
  72. package/build/server/chunks/chunks/raw-reconciliation2.js-DFwky2ou.js +11 -0
  73. package/build/server/chunks/chunks/raw-reconciliation2.js-DFwky2ou.js.map +1 -0
  74. package/build/server/chunks/chunks/{shared.js-MLULcRRJ.js → shared.js-hvokB2mY.js} +2 -2
  75. package/build/server/chunks/chunks/{shared.js-MLULcRRJ.js.map → shared.js-hvokB2mY.js.map} +1 -1
  76. package/build/server/chunks/chunks/{utils.js-D64X9Sx8.js → utils.js-VGlYdWt0.js} +3 -3
  77. package/build/server/chunks/chunks/{utils.js-D64X9Sx8.js.map → utils.js-VGlYdWt0.js.map} +1 -1
  78. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-H4Pq1KAE.js → _server.ts.js-CkSErIdC.js} +7 -5
  79. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-H4Pq1KAE.js.map → _server.ts.js-CkSErIdC.js.map} +1 -1
  80. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-BI3KHSfE.js → _server.ts.js-Csnt5ISN.js} +11 -6
  81. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-BI3KHSfE.js.map → _server.ts.js-Csnt5ISN.js.map} +1 -1
  82. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BlNYUbXX.js → _server.ts.js-BVEQaFEu.js} +11 -6
  83. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-BlNYUbXX.js.map → _server.ts.js-BVEQaFEu.js.map} +1 -1
  84. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/_server.ts.js-DIaT5h8R.js +31 -0
  85. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/_server.ts.js-DIaT5h8R.js.map +1 -0
  86. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-j-_N540j.js → _server.ts.js-CgCr-jFC.js} +11 -6
  87. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-j-_N540j.js.map → _server.ts.js-CgCr-jFC.js.map} +1 -1
  88. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-BHKobzAg.js → _server.ts.js-BCvv4wq4.js} +11 -6
  89. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-BHKobzAg.js.map → _server.ts.js-BCvv4wq4.js.map} +1 -1
  90. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-BFKjIOCv.js → _server.ts.js-GbxbM9uI.js} +11 -6
  91. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-BFKjIOCv.js.map → _server.ts.js-GbxbM9uI.js.map} +1 -1
  92. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-BxZeVw8y.js → _server.ts.js-BGjOvpRm.js} +11 -6
  93. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-BxZeVw8y.js.map → _server.ts.js-BGjOvpRm.js.map} +1 -1
  94. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CO36U_CT.js → _server.ts.js-CJuzJXPs.js} +11 -6
  95. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CO36U_CT.js.map → _server.ts.js-CJuzJXPs.js.map} +1 -1
  96. package/build/server/chunks/entries/endpoints/api/imports/_server.ts.js-BYp42p6V.js +37 -0
  97. package/build/server/chunks/entries/endpoints/api/imports/_server.ts.js-BYp42p6V.js.map +1 -0
  98. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-CBlg1Bkl.js → _server.ts.js-l_tkhnQ-.js} +11 -6
  99. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-CBlg1Bkl.js.map → _server.ts.js-l_tkhnQ-.js.map} +1 -1
  100. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DcGLCjIs.js → _server.ts.js-B-VXO3Xr.js} +11 -6
  101. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DcGLCjIs.js.map → _server.ts.js-B-VXO3Xr.js.map} +1 -1
  102. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-AqhtjOiL.js → _server.ts.js-DV7s20GV.js} +11 -6
  103. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-AqhtjOiL.js.map → _server.ts.js-DV7s20GV.js.map} +1 -1
  104. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CSa6-DcU.js → _server.ts.js-CYgOpWYC.js} +11 -6
  105. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CSa6-DcU.js.map → _server.ts.js-CYgOpWYC.js.map} +1 -1
  106. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DnzZUoAo.js → _server.ts.js-7loll6HR.js} +11 -6
  107. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DnzZUoAo.js.map → _server.ts.js-7loll6HR.js.map} +1 -1
  108. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-B0KMprKq.js → _server.ts.js-CdxeTMZj.js} +11 -6
  109. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-B0KMprKq.js.map → _server.ts.js-CdxeTMZj.js.map} +1 -1
  110. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-Dhj5O9Lv.js → _server.ts.js-CZWIskM4.js} +11 -6
  111. package/build/server/chunks/entries/endpoints/api/reveal/_server.ts.js-CZWIskM4.js.map +1 -0
  112. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-B1N9o1Ne.js → _server.ts.js-CZFfpJkl.js} +11 -6
  113. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-B1N9o1Ne.js.map → _server.ts.js-CZFfpJkl.js.map} +1 -1
  114. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-B6HbnRqq.js → _server.ts.js-DB3i4juR.js} +7 -5
  115. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-B6HbnRqq.js.map → _server.ts.js-DB3i4juR.js.map} +1 -1
  116. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-7wzPyG9v.js → _server.ts.js-BqarqenW.js} +11 -6
  117. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-7wzPyG9v.js.map → _server.ts.js-BqarqenW.js.map} +1 -1
  118. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BWztxYge.js → _server.ts.js-CXbrUCmh.js} +11 -6
  119. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-BWztxYge.js.map → _server.ts.js-CXbrUCmh.js.map} +1 -1
  120. package/build/server/chunks/entries/{hooks.server.js-CVKLksJ1.js → hooks.server.js-6Yf-GF0J.js} +10 -5
  121. package/build/server/chunks/entries/{hooks.server.js-CVKLksJ1.js.map → hooks.server.js-6Yf-GF0J.js.map} +1 -1
  122. package/build/server/chunks/{handler-C22elTeC.js → handler-DHAu99Rv.js} +5 -5
  123. package/build/server/chunks/{handler-C22elTeC.js.map → handler-DHAu99Rv.js.map} +1 -1
  124. package/build/server/chunks/{index.js-CqN1-wfe.js → index.js-Bm1XIAPD.js} +5 -5
  125. package/build/server/chunks/{index.js-CqN1-wfe.js.map → index.js-Bm1XIAPD.js.map} +1 -1
  126. package/build/server/chunks/{manifest.js-5SY_cfDE.js → manifest.js-CCc26-hb.js} +40 -26
  127. package/build/server/chunks/manifest.js-CCc26-hb.js.map +1 -0
  128. package/build/server/chunks/nodes/0.js-Bpzcq6LZ.js +11 -0
  129. package/build/server/chunks/nodes/0.js-Bpzcq6LZ.js.map +1 -0
  130. package/build/server/chunks/nodes/1.js-CXgbNa8h.js +7 -0
  131. package/build/server/chunks/nodes/{1.js-B92oHDrL.js.map → 1.js-CXgbNa8h.js.map} +1 -1
  132. package/build/server/chunks/nodes/2.js-D56ryWAu.js +7 -0
  133. package/build/server/chunks/nodes/2.js-D56ryWAu.js.map +1 -0
  134. package/build/server/chunks/nodes/3.js-DMaZRwrN.js +7 -0
  135. package/build/server/chunks/nodes/{3.js-C1yCh8Tq.js.map → 3.js-DMaZRwrN.js.map} +1 -1
  136. package/build/server/chunks/nodes/4.js-BUgaRCEY.js +7 -0
  137. package/build/server/chunks/nodes/{4.js-B9BEDKwq.js.map → 4.js-BUgaRCEY.js.map} +1 -1
  138. package/dist/cli.js +2 -0
  139. package/dist/config.d.ts +1 -1
  140. package/dist/core/api-types.d.ts +12 -1
  141. package/dist/core/config.d.ts +12 -0
  142. package/dist/core/index.d.ts +3 -2
  143. package/dist/core/library.d.ts +8 -1
  144. package/dist/core/library.js +30 -6
  145. package/dist/server/cli-commands.d.ts +2 -1
  146. package/dist/server/cli-commands.js +155 -34
  147. package/dist/server/config-loader.d.ts +9 -1
  148. package/dist/server/config-loader.js +26 -1
  149. package/dist/server/http.d.ts +1 -0
  150. package/dist/server/http.js +37 -0
  151. package/dist/server/importers/contract.d.ts +29 -0
  152. package/dist/server/importers/contract.js +13 -0
  153. package/dist/server/importers/figma.d.ts +21 -0
  154. package/dist/server/importers/figma.js +386 -0
  155. package/dist/server/importers/file.d.ts +6 -0
  156. package/dist/server/importers/file.js +33 -0
  157. package/dist/server/importers/pinned-https.d.ts +21 -0
  158. package/dist/server/importers/pinned-https.js +70 -0
  159. package/dist/server/importers/registry.d.ts +12 -0
  160. package/dist/server/importers/registry.js +31 -0
  161. package/dist/server/importers.d.ts +2 -0
  162. package/dist/server/importers.js +7 -0
  163. package/dist/server/library-store.d.ts +19 -1
  164. package/dist/server/library-store.js +110 -14
  165. package/dist/server/operations.d.ts +13 -1
  166. package/dist/server/operations.js +159 -23
  167. package/package.json +1 -1
  168. package/build/client/_app/immutable/assets/2.AA5XNK5k.css +0 -1
  169. package/build/client/_app/immutable/assets/2.AA5XNK5k.css.br +0 -0
  170. package/build/client/_app/immutable/assets/2.AA5XNK5k.css.gz +0 -0
  171. package/build/client/_app/immutable/assets/3.ChSpCG-T.css.br +0 -0
  172. package/build/client/_app/immutable/assets/3.ChSpCG-T.css.gz +0 -0
  173. package/build/client/_app/immutable/chunks/BPJdVAz5.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/BPJdVAz5.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/CLZr1L0m.js +0 -108
  176. package/build/client/_app/immutable/chunks/CLZr1L0m.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/CLZr1L0m.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/CLcR3DTB.js.br +0 -4
  179. package/build/client/_app/immutable/chunks/CLcR3DTB.js.gz +0 -0
  180. package/build/client/_app/immutable/chunks/DkK6dXFi.js +0 -1
  181. package/build/client/_app/immutable/chunks/DkK6dXFi.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/DkK6dXFi.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/RVmTMq_g.js +0 -1
  184. package/build/client/_app/immutable/chunks/RVmTMq_g.js.br +0 -0
  185. package/build/client/_app/immutable/chunks/RVmTMq_g.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/TZFh8bT7.js +0 -1
  187. package/build/client/_app/immutable/chunks/TZFh8bT7.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/TZFh8bT7.js.gz +0 -0
  189. package/build/client/_app/immutable/entry/app.xrZU0FIS.js.br +0 -0
  190. package/build/client/_app/immutable/entry/app.xrZU0FIS.js.gz +0 -0
  191. package/build/client/_app/immutable/entry/start.BT85omvY.js +0 -1
  192. package/build/client/_app/immutable/entry/start.BT85omvY.js.br +0 -0
  193. package/build/client/_app/immutable/entry/start.BT85omvY.js.gz +0 -0
  194. package/build/client/_app/immutable/nodes/0.BjZZ-SXT.js +0 -2
  195. package/build/client/_app/immutable/nodes/0.BjZZ-SXT.js.br +0 -0
  196. package/build/client/_app/immutable/nodes/0.BjZZ-SXT.js.gz +0 -0
  197. package/build/client/_app/immutable/nodes/1.0KLmHZC4.js.br +0 -2
  198. package/build/client/_app/immutable/nodes/1.0KLmHZC4.js.gz +0 -0
  199. package/build/client/_app/immutable/nodes/2.BG8fXI4n.js +0 -3
  200. package/build/client/_app/immutable/nodes/2.BG8fXI4n.js.br +0 -0
  201. package/build/client/_app/immutable/nodes/2.BG8fXI4n.js.gz +0 -0
  202. package/build/client/_app/immutable/nodes/3.DMFh-x1Y.js +0 -1
  203. package/build/client/_app/immutable/nodes/3.DMFh-x1Y.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/3.DMFh-x1Y.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/4.CsuRmAsC.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/4.CsuRmAsC.js.gz +0 -0
  207. package/build/server/chunks/chunks/context.js-B77ZAVLi.js.map +0 -1
  208. package/build/server/chunks/chunks/core.js-EA_ysb1J.js.map +0 -1
  209. package/build/server/chunks/chunks/http.js-DyoR9XRI.js.map +0 -1
  210. package/build/server/chunks/chunks/library-store.js-DJ-JRE-g.js.map +0 -1
  211. package/build/server/chunks/entries/endpoints/api/reveal/_server.ts.js-Dhj5O9Lv.js.map +0 -1
  212. package/build/server/chunks/manifest.js-5SY_cfDE.js.map +0 -1
  213. package/build/server/chunks/nodes/0.js-CoD1zSiQ.js +0 -11
  214. package/build/server/chunks/nodes/0.js-CoD1zSiQ.js.map +0 -1
  215. package/build/server/chunks/nodes/1.js-B92oHDrL.js +0 -7
  216. package/build/server/chunks/nodes/2.js-COlJ22cI.js +0 -7
  217. package/build/server/chunks/nodes/2.js-COlJ22cI.js.map +0 -1
  218. package/build/server/chunks/nodes/3.js-C1yCh8Tq.js +0 -7
  219. package/build/server/chunks/nodes/4.js-B9BEDKwq.js +0 -7
package/README.md CHANGED
@@ -60,6 +60,70 @@ npx fundus build
60
60
  npx fundus check
61
61
  ```
62
62
 
63
+ ### Import from Figma
64
+
65
+ Fundus separates acquisition from asset processing: a file or Figma importer
66
+ materializes a raw file, then the selected Image or Slice asset type processes
67
+ it through the same existing pipeline. Raw files remain committed, offline
68
+ build inputs; builds and checks never contact Figma.
69
+
70
+ Create a Figma personal access token with `file_content:read`, pass it through
71
+ the server-side config, and choose **Import from Figma** in the editor. Prefer
72
+ an environment variable so the secret is never committed:
73
+
74
+ ```ts
75
+ export default defineConfig({
76
+ // existing paths…
77
+ import: {
78
+ figma: {
79
+ token: process.env.FIGMA_ACCESS_TOKEN,
80
+ defaults: { scale: 3 }
81
+ }
82
+ }
83
+ });
84
+ ```
85
+
86
+ Fundus never exposes this token through editor state, API responses, or the
87
+ library file. The default scale is optional and falls back to 2.
88
+
89
+ The editor, API, and CLI use the same importer pipeline and configuration. In
90
+ the CLI, acquisition is explicit: ordinary file ingest remains the default,
91
+ while `--from figma` requires a selection link, asset type, and id:
92
+
93
+ ```sh
94
+ fundus asset ingest ./exports/navigation_panel.png --type slice
95
+ fundus asset ingest 'https://www.figma.com/design/abc/UI?node-id=12-34' \
96
+ --from figma --type slice --id navigationPanel --scale 3
97
+
98
+ fundus asset reimport navigationPanel
99
+ fundus asset reimport navigationPanel --scale 4
100
+ fundus asset reimport navigationPanel \
101
+ --figma-link 'https://www.figma.com/design/def/UI?node-id=56-78'
102
+ ```
103
+
104
+ Omit `--scale` to use `import.figma.defaults.scale`. During re-import, link and
105
+ scale overrides are independent; an omitted value stays unchanged.
106
+
107
+ The MVP imports one node from a Figma design, file, or prototype selection
108
+ link as PNG at 1x–4x (2x by default unless configured). Select Image or Slice
109
+ independently of the importer. Figma export scale is not Slice `pixelRatio`;
110
+ initial Slice parameters conservatively start at pixel ratio 1.
111
+
112
+ Fundus stores only the file key, node id, PNG format, and scale. The token and
113
+ temporary download URL are never persisted. Re-import renders the same stable
114
+ node id again while preserving the asset id, type, parameters, folder, and
115
+ manifest memberships. Renaming or editing a Figma node normally preserves its
116
+ id; deleting/recreating it or copying it to another file does not.
117
+
118
+ Local raw-file drift blocks re-import instead of being overwritten. Applying
119
+ an external edit or manually replacing the raw file disconnects the Figma
120
+ source. Figma rate limits are surfaced without automatic retries, and Figma
121
+ may downscale exports above 32 megapixels.
122
+
123
+ The first persisted Figma source upgrades that project library lazily from
124
+ version 1 to version 2. Source-free projects remain version 1, but older Fundus
125
+ versions cannot open a library after this upgrade.
126
+
63
127
  ### External raw-file management
64
128
 
65
129
  You can also add, move, edit, or delete files directly in the configured raw
@@ -72,8 +136,9 @@ New files with a supported extension and edited managed files appear in the
72
136
  editor's ingestion queue. Choose any compatible asset type, then import a new
73
137
  file or reimport an edited one. Reimporting resets and reseeds its parameters;
74
138
  applying the external edit instead keeps its current type and parameters while
75
- accepting the new content hash. Regular files whose extension no registered
76
- asset type accepts are ignored entirely.
139
+ accepting the new content hash. Either choice disconnects a repeatable import
140
+ source because the accepted local bytes become authoritative. Regular files
141
+ whose extension no registered asset type accepts are ignored entirely.
77
142
 
78
143
  `fundus check` is the read-only CI gate for this workflow. Unmanaged, missing,
79
144
  edited, invalid, symlinked, and otherwise unsafe raw entries are hard errors
@@ -0,0 +1 @@
1
+ .backdrop.svelte-n5o24b{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-n5o24b{border:1px solid var(--border);background:var(--panel);border-radius:8px;width:420px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-n5o24b{margin:0 0 4px;font-size:12px}.destination.svelte-n5o24b{color:var(--text-faint);margin:0 0 16px}.row.svelte-n5o24b{gap:12px;display:flex}.field.svelte-n5o24b{color:var(--text-dim);flex-direction:column;flex:1;gap:4px;margin-bottom:10px;display:flex}.field.wide.svelte-n5o24b{width:100%}.warning.svelte-n5o24b{color:var(--warning);margin:6px 0 0;font-size:11px}.actions.svelte-n5o24b{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.submenu-anchor.svelte-13hq4tl{position:relative}button.svelte-13hq4tl{width:100%;color:var(--text);font:inherit;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-13hq4tl:hover,button.svelte-13hq4tl:focus-visible{background:var(--accent-soft);outline:none}.submenu-anchor.svelte-13hq4tl:has(.submenu:where(.svelte-13hq4tl))>.submenu-trigger:where(.svelte-13hq4tl){background:var(--accent-soft);outline:none}.submenu-trigger.svelte-13hq4tl{justify-content:space-between;align-items:center;gap:12px;display:flex}.arrow.svelte-13hq4tl{color:var(--text-faint);font-size:16px;line-height:12px}.submenu.svelte-13hq4tl{z-index:1;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;min-width:168px;max-width:320px;padding:4px;position:absolute;top:-5px;left:calc(100% - 4px);overflow-y:auto;box-shadow:0 8px 24px #00000073}.submenu.opens-left.svelte-13hq4tl{left:auto;right:calc(100% - 4px)}.submenu.svelte-13hq4tl button:where(.svelte-13hq4tl){text-overflow:ellipsis;overflow:hidden}.context-menu.svelte-109nkvw{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-109nkvw{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-109nkvw:hover,button.svelte-109nkvw:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-109nkvw{color:var(--danger)}hr.svelte-109nkvw{background:var(--border);border:0;height:1px;margin:4px 8px}.manifest-label.svelte-1b4m5oj{align-items:center;gap:4px;min-width:0;display:inline-flex}.emoji.svelte-1b4m5oj{flex:none;line-height:1}.name.svelte-1b4m5oj{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip.svelte-1b4m5oj{background:color-mix(in srgb, var(--manifest-color) 20%, transparent);color:var(--manifest-color);border-radius:4px;padding:0 5px;font-size:10px}.chip.passive.svelte-1b4m5oj{border:1px dashed var(--manifest-color);background:0 0}.library-view.svelte-1uha8ag{flex:1;min-height:0;display:flex}.page.svelte-1uha8ag{flex:1;min-height:0;padding:16px;position:relative;overflow-y:auto}.selection-bar.svelte-1uha8ag,.filter-bar.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.selection-bar.svelte-1uha8ag{margin-bottom:8px}.filter-bar.svelte-1uha8ag{margin-bottom:16px}.selection-summary.svelte-1uha8ag{color:var(--accent);white-space:nowrap;font-weight:600}.toggle.svelte-1uha8ag{color:var(--text-dim);align-items:center;gap:6px;display:inline-flex}.search.svelte-1uha8ag{align-items:center;gap:5px;width:220px;padding:0 6px;display:flex}.search.svelte-1uha8ag:focus-within{border-color:var(--accent)}.search-icon.svelte-1uha8ag{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-width:1.5px;stroke-linecap:round;flex:none}.search-input.svelte-1uha8ag{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-faint);border-radius:3px;flex:none;padding:1px 4px;font:9px/14px system-ui,sans-serif}.import.svelte-1uha8ag{background:var(--accent);color:var(--text);margin-left:auto}.section.svelte-1uha8ag{margin-bottom:24px}.section.svelte-1uha8ag:last-child{margin-bottom:0}.section-emoji.svelte-1uha8ag{margin-right:6px}.grid.svelte-1uha8ag,.folder-grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.folder-card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);min-width:0;height:60px;color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.folder-card.svelte-1uha8ag:hover,.folder-card.svelte-1uha8ag:focus-visible{border-color:var(--accent);outline:none}.folder-card.drop-target.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.folder-card.dragging-folder.svelte-1uha8ag{opacity:.55}.folder-card-icon.svelte-1uha8ag{color:var(--text-dim);flex:none;align-items:center;display:flex}.folder-card-details.svelte-1uha8ag{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.folder-card-details.svelte-1uha8ag strong:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.folder-card-details.svelte-1uha8ag span:where(.svelte-1uha8ag),.folder-card-arrow.svelte-1uha8ag{color:var(--text-faint)}.folder-card-arrow.svelte-1uha8ag{flex:none;font-size:18px}.card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);border-radius:8px;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative}.card.selected.svelte-1uha8ag{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.asset-select.svelte-1uha8ag{z-index:1;width:16px;height:16px;accent-color:var(--accent);position:absolute;top:12px;left:12px}.card.svelte-1uha8ag:hover{border-color:var(--accent)}.thumbnail.svelte-1uha8ag{border-radius:var(--radius);justify-content:center;align-items:center;height:96px;display:flex;overflow:hidden}.meta.svelte-1uha8ag{align-items:center;gap:6px;min-width:0;display:flex}.id.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.type-badge.svelte-1uha8ag{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:10px}.badges.svelte-1uha8ag{flex-wrap:wrap;gap:4px;min-height:16px;display:flex}.badge.svelte-1uha8ag{border-radius:4px;padding:0 5px;font-size:10px}.badge.warning.svelte-1uha8ag{background:var(--warning-soft);color:var(--warning)}.empty.svelte-1uha8ag{color:var(--text-dim);text-align:center;padding:48px}.dialog-row.svelte-1uha8ag{align-items:center;gap:8px;display:flex}.dialog-row.svelte-1uha8ag span:where(.svelte-1uha8ag){width:44px;color:var(--text-dim)}.dialog-row.svelte-1uha8ag input:where(.svelte-1uha8ag){flex:1}.dialog-text.svelte-1uha8ag,.dialog-warning.svelte-1uha8ag{margin:8px 0 0}.dialog-warning.svelte-1uha8ag{color:var(--warning)}.drop-hint.svelte-1uha8ag{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;background:#0d99ff14;border-radius:12px;justify-content:center;align-items:center;font-size:14px;display:flex;position:fixed;inset:48px 8px 8px}
@@ -1 +1 @@
1
- .detail.svelte-xy8zsr{flex:1;grid-template-columns:224px 1fr 280px;min-height:0;display:grid}.center.svelte-xy8zsr{flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex}.center.empty.svelte-xy8zsr,.empty.svelte-xy8zsr{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}.inspector.svelte-xy8zsr{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.inspector.svelte-xy8zsr section:where(.svelte-xy8zsr){border-bottom:1px solid var(--border-soft);padding:12px}.inspector.svelte-xy8zsr h2:where(.svelte-xy8zsr){word-break:break-all;margin:0;font-size:13px}.raw.svelte-xy8zsr{color:var(--text-dim);word-break:break-all;margin:4px 0 0}.warning.svelte-xy8zsr{color:var(--warning);margin:8px 0 0;font-size:11px}.hint.svelte-xy8zsr{color:var(--text-faint);margin:0;font-size:11px}.inspector.svelte-xy8zsr h4:where(.svelte-xy8zsr){text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:8px 0 4px;font-size:10px}.reference-row.svelte-xy8zsr{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:6px;min-width:0;padding:3px 4px;display:flex}.reference-row.svelte-xy8zsr:hover{background:var(--panel-raised);color:var(--text)}.reference-field.svelte-xy8zsr{color:var(--text-faint);font-size:11px}.reference-arrow.svelte-xy8zsr{color:var(--text-faint);flex:none}.reference-asset.svelte-xy8zsr{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.rename.svelte-xy8zsr{gap:8px;margin-bottom:8px;display:flex}.replace-raw.svelte-xy8zsr{width:100%;margin-bottom:8px}.rename.svelte-xy8zsr input:where(.svelte-xy8zsr){flex:1;min-width:0}.danger.svelte-xy8zsr{width:100%}
1
+ .detail.svelte-xy8zsr{flex:1;grid-template-columns:224px 1fr 280px;min-height:0;display:grid}.center.svelte-xy8zsr{flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex}.center.empty.svelte-xy8zsr,.empty.svelte-xy8zsr{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}.inspector.svelte-xy8zsr{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.inspector.svelte-xy8zsr section:where(.svelte-xy8zsr){border-bottom:1px solid var(--border-soft);padding:12px}.inspector.svelte-xy8zsr h2:where(.svelte-xy8zsr){word-break:break-all;margin:0;font-size:13px}.raw.svelte-xy8zsr{color:var(--text-dim);word-break:break-all;margin:4px 0 0}.warning.svelte-xy8zsr{color:var(--warning);margin:8px 0 0;font-size:11px}.hint.svelte-xy8zsr{color:var(--text-faint);margin:0;font-size:11px}.inspector.svelte-xy8zsr h4:where(.svelte-xy8zsr){text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:8px 0 4px;font-size:10px}.reference-row.svelte-xy8zsr{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:6px;min-width:0;padding:3px 4px;display:flex}.reference-row.svelte-xy8zsr:hover{background:var(--panel-raised);color:var(--text)}.reference-field.svelte-xy8zsr{color:var(--text-faint);font-size:11px}.reference-arrow.svelte-xy8zsr{color:var(--text-faint);flex:none}.reference-asset.svelte-xy8zsr{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.rename.svelte-xy8zsr{gap:8px;margin-bottom:8px;display:flex}.replace-raw.svelte-xy8zsr{width:100%;margin-bottom:8px}.source-label.svelte-xy8zsr{margin-bottom:8px}.source-field.svelte-xy8zsr{color:var(--text-dim);flex-direction:column;gap:4px;margin-bottom:8px;font-size:11px;display:flex}.source-field.svelte-xy8zsr .control:where(.svelte-xy8zsr){width:100%}.source-actions.svelte-xy8zsr{flex-direction:column;gap:6px;display:flex}.source-actions.svelte-xy8zsr .control:where(.svelte-xy8zsr){text-align:center;width:100%}.rename.svelte-xy8zsr input:where(.svelte-xy8zsr){flex:1;min-width:0}.danger.svelte-xy8zsr{width:100%}
@@ -0,0 +1 @@
1
+ import{F as e,I as t,L as n,Q as r,X as i,Y as a,n as o,t as s}from"./D65cSBhe.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function ee(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function g(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var _=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),_(e,t));var v=new Map;function te(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=g(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function y(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${ee(...e)}"]`}return n}var ne=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,re=/^\/\((?:[^)]+)\)$/;function x(e){let t=[];return{pattern:e===`/`||re.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=ne.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var ce=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function le(e,t){let n=ae(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(ce,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=x(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_16xh186?.base??``,pe=globalThis.__sveltekit_16xh186?.assets??S??``,me=``;function he(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return S+me+le(e[0],e[1])}var ge=`1784131654638`,_e=`sveltekit:snapshot`,ve=`sveltekit:scroll`,ye=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},E=location.origin;function be(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function O(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var xe={...T,"":T.hover};function Se(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ce(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Se(e)}}function we(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||A(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===E&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function k(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,`preload-code`)),i===null&&(i=O(s,`preload-data`)),t===null&&(t=O(s,`keepfocus`)),n===null&&(n=O(s,`noscroll`)),a===null&&(a=O(s,`reload`)),o===null&&(o=O(s,`replacestate`)),s=Se(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:xe[r??`off`],preload_data:xe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Te(e){let t=r(e),n=!0;function i(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:i,set:a,subscribe:o}}var Ee={v:h};function De(){let{set:e,subscribe:t}=r(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==ge;return n&&(e(!0),Ee.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function A(e,t,n){return e.origin!==E||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...ke],[...new Set([...ke])];function Ae(e){return e.filter(e=>e!=null)}function j(e,t){return e+`/`+t}function je(e){return e instanceof c||e instanceof u?e.status:500}function Me(e){return e instanceof u?e.text:`Internal Error`}var M,N,P,Ne=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Pe=`a:`;Ne?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Pe)},N={current:null},P={current:!1}):(M=new class{#e=i({});get data(){return e(this.#e)}set data(e){a(this.#e,e)}#t=i(null);get form(){return e(this.#t)}set form(e){a(this.#t,e)}#n=i(null);get error(){return e(this.#n)}set error(e){a(this.#n,e)}#r=i({});get params(){return e(this.#r)}set params(e){a(this.#r,e)}#i=i({id:null});get route(){return e(this.#i)}set route(e){a(this.#i,e)}#a=i({});get state(){return e(this.#a)}set state(e){a(this.#a,e)}#o=i(-1);get status(){return e(this.#o)}set status(e){a(this.#o,e)}#s=i(new URL(Pe));get url(){return e(this.#s)}set url(e){a(this.#s,e)}},N=new class{#e=i(null);get current(){return e(this.#e)}set current(e){a(this.#e,e)}},P=new class{#e=i(!1);get current(){return e(this.#e)}set current(e){a(this.#e,e)}},Ee.v=()=>P.current=!0);function Fe(e){Object.assign(M,e)}var{onMount:Ie,tick:Le}=s,Re=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),F=null,I=de(`sveltekit:scroll`)??{},L=de(`sveltekit:snapshot`)??{},R={url:Te({}),page:Te({}),navigating:r(null),updated:De()};function ze(e){I[e]=D()}function Be(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;L[n];)delete L[n],n+=1}function z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Ve(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var He,Ue,We,B,Ge,V,Ke={},qe={},Je=[],Ye=[],H=null;function Xe(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var Ze=new Map,Qe=new Set,$e=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},et=!1,tt=!1,nt=!0,G=!1,K=!1,rt=!1,it=!1,at,q,J,Y,ot=new Set,st=new Map,ct=new Map;async function lt(e,t,n){if(globalThis.__sveltekit_16xh186.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_16xh186.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),He=ue(e),B=document.documentElement,Ge=t,Ue=e.nodes[0],We=e.nodes[1],Ue(),We(),q=history.state?.[C],J=history.state?.[w],q||(q=J=Date.now(),history.replaceState({...history.state,[C]:q,[w]:J},``));let r=I[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Lt(Ge,n)):(await Z({type:`enter`,url:be(V.hash?Ut(new URL(location.href)):location.href),replace_state:!0}),i()),It()}function ut(){Je.length=0,it=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(L[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){L[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){ze(q),fe(ve,I),dt(J),fe(_e,L)}async function mt(e,t,r,i){let a,o;t.invalidateAll&&Xe(),await Z({type:`goto`,url:be(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:r,nav_token:i,accept:()=>{if(t.invalidateAll){it=!0,a=new Set;for(let[e,t]of st)for(let[n,r]of t)r.resource?.reset(),a.add(j(e,n));o=new Set;for(let[e,t]of ct)for(let n of t.keys())o.add(j(e,n))}t.invalidate&&t.invalidate.forEach(Ft)}}),t.invalidateAll&&n().then(n).then(()=>{for(let[e,t]of st)for(let[n,{resource:r}]of t)a?.has(j(e,n))&&r.start();for(let[e,t]of ct)for(let[n,{resource:r}]of t)o?.has(j(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==H?.id){Xe();let t={};ot.add(t),H={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(ot.delete(t),e.type===`loaded`&&e.state.error&&Xe(),e)),fork:null}}return H.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Fe(e.props.page),at=new V.root({target:t,props:{...e.props,stores:R,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:I[q]??D()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}ft(J),tt=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ae(n).map(e=>e.node.component),page:Ht(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function yt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:tt?y(r,i.href,t):te(r,t)}}function xt(e,t,n,r,i,a){if(it)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ht(M),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return ot.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=W.url?e!==At(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Ct(W.url,n),ee=!1,g=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!xt(ee,p,f,m,a.universal?.uses,r)?a:(ee=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await g[n])?.data);return e},server_data_node:St(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of g)e.catch(h);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await g[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(a&&ot.has(a))return wt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=je(t),u;if(t instanceof c)u=t.body;else{if(await R.updated.check())return await Ve(),await z(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await Et(e,_,o);return d?vt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Mt(n,{id:i.id},u,s)}else _.push(void 0);return vt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Et(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Dt({status:e,error:t,url:n,route:r}){let i={};try{return vt({url:n,params:i,branch:[await yt({loader:Ue,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:St(null)}),{node:await We(),loader:We,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await mt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Ze.has(t))return Ze.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ze.set(t,r),n=await r}catch{Ze.delete(t);return}return n}async function X(e,t){if(e&&!A(e,S,V.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of He){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:p(i),url:e}}}}function kt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function At(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Vt(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||Qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let ee=Y;Y=d;let g=await X(r,!1),_=e===`enter`?Vt(W,g,r,e):jt({url:r,type:e,delta:i?.delta,intent:g,scroll:i?.scroll,event:m});if(!_){p(),Y===d&&(Y=ee);return}let v=q,te=J;f(),G=!0,tt&&_.navigation.type!==`enter`&&R.navigating.set(N.current=_.navigation);let y=g&&await Tt(g);if(!y){if(A(r,S,V.hash))return await z(r,s);y=await Mt(r,{id:null},await $(new u(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=g?.url||r,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await R.updated.check())return await Ve(),await z(r,s);if(ut(),ze(v),dt(te),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:q+=e,[w]:J+=e,[ye]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Be(q,J)}let b=g&&H?.id===g.id?H.fork:null;H?.fork&&!b?Xe():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let ne;if(tt){let e=(await Promise.all(Array.from($e,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{U.delete(e)})}e.push(t),e.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=b&&await b;i?ne=i.commit():(F=null,at.$set(y.props),F&&Object.assign(y.props.page,F),Fe(y.props.page),ne=t?.()),rt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await ne,await n(),await n(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&F&&Object.assign(y.props.page,F);let x=null;if(nt){let e=i?i.scroll:o?D():null;e?scrollTo(e.x,e.y):(x=r.hash&&document.getElementById(Wt(r)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&Bt(r,!x),nt=!0,G=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=D()),U.forEach(e=>e(_.navigation)),e===`popstate`&&ft(J),R.navigating.set(N.current=null)}async function Mt(e,t,n,r,i){return e.origin===E&&e.pathname===location.pathname&&!et?await Dt({status:r,error:n,url:e,route:t}):await z(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ce(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=we(r,S,V.hash);if(o||s)return;let c=k(r),l=a&&At(W.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=we(e,S,V.hash);if(n||i)continue;let a=k(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&gt(t))}}U.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=je(e),r=Me(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t={}){return e=new URL(be(e)),e.origin===E?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Ft(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function It(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!G){let e=Vt(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ce(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=we(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=k(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,ze(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(A(r,S,!1))return;let i=e.target,a=k(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!zt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Y={},n===q)return;let r=I[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=W.url?m(location)===m(W.url):!1;if(o===J&&(rt||s)){i!==M.state&&(M.state=i),e(a),I[q]=D(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[C]:++q,[w]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Re.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&R.navigating.set(N.current=null)});function e(e){W.url=M.url=e,R.page.set(Ht(M)),R.page.notify()}}async function Lt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){et=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(u,!1)||{}),d=He.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Rt(r.uses)),yt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:St(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await vt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l)return await z(new URL(t.location,location.href));f=await Dt({status:je(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await _t(f,e,p))}function Rt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var zt=!1;function Bt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Wt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=D();setTimeout(()=>{let a=history.state;zt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),zt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Vt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Ht(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Ut(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Wt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,he as c,N as i,lt as n,P as o,R as r,Oe as s,Pt as t};
@@ -0,0 +1,108 @@
1
+ import{A as e,B as t,D as n,E as r,F as i,G as a,J as o,K as s,L as c,M as l,N as u,O as d,P as f,R as p,S as m,T as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,a as S,at as C,b as w,c as T,d as E,et as D,g as O,h as k,i as A,it as j,j as M,k as N,l as P,m as F,n as I,p as L,q as R,s as ee,tt as z,w as B,x as V}from"./D65cSBhe.js";import"./B1UabfW7.js";import"./xihTtKlq.js";import{L as H,N as te,_ as U,a as W,b as ne,c as G,d as re,f as K,h as ie,i as ae,k as q,l as oe,m as J,o as Y,p as X,r as se,s as ce,u as le,w as ue}from"./C-T1_s5P.js";import{t as de}from"./BoEHtxM8.js";import{a as fe,i as pe,n as me,r as he,t as ge}from"./D6VoU_x4.js";var _e=/[\u0000-\u001f\u007f]/,ve=/[<>:"|?*]/,ye=/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;function be(e){return e.length===0?`Folder names must not be empty.`:e===e.trim()?e===`.`||e===`..`?`"${e}" is not a valid folder name.`:e.includes(`/`)||e.includes(`\\`)?`Folder names must not contain path separators.`:_e.test(e)?`Folder names must not contain control characters.`:ve.test(e)?`Folder names must not contain Windows-reserved characters (: * ? " < > |).`:e.endsWith(`.`)?`Folder names must not end with a dot.`:e.toLocaleLowerCase(`en-US`)===`root`?`"${e}" is reserved for the implicit Fundus root folder.`:e.toLocaleLowerCase(`en-US`)===`.gitkeep`?`"${e}" is reserved for Fundus folder management.`:ye.test(e)?`"${e}" is a reserved filesystem name.`:null:`Folder names must not start or end with whitespace.`}function xe(e){return e.split(`/`).map(e=>e.normalize(`NFC`)).join(`/`)}function Se(e){return xe(e).toLocaleLowerCase(`en-US`)}function Ce(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function we(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function Te(e,t){return e===``?t:`${e}/${t}`}function Ee(e,t){return e===t||e.startsWith(`${t}/`)}function De(e){let t=Number.isFinite(e)&&e>0?Math.floor(e):0;return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}var Oe=e(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><rect x="4.5" y="3.5" width="2.5" height="9" fill="currentColor"></rect><rect x="9" y="3.5" width="2.5" height="9" fill="currentColor"></rect></svg>`),ke=e(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M5 3.3v9.4l7-4.7z" fill="currentColor"></path></svg>`),Ae=N(`<span class="time svelte-nchstv"> </span> <input class="range scrub svelte-nchstv" type="range" min="0" step="0.01" aria-label="Seek"/> <span class="time svelte-nchstv"> </span>`,1),je=N(`<span class="time svelte-nchstv"> </span>`),Me=e(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M2.5 6h2l3-2.5v9l-3-2.5h-2z" fill="currentColor"></path><path d="M10 6l3.5 4M13.5 6 10 10" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path></svg>`),Ne=e(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M2.5 6h2l3-2.5v9l-3-2.5h-2z" fill="currentColor"></path><path d="M10 5.6a3.4 3.4 0 0 1 0 4.8" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path><path d="M11.8 3.9a6 6 0 0 1 0 8.2" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path></svg>`),Pe=N(`<div class="volume-group svelte-nchstv"><button class="btn svelte-nchstv" type="button"><!></button> <input class="range volume svelte-nchstv" type="range" min="0" max="1" step="0.01" aria-label="Volume"/></div>`),Fe=N(`<div><button class="btn svelte-nchstv" type="button"><!></button> <button class="btn svelte-nchstv" type="button" aria-label="Stop"><svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><rect x="4" y="4" width="8" height="8" rx="1" fill="currentColor"></rect></svg></button> <button type="button" aria-label="Loop"><svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" class="svelte-nchstv"><path d="M4.4 4.5H9A3.5 3.5 0 0 1 12.5 8"></path><path d="M2.4 6.4 4.3 4.4 6.3 6.1"></path><path d="M11.6 11.5H7A3.5 3.5 0 0 1 3.5 8"></path><path d="M13.6 9.6 11.7 11.6 9.7 9.9"></path></svg></button> <!> <!></div>`);function Ie(e,o){z(o,!0);let c=A(o,`media`,7),l=A(o,`showScrub`,3,!1),d=A(o,`showVolume`,3,!0),f=v(!1),p=v(0),m=v(0),_=v(!1),x=v(1),S=v(!1),w=v(!1),k=!1,j=null,M=b(()=>De(i(p))),N=b(()=>De(i(m))),F=b(()=>i(m)>0),I=b(()=>i(S)?0:i(x));g(()=>{if(!c()){y(f,!1);return}let e=c();y(f,!e.paused),y(p,e.currentTime,!0),y(m,Number.isFinite(e.duration)?e.duration:0,!0),y(_,e.loop,!0),y(x,e.volume,!0),y(S,e.muted,!0);function t(){y(f,!0)}function n(){y(f,!1)}function r(){i(w)||y(p,e.currentTime,!0)}function a(){y(m,Number.isFinite(e.duration)?e.duration:0,!0)}function o(){y(x,e.volume,!0),y(S,e.muted,!0)}return e.addEventListener(`play`,t),e.addEventListener(`playing`,t),e.addEventListener(`pause`,n),e.addEventListener(`ended`,n),e.addEventListener(`timeupdate`,r),e.addEventListener(`seeked`,r),e.addEventListener(`loadedmetadata`,a),e.addEventListener(`durationchange`,a),e.addEventListener(`volumechange`,o),()=>{j===e&&(y(w,!1),k=!1,j=null),e.removeEventListener(`play`,t),e.removeEventListener(`playing`,t),e.removeEventListener(`pause`,n),e.removeEventListener(`ended`,n),e.removeEventListener(`timeupdate`,r),e.removeEventListener(`seeked`,r),e.removeEventListener(`loadedmetadata`,a),e.removeEventListener(`durationchange`,a),e.removeEventListener(`volumechange`,o)}});function L(){c()&&(c().paused?c().play():c().pause())}function ee(){c()&&(c().pause(),c().currentTime=0)}function B(){c()&&(c().loop=!c().loop,y(_,c().loop,!0))}function V(){c()&&(c().muted=!c().muted)}function H(e){if(!c())return;let t=e.currentTarget.valueAsNumber;c().volume=t,c().muted=t===0}function te(){!c()||i(w)||(y(w,!0),k=!c().paused,j=c(),c().pause())}function U(e){let t=j??c();if(!t)return;let n=e.currentTarget.valueAsNumber;Number.isFinite(t.duration)&&(t.currentTime=n),y(p,n,!0)}function W(){if(!i(w))return;let e=j;y(w,!1),k&&e&&c()===e&&e.play(),k=!1,j=null}g(()=>{if(i(w))return window.addEventListener(`pointerup`,W),window.addEventListener(`pointercancel`,W),()=>{window.removeEventListener(`pointerup`,W),window.removeEventListener(`pointercancel`,W)}});var ne=Fe(),G=a(ne),re=a(G),K=e=>{n(e,Oe())},ie=e=>{n(e,ke())};h(re,e=>{i(f)?e(K):e(ie,-1)}),C(G);var ae=R(G,2),q=R(ae,2);let oe;var J=R(q,2),Y=e=>{var o=Ae(),l=s(o),d=a(l,!0);C(l);var f=R(l,2);T(f);var h=R(f,2),g=a(h,!0);C(h),t(()=>{r(d,i(M)),P(f,`max`,i(F)?i(m):0),E(f,i(p)),f.disabled=!c()||!i(F),r(g,i(N))}),u(`pointerdown`,f,te),u(`input`,f,U),n(e,o)},X=e=>{var o=je(),s=a(o);C(o),t(()=>r(s,`${i(M)??``} / ${i(N)??``}`)),n(e,o)};h(J,e=>{l()?e(Y):i(F)&&e(X,1)});var se=R(J,2),ce=e=>{var r=Pe(),o=a(r),s=a(o),l=e=>{n(e,Me())},d=e=>{n(e,Ne())};h(s,e=>{i(S)||i(x)===0?e(l):e(d,-1)}),C(o);var f=R(o,2);T(f),C(r),t(()=>{o.disabled=!c(),P(o,`aria-label`,i(S)?`Unmute`:`Mute`),E(f,i(I)),f.disabled=!c()}),u(`click`,o,V),u(`input`,f,H),n(e,r)};h(se,e=>{d()&&e(ce)}),C(ne),t(()=>{O(ne,1,`playback ${o.class??``??``}`,`svelte-nchstv`),G.disabled=!c(),P(G,`aria-label`,i(f)?`Pause`:`Play`),ae.disabled=!c(),oe=O(q,1,`btn svelte-nchstv`,null,oe,{active:i(_)}),q.disabled=!c(),P(q,`aria-pressed`,i(_))}),u(`click`,G,L),u(`click`,ae,ee),u(`click`,q,B),n(e,ne),D()}l([`click`,`pointerdown`,`input`]);var Z=null;function Le(){return Z||=new AudioContext,Z}var Re=null;function ze(e){let t=e.numberOfChannels;if(t===1)return e.getChannelData(0);let n=e.length,r=new Float32Array(n);for(let i=0;i<t;i++){let t=e.getChannelData(i);for(let e=0;e<n;e++)r[e]+=t[e]}for(let e=0;e<n;e++)r[e]/=t;return r}function Be(e,t){let n=new Float32Array(t),r=new Float32Array(t),i=e.length/t;for(let a=0;a<t;a++){let t=Math.floor(a*i),o=Math.min(e.length,Math.floor((a+1)*i)),s=0,c=0;for(let n=t;n<o;n++){let t=e[n];t<s&&(s=t),t>c&&(c=t)}n[a]=s,r[a]=c}return{min:n,max:r}}function Q(e,t,n){return Math.min(n,Math.max(t,e))}var Ve=N(`<div class="footer svelte-1liihyn"><!></div>`),He=N(`<div><canvas class="wave svelte-1liihyn" role="button" tabindex="0" aria-label="Audio waveform — click or press Enter to play; arrow keys scrub"></canvas> <!></div>`);function Ue(e,r){z(r,!0);let o=A(r,`loop`,3,!1),s=A(r,`showControls`,3,!1),c=v(void 0),l=v(null),d=v(!1),f=v(0),m=v(0),_=`idle`,b=null,x=null,w=0,T=1,E=`#0d99ff`,k=`#7a7a7a`,j=`#f24822`,M=0;function N(){if(!i(c))return;let e=getComputedStyle(i(c));E=e.getPropertyValue(`--accent`).trim()||E,k=e.getPropertyValue(`--text-faint`).trim()||k,j=e.getPropertyValue(`--danger`).trim()||j}function P(){if(!i(c))return;let e=i(c).getBoundingClientRect();T=window.devicePixelRatio||1;let t=Math.max(1,Math.round(e.width*T)),n=Math.max(1,Math.round(e.height*T));(i(c).width!==t||i(c).height!==n)&&(i(c).width=t,i(c).height=n,x=null),N()}function F(){if(!i(c))return;let e=i(c).getContext(`2d`);if(!e)return;let t=i(c).width,n=i(c).height,r=n/2;if(e.clearRect(0,0,t,n),_!==`ready`||!b){e.strokeStyle=_===`error`?j:k,e.lineWidth=Math.max(1,T),e.beginPath(),e.moveTo(0,r),e.lineTo(t,r),e.stroke();return}let a=Math.max(1,Math.floor(t));(!x||w!==a)&&(x=Be(b,a),w=a);let o=i(m)>0?Q(i(f)/i(m),0,1):0,s=o*t,l=r*.9,u=t/a;e.lineWidth=1;for(let t=0;t<a;t++){let n=t*u,i=r-x.max[t]*l,a=r-x.min[t]*l;e.strokeStyle=n<=s?E:k,e.beginPath(),e.moveTo(n+.5,Math.min(i,r-.5)),e.lineTo(n+.5,Math.max(a,r+.5)),e.stroke()}o>0&&(e.strokeStyle=E,e.lineWidth=Math.max(1,T),e.beginPath(),e.moveTo(s,0),e.lineTo(s,n),e.stroke())}function I(){M&&=(cancelAnimationFrame(M),0)}function L(){i(l)&&y(f,i(l).currentTime,!0),F(),i(d)&&(M=requestAnimationFrame(L))}async function ee(e){_=`loading`,F();try{let t=await(await fetch(e)).arrayBuffer(),n=await Le().decodeAudioData(t);if(e!==r.src)return;b=ze(n),i(m)||y(m,n.duration,!0),_=`ready`,x=null,F()}catch{if(e!==r.src)return;_=`error`,F()}}function B(e){if(e.preventDefault(),e.stopPropagation(),!i(c)||!i(l))return;let t=i(c).getBoundingClientRect(),n=Q((e.clientX-t.left)/t.width,0,1),r=i(l).duration;Number.isFinite(r)&&r>0&&(i(l).currentTime=n*r),i(l).play()}function V(){i(l)&&(i(l).paused?i(l).play():i(l).pause())}function H(e){if(i(l)){if(e.key===`Enter`||e.key===` `){e.preventDefault(),V();return}if(e.key===`ArrowRight`||e.key===`ArrowLeft`){let t=i(l).duration;if(!Number.isFinite(t)||t<=0)return;e.preventDefault();let n=e.key===`ArrowRight`?5:-5;i(l).currentTime=Q(i(l).currentTime+n,0,t)}}}g(()=>{let e=i(l);e&&(e.loop=o())}),g(()=>{let e=r.src,t=i(c);if(!t)return;_=`idle`,b=null,x=null,w=0,y(f,0),y(m,0),y(d,!1);let n=new Audio(e);n.preload=`metadata`,n.loop=p(()=>o());function a(){Re&&Re!==n&&Re.pause(),Re=n,y(d,!0),I(),M=requestAnimationFrame(L)}function s(){Re===n&&(Re=null),y(d,!1),I(),F()}function u(){Re===n&&(Re=null),y(d,!1),I(),F()}function h(){y(f,n.currentTime,!0),i(d)||F()}function g(){Number.isFinite(n.duration)&&y(m,n.duration,!0),F()}n.addEventListener(`play`,a),n.addEventListener(`pause`,s),n.addEventListener(`ended`,u),n.addEventListener(`timeupdate`,h),n.addEventListener(`loadedmetadata`,g),n.addEventListener(`durationchange`,g),n.addEventListener(`seeked`,h),y(l,n,!0);let v=new ResizeObserver(()=>{P(),F()});v.observe(t);let S=new IntersectionObserver(t=>{t.some(e=>e.isIntersecting)&&(S.disconnect(),ee(e))});return S.observe(t),P(),F(),()=>{I(),v.disconnect(),S.disconnect(),n.removeEventListener(`play`,a),n.removeEventListener(`pause`,s),n.removeEventListener(`ended`,u),n.removeEventListener(`timeupdate`,h),n.removeEventListener(`loadedmetadata`,g),n.removeEventListener(`durationchange`,g),n.removeEventListener(`seeked`,h),n.pause(),Re===n&&(Re=null),n.removeAttribute(`src`),n.load(),y(l,null)}});var te=He(),U=a(te);S(U,e=>y(c,e),()=>i(c));var W=R(U,2),ne=e=>{var t=Ve();Ie(a(t),{get media(){return i(l)}}),C(t),n(e,t)};h(W,e=>{s()&&e(ne)}),C(te),t(()=>O(te,1,`audio-waveform ${r.class??``??``}`,`svelte-1liihyn`)),u(`click`,U,B),u(`keydown`,U,H),n(e,te),D()}l([`click`,`keydown`]);var We=N(`<div class="audio-frame svelte-1ww4cvx"><!></div>`),Ge=N(`<p class="svelte-1ww4cvx">No proxy yet — add the asset to a manifest to process it.</p>`),Ke=N(`<div class="stage checkerboard svelte-1ww4cvx"><!></div>`);function qe(e,t){z(t,!0);var r=Ke(),i=a(r),o=e=>{var r=We();B(a(r),()=>t.asset.proxy.url,e=>{Ue(e,{get src(){return t.asset.proxy.url},showControls:!0})}),C(r),n(e,r)},s=e=>{n(e,Ge())};h(i,e=>{t.asset.proxy?e(o):e(s,-1)}),C(r),n(e,r),D()}var Je={"arrow-up":`<path d="M12 19V5"/><path d="M6 11l6-6 6 6"/>`,"arrow-right":`<path d="M5 12h14"/><path d="M13 6l6 6-6 6"/>`,"arrow-down":`<path d="M12 5v14"/><path d="M6 13l6 6 6-6"/>`,"arrow-left":`<path d="M19 12H5"/><path d="M11 6l-6 6 6 6"/>`,width:`<path d="M3 12h18"/><path d="M7 8l-4 4 4 4"/><path d="M17 8l4 4-4 4"/>`,ratio:`<rect x="4" y="4" width="7" height="7" rx="1"/><rect x="13" y="4" width="7" height="7" rx="1"/><rect x="4" y="13" width="7" height="7" rx="1"/><rect x="13" y="13" width="7" height="7" rx="1"/>`,preset:`<path d="M4 7h10"/><circle cx="17" cy="7" r="2"/><path d="M20 17H10"/><circle cx="7" cy="17" r="2"/>`,cutoff:`<circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 1 0 16z" fill="currentColor" stroke="none"/>`,"color-feather":`<circle cx="12" cy="12" r="8" stroke-dasharray="1.5 3"/><circle cx="12" cy="12" r="3.5"/>`,"mask-feather":`<rect x="4" y="4" width="16" height="16" rx="3" stroke-dasharray="1.5 3"/><circle cx="12" cy="12" r="3.5"/>`,sharpen:`<path d="M4 18l8-12 8 12"/><path d="M4 18h16"/>`,despill:`<path d="M12 3s6 6 6 11a6 6 0 0 1-12 0c0-5 6-11 6-11z"/>`,"despill-lum":`<path d="M12 3s5.5 5.5 5.5 10a5.5 5.5 0 0 1-11 0c0-4.5 5.5-10 5.5-10z"/><path d="M12 10v5M9.5 12.5h5"/>`},Ye=e(`<svg class="icon svelte-jamecx" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg>`);function $(e,t){var r=Ye();V(r,()=>Je[t.name],!0),C(r),n(e,r)}function Xe(e){if(e.scrubbedValue===null)return{};let t=e.startValue??e.min??0;return e.scrubbedValue===t?{rollbackTo:e.startValue}:{commit:e.scrubbedValue}}function Ze(e,t){return t.coarse?e*10:t.fine?e*.1:e}function Qe(e){if(!Number.isFinite(e))return 0;let t=0,n=Math.abs(e);for(;t<10&&Math.abs(Math.round(n)-n)>1e-9;)n*=10,t+=1;return t}function $e(e,t){let n=10**t;return Math.round(e*n)/n}function et(e){let t=Ze(e.step,e.modifiers),n=$e(e.startValue+e.deltaX*t,Qe(t));return e.min!==void 0&&(n=Math.max(e.min,n)),e.max!==void 0&&(n=Math.min(e.max,n)),n}function tt(e,t){t.buttons!==0&&!e.hasPointerCapture(t.pointerId)&&e.setPointerCapture(t.pointerId)}function nt(e,t){e.hasPointerCapture(t)&&e.releasePointerCapture(t)}var rt=N(`<span class="scrub-surface svelte-nhap92" title="Drag to change — Shift: ×10, Alt: ×0.1" role="presentation" aria-hidden="true"></span>`),it=N(`<span><input class="input svelte-nhap92" type="number"/> <!></span>`);function at(e,r){z(r,!0);let o=A(r,`step`,3,1),s=A(r,`placeholder`,3,``),c=A(r,`allowNull`,3,!1),l=A(r,`align`,3,`left`),d=v(null),p=v(!1),m=v(null),x=b(()=>i(d)?.activated?i(d).currentValue:r.value);function w(e){return{coarse:e.shiftKey,fine:e.altKey}}function k(e){e.preventDefault(),tt(e.currentTarget,e),y(d,{pointerId:e.pointerId,startX:e.clientX,startValue:r.value,currentValue:null,activated:!1},!0)}function j(e){if(!i(d)||e.pointerId!==i(d).pointerId)return;let t=e.clientX-i(d).startX;if(!i(d).activated){if(Math.abs(t)<3)return;i(d).activated=!0,document.body.style.cursor=`ew-resize`}let n=et({startValue:i(d).startValue??r.min??0,deltaX:t,step:o(),modifiers:w(e),min:r.min,max:r.max});n!==i(d).currentValue&&(i(d).currentValue=n,r.onChange?.(n))}function M(e){if(!i(d)||e.pointerId!==i(d).pointerId)return;nt(e.currentTarget,e.pointerId);let t=i(d).activated,n=i(d).startValue,a=i(d).currentValue;if(y(d,null),document.body.style.cursor=``,!t){I();return}let o=Xe({startValue:n,scrubbedValue:a,min:r.min});o.commit===void 0?`rollbackTo`in o&&r.onChange?.(o.rollbackTo??null):r.onCommit(o.commit)}function N(){if(!i(d))return;let e=i(d).startValue,t=i(d).activated;y(d,null),document.body.style.cursor=``,t&&r.onChange?.(e)}function F(e){i(d)&&e.key===`Escape`&&(e.preventDefault(),N())}g(()=>()=>{i(d)&&(document.body.style.cursor=``)});function I(){y(p,!0),queueMicrotask(()=>{i(m)?.focus(),i(m)?.select()})}function L(e){let t=e.currentTarget.valueAsNumber;Number.isFinite(t)?r.onCommit(t):r.onCommit(c()?null:r.min??0)}function ee(e){e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&(e.currentTarget.value=i(x)===null?``:String(i(x)),e.currentTarget.blur())}var B=it();f(`keydown`,_,F);let V;var H=a(B);T(H),S(H,e=>y(m,e),()=>i(m));var te=R(H,2),U=e=>{var t=rt();u(`pointerdown`,t,k),u(`pointermove`,t,j),u(`pointerup`,t,M),f(`pointercancel`,t,N),n(e,t)};h(te,e=>{i(p)||e(U)}),C(B),t(()=>{V=O(B,1,`scrub-number svelte-nhap92`,null,V,{right:l()===`right`}),P(H,`aria-label`,r.ariaLabel),P(H,`min`,r.min),P(H,`max`,r.max),P(H,`step`,o()),P(H,`placeholder`,s()),E(H,i(x)??``)}),f(`focus`,H,()=>y(p,!0)),f(`blur`,H,()=>y(p,!1)),u(`change`,H,L),u(`keydown`,H,ee),n(e,B),D()}l([`change`,`keydown`,`pointerdown`,`pointermove`,`pointerup`]);var ot=N(`<span class="caption svelte-368zap"> </span>`),st=N(`<span class="fill svelte-368zap"></span>`),ct=N(`<div class="number-field svelte-368zap"><!> <div class="number-input control svelte-368zap"><!> <span class="icon-slot svelte-368zap"><!></span> <!></div></div>`);function lt(e,o){let c=A(o,`step`,3,1),l=A(o,`placeholder`,3,``),u=A(o,`rangeFill`,3,!0),f=b(()=>!u()||o.min===void 0||o.max===void 0||o.value===null||o.max<=o.min?null:Math.max(0,Math.min(100,(o.value-o.min)/(o.max-o.min)*100)));var p=ct(),m=a(p),g=e=>{var i=ot(),s=a(i,!0);C(i),t(()=>r(s,o.caption)),n(e,i)};h(m,e=>{o.caption&&e(g)});var _=R(m,2),v=a(_),y=e=>{var r=st();t(()=>k(r,`width: ${i(f)??``}%`)),n(e,r)};h(v,e=>{i(f)!==null&&e(y)});var x=R(v,2),S=a(x),T=e=>{var t=d();w(s(t),()=>o.icon),n(e,t)},E=e=>{var i=M();t(()=>r(i,o.label)),n(e,i)};h(S,e=>{o.icon?e(T):e(E,-1)}),C(x),at(R(x,2),{get value(){return o.value},get min(){return o.min},get max(){return o.max},get step(){return c()},get placeholder(){return l()},allowNull:!0,get ariaLabel(){return o.label},get onChange(){return o.onChange},get onCommit(){return o.onCommit}}),C(_),C(p),t(()=>P(x,`title`,o.label)),n(e,p)}var ut=N(`<h3 class="svelte-1ol624f"><!></h3>`);function dt(e,t){var r=ut();w(a(r),()=>t.children),C(r),n(e,r)}var ft=N(`<span class="caption svelte-bczi6w"> </span>`),pt=N(`<option> </option>`),mt=N(`<div class="select-field svelte-bczi6w"><!> <div class="select-input control svelte-bczi6w"><span class="icon-slot svelte-bczi6w"><!></span> <select class="svelte-bczi6w"></select></div></div>`);function ht(e,i){z(i,!0);var o=mt(),c=a(o),l=e=>{var o=ft(),s=a(o,!0);C(o),t(()=>r(s,i.caption)),n(e,o)};h(c,e=>{i.caption&&e(l)});var f=R(c,2),p=a(f),g=a(p),_=e=>{var t=d();w(s(t),()=>i.icon),n(e,t)},v=e=>{var a=M();t(e=>r(a,e),[()=>i.label.slice(0,1)]),n(e,a)};h(g,e=>{i.icon?e(_):e(v,-1)}),C(p);var y=R(p,2);m(y,20,()=>i.options,e=>e,(e,i)=>{var o=pt(),s=a(o,!0);C(o);var c={};t(()=>{r(s,i),c!==(c=i)&&(o.value=(o.__value=i)??``)}),n(e,o)}),C(y);var b;L(y),C(f),C(o),t(()=>{P(p,`title`,i.label),P(y,`aria-label`,i.label),b!==(b=i.value)&&(y.value=(y.__value=i.value)??``,F(y,i.value))}),u(`change`,y,e=>i.onChange(e.currentTarget.value)),n(e,o),D()}l([`change`]);var gt=N(`<p class="info svelte-m9vwwu"><!> <!> <br/> <span class="file svelte-m9vwwu"> </span></p>`),_t=N(`<p class="hint svelte-m9vwwu">No proxy yet — add the asset to a manifest to process it.</p>`),vt=N(`<section class="svelte-m9vwwu"><!> <!></section>`);function yt(e,i){z(i,!0);let o=A(i,`showDimensions`,3,!1),s=A(i,`showDuration`,3,!1);var c=vt(),l=a(c);dt(l,{children:(e,t)=>{j(),n(e,M(`Output`))},$$slots:{default:!0}});var u=R(l,2),d=e=>{var c=gt(),l=a(c),u=e=>{var a=M();t(()=>r(a,`${i.proxy.width??``} × ${i.proxy.height??``} px ·`)),n(e,a)};h(l,e=>{o()&&i.proxy.width!==void 0&&i.proxy.height!==void 0&&e(u)});var d=R(l,2),f=e=>{var a=M();t(e=>r(a,`${e??``} ·`),[()=>pe(i.proxy.durationMs)]),n(e,a)};h(d,e=>{s()&&i.proxy.durationMs!==void 0&&e(f)});var p=R(d),m=R(p,3),g=a(m,!0);C(m),C(c),t(e=>{r(p,` ${e??``} `),r(g,i.proxy.fileName)},[()=>he(i.proxy.fileSize)]),n(e,c)},f=e=>{n(e,_t())};h(u,e=>{i.proxy?e(d):e(f,-1)}),C(c),n(e,c),D()}var bt=N(`<section class="svelte-1by8n8t"><!> <div class="field svelte-1by8n8t"><!></div> <div class="field svelte-1by8n8t"><!></div></section> <!>`,1);function xt(e,t){z(t,!0);let r=b(()=>re.validateParameters(t.parameters));function o(e){t.onParametersCommit(e)}function c(e){o({...i(r),preset:e})}function l(e){let{targetWidth:t,...n}=i(r);return e===null||!Number.isFinite(e)||e<=0?n:{...n,targetWidth:Math.round(e)}}function u(e,n){let r=l(e);n?o(r):t.onParametersChange(r)}var d=bt(),f=s(d),p=a(f);dt(p,{children:(e,t)=>{j(),n(e,M(`Image`))},$$slots:{default:!0}});var m=R(p,2);ht(a(m),{label:`Preset`,caption:`Preset`,get value(){return i(r).preset},get options(){return t.presetNames},onChange:c,icon:e=>{$(e,{name:`preset`})},$$slots:{icon:!0}}),C(m);var h=R(m,2),g=a(h);{let e=e=>{$(e,{name:`width`})},t=b(()=>i(r).targetWidth??null);lt(g,{label:`Target width`,caption:`Target width`,min:1,placeholder:`source`,get value(){return i(t)},onChange:e=>u(e,!1),onCommit:e=>u(e,!0),icon:e,$$slots:{icon:!0}})}C(h),C(f),yt(R(f,2),{get proxy(){return t.asset.proxy},showDimensions:!0}),n(e,d),D()}var St=new Set([`image`,`slice`]);new Set([...new Set([`video`,`chroma-key-video`,`audio`])].filter(e=>W.has(e)));function Ct(e,t){return St.has(e)?t[e]?.decode??!0:!1}async function wt(e){let t=await fetch(e);if(!t.ok)throw Error(`Preloading "${e}" failed: ${t.status} ${t.statusText}.`);return t}function Tt(e){return{async preload(t,n){if(await(await wt(t)).arrayBuffer(),Ct(e,n)&&typeof globalThis.Image==`function`){let e=new globalThis.Image;e.src=t,await e.decode()}return{}}}}var Et={async preload(e){let t=await(await wt(e)).blob();return typeof URL.createObjectURL==`function`?{objectUrl:URL.createObjectURL(t)}:{}},release(e){e.objectUrl!==void 0&&typeof URL.revokeObjectURL==`function`&&URL.revokeObjectURL(e.objectUrl)}},Dt={image:Tt(`image`),slice:Tt(`slice`),video:Et,"chroma-key-video":Et,audio:Et};new Map(Object.entries(W.project(Dt,`runtime handler`)));var Ot=new Map;function kt(e){return Ot.get(e)?.resources?.objectUrl??e}var At=N(`<img/>`);function jt(e,r){z(r,!0);let i=A(r,`alt`,3,``),a=A(r,`class`,3,``);var o=At();t(()=>{P(o,`src`,r.src.src),P(o,`width`,r.src.width),P(o,`height`,r.src.height),P(o,`alt`,i()),O(o,1,x(a()))}),n(e,o),D()}function Mt(e,t,n){return Math.max(t,Math.min(n,e))}function Nt(e){let{mode:t,insets:n}=e.slicing,r=le(t);return{top:r.vertical?n.top:0,bottom:r.vertical?n.bottom:0,left:r.horizontal?n.left:0,right:r.horizontal?n.right:0}}function Pt(e){let t=e.slicing.overdraw;if(!t)return ce();let n=e.sourceWidth,r=e.sourceHeight,i=Mt(t.left,0,Math.max(0,n-1)),a=Mt(t.right,0,Math.max(0,n-i-1)),o=Mt(t.top,0,Math.max(0,r-1));return{top:o,right:a,bottom:Mt(t.bottom,0,Math.max(0,r-o-1)),left:i}}function Ft(e){let t=Pt(e);return{width:Math.max(1,e.sourceWidth-t.left-t.right),height:Math.max(1,e.sourceHeight-t.top-t.bottom)}}function It(e,t,n){let r=Pt(e);if(r.top===0&&r.right===0&&r.bottom===0&&r.left===0)return r;let i=e.slicing.pixelRatio>0?e.slicing.pixelRatio:1,a=Ft(e),o,s;return e.slicing.mode===`three-horizontal`?o=s=n/a.height:e.slicing.mode===`three-vertical`?o=s=t/a.width:e.slicing.mode===`one`?(o=t/a.width,s=n/a.height):o=s=1/i,{top:Math.round(r.top*s),right:Math.round(r.right*o),bottom:Math.round(r.bottom*s),left:Math.round(r.left*o)}}function Lt(e,t,n,r){let i=It(e,t,n),a=t+i.left+i.right,o=n+i.top+i.bottom;return{cssLeft:-i.left+0,cssTop:-i.top+0,cssWidth:a,cssHeight:o,backingWidth:Math.round(a*r),backingHeight:Math.round(o*r),originX:i.left*r,originY:i.top*r}}function Rt(e){let t=0,n=[0];for(let r of e)t+=r,n.push(Math.round(t));return n}function zt(e,t,n){if(t<=0||n<=0)return[];let r=It(e,t,n),i=t+r.left+r.right,a=n+r.top+r.bottom,o=e.sourceWidth,s=e.sourceHeight,c=e.slicing.pixelRatio>0?e.slicing.pixelRatio:1,l=e.slicing.mode,u=Nt(e),d=Mt(u.left,0,o),f=Mt(u.right,0,Math.max(0,o-d)),p=Mt(u.top,0,s),m=Mt(u.bottom,0,Math.max(0,s-p)),h=Math.max(0,o-d-f),g=Math.max(0,s-p-m),_,v;if(l===`three-horizontal`){let e=a/s;_=d*e,v=f*e}else _=d/c,v=f/c;let y=Math.max(0,i-_-v),b,x;if(l===`three-vertical`){let e=i/o;b=p*e,x=m*e}else b=p/c,x=m/c;let S=Math.max(0,a-b-x),C=[d,h,f],w=[p,g,m],T=[0,d,d+h],E=[0,p,p+g],D=Rt([_,y,v]),O=Rt([b,S,x]),k=[];for(let e=0;e<3;e++)for(let t=0;t<3;t++){let n=C[t],i=w[e];if(n<=0||i<=0)continue;let a=D[t],o=D[t+1]-a,s=O[e],c=O[e+1]-s;o<=0||c<=0||k.push({key:`${e}-${t}`,sx:T[t],sy:E[e],sw:n,sh:i,dx:a-r.left,dy:s-r.top,dw:o,dh:c})}return k}function Bt(e,t){let n=new ResizeObserver(n=>{let r=n[0]?.borderBoxSize?.[0];t(Math.round(r?.inlineSize??e.offsetWidth),Math.round(r?.blockSize??e.offsetHeight))});return n.observe(e),()=>n.disconnect()}var Vt=N(`<div class="fundus-slice__cell svelte-1820t2z"><img alt="" draggable="false" class="svelte-1820t2z"/></div>`),Ht=N(`<div></div>`);function Ut(e,r){z(r,!0);let o=A(r,`alt`,3,``),s=A(r,`class`,3,``),c=v(void 0),l=v(0),u=v(0);g(()=>{let e=i(c);if(e)return Bt(e,(e,t)=>{y(l,e,!0),y(u,t,!0)})});let d=b(()=>zt(r.src,i(l),i(u))),f=b(()=>{let e=Pt(r.src);return e.top>0||e.right>0||e.bottom>0||e.left>0});var p=Ht();let h;m(p,21,()=>i(d),e=>e.key,(e,o)=>{var s=Vt();let c;var l=a(s);let u;C(s),t(()=>{c=k(s,``,c,{left:`${i(o).dx??``}px`,top:`${i(o).dy??``}px`,width:`${i(o).dw??``}px`,height:`${i(o).dh??``}px`}),P(l,`src`,r.src.src),u=k(l,``,u,{width:`${r.src.sourceWidth/i(o).sw*100}%`,height:`${r.src.sourceHeight/i(o).sh*100}%`,left:`${-i(o).sx/i(o).sw*100}%`,top:`${-i(o).sy/i(o).sh*100}%`})}),n(e,s)}),C(p),S(p,e=>y(c,e),()=>i(c)),t(()=>{h=O(p,1,`fundus-slice ${s()??``}`,`svelte-1820t2z`,h,{"fundus-slice--overdraw":i(f)}),P(p,`role`,o()?`img`:void 0),P(p,`aria-label`,o()||void 0)}),n(e,p),D()}var Wt=N(`<div><canvas class="svelte-xdsbrz"></canvas></div>`);function Gt(e,r){z(r,!0);let o=A(r,`alt`,3,``),s=A(r,`class`,3,``),c=v(void 0),l=v(void 0),u=v(void 0),d=v(0),p=v(0),m=v(1),h=v(0);g(()=>{let e=r.src.src,t=new Image,n=!1;return t.onload=()=>{n||y(u,t,!0)},t.src=e,()=>{n=!0,t.onload=null}}),g(()=>{let e=i(m),t=window.matchMedia(`(resolution: ${e}dppx)`),n=()=>{y(m,window.devicePixelRatio||1,!0)};return n(),t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}),g(()=>{let e=i(c);if(e)return Bt(e,(e,t)=>{y(d,e,!0),y(p,t,!0)})});let x=b(()=>Lt(r.src,i(d),i(p),i(m)));g(()=>{i(u),r.src,i(x),i(h),w()});function w(){let e=i(l),t=i(u);if(!e||!t)return;if(i(d)===0||i(p)===0){e.width=0,e.height=0;return}e.width=i(x).backingWidth,e.height=i(x).backingHeight;let n=e.getContext(`2d`);if(n){n.setTransform(i(m),0,0,i(m),i(x).originX,i(x).originY),n.clearRect(i(x).cssLeft,i(x).cssTop,i(x).cssWidth,i(x).cssHeight);for(let e of zt(r.src,i(d),i(p)))n.drawImage(t,e.sx,e.sy,e.sw,e.sh,e.dx,e.dy,e.dw,e.dh)}}var T=Wt();f(`resize`,_,()=>y(h,i(h)+1));var E=a(T);let j;S(E,e=>y(l,e),()=>i(l)),C(T),S(T,e=>y(c,e),()=>i(c)),t(()=>{O(T,1,`fundus-slice-canvas ${s()??``}`,`svelte-xdsbrz`),P(T,`role`,o()?`img`:void 0),P(T,`aria-label`,o()||void 0),j=k(E,``,j,{left:`${i(x).cssLeft??``}px`,top:`${i(x).cssTop??``}px`,width:`${i(x).cssWidth??``}px`,height:`${i(x).cssHeight??``}px`})}),n(e,T),D()}function Kt(e,t){let r=A(t,`backend`,3,`dom`),i=A(t,`alt`,3,``),a=A(t,`class`,3,``);var o=d(),c=s(o),l=e=>{Gt(e,{get src(){return t.src},get alt(){return i()},get class(){return a()}})},u=e=>{Ut(e,{get src(){return t.src},get alt(){return i()},get class(){return a()}})};h(c,e=>{r()===`canvas`?e(l):e(u,-1)}),n(e,o)}var qt=N(`<video playsinline="" preload="auto"></video>`,2);function Jt(e,r){z(r,!0);let a=A(r,`loop`,3,!1),o=A(r,`playing`,3,!0),s=A(r,`muted`,3,!0),c=A(r,`controls`,3,!1),l=A(r,`videoElement`,15),u=A(r,`class`,3,``),d=b(()=>kt(r.src.src));g(()=>{let e=l();e&&(o()?e.play().catch(()=>{}):e.pause())});var f=qt();S(f,e=>l(e),()=>l()),t(()=>{P(f,`src`,i(d)),P(f,`width`,r.src.width),P(f,`height`,r.src.height),f.loop=a(),f.muted=s(),f.controls=c(),O(f,1,x(u()))}),n(e,f),D()}var Yt=`#version 300 es
2
+ in vec2 a_pos;
3
+ out vec2 v_uv;
4
+ void main() {
5
+ // Fullscreen clip-space triangle pair; v flipped so the video isn't mirrored on Y
6
+ // (GL texture rows are bottom-up, and flipping here beats a per-frame UNPACK flip).
7
+ v_uv = vec2(a_pos.x * 0.5 + 0.5, 0.5 - a_pos.y * 0.5);
8
+ gl_Position = vec4(a_pos, 0.0, 1.0);
9
+ }`,Xt=`#version 300 es
10
+ precision highp float;
11
+
12
+ in vec2 v_uv;
13
+ out vec4 fragColor;
14
+
15
+ uniform sampler2D u_texture;
16
+ uniform sampler2D u_mask;
17
+ uniform vec2 u_texelSize;
18
+ uniform vec3 u_keyColor;
19
+ uniform vec4 u_tintColor;
20
+ uniform float u_colorCutoff;
21
+ uniform float u_colorFeathering;
22
+ uniform float u_maskFeathering;
23
+ uniform float u_sharpening;
24
+ uniform float u_despill;
25
+ uniform float u_despillLuminanceAdd;
26
+
27
+ float rgb2y(vec3 c) {
28
+ return 0.299 * c.r + 0.587 * c.g + 0.114 * c.b;
29
+ }
30
+
31
+ float rgb2cb(vec3 c) {
32
+ return 0.5 - 0.168736 * c.r - 0.331264 * c.g + 0.5 * c.b;
33
+ }
34
+
35
+ float rgb2cr(vec3 c) {
36
+ return 0.5 + 0.5 * c.r - 0.418688 * c.g - 0.081312 * c.b;
37
+ }
38
+
39
+ float colorclose(float Cb_p, float Cr_p, float Cb_key, float Cr_key, float tola, float tolb) {
40
+ float temp = (Cb_key - Cb_p) * (Cb_key - Cb_p) + (Cr_key - Cr_p) * (Cr_key - Cr_p);
41
+ float tola2 = tola * tola;
42
+ float tolb2 = tolb * tolb;
43
+ if (temp < tola2) return 0.0;
44
+ if (temp < tolb2) return (temp - tola2) / (tolb2 - tola2);
45
+ return 1.0;
46
+ }
47
+
48
+ float maskedTex2D(sampler2D tex, vec2 uv) {
49
+ vec4 color = texture(tex, uv);
50
+
51
+ float key_cb = rgb2cb(u_keyColor);
52
+ float key_cr = rgb2cr(u_keyColor);
53
+ float pix_cb = rgb2cb(color.rgb);
54
+ float pix_cr = rgb2cr(color.rgb);
55
+
56
+ return colorclose(pix_cb, pix_cr, key_cb, key_cr, u_colorCutoff, u_colorFeathering);
57
+ }
58
+
59
+ void main() {
60
+ vec2 pixelWidth = vec2(u_texelSize.x, 0.0);
61
+ vec2 pixelHeight = vec2(0.0, u_texelSize.y);
62
+
63
+ // Unmodified MainTex
64
+ vec4 color = texture(u_texture, v_uv);
65
+
66
+ // Unfeathered mask
67
+ float mask = maskedTex2D(u_texture, v_uv);
68
+
69
+ // Feathering & smoothing
70
+ float c = mask;
71
+ float r = maskedTex2D(u_texture, v_uv + pixelWidth);
72
+ float l = maskedTex2D(u_texture, v_uv - pixelWidth);
73
+ float d = maskedTex2D(u_texture, v_uv + pixelHeight);
74
+ float u = maskedTex2D(u_texture, v_uv - pixelHeight);
75
+ float rd = maskedTex2D(u_texture, v_uv + pixelWidth + pixelHeight) * 0.707;
76
+ float dl = maskedTex2D(u_texture, v_uv - pixelWidth + pixelHeight) * 0.707;
77
+ float lu = maskedTex2D(u_texture, v_uv - pixelHeight - pixelWidth) * 0.707;
78
+ float ur = maskedTex2D(u_texture, v_uv + pixelWidth - pixelHeight) * 0.707;
79
+ float blurContribution = (r + l + d + u + rd + dl + lu + ur + c) * 0.12774655;
80
+ float smoothedMask = smoothstep(u_sharpening, 1.0, mix(c, blurContribution, u_maskFeathering));
81
+ vec4 result = color * smoothedMask;
82
+
83
+ // Despill
84
+ float v = (2.0 * result.b + result.r) / 4.0;
85
+ if (result.g > v) result.g = mix(result.g, v, u_despill);
86
+ vec4 dif = color - result;
87
+ float desaturatedDif = rgb2y(dif.xyz);
88
+ result += mix(0.0, desaturatedDif, u_despillLuminanceAdd);
89
+
90
+ // Fundus mask pass: a grayscale shape mask multiplies
91
+ // the keyed alpha.
92
+ float shapeMask = texture(u_mask, v_uv).r;
93
+ vec4 keyed = vec4(result.xyz, smoothedMask * shapeMask) * u_tintColor;
94
+
95
+ // Premultiplied output: keyed matches the upstream SrcAlpha/OneMinusSrcAlpha
96
+ // blending; multiplying rgb by alpha is that blend's exact premultiplied
97
+ // equivalent. Straight-alpha output (premultipliedAlpha: false) is NOT an option:
98
+ // iOS WKWebView composites the WebGL canvas as premultiplied regardless of the
99
+ // flag, and the despill luminance-add above leaves fully-transparent background
100
+ // pixels with nonzero rgb (the upstream blend ignores rgb
101
+ // at alpha 0) which then composite additively — a visible bright veil over the
102
+ // whole canvas rect on iOS.
103
+ fragColor = vec4(keyed.rgb * keyed.a, keyed.a);
104
+ }`;function Zt(e){let t=(t,n)=>{let r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`Chroma-key shader compilation failed: ${t}.`)}return r},n=e.createProgram();if(e.attachShader(n,t(e.VERTEX_SHADER,Yt)),e.attachShader(n,t(e.FRAGMENT_SHADER,Xt)),e.linkProgram(n),!e.getProgramParameter(n,e.LINK_STATUS)){let t=e.getProgramInfoLog(n);throw e.deleteProgram(n),Error(`Chroma-key program linking failed: ${t}.`)}return n}var Qt=class e{#e;#t;#n;#r;#i;#a;#o;#s=null;#c=!1;static create(t){let n=t.getContext(`webgl2`,{premultipliedAlpha:!0,alpha:!0,depth:!1,stencil:!1,antialias:!1});if(!n)return null;try{return new e(n,t)}catch{return null}}constructor(e,t){this.#e=e,this.#t=t,t.addEventListener(`webglcontextlost`,this.#l),t.addEventListener(`webglcontextrestored`,this.#u),this.#d()}#l=e=>{e.preventDefault(),this.#c=!0};#u=()=>{try{this.#d(),this.#c=!1}catch{this.#c=!0}};#d(){let e=this.#e;this.#n=Zt(e),e.useProgram(this.#n);let t=t=>e.getUniformLocation(this.#n,t);this.#a={texelSize:t(`u_texelSize`),keyColor:t(`u_keyColor`),tintColor:t(`u_tintColor`),colorCutoff:t(`u_colorCutoff`),colorFeathering:t(`u_colorFeathering`),maskFeathering:t(`u_maskFeathering`),sharpening:t(`u_sharpening`),despill:t(`u_despill`),despillLuminanceAdd:t(`u_despillLuminanceAdd`)},e.uniform1i(e.getUniformLocation(this.#n,`u_texture`),0),e.uniform1i(e.getUniformLocation(this.#n,`u_mask`),1),e.uniform4f(this.#a.tintColor,1,1,1,1),this.#r=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.#r),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),e.STATIC_DRAW);let n=e.getAttribLocation(this.#n,`a_pos`);e.enableVertexAttribArray(n),e.vertexAttribPointer(n,2,e.FLOAT,!1,0,0),this.#i=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.#i),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),this.#o=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.#o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),this.#f(),e.disable(e.DEPTH_TEST),e.disable(e.BLEND),e.clearColor(0,0,0,0)}setMask(e){this.#s=e,this.#c||this.#f()}#f(){let e=this.#e;e.bindTexture(e.TEXTURE_2D,this.#o),this.#s?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.#s):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array([255,255,255,255]))}draw(e,t){if(this.#c||e.videoWidth===0)return;let n=this.#e;(this.#t.width!==e.videoWidth||this.#t.height!==e.videoHeight)&&(this.#t.width=e.videoWidth,this.#t.height=e.videoHeight,n.viewport(0,0,e.videoWidth,e.videoHeight)),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this.#o),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this.#i),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,e),n.useProgram(this.#n),n.uniform2f(this.#a.texelSize,1/e.videoWidth,1/e.videoHeight),n.uniform3fv(this.#a.keyColor,t.keyColor),n.uniform1f(this.#a.colorCutoff,t.colorCutoff),n.uniform1f(this.#a.colorFeathering,t.colorFeathering),n.uniform1f(this.#a.maskFeathering,t.maskFeathering),n.uniform1f(this.#a.sharpening,t.sharpening),n.uniform1f(this.#a.despill,t.despill),n.uniform1f(this.#a.despillLuminanceAdd,t.despillLuminanceAdd),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_STRIP,0,4)}dispose(){this.#t.removeEventListener(`webglcontextlost`,this.#l),this.#t.removeEventListener(`webglcontextrestored`,this.#u);let e=this.#e;e.deleteBuffer(this.#r),e.deleteTexture(this.#i),e.deleteTexture(this.#o),e.deleteProgram(this.#n),e.getExtension(`WEBGL_lose_context`)?.loseContext()}},$t=N(`<img alt="" class="svelte-r30mxh"/>`),en=N(`<canvas class="svelte-r30mxh"></canvas> <video playsinline="" preload="auto" class="svelte-r30mxh"></video>`,3),tn=N(`<div><!></div>`);function nn(e,r){z(r,!0);let o=A(r,`loop`,3,!0),c=A(r,`playing`,3,!0),l=A(r,`videoElement`,15),u=A(r,`class`,3,``),f=v(void 0),p=v(!1),m=null,_=0,b=!1;function x(){let e=l();m&&e&&e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&m.draw(e,r.src.chromaKey)}function T(){x(),b&&E()}function E(){let e=l();_=e.requestVideoFrameCallback?e.requestVideoFrameCallback(T):requestAnimationFrame(T)}function k(){b||(b=!0,E())}function j(){if(!b)return;b=!1;let e=l();e?.cancelVideoFrameCallback?e.cancelVideoFrameCallback(_):cancelAnimationFrame(_)}function M(){!c()||i(p)||l()?.play().catch(()=>{})}function N(){l()?.pause()}I(()=>{if(m=Qt.create(i(f)),!m){y(p,!0);return}let e=m,t=r.src.mask?.src;if(t){let n=new Image;n.src=t,n.decode().then(()=>{m===e&&e.setMask(n)}).catch(()=>{console.warn(`Failed to load chroma-key mask "${t}".`)})}return()=>{j(),e.dispose(),m=null}}),g(()=>{let e=l();if(!e)return;function t(){k()}function n(){j(),x()}function r(){b||x()}return e.addEventListener(`play`,t),e.addEventListener(`pause`,n),e.addEventListener(`ended`,n),e.addEventListener(`seeked`,r),()=>{e.removeEventListener(`play`,t),e.removeEventListener(`pause`,n),e.removeEventListener(`ended`,n),e.removeEventListener(`seeked`,r)}}),g(()=>{i(p)||(c()?M():N())}),g(()=>{let e=r.src.chromaKey;e.keyColor,e.colorCutoff,e.colorFeathering,e.maskFeathering,e.sharpening,e.despill,e.despillLuminanceAdd,b||x()});var F=tn(),L=a(F),ee=e=>{var i=d(),a=s(i),o=e=>{var t=d();w(s(t),()=>r.fallback),n(e,t)},c=e=>{var i=$t();t(()=>P(i,`src`,r.src.fallback.src)),n(e,i)};h(a,e=>{r.fallback?e(o):r.src.fallback&&e(c,1)}),n(e,i)},B=e=>{var a=en(),c=s(a);S(c,e=>y(f,e),()=>i(f));var u=R(c,2);u.muted=!0,S(u,e=>l(e),()=>l()),t(e=>{P(u,`src`,e),u.loop=o()},[()=>kt(r.src.src)]),n(e,a)};h(L,e=>{i(p)?e(ee):e(B,-1)}),C(F),t(()=>O(F,1,`fundus-chroma-key-video ${u()??``}`,`svelte-r30mxh`)),n(e,F),D()}var rn=N(`<img/>`),an=N(`<div class="stage checkerboard svelte-10eps7e"><!></div>`);function on(e,r){z(r,!0);let o=b(()=>!r.asset.proxy||r.asset.proxy.width===void 0||r.asset.proxy.height===void 0?null:{kind:`image`,src:r.asset.proxy.url,width:r.asset.proxy.width,height:r.asset.proxy.height});var s=an(),c=a(s),l=e=>{jt(e,{get src(){return i(o)},get alt(){return r.asset.id}})},u=e=>{var i=rn();t(()=>{P(i,`src`,r.asset.rawUrl),P(i,`alt`,r.asset.id)}),n(e,i)};h(c,e=>{i(o)?e(l):e(u,-1)}),C(s),n(e,s),D()}var sn=N(`<img loading="lazy" class="svelte-gdduef"/>`);function cn(e,r){z(r,!0);var i=sn();t(()=>{P(i,`src`,r.asset.proxy?.url??r.asset.rawUrl),P(i,`alt`,r.asset.id)}),n(e,i),D()}var ln=N(`<button> </button>`),un=N(`<section class="svelte-1yd7n22"><!> <div class="insets svelte-1yd7n22"></div></section>`),dn=N(`<section class="svelte-1yd7n22"><!> <!></section>`),fn=N(`<section class="svelte-1yd7n22"><!> <div class="modes svelte-1yd7n22"></div></section> <!> <section class="svelte-1yd7n22"><!> <div class="insets svelte-1yd7n22"></div></section> <!> <section class="svelte-1yd7n22"><!> <div class="field"><!></div></section> <!>`,1);function pn(e,o){z(o,!0);let c=b(()=>Y.validateParameters(o.parameters)),l=b(()=>i(c).overdraw??ce()),f=[{value:`nine`,label:`9-slice`},{value:`three-horizontal`,label:`3-slice horizontal`},{value:`three-vertical`,label:`3-slice vertical`},{value:`one`,label:`No slicing`}],p=[{key:`top`,label:`Top`,icon:`arrow-up`,axis:`y`},{key:`right`,label:`Right`,icon:`arrow-right`,axis:`x`},{key:`bottom`,label:`Bottom`,icon:`arrow-down`,axis:`y`},{key:`left`,label:`Left`,icon:`arrow-left`,axis:`x`}];function g(e,t){let n=le(t);return e===`x`?n.horizontal:n.vertical}let _=b(()=>o.asset.proxy?.width??2**53-1),v=b(()=>o.asset.proxy?.height??2**53-1);function y(e){o.onParametersCommit(e)}function x(e){y({...i(c),mode:e})}function S(e){return G(i(c).insets,e,i(_),i(v))}function w(e,t,n){let r=Math.max(0,Math.min(S(e),Math.round(t??0))),a={...i(c),insets:{...i(c).insets,[e]:r}};n?y(a):o.onParametersChange(a)}function T(e){return oe(i(l),e,i(_),i(v))}function E(e,t,n){let r=Math.max(0,Math.min(T(e),Math.round(t??0))),a={...i(c),overdraw:{...i(l),[e]:r}};n?y(a):o.onParametersChange(a)}function k(e,t){let n={...i(c),pixelRatio:Math.max(1,Math.round(e??1))};t?y(n):o.onParametersChange(n)}function A(e){y({...i(c),preset:e})}var N=fn(),P=s(N),F=a(P);dt(F,{children:(e,t)=>{j(),n(e,M(`Mode`))},$$slots:{default:!0}});var I=R(F,2);m(I,21,()=>f,e=>e.value,(e,o)=>{var s=ln();let l;var d=a(s,!0);C(s),t(()=>{l=O(s,1,`svelte-1yd7n22`,null,l,{on:i(c).mode===i(o).value}),r(d,i(o).label)}),u(`click`,s,()=>x(i(o).value)),n(e,s)}),C(I),C(P);var L=R(P,2),ee=e=>{var t=un(),r=a(t);dt(r,{children:(e,t)=>{j(),n(e,M(`Insets (px)`))},$$slots:{default:!0}});var o=R(r,2);m(o,21,()=>p,e=>e.key,(e,t)=>{var r=d(),a=s(r),o=e=>{{let n=e=>{$(e,{get name(){return i(t).icon}})},r=b(()=>S(i(t).key));lt(e,{get label(){return i(t).label},min:0,get max(){return i(r)},rangeFill:!1,get value(){return i(c).insets[i(t).key]},onChange:e=>w(i(t).key,e,!1),onCommit:e=>w(i(t).key,e,!0),icon:n,$$slots:{icon:!0}})}},l=b(()=>g(i(t).axis,i(c).mode));h(a,e=>{i(l)&&e(o)}),n(e,r)}),C(o),C(t),n(e,t)};h(L,e=>{i(c).mode!==`one`&&e(ee)});var B=R(L,2),V=a(B);dt(V,{children:(e,t)=>{j(),n(e,M(`Overdraw (px)`))},$$slots:{default:!0}});var H=R(V,2);m(H,21,()=>p,e=>e.key,(e,t)=>{{let n=e=>{$(e,{get name(){return i(t).icon}})},r=b(()=>T(i(t).key));lt(e,{get label(){return i(t).label},min:0,get max(){return i(r)},rangeFill:!1,get value(){return i(l)[i(t).key]},onChange:e=>E(i(t).key,e,!1),onCommit:e=>E(i(t).key,e,!0),icon:n,$$slots:{icon:!0}})}}),C(H),C(B);var te=R(B,2),U=e=>{var t=dn(),r=a(t);dt(r,{children:(e,t)=>{j(),n(e,M(`Pixel ratio`))},$$slots:{default:!0}}),lt(R(r,2),{label:`Factor`,min:1,get value(){return i(c).pixelRatio},onChange:e=>k(e,!1),onCommit:e=>k(e,!0),icon:e=>{$(e,{name:`ratio`})},$$slots:{icon:!0}}),C(t),n(e,t)};h(te,e=>{i(c).mode===`nine`&&e(U)});var W=R(te,2),ne=a(W);dt(ne,{children:(e,t)=>{j(),n(e,M(`Output`))},$$slots:{default:!0}});var re=R(ne,2);ht(a(re),{label:`Preset`,caption:`Preset`,get value(){return i(c).preset},get options(){return o.presetNames},onChange:A,icon:e=>{$(e,{name:`preset`})},$$slots:{icon:!0}}),C(re),C(W),yt(R(W,2),{get proxy(){return o.asset.proxy},showDimensions:!0}),n(e,N),D()}l([`click`]);var mn=v(`dom`),hn=N(`<div class="preview-panel svelte-1mjaycs"><div class="bar svelte-1mjaycs"><span class="size svelte-1mjaycs"> </span> <div class="backends svelte-1mjaycs" role="group" aria-label="Rendering backend"><button>DOM</button> <button>Canvas</button></div> <button class="reset svelte-1mjaycs">Reset</button></div> <div class="stage checkerboard svelte-1mjaycs"><div class="box svelte-1mjaycs"><!> <div class="handle edge-right svelte-1mjaycs" role="separator" aria-label="Drag width" aria-orientation="vertical"></div> <div class="handle edge-bottom svelte-1mjaycs" role="separator" aria-label="Drag height" aria-orientation="horizontal"></div> <div class="handle corner svelte-1mjaycs" role="separator" aria-label="Drag size"></div></div></div></div>`);function gn(e,s){z(s,!0);function c(){return Math.round(Math.min(360,Math.max(80,s.entry.sourceWidth*2)))}function l(){return Math.round(c()*s.entry.sourceHeight/Math.max(1,s.entry.sourceWidth))}let d=v(o(p(()=>c()))),m=v(o(p(()=>l()))),h=v(null),g={pointerX:0,pointerY:0,width:0,height:0};function _(e,t){t.preventDefault(),y(h,e,!0),g={pointerX:t.clientX,pointerY:t.clientY,width:i(d),height:i(m)},tt(t.currentTarget,t)}function b(e){i(h)&&(i(h)!==`y`&&y(d,Math.max(16,Math.round(g.width+(e.clientX-g.pointerX))),!0),i(h)!==`x`&&y(m,Math.max(16,Math.round(g.height+(e.clientY-g.pointerY))),!0))}function x(e){i(h)&&nt(e.currentTarget,e.pointerId),y(h,null)}function S(){y(d,c(),!0),y(m,l(),!0)}var w=hn(),T=a(w),E=a(T),A=a(E);C(E);var j=R(E,2),M=a(j);let N;var P=R(M,2);let F;C(j);var I=R(j,2);C(T);var L=R(T,2),ee=a(L);let B;var V=a(ee);Kt(V,{get src(){return s.entry},get backend(){return i(mn)},class:`fill`});var H=R(V,2),te=R(H,2),U=R(te,2);C(ee),C(L),C(w),t(()=>{r(A,`${i(d)??``} × ${i(m)??``} px`),N=O(M,1,`svelte-1mjaycs`,null,N,{on:i(mn)===`dom`}),F=O(P,1,`svelte-1mjaycs`,null,F,{on:i(mn)===`canvas`}),B=k(ee,``,B,{width:`${i(d)??``}px`,height:`${i(m)??``}px`})}),u(`click`,M,()=>y(mn,`dom`)),u(`click`,P,()=>y(mn,`canvas`)),u(`click`,I,S),u(`pointerdown`,H,e=>_(`x`,e)),u(`pointermove`,H,b),u(`pointerup`,H,x),f(`pointercancel`,H,x),u(`pointerdown`,te,e=>_(`y`,e)),u(`pointermove`,te,b),u(`pointerup`,te,x),f(`pointercancel`,te,x),u(`pointerdown`,U,e=>_(`both`,e)),u(`pointermove`,U,b),u(`pointerup`,U,x),f(`pointercancel`,U,x),n(e,w),D()}l([`click`,`pointerdown`,`pointermove`,`pointerup`]);var _n=N(`<div></div>`),vn=N(`<div class="overdraw-band svelte-1jfrg6d"></div>`),yn=N(`<div role="slider" aria-label="Left slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Right slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div>`,1),bn=N(`<div role="slider" aria-label="Top slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Bottom slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div>`,1),xn=N(`<div class="canvas svelte-1jfrg6d"><div class="toolbar svelte-1jfrg6d"><button title="Zoom out" class="svelte-1jfrg6d">−</button> <span class="zoom svelte-1jfrg6d"> </span> <button title="Zoom in" class="svelte-1jfrg6d">+</button> <button title="100%">1:1</button> <button>Fit</button> <span class="dims svelte-1jfrg6d"> </span></div> <div role="application" aria-label="Slice canvas — drag to pan, pinch/⌘+scroll to zoom"><div class="image-wrap svelte-1jfrg6d"><img alt="" draggable="false" class="svelte-1jfrg6d"/> <!> <!> <!> <!> <!> <div role="slider" aria-label="Left overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Right overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Top overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Bottom overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <!> <!></div></div></div>`);function Sn(e,o){z(o,!0);let c=v(void 0),l=v(void 0),d=v(null),p=b(()=>le(o.mode)),m=b(()=>i(p).horizontal),_=b(()=>i(p).vertical);function x(e,t){return i(d)?.target===e&&i(d).side===t}let w=v(`fit`),T=v(1),E=v(0),A=v(0),j=v(0),M=v(0),N=v(!1),F=new Map,I=null;function L(e){return Math.max(.05,Math.min(8,e))}g(()=>{let e=i(c);if(!e)return;let t=new ResizeObserver(()=>{y(j,e.clientWidth,!0),y(M,e.clientHeight,!0)});return t.observe(e),()=>t.disconnect()}),g(()=>{if(i(w)===`free`||o.width===0||o.height===0||i(j)===0||i(M)===0)return;let e=L(Math.min((i(j)-32)/o.width,(i(M)-32)/o.height));ee(i(w)===`one`?1:e)});function ee(e){y(T,e,!0),y(E,(i(j)-o.width*e)/2),y(A,(i(M)-o.height*e)/2)}function B(e,t){if(!i(c))return{x:e,y:t};let n=i(c).getBoundingClientRect();return{x:e-n.left-i(c).clientLeft,y:t-n.top-i(c).clientTop}}function V(e,t,n){let r=L(e);y(E,t-(t-i(E))*(r/i(T))),y(A,n-(n-i(A))*(r/i(T))),y(T,r,!0),y(w,`free`)}function H(e,t,n){return Math.max(t,Math.min(n,Math.round(e)))}function te(){y(w,`fit`)}function U(){y(w,`one`)}function W(e){V(i(T)*e,i(j)/2,i(M)/2)}function ne(){let[e,t]=[...F.values()];return{distance:Math.hypot(e.x-t.x,e.y-t.y),midX:(e.x+t.x)/2,midY:(e.y+t.y)/2}}function re(e){try{i(c)&&tt(i(c),e)}catch{}F.set(e.pointerId,{x:e.clientX,y:e.clientY}),F.size===2?I=ne():F.size===1&&y(N,!0)}function K(e){let t=F.get(e.pointerId);if(t)if(F.set(e.pointerId,{x:e.clientX,y:e.clientY}),F.size>=2&&I){let e=ne(),t=B(I.midX,I.midY);V(i(T)*(e.distance/I.distance),t.x,t.y),y(E,i(E)+(e.midX-I.midX)),y(A,i(A)+(e.midY-I.midY)),I=e}else F.size===1&&(y(E,i(E)+(e.clientX-t.x)),y(A,i(A)+(e.clientY-t.y)),y(w,`free`))}function ie(e){F.delete(e.pointerId),F.size<2&&(I=null),F.size===0&&y(N,!1)}function ae(e){if(e.preventDefault(),e.ctrlKey||e.metaKey){let t=B(e.clientX,e.clientY);V(i(T)*Math.exp(-e.deltaY*.01),t.x,t.y)}else y(E,i(E)-e.deltaX),y(A,i(A)-e.deltaY),y(w,`free`)}function q(e,t,n){n.preventDefault(),n.stopPropagation(),y(d,{target:e,side:t},!0),tt(n.currentTarget,n)}function J(e){if(!i(d)||!i(l))return;let t=i(l).getBoundingClientRect(),n=(e.clientX-t.left)/i(T),r=(e.clientY-t.top)/i(T),{target:a,side:s}=i(d),c={...a===`inset`?o.insets:o.overdraw};s===`left`?c.left=H(n,0,X(a,`left`)):s===`right`?c.right=H(o.width-n,0,X(a,`right`)):s===`top`?c.top=H(r,0,X(a,`top`)):s===`bottom`&&(c.bottom=H(o.height-r,0,X(a,`bottom`))),a===`inset`?o.onChange(c):o.onOverdrawChange(c)}function Y(e){let t=i(d)!==null;i(d)&&nt(e.currentTarget,e.pointerId),y(d,null),t&&o.onCommit()}function X(e,t){let n=e===`inset`?o.insets:o.overdraw;return e===`inset`?G(n,t,o.width,o.height):oe(n,t,o.width,o.height)}function se(e,t,n){let r=e===`inset`?o.insets:o.overdraw,i={...r};i[t]=H(r[t]+n,0,X(e,t)),i[t]!==r[t]&&(e===`inset`?o.onChange(i):o.onOverdrawChange(i),o.onCommit())}function ce(e,t,n,r){let i=r.shiftKey?10:1,a=n===`x`?`ArrowRight`:`ArrowUp`,o=n===`x`?`ArrowLeft`:`ArrowDown`;if(r.key===a)se(e,t,i);else if(r.key===o)se(e,t,-i);else return;r.preventDefault()}var ue=xn(),de=a(ue),fe=a(de),pe=R(fe,2),me=a(pe);C(pe);var he=R(pe,2),ge=R(he,2);let _e;var ve=R(ge,2);let ye;var be=R(ve,2),xe=a(be);C(be),C(de);var Se=R(de,2);let Ce;var we=a(Se);let Te;var Ee=a(we),De=R(Ee,2),Oe=e=>{var r=_n();let a,s;t(()=>{a=O(r,1,`center-rect svelte-1jfrg6d`,null,a,{"side-edges":!i(m),"cap-edges":!i(_)}),s=k(r,``,s,{left:`${(i(m)?o.insets.left:0)*i(T)}px`,top:`${(i(_)?o.insets.top:0)*i(T)}px`,right:`${(i(m)?o.insets.right:0)*i(T)}px`,bottom:`${(i(_)?o.insets.bottom:0)*i(T)}px`})}),n(e,r)};h(De,e=>{(i(m)||i(_))&&e(Oe)});var ke=R(De,2),Ae=e=>{var r=vn();let a;t(()=>a=k(r,``,a,{left:`0`,top:`0`,bottom:`0`,width:`${o.overdraw.left*i(T)}px`})),n(e,r)};h(ke,e=>{o.overdraw.left>0&&e(Ae)});var je=R(ke,2),Me=e=>{var r=vn();let a;t(()=>a=k(r,``,a,{right:`0`,top:`0`,bottom:`0`,width:`${o.overdraw.right*i(T)}px`})),n(e,r)};h(je,e=>{o.overdraw.right>0&&e(Me)});var Ne=R(je,2),Pe=e=>{var r=vn();let a;t(()=>a=k(r,``,a,{top:`0`,left:`${o.overdraw.left*i(T)}px`,right:`${o.overdraw.right*i(T)}px`,height:`${o.overdraw.top*i(T)}px`})),n(e,r)};h(Ne,e=>{o.overdraw.top>0&&e(Pe)});var Fe=R(Ne,2),Ie=e=>{var r=vn();let a;t(()=>a=k(r,``,a,{bottom:`0`,left:`${o.overdraw.left*i(T)}px`,right:`${o.overdraw.right*i(T)}px`,height:`${o.overdraw.bottom*i(T)}px`})),n(e,r)};h(Fe,e=>{o.overdraw.bottom>0&&e(Ie)});var Z=R(Fe,2);let Le;P(Z,`aria-valuemin`,0);let Re;var ze=a(Z),Be=a(ze,!0);C(ze),C(Z);var Q=R(Z,2);let Ve;P(Q,`aria-valuemin`,0);let He;var Ue=a(Q),We=a(Ue,!0);C(Ue),C(Q);var Ge=R(Q,2);let Ke;P(Ge,`aria-valuemin`,0);let qe;var Je=a(Ge),Ye=a(Je,!0);C(Je),C(Ge);var $=R(Ge,2);let Xe;P($,`aria-valuemin`,0);let Ze;var Qe=a($),$e=a(Qe,!0);C(Qe),C($);var et=R($,2),rt=e=>{var c=yn(),l=s(c);let d;P(l,`aria-valuemin`,0);let p;var m=a(l),h=a(m,!0);C(m),C(l);var g=R(l,2);let _;P(g,`aria-valuemin`,0);let v;var y=a(g),b=a(y,!0);C(y),C(g),t((e,t,n,a)=>{d=O(l,1,`line v svelte-1jfrg6d`,null,d,e),P(l,`aria-valuenow`,o.insets.left),P(l,`aria-valuemax`,t),p=k(l,``,p,{left:`${o.insets.left*i(T)}px`}),r(h,o.insets.left),_=O(g,1,`line v svelte-1jfrg6d`,null,_,n),P(g,`aria-valuenow`,o.insets.right),P(g,`aria-valuemax`,a),v=k(g,``,v,{left:`${(o.width-o.insets.right)*i(T)}px`}),r(b,o.insets.right)},[()=>({active:x(`inset`,`left`)}),()=>X(`inset`,`left`),()=>({active:x(`inset`,`right`)}),()=>X(`inset`,`right`)]),u(`pointerdown`,l,e=>q(`inset`,`left`,e)),u(`pointermove`,l,J),u(`pointerup`,l,Y),f(`pointercancel`,l,Y),u(`keydown`,l,e=>ce(`inset`,`left`,`x`,e)),u(`pointerdown`,g,e=>q(`inset`,`right`,e)),u(`pointermove`,g,J),u(`pointerup`,g,Y),f(`pointercancel`,g,Y),u(`keydown`,g,e=>ce(`inset`,`right`,`x`,e)),n(e,c)};h(et,e=>{i(m)&&e(rt)});var it=R(et,2),at=e=>{var c=bn(),l=s(c);let d;P(l,`aria-valuemin`,0);let p;var m=a(l),h=a(m,!0);C(m),C(l);var g=R(l,2);let _;P(g,`aria-valuemin`,0);let v;var y=a(g),b=a(y,!0);C(y),C(g),t((e,t,n,a)=>{d=O(l,1,`line h svelte-1jfrg6d`,null,d,e),P(l,`aria-valuenow`,o.insets.top),P(l,`aria-valuemax`,t),p=k(l,``,p,{top:`${o.insets.top*i(T)}px`}),r(h,o.insets.top),_=O(g,1,`line h svelte-1jfrg6d`,null,_,n),P(g,`aria-valuenow`,o.insets.bottom),P(g,`aria-valuemax`,a),v=k(g,``,v,{top:`${(o.height-o.insets.bottom)*i(T)}px`}),r(b,o.insets.bottom)},[()=>({active:x(`inset`,`top`)}),()=>X(`inset`,`top`),()=>({active:x(`inset`,`bottom`)}),()=>X(`inset`,`bottom`)]),u(`pointerdown`,l,e=>q(`inset`,`top`,e)),u(`pointermove`,l,J),u(`pointerup`,l,Y),f(`pointercancel`,l,Y),u(`keydown`,l,e=>ce(`inset`,`top`,`y`,e)),u(`pointerdown`,g,e=>q(`inset`,`bottom`,e)),u(`pointermove`,g,J),u(`pointerup`,g,Y),f(`pointercancel`,g,Y),u(`keydown`,g,e=>ce(`inset`,`bottom`,`y`,e)),n(e,c)};h(it,e=>{i(_)&&e(at)}),C(we),S(we,e=>y(l,e),()=>i(l)),C(Se),S(Se,e=>y(c,e),()=>i(c)),C(ue),t((e,t,n,a,s,c,l,u,d)=>{r(me,`${e??``}%`),_e=O(ge,1,`svelte-1jfrg6d`,null,_e,{active:i(w)===`one`}),ye=O(ve,1,`svelte-1jfrg6d`,null,ye,{active:i(w)===`fit`}),r(xe,`${o.width??``} × ${o.height??``} px`),Ce=O(Se,1,`viewport checkerboard svelte-1jfrg6d`,null,Ce,{panning:i(N)}),Te=k(we,``,Te,{width:`${o.width*i(T)}px`,height:`${o.height*i(T)}px`,transform:`translate(${i(E)??``}px, ${i(A)??``}px)`}),P(Ee,`src`,o.src),Le=O(Z,1,`line v overdraw-line svelte-1jfrg6d`,null,Le,t),P(Z,`aria-valuenow`,o.overdraw.left),P(Z,`aria-valuemax`,n),Re=k(Z,``,Re,{left:`${o.overdraw.left*i(T)}px`}),r(Be,o.overdraw.left),Ve=O(Q,1,`line v overdraw-line svelte-1jfrg6d`,null,Ve,a),P(Q,`aria-valuenow`,o.overdraw.right),P(Q,`aria-valuemax`,s),He=k(Q,``,He,{left:`${(o.width-o.overdraw.right)*i(T)}px`}),r(We,o.overdraw.right),Ke=O(Ge,1,`line h overdraw-line svelte-1jfrg6d`,null,Ke,c),P(Ge,`aria-valuenow`,o.overdraw.top),P(Ge,`aria-valuemax`,l),qe=k(Ge,``,qe,{top:`${o.overdraw.top*i(T)}px`}),r(Ye,o.overdraw.top),Xe=O($,1,`line h overdraw-line svelte-1jfrg6d`,null,Xe,u),P($,`aria-valuenow`,o.overdraw.bottom),P($,`aria-valuemax`,d),Ze=k($,``,Ze,{top:`${(o.height-o.overdraw.bottom)*i(T)}px`}),r($e,o.overdraw.bottom)},[()=>Math.round(i(T)*100),()=>({active:x(`overdraw`,`left`)}),()=>X(`overdraw`,`left`),()=>({active:x(`overdraw`,`right`)}),()=>X(`overdraw`,`right`),()=>({active:x(`overdraw`,`top`)}),()=>X(`overdraw`,`top`),()=>({active:x(`overdraw`,`bottom`)}),()=>X(`overdraw`,`bottom`)]),u(`click`,fe,()=>W(1/1.25)),u(`click`,he,()=>W(1.25)),u(`click`,ge,U),u(`click`,ve,te),u(`pointerdown`,Se,re),u(`pointermove`,Se,K),u(`pointerup`,Se,ie),f(`pointercancel`,Se,ie),f(`wheel`,Se,ae),u(`pointerdown`,Z,e=>q(`overdraw`,`left`,e)),u(`pointermove`,Z,J),u(`pointerup`,Z,Y),f(`pointercancel`,Z,Y),u(`keydown`,Z,e=>ce(`overdraw`,`left`,`x`,e)),u(`pointerdown`,Q,e=>q(`overdraw`,`right`,e)),u(`pointermove`,Q,J),u(`pointerup`,Q,Y),f(`pointercancel`,Q,Y),u(`keydown`,Q,e=>ce(`overdraw`,`right`,`x`,e)),u(`pointerdown`,Ge,e=>q(`overdraw`,`top`,e)),u(`pointermove`,Ge,J),u(`pointerup`,Ge,Y),f(`pointercancel`,Ge,Y),u(`keydown`,Ge,e=>ce(`overdraw`,`top`,`y`,e)),u(`pointerdown`,$,e=>q(`overdraw`,`bottom`,e)),u(`pointermove`,$,J),u(`pointerup`,$,Y),f(`pointercancel`,$,Y),u(`keydown`,$,e=>ce(`overdraw`,`bottom`,`y`,e)),n(e,ue),D()}l([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var Cn=N(`<div class="empty error svelte-1ea2lvt"> </div>`),wn=N(`<div class="empty svelte-1ea2lvt">Loading image…</div>`),Tn=N(`<div class="pane svelte-1ea2lvt"><!></div>`),En=N(`<div class="editor svelte-1ea2lvt"><div class="tabs svelte-1ea2lvt"><button>Slicing</button> <button>Preview</button></div> <!></div>`);function Dn(e,o){z(o,!0);let s=v(`slicing`),c=v(null),l=v(null);g(()=>{let e=o.asset.rawUrl;y(c,null),y(l,null);let t=!1,n=new window.Image;return n.onload=()=>{t||y(c,{width:n.naturalWidth,height:n.naturalHeight},!0)},n.onerror=()=>{t||y(l,`Could not load image dimensions.`)},n.src=e,()=>{t=!0}});let d=b(()=>{try{return Y.validateParameters(o.parameters)}catch{return null}}),f=b(()=>!i(d)||!i(c)?null:{kind:`slice`,src:o.asset.proxy?.url??o.asset.rawUrl,slicing:{mode:i(d).mode,insets:i(d).insets,pixelRatio:i(d).pixelRatio,...i(d).overdraw?{overdraw:i(d).overdraw}:{}},sourceWidth:i(c).width,sourceHeight:i(c).height});var p=En(),m=a(p),_=a(m);let x;var S=R(_,2);let w;C(m);var T=R(m,2),E=e=>{var o=Cn(),s=a(o,!0);C(o),t(()=>r(s,i(l))),n(e,o)},k=e=>{n(e,wn())},A=e=>{var t=Tn(),r=a(t);{let e=b(()=>i(d).overdraw??ce());Sn(r,{get src(){return o.asset.rawUrl},get width(){return i(c).width},get height(){return i(c).height},get mode(){return i(d).mode},get insets(){return i(d).insets},get overdraw(){return i(e)},onChange:e=>o.onParametersChange({...i(d),insets:e}),onOverdrawChange:e=>o.onParametersChange({...i(d),overdraw:e}),onCommit:()=>o.onParametersCommit(o.parameters)})}C(t),n(e,t)},j=e=>{var t=Tn();B(a(t),()=>o.asset.id,e=>{gn(e,{get entry(){return i(f)}})}),C(t),n(e,t)};h(T,e=>{i(l)?e(E):!i(d)||!i(c)?e(k,1):i(s)===`slicing`?e(A,2):i(f)&&e(j,3)}),C(p),t(()=>{x=O(_,1,`svelte-1ea2lvt`,null,x,{on:i(s)===`slicing`}),w=O(S,1,`svelte-1ea2lvt`,null,w,{on:i(s)===`preview`})}),u(`click`,_,()=>y(s,`slicing`)),u(`click`,S,()=>y(s,`preview`)),n(e,p),D()}l([`click`]);var On=N(`<section class="svelte-ij1927"><!> <div class="field svelte-ij1927"><!></div> <div class="field svelte-ij1927"><!></div></section> <!>`,1);function kn(e,t){z(t,!0);let r=b(()=>X.validateParameters(t.parameters));function o(e){t.onParametersCommit(e)}function c(e){o({...i(r),preset:e})}function l(e,n){let a=fe(i(r),e);n?o(a):t.onParametersChange(a)}var u=On(),d=s(u),f=a(d);dt(f,{children:(e,t)=>{j(),n(e,M(`Video`))},$$slots:{default:!0}});var p=R(f,2);ht(a(p),{label:`Preset`,caption:`Preset`,get value(){return i(r).preset},get options(){return t.presetNames},onChange:c,icon:e=>{$(e,{name:`preset`})},$$slots:{icon:!0}}),C(p);var m=R(p,2),h=a(m);{let e=e=>{$(e,{name:`width`})},t=b(()=>i(r).maxWidth??null);lt(h,{label:`Max width`,caption:`Max width`,min:1,placeholder:`source`,get value(){return i(t)},onChange:e=>l(e,!1),onCommit:e=>l(e,!0),icon:e,$$slots:{icon:!0}})}C(m),C(d),yt(R(d,2),{get proxy(){return t.asset.proxy},showDimensions:!0,showDuration:!0}),n(e,u),D()}var An=N(`<div class="preview-column svelte-qls820"><div class="video-frame svelte-qls820"><!></div> <!></div>`),jn=N(`<p class="svelte-qls820">No proxy yet — add the asset to a manifest to process it.</p>`),Mn=N(`<div class="stage checkerboard svelte-qls820"><!></div>`);function Nn(e,r){z(r,!0);let o=v(void 0),s=b(()=>!r.asset.proxy||r.asset.proxy.width===void 0||r.asset.proxy.height===void 0||r.asset.proxy.durationMs===void 0?null:{kind:`video`,src:r.asset.proxy.url,width:r.asset.proxy.width,height:r.asset.proxy.height,durationMs:r.asset.proxy.durationMs});var c=Mn(),l=a(c),u=e=>{var r=An(),c=a(r);let l;B(a(c),()=>i(s).src,e=>{Jt(e,{get src(){return i(s)},loop:!0,get videoElement(){return i(o)},set videoElement(e){y(o,e,!0)}})}),C(c),Ie(R(c,2),{get media(){return i(o)},showScrub:!0,showVolume:!0}),C(r),t(()=>l=k(c,``,l,{"aspect-ratio":`${i(s).width??``} / ${i(s).height??``}`})),n(e,r)},d=e=>{n(e,jn())};h(l,e=>{i(s)?e(u):e(d,-1)}),C(c),n(e,c),D()}var Pn=N(`<video playsinline="" preload="metadata" class="svelte-ejgo9x"></video>`,2);function Fn(e,r){z(r,!0);function i(e){e.currentTime=0,e.play().catch(()=>{})}function a(e){e.pause(),e.currentTime=0}var o=Pn();o.muted=!0,t(()=>P(o,`src`,r.asset.proxy?.url??r.asset.rawUrl)),f(`pointerenter`,o,e=>i(e.currentTarget)),f(`pointerleave`,o,e=>a(e.currentTarget)),n(e,o),D()}var In=N(`<span class="caption svelte-56kutb"> </span>`),Ln=N(`<img class="preview svelte-56kutb" alt=""/>`),Rn=N(`<span class="missing-preview svelte-56kutb" title="References an unknown asset">!</span>`),zn=N(`<span class="id svelte-56kutb"> </span>`),Bn=N(`<span class="id dangling svelte-56kutb" title="References an unknown asset"> </span>`),Vn=N(`<span class="placeholder svelte-56kutb"> </span>`),Hn=N(`<button class="clear svelte-56kutb">×</button>`),Un=N(`<p class="hint svelte-56kutb"> </p>`),Wn=N(`<button><img class="thumbnail svelte-56kutb" alt=""/> <span class="id svelte-56kutb"> </span></button>`),Gn=N(`<div class="dropdown svelte-56kutb"><!></div>`),Kn=N(`<div class="picker svelte-56kutb"><!> <div class="reference-input control svelte-56kutb"><button><span class="preview-slot svelte-56kutb"><!></span> <!></button> <!> <!></div></div>`);function qn(e,o){z(o,!0);let c=v(!1),l=b(()=>(U.state?.assets??[]).filter(e=>o.expectedTypes.includes(e.type)&&e.id!==o.excludeAssetId)),f=b(()=>o.value?U.assetById(o.value.$asset):null);function p(e){y(c,!1),o.onChange({$asset:e})}function g(){y(c,!1),o.onChange(void 0)}var _=Kn(),x=a(_),S=e=>{var i=In(),s=a(i,!0);C(i),t(()=>r(s,o.caption)),n(e,i)};h(x,e=>{o.caption&&e(S)});var w=R(x,2),T=a(w);let E;var k=a(T),A=a(k),j=e=>{var r=Ln();t(()=>P(r,`src`,i(f).rawUrl)),n(e,r)},M=e=>{n(e,Rn())};h(A,e=>{o.value&&i(f)?e(j):o.value&&e(M,1)}),C(k);var N=R(k,2),F=e=>{var c=d(),l=s(c),u=e=>{var o=zn(),s=a(o,!0);C(o),t(()=>r(s,i(f).id)),n(e,o)},p=e=>{var i=Bn(),s=a(i,!0);C(i),t(()=>r(s,o.value.$asset)),n(e,i)};h(l,e=>{i(f)?e(u):e(p,-1)}),n(e,c)},I=e=>{var i=Vn(),s=a(i);C(i),t(e=>r(s,`Select ${e??``}...`),[()=>o.expectedTypes.join(`/`)]),n(e,i)};h(N,e=>{o.value?e(F):e(I,-1)}),C(T);var L=R(T,2),ee=e=>{var r=Hn();t(()=>P(r,`title`,`Clear ${o.label??``}`)),u(`click`,r,g),n(e,r)};h(L,e=>{o.value&&e(ee)});var B=R(L,2),V=e=>{var c=Gn(),f=a(c),g=e=>{var i=Un(),s=a(i);C(i),t(e=>r(s,`No ${e??``} assets in the library.`),[()=>o.expectedTypes.join(`/`)]),n(e,i)},_=e=>{var c=d();m(s(c),17,()=>i(l),e=>e.id,(e,s)=>{var c=Wn();let l;var d=a(c),f=R(d,2),m=a(f,!0);C(f),C(c),t(()=>{l=O(c,1,`option svelte-56kutb`,null,l,{selected:o.value?.$asset===i(s).id}),P(d,`src`,i(s).rawUrl),r(m,i(s).id)}),u(`click`,c,()=>p(i(s).id)),n(e,c)}),n(e,c)};h(f,e=>{i(l).length===0?e(g):e(_,-1)}),C(c),n(e,c)};h(B,e=>{i(c)&&e(V)}),C(w),C(_),t(()=>{E=O(T,1,`current svelte-56kutb`,null,E,{empty:!o.value}),P(T,`title`,o.value?`Change ${o.label}`:`Select ${o.label}`)}),u(`click`,T,()=>y(c,!i(c))),n(e,_),D()}l([`click`]);var Jn=N(`<span class="caption svelte-gjs979"> </span>`),Yn=N(`<div class="color-field svelte-gjs979"><!> <div class="color-input control svelte-gjs979"><span class="swatch-slot svelte-gjs979"><input class="swatch svelte-gjs979" type="color" title="Open color picker"/></span> <input class="hex-input svelte-gjs979" type="text" maxlength="7" spellcheck="false"/></div></div>`);function Xn(e,o){z(o,!0);let s=v(null),c=/^#[0-9a-f]{6}$/i;function l(e){let t=e.startsWith(`#`)?e:`#${e}`;return c.test(t)?t.toUpperCase():null}function d(e){let t=e.currentTarget.value.toUpperCase();y(s,t,!0),o.onChange?.(t)}function p(e){let t=e.currentTarget.value.toUpperCase();y(s,t,!0),o.onCommit(t)}function m(e){y(s,e.currentTarget.value,!0);let t=l(i(s));t&&o.onChange?.(t)}function g(){let e=l(i(s)??o.value);e&&o.onCommit(e),y(s,null)}function _(e){e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&(y(s,null),e.currentTarget.value=o.value,e.currentTarget.blur())}var b=Yn(),x=a(b),S=e=>{var i=Jn(),s=a(i,!0);C(i),t(()=>r(s,o.caption)),n(e,i)};h(x,e=>{o.caption&&e(S)});var w=R(x,2),O=a(w),k=a(O);T(k),C(O);var A=R(O,2);T(A),C(w),C(b),t(()=>{E(k,o.value),P(k,`aria-label`,`${o.label} color picker`),E(A,i(s)??o.value),P(A,`aria-label`,`${o.label} hex value`)}),u(`input`,k,d),u(`change`,k,p),f(`focus`,A,()=>y(s,o.value,!0)),u(`input`,A,m),f(`blur`,A,g),u(`keydown`,A,_),n(e,b),D()}l([`input`,`change`,`keydown`]);var Zn=N(`<div class="field svelte-rsjkek"><!></div>`),Qn=N(`<section class="svelte-rsjkek"><!> <div class="field svelte-rsjkek"><!></div> <div class="field svelte-rsjkek"><!></div></section> <section class="svelte-rsjkek"><!> <div class="field svelte-rsjkek"><!></div> <!></section> <section class="svelte-rsjkek"><!> <!> <!></section> <!>`,1);function $n(e,t){z(t,!0);let r=b(()=>K.validateParameters(t.parameters));function o(e){t.onParametersCommit(e)}function c(e){o({...i(r),preset:e})}function l(e,n){let a=fe(i(r),e);n?o(a):t.onParametersChange(a)}function u(e){return{...i(r),chromaKey:e}}let d=[{key:`colorCutoff`,label:`Color cutoff`,icon:`cutoff`,min:0,max:.6,step:.005},{key:`colorFeathering`,label:`Color feathering`,icon:`color-feather`,min:0,max:.8,step:.005},{key:`maskFeathering`,label:`Mask feathering`,icon:`mask-feather`,min:0,max:1,step:.01},{key:`sharpening`,label:`Sharpening`,icon:`sharpen`,min:0,max:1,step:.01},{key:`despill`,label:`Despill`,icon:`despill`,min:0,max:1,step:.01},{key:`despillLuminanceAdd`,label:`Despill lum. add`,icon:`despill-lum`,min:0,max:1,step:.01}];function f(e,n,a){let s=u({...i(r).chromaKey,[e]:n});a?o(s):t.onParametersChange(s)}function p(e){return Math.round(Math.min(1,Math.max(0,e))*255).toString(16).padStart(2,`0`)}function h(e){return`#${p(e[0])}${p(e[1])}${p(e[2])}`}function g(e){let t=parseInt(e.slice(1),16);return[(t>>16&255)/255,(t>>8&255)/255,(t&255)/255]}function _(e,n){let a=u({...i(r).chromaKey,keyColor:g(e)});n?o(a):t.onParametersChange(a)}function v(e,t){let{[e]:n,...a}=i(r);o(t?{...a,[e]:t}:a)}var y=Qn(),x=s(y),S=a(x);dt(S,{children:(e,t)=>{j(),n(e,M(`Video`))},$$slots:{default:!0}});var w=R(S,2);ht(a(w),{label:`Preset`,caption:`Preset`,get value(){return i(r).preset},get options(){return t.presetNames},onChange:c,icon:e=>{$(e,{name:`preset`})},$$slots:{icon:!0}}),C(w);var T=R(w,2),E=a(T);{let e=e=>{$(e,{name:`width`})},t=b(()=>i(r).maxWidth??null);lt(E,{label:`Max width`,caption:`Max width`,min:1,placeholder:`source`,get value(){return i(t)},onChange:e=>l(e,!1),onCommit:e=>l(e,!0),icon:e,$$slots:{icon:!0}})}C(T),C(x);var O=R(x,2),k=a(O);dt(k,{children:(e,t)=>{j(),n(e,M(`Chroma key`))},$$slots:{default:!0}});var A=R(k,2),N=a(A);{let e=b(()=>h(i(r).chromaKey.keyColor));Xn(N,{label:`Key color`,caption:`Key color`,get value(){return i(e)},onChange:e=>_(e,!1),onCommit:e=>_(e,!0)})}C(A),m(R(A,2),17,()=>d,e=>e.key,(e,t)=>{var o=Zn();lt(a(o),{get label(){return i(t).label},get caption(){return i(t).label},get min(){return i(t).min},get max(){return i(t).max},get step(){return i(t).step},get value(){return i(r).chromaKey[i(t).key]},onChange:e=>f(i(t).key,e??i(t).min,!1),onCommit:e=>f(i(t).key,e??i(t).min,!0),icon:e=>{$(e,{get name(){return i(t).icon}})},$$slots:{icon:!0}}),C(o),n(e,o)}),C(O);var P=R(O,2),F=a(P);dt(F,{children:(e,t)=>{j(),n(e,M(`References`))},$$slots:{default:!0}});var I=R(F,2);qn(I,{label:`Mask`,caption:`Mask`,get value(){return i(r).mask},expectedTypes:[`image`],get excludeAssetId(){return t.asset.id},onChange:e=>v(`mask`,e)}),qn(R(I,2),{label:`Fallback`,caption:`Fallback`,get value(){return i(r).fallback},expectedTypes:[`image`],get excludeAssetId(){return t.asset.id},onChange:e=>v(`fallback`,e)}),C(P),yt(R(P,2),{get proxy(){return t.asset.proxy},showDimensions:!0,showDuration:!0}),n(e,y),D()}var er=N(`<div class="preview-column svelte-1y3xro5"><div class="compare-row svelte-1y3xro5"><figure class="svelte-1y3xro5"><figcaption class="svelte-1y3xro5">Input</figcaption> <div class="video-frame svelte-1y3xro5"><!></div></figure> <figure class="svelte-1y3xro5"><figcaption class="svelte-1y3xro5">Keyed</figcaption> <div class="video-frame checkerboard svelte-1y3xro5"><!></div></figure></div> <!></div>`),tr=N(`<p class="svelte-1y3xro5">No proxy yet — add the asset to a manifest to process it.</p>`),nr=N(`<div class="stage svelte-1y3xro5"><!></div>`);function rr(e,r){z(r,!0);let o=v(void 0),s=v(void 0);function c(e){if(!e)return;let t=U.assetById(e);if(!(!t?.proxy||t.proxy.width===void 0||t.proxy.height===void 0))return{kind:`image`,src:t.proxy.url,width:t.proxy.width,height:t.proxy.height}}let l=b(()=>{if(!r.asset.proxy||r.asset.proxy.width===void 0||r.asset.proxy.height===void 0||r.asset.proxy.durationMs===void 0)return null;try{let e=K.validateParameters(r.parameters),t=c(e.mask?.$asset),n=c(e.fallback?.$asset);return{kind:`chroma-key-video`,src:r.asset.proxy.url,width:r.asset.proxy.width,height:r.asset.proxy.height,durationMs:r.asset.proxy.durationMs,chromaKey:e.chromaKey,...t?{mask:t}:{},...n?{fallback:n}:{}}}catch{return null}}),u=b(()=>i(l)?{kind:`video`,src:i(l).src,width:i(l).width,height:i(l).height,durationMs:i(l).durationMs}:null);g(()=>{let e=i(o),t=i(s);if(!e||!t)return;function n(){Math.abs(t.currentTime-e.currentTime)>.25&&(t.currentTime=e.currentTime)}function r(){n(),t.play().catch(()=>{})}function a(){t.pause(),t.currentTime=e.currentTime}function c(){t.currentTime=e.currentTime}return e.addEventListener(`play`,r),e.addEventListener(`playing`,r),e.addEventListener(`pause`,a),e.addEventListener(`ended`,a),e.addEventListener(`seeked`,c),e.addEventListener(`timeupdate`,n),c(),e.paused||t.play().catch(()=>{}),()=>{e.removeEventListener(`play`,r),e.removeEventListener(`playing`,r),e.removeEventListener(`pause`,a),e.removeEventListener(`ended`,a),e.removeEventListener(`seeked`,c),e.removeEventListener(`timeupdate`,n)}});var d=nr(),f=a(d),p=e=>{var r=er(),c=a(r),d=a(c),f=R(a(d),2);let p;B(a(f),()=>i(u).src,e=>{Jt(e,{get src(){return i(u)},loop:!0,get videoElement(){return i(s)},set videoElement(e){y(s,e,!0)}})}),C(f),C(d);var m=R(d,2),h=R(a(m),2);let g;B(a(h),()=>`${i(l).src}|${i(l).mask?.src??``}`,e=>{nn(e,{get src(){return i(l)},get videoElement(){return i(o)},set videoElement(e){y(o,e,!0)}})}),C(h),C(m),C(c),Ie(R(c,2),{get media(){return i(o)},showScrub:!0,showVolume:!1}),C(r),t(()=>{p=k(f,``,p,{"aspect-ratio":`${i(u).width??``} / ${i(u).height??``}`}),g=k(h,``,g,{"aspect-ratio":`${i(l).width??``} / ${i(l).height??``}`})}),n(e,r)},m=e=>{n(e,tr())};h(f,e=>{i(l)&&i(u)?e(p):e(m,-1)}),C(d),n(e,d),D()}var ir=N(`<section class="svelte-3jblpy"><!> <div class="field svelte-3jblpy"><!></div></section> <!>`,1);function ar(e,t){z(t,!0);let r=b(()=>J.validateParameters(t.parameters));function o(e){let n={...i(r),preset:e};t.onParametersCommit(n)}var c=ir(),l=s(c),u=a(l);dt(u,{children:(e,t)=>{j(),n(e,M(`Audio`))},$$slots:{default:!0}});var d=R(u,2);ht(a(d),{label:`Preset`,caption:`Preset`,get value(){return i(r).preset},get options(){return t.presetNames},onChange:o,icon:e=>{$(e,{name:`preset`})},$$slots:{icon:!0}}),C(d),C(l),yt(R(l,2),{get proxy(){return t.asset.proxy},showDuration:!0}),n(e,c),D()}function or(e,t){z(t,!0);{let n=b(()=>t.asset.proxy?.url??t.asset.rawUrl);Ue(e,{get src(){return i(n)}})}D()}var sr={[re.type]:{panel:xt,editor:on,thumbnail:cn},[Y.type]:{panel:pn,editor:Dn,thumbnail:cn},[X.type]:{panel:kn,editor:Nn,thumbnail:Fn},[K.type]:{panel:$n,editor:rr,thumbnail:Fn},[J.type]:{panel:ar,editor:qe,thumbnail:or}},cr=W.project(sr,`editor implementation`),lr=N(`<p class="error svelte-1f5yh58">This file type is not supported (raster images, video, or audio).</p>`),ur=N(`<button> </button>`),dr=N(`<p class="empty-manifests svelte-1f5yh58">No manifests available — this asset will be unassigned.</p>`),fr=N(`<div class="manifest-list svelte-1f5yh58"><!></div>`),pr=N(`<p class="hint warn svelte-1f5yh58"> </p>`),mr=N(`<p class="hint warn svelte-1f5yh58">An asset with this id already exists.</p>`),hr=N(`<div class="row svelte-1f5yh58"><span class="label svelte-1f5yh58">Type</span> <div class="segmented svelte-1f5yh58"></div></div> <label class="row svelte-1f5yh58"><span class="label svelte-1f5yh58">Id</span> <input class="control svelte-1f5yh58" type="text" spellcheck="false"/></label> <div class="row manifests svelte-1f5yh58"><span class="label svelte-1f5yh58">Manifests</span> <!></div> <!> <!>`,1),gr=N(`<div class="backdrop svelte-1f5yh58" role="presentation"><div class="dialog svelte-1f5yh58" role="dialog" aria-label="Import asset" tabindex="-1"><h2 class="svelte-1f5yh58">Import asset</h2> <p class="file-name svelte-1f5yh58"> </p> <p class="destination svelte-1f5yh58"> </p> <!> <div class="actions svelte-1f5yh58"><button class="control">Cancel</button> <button class="control primary"> </button></div></div></div>`);function _r(e,c){z(c,!0);let l=b(()=>ae(c.file.name)),d=v(`image`),p=v(`asset`),x=v(o([])),S=v(!1),w=v(null),E=b(()=>U.manifestNames);g(()=>{y(d,ae(c.file.name)[0]??`image`,!0),y(p,se(c.file.name),!0),y(x,i(E).length===0?[]:[i(E).includes(`main`)?`main`:i(E)[0]],!0)});let k=b(()=>U.state?.assets.some(e=>e.id===i(p))??!1),A=b(()=>ie(i(p))),j=b(()=>i(A)===null),M=b(()=>i(j)&&!i(k)&&i(l).length>0&&!i(S));function N(e){y(x,i(x).includes(e)?i(x).filter(t=>t!==e):[...i(x),e],!0)}async function P(){if(!i(M))return;let e=i(p),t=i(d),n=[...i(x)];y(S,!0),y(w,null);try{await U.mutate(()=>H(c.file,t,e,c.folder,n)),c.onDone(e)}catch(e){y(w,e instanceof Error?e.message:String(e),!0)}finally{y(S,!1)}}var F=gr();f(`keydown`,_,e=>me(e,{busy:i(S),confirmDisabled:!i(M),onConfirm:()=>void P(),onCancel:c.onCancel}));var I=a(F),L=R(a(I),2),B=a(L,!0);C(L);var V=R(L,2),te=a(V);C(V);var W=R(V,2),ne=e=>{n(e,lr())},G=e=>{var o=hr(),c=s(o),f=R(a(c),2);m(f,20,()=>i(l),e=>e,(e,o)=>{var s=ur();let c;var l=a(s,!0);C(s),t(()=>{s.disabled=i(S),c=O(s,1,`svelte-1f5yh58`,null,c,{on:i(d)===o}),r(l,o)}),u(`click`,s,()=>y(d,o,!0)),n(e,s)}),C(f),C(c);var g=R(c,2),_=R(a(g),2);T(_),C(g);var v=R(g,2),b=R(a(v),2),D=e=>{n(e,dr())},M=e=>{var t=fr();de(a(t),{get manifests(){return i(E)},get selected(){return i(x)},passive:[],onToggle:N,get disabled(){return i(S)}}),C(t),n(e,t)};h(b,e=>{i(E).length===0?e(D):e(M,-1)}),C(v);var P=R(v,2),F=e=>{var o=pr(),s=a(o,!0);C(o),t(()=>r(s,i(A))),n(e,o)},I=e=>{n(e,mr())};h(P,e=>{i(j)?i(k)&&e(I,1):e(F)});var L=R(P,2),z=e=>{var o=pr(),s=a(o,!0);C(o),t(()=>r(s,i(w))),n(e,o)};h(L,e=>{i(w)&&e(z)}),t(()=>_.disabled=i(S)),ee(_,()=>i(p),e=>y(p,e)),n(e,o)};h(W,e=>{i(l).length===0?e(ne):e(G,-1)});var re=R(W,2),K=a(re),q=R(K,2),oe=a(q,!0);C(q),C(re),C(I),C(F),t(()=>{r(B,c.file.name),r(te,`Destination: ${(c.folder||`Root`)??``}`),K.disabled=i(S),q.disabled=!i(M),r(oe,i(S)?`Importing…`:`Import`)}),u(`click`,F,e=>{e.target===e.currentTarget&&!i(S)&&c.onCancel()}),u(`click`,K,function(...e){c.onCancel?.apply(this,e)}),u(`click`,q,()=>void P()),n(e,F),D()}l([`click`]);function vr(e,t){return e!==t&&!Ee(t,e)&&Ce(e)!==t}function yr(e,t,n){return e&&t!==null&&vr(t,n)}var br=e(`<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path d="M1.25 4.25A1.75 1.75 0 0 1 3 2.5h2.45c.55 0 1.06.26 1.39.7l.6.8H13a1.75 1.75 0 0 1 1.75 1.75v5.5A1.75 1.75 0 0 1 13 13H3a1.75 1.75 0 0 1-1.75-1.75v-7Z" fill="currentColor"></path><path d="M1.75 6h12.5" stroke="currentColor" stroke-opacity="0.35"></path></svg>`);function xr(e,r){let i=A(r,`size`,3,14);var a=br();t(()=>{P(a,`width`,i()),P(a,`height`,i())}),n(e,a)}var Sr=N(`<span class="asset-warning svelte-ftwms1">⚠</span>`),Cr=N(`<div class="asset-row svelte-ftwms1"><button class="row asset current svelte-ftwms1" draggable="true" aria-current="page"><span class="glyph asset-glyph svelte-ftwms1">◆</span> <span class="label svelte-ftwms1"> </span> <!></button></div>`),wr=N(`<div class="folder-row svelte-ftwms1"><button draggable="true"><span class="glyph svelte-ftwms1"><!></span><span class="label svelte-ftwms1"> </span><span class="count svelte-ftwms1"> </span></button></div> <!>`,1),Tr=N(`<p class="dialog-warning svelte-ftwms1"> </p>`),Er=N(`<p class="dialog-warning svelte-ftwms1">A sibling folder with this name already exists.</p>`),Dr=N(`<label class="dialog-row svelte-ftwms1"><span class="svelte-ftwms1">Name</span> <input class="control svelte-ftwms1" spellcheck="false"/></label> <p class="dialog-path svelte-ftwms1"> </p> <!> <!> <!>`,1),Or=N(`<p class="dialog-text svelte-ftwms1">Delete <strong> </strong> </p> <!> <!>`,1),kr=N(`<aside class="directory svelte-ftwms1" aria-label="Asset folders"><header class="svelte-ftwms1"><strong class="svelte-ftwms1">Folders</strong> <div class="actions svelte-ftwms1"><button class="icon-button svelte-ftwms1">+</button> <button class="icon-button svelte-ftwms1">✎</button> <button class="icon-button danger svelte-ftwms1">×</button></div></header> <div class="tree svelte-ftwms1"><button><span class="glyph svelte-ftwms1">▦</span><span class="label svelte-ftwms1">All Assets</span><span class="count svelte-ftwms1"> </span></button> <button><span class="glyph svelte-ftwms1">⌂</span><span class="label svelte-ftwms1">Root</span><span class="count svelte-ftwms1"> </span></button> <!> <!></div></aside> <!> <!>`,1);function Ar(e,o){z(o,!0);let l=A(o,`activeAsset`,3,null),d=A(o,`sharedDraggedFolder`,3,null),p=v(null),_=v(null),x=b(()=>d()??i(_)),w=b(()=>U.state?.library.folders??[]),E=b(()=>U.state?.assets??[]),j=b(()=>[...i(w)].sort((e,t)=>e.localeCompare(t)));function M(e){return i(E).filter(t=>t.folder===e).length}function N(e,t){let n=e.dataTransfer?.types.includes(`application/x-fundus-assets`)??!1,r=yr(e.dataTransfer?.types.includes(`application/x-fundus-folder`)??!1,i(x),t);!n&&!r||(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),y(p,t,!0))}function F(e,t){e.preventDefault(),y(p,null);let n=e.dataTransfer?.getData(`application/x-fundus-assets`);if(n){try{let e=JSON.parse(n);Array.isArray(e)&&e.every(e=>typeof e==`string`)&&o.onMoveAssets(e,t)}catch{}return}let r=e.dataTransfer?.getData(`application/x-fundus-folder`)||i(x);r&&vr(r,t)&&L(r,t)}function I(e,t){l()||o.selectedFolder!==null&&Ee(o.selectedFolder,e)&&o.onSelect(`${t}${o.selectedFolder.slice(e.length)}`)}async function L(e,t){let n=Te(t,we(e));try{await U.mutate(()=>q(e,t)),I(e,n)}catch{}finally{y(_,null),o.onFolderDragEnd?.()}}let B=v(null),V=v(``),H=v(null),W=v(null),G=v(``),re=v(void 0),K=v(!1),ie=v(null),ae=b(()=>o.selectedFolder!==null&&o.selectedFolder!==``?o.selectedFolder:null),oe=b(()=>i(G)===``?null:be(i(G))),J=b(()=>Te(i(B)===`rename`?Ce(i(H)??``):i(V),i(G).normalize(`NFC`))),Y=b(()=>i(G)!==``&&i(w).some(e=>e!==(i(B)===`rename`?i(H):null)&&Se(e)===Se(i(J)))),X=b(()=>i(G)!==``&&!i(oe)&&!i(Y)&&!i(K));function se(e=o.selectedFolder??``){y(V,e,!0),y(G,``),y(ie,null),y(B,`create`),c().then(()=>i(re)?.focus())}let ce=0;g(()=>{o.createRequest!==null&&o.createRequest.id!==ce&&(ce=o.createRequest.id,se(o.createRequest.parent))});function le(e,t,n=null){e.preventDefault(),e.stopPropagation(),o.onContextMenu(e.clientX,e.clientY,t,n)}function de(e){e!==null&&(y(H,e,!0),y(G,we(e),!0),y(ie,null),y(B,`rename`),c().then(()=>i(re)?.focus()))}let fe=0;g(()=>{o.renameRequest!==null&&o.renameRequest.id!==fe&&(fe=o.renameRequest.id,de(o.renameRequest.path))});function pe(e){e!==null&&(y(W,e,!0),y(ie,null),y(B,`delete`))}let me=0;g(()=>{o.deleteRequest!==null&&o.deleteRequest.id!==me&&(me=o.deleteRequest.id,pe(o.deleteRequest.path))});function he(){i(K)||(y(B,null),y(ie,null))}async function _e(){if(i(X)){y(K,!0),y(ie,null);try{if(i(B)===`create`){let e=i(J);await U.mutate(()=>ne(e)),l()||o.onSelect(e)}else if(i(B)===`rename`&&i(H)!==null){let e=i(H),t=i(J);await U.mutate(()=>te(e,i(G))),I(e,t)}y(B,null)}catch(e){y(ie,e instanceof Error?e.message:String(e),!0)}finally{y(K,!1)}}}let ve=b(()=>i(W)===null?[]:i(w).filter(e=>Ee(e,i(W)??``))),ye=b(()=>i(W)===null?[]:i(E).filter(e=>Ee(e.folder,i(W)??``))),xe=b(()=>new Set(i(ye).map(e=>e.id))),De=b(()=>i(ye).flatMap(e=>e.references.incoming.filter(e=>!i(xe).has(e.assetId)).map(t=>`${t.assetId}.${t.field} → ${e.id}`)));async function Oe(){if(i(W)===null)return;let e=i(W),t=Ce(e),n=l()!==null&&Ee(l().folder,e);y(K,!0),y(ie,null);try{await U.mutate(()=>ue(e)),n?o.onActiveAssetDeleted?.(t):!l()&&o.selectedFolder!==null&&Ee(o.selectedFolder,e)&&o.onSelect(t),y(B,null)}catch(e){y(ie,e instanceof Error?e.message:String(e),!0)}finally{y(K,!1)}}function ke(e){l()&&(e.dataTransfer?.setData(`application/x-fundus-assets`,JSON.stringify([l().id])),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`))}var Ae=kr(),je=s(Ae),Me=a(je),Ne=R(a(Me),2),Pe=a(Ne),Fe=R(Pe,2),Ie=R(Fe,2);C(Ne),C(Me);var Z=R(Me,2),Le=a(Z);let Re;var ze=R(a(Le),2),Be=a(ze,!0);C(ze),C(Le);var Q=R(Le,2);let Ve;var He=R(a(Q),2),Ue=a(He,!0);C(He),C(Q);var We=R(Q,2),Ge=e=>{var i=Cr();k(i,``,{},{"--depth":0});var o=a(i),s=R(a(o),2),c=a(s,!0);C(s);var u=R(s,2),d=e=>{var r=Sr();t(e=>P(r,`title`,e),[()=>l().warnings.join(`
105
+ `)]),n(e,r)};h(u,e=>{l().warnings.length>0&&e(d)}),C(o),C(i),t(()=>{P(o,`title`,l().id),r(c,l().id)}),f(`dragstart`,o,ke),n(e,i)};h(We,e=>{l()?.folder===``&&e(Ge)}),m(R(We,2),16,()=>i(j),e=>e,(e,c)=>{let d=b(()=>c.split(`/`).length-1);var m=wr(),g=s(m);let v;var x=a(g);let S;var w=a(x);xr(a(w),{}),C(w);var T=R(w),E=a(T,!0);C(T);var D=R(T),A=a(D,!0);C(D),C(x),C(g);var j=R(g,2),I=e=>{var o=Cr();let s;var c=a(o),u=R(a(c),2),p=a(u,!0);C(u);var m=R(u,2),g=e=>{var r=Sr();t(e=>P(r,`title`,e),[()=>l().warnings.join(`
106
+ `)]),n(e,r)};h(m,e=>{l().warnings.length>0&&e(g)}),C(c),C(o),t(()=>{s=k(o,``,s,{"--depth":i(d)+1}),P(c,`title`,l().id),r(p,l().id)}),f(`dragstart`,c,ke),n(e,o)};h(j,e=>{l()?.folder===c&&e(I)}),t((e,t)=>{v=k(g,``,v,{"--depth":i(d)}),S=O(x,1,`row folder svelte-ftwms1`,null,S,{selected:!l()&&o.selectedFolder===c,"drop-target":i(p)===c}),P(T,`title`,c),r(E,e),r(A,t)},[()=>we(c),()=>M(c)]),u(`click`,x,()=>o.onSelect(c)),u(`contextmenu`,x,e=>le(e,c,c)),f(`dragstart`,x,e=>{y(_,c,!0),o.onFolderDragStart?.(c),e.dataTransfer?.setData(`application/x-fundus-folder`,c),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),f(`dragend`,x,()=>{y(_,null),o.onFolderDragEnd?.(),y(p,null)}),f(`dragover`,x,e=>N(e,c)),f(`dragleave`,x,()=>y(p,null)),f(`drop`,x,e=>F(e,c)),n(e,m)}),C(Z),C(je);var Ke=R(je,2),qe=e=>{{let o=b(()=>i(B)===`create`?`Create folder`:`Rename folder`),c=b(()=>i(K)?`Saving…`:i(B)===`create`?`Create`:`Rename`),l=b(()=>!i(X));ge(e,{get title(){return i(o)},get confirmLabel(){return i(c)},get confirmDisabled(){return i(l)},get busy(){return i(K)},onConfirm:()=>void _e(),onCancel:he,children:(e,o)=>{var c=Dr(),l=s(c),u=R(a(l),2);T(u),S(u,e=>y(re,e),()=>i(re)),C(l);var d=R(l,2),f=a(d,!0);C(d);var p=R(d,2),m=e=>{var o=Tr(),s=a(o,!0);C(o),t(()=>r(s,i(oe))),n(e,o)};h(p,e=>{i(oe)&&e(m)});var g=R(p,2),_=e=>{n(e,Er())};h(g,e=>{i(Y)&&e(_)});var v=R(g,2),b=e=>{var o=Tr(),s=a(o,!0);C(o),t(()=>r(s,i(ie))),n(e,o)};h(v,e=>{i(ie)&&e(b)}),t(()=>{u.disabled=i(K),r(f,i(J)||`Root`)}),ee(u,()=>i(G),e=>y(G,e)),n(e,c)},$$slots:{default:!0}})}};h(Ke,e=>{(i(B)===`create`||i(B)===`rename`)&&e(qe)});var Je=R(Ke,2),Ye=e=>{{let o=b(()=>i(K)?`Deleting…`:`Delete recursively`);ge(e,{title:`Delete folder`,get confirmLabel(){return i(o)},danger:!0,get busy(){return i(K)},onConfirm:()=>void Oe(),onCancel:he,children:(e,o)=>{var c=Or(),l=s(c),u=R(a(l)),d=a(u,!0);C(u);var f=R(u);C(l);var p=R(l,2),m=e=>{var o=Tr(),s=a(o);C(o),t(e=>r(s,`This leaves ${i(De).length??``} external reference(s) dangling:
107
+ ${e??``}`),[()=>i(De).join(`, `)]),n(e,o)};h(p,e=>{i(De).length>0&&e(m)});var g=R(p,2),_=e=>{var o=Tr(),s=a(o,!0);C(o),t(()=>r(s,i(ie))),n(e,o)};h(g,e=>{i(ie)&&e(_)}),t(()=>{r(d,i(W)),r(f,`, ${i(ve).length-1} descendant folder(s),
108
+ and ${i(ye).length??``} asset(s)? Raw and proxy files are removed.`)}),n(e,c)},$$slots:{default:!0}})}};h(Je,e=>{i(B)===`delete`&&i(W)!==null&&e(Ye)}),t(e=>{P(Pe,`title`,l()?`Create folder beside the current asset`:`Create child folder`),P(Fe,`title`,l()?`Rename the current asset folder`:`Rename selected folder`),Fe.disabled=i(ae)===null,P(Ie,`title`,l()?`Delete the current asset folder`:`Delete selected folder`),Ie.disabled=i(ae)===null,Re=O(Le,1,`row special svelte-ftwms1`,null,Re,{selected:!l()&&o.selectedFolder===null}),r(Be,i(E).length),Ve=O(Q,1,`row special svelte-ftwms1`,null,Ve,{selected:!l()&&o.selectedFolder===``,"drop-target":i(p)===``}),r(Ue,e)},[()=>M(``)]),u(`contextmenu`,je,e=>le(e,``)),u(`click`,Pe,()=>se()),u(`click`,Fe,()=>de(i(ae))),u(`click`,Ie,()=>pe(i(ae))),u(`click`,Le,()=>o.onSelect(null)),u(`click`,Q,()=>o.onSelect(``)),f(`dragover`,Q,e=>N(e,``)),f(`dragleave`,Q,()=>y(p,null)),f(`drop`,Q,e=>F(e,``)),n(e,Ae),D()}l([`contextmenu`,`click`]);var jr=N(`<button role="menuitem" class="svelte-10jgqdh">Rename</button>`),Mr=N(`<button class="danger svelte-10jgqdh" role="menuitem">Delete</button>`),Nr=N(`<hr class="svelte-10jgqdh"/>`),Pr=N(`<div class="context-menu svelte-10jgqdh" role="menu" aria-label="Library actions" tabindex="-1"><!> <!> <!> <button role="menuitem" class="svelte-10jgqdh">New Directory</button> <button role="menuitem" class="svelte-10jgqdh">Import File</button> <hr class="svelte-10jgqdh"/> <button role="menuitem" class="svelte-10jgqdh"> </button></div>`);function Fr(e,o){z(o,!0);let s=b(()=>Math.max(8,Math.min(o.x,window.innerWidth-176))),c=b(()=>3+ +!!o.onRenameDirectory+ +!!o.onDeleteDirectory),l=b(()=>!!(o.onRenameDirectory||o.onDeleteDirectory)),d=b(()=>1+ +!!i(l)),p=b(()=>i(c)*32+i(d)*9+8),m=b(()=>Math.max(8,Math.min(o.y,window.innerHeight-i(p)))),g=/Mac|iPhone|iPad/.test(navigator.platform)?`Open in Finder`:/Win/.test(navigator.platform)?`Open in Explorer`:`Open in File Manager`;function v(e){e(),o.onClose()}var y=Pr();f(`click`,_,function(...e){o.onClose?.apply(this,e)}),f(`blur`,_,function(...e){o.onClose?.apply(this,e)}),f(`keydown`,_,e=>e.key===`Escape`&&o.onClose()),f(`resize`,_,function(...e){o.onClose?.apply(this,e)}),f(`scroll`,_,function(...e){o.onClose?.apply(this,e)});let x;var S=a(y),w=e=>{var t=jr();u(`click`,t,()=>v(o.onRenameDirectory)),n(e,t)};h(S,e=>{o.onRenameDirectory&&e(w)});var T=R(S,2),E=e=>{var t=Mr();u(`click`,t,()=>v(o.onDeleteDirectory)),n(e,t)};h(T,e=>{o.onDeleteDirectory&&e(E)});var O=R(T,2),A=e=>{n(e,Nr())};h(O,e=>{i(l)&&e(A)});var j=R(O,2),M=R(j,2),N=R(M,4),P=a(N,!0);C(N),C(y),t(()=>{x=k(y,``,x,{left:`${i(s)}px`,top:`${i(m)}px`}),r(P,g)}),u(`contextmenu`,y,e=>e.preventDefault()),u(`click`,j,()=>v(o.onNewDirectory)),u(`click`,M,()=>v(o.onImportFile)),u(`click`,N,()=>v(o.onReveal)),n(e,y),D()}l([`contextmenu`,`click`]);export{vr as a,dt as c,Te as d,Ce as f,yr as i,we as l,Ar as n,_r as o,xr as r,cr as s,Fr as t,Ee as u};
@@ -1 +1 @@
1
- import{B as e,D as t,E as n,F as r,G as i,M as a,N as o,S as s,T as c,Z as l,at as u,c as d,et as f,g as p,h as m,i as h,j as g,k as _,l as v,q as y,tt as b,u as x}from"./D65cSBhe.js";import"./xihTtKlq.js";import{_ as S}from"./DkK6dXFi.js";var C=_(`<span class="color-dot svelte-151zph4"></span>`),w=_(`<span class="via svelte-151zph4"> </span>`),T=_(`<label><input type="checkbox" class="svelte-151zph4"/> <span class="marker svelte-151zph4" aria-hidden="true"><!></span> <span class="name svelte-151zph4"> </span> <!></label>`),E=_(`<div class="manifest-selector svelte-151zph4" role="group" aria-label="Manifest assignments"></div>`);function D(a,_){b(_,!0);let D=h(_,`disabled`,3,!1);function O(e){return _.passive.find(t=>t.manifest===e)}function k(e,t,n){return t?`${e}: explicitly assigned`:n?`${e}: passive member via ${n.via.join(`, `)}`:`${e}: not assigned`}var A=E();s(A,20,()=>_.manifests,e=>e,(a,s)=>{let f=l(()=>S.manifestAppearance(s)),h=l(()=>_.selected.includes(s)),b=l(()=>O(s)),E=l(()=>r(f).color??`var(--accent)`);var A=T();let j,M;var N=i(A);d(N);var P=y(N,2),F=i(P),I=i=>{var a=g();e(()=>n(a,r(f).emoji)),t(i,a)},L=e=>{t(e,C())};c(F,e=>{r(f).emoji?e(I):e(L,-1)}),u(P);var R=y(P,2),z=i(R,!0);u(R);var B=y(R,2),V=a=>{var o=w(),s=i(o);u(o),e(e=>n(s,`passive · via ${e??``}`),[()=>r(b).via.join(`, `)]),t(a,o)};c(B,e=>{r(b)&&!r(h)&&e(V)}),u(A),e((e,t)=>{j=p(A,1,`manifest-option control svelte-151zph4`,null,j,{selected:r(h),passive:r(b)!==void 0&&!r(h),disabled:D()}),v(A,`title`,e),M=m(A,``,M,{"--manifest-color":r(E)}),x(N,r(h)),N.disabled=D(),v(N,`aria-label`,t),n(z,s)},[()=>k(s,r(h),r(b)),()=>k(s,r(h),r(b))]),o(`change`,N,()=>_.onToggle(s)),t(a,A)}),u(A),t(a,A),f()}a([`change`]);export{D as t};
1
+ import{B as e,D as t,E as n,F as r,G as i,M as a,N as o,S as s,T as c,Z as l,at as u,c as d,et as f,g as p,h as m,i as h,j as g,k as _,l as v,q as y,tt as b,u as x}from"./D65cSBhe.js";import"./xihTtKlq.js";import{_ as S}from"./C-T1_s5P.js";var C=_(`<span class="color-dot svelte-151zph4"></span>`),w=_(`<span class="via svelte-151zph4"> </span>`),T=_(`<label><input type="checkbox" class="svelte-151zph4"/> <span class="marker svelte-151zph4" aria-hidden="true"><!></span> <span class="name svelte-151zph4"> </span> <!></label>`),E=_(`<div class="manifest-selector svelte-151zph4" role="group" aria-label="Manifest assignments"></div>`);function D(a,_){b(_,!0);let D=h(_,`disabled`,3,!1);function O(e){return _.passive.find(t=>t.manifest===e)}function k(e,t,n){return t?`${e}: explicitly assigned`:n?`${e}: passive member via ${n.via.join(`, `)}`:`${e}: not assigned`}var A=E();s(A,20,()=>_.manifests,e=>e,(a,s)=>{let f=l(()=>S.manifestAppearance(s)),h=l(()=>_.selected.includes(s)),b=l(()=>O(s)),E=l(()=>r(f).color??`var(--accent)`);var A=T();let j,M;var N=i(A);d(N);var P=y(N,2),F=i(P),I=i=>{var a=g();e(()=>n(a,r(f).emoji)),t(i,a)},L=e=>{t(e,C())};c(F,e=>{r(f).emoji?e(I):e(L,-1)}),u(P);var R=y(P,2),z=i(R,!0);u(R);var B=y(R,2),V=a=>{var o=w(),s=i(o);u(o),e(e=>n(s,`passive · via ${e??``}`),[()=>r(b).via.join(`, `)]),t(a,o)};c(B,e=>{r(b)&&!r(h)&&e(V)}),u(A),e((e,t)=>{j=p(A,1,`manifest-option control svelte-151zph4`,null,j,{selected:r(h),passive:r(b)!==void 0&&!r(h),disabled:D()}),v(A,`title`,e),M=m(A,``,M,{"--manifest-color":r(E)}),x(N,r(h)),N.disabled=D(),v(N,`aria-label`,t),n(z,s)},[()=>k(s,r(h),r(b)),()=>k(s,r(h),r(b))]),o(`change`,N,()=>_.onToggle(s)),t(a,A)}),u(A),t(a,A),f()}a([`change`]);export{D as t};
@@ -0,0 +1 @@
1
+ import{F as e,X as t,Y as n}from"./D65cSBhe.js";async function r(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw Error(t)}return await e.json()}async function i(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw Error(t)}}async function a(){return r(await fetch(`/api/state`,{cache:`no-store`}))}async function o(){return r(await fetch(`/api/reconcile`,{method:`POST`,cache:`no-store`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}))}async function s(e,t,n,i=[]){return r(await fetch(`/api/raw/adopt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,id:t,type:n,manifests:i})}))}async function c(e,t){return r(await fetch(`/api/raw/edited/accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,type:t})}))}async function l(e){return r(await fetch(`/api/raw/edited/dismiss`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function u(e,t,n,i,a=[]){let o=new FormData;o.set(`file`,e),o.set(`type`,t),o.set(`id`,n),o.set(`folder`,i);for(let e of a)o.append(`manifests`,e);return r(await fetch(`/api/assets`,{method:`POST`,body:o}))}async function d(e){return r(await fetch(`/api/imports`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({importer:`figma`,input:{url:e.url,format:`png`,scale:e.scale},type:e.type,id:e.id,folder:e.folder,manifests:e.manifests})}))}async function f(e,t){return r(await fetch(`/api/assets/${encodeURIComponent(e)}/reimport`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t?{input:{...t,format:`png`}}:{}})}))}async function p(e,t){let n=new FormData;return n.set(`file`,t),r(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,body:n}))}async function m(e){return r(await fetch(`/api/folders`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}))}async function h(e,t){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})}))}async function g(e,t){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({parent:t})}))}async function _(e){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function v(e,t){return r(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function y(e,t){return r(await fetch(`/api/assets/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e,folder:t})}))}async function b(e){return r(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function x(e){return r(await fetch(`/api/assets/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e})}))}async function S(e){return i(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetId:e})}))}async function C(e){return i(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folder:e})}))}async function w(e){return r(await fetch(`/api/manifests`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e})}))}async function T(e){return r(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function ee(e,t){return r(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}var te=class{#e=Promise.resolve();#t=new Map;enqueue(e){let t=this.#e.then(e,e);return this.#e=t.then(()=>{},()=>{}),t}coalesce(e,t){let n=this.#t.get(e);if(n)return n;let r=this.enqueue(t).finally(()=>{this.#t.get(e)===r&&this.#t.delete(e)});return this.#t.set(e,r),r}},E=new class{#e=new te;#t=t(null);get state(){return e(this.#t)}set state(e){n(this.#t,e,!0)}#n=t(!1);get saving(){return e(this.#n)}set saving(e){n(this.#n,e,!0)}#r=t(null);get error(){return e(this.#r)}set error(e){n(this.#r,e,!0)}#i=t(!1);get loaded(){return e(this.#i)}set loaded(e){n(this.#i,e,!0)}async refresh(){return this.#a(a)}reconcile(){return this.#a(o,!0)}#a(e,t=!1){let n=async()=>{try{this.state=await e(),this.error=null}catch(e){this.error=e instanceof Error?e.message:String(e)}finally{this.loaded=!0}};return t?this.#e.coalesce(`reconcile`,n):this.#e.enqueue(n)}mutate(e){return this.#e.enqueue(async()=>{this.saving=!0,this.error=null;try{let t=await e();return this.state=t,t}catch(e){throw this.error=e instanceof Error?e.message:String(e),e}finally{this.saving=!1}})}get manifestNames(){return Object.keys(this.state?.library.manifests??{}).sort()}manifestAppearance(e){return this.state?.library.manifests[e]??{}}get generalIssues(){return this.state?.issues.filter(e=>e.assetId===void 0).map(e=>e.message)??[]}assetById(e){return this.state?.assets.find(t=>t.id===e)??null}},D=`[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}`;RegExp(`^(?:\\.fundus-replace-${D}\\.tmp|\\.fundus-delete(?:-assets)?-${D})$`,`i`),RegExp(`\\.fundus-(?:replace-)?${D}$`,`i`);var O=[`preload`,`release`,`entries`,`constructor`,`prototype`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`],k=/^[a-z][A-Za-z0-9]*$/;function A(e){return k.test(e)?O.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. "navigationPanel").`}function j(e){return k.test(e)?O.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. "mainCatalog").`}var M={type:`audio`,accepts:[`mp3`,`wav`,`m4a`,`ogg`,`flac`],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Audio parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Audio parameters need a non-empty string "preset".`);return{preset:t.preset}}};function N(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.$asset==`string`&&e.$asset!==``}var P={keyColor:[0,1,0],colorCutoff:.2,colorFeathering:.33,maskFeathering:1,sharpening:.5,despill:1,despillLuminanceAdd:.2},F=[`colorCutoff`,`colorFeathering`,`maskFeathering`,`sharpening`,`despill`,`despillLuminanceAdd`];function I(e){return Math.min(1,Math.max(0,e))}function L(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`"chromaKey" must be an object.`);let t=e,n=t.keyColor;if(!Array.isArray(n)||n.length!==3||n.some(e=>typeof e!=`number`||!Number.isFinite(e)))throw Error(`"chromaKey.keyColor" must be an array of three numbers (RGB, 0–1 each).`);let r={keyColor:[I(n[0]),I(n[1]),I(n[2])]};for(let e of F){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))throw Error(`"chromaKey.${e}" must be a number (0–1).`);r[e]=I(n)}return r}var R=[`mp4`,`mov`,`webm`,`m4v`];function z(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} parameters must be an object.`);let n=t;if(typeof n.preset!=`string`||n.preset.length===0)throw Error(`${e} parameters need a non-empty string "preset".`);if(n.maxWidth!==void 0&&(typeof n.maxWidth!=`number`||!Number.isInteger(n.maxWidth)||n.maxWidth<=0))throw Error(`${e} "maxWidth" must be a positive integer when set.`);return{preset:n.preset,...n.maxWidth===void 0?{}:{maxWidth:n.maxWidth}}}var B={type:`video`,accepts:[...R],defaultParameters:()=>({preset:`default`}),validateParameters(e){return z(`Video`,e)}};function V(e,t){if(t!==void 0){if(!N(t))throw Error(`"${e}" must be an asset reference ({ "$asset": "<id>" }).`);return{$asset:t.$asset}}}var H={type:`chroma-key-video`,accepts:[...R],defaultParameters:()=>({preset:`default`,chromaKey:{...P,keyColor:[...P.keyColor]}}),validateParameters(e){let t=z(`Chroma-key-video`,e),n=e,r=L(n.chromaKey),i=V(`mask`,n.mask),a=V(`fallback`,n.fallback);return{...t,chromaKey:r,...i===void 0?{}:{mask:i},...a===void 0?{}:{fallback:a}}},collectReferences(e){let t=[];return e.mask&&t.push({field:`mask`,assetId:e.mask.$asset,expectedTypes:[`image`]}),e.fallback&&t.push({field:`fallback`,assetId:e.fallback.$asset,expectedTypes:[`image`]}),t},processingParameters(e){return{preset:e.preset,...e.maxWidth===void 0?{}:{maxWidth:e.maxWidth}}}},U=[`png`,`jpg`,`jpeg`,`webp`,`avif`],W={type:`image`,accepts:[...U],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Image parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Image parameters need a non-empty string "preset".`);if(t.targetWidth!==void 0&&(typeof t.targetWidth!=`number`||!Number.isInteger(t.targetWidth)||t.targetWidth<=0))throw Error(`Image "targetWidth" must be a positive integer when set.`);return{preset:t.preset,...t.targetWidth===void 0?{}:{targetWidth:t.targetWidth}}}},G=[`nine`,`three-horizontal`,`three-vertical`,`one`];function K(){return{top:0,right:0,bottom:0,left:0}}function q(e){return{horizontal:e===`nine`||e===`three-horizontal`,vertical:e===`nine`||e===`three-vertical`}}function J(e,t,n,r){return t===`left`?n-e.right:t===`right`?n-e.left:t===`top`?r-e.bottom:r-e.top}function Y(e,t,n,r){return J(e,t,n,r)-1}function X(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Slice ${e} must be an object with top/right/bottom/left.`);let n=t,r=[`top`,`right`,`bottom`,`left`],i=K();for(let t of r){let r=n[t];if(typeof r!=`number`||!Number.isInteger(r)||r<0)throw Error(`Slice ${e}.${t} must be a non-negative integer.`);i[t]=r}return i}var Z={type:`slice`,accepts:[...U],defaultParameters:()=>({mode:`nine`,insets:K(),pixelRatio:1,preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice parameters must be an object.`);let t=e;if(typeof t.mode!=`string`||!G.includes(t.mode))throw Error(`Slice "mode" must be one of ${G.map(e=>`'${e}'`).join(` | `)}.`);let n=X(`insets`,t.insets);if(typeof t.pixelRatio!=`number`||!Number.isInteger(t.pixelRatio)||t.pixelRatio<1)throw Error(`Slice "pixelRatio" must be an integer ≥ 1.`);let r=t.overdraw===void 0?void 0:X(`overdraw`,t.overdraw);if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Slice parameters need a non-empty string "preset".`);return{mode:t.mode,insets:n,pixelRatio:t.pixelRatio,...r===void 0?{}:{overdraw:r},preset:t.preset}}},Q=new class{#e=new Map;register(e){if(this.#e.has(e.type))throw Error(`Plugin type "${e.type}" is already registered.`);this.#e.set(e.type,e)}has(e){return this.#e.has(e)}values(){return[...this.#e.values()]}types(){return[...this.#e.keys()]}project(e,t){let n=Object.create(null);for(let r of this.#e.keys()){if(!Object.hasOwn(e,r))throw Error(`Registered plugin "${r}" has no ${t}.`);n[r]=e[r]}return n}};Q.register(W),Q.register(Z),Q.register(B),Q.register(H),Q.register(M);var $=Q.values();function ne(e=$){return[...new Set(e.flatMap(e=>e.accepts))].sort().map(e=>`.${e}`)}function re(e,t=$){return t.find(t=>t.type===e)?.accepts.map(e=>`.${e}`).sort()??[]}function ie(e,t=$){let n=e.slice(e.lastIndexOf(`.`)+1).toLowerCase();return t.filter(e=>e.accepts.includes(n)).map(e=>e.type)}function ae(e){let t=e.replace(/\.[^.]+$/,``).replace(/(?:@|[-_])\dx$/i,``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[^a-zA-Z0-9]+/).filter(Boolean);if(t.length===0)return`asset`;let n=t.map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``).replace(/^[0-9]+/,``);return n?n.charAt(0).toLowerCase()+n.slice(1):`asset`}export{v as A,x as C,d as D,l as E,S as F,C as I,u as L,f as M,h as N,y as O,p as P,b as S,T,E as _,Q as a,m as b,J as c,W as d,H as f,j as g,A as h,ie as i,ee as j,g as k,Y as l,M as m,re as n,Z as o,B as p,ae as r,K as s,ne as t,q as u,c as v,_ as w,w as x,s as y};
@@ -1 +1 @@
1
- import"./D65cSBhe.js";import{a as e,r as t}from"./RVmTMq_g.js";var n={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};t.updated.check;var r=n;export{r as t};
1
+ import"./D65cSBhe.js";import{a as e,r as t}from"./B1UabfW7.js";var n={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};t.updated.check;var r=n;export{r as t};
@@ -0,0 +1,4 @@
1
+ I@��VwU>��ͥ�Hw-I3��#�n��v ��o����0{�,� �UCiK~Gb�/�� =�,%ɼ�5?��y�z]����|���K�
2
+ � �
3
+ "�-
4
+ IL�� �HZx?������ɞ�٪��u�y!n^Xx���G��EW��5
@@ -0,0 +1 @@
1
+ import{h as e}from"./C-T1_s5P.js";function t(e){return e.length===0?[]:[e.includes(`main`)?`main`:e[0]]}function n(t,n){return e(t)??(n.has(t)?`An asset with id "${t}" already exists.`:null)}function r(e,n,r=[]){let i=e;for(let a of n)a.kind===`unsupported`||Object.hasOwn(e,a.token)||(i===e&&(i={...e}),i[a.token]={id:a.kind===`new`?a.proposedId:a.assetId,type:a.kind===`new`?a.compatibleTypes[0]??``:a.compatibleTypes.includes(a.currentType)?a.currentType:``,manifests:a.kind===`new`?t(r):[],error:null,busy:!1});return i}export{r as n,n as r,t};