@phtngyn/cms 0.2.0-beta.7 → 0.3.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 (524) hide show
  1. package/LICENSE +18 -10
  2. package/README.md +59 -401
  3. package/drizzle/20261003215543_initial/migration.sql +251 -0
  4. package/drizzle/20261003215543_initial/snapshot.json +1941 -0
  5. package/package.json +75 -71
  6. package/src/Authoring.d.ts +41 -49
  7. package/src/Authoring.js +1 -1
  8. package/src/Blocks-BrxSemnd.js +40 -0
  9. package/src/Client.d.ts +8186 -0
  10. package/src/Client.js +41 -0
  11. package/src/Collections.d.ts +142 -0
  12. package/src/Collections.js +142 -0
  13. package/src/Config-CMiwciub.js +130 -0
  14. package/src/Config.d.ts +172 -0
  15. package/src/Config.js +2 -0
  16. package/src/Configuration-Dk2k3OIc.js +73 -0
  17. package/src/DataTransfer-BmECvPHB.js +488 -0
  18. package/src/Database-DSsNCGft.d.ts +3 -0
  19. package/src/Delivery.d.ts +28 -0
  20. package/src/Delivery.js +7 -0
  21. package/src/Document-CKXMSEf1.js +293 -0
  22. package/src/Document-TgwYKJZM.d.ts +220 -0
  23. package/src/DocumentRenderer-Wz2xaNyf.js +394 -0
  24. package/src/EditorSchema-wrDv-id6.js +296 -0
  25. package/src/Fields-BegSgYhj.d.ts +166 -0
  26. package/src/Fields-ioGaMEh9.js +130 -0
  27. package/src/Forms-BuKAXQxr.d.ts +203 -0
  28. package/src/Forms.d.ts +48 -11
  29. package/src/Forms.js +342 -7
  30. package/src/I18n-Ckf9h0rC.js +154 -0
  31. package/src/I18n.d.ts +45 -2
  32. package/src/I18n.js +2 -1
  33. package/src/Image-CJWPLnhP.js +110 -0
  34. package/src/Links-CJYyy7rC.js +28 -0
  35. package/src/Links-Dx1yOni8.d.ts +28 -0
  36. package/src/Locales-Ch7a5xuA.js +67 -0
  37. package/src/Locales-jwbmJaOp.d.ts +43 -0
  38. package/src/Locales.d.ts +3 -0
  39. package/src/Locales.js +3 -0
  40. package/src/Media-BQ0uL4w7.d.ts +15 -0
  41. package/src/Media-DSyvd14o.js +87 -0
  42. package/src/Module.d.ts +2 -10
  43. package/src/Module.js +1039 -162
  44. package/src/Operations.d.ts +57 -0
  45. package/src/Operations.js +263 -0
  46. package/src/People-DvNZauWw.js +69 -0
  47. package/src/PreviewFocus-C_EelZO5.js +104 -0
  48. package/src/Query-C0kGJF5_.d.ts +261 -0
  49. package/src/RevisionPreview-IVwbJ9Wy.js +133 -0
  50. package/src/Routes-BaZvm2LE.js +126 -0
  51. package/src/Routes-DM1rRp3r.d.ts +15 -0
  52. package/src/S3MediaObjects-y-WacEi9.js +193 -0
  53. package/src/Seo-BcpqxoAs.d.ts +57 -0
  54. package/src/Seo-CjNUtUkj.js +254 -0
  55. package/src/StudioApi-CXLwwocX.js +833 -0
  56. package/src/StudioErrors-T5zLGQ1M.js +117 -0
  57. package/src/StudioErrors-kq-E44lQ.d.ts +104 -0
  58. package/src/StudioServer.d.ts +20 -0
  59. package/src/StudioServer.js +34 -0
  60. package/src/answers-DcTg0Xv2.js +41 -0
  61. package/src/cli.js +681 -187
  62. package/src/contracts-rprW3ZOB.js +130 -0
  63. package/src/forms-3xuf0Ym7.d.ts +206 -0
  64. package/src/localeConfiguration-BPbkLi7-.js +32 -0
  65. package/src/localeContext-DhF3SPvM.js +59 -0
  66. package/src/locales-6OD4XGIZ.js +12 -0
  67. package/src/nuxtDelivery-BYX_Cddb.js +466 -0
  68. package/src/plugin-DTYuDaQu.js +7171 -0
  69. package/src/previewContext-dt3ZUh-w.js +4 -0
  70. package/src/previewRegions-CXjk5cbP.js +145 -0
  71. package/src/previewSource-fb-q3ESM.js +144 -0
  72. package/src/rendering-D9LVeEKX.js +47 -0
  73. package/src/rolldown-runtime-8H4AJuhK.js +14 -0
  74. package/src/runtime/CmsImage.js +38 -0
  75. package/src/runtime/DocumentPage.vue +10 -0
  76. package/src/runtime/DocumentPageContent.js +48 -0
  77. package/src/runtime/DocumentRenderer.d.ts +129 -0
  78. package/src/runtime/DocumentRenderer.js +2 -0
  79. package/src/runtime/api.js +48 -6
  80. package/src/runtime/delivery/useCmsDocument.js +2 -0
  81. package/src/runtime/delivery/useCmsDocumentQuery.js +2 -0
  82. package/src/runtime/delivery/useCmsDocumentSeo.js +2 -114
  83. package/src/runtime/delivery/useCmsLocale.js +10 -0
  84. package/src/runtime/plugin.js +2 -40
  85. package/src/runtime/preview.css +85 -0
  86. package/src/runtime/preview.js +277 -0
  87. package/src/runtime/previewSource.js +82 -0
  88. package/src/runtime/revisionPrivacy.js +13 -0
  89. package/src/runtime/studio.js +10 -0
  90. package/src/runtime/studioIcons.js +36 -0
  91. package/src/validation-3pggwcnm.js +396 -0
  92. package/src/validation-DpUwPC8Y.js +224 -0
  93. package/studio/THIRD-PARTY-LICENSES.md +2406 -0
  94. package/studio/chunks/AccountPage-DL3DitDM.js +288 -0
  95. package/studio/chunks/AccountPage-DL3DitDM.js.br +0 -0
  96. package/studio/chunks/AccountPage-DL3DitDM.js.gz +0 -0
  97. package/studio/chunks/ActivityPage-CLqVUqTh.js +584 -0
  98. package/studio/chunks/ActivityPage-CLqVUqTh.js.br +0 -0
  99. package/studio/chunks/ActivityPage-CLqVUqTh.js.gz +0 -0
  100. package/studio/chunks/Alert-D0D24z_a.js +335 -0
  101. package/studio/chunks/Alert-D0D24z_a.js.br +0 -0
  102. package/studio/chunks/Alert-D0D24z_a.js.gz +0 -0
  103. package/studio/chunks/Badge-BBFs88TI.js +346 -0
  104. package/studio/chunks/Badge-BBFs88TI.js.br +0 -0
  105. package/studio/chunks/Badge-BBFs88TI.js.gz +0 -0
  106. package/studio/chunks/Button-BT3ztSPx.js +14319 -0
  107. package/studio/chunks/Button-BT3ztSPx.js.br +0 -0
  108. package/studio/chunks/Button-BT3ztSPx.js.gz +0 -0
  109. package/studio/chunks/Collapsible-CKnEYIlp.js +246 -0
  110. package/studio/chunks/Collapsible-CKnEYIlp.js.br +0 -0
  111. package/studio/chunks/Collapsible-CKnEYIlp.js.gz +0 -0
  112. package/studio/chunks/ContentInventory-D7nsFA6U.js +1745 -0
  113. package/studio/chunks/ContentInventory-D7nsFA6U.js.br +0 -0
  114. package/studio/chunks/ContentInventory-D7nsFA6U.js.gz +0 -0
  115. package/studio/chunks/ContentPage-DCxt6BeD.js +18 -0
  116. package/studio/chunks/ContentPage-DCxt6BeD.js.br +0 -0
  117. package/studio/chunks/ContentPage-DCxt6BeD.js.gz +0 -0
  118. package/studio/chunks/DashboardSearch-DjyMjJwF.js +2413 -0
  119. package/studio/chunks/DashboardSearch-DjyMjJwF.js.br +0 -0
  120. package/studio/chunks/DashboardSearch-DjyMjJwF.js.gz +0 -0
  121. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js +26063 -0
  122. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.br +0 -0
  123. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.gz +0 -0
  124. package/studio/chunks/DropdownMenu-CA9fB0uZ.js +4400 -0
  125. package/studio/chunks/DropdownMenu-CA9fB0uZ.js.br +0 -0
  126. package/studio/chunks/DropdownMenu-CA9fB0uZ.js.gz +0 -0
  127. package/studio/chunks/EditorPage-D_PAYEE4.js +7799 -0
  128. package/studio/chunks/EditorPage-D_PAYEE4.js.br +0 -0
  129. package/studio/chunks/EditorPage-D_PAYEE4.js.gz +0 -0
  130. package/studio/chunks/FormField-CgM6l2Yn.js +198 -0
  131. package/studio/chunks/FormField-CgM6l2Yn.js.br +0 -0
  132. package/studio/chunks/FormField-CgM6l2Yn.js.gz +0 -0
  133. package/studio/chunks/HelpPage-C-vrFcT_.js +552 -0
  134. package/studio/chunks/HelpPage-C-vrFcT_.js.br +0 -0
  135. package/studio/chunks/HelpPage-C-vrFcT_.js.gz +0 -0
  136. package/studio/chunks/Kbd-Ot7TIhVZ.js +271 -0
  137. package/studio/chunks/Kbd-Ot7TIhVZ.js.br +0 -0
  138. package/studio/chunks/Kbd-Ot7TIhVZ.js.gz +0 -0
  139. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js +101 -0
  140. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.br +0 -0
  141. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.gz +0 -0
  142. package/studio/chunks/MediaPage-D-jaWtdl.js +923 -0
  143. package/studio/chunks/MediaPage-D-jaWtdl.js.br +0 -0
  144. package/studio/chunks/MediaPage-D-jaWtdl.js.gz +0 -0
  145. package/studio/chunks/MediaPicker-BZs2wUFz.js +837 -0
  146. package/studio/chunks/MediaPicker-BZs2wUFz.js.br +0 -0
  147. package/studio/chunks/MediaPicker-BZs2wUFz.js.gz +0 -0
  148. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js +1173 -0
  149. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.br +0 -0
  150. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.gz +0 -0
  151. package/studio/chunks/Modal-D6hSvxHd.js +265 -0
  152. package/studio/chunks/Modal-D6hSvxHd.js.br +0 -0
  153. package/studio/chunks/Modal-D6hSvxHd.js.gz +0 -0
  154. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js +277 -0
  155. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.br +0 -0
  156. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.gz +0 -0
  157. package/studio/chunks/Pagination-D9BSo5H2.js +573 -0
  158. package/studio/chunks/Pagination-D9BSo5H2.js.br +0 -0
  159. package/studio/chunks/Pagination-D9BSo5H2.js.gz +0 -0
  160. package/studio/chunks/PeoplePage-CWIXitBD.js +783 -0
  161. package/studio/chunks/PeoplePage-CWIXitBD.js.br +0 -0
  162. package/studio/chunks/PeoplePage-CWIXitBD.js.gz +0 -0
  163. package/studio/chunks/Popover-B63bkTMS.js +128 -0
  164. package/studio/chunks/Popover-B63bkTMS.js.br +0 -0
  165. package/studio/chunks/Popover-B63bkTMS.js.gz +0 -0
  166. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js +255 -0
  167. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.br +0 -0
  168. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.gz +0 -0
  169. package/studio/chunks/Routes-DLYHmulE.js +102 -0
  170. package/studio/chunks/Routes-DLYHmulE.js.br +0 -0
  171. package/studio/chunks/Routes-DLYHmulE.js.gz +0 -0
  172. package/studio/chunks/RovingFocusItem-QZNg-wWF.js +95 -0
  173. package/studio/chunks/RovingFocusItem-QZNg-wWF.js.br +0 -0
  174. package/studio/chunks/RovingFocusItem-QZNg-wWF.js.gz +0 -0
  175. package/studio/chunks/ScheduledPage-C0hqrkr5.js +332 -0
  176. package/studio/chunks/ScheduledPage-C0hqrkr5.js.br +0 -0
  177. package/studio/chunks/ScheduledPage-C0hqrkr5.js.gz +0 -0
  178. package/studio/chunks/Search-BEgCe9Aj.js +14646 -0
  179. package/studio/chunks/Search-BEgCe9Aj.js.br +0 -0
  180. package/studio/chunks/Search-BEgCe9Aj.js.gz +0 -0
  181. package/studio/chunks/Select-B50WZMW-.js +2145 -0
  182. package/studio/chunks/Select-B50WZMW-.js.br +0 -0
  183. package/studio/chunks/Select-B50WZMW-.js.gz +0 -0
  184. package/studio/chunks/SelectMenu-DSweWGMz.js +2109 -0
  185. package/studio/chunks/SelectMenu-DSweWGMz.js.br +0 -0
  186. package/studio/chunks/SelectMenu-DSweWGMz.js.gz +0 -0
  187. package/studio/chunks/SeoPage-CNNxGe4h.js +846 -0
  188. package/studio/chunks/SeoPage-CNNxGe4h.js.br +0 -0
  189. package/studio/chunks/SeoPage-CNNxGe4h.js.gz +0 -0
  190. package/studio/chunks/Skeleton-COz8dcrw.js +39 -0
  191. package/studio/chunks/Skeleton-COz8dcrw.js.br +2 -0
  192. package/studio/chunks/Skeleton-COz8dcrw.js.gz +0 -0
  193. package/studio/chunks/Slideover-QMMHAAys.js +289 -0
  194. package/studio/chunks/Slideover-QMMHAAys.js.br +0 -0
  195. package/studio/chunks/Slideover-QMMHAAys.js.gz +0 -0
  196. package/studio/chunks/StudioPage-ngEIDr5d.js +80 -0
  197. package/studio/chunks/StudioPage-ngEIDr5d.js.br +0 -0
  198. package/studio/chunks/StudioPage-ngEIDr5d.js.gz +0 -0
  199. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js +2524 -0
  200. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.br +0 -0
  201. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.gz +0 -0
  202. package/studio/chunks/Switch-qKl1aDn7.js +484 -0
  203. package/studio/chunks/Switch-qKl1aDn7.js.br +0 -0
  204. package/studio/chunks/Switch-qKl1aDn7.js.gz +0 -0
  205. package/studio/chunks/ToolPage-DxoVAJVk.js +29 -0
  206. package/studio/chunks/ToolPage-DxoVAJVk.js.br +0 -0
  207. package/studio/chunks/ToolPage-DxoVAJVk.js.gz +0 -0
  208. package/studio/chunks/Tooltip-Bu15m_DB.js +693 -0
  209. package/studio/chunks/Tooltip-Bu15m_DB.js.br +0 -0
  210. package/studio/chunks/Tooltip-Bu15m_DB.js.gz +0 -0
  211. package/studio/chunks/TrashPage-lhqLLdoG.js +12 -0
  212. package/studio/chunks/TrashPage-lhqLLdoG.js.br +0 -0
  213. package/studio/chunks/TrashPage-lhqLLdoG.js.gz +0 -0
  214. package/studio/chunks/VersionsPage-Cqy6UAp9.js +2349 -0
  215. package/studio/chunks/VersionsPage-Cqy6UAp9.js.br +0 -0
  216. package/studio/chunks/VersionsPage-Cqy6UAp9.js.gz +0 -0
  217. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js +113 -0
  218. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.br +0 -0
  219. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.gz +0 -0
  220. package/studio/chunks/arrays-CUJkmV4I.js +10 -0
  221. package/studio/chunks/arrays-CUJkmV4I.js.br +0 -0
  222. package/studio/chunks/arrays-CUJkmV4I.js.gz +0 -0
  223. package/studio/chunks/base-DkTekJe8.js +213 -0
  224. package/studio/chunks/base-DkTekJe8.js.br +0 -0
  225. package/studio/chunks/base-DkTekJe8.js.gz +0 -0
  226. package/studio/chunks/content-DUGl3N4d.js +6012 -0
  227. package/studio/chunks/content-DUGl3N4d.js.br +0 -0
  228. package/studio/chunks/content-DUGl3N4d.js.gz +0 -0
  229. package/studio/chunks/destinations-DPIQVQa6.js +227 -0
  230. package/studio/chunks/destinations-DPIQVQa6.js.br +0 -0
  231. package/studio/chunks/destinations-DPIQVQa6.js.gz +0 -0
  232. package/studio/chunks/en-073cjKW4.js +152 -0
  233. package/studio/chunks/en-073cjKW4.js.br +0 -0
  234. package/studio/chunks/en-073cjKW4.js.gz +0 -0
  235. package/studio/chunks/en-Bn8mxPuf.js +134 -0
  236. package/studio/chunks/en-Bn8mxPuf.js.br +0 -0
  237. package/studio/chunks/en-Bn8mxPuf.js.gz +0 -0
  238. package/studio/chunks/en-C9OiaUDZ.js +251 -0
  239. package/studio/chunks/en-C9OiaUDZ.js.br +0 -0
  240. package/studio/chunks/en-C9OiaUDZ.js.gz +0 -0
  241. package/studio/chunks/en-CHAR6jzx.js +147 -0
  242. package/studio/chunks/en-CHAR6jzx.js.br +0 -0
  243. package/studio/chunks/en-CHAR6jzx.js.gz +0 -0
  244. package/studio/chunks/en-Cq4N1vEF.js +93 -0
  245. package/studio/chunks/en-Cq4N1vEF.js.br +2 -0
  246. package/studio/chunks/en-Cq4N1vEF.js.gz +0 -0
  247. package/studio/chunks/en-D2hRqlse.js +140 -0
  248. package/studio/chunks/en-D2hRqlse.js.br +0 -0
  249. package/studio/chunks/en-D2hRqlse.js.gz +0 -0
  250. package/studio/chunks/en-DiUC3-j6.js +144 -0
  251. package/studio/chunks/en-DiUC3-j6.js.br +0 -0
  252. package/studio/chunks/en-DiUC3-j6.js.gz +0 -0
  253. package/studio/chunks/english-Cs_Adu-u.js +8 -0
  254. package/studio/chunks/english-Cs_Adu-u.js.br +0 -0
  255. package/studio/chunks/english-Cs_Adu-u.js.gz +0 -0
  256. package/studio/chunks/esm-D6DqSiL1.js +752 -0
  257. package/studio/chunks/esm-D6DqSiL1.js.br +0 -0
  258. package/studio/chunks/esm-D6DqSiL1.js.gz +0 -0
  259. package/studio/chunks/externalRequest-CTzr2nDq.js +23 -0
  260. package/studio/chunks/externalRequest-CTzr2nDq.js.br +0 -0
  261. package/studio/chunks/externalRequest-CTzr2nDq.js.gz +0 -0
  262. package/studio/chunks/iconify-DR9ryCPv.js +1007 -0
  263. package/studio/chunks/iconify-DR9ryCPv.js.br +0 -0
  264. package/studio/chunks/iconify-DR9ryCPv.js.gz +0 -0
  265. package/studio/chunks/icons-D2MsAaXq.js +183 -0
  266. package/studio/chunks/icons-D2MsAaXq.js.br +0 -0
  267. package/studio/chunks/icons-D2MsAaXq.js.gz +0 -0
  268. package/studio/chunks/leaveGuards-D22fTGgr.js +26 -0
  269. package/studio/chunks/leaveGuards-D22fTGgr.js.br +0 -0
  270. package/studio/chunks/leaveGuards-D22fTGgr.js.gz +0 -0
  271. package/studio/chunks/lucideIcons-EyqyPBsX.js +238 -0
  272. package/studio/chunks/lucideIcons-EyqyPBsX.js.br +0 -0
  273. package/studio/chunks/lucideIcons-EyqyPBsX.js.gz +0 -0
  274. package/studio/chunks/mediaRoute--8cY8rUe.js +17 -0
  275. package/studio/chunks/mediaRoute--8cY8rUe.js.br +0 -0
  276. package/studio/chunks/mediaRoute--8cY8rUe.js.gz +0 -0
  277. package/studio/chunks/newDocumentPlanning-C26DHpvh.js +77 -0
  278. package/studio/chunks/newDocumentPlanning-C26DHpvh.js.br +0 -0
  279. package/studio/chunks/newDocumentPlanning-C26DHpvh.js.gz +0 -0
  280. package/studio/chunks/notifications-OKOLc40v.js +110 -0
  281. package/studio/chunks/notifications-OKOLc40v.js.br +0 -0
  282. package/studio/chunks/notifications-OKOLc40v.js.gz +0 -0
  283. package/studio/chunks/operations-CjNHyrEX.js +57 -0
  284. package/studio/chunks/operations-CjNHyrEX.js.br +0 -0
  285. package/studio/chunks/operations-CjNHyrEX.js.gz +0 -0
  286. package/studio/chunks/overlay-DnqFLZTc.js +1733 -0
  287. package/studio/chunks/overlay-DnqFLZTc.js.br +0 -0
  288. package/studio/chunks/overlay-DnqFLZTc.js.gz +0 -0
  289. package/studio/chunks/presentation-DF83w0hE.js +57 -0
  290. package/studio/chunks/presentation-DF83w0hE.js.br +0 -0
  291. package/studio/chunks/presentation-DF83w0hE.js.gz +0 -0
  292. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js +4557 -0
  293. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.br +0 -0
  294. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.gz +0 -0
  295. package/studio/chunks/searchPresentation-DFwxQkt3.js +76 -0
  296. package/studio/chunks/searchPresentation-DFwxQkt3.js.br +0 -0
  297. package/studio/chunks/searchPresentation-DFwxQkt3.js.gz +0 -0
  298. package/studio/chunks/status-DQv6ihkU.js +38 -0
  299. package/studio/chunks/status-DQv6ihkU.js.br +0 -0
  300. package/studio/chunks/status-DQv6ihkU.js.gz +0 -0
  301. package/studio/chunks/studioContext-I8HozGU1.js +4953 -0
  302. package/studio/chunks/studioContext-I8HozGU1.js.br +0 -0
  303. package/studio/chunks/studioContext-I8HozGU1.js.gz +0 -0
  304. package/studio/chunks/studioQueries-BR-9NT5F.js +73 -0
  305. package/studio/chunks/studioQueries-BR-9NT5F.js.br +0 -0
  306. package/studio/chunks/studioQueries-BR-9NT5F.js.gz +0 -0
  307. package/studio/chunks/studioSearch-ByaL-QpM.js +1095 -0
  308. package/studio/chunks/studioSearch-ByaL-QpM.js.br +0 -0
  309. package/studio/chunks/studioSearch-ByaL-QpM.js.gz +0 -0
  310. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js +62 -0
  311. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.br +0 -0
  312. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.gz +0 -0
  313. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js +189 -0
  314. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.br +0 -0
  315. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.gz +0 -0
  316. package/studio/chunks/useDocumentMessage-BAWvc38w.js +16 -0
  317. package/studio/chunks/useDocumentMessage-BAWvc38w.js.br +3 -0
  318. package/studio/chunks/useDocumentMessage-BAWvc38w.js.gz +0 -0
  319. package/studio/chunks/useFilter-DzyiTR7f.js +87 -0
  320. package/studio/chunks/useFilter-DzyiTR7f.js.br +0 -0
  321. package/studio/chunks/useFilter-DzyiTR7f.js.gz +0 -0
  322. package/studio/chunks/useFormControl-CL7sSCUo.js +8 -0
  323. package/studio/chunks/useFormControl-CL7sSCUo.js.br +0 -0
  324. package/studio/chunks/useFormControl-CL7sSCUo.js.gz +0 -0
  325. package/studio/chunks/useGraceArea-Chcy25IQ.js +154 -0
  326. package/studio/chunks/useGraceArea-Chcy25IQ.js.br +0 -0
  327. package/studio/chunks/useGraceArea-Chcy25IQ.js.gz +0 -0
  328. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js +44 -0
  329. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.br +8 -0
  330. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.gz +0 -0
  331. package/studio/chunks/useLinkCopy-CMjQteCy.js +35 -0
  332. package/studio/chunks/useLinkCopy-CMjQteCy.js.br +0 -0
  333. package/studio/chunks/useLinkCopy-CMjQteCy.js.gz +0 -0
  334. package/studio/chunks/usePointerMotion-DwRcwBNQ.js +16 -0
  335. package/studio/chunks/usePointerMotion-DwRcwBNQ.js.br +0 -0
  336. package/studio/chunks/usePointerMotion-DwRcwBNQ.js.gz +0 -0
  337. package/studio/chunks/useStudioNavigation-CLwtSYpb.js +298 -0
  338. package/studio/chunks/useStudioNavigation-CLwtSYpb.js.br +0 -0
  339. package/studio/chunks/useStudioNavigation-CLwtSYpb.js.gz +0 -0
  340. package/studio/chunks/useStudioPages-DR9qmYLg.js +79 -0
  341. package/studio/chunks/useStudioPages-DR9qmYLg.js.br +0 -0
  342. package/studio/chunks/useStudioPages-DR9qmYLg.js.gz +0 -0
  343. package/studio/chunks/utils-mdScC0v0.js +59 -0
  344. package/studio/chunks/utils-mdScC0v0.js.br +0 -0
  345. package/studio/chunks/utils-mdScC0v0.js.gz +0 -0
  346. package/studio/chunks/virtualizer-D1S0bZ4t.js +781 -0
  347. package/studio/chunks/virtualizer-D1S0bZ4t.js.br +0 -0
  348. package/studio/chunks/virtualizer-D1S0bZ4t.js.gz +0 -0
  349. package/studio/help/64f767fe29c2-save-and-publish.svg +7 -0
  350. package/studio/host.css +1 -1
  351. package/studio/host.css.br +0 -0
  352. package/studio/host.css.gz +0 -0
  353. package/studio/host.js +8757 -39178
  354. package/studio/host.js.br +0 -0
  355. package/studio/host.js.gz +0 -0
  356. package/CHANGELOG.md +0 -13
  357. package/bin/cms.mjs +0 -2
  358. package/src/ApplicationTypes.d.ts +0 -84
  359. package/src/ApplicationTypes.js +0 -1
  360. package/src/Configuration-Da5B2PVH.js +0 -1191
  361. package/src/Configuration-Da5B2PVH.js.map +0 -1
  362. package/src/Configuration.d.ts +0 -82
  363. package/src/Configuration.js +0 -8
  364. package/src/Configuration.js.map +0 -1
  365. package/src/Content.d.ts +0 -68
  366. package/src/Content.js +0 -373
  367. package/src/Content.js.map +0 -1
  368. package/src/ContentTransfer-BxwswWn3.js +0 -86
  369. package/src/ContentTransfer-BxwswWn3.js.map +0 -1
  370. package/src/ContentTransfer-Z9FHyLez.d.ts +0 -72
  371. package/src/DocumentEngine-hh_IGPXO.js +0 -978
  372. package/src/DocumentEngine-hh_IGPXO.js.map +0 -1
  373. package/src/DocumentModel.d.ts +0 -52
  374. package/src/DocumentModel.js +0 -66
  375. package/src/DocumentModel.js.map +0 -1
  376. package/src/Forms-CX-hwmJF.js +0 -391
  377. package/src/Forms-CX-hwmJF.js.map +0 -1
  378. package/src/Forms-CfNPTiCr.js +0 -110
  379. package/src/Forms-CfNPTiCr.js.map +0 -1
  380. package/src/Forms-R0HoTR-o.d.ts +0 -92
  381. package/src/Forms.js.map +0 -1
  382. package/src/HttpPaths-c9nLZ9H2.js +0 -21
  383. package/src/HttpPaths-c9nLZ9H2.js.map +0 -1
  384. package/src/I18n-zbqpWxki.d.ts +0 -29
  385. package/src/Media-j1bTritO.js +0 -112
  386. package/src/Media-j1bTritO.js.map +0 -1
  387. package/src/Module.js.map +0 -1
  388. package/src/References-CCPDAPve.js +0 -45
  389. package/src/References-CCPDAPve.js.map +0 -1
  390. package/src/S3MediaObjects-Dwhl2deX.js +0 -2742
  391. package/src/S3MediaObjects-Dwhl2deX.js.map +0 -1
  392. package/src/Seo-402YumpT.d.ts +0 -198
  393. package/src/cli/content.js +0 -101
  394. package/src/cli/content.js.map +0 -1
  395. package/src/cli.js.map +0 -1
  396. package/src/connection-BP80q4d-.js +0 -92
  397. package/src/connection-BP80q4d-.js.map +0 -1
  398. package/src/dev-lifecycle-CjDq63Ft.js +0 -535
  399. package/src/dev-lifecycle-CjDq63Ft.js.map +0 -1
  400. package/src/installation-DYNQQBD3.js +0 -9114
  401. package/src/installation-DYNQQBD3.js.map +0 -1
  402. package/src/internal/application-types.js +0 -43
  403. package/src/internal/application-types.js.map +0 -1
  404. package/src/internal/authoring-catalog.js +0 -158
  405. package/src/internal/authoring-catalog.js.map +0 -1
  406. package/src/internal/authoring-compiler.js +0 -146
  407. package/src/internal/authoring-compiler.js.map +0 -1
  408. package/src/internal/authoring-metadata.js +0 -191
  409. package/src/internal/authoring-metadata.js.map +0 -1
  410. package/src/internal/cms-config.js +0 -45
  411. package/src/internal/cms-config.js.map +0 -1
  412. package/src/internal/configuration.js +0 -228
  413. package/src/internal/configuration.js.map +0 -1
  414. package/src/internal/dev-lifecycle.js +0 -3
  415. package/src/internal/diagnostics.js +0 -47
  416. package/src/internal/diagnostics.js.map +0 -1
  417. package/src/internal/document-model.js +0 -376
  418. package/src/internal/document-model.js.map +0 -1
  419. package/src/internal/field-metadata.js +0 -7
  420. package/src/internal/field-metadata.js.map +0 -1
  421. package/src/internal/form-capabilities.js +0 -12
  422. package/src/internal/form-capabilities.js.map +0 -1
  423. package/src/internal/i18n.js +0 -73
  424. package/src/internal/i18n.js.map +0 -1
  425. package/src/internal/studio-app.js +0 -68
  426. package/src/internal/studio-app.js.map +0 -1
  427. package/src/location-CMNGO3lU.js +0 -35
  428. package/src/location-CMNGO3lU.js.map +0 -1
  429. package/src/metadata-DN9_K6Yl.js +0 -201
  430. package/src/metadata-DN9_K6Yl.js.map +0 -1
  431. package/src/models-5j67LMqW.js +0 -131
  432. package/src/models-5j67LMqW.js.map +0 -1
  433. package/src/models-VmGmG19-.js +0 -628
  434. package/src/models-VmGmG19-.js.map +0 -1
  435. package/src/runtime/api.js.map +0 -1
  436. package/src/runtime/blocks.js +0 -30
  437. package/src/runtime/blocks.js.map +0 -1
  438. package/src/runtime/collaboration.js +0 -45
  439. package/src/runtime/collaboration.js.map +0 -1
  440. package/src/runtime/delivery/DocumentField.js +0 -23
  441. package/src/runtime/delivery/DocumentField.js.map +0 -1
  442. package/src/runtime/delivery/DocumentRenderer.js +0 -61
  443. package/src/runtime/delivery/DocumentRenderer.js.map +0 -1
  444. package/src/runtime/delivery/DocumentScope.js +0 -41
  445. package/src/runtime/delivery/DocumentScope.js.map +0 -1
  446. package/src/runtime/delivery/blocks.js +0 -8
  447. package/src/runtime/delivery/blocks.js.map +0 -1
  448. package/src/runtime/delivery/context.js +0 -12
  449. package/src/runtime/delivery/context.js.map +0 -1
  450. package/src/runtime/delivery/document-page.js +0 -21
  451. package/src/runtime/delivery/document-page.js.map +0 -1
  452. package/src/runtime/delivery/document.js +0 -43
  453. package/src/runtime/delivery/document.js.map +0 -1
  454. package/src/runtime/delivery/error.js +0 -11
  455. package/src/runtime/delivery/error.js.map +0 -1
  456. package/src/runtime/delivery/plugin.js +0 -99
  457. package/src/runtime/delivery/plugin.js.map +0 -1
  458. package/src/runtime/delivery/preview.d.ts +0 -11
  459. package/src/runtime/delivery/preview.js +0 -6
  460. package/src/runtime/delivery/preview.js.map +0 -1
  461. package/src/runtime/delivery/types.d.ts +0 -2
  462. package/src/runtime/delivery/types.js +0 -1
  463. package/src/runtime/delivery/useCmsDocumentSeo.d.ts +0 -67
  464. package/src/runtime/delivery/useCmsDocumentSeo.js.map +0 -1
  465. package/src/runtime/delivery/useDocument.d.ts +0 -6
  466. package/src/runtime/delivery/useDocument.js +0 -23
  467. package/src/runtime/delivery/useDocument.js.map +0 -1
  468. package/src/runtime/delivery/useDocumentQuery.d.ts +0 -7
  469. package/src/runtime/delivery/useDocumentQuery.js +0 -29
  470. package/src/runtime/delivery/useDocumentQuery.js.map +0 -1
  471. package/src/runtime/forms/document.js +0 -38
  472. package/src/runtime/forms/document.js.map +0 -1
  473. package/src/runtime/forms/useCmsForm.js +0 -257
  474. package/src/runtime/forms/useCmsForm.js.map +0 -1
  475. package/src/runtime/i18n/translator.js +0 -51
  476. package/src/runtime/i18n/translator.js.map +0 -1
  477. package/src/runtime/i18n/useCmsI18n.d.ts +0 -13
  478. package/src/runtime/i18n/useCmsI18n.js +0 -38
  479. package/src/runtime/i18n/useCmsI18n.js.map +0 -1
  480. package/src/runtime/installation.js +0 -3
  481. package/src/runtime/plugin.js.map +0 -1
  482. package/src/runtime/preview/CmsStudioPreviewMarker.js +0 -29
  483. package/src/runtime/preview/CmsStudioPreviewMarker.js.map +0 -1
  484. package/src/runtime/preview/comark-document.js +0 -37
  485. package/src/runtime/preview/comark-document.js.map +0 -1
  486. package/src/runtime/preview/connection.js +0 -3
  487. package/src/runtime/preview/controller.js +0 -265
  488. package/src/runtime/preview/controller.js.map +0 -1
  489. package/src/runtime/preview/crypto.js +0 -16
  490. package/src/runtime/preview/crypto.js.map +0 -1
  491. package/src/runtime/preview/overlay.js +0 -122
  492. package/src/runtime/preview/overlay.js.map +0 -1
  493. package/src/runtime/preview/plugin.client.js +0 -68
  494. package/src/runtime/preview/plugin.client.js.map +0 -1
  495. package/src/runtime/preview/preview.css +0 -91
  496. package/src/runtime/preview/protocol.d.ts +0 -16
  497. package/src/runtime/preview/protocol.js +0 -23
  498. package/src/runtime/preview/protocol.js.map +0 -1
  499. package/src/runtime/preview/regions.js +0 -142
  500. package/src/runtime/preview/regions.js.map +0 -1
  501. package/src/runtime/preview/store.js +0 -4
  502. package/src/runtime/sitemap-entries.js +0 -17
  503. package/src/runtime/sitemap-entries.js.map +0 -1
  504. package/src/runtime/sitemap.js +0 -23
  505. package/src/runtime/sitemap.js.map +0 -1
  506. package/src/runtime/studio-app.js +0 -17
  507. package/src/runtime/studio-app.js.map +0 -1
  508. package/src/runtime/studio-document.js +0 -46
  509. package/src/runtime/studio-document.js.map +0 -1
  510. package/src/runtime/studio-entry.js +0 -19
  511. package/src/runtime/studio-entry.js.map +0 -1
  512. package/src/runtime/studio-navigation.js +0 -11
  513. package/src/runtime/studio-navigation.js.map +0 -1
  514. package/src/scalars-CA6kyipS.d.ts +0 -7
  515. package/src/scalars-CVZqT3L0.js +0 -22
  516. package/src/scalars-CVZqT3L0.js.map +0 -1
  517. package/src/store-X1e1o_MF.js +0 -209
  518. package/src/store-X1e1o_MF.js.map +0 -1
  519. package/src/types-DZ0IV-Ow.d.ts +0 -101
  520. package/studio/CreateDocumentDialog-BpjBYGfI.js +0 -335
  521. package/studio/SelectMenu-KiXwx4Y_.js +0 -34032
  522. package/studio/collaboration-DcK2F6v9.js +0 -4566
  523. package/studio/editor-P2rB7Csp.js +0 -30128
  524. package/studio/rolldown-runtime-Dy4uBu1J.js +0 -11
@@ -0,0 +1,1173 @@
1
+ import { $ as e, B as t, E as n, Ut as r, Wt as i, _t as a, b as o, bt as s, dt as c, m as l, mt as u, nn as d, o as f, s as p, t as m, tn as h, tt as ee, y as g } from "./Button-BT3ztSPx.js";
2
+ import { st as _, tt as v } from "./Search-BEgCe9Aj.js";
3
+ import { a as y, d as b, n as te, r as ne } from "./studioContext-I8HozGU1.js";
4
+ import { $t as re, A as x, B as S, Ci as C, Cr as w, E as T, K as E, M as D, N as O, Nn as k, Or as A, Pn as j, Qt as M, R as N, V as P, _i as ie, fa as F, fr as ae, gi as I, gn as L, ii as R, k as z, li as oe, mr as se, ni as B, o as V, ra as H, ui as U, un as W, vi as G, zn as ce } from "./runtime-core.esm-bundler-DKFA9Rep.js";
5
+ import { a as le } from "./overlay-DnqFLZTc.js";
6
+ import { t as ue } from "./SelectMenu-DSweWGMz.js";
7
+ import { t as de } from "./FormField-CgM6l2Yn.js";
8
+ import { t as fe } from "./english-Cs_Adu-u.js";
9
+ import { t as pe } from "./Alert-D0D24z_a.js";
10
+ import { c as me, r as K, s as he, t as q } from "./presentation-DF83w0hE.js";
11
+ import { t as ge } from "./usePointerMotion-DwRcwBNQ.js";
12
+ import { n as _e, t as J } from "./studioQueries-BR-9NT5F.js";
13
+ import { t as Y } from "./Slideover-QMMHAAys.js";
14
+ import { t as X } from "./useStudioPages-DR9qmYLg.js";
15
+ //#region ../../node_modules/.pnpm/@nuxt+ui@4.11.3_cb98d253b9bf6e94cc4ec1fe3cbbcc2e/node_modules/@nuxt/ui/dist/runtime/composables/useFileUpload.js
16
+ function ve(e) {
17
+ return !e || e === "*" ? [] : e.split(",").map((e) => {
18
+ let t = e.trim();
19
+ return t.includes("/") && t.endsWith("/*") && t.split("/")[0] || t;
20
+ }).filter((e) => !e.startsWith("."));
21
+ }
22
+ function ye(e) {
23
+ let { accept: t = "*", reset: n = !1, multiple: r = !1, dropzone: i = !0, onUpdate: a } = e, o = R(), s = R(), l = T(() => ve(C(t))), d = (e, t = !1) => {
24
+ if (e && e.length !== 0) {
25
+ if (e instanceof FileList && (e = Array.from(e)), e.length > 1 && !C(r) && (e = [e[0]]), t && o.value?.$el) try {
26
+ let t = new DataTransfer();
27
+ e.forEach((e) => t.items.add(e)), o.value.$el.files = t.files;
28
+ } catch (e) {
29
+ console.warn("Could not sync files to input element:", e);
30
+ }
31
+ a(e);
32
+ }
33
+ }, f = R(!1), p = B({ open: () => {} });
34
+ function m() {
35
+ p.open();
36
+ }
37
+ return W(() => {
38
+ let { isOverDropZone: e } = i ? c(s, {
39
+ dataTypes: l,
40
+ onDrop: (e) => d(e, !0)
41
+ }) : { isOverDropZone: R(!1) };
42
+ w(e, (e) => {
43
+ f.value = e;
44
+ });
45
+ let { onChange: a, open: m } = u({
46
+ accept: t,
47
+ multiple: r,
48
+ input: T(() => C(o)?.$el),
49
+ reset: n
50
+ });
51
+ p.open = m, a((e) => d(e, !1));
52
+ }), {
53
+ isDragging: f,
54
+ open: m,
55
+ inputRef: o,
56
+ dropzoneRef: s
57
+ };
58
+ }
59
+ //#endregion
60
+ //#region src/media/useMediaLibrary.ts
61
+ var Z = {
62
+ assets: [],
63
+ folders: [],
64
+ total: 0
65
+ };
66
+ function Q(e, t, n) {
67
+ if (n) return {
68
+ ..._e(() => e()(n()), Z, { active: t }),
69
+ reset: () => {},
70
+ loadMore: async () => {}
71
+ };
72
+ let r = X({
73
+ active: t,
74
+ query: e,
75
+ start: 0,
76
+ next: (e, t) => t + e.assets.length < e.total && e.assets.length ? t + e.assets.length : void 0,
77
+ items: (e) => e.assets,
78
+ key: (e) => e.id
79
+ });
80
+ return {
81
+ ...r,
82
+ data: T(() => ({
83
+ ...r.data.value.page ?? Z,
84
+ assets: r.data.value.items
85
+ }))
86
+ };
87
+ }
88
+ function be(e = {}) {
89
+ let t = b(), n = U(""), a = U(), o = U(e.initialKind ?? ""), s = U("newest"), c = U(), l = U({
90
+ search: n.value,
91
+ folder: a.value,
92
+ kind: o.value,
93
+ sort: s.value
94
+ }), u = U(!1), d = () => e.active === void 0 || G(e.active), f = Q(() => {
95
+ let t = l.value;
96
+ return (n) => J.media({
97
+ ...t,
98
+ kind: t.kind || void 0,
99
+ offset: n,
100
+ limit: e.limit ?? 30
101
+ });
102
+ }, () => d() && !u.value, e.page === void 0 ? void 0 : () => (Math.max(1, G(e.page) ?? 1) - 1) * (e.limit ?? 30)), p = T(() => f.data.value.assets), m = T(() => f.data.value.folders), h = T(() => f.data.value.total), ee = T(() => p.value.find((e) => e.id === c.value) ?? (c.value !== null && e.selectFirst !== !1 ? p.value[0] ?? null : null)), g = T(() => d() && (u.value || f.loading.value)), _ = () => {
103
+ l.value = {
104
+ search: n.value,
105
+ folder: a.value,
106
+ kind: o.value,
107
+ sort: s.value
108
+ }, u.value = !1;
109
+ }, v = i(_, 250);
110
+ w([
111
+ n,
112
+ a,
113
+ o,
114
+ s
115
+ ], () => {
116
+ u.value = !0, c.value = void 0, v();
117
+ }, { flush: "sync" }), r(() => v.cancel());
118
+ async function y() {
119
+ return v.cancel(), u.value && _(), await f.settled();
120
+ }
121
+ async function te(e = !0) {
122
+ if (v.cancel(), d()) {
123
+ if (u.value) {
124
+ await y();
125
+ return;
126
+ }
127
+ e ? (f.reset(), await t.invalidate(["media"]), await f.settled()) : await f.loadMore();
128
+ }
129
+ }
130
+ function ne() {
131
+ f.reset(), c.value = void 0;
132
+ }
133
+ function re(e) {
134
+ c.value = e?.id ?? null;
135
+ }
136
+ return {
137
+ assets: p,
138
+ folders: m,
139
+ selected: ee,
140
+ search: n,
141
+ folder: a,
142
+ kind: o,
143
+ sort: s,
144
+ total: h,
145
+ loading: g,
146
+ error: f.error,
147
+ load: te,
148
+ settled: y,
149
+ selectAsset: re,
150
+ reset: ne
151
+ };
152
+ }
153
+ //#endregion
154
+ //#region virtual:nuxt-ui-templates/ui/file-upload.ts
155
+ var xe = {
156
+ slots: {
157
+ root: "relative flex flex-col",
158
+ base: ["w-full flex-1 bg-default border border-default flex flex-col gap-2 items-stretch justify-center rounded-lg focus-visible:outline-3", "transition-[background] ease-out"],
159
+ wrapper: "flex flex-col items-center justify-center text-center",
160
+ icon: "shrink-0",
161
+ avatar: "shrink-0",
162
+ label: "font-medium text-default mt-2",
163
+ description: "text-muted mt-1",
164
+ actions: "flex flex-wrap gap-1.5 shrink-0 mt-4",
165
+ files: "",
166
+ file: "relative",
167
+ fileLeadingAvatar: "shrink-0",
168
+ fileWrapper: "flex flex-col min-w-0",
169
+ fileName: "text-default truncate",
170
+ fileSize: "text-muted truncate",
171
+ fileTrailingButton: ""
172
+ },
173
+ variants: {
174
+ color: {
175
+ primary: "",
176
+ secondary: "",
177
+ success: "",
178
+ info: "",
179
+ warning: "",
180
+ error: "",
181
+ neutral: ""
182
+ },
183
+ variant: {
184
+ area: {
185
+ wrapper: "px-4 py-3",
186
+ base: "p-4"
187
+ },
188
+ button: {}
189
+ },
190
+ size: {
191
+ xs: {
192
+ base: "text-xs",
193
+ icon: "size-4",
194
+ file: "text-xs px-2 py-1 gap-1",
195
+ fileWrapper: "flex-row gap-1"
196
+ },
197
+ sm: {
198
+ base: "text-xs",
199
+ icon: "size-4",
200
+ file: "text-xs px-2.5 py-1.5 gap-1.5",
201
+ fileWrapper: "flex-row gap-1"
202
+ },
203
+ md: {
204
+ base: "text-sm",
205
+ icon: "size-5",
206
+ file: "text-xs px-2.5 py-1.5 gap-1.5"
207
+ },
208
+ lg: {
209
+ base: "text-sm",
210
+ icon: "size-5",
211
+ file: "text-sm px-3 py-2 gap-2",
212
+ fileSize: "text-xs"
213
+ },
214
+ xl: {
215
+ base: "text-base",
216
+ icon: "size-6",
217
+ file: "text-sm px-3 py-2 gap-2"
218
+ }
219
+ },
220
+ layout: {
221
+ list: {
222
+ root: "gap-2 items-start",
223
+ files: "flex flex-col w-full gap-2",
224
+ file: "min-w-0 flex items-center border border-default rounded-md w-full",
225
+ fileTrailingButton: "ms-auto"
226
+ },
227
+ grid: {
228
+ fileWrapper: "hidden",
229
+ fileLeadingAvatar: "size-full rounded-lg",
230
+ fileTrailingButton: "absolute -top-1.5 -end-1.5 p-0 rounded-full border-2 border-bg"
231
+ }
232
+ },
233
+ position: {
234
+ inside: "",
235
+ outside: ""
236
+ },
237
+ dropzone: { true: "border-dashed data-[dragging=true]:bg-elevated/25" },
238
+ interactive: { true: "" },
239
+ highlight: { true: "" },
240
+ multiple: { true: "" },
241
+ disabled: { true: "cursor-not-allowed opacity-75" }
242
+ },
243
+ compoundVariants: [
244
+ {
245
+ color: "primary",
246
+ class: "outline-primary/25 focus-visible:outline-3 focus-visible:border-primary"
247
+ },
248
+ {
249
+ color: "secondary",
250
+ class: "outline-secondary/25 focus-visible:outline-3 focus-visible:border-secondary"
251
+ },
252
+ {
253
+ color: "success",
254
+ class: "outline-success/25 focus-visible:outline-3 focus-visible:border-success"
255
+ },
256
+ {
257
+ color: "info",
258
+ class: "outline-info/25 focus-visible:outline-3 focus-visible:border-info"
259
+ },
260
+ {
261
+ color: "warning",
262
+ class: "outline-warning/25 focus-visible:outline-3 focus-visible:border-warning"
263
+ },
264
+ {
265
+ color: "error",
266
+ class: "outline-error/25 focus-visible:outline-3 focus-visible:border-error"
267
+ },
268
+ {
269
+ color: "primary",
270
+ highlight: !0,
271
+ class: "border-primary"
272
+ },
273
+ {
274
+ color: "secondary",
275
+ highlight: !0,
276
+ class: "border-secondary"
277
+ },
278
+ {
279
+ color: "success",
280
+ highlight: !0,
281
+ class: "border-success"
282
+ },
283
+ {
284
+ color: "info",
285
+ highlight: !0,
286
+ class: "border-info"
287
+ },
288
+ {
289
+ color: "warning",
290
+ highlight: !0,
291
+ class: "border-warning"
292
+ },
293
+ {
294
+ color: "error",
295
+ highlight: !0,
296
+ class: "border-error"
297
+ },
298
+ {
299
+ color: "neutral",
300
+ class: "outline-inverted/25 focus-visible:outline-3 focus-visible:border-inverted"
301
+ },
302
+ {
303
+ color: "neutral",
304
+ highlight: !0,
305
+ class: "border-inverted"
306
+ },
307
+ {
308
+ size: "xs",
309
+ layout: "list",
310
+ class: { fileTrailingButton: "-me-1" }
311
+ },
312
+ {
313
+ size: "sm",
314
+ layout: "list",
315
+ class: { fileTrailingButton: "-me-1.5" }
316
+ },
317
+ {
318
+ size: "md",
319
+ layout: "list",
320
+ class: { fileTrailingButton: "-me-1.5" }
321
+ },
322
+ {
323
+ size: "lg",
324
+ layout: "list",
325
+ class: { fileTrailingButton: "-me-2" }
326
+ },
327
+ {
328
+ size: "xl",
329
+ layout: "list",
330
+ class: { fileTrailingButton: "-me-2" }
331
+ },
332
+ {
333
+ variant: "button",
334
+ size: "xs",
335
+ class: { base: "p-1" }
336
+ },
337
+ {
338
+ variant: "button",
339
+ size: "sm",
340
+ class: { base: "p-1.5" }
341
+ },
342
+ {
343
+ variant: "button",
344
+ size: "md",
345
+ class: { base: "p-1.5" }
346
+ },
347
+ {
348
+ variant: "button",
349
+ size: "lg",
350
+ class: { base: "p-2" }
351
+ },
352
+ {
353
+ variant: "button",
354
+ size: "xl",
355
+ class: { base: "p-2" }
356
+ },
357
+ {
358
+ layout: "grid",
359
+ multiple: !0,
360
+ class: {
361
+ files: "grid grid-cols-2 md:grid-cols-3 gap-4 w-full",
362
+ file: "p-0 aspect-square"
363
+ }
364
+ },
365
+ {
366
+ layout: "grid",
367
+ multiple: !1,
368
+ class: { file: "absolute inset-0 p-0" }
369
+ },
370
+ {
371
+ interactive: !0,
372
+ disabled: !1,
373
+ class: "hover:bg-elevated/25"
374
+ }
375
+ ],
376
+ defaultVariants: {
377
+ color: "primary",
378
+ variant: "area",
379
+ size: "md"
380
+ }
381
+ }, Se = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
382
+ __name: "FileUpload",
383
+ props: /*@__PURE__*/ M({
384
+ as: {
385
+ type: null,
386
+ required: !1
387
+ },
388
+ id: {
389
+ type: String,
390
+ required: !1
391
+ },
392
+ name: {
393
+ type: String,
394
+ required: !1
395
+ },
396
+ icon: {
397
+ type: [String, Boolean],
398
+ required: !1,
399
+ skipCheck: !0
400
+ },
401
+ label: {
402
+ type: String,
403
+ required: !1
404
+ },
405
+ description: {
406
+ type: String,
407
+ required: !1
408
+ },
409
+ color: {
410
+ type: null,
411
+ required: !1
412
+ },
413
+ variant: {
414
+ type: null,
415
+ required: !1
416
+ },
417
+ size: {
418
+ type: null,
419
+ required: !1
420
+ },
421
+ layout: {
422
+ type: null,
423
+ required: !1,
424
+ default: "grid"
425
+ },
426
+ position: {
427
+ type: null,
428
+ required: !1,
429
+ default: "outside"
430
+ },
431
+ highlight: {
432
+ type: Boolean,
433
+ required: !1
434
+ },
435
+ accept: {
436
+ type: String,
437
+ required: !1,
438
+ default: "*"
439
+ },
440
+ multiple: {
441
+ type: Boolean,
442
+ required: !1,
443
+ default: !1
444
+ },
445
+ reset: {
446
+ type: Boolean,
447
+ required: !1,
448
+ default: !1
449
+ },
450
+ dropzone: {
451
+ type: Boolean,
452
+ required: !1,
453
+ default: !0
454
+ },
455
+ interactive: {
456
+ type: Boolean,
457
+ required: !1,
458
+ default: !0
459
+ },
460
+ required: {
461
+ type: Boolean,
462
+ required: !1
463
+ },
464
+ disabled: {
465
+ type: Boolean,
466
+ required: !1
467
+ },
468
+ fileIcon: {
469
+ type: null,
470
+ required: !1
471
+ },
472
+ fileImage: {
473
+ type: Boolean,
474
+ required: !1,
475
+ default: !0
476
+ },
477
+ fileDelete: {
478
+ type: [Boolean, Object],
479
+ required: !1,
480
+ default: !0
481
+ },
482
+ fileDeleteIcon: {
483
+ type: null,
484
+ required: !1
485
+ },
486
+ preview: {
487
+ type: Boolean,
488
+ required: !1,
489
+ default: !0
490
+ },
491
+ class: {
492
+ type: null,
493
+ required: !1
494
+ },
495
+ ui: {
496
+ type: Object,
497
+ required: !1
498
+ }
499
+ }, {
500
+ modelValue: { type: null },
501
+ modelModifiers: {}
502
+ }),
503
+ emits: /*@__PURE__*/ M(["change"], ["update:modelValue"]),
504
+ setup(r, { expose: i, emit: a, attrs: s }) {
505
+ let c = r, u = a, _ = se(), v = ae(r, "modelValue"), y = o("fileUpload", c), b = e(), { t: te } = t(), [ne, E] = ee(), { accept: M, multiple: N, reset: R } = ie(c), { isDragging: oe, open: B, inputRef: U, dropzoneRef: W } = ye({
506
+ accept: M,
507
+ reset: R,
508
+ multiple: N,
509
+ dropzone: y.dropzone,
510
+ onUpdate: Ce
511
+ }), { emitFormInput: G, emitFormChange: ue, id: de, name: fe, size: pe, color: me, highlight: K, disabled: he, ariaAttrs: q } = f(c), ge = T(() => me.value ?? y.color), _e = T(() => K.value ?? y.highlight), J = T(() => pe.value ?? y.size), Y = T(() => he.value ?? y.disabled), X = T(() => y.multiple ? "area" : y.variant), ve = T(() => y.variant === "button" && !y.multiple ? "grid" : y.layout), Z = T(() => ve.value === "grid" && y.multiple ? "inside" : X.value === "button" ? "outside" : y.position), Q = T(() => g({
512
+ extend: xe,
513
+ ...b.ui?.fileUpload || {}
514
+ })({
515
+ dropzone: y.dropzone,
516
+ interactive: y.interactive,
517
+ color: ge.value,
518
+ size: J.value,
519
+ variant: X.value,
520
+ layout: ve.value,
521
+ position: Z.value,
522
+ multiple: y.multiple,
523
+ highlight: _e.value,
524
+ disabled: Y.value
525
+ }));
526
+ function be(e) {
527
+ if (y.fileImage) return URL.createObjectURL(e);
528
+ }
529
+ function Se(e) {
530
+ if (e === 0) return "0B";
531
+ let t = 1024, n = [
532
+ "B",
533
+ "KB",
534
+ "MB",
535
+ "GB"
536
+ ], r = Math.floor(Math.log(e) / Math.log(t)), i = e / t ** r;
537
+ return `${r === 0 ? i.toString() : i.toFixed(0)}${n[r]}`;
538
+ }
539
+ function Ce(e, t = !1) {
540
+ if (Y.value) return;
541
+ if (y.multiple) {
542
+ if (t) v.value = e;
543
+ else {
544
+ let t = v.value || [];
545
+ v.value = [...t, ...e || []];
546
+ }
547
+ } else v.value = e?.[0] ?? null;
548
+ let n = new Event("change", { target: { value: v.value } });
549
+ u("change", n), ue(), G();
550
+ }
551
+ function $(e) {
552
+ if (!v.value) return;
553
+ if (!y.multiple || e === void 0) {
554
+ Ce([], !0), W.value?.focus();
555
+ return;
556
+ }
557
+ let t = [...v.value];
558
+ t.splice(e, 1), Ce(t, !0), W.value?.focus();
559
+ }
560
+ return w(v, (e) => {
561
+ (y.multiple ? !e?.length : !e) && U.value?.$el && (U.value.$el.value = "");
562
+ }), i({
563
+ inputRef: I(() => U.value?.$el),
564
+ dropzoneRef: W
565
+ }), (e, t) => (L(), O(V, null, [P(C(ne), null, {
566
+ default: A(() => [C(y).preview && v.value && (!Array.isArray(v.value) || v.value.length) ? (L(), O(V, { key: 0 }, [
567
+ j(e.$slots, "files-top", {
568
+ files: v.value,
569
+ open: C(B),
570
+ removeFile: $
571
+ }),
572
+ z("div", {
573
+ "data-slot": "files",
574
+ class: H(Q.value.files({ class: C(y).ui?.files }))
575
+ }, [j(e.$slots, "files", {
576
+ files: v.value,
577
+ removeFile: $
578
+ }, () => [(L(!0), O(V, null, k(Array.isArray(v.value) ? v.value : [v.value], (t, n) => (L(), O("div", {
579
+ key: t.name,
580
+ "data-slot": "file",
581
+ class: H(Q.value.file({ class: C(y).ui?.file }))
582
+ }, [j(e.$slots, "file", {
583
+ file: t,
584
+ index: n,
585
+ removeFile: $
586
+ }, () => [
587
+ j(e.$slots, "file-leading", {
588
+ file: t,
589
+ index: n,
590
+ ui: Q.value
591
+ }, () => [P(p, {
592
+ as: { img: "img" },
593
+ src: be(t),
594
+ icon: C(y).fileIcon || C(b).ui.icons.file,
595
+ size: J.value,
596
+ "data-slot": "fileLeadingAvatar",
597
+ class: H(Q.value.fileLeadingAvatar({ class: C(y).ui?.fileLeadingAvatar }))
598
+ }, null, 8, [
599
+ "src",
600
+ "icon",
601
+ "size",
602
+ "class"
603
+ ])]),
604
+ z("div", {
605
+ "data-slot": "fileWrapper",
606
+ class: H(Q.value.fileWrapper({ class: C(y).ui?.fileWrapper }))
607
+ }, [z("span", {
608
+ "data-slot": "fileName",
609
+ class: H(Q.value.fileName({ class: C(y).ui?.fileName }))
610
+ }, [j(e.$slots, "file-name", {
611
+ file: t,
612
+ index: n
613
+ }, () => [S(F(t.name), 1)])], 2), z("span", {
614
+ "data-slot": "fileSize",
615
+ class: H(Q.value.fileSize({ class: C(y).ui?.fileSize }))
616
+ }, [j(e.$slots, "file-size", {
617
+ file: t,
618
+ index: n
619
+ }, () => [S(F(Se(t.size)), 1)])], 2)], 2),
620
+ j(e.$slots, "file-trailing", {
621
+ file: t,
622
+ index: n,
623
+ ui: Q.value,
624
+ removeFile: $
625
+ }, () => [C(y).fileDelete ? (L(), x(m, re({
626
+ key: 0,
627
+ color: "neutral"
628
+ }, { ref_for: !0 }, {
629
+ ...ve.value === "grid" ? {
630
+ variant: "solid",
631
+ size: "xs"
632
+ } : {
633
+ variant: "link",
634
+ size: J.value
635
+ },
636
+ ...typeof C(y).fileDelete == "object" ? C(y).fileDelete : void 0
637
+ }, {
638
+ "aria-label": C(te)("fileUpload.removeFile", { filename: t.name }),
639
+ "trailing-icon": C(y).fileDeleteIcon || C(b).ui.icons.close,
640
+ "data-slot": "fileTrailingButton",
641
+ class: Q.value.fileTrailingButton({ class: C(y).ui?.fileTrailingButton }),
642
+ onClick: d((e) => $(n), ["stop", "prevent"])
643
+ }), null, 16, [
644
+ "aria-label",
645
+ "trailing-icon",
646
+ "class",
647
+ "onClick"
648
+ ])) : D("", !0)])
649
+ ])], 2))), 128))])], 2),
650
+ j(e.$slots, "files-bottom", {
651
+ files: v.value,
652
+ open: C(B),
653
+ removeFile: $
654
+ })
655
+ ], 64)) : D("", !0)]),
656
+ _: 3
657
+ }), P(C(n), {
658
+ as: C(y).as,
659
+ "data-slot": s["data-slot"] ?? "root",
660
+ class: H(Q.value.root({ class: [C(y).ui?.root, C(y).class] }))
661
+ }, {
662
+ default: A(() => [j(e.$slots, "default", {
663
+ open: C(B),
664
+ removeFile: $,
665
+ ui: Q.value
666
+ }, () => [(L(), x(ce(X.value === "button" ? "button" : "div"), {
667
+ ref_key: "dropzoneRef",
668
+ ref: W,
669
+ type: X.value === "button" ? "button" : void 0,
670
+ role: X.value === "button" ? void 0 : "button",
671
+ disabled: X.value === "button" ? Y.value : void 0,
672
+ "aria-disabled": X.value === "button" ? void 0 : Y.value || void 0,
673
+ "data-dragging": C(oe),
674
+ "data-slot": "base",
675
+ class: H(Q.value.base({ class: C(y).ui?.base })),
676
+ tabindex: C(y).interactive && !Y.value ? 0 : -1,
677
+ onClick: t[0] ||= (e) => C(y).interactive && !Y.value && C(B)(),
678
+ onKeydown: t[1] ||= h(d(() => {}, ["prevent"]), ["space"]),
679
+ onKeyup: t[2] ||= h((e) => C(y).interactive && !Y.value && C(B)(), ["enter", "space"])
680
+ }, {
681
+ default: A(() => [Z.value === "inside" ? (L(), x(C(E), { key: 0 })) : D("", !0), Z.value !== "inside" || !C(y).preview || (C(N) ? !v.value?.length : !v.value) ? (L(), O("div", {
682
+ key: 1,
683
+ "data-slot": "wrapper",
684
+ class: H(Q.value.wrapper({ class: C(y).ui?.wrapper }))
685
+ }, [j(e.$slots, "leading", { ui: Q.value }, () => [C(y).icon === !1 ? D("", !0) : (L(), O(V, { key: 0 }, [X.value === "button" ? (L(), x(l, {
686
+ key: 0,
687
+ name: C(y).icon ?? C(b).ui.icons.upload,
688
+ "data-slot": "icon",
689
+ class: H(Q.value.icon({ class: C(y).ui?.icon }))
690
+ }, null, 8, ["name", "class"])) : (L(), x(p, {
691
+ key: 1,
692
+ icon: C(y).icon ?? C(b).ui.icons.upload,
693
+ size: J.value,
694
+ "data-slot": "avatar",
695
+ class: H(Q.value.avatar({ class: C(y).ui?.avatar }))
696
+ }, null, 8, [
697
+ "icon",
698
+ "size",
699
+ "class"
700
+ ]))], 64))]), X.value === "button" ? D("", !0) : (L(), O(V, { key: 0 }, [
701
+ C(y).label || _.label ? (L(), O("div", {
702
+ key: 0,
703
+ "data-slot": "label",
704
+ class: H(Q.value.label({ class: C(y).ui?.label }))
705
+ }, [j(e.$slots, "label", {}, () => [S(F(C(y).label), 1)])], 2)) : D("", !0),
706
+ C(y).description || _.description ? (L(), O("div", {
707
+ key: 1,
708
+ "data-slot": "description",
709
+ class: H(Q.value.description({ class: C(y).ui?.description }))
710
+ }, [j(e.$slots, "description", {}, () => [S(F(C(y).description), 1)])], 2)) : D("", !0),
711
+ _.actions ? (L(), O("div", {
712
+ key: 2,
713
+ "data-slot": "actions",
714
+ class: H(Q.value.actions({ class: C(y).ui?.actions }))
715
+ }, [j(e.$slots, "actions", {
716
+ files: v.value,
717
+ open: C(B),
718
+ removeFile: $
719
+ })], 2)) : D("", !0)
720
+ ], 64))], 2)) : D("", !0)]),
721
+ _: 3
722
+ }, 40, [
723
+ "type",
724
+ "role",
725
+ "disabled",
726
+ "aria-disabled",
727
+ "data-dragging",
728
+ "class",
729
+ "tabindex"
730
+ ])), Z.value === "outside" ? (L(), x(C(E), { key: 0 })) : D("", !0)]), P(C(le), re({
731
+ id: C(de),
732
+ ref_key: "inputRef",
733
+ ref: U,
734
+ as: "input",
735
+ type: "file",
736
+ feature: "fully-hidden",
737
+ name: C(fe),
738
+ accept: C(M),
739
+ multiple: C(N),
740
+ required: C(y).required,
741
+ disabled: Y.value
742
+ }, {
743
+ ...s,
744
+ ...C(q),
745
+ "data-slot": void 0
746
+ }), null, 16, [
747
+ "id",
748
+ "name",
749
+ "accept",
750
+ "multiple",
751
+ "required",
752
+ "disabled"
753
+ ])]),
754
+ _: 3
755
+ }, 8, [
756
+ "as",
757
+ "data-slot",
758
+ "class"
759
+ ])], 64));
760
+ }
761
+ }), Ce = /* @__PURE__ */ E({
762
+ __name: "MediaUploadThumbnail",
763
+ props: { file: {} },
764
+ setup(e) {
765
+ let t = e, n = T(() => t.file.type.startsWith("image/") ? t.file : void 0), r = s(n), i = T(() => n.value ? "i-lucide-image-off" : he(t.file.type));
766
+ return (e, t) => (L(), x(p, {
767
+ key: C(r),
768
+ as: { img: "img" },
769
+ src: C(r),
770
+ icon: i.value,
771
+ alt: "",
772
+ class: "size-12 shrink-0 rounded-lg bg-muted ring-1 ring-default",
773
+ ui: {
774
+ image: "object-cover",
775
+ icon: "size-5 text-muted"
776
+ }
777
+ }, null, 8, ["src", "icon"]));
778
+ }
779
+ }), $ = { class: "@container min-w-0 space-y-3" }, we = {
780
+ key: 0,
781
+ class: "text-xs text-muted",
782
+ role: "status"
783
+ }, Te = ["aria-label"], Ee = { class: "min-w-0" }, De = {
784
+ class: "text-sm/6 text-highlighted wrap-anywhere",
785
+ dir: "auto"
786
+ }, Oe = { class: "mt-1 text-xs text-muted" }, ke = {
787
+ key: 0,
788
+ class: "mt-1 flex items-center gap-1 text-xs text-muted",
789
+ role: "status"
790
+ }, Ae = {
791
+ key: 1,
792
+ class: "mt-1 text-xs text-error",
793
+ role: "status"
794
+ }, je = { class: "flex gap-1 @max-[14rem]:justify-self-end" }, Me = ["aria-label"], Ne = { class: "text-xs text-muted" }, Pe = 50, Fe = /* @__PURE__ */ E({
795
+ __name: "MediaUploadFileQueue",
796
+ props: {
797
+ entries: {},
798
+ disabled: { type: Boolean }
799
+ },
800
+ emits: ["remove", "retry"],
801
+ setup(e, { emit: t }) {
802
+ let { t: n, number: r, locale: i } = _(), a = e, o = t, s = U(1), c = T(() => Math.max(1, Math.ceil(a.entries.length / Pe))), u = T(() => (s.value - 1) * Pe), d = T(() => a.entries.slice(u.value, u.value + Pe));
803
+ return w(() => a.entries.length, (e, t) => {
804
+ s.value = e > t ? 1 : Math.min(s.value, c.value);
805
+ }), (t, a) => (L(), O("div", $, [
806
+ c.value > 1 ? (L(), O("p", we, F(C(n)("media.file-range", {
807
+ start: u.value + 1,
808
+ end: Math.min(u.value + Pe, e.entries.length),
809
+ count: e.entries.length
810
+ })), 1)) : D("", !0),
811
+ z("ul", {
812
+ "aria-label": C(n)("media-upload-file-queue.selected-files"),
813
+ class: "divide-y divide-default"
814
+ }, [(L(!0), O(V, null, k(d.value, (t) => (L(), O("li", {
815
+ key: t.id,
816
+ class: "grid min-w-0 grid-cols-[48px_minmax(0,1fr)_auto] items-start gap-3 py-3 @max-[14rem]:grid-cols-1"
817
+ }, [
818
+ P(Ce, { file: t.file }, null, 8, ["file"]),
819
+ z("div", Ee, [
820
+ z("p", De, F(t.file.name), 1),
821
+ z("p", Oe, F(C(K)(t.file.size, C(i), C(n))), 1),
822
+ t.status === "uploading" ? (L(), O("p", ke, [P(l, {
823
+ name: "i-lucide-loader-circle",
824
+ class: "size-3 motion-safe:animate-spin"
825
+ }), S(" " + F(C(n)("media-upload-file-queue.uploading")), 1)])) : D("", !0),
826
+ t.error ? (L(), O("p", Ae, F(t.error), 1)) : D("", !0)
827
+ ]),
828
+ z("div", je, [t.status === "failed" ? (L(), x(m, {
829
+ key: 0,
830
+ icon: "i-lucide-rotate-ccw",
831
+ color: "neutral",
832
+ variant: "ghost",
833
+ "aria-label": C(n)("media.retry-file", { name: t.file.name }),
834
+ disabled: e.disabled,
835
+ onClick: (e) => o("retry", t.id)
836
+ }, null, 8, [
837
+ "aria-label",
838
+ "disabled",
839
+ "onClick"
840
+ ])) : D("", !0), P(m, {
841
+ icon: "i-lucide-x",
842
+ color: "neutral",
843
+ variant: "ghost",
844
+ "aria-label": C(n)("media.remove-file", { name: t.file.name }),
845
+ disabled: e.disabled,
846
+ onClick: (e) => o("remove", t.id)
847
+ }, null, 8, [
848
+ "aria-label",
849
+ "disabled",
850
+ "onClick"
851
+ ])])
852
+ ]))), 128))], 8, Te),
853
+ c.value > 1 ? (L(), O("nav", {
854
+ key: 1,
855
+ "aria-label": C(n)("media-upload-file-queue.selected-file-pages"),
856
+ class: "flex flex-wrap items-center justify-between gap-2"
857
+ }, [
858
+ P(m, {
859
+ label: C(n)("media-upload-file-queue.previous"),
860
+ variant: "outline",
861
+ disabled: s.value === 1,
862
+ onClick: a[0] ||= (e) => s.value--
863
+ }, null, 8, ["label", "disabled"]),
864
+ z("span", Ne, F(s.value) + " / " + F(C(r)(c.value)), 1),
865
+ P(m, {
866
+ label: C(n)("media-upload-file-queue.next"),
867
+ variant: "outline",
868
+ disabled: s.value === c.value,
869
+ onClick: a[1] ||= (e) => s.value++
870
+ }, null, 8, ["label", "disabled"])
871
+ ], 8, Me)) : D("", !0)
872
+ ]));
873
+ }
874
+ }), Ie = new Set(q);
875
+ function Le(e, t, n = Ie, r = fe, i = "en") {
876
+ if (!n.has(e.type)) return r("media.unsupported");
877
+ if (!e.size) return r("media.empty");
878
+ let a = v(e.type, t);
879
+ if (e.size > a) return r("media.too-large", { size: K(a, i, r) });
880
+ }
881
+ function Re(e = Ie) {
882
+ let { t, locale: n } = _(), r = y(), i = b(), a = te(), o = U([]), s = U(!1), c = 1;
883
+ function l(t) {
884
+ o.value = [...o.value, ...t.map((t) => {
885
+ let n = Le(t, a.configuration.mediaUploadLimit, G(e));
886
+ return {
887
+ id: c++,
888
+ file: t,
889
+ status: n ? "invalid" : "pending",
890
+ error: n
891
+ };
892
+ })];
893
+ }
894
+ function u() {
895
+ s.value || (o.value = []);
896
+ }
897
+ function d(e) {
898
+ s.value || (o.value = o.value.filter((t) => t.id !== e));
899
+ }
900
+ function f(e, t) {
901
+ o.value = o.value.map((n) => n.id === e ? {
902
+ ...n,
903
+ ...t
904
+ } : n);
905
+ }
906
+ async function p(e, t) {
907
+ if (s.value) return [];
908
+ let n = o.value.filter((e) => (!t || t.has(e.id)) && (e.status === "pending" || e.status === "failed"));
909
+ if (!n.length) return [];
910
+ s.value = !0;
911
+ let r = Array(n.length).fill(void 0);
912
+ try {
913
+ let t = 0;
914
+ return await Promise.all(Array.from({ length: Math.min(2, n.length) }, async () => {
915
+ for (; t < n.length;) {
916
+ let a = t++, s = n[a];
917
+ f(s.id, {
918
+ status: "uploading",
919
+ error: void 0
920
+ });
921
+ try {
922
+ r[a] = await i.upload(s.file, e), o.value = o.value.filter((e) => e.id !== s.id);
923
+ } catch (e) {
924
+ f(s.id, {
925
+ status: "failed",
926
+ failure: e
927
+ });
928
+ }
929
+ }
930
+ })), r.filter((e) => e !== void 0);
931
+ } finally {
932
+ s.value = !1;
933
+ }
934
+ }
935
+ return {
936
+ entries: T(() => o.value.map((i) => {
937
+ let o = i.error;
938
+ return i.status === "invalid" && (o = Le(i.file, a.configuration.mediaUploadLimit, G(e), t, n.value)), i.status === "failed" && (o = r(i.failure, t("media.upload-failed"))), {
939
+ id: i.id,
940
+ file: i.file,
941
+ status: i.status,
942
+ error: o
943
+ };
944
+ })),
945
+ isUploading: oe(s),
946
+ add: l,
947
+ clear: u,
948
+ remove: d,
949
+ upload: p
950
+ };
951
+ }
952
+ //#endregion
953
+ //#region src/media/MediaUploadPanel.vue?vue&type=script&setup=true&lang.ts
954
+ var ze = { class: "flex min-w-0 flex-col gap-6" }, Be = { class: "flex min-w-0 items-center gap-3 text-sm" }, Ve = { class: "grid size-9 shrink-0 place-items-center rounded-lg bg-muted" }, He = { class: "w-full min-w-0 space-y-4" }, Ue = {
955
+ key: 1,
956
+ class: "text-xs/5 text-muted"
957
+ }, We = {
958
+ class: "text-xs text-muted",
959
+ role: "status",
960
+ "aria-live": "polite"
961
+ }, Ge = { class: "flex flex-wrap justify-end gap-2" }, Ke = { class: "text-xs/5 text-muted" }, qe = /* @__PURE__ */ E({
962
+ __name: "MediaUploadPanel",
963
+ props: { kind: {} },
964
+ emits: ["uploaded"],
965
+ setup(e, { expose: t, emit: n }) {
966
+ let { t: r, locale: i } = _(), o = ne(), s = e, c = te(), { pointer: u } = ge(), d = n, f = U(!1), p = U(""), h = _e(() => J.mediaFolders, [], { active: f }), ee = T(() => [{
967
+ label: r("media-asset-details.no-folder"),
968
+ value: me
969
+ }, ...[.../* @__PURE__ */ new Set([p.value, ...h.data.value.map((e) => e.folder)])].filter(Boolean).sort((e, t) => e.localeCompare(t)).map((e) => ({
970
+ label: e,
971
+ value: e
972
+ }))]), g = T({
973
+ get: () => p.value || "/__unfiled__",
974
+ set: (e) => {
975
+ p.value = e === "/__unfiled__" ? "" : e;
976
+ }
977
+ }), y = a("(max-width: 639px)"), b = U([]), re = T(() => ({
978
+ all: {
979
+ mimeTypes: q,
980
+ title: r("media-upload-panel.upload-media"),
981
+ description: r("media-upload-panel.bring-your-images-videos-and-documents-into"),
982
+ label: r("media-upload-panel.drop-your-files-here"),
983
+ formats: "AVIF, GIF, JPEG, PNG, WebP, MP4, WebM, or PDF"
984
+ },
985
+ image: {
986
+ mimeTypes: q.filter((e) => e.startsWith("image/")),
987
+ title: r("media-upload-panel.upload-images"),
988
+ description: r("media-upload-panel.add-images-to-your-library"),
989
+ label: r("media-upload-panel.drop-images-here"),
990
+ formats: "AVIF, GIF, JPEG, PNG, or WebP"
991
+ },
992
+ video: {
993
+ mimeTypes: q.filter((e) => e.startsWith("video/")),
994
+ title: r("media-upload-panel.upload-videos"),
995
+ description: r("media-upload-panel.add-videos-to-your-library"),
996
+ label: r("media-upload-panel.drop-videos-here"),
997
+ formats: "MP4 or WebM"
998
+ }
999
+ })), S = T(() => {
1000
+ let e = re.value[s.kind ?? "all"];
1001
+ return {
1002
+ ...e,
1003
+ accept: e.mimeTypes.join(",")
1004
+ };
1005
+ }), E = T(() => {
1006
+ let e = K(v("image/png", c.configuration.mediaUploadLimit), i.value, r), t = K(c.configuration.mediaUploadLimit, i.value, r);
1007
+ return s.kind === "image" ? r("media.limit-each", { size: e }) : s.kind === "video" ? r("media.limit-each", { size: t }) : r("media.limits", {
1008
+ imageSize: e,
1009
+ videoSize: t
1010
+ });
1011
+ }), k = Re(() => new Set(S.value.mimeTypes)), j = T(() => K(k.entries.value.reduce((e, t) => e + t.file.size, 0), i.value, r)), M = T(() => k.entries.value.filter((e) => e.status === "pending" || e.status === "failed")), ie = T(() => M.value.length > 0 && M.value.every((e) => e.status === "failed") ? r("media-upload-panel.retry-failed-files") : r("media-upload-panel.add-to-library"));
1012
+ w(b, (e) => {
1013
+ e?.length && (k.add(e), b.value = []);
1014
+ });
1015
+ function ae(e = {}) {
1016
+ f.value || (k.clear(), p.value = e.folder ?? "Uploads"), e.files?.length && k.add(e.files), f.value = !0;
1017
+ }
1018
+ function I(e) {
1019
+ (e || !k.isUploading.value) && (f.value = e, e || (k.clear(), b.value = []));
1020
+ }
1021
+ async function R(e) {
1022
+ let t = await k.upload(p.value.trim(), e);
1023
+ t.length && d("uploaded", t), k.entries.value.length || I(!1);
1024
+ }
1025
+ return t({ open: ae }), (e, t) => {
1026
+ let n = l, i = ue, a = de, s = pe, c = m, d = Se, p = Y;
1027
+ return L(), x(p, {
1028
+ open: f.value,
1029
+ transition: C(u),
1030
+ close: !C(k).isUploading.value,
1031
+ dismissible: !C(k).isUploading.value,
1032
+ title: S.value.title,
1033
+ description: S.value.description,
1034
+ ui: { footer: "flex-col items-stretch gap-4" },
1035
+ "onUpdate:open": I
1036
+ }, {
1037
+ body: A(() => [z("div", ze, [
1038
+ z("div", Be, [z("span", Ve, [P(n, {
1039
+ name: "i-lucide-folder",
1040
+ class: "size-4 text-muted"
1041
+ })]), P(a, {
1042
+ label: C(r)("media-upload-panel.adding-to"),
1043
+ class: "min-w-0 flex-1"
1044
+ }, {
1045
+ default: A(() => [P(i, {
1046
+ modelValue: g.value,
1047
+ "onUpdate:modelValue": t[0] ||= (e) => g.value = e,
1048
+ items: ee.value,
1049
+ "value-key": "value",
1050
+ "aria-label": C(r)("media-upload-panel.upload-folder"),
1051
+ class: "w-full",
1052
+ loading: C(h).loading.value,
1053
+ disabled: C(k).isUploading.value
1054
+ }, null, 8, [
1055
+ "modelValue",
1056
+ "items",
1057
+ "aria-label",
1058
+ "loading",
1059
+ "disabled"
1060
+ ])]),
1061
+ _: 1
1062
+ }, 8, ["label"])]),
1063
+ C(h).error.value ? (L(), x(s, {
1064
+ key: 0,
1065
+ role: "alert",
1066
+ title: C(r)("media-upload-panel.folders-could-not-be-loaded"),
1067
+ description: C(h).error.value,
1068
+ color: "error",
1069
+ variant: "subtle",
1070
+ actions: [{
1071
+ label: C(o).actions.retry,
1072
+ onClick: () => C(h).refresh()
1073
+ }]
1074
+ }, null, 8, [
1075
+ "title",
1076
+ "description",
1077
+ "actions"
1078
+ ])) : D("", !0),
1079
+ z("div", He, [P(d, {
1080
+ modelValue: b.value,
1081
+ "onUpdate:modelValue": t[1] ||= (e) => b.value = e,
1082
+ class: "w-full min-w-0",
1083
+ accept: S.value.accept,
1084
+ multiple: "",
1085
+ reset: "",
1086
+ layout: "list",
1087
+ color: "neutral",
1088
+ icon: "i-lucide-upload",
1089
+ label: S.value.label,
1090
+ description: C(r)("media-upload-panel.or-click-to-choose-from-your-device"),
1091
+ "file-image": !1,
1092
+ preview: !1,
1093
+ dropzone: !C(y),
1094
+ disabled: C(k).isUploading.value,
1095
+ interactive: !C(k).isUploading.value
1096
+ }, N({ _: 2 }, [C(y) ? {
1097
+ name: "default",
1098
+ fn: A(({ open: e }) => [P(c, {
1099
+ label: C(r)("media-upload-panel.choose-files"),
1100
+ icon: "i-lucide-plus",
1101
+ color: "neutral",
1102
+ variant: "outline",
1103
+ class: "w-full justify-center",
1104
+ disabled: C(k).isUploading.value,
1105
+ onClick: (t) => e()
1106
+ }, null, 8, [
1107
+ "label",
1108
+ "disabled",
1109
+ "onClick"
1110
+ ])]),
1111
+ key: "0"
1112
+ } : void 0]), 1032, [
1113
+ "modelValue",
1114
+ "accept",
1115
+ "label",
1116
+ "description",
1117
+ "dropzone",
1118
+ "disabled",
1119
+ "interactive"
1120
+ ]), C(k).entries.value.length ? (L(), x(Fe, {
1121
+ key: 0,
1122
+ entries: C(k).entries.value,
1123
+ disabled: C(k).isUploading.value,
1124
+ onRemove: C(k).remove,
1125
+ onRetry: t[2] ||= (e) => R(/* @__PURE__ */ new Set([e]))
1126
+ }, null, 8, [
1127
+ "entries",
1128
+ "disabled",
1129
+ "onRemove"
1130
+ ])) : D("", !0)]),
1131
+ C(k).entries.value.length ? D("", !0) : (L(), O("p", Ue, F(C(r)("media-upload-panel.choose-several-files-at-once-you-can")), 1))
1132
+ ])]),
1133
+ footer: A(() => [
1134
+ z("p", We, F(C(k).entries.value.length ? C(r)("media.files-selected", {
1135
+ count: C(k).entries.value.length,
1136
+ size: j.value
1137
+ }) : C(r)("media-upload-panel.no-files-selected-yet")), 1),
1138
+ z("div", Ge, [P(c, {
1139
+ label: C(o).actions.cancel,
1140
+ color: "neutral",
1141
+ variant: "outline",
1142
+ disabled: C(k).isUploading.value,
1143
+ onClick: t[3] ||= (e) => I(!1)
1144
+ }, null, 8, ["label", "disabled"]), P(c, {
1145
+ label: ie.value,
1146
+ color: "neutral",
1147
+ loading: C(k).isUploading.value,
1148
+ disabled: !M.value.length,
1149
+ onClick: t[4] ||= (e) => R()
1150
+ }, null, 8, [
1151
+ "label",
1152
+ "loading",
1153
+ "disabled"
1154
+ ])]),
1155
+ z("p", Ke, F(C(r)("media.formats-limits", {
1156
+ formats: S.value.formats,
1157
+ limits: E.value
1158
+ })), 1)
1159
+ ]),
1160
+ _: 1
1161
+ }, 8, [
1162
+ "open",
1163
+ "transition",
1164
+ "close",
1165
+ "dismissible",
1166
+ "title",
1167
+ "description"
1168
+ ]);
1169
+ };
1170
+ }
1171
+ });
1172
+ //#endregion
1173
+ export { be as n, qe as t };