@widgetic/design-system 0.3.68

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 (492) hide show
  1. package/README.md +730 -0
  2. package/dist/components/CopyableHeader.svelte +456 -0
  3. package/dist/components/CopyableHeader.svelte.d.ts +40 -0
  4. package/dist/components/EmptyState.svelte +145 -0
  5. package/dist/components/EmptyState.svelte.d.ts +36 -0
  6. package/dist/components/PasswordInput.svelte +46 -0
  7. package/dist/components/PasswordInput.svelte.d.ts +26 -0
  8. package/dist/components/ThumbHashImage.svelte +124 -0
  9. package/dist/components/ThumbHashImage.svelte.d.ts +26 -0
  10. package/dist/components/WScrollArea.svelte +47 -0
  11. package/dist/components/WScrollArea.svelte.d.ts +38 -0
  12. package/dist/components/debug-grid/DebugGrid.svelte +207 -0
  13. package/dist/components/debug-grid/DebugGrid.svelte.d.ts +32 -0
  14. package/dist/components/ic/browser/BrowserInputController.svelte +481 -0
  15. package/dist/components/ic/browser/BrowserInputController.svelte.d.ts +34 -0
  16. package/dist/components/ic/browser/icons/audio.svg +7 -0
  17. package/dist/components/ic/browser/icons/document.svg +11 -0
  18. package/dist/components/ic/browser/icons/error.svg +5 -0
  19. package/dist/components/ic/browser/icons/folder.svg +28 -0
  20. package/dist/components/ic/browser/icons/info-icon.svg +3 -0
  21. package/dist/components/ic/browser/icons/player-pause.svg +12 -0
  22. package/dist/components/ic/browser/icons/player-play.svg +1 -0
  23. package/dist/components/ic/types.d.ts +14 -0
  24. package/dist/components/ic/types.js +18 -0
  25. package/dist/components/index.d.ts +51 -0
  26. package/dist/components/index.js +52 -0
  27. package/dist/components/modals/ActionModal.svelte +189 -0
  28. package/dist/components/modals/ActionModal.svelte.d.ts +49 -0
  29. package/dist/components/modals/BaseModal.svelte +409 -0
  30. package/dist/components/modals/BaseModal.svelte.d.ts +38 -0
  31. package/dist/components/modals/NewItemDialog.svelte +189 -0
  32. package/dist/components/modals/NewItemDialog.svelte.d.ts +39 -0
  33. package/dist/components/modals/Portal.svelte +104 -0
  34. package/dist/components/modals/Portal.svelte.d.ts +34 -0
  35. package/dist/components/modals/README.md +99 -0
  36. package/dist/components/modals/RenameDialog.svelte +316 -0
  37. package/dist/components/modals/RenameDialog.svelte.d.ts +39 -0
  38. package/dist/components/modals/modalStore.d.ts +10 -0
  39. package/dist/components/modals/modalStore.js +45 -0
  40. package/dist/components/navigation/Breadcrumbs.svelte +348 -0
  41. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +35 -0
  42. package/dist/components/navigation/index.d.ts +2 -0
  43. package/dist/components/navigation/index.js +2 -0
  44. package/dist/components/navigation/types.d.ts +12 -0
  45. package/dist/components/navigation/types.js +1 -0
  46. package/dist/components/pdf/PDFViewer.svelte +608 -0
  47. package/dist/components/pdf/PDFViewer.svelte.d.ts +32 -0
  48. package/dist/components/search-input/SearchInput.svelte +115 -0
  49. package/dist/components/search-input/SearchInput.svelte.d.ts +46 -0
  50. package/dist/components/search-input/index.d.ts +14 -0
  51. package/dist/components/search-input/index.js +4 -0
  52. package/dist/components/shad-editor/colorpicker.svelte +17 -0
  53. package/dist/components/shad-editor/colorpicker.svelte.d.ts +6 -0
  54. package/dist/components/shad-editor/custom/Extentions/ColorHighlighter.d.ts +2 -0
  55. package/dist/components/shad-editor/custom/Extentions/ColorHighlighter.js +25 -0
  56. package/dist/components/shad-editor/custom/Extentions/ImageExtention.d.ts +1 -0
  57. package/dist/components/shad-editor/custom/Extentions/ImageExtention.js +30 -0
  58. package/dist/components/shad-editor/custom/Extentions/SearchAndReplace.d.ts +57 -0
  59. package/dist/components/shad-editor/custom/Extentions/SearchAndReplace.js +232 -0
  60. package/dist/components/shad-editor/custom/Extentions/SmilieReplacer.d.ts +2 -0
  61. package/dist/components/shad-editor/custom/Extentions/SmilieReplacer.js +131 -0
  62. package/dist/components/shad-editor/custom/code-extended.svelte +78 -0
  63. package/dist/components/shad-editor/custom/code-extended.svelte.d.ts +4 -0
  64. package/dist/components/shad-editor/custom/image-extended-component.svelte +251 -0
  65. package/dist/components/shad-editor/custom/image-extended-component.svelte.d.ts +4 -0
  66. package/dist/components/shad-editor/custom/utils.d.ts +5 -0
  67. package/dist/components/shad-editor/custom/utils.js +35 -0
  68. package/dist/components/shad-editor/editor-toolbar.svelte +59 -0
  69. package/dist/components/shad-editor/editor-toolbar.svelte.d.ts +8 -0
  70. package/dist/components/shad-editor/editor.css +179 -0
  71. package/dist/components/shad-editor/icons/block-quote.svelte +26 -0
  72. package/dist/components/shad-editor/icons/block-quote.svelte.d.ts +7 -0
  73. package/dist/components/shad-editor/icons/bold.svelte +26 -0
  74. package/dist/components/shad-editor/icons/bold.svelte.d.ts +8 -0
  75. package/dist/components/shad-editor/icons/buttle-list.svelte +27 -0
  76. package/dist/components/shad-editor/icons/buttle-list.svelte.d.ts +7 -0
  77. package/dist/components/shad-editor/icons/code.svelte +27 -0
  78. package/dist/components/shad-editor/icons/code.svelte.d.ts +8 -0
  79. package/dist/components/shad-editor/icons/highlighter.svelte +75 -0
  80. package/dist/components/shad-editor/icons/highlighter.svelte.d.ts +9 -0
  81. package/dist/components/shad-editor/icons/image.svelte +73 -0
  82. package/dist/components/shad-editor/icons/image.svelte.d.ts +8 -0
  83. package/dist/components/shad-editor/icons/index.d.ts +22 -0
  84. package/dist/components/shad-editor/icons/index.js +24 -0
  85. package/dist/components/shad-editor/icons/italic.svelte +26 -0
  86. package/dist/components/shad-editor/icons/italic.svelte.d.ts +8 -0
  87. package/dist/components/shad-editor/icons/link.svelte +72 -0
  88. package/dist/components/shad-editor/icons/link.svelte.d.ts +8 -0
  89. package/dist/components/shad-editor/icons/ordered-list.svelte +26 -0
  90. package/dist/components/shad-editor/icons/ordered-list.svelte.d.ts +7 -0
  91. package/dist/components/shad-editor/icons/quickcolor.svelte +95 -0
  92. package/dist/components/shad-editor/icons/quickcolor.svelte.d.ts +7 -0
  93. package/dist/components/shad-editor/icons/redo.svelte +26 -0
  94. package/dist/components/shad-editor/icons/redo.svelte.d.ts +8 -0
  95. package/dist/components/shad-editor/icons/search-replace.svelte +146 -0
  96. package/dist/components/shad-editor/icons/search-replace.svelte.d.ts +7 -0
  97. package/dist/components/shad-editor/icons/strikethrough.svelte +26 -0
  98. package/dist/components/shad-editor/icons/strikethrough.svelte.d.ts +8 -0
  99. package/dist/components/shad-editor/icons/subscript.svelte +26 -0
  100. package/dist/components/shad-editor/icons/subscript.svelte.d.ts +8 -0
  101. package/dist/components/shad-editor/icons/superscript.svelte +26 -0
  102. package/dist/components/shad-editor/icons/superscript.svelte.d.ts +8 -0
  103. package/dist/components/shad-editor/icons/table.svelte +111 -0
  104. package/dist/components/shad-editor/icons/table.svelte.d.ts +8 -0
  105. package/dist/components/shad-editor/icons/task-list.svelte +26 -0
  106. package/dist/components/shad-editor/icons/task-list.svelte.d.ts +7 -0
  107. package/dist/components/shad-editor/icons/text.svelte +95 -0
  108. package/dist/components/shad-editor/icons/text.svelte.d.ts +7 -0
  109. package/dist/components/shad-editor/icons/textalign.svelte +82 -0
  110. package/dist/components/shad-editor/icons/textalign.svelte.d.ts +7 -0
  111. package/dist/components/shad-editor/icons/textcolor.svelte +75 -0
  112. package/dist/components/shad-editor/icons/textcolor.svelte.d.ts +8 -0
  113. package/dist/components/shad-editor/icons/underline.svelte +26 -0
  114. package/dist/components/shad-editor/icons/underline.svelte.d.ts +8 -0
  115. package/dist/components/shad-editor/icons/undo.svelte +26 -0
  116. package/dist/components/shad-editor/icons/undo.svelte.d.ts +8 -0
  117. package/dist/components/shad-editor/index.d.ts +4 -0
  118. package/dist/components/shad-editor/index.js +5 -0
  119. package/dist/components/shad-editor/onedark.css +87 -0
  120. package/dist/components/shad-editor/shad-editor.svelte +153 -0
  121. package/dist/components/shad-editor/shad-editor.svelte.d.ts +34 -0
  122. package/dist/components/toast/ToasterModal.svelte +128 -0
  123. package/dist/components/toast/ToasterModal.svelte.d.ts +30 -0
  124. package/dist/components/toast/index.d.ts +2 -0
  125. package/dist/components/toast/index.js +2 -0
  126. package/dist/components/ui/accordion/accordion-content.svelte +24 -0
  127. package/dist/components/ui/accordion/accordion-content.svelte.d.ts +4 -0
  128. package/dist/components/ui/accordion/accordion-item.svelte +12 -0
  129. package/dist/components/ui/accordion/accordion-item.svelte.d.ts +4 -0
  130. package/dist/components/ui/accordion/accordion-trigger.svelte +29 -0
  131. package/dist/components/ui/accordion/accordion-trigger.svelte.d.ts +7 -0
  132. package/dist/components/ui/accordion/index.d.ts +6 -0
  133. package/dist/components/ui/accordion/index.js +6 -0
  134. package/dist/components/ui/alert/alert-description.svelte +13 -0
  135. package/dist/components/ui/alert/alert-description.svelte.d.ts +28 -0
  136. package/dist/components/ui/alert/alert-title.svelte +21 -0
  137. package/dist/components/ui/alert/alert-title.svelte.d.ts +31 -0
  138. package/dist/components/ui/alert/alert.svelte +17 -0
  139. package/dist/components/ui/alert/alert.svelte.d.ts +31 -0
  140. package/dist/components/ui/alert/index.d.ts +43 -0
  141. package/dist/components/ui/alert/index.js +19 -0
  142. package/dist/components/ui/badge/badge.svelte +50 -0
  143. package/dist/components/ui/badge/badge.svelte.d.ts +60 -0
  144. package/dist/components/ui/badge/index.d.ts +2 -0
  145. package/dist/components/ui/badge/index.js +2 -0
  146. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +23 -0
  147. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +5 -0
  148. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +16 -0
  149. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte.d.ts +5 -0
  150. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +31 -0
  151. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte.d.ts +11 -0
  152. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +23 -0
  153. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte.d.ts +5 -0
  154. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +23 -0
  155. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte.d.ts +5 -0
  156. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +27 -0
  157. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte.d.ts +5 -0
  158. package/dist/components/ui/breadcrumb/breadcrumb.svelte +15 -0
  159. package/dist/components/ui/breadcrumb/breadcrumb.svelte.d.ts +5 -0
  160. package/dist/components/ui/breadcrumb/index.d.ts +8 -0
  161. package/dist/components/ui/breadcrumb/index.js +10 -0
  162. package/dist/components/ui/button/button.svelte +74 -0
  163. package/dist/components/ui/button/button.svelte.d.ts +118 -0
  164. package/dist/components/ui/button/index.d.ts +2 -0
  165. package/dist/components/ui/button/index.js +4 -0
  166. package/dist/components/ui/calendar/calendar-cell.svelte +19 -0
  167. package/dist/components/ui/calendar/calendar-cell.svelte.d.ts +4 -0
  168. package/dist/components/ui/calendar/calendar-day.svelte +30 -0
  169. package/dist/components/ui/calendar/calendar-day.svelte.d.ts +4 -0
  170. package/dist/components/ui/calendar/calendar-grid-body.svelte +12 -0
  171. package/dist/components/ui/calendar/calendar-grid-body.svelte.d.ts +4 -0
  172. package/dist/components/ui/calendar/calendar-grid-head.svelte +12 -0
  173. package/dist/components/ui/calendar/calendar-grid-head.svelte.d.ts +4 -0
  174. package/dist/components/ui/calendar/calendar-grid-row.svelte +12 -0
  175. package/dist/components/ui/calendar/calendar-grid-row.svelte.d.ts +4 -0
  176. package/dist/components/ui/calendar/calendar-grid.svelte +16 -0
  177. package/dist/components/ui/calendar/calendar-grid.svelte.d.ts +4 -0
  178. package/dist/components/ui/calendar/calendar-head-cell.svelte +16 -0
  179. package/dist/components/ui/calendar/calendar-head-cell.svelte.d.ts +4 -0
  180. package/dist/components/ui/calendar/calendar-header.svelte +16 -0
  181. package/dist/components/ui/calendar/calendar-header.svelte.d.ts +4 -0
  182. package/dist/components/ui/calendar/calendar-heading.svelte +12 -0
  183. package/dist/components/ui/calendar/calendar-heading.svelte.d.ts +4 -0
  184. package/dist/components/ui/calendar/calendar-months.svelte +20 -0
  185. package/dist/components/ui/calendar/calendar-months.svelte.d.ts +5 -0
  186. package/dist/components/ui/calendar/calendar-next-button.svelte +28 -0
  187. package/dist/components/ui/calendar/calendar-next-button.svelte.d.ts +4 -0
  188. package/dist/components/ui/calendar/calendar-prev-button.svelte +28 -0
  189. package/dist/components/ui/calendar/calendar-prev-button.svelte.d.ts +4 -0
  190. package/dist/components/ui/calendar/calendar.svelte +61 -0
  191. package/dist/components/ui/calendar/calendar.svelte.d.ts +5 -0
  192. package/dist/components/ui/calendar/index.d.ts +14 -0
  193. package/dist/components/ui/calendar/index.js +16 -0
  194. package/dist/components/ui/card/card-content.svelte +16 -0
  195. package/dist/components/ui/card/card-content.svelte.d.ts +5 -0
  196. package/dist/components/ui/card/card-description.svelte +16 -0
  197. package/dist/components/ui/card/card-description.svelte.d.ts +5 -0
  198. package/dist/components/ui/card/card-footer.svelte +16 -0
  199. package/dist/components/ui/card/card-footer.svelte.d.ts +5 -0
  200. package/dist/components/ui/card/card-header.svelte +16 -0
  201. package/dist/components/ui/card/card-header.svelte.d.ts +5 -0
  202. package/dist/components/ui/card/card-title.svelte +25 -0
  203. package/dist/components/ui/card/card-title.svelte.d.ts +8 -0
  204. package/dist/components/ui/card/card.svelte +20 -0
  205. package/dist/components/ui/card/card.svelte.d.ts +5 -0
  206. package/dist/components/ui/card/index.d.ts +7 -0
  207. package/dist/components/ui/card/index.js +7 -0
  208. package/dist/components/ui/checkbox/checkbox.svelte +35 -0
  209. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +4 -0
  210. package/dist/components/ui/checkbox/index.d.ts +2 -0
  211. package/dist/components/ui/checkbox/index.js +4 -0
  212. package/dist/components/ui/collapsible/index.d.ts +16 -0
  213. package/dist/components/ui/collapsible/index.js +7 -0
  214. package/dist/components/ui/command/command-dialog.svelte +35 -0
  215. package/dist/components/ui/command/command-dialog.svelte.d.ts +9 -0
  216. package/dist/components/ui/command/command-empty.svelte +12 -0
  217. package/dist/components/ui/command/command-empty.svelte.d.ts +4 -0
  218. package/dist/components/ui/command/command-group.svelte +29 -0
  219. package/dist/components/ui/command/command-group.svelte.d.ts +7 -0
  220. package/dist/components/ui/command/command-input.svelte +25 -0
  221. package/dist/components/ui/command/command-input.svelte.d.ts +4 -0
  222. package/dist/components/ui/command/command-item.svelte +19 -0
  223. package/dist/components/ui/command/command-item.svelte.d.ts +4 -0
  224. package/dist/components/ui/command/command-link-item.svelte +19 -0
  225. package/dist/components/ui/command/command-link-item.svelte.d.ts +4 -0
  226. package/dist/components/ui/command/command-list.svelte +16 -0
  227. package/dist/components/ui/command/command-list.svelte.d.ts +4 -0
  228. package/dist/components/ui/command/command-separator.svelte +12 -0
  229. package/dist/components/ui/command/command-separator.svelte.d.ts +4 -0
  230. package/dist/components/ui/command/command-shortcut.svelte +20 -0
  231. package/dist/components/ui/command/command-shortcut.svelte.d.ts +5 -0
  232. package/dist/components/ui/command/command.svelte +21 -0
  233. package/dist/components/ui/command/command.svelte.d.ts +4 -0
  234. package/dist/components/ui/command/index.d.ts +13 -0
  235. package/dist/components/ui/command/index.js +15 -0
  236. package/dist/components/ui/dialog/dialog-content.svelte +38 -0
  237. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +9 -0
  238. package/dist/components/ui/dialog/dialog-description.svelte +16 -0
  239. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +4 -0
  240. package/dist/components/ui/dialog/dialog-footer.svelte +20 -0
  241. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +5 -0
  242. package/dist/components/ui/dialog/dialog-header.svelte +20 -0
  243. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +5 -0
  244. package/dist/components/ui/dialog/dialog-overlay.svelte +19 -0
  245. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  246. package/dist/components/ui/dialog/dialog-title.svelte +16 -0
  247. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +4 -0
  248. package/dist/components/ui/dialog/index.d.ts +12 -0
  249. package/dist/components/ui/dialog/index.js +14 -0
  250. package/dist/components/ui/drawer/drawer-content.svelte +30 -0
  251. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +7 -0
  252. package/dist/components/ui/drawer/drawer-description.svelte +16 -0
  253. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +4 -0
  254. package/dist/components/ui/drawer/drawer-footer.svelte +16 -0
  255. package/dist/components/ui/drawer/drawer-footer.svelte.d.ts +5 -0
  256. package/dist/components/ui/drawer/drawer-header.svelte +20 -0
  257. package/dist/components/ui/drawer/drawer-header.svelte.d.ts +5 -0
  258. package/dist/components/ui/drawer/drawer-nested.svelte +12 -0
  259. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +3 -0
  260. package/dist/components/ui/drawer/drawer-overlay.svelte +16 -0
  261. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +4 -0
  262. package/dist/components/ui/drawer/drawer-title.svelte +16 -0
  263. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +4 -0
  264. package/dist/components/ui/drawer/drawer.svelte +12 -0
  265. package/dist/components/ui/drawer/drawer.svelte.d.ts +3 -0
  266. package/dist/components/ui/drawer/index.d.ts +13 -0
  267. package/dist/components/ui/drawer/index.js +15 -0
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +40 -0
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -0
  270. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +26 -0
  271. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +7 -0
  272. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +19 -0
  273. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +7 -0
  274. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +23 -0
  275. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +7 -0
  276. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +23 -0
  277. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  278. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +30 -0
  279. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  280. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +16 -0
  281. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  282. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  283. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  284. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +19 -0
  285. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
  286. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +28 -0
  287. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  288. package/dist/components/ui/dropdown-menu/index.d.ts +25 -0
  289. package/dist/components/ui/dropdown-menu/index.js +17 -0
  290. package/dist/components/ui/hover-card/hover-card-content.svelte +28 -0
  291. package/dist/components/ui/hover-card/hover-card-content.svelte.d.ts +7 -0
  292. package/dist/components/ui/hover-card/index.d.ts +5 -0
  293. package/dist/components/ui/hover-card/index.js +5 -0
  294. package/dist/components/ui/input/index.d.ts +2 -0
  295. package/dist/components/ui/input/index.js +4 -0
  296. package/dist/components/ui/input/input.svelte +22 -0
  297. package/dist/components/ui/input/input.svelte.d.ts +5 -0
  298. package/dist/components/ui/input-otp/index.d.ts +5 -0
  299. package/dist/components/ui/input-otp/index.js +7 -0
  300. package/dist/components/ui/input-otp/input-otp-group.svelte +16 -0
  301. package/dist/components/ui/input-otp/input-otp-group.svelte.d.ts +5 -0
  302. package/dist/components/ui/input-otp/input-otp-separator.svelte +19 -0
  303. package/dist/components/ui/input-otp/input-otp-separator.svelte.d.ts +5 -0
  304. package/dist/components/ui/input-otp/input-otp-slot.svelte +30 -0
  305. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +12 -0
  306. package/dist/components/ui/input-otp/input-otp.svelte +22 -0
  307. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +3 -0
  308. package/dist/components/ui/label/index.d.ts +2 -0
  309. package/dist/components/ui/label/index.js +4 -0
  310. package/dist/components/ui/label/label.svelte +19 -0
  311. package/dist/components/ui/label/label.svelte.d.ts +4 -0
  312. package/dist/components/ui/popover/index.d.ts +6 -0
  313. package/dist/components/ui/popover/index.js +6 -0
  314. package/dist/components/ui/popover/popover-content.svelte +28 -0
  315. package/dist/components/ui/popover/popover-content.svelte.d.ts +7 -0
  316. package/dist/components/ui/progress/index.d.ts +2 -0
  317. package/dist/components/ui/progress/index.js +4 -0
  318. package/dist/components/ui/progress/progress.svelte +25 -0
  319. package/dist/components/ui/progress/progress.svelte.d.ts +4 -0
  320. package/dist/components/ui/radio-group/index.d.ts +3 -0
  321. package/dist/components/ui/radio-group/index.js +5 -0
  322. package/dist/components/ui/radio-group/radio-group-item.svelte +28 -0
  323. package/dist/components/ui/radio-group/radio-group-item.svelte.d.ts +4 -0
  324. package/dist/components/ui/radio-group/radio-group.svelte +13 -0
  325. package/dist/components/ui/radio-group/radio-group.svelte.d.ts +4 -0
  326. package/dist/components/ui/range-calendar/index.d.ts +15 -0
  327. package/dist/components/ui/range-calendar/index.js +17 -0
  328. package/dist/components/ui/range-calendar/range-calendar-cell.svelte +19 -0
  329. package/dist/components/ui/range-calendar/range-calendar-cell.svelte.d.ts +4 -0
  330. package/dist/components/ui/range-calendar/range-calendar-day.svelte +34 -0
  331. package/dist/components/ui/range-calendar/range-calendar-day.svelte.d.ts +4 -0
  332. package/dist/components/ui/range-calendar/range-calendar-grid-row.svelte +12 -0
  333. package/dist/components/ui/range-calendar/range-calendar-grid-row.svelte.d.ts +4 -0
  334. package/dist/components/ui/range-calendar/range-calendar-grid.svelte +16 -0
  335. package/dist/components/ui/range-calendar/range-calendar-grid.svelte.d.ts +4 -0
  336. package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +16 -0
  337. package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte.d.ts +4 -0
  338. package/dist/components/ui/range-calendar/range-calendar-header.svelte +16 -0
  339. package/dist/components/ui/range-calendar/range-calendar-header.svelte.d.ts +4 -0
  340. package/dist/components/ui/range-calendar/range-calendar-heading.svelte +16 -0
  341. package/dist/components/ui/range-calendar/range-calendar-heading.svelte.d.ts +4 -0
  342. package/dist/components/ui/range-calendar/range-calendar-months.svelte +20 -0
  343. package/dist/components/ui/range-calendar/range-calendar-months.svelte.d.ts +5 -0
  344. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +28 -0
  345. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte.d.ts +4 -0
  346. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +28 -0
  347. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte.d.ts +4 -0
  348. package/dist/components/ui/range-calendar/range-calendar.svelte +57 -0
  349. package/dist/components/ui/range-calendar/range-calendar.svelte.d.ts +5 -0
  350. package/dist/components/ui/scroll-area/index.d.ts +3 -0
  351. package/dist/components/ui/scroll-area/index.js +6 -0
  352. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +29 -0
  353. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  354. package/dist/components/ui/scroll-area/scroll-area.svelte +32 -0
  355. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +9 -0
  356. package/dist/components/ui/select/index.d.ts +11 -0
  357. package/dist/components/ui/select/index.js +13 -0
  358. package/dist/components/ui/select/select-content.svelte +39 -0
  359. package/dist/components/ui/select/select-content.svelte.d.ts +7 -0
  360. package/dist/components/ui/select/select-group-heading.svelte +16 -0
  361. package/dist/components/ui/select/select-group-heading.svelte.d.ts +4 -0
  362. package/dist/components/ui/select/select-item.svelte +37 -0
  363. package/dist/components/ui/select/select-item.svelte.d.ts +4 -0
  364. package/dist/components/ui/select/select-scroll-down-button.svelte +19 -0
  365. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +4 -0
  366. package/dist/components/ui/select/select-scroll-up-button.svelte +19 -0
  367. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +4 -0
  368. package/dist/components/ui/select/select-separator.svelte +13 -0
  369. package/dist/components/ui/select/select-separator.svelte.d.ts +4 -0
  370. package/dist/components/ui/select/select-trigger.svelte +24 -0
  371. package/dist/components/ui/select/select-trigger.svelte.d.ts +4 -0
  372. package/dist/components/ui/separator/index.d.ts +2 -0
  373. package/dist/components/ui/separator/index.js +4 -0
  374. package/dist/components/ui/separator/separator.svelte +22 -0
  375. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  376. package/dist/components/ui/slider/index.d.ts +3 -0
  377. package/dist/components/ui/slider/index.js +5 -0
  378. package/dist/components/ui/slider/slider.svelte +34 -0
  379. package/dist/components/ui/slider/slider.svelte.d.ts +4 -0
  380. package/dist/components/ui/sonner/index.d.ts +2 -0
  381. package/dist/components/ui/sonner/index.js +2 -0
  382. package/dist/components/ui/sonner/sonner.svelte +20 -0
  383. package/dist/components/ui/sonner/sonner.svelte.d.ts +4 -0
  384. package/dist/components/ui/switch/index.d.ts +2 -0
  385. package/dist/components/ui/switch/index.js +4 -0
  386. package/dist/components/ui/switch/switch.svelte +27 -0
  387. package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
  388. package/dist/components/ui/table/index.d.ts +9 -0
  389. package/dist/components/ui/table/index.js +11 -0
  390. package/dist/components/ui/table/table-body.svelte +16 -0
  391. package/dist/components/ui/table/table-body.svelte.d.ts +5 -0
  392. package/dist/components/ui/table/table-caption.svelte +16 -0
  393. package/dist/components/ui/table/table-caption.svelte.d.ts +5 -0
  394. package/dist/components/ui/table/table-cell.svelte +20 -0
  395. package/dist/components/ui/table/table-cell.svelte.d.ts +5 -0
  396. package/dist/components/ui/table/table-footer.svelte +16 -0
  397. package/dist/components/ui/table/table-footer.svelte.d.ts +5 -0
  398. package/dist/components/ui/table/table-head.svelte +23 -0
  399. package/dist/components/ui/table/table-head.svelte.d.ts +5 -0
  400. package/dist/components/ui/table/table-header.svelte +16 -0
  401. package/dist/components/ui/table/table-header.svelte.d.ts +5 -0
  402. package/dist/components/ui/table/table-row.svelte +23 -0
  403. package/dist/components/ui/table/table-row.svelte.d.ts +5 -0
  404. package/dist/components/ui/table/table.svelte +18 -0
  405. package/dist/components/ui/table/table.svelte.d.ts +5 -0
  406. package/dist/components/ui/tabs/index.d.ts +6 -0
  407. package/dist/components/ui/tabs/index.js +8 -0
  408. package/dist/components/ui/tabs/tabs-content.svelte +19 -0
  409. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  410. package/dist/components/ui/tabs/tabs-list.svelte +19 -0
  411. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  412. package/dist/components/ui/tabs/tabs-trigger.svelte +19 -0
  413. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  414. package/dist/components/ui/textarea/index.d.ts +19 -0
  415. package/dist/components/ui/textarea/index.js +4 -0
  416. package/dist/components/ui/textarea/textarea.svelte +22 -0
  417. package/dist/components/ui/textarea/textarea.svelte.d.ts +5 -0
  418. package/dist/components/ui/toggle/index.d.ts +3 -0
  419. package/dist/components/ui/toggle/index.js +5 -0
  420. package/dist/components/ui/toggle/toggle.svelte +51 -0
  421. package/dist/components/ui/toggle/toggle.svelte.d.ts +83 -0
  422. package/dist/components/ui/toggle-group/index.d.ts +3 -0
  423. package/dist/components/ui/toggle-group/index.js +5 -0
  424. package/dist/components/ui/toggle-group/toggle-group-item.svelte +30 -0
  425. package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +6 -0
  426. package/dist/components/ui/toggle-group/toggle-group.svelte +41 -0
  427. package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +8 -0
  428. package/dist/components/ui/tooltip/index.d.ts +6 -0
  429. package/dist/components/ui/tooltip/index.js +8 -0
  430. package/dist/components/ui/tooltip/tooltip-content.svelte +21 -0
  431. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +4 -0
  432. package/dist/components/widget-system/EditableWidget.svelte +106 -0
  433. package/dist/components/widget-system/EditableWidget.svelte.d.ts +44 -0
  434. package/dist/components/widget-system/Moveable.svelte +661 -0
  435. package/dist/components/widget-system/Moveable.svelte.d.ts +56 -0
  436. package/dist/components/widget-system/index.d.ts +2 -0
  437. package/dist/components/widget-system/index.js +3 -0
  438. package/dist/fonts/BLMelody/BLMelody-Bold.woff2 +0 -0
  439. package/dist/fonts/BLMelody/BLMelody-Medium.woff2 +0 -0
  440. package/dist/fonts/BLMelody/BLMelody-SemiBold.woff2 +0 -0
  441. package/dist/fonts/Riegla/Riegla-Bold Italic.otf +0 -0
  442. package/dist/fonts/Riegla/Riegla-Bold.otf +0 -0
  443. package/dist/fonts/Riegla/Riegla-Italic.otf +0 -0
  444. package/dist/fonts/Riegla/Riegla-Regular.otf +0 -0
  445. package/dist/fonts/Riegla/RieglaMedium-Regular.otf +0 -0
  446. package/dist/fonts/index.d.ts +0 -0
  447. package/dist/fonts/index.js +1 -0
  448. package/dist/hooks/is-mobile.svelte.d.ts +5 -0
  449. package/dist/hooks/is-mobile.svelte.js +23 -0
  450. package/dist/icons/Checked.svelte +19 -0
  451. package/dist/icons/Checked.svelte.d.ts +20 -0
  452. package/dist/icons/CheckerBoardBackground.svelte +16 -0
  453. package/dist/icons/CheckerBoardBackground.svelte.d.ts +3 -0
  454. package/dist/icons/Close.svelte +22 -0
  455. package/dist/icons/Close.svelte.d.ts +20 -0
  456. package/dist/icons/Close.svg +8 -0
  457. package/dist/icons/Error.svg +5 -0
  458. package/dist/icons/Exclamation.svelte +5 -0
  459. package/dist/icons/Exclamation.svelte.d.ts +26 -0
  460. package/dist/icons/FileBrowser.svelte +38 -0
  461. package/dist/icons/FileBrowser.svelte.d.ts +20 -0
  462. package/dist/icons/FileBrowser.svg +28 -0
  463. package/dist/icons/LogoWidgetic.svelte +24 -0
  464. package/dist/icons/LogoWidgetic.svelte.d.ts +20 -0
  465. package/dist/icons/LogoWidgeticType.svelte +12 -0
  466. package/dist/icons/LogoWidgeticType.svelte.d.ts +20 -0
  467. package/dist/icons/LogoWidgeticType.svg +4 -0
  468. package/dist/icons/OpacitySliderArrows.svelte +46 -0
  469. package/dist/icons/OpacitySliderArrows.svelte.d.ts +3 -0
  470. package/dist/icons/TestIcon.svelte +1 -0
  471. package/dist/icons/TestIcon.svelte.d.ts +26 -0
  472. package/dist/icons/checked.svg +4 -0
  473. package/dist/icons/index.d.ts +11 -0
  474. package/dist/icons/index.js +15 -0
  475. package/dist/icons/lucide.d.ts +1 -0
  476. package/dist/icons/lucide.js +1 -0
  477. package/dist/icons/tabler.d.ts +1 -0
  478. package/dist/icons/tabler.js +1 -0
  479. package/dist/index.d.ts +3 -0
  480. package/dist/index.js +9 -0
  481. package/dist/stores/index.d.ts +1 -0
  482. package/dist/stores/index.js +1 -0
  483. package/dist/stores/pdfCache.d.ts +16 -0
  484. package/dist/stores/pdfCache.js +101 -0
  485. package/dist/styles/fonts.css +172 -0
  486. package/dist/styles/global.css +893 -0
  487. package/dist/utils/MediaManager.d.ts +35 -0
  488. package/dist/utils/MediaManager.js +59 -0
  489. package/dist/utils.d.ts +2 -0
  490. package/dist/utils.js +5 -0
  491. package/package.json +183 -0
  492. package/tailwind.config.ts +97 -0
@@ -0,0 +1,608 @@
1
+ <script lang="ts">
2
+ // Svelte imports
3
+ import { onMount, onDestroy, tick, afterUpdate, createEventDispatcher } from 'svelte';
4
+
5
+ // Sveltekit imports
6
+ import { browser } from '$app/environment';
7
+ import { base } from '$app/paths';
8
+
9
+ // Local components imports
10
+ import { WScrollArea } from '../../components';
11
+
12
+ // Import arrow icons for navigation
13
+ import { IconChevronLeft, IconChevronRight } from '../../icons';
14
+
15
+ // Whether to show log messages
16
+ let showLogs = false;
17
+
18
+ // import pdfjs library
19
+ import * as pdfjsLib from 'pdfjs-dist';
20
+ import { type PDFDocumentProxy } from 'pdfjs-dist';
21
+
22
+ // Set the worker source to use local worker file from pdfjs-dist package
23
+ if (browser) {
24
+ // Try to load worker using import.meta.url for correct path resolution
25
+ // This works better with bundlers like Vite and provides correct paths in both dev and prod
26
+ try {
27
+ pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
28
+ 'pdfjs-dist/build/pdf.worker.min.mjs',
29
+ import.meta.url
30
+ ).toString();
31
+
32
+ if(showLogs) console.log('PDF Worker URL set to:', pdfjsLib.GlobalWorkerOptions.workerSrc);
33
+ } catch (error) {
34
+ if(showLogs) console.error('Error setting PDF worker path:', error);
35
+ // Fallback to CDN as a last resort
36
+ pdfjsLib.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.js`;
37
+ if(showLogs) console.log('PDF Worker URL fallback set to:', pdfjsLib.GlobalWorkerOptions.workerSrc);
38
+ }
39
+ }
40
+
41
+ // Import PDF cache store
42
+ import { pdfCache } from '../../stores/pdfCache';
43
+
44
+ // Component props
45
+ // class and style props
46
+ let className = '';
47
+ export { className as class };
48
+ export let style: string = '';
49
+ // data props
50
+ export let url = '';
51
+ export let enableCacheClearing: boolean = true; // Flag to enable/disable cache clearing shortcut
52
+
53
+ // Consts
54
+ const initialContainerWidth = 500; // Default width during loading
55
+ const initialContainerHeight = 300; // Default height during loading
56
+ const scrolledAreaMaxHeight = 900;
57
+
58
+ // Local vars
59
+ let pdfDoc: PDFDocumentProxy | null = null;
60
+ let pageNum = 1;
61
+ let pageCount = 0;
62
+ let pageRendering = false;
63
+ let pageNumPending: number | null = null;
64
+ let scale = 1.5;
65
+ let loading = true;
66
+ let error: string | null = null;
67
+ let mounted = false;
68
+ let currentUrl = '';
69
+ let canvasWidth = initialContainerWidth; // Start with initial size
70
+ let canvasHeight = initialContainerHeight; // Start with initial size
71
+ let isCanvasReady = false;
72
+ let containerDiv: HTMLDivElement;
73
+ let canvasContainer: HTMLDivElement;
74
+ let renderStartTime = 0;
75
+ let pdfLoadStartTime = 0;
76
+ let renderingPhase = 'not_started'; // 'not_started', 'loading_pdf', 'calculating_dimensions', 'rendering', 'complete'
77
+ let showPdfContent = false; // Control visibility of PDF content
78
+ let loadedFromCache = false; // Track if the current PDF was loaded from cache
79
+
80
+ const dispatch = createEventDispatcher<{
81
+ error: { message: string };
82
+ pageChange: { page: number, totalPages: number };
83
+ cacheCleared: void;
84
+ }>();
85
+
86
+ // Debug reactive statement to track state changes
87
+ $: if (showLogs) {
88
+ console.log('State update:', {
89
+ loading,
90
+ isCanvasReady,
91
+ error,
92
+ mounted,
93
+ url,
94
+ renderingPhase,
95
+ pageRendering,
96
+ hasCanvasContainer: !!canvasContainer,
97
+ hasPdfDoc: !!pdfDoc,
98
+ pageCount,
99
+ showPdfContent,
100
+ elapsedTime: renderStartTime ? Math.round((Date.now() - renderStartTime) / 100) / 10 + 's' : 'N/A',
101
+ canvasWidth,
102
+ canvasHeight,
103
+ loadedFromCache
104
+ });
105
+ }
106
+
107
+ // Add afterUpdate to track when the UI updates
108
+ afterUpdate(() => {
109
+ if (showLogs) {
110
+ console.log('UI UPDATED:', {
111
+ loading,
112
+ isCanvasReady,
113
+ error,
114
+ mounted,
115
+ renderingPhase,
116
+ hasCanvasContainer: !!canvasContainer,
117
+ hasPdfDoc: !!pdfDoc,
118
+ canvasWidth,
119
+ canvasHeight,
120
+ containerWidth: containerDiv?.clientWidth,
121
+ pageCount,
122
+ showPdfContent,
123
+ loadedFromCache
124
+ });
125
+ }
126
+ });
127
+
128
+ // Function to handle keyboard shortcuts
129
+ function handleKeyDown(event: KeyboardEvent) {
130
+ // Handle CMD/CTRL + SHIFT + P to clear PDF cache (hidden developer shortcut)
131
+ if (enableCacheClearing && (event.metaKey || event.ctrlKey) && event.shiftKey && event.key === 'p') {
132
+ event.preventDefault();
133
+ event.stopPropagation();
134
+
135
+ // Clear the PDF cache
136
+ pdfCache.clear();
137
+ if (showLogs) console.log('PDF cache cleared via keyboard shortcut');
138
+ dispatch('cacheCleared');
139
+ }
140
+ }
141
+
142
+ // Initialize PDF.js with the bundled worker
143
+ onMount(async () => {
144
+ if (!browser) return;
145
+
146
+ try {
147
+ // Enable or disable logging in the PDF cache
148
+ pdfCache.setLogging(showLogs);
149
+
150
+ // Add keyboard event listener for cache clearing
151
+ if (enableCacheClearing) {
152
+ window.addEventListener('keydown', handleKeyDown);
153
+ }
154
+
155
+ await tick();
156
+ mounted = true;
157
+ if (showLogs) console.log('Component mounted, container available:', !!containerDiv);
158
+
159
+ if (url) {
160
+ if (showLogs) console.log('Starting initial load with URL:', url);
161
+ await loadPDF();
162
+ }
163
+ } catch (err) {
164
+ console.error('Error in onMount:', err);
165
+ error = 'Failed to initialize PDF viewer';
166
+ dispatch('error', { message: 'Failed to initialize PDF viewer' });
167
+ } finally {
168
+ loading = false;
169
+ }
170
+ });
171
+
172
+ // Watch for URL changes - only trigger load if URL actually changes
173
+ $: if (url && mounted && !loading && url !== currentUrl) {
174
+ if (showLogs) console.log('URL changed, loading PDF');
175
+ currentUrl = url;
176
+ loadPDF();
177
+ }
178
+
179
+ // Watch for canvasContainer binding to become available
180
+ $: if (canvasContainer && !canvasContainer.querySelector('canvas') && pdfDoc && renderingPhase === 'calculating_dimensions') {
181
+ if (showLogs) console.log('Canvas container now available, continuing with render');
182
+ renderPDF();
183
+ }
184
+
185
+ async function loadPDF() {
186
+ if (!url || !browser) {
187
+ console.error('Cannot load PDF: missing URL or not in browser');
188
+ return;
189
+ }
190
+
191
+ if (!containerDiv) {
192
+ console.error('Container div not found');
193
+ error = 'Container not available';
194
+ dispatch('error', { message: 'Container not available' });
195
+ return;
196
+ }
197
+
198
+ try {
199
+ // Reset state
200
+ loading = true;
201
+ error = null;
202
+ isCanvasReady = false;
203
+ showPdfContent = false;
204
+ loadedFromCache = false;
205
+
206
+ // Get absolute URL for cache key
207
+ const absoluteUrl = getAbsoluteUrl(url);
208
+
209
+ // Check if the PDF is in the cache
210
+ const cachedEntry = pdfCache.get(absoluteUrl);
211
+
212
+ // Use the cached PDF document
213
+ if (cachedEntry) {
214
+ if (showLogs) console.log('Using cached PDF document:', absoluteUrl);
215
+ pdfDoc = cachedEntry.document;
216
+ pageCount = pdfDoc.numPages;
217
+ pageNum = cachedEntry.pageNumber; // Restore the last viewed page
218
+ loadedFromCache = true;
219
+ renderingPhase = 'calculating_dimensions';
220
+
221
+ // Calculate dimensions but don't apply them yet
222
+ if (showLogs) console.log('Calculating dimensions for cached PDF, container width:', containerDiv.clientWidth);
223
+
224
+ const page = await pdfDoc.getPage(pageNum);
225
+ const containerWidth = containerDiv.clientWidth;
226
+ const viewport = page.getViewport({ scale: 1.0 });
227
+ scale = (containerWidth / viewport.width);
228
+
229
+ // Store calculated dimensions
230
+ canvasWidth = viewport.width * scale;
231
+ canvasHeight = viewport.height * scale;
232
+
233
+ if (showLogs) {
234
+ console.log('Dimensions calculated for cached PDF:', {
235
+ containerWidth,
236
+ originalWidth: viewport.width,
237
+ originalHeight: viewport.height,
238
+ scale,
239
+ canvasWidth,
240
+ canvasHeight,
241
+ pageNum
242
+ });
243
+ }
244
+
245
+ // Wait for the UI to update
246
+ await tick();
247
+
248
+ // If canvasContainer is already bound, proceed with rendering
249
+ if (canvasContainer) {
250
+ if (showLogs) console.log('Canvas container available, rendering cached PDF');
251
+ await renderPDF(canvasWidth, canvasHeight);
252
+ }
253
+ }
254
+ // Load the PDF from URL
255
+ else {
256
+
257
+ renderingPhase = 'loading_pdf';
258
+ pdfLoadStartTime = Date.now();
259
+
260
+ // Reset canvas size to initial dimensions during loading
261
+ canvasWidth = initialContainerWidth;
262
+ canvasHeight = initialContainerHeight;
263
+
264
+ if (showLogs) console.log('Loading PDF from URL:', { url: absoluteUrl });
265
+
266
+ // Load PDF directly with URL
267
+ const loadingTask = pdfjsLib.getDocument(absoluteUrl);
268
+ pdfDoc = await loadingTask.promise;
269
+ if (showLogs) console.log('PDF loaded successfully:', pdfDoc);
270
+
271
+ // Update the page count
272
+ pageCount = pdfDoc.numPages;
273
+ pageNum = 1; // Start at first page for newly loaded PDFs
274
+
275
+ // Cache the loaded PDF document
276
+ pdfCache.set(absoluteUrl, pdfDoc, pageNum);
277
+
278
+ if (showLogs) {
279
+ console.log('PDF loaded successfully and cached:', {
280
+ pageCount,
281
+ loadTime: Math.round((Date.now() - pdfLoadStartTime) / 100) / 10 + 's'
282
+ });
283
+ }
284
+
285
+ // Calculate dimensions but don't apply them yet
286
+ renderingPhase = 'calculating_dimensions';
287
+ if (showLogs) console.log('Calculating dimensions, container width:', containerDiv.clientWidth);
288
+
289
+ const page = await pdfDoc.getPage(1);
290
+ const containerWidth = containerDiv.clientWidth;
291
+ const viewport = page.getViewport({ scale: 1.0 });
292
+ scale = (containerWidth / viewport.width);
293
+
294
+ // Store calculated dimensions but don't apply them until rendering is complete
295
+ const calculatedWidth = viewport.width * scale;
296
+ const calculatedHeight = viewport.height * scale;
297
+
298
+ if (showLogs) {
299
+ console.log('Dimensions calculated:', {
300
+ containerWidth,
301
+ originalWidth: viewport.width,
302
+ originalHeight: viewport.height,
303
+ scale,
304
+ calculatedWidth,
305
+ calculatedHeight
306
+ });
307
+ }
308
+
309
+ // Wait for the UI to update
310
+ await tick();
311
+
312
+ // If canvasContainer is already bound, proceed with rendering
313
+ if (canvasContainer) {
314
+ if (showLogs) console.log('Canvas container available, rendering PDF');
315
+ await renderPDF(calculatedWidth, calculatedHeight);
316
+ } else {
317
+ if (showLogs) console.log('Canvas container not available yet, waiting for binding');
318
+ // Store dimensions for later use when container becomes available
319
+ canvasWidth = calculatedWidth;
320
+ canvasHeight = calculatedHeight;
321
+ // The reactive statement will catch when canvasContainer becomes available
322
+ }
323
+ }
324
+ } catch (err) {
325
+ if(showLogs) console.error('Error loading PDF:', err);
326
+ const errorMessage = err instanceof Error ? err.message : 'Failed to load PDF';
327
+ error = errorMessage;
328
+ dispatch('error', { message: errorMessage });
329
+ pdfDoc = null;
330
+ renderingPhase = 'error';
331
+ isCanvasReady = false;
332
+ } finally {
333
+ loading = false;
334
+ }
335
+ }
336
+
337
+ async function renderPDF(width?: number, height?: number) {
338
+ if (!pdfDoc) {
339
+ console.error('Cannot render PDF: missing PDF');
340
+ error = 'PDF not available';
341
+ return;
342
+ }
343
+
344
+ if (!canvasContainer) {
345
+ console.error('Cannot render PDF: canvas container not available');
346
+ error = 'Canvas container not available';
347
+ return;
348
+ }
349
+
350
+ try {
351
+ renderingPhase = 'rendering';
352
+ renderStartTime = Date.now();
353
+ if (showLogs) console.log('Starting PDF render');
354
+
355
+ // Clear any existing canvas
356
+ canvasContainer.innerHTML = '';
357
+
358
+ // Apply final dimensions if provided
359
+ if (width && height) {
360
+ canvasWidth = width;
361
+ canvasHeight = height;
362
+ }
363
+
364
+ if (showLogs) {
365
+ console.log('Using dimensions for rendering:', {
366
+ canvasWidth,
367
+ canvasHeight
368
+ });
369
+ }
370
+
371
+ // Create a new canvas element
372
+ const canvas = document.createElement('canvas');
373
+ canvas.className = 'max-w-full h-auto mx-auto';
374
+ canvas.width = canvasWidth;
375
+ canvas.height = canvasHeight;
376
+
377
+ // Add the canvas to the container
378
+ canvasContainer.appendChild(canvas);
379
+
380
+ if (showLogs) {
381
+ console.log('Canvas created and added to DOM:', {
382
+ width: canvas.width,
383
+ height: canvas.height
384
+ });
385
+ }
386
+
387
+ // Render the current page (pageNum might be restored from cache)
388
+ await renderPage(pageNum, canvas);
389
+
390
+ if (showLogs) console.log('Render complete, setting isCanvasReady to true');
391
+ renderingPhase = 'complete';
392
+
393
+ // Now that rendering is complete, set isCanvasReady to true
394
+ // This will trigger the size change and content display
395
+ isCanvasReady = true;
396
+
397
+ // Show PDF content after a short delay to ensure everything is ready
398
+ setTimeout(() => {
399
+ showPdfContent = true;
400
+ }, 100);
401
+ } catch (err) {
402
+ console.error('Error in renderPDF:', err);
403
+ error = err instanceof Error ? err.message : 'Failed to render PDF';
404
+ renderingPhase = 'error';
405
+ }
406
+ }
407
+
408
+ function getAbsoluteUrl(relativeUrl: string): string {
409
+ if (relativeUrl.startsWith('http://') || relativeUrl.startsWith('https://')) {
410
+ return relativeUrl;
411
+ }
412
+ const baseUrl = window.location.origin + (base || '');
413
+ const cleanRelativeUrl = relativeUrl.startsWith('/') ? relativeUrl.slice(1) : relativeUrl;
414
+ const cleanBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
415
+ return `${cleanBaseUrl}/${cleanRelativeUrl}`;
416
+ }
417
+
418
+ async function renderPage(num: number, canvas: HTMLCanvasElement) {
419
+ if (!pdfDoc) {
420
+ console.error('Cannot render: missing PDF');
421
+ return;
422
+ }
423
+
424
+ if (!canvas) {
425
+ console.error('Cannot render: missing canvas');
426
+ return;
427
+ }
428
+
429
+ pageRendering = true;
430
+ const pageRenderStart = Date.now();
431
+ try {
432
+ if (showLogs) console.log('Starting page render:', num);
433
+ const page = await pdfDoc.getPage(num);
434
+ const scaledViewport = page.getViewport({ scale });
435
+
436
+ const ctx = canvas.getContext('2d');
437
+ if (!ctx) throw new Error('Could not get canvas context');
438
+
439
+ if (showLogs) {
440
+ console.log('Rendering to canvas context:', {
441
+ canvasWidth: canvas.width,
442
+ canvasHeight: canvas.height,
443
+ viewportWidth: scaledViewport.width,
444
+ viewportHeight: scaledViewport.height
445
+ });
446
+ }
447
+
448
+ await page.render({
449
+ canvasContext: ctx,
450
+ viewport: scaledViewport
451
+ }).promise;
452
+
453
+ if (showLogs) {
454
+ console.log('Page rendered successfully', {
455
+ renderTime: Math.round((Date.now() - pageRenderStart) / 100) / 10 + 's',
456
+ totalTime: Math.round((Date.now() - renderStartTime) / 100) / 10 + 's'
457
+ });
458
+ }
459
+
460
+ pageRendering = false;
461
+ pageNum = num;
462
+
463
+ // Update the page number in the cache
464
+ if (pdfDoc && url) {
465
+ const absoluteUrl = getAbsoluteUrl(url);
466
+ pdfCache.updatePageNumber(absoluteUrl, pageNum);
467
+ }
468
+
469
+ if (pageNumPending !== null) {
470
+ renderPage(pageNumPending, canvas);
471
+ pageNumPending = null;
472
+ }
473
+ } catch (err) {
474
+ console.error('Error rendering page:', err);
475
+ error = err instanceof Error ? err.message : 'Failed to render page';
476
+ pageRendering = false;
477
+ renderingPhase = 'error';
478
+ }
479
+ }
480
+
481
+ function queueRenderPage(num: number) {
482
+ if (pageRendering) {
483
+ pageNumPending = num;
484
+ } else {
485
+ // Get the canvas from the container
486
+ const canvas = canvasContainer?.querySelector('canvas') as HTMLCanvasElement;
487
+ if (canvas) {
488
+ renderPage(num, canvas);
489
+ } else {
490
+ console.error('Cannot queue render: no canvas found');
491
+ }
492
+ }
493
+ }
494
+
495
+ function onPrevPage() {
496
+ if (pageNum <= 1) return;
497
+ queueRenderPage(pageNum - 1);
498
+ }
499
+
500
+ function onNextPage() {
501
+ if (pageNum >= pageCount) return;
502
+ queueRenderPage(pageNum + 1);
503
+ }
504
+
505
+ // Dispatch the pageChange event when the page changes
506
+ $: if (pdfDoc && pageNum > 0 && pageCount > 0) {
507
+ dispatch('pageChange', { page: pageNum, totalPages: pageCount });
508
+ }
509
+
510
+ onDestroy(() => {
511
+ if (enableCacheClearing) {
512
+ window.removeEventListener('keydown', handleKeyDown);
513
+ }
514
+
515
+ // Don't destroy the PDF document on component destroy
516
+ // as it's now cached in the store
517
+ // The store will handle proper cleanup when needed
518
+
519
+ // Just clear the local reference
520
+ pdfDoc = null;
521
+ });
522
+ </script>
523
+
524
+ <!-- PDF Viewer HTML template -->
525
+
526
+ <div class="{className ? className + ' ' : ''}pdf-viewer-container w-full h-full px-4 widgetic-colors relative" bind:this={containerDiv} style={style}>
527
+ <!-- Always render loading or error state on top of content -->
528
+ {#if !mounted || loading || (!isCanvasReady && !error)}
529
+ <div class="text-[hsl(var(--grey5))] p-6 absolute z-10 widgetic-colors flex items-center justify-center inset-0">
530
+ Loading PDF...
531
+ </div>
532
+ {:else if error}
533
+ <div class="pdf-error-overlay bg-[hsl(var(--grey1))] text-[hsl(var(--grey2))] inset-4 px-4 absolute z-10 flex flex-col items-center justify-center">
534
+ <p class="text-[hsl(var(--error))] mb-2">Failed to load PDF</p>
535
+ <p class="text-[hsl(var(--grey5))] text-sm">{error}</p>
536
+ </div>
537
+ {/if}
538
+
539
+ <!-- Always render the content area regardless of loading state -->
540
+ <div class="pdf-root-container flex flex-col w-full {!isCanvasReady ? 'opacity-0' : 'opacity-100'} rounded-large bg-[hsl(var(--grey1))] relative"
541
+ style="height: {isCanvasReady ? 'auto' : `${initialContainerHeight}px`};">
542
+ <!-- Page Navigation Bar -->
543
+ <div class="page-navigation-bar flex items-center justify-center h-[54px] widgetic-colors border-b border-[hsl(var(--grey2))] w-full">
544
+ <div class="flex items-center gap-3 w-full max-w-[200px] justify-between px-0">
545
+ <button
546
+ class="pdf-nav-button h-9 w-9 flex items-center justify-center rounded-small bg-white border border-[hsl(var(--grey2))] transition-colors group active:scale-95 disabled:opacity-50"
547
+ onclick={onPrevPage}
548
+ disabled={pageNum <= 1}
549
+ aria-label="Previous page"
550
+ >
551
+ <IconChevronLeft
552
+ class="!text-[hsl(var(--grey5))] group-hover:!text-[hsl(var(--grey7))]"
553
+ style="width: 20px !important; height: 20px !important; min-width: 20px !important; min-height: 20px !important; max-width: 20px !important; max-height: 20px !important;"
554
+ />
555
+ </button>
556
+
557
+ <span class="subtext text-[hsl(var(--grey7))]">Page {pageNum} of {pageCount || '?'}</span>
558
+
559
+ <button
560
+ class="pdf-nav-button h-9 w-9 flex items-center justify-center rounded-small bg-white border border-[hsl(var(--grey2))] transition-colors group active:scale-95 disabled:opacity-50"
561
+ onclick={onNextPage}
562
+ disabled={pageNum >= pageCount}
563
+ aria-label="Next page"
564
+ >
565
+ <IconChevronRight
566
+ class="!text-[hsl(var(--grey5))] group-hover:!text-[hsl(var(--grey7))]"
567
+ style="width: 20px !important; height: 20px !important; min-width: 20px !important; min-height: 20px !important; max-width: 20px !important; max-height: 20px !important;"
568
+ />
569
+ </button>
570
+ </div>
571
+ </div>
572
+
573
+ <!-- PDF Canvas Container - always rendered but initially hidden -->
574
+ <WScrollArea class="pdf-content-scroll-area" type="always" scrollOutside={true}>
575
+ <div class="canvas-container" bind:this={canvasContainer}
576
+ style="min-height: {initialContainerHeight}px; max-height: {scrolledAreaMaxHeight}px;"
577
+ >
578
+ <!-- Canvas will be inserted programmatically here -->
579
+ </div>
580
+ </WScrollArea>
581
+ </div>
582
+ </div>
583
+
584
+ <style>
585
+ :global(.canvas-container canvas) {
586
+ margin: 0;
587
+ }
588
+
589
+ /* Ensure the loading container has a minimum size */
590
+ .pdf-viewer-container {
591
+ min-width: 300px;
592
+ min-height: 200px;
593
+ }
594
+
595
+ /* Add pseudo-element border ::after that stays on top */
596
+ .pdf-root-container::after {
597
+ content: '';
598
+ position: absolute;
599
+ top: 0;
600
+ left: 0;
601
+ width: 100%;
602
+ height: 100%;
603
+ border: 1px solid hsl(var(--grey2));
604
+ border-radius: var(--radius-large); /* Matches rounded-large */
605
+ z-index: 20; /* Higher than any child */
606
+ pointer-events: none; /* Allows clicking through the border */
607
+ }
608
+ </style>
@@ -0,0 +1,32 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const PdfViewer: $$__sveltets_2_IsomorphicComponent<{
15
+ class?: string;
16
+ style?: string;
17
+ url?: string;
18
+ enableCacheClearing?: boolean;
19
+ }, {
20
+ error: CustomEvent<{
21
+ message: string;
22
+ }>;
23
+ pageChange: CustomEvent<{
24
+ page: number;
25
+ totalPages: number;
26
+ }>;
27
+ cacheCleared: CustomEvent<void>;
28
+ } & {
29
+ [evt: string]: CustomEvent<any>;
30
+ }, {}, {}, string>;
31
+ type PdfViewer = InstanceType<typeof PdfViewer>;
32
+ export default PdfViewer;