@walkthru-earth/objex 0.1.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 (367) hide show
  1. package/LICENSE +396 -0
  2. package/README.md +114 -0
  3. package/dist/assets/favicon.svg +17 -0
  4. package/dist/components/CLAUDE.md +44 -0
  5. package/dist/components/browser/Breadcrumb.svelte +50 -0
  6. package/dist/components/browser/Breadcrumb.svelte.d.ts +7 -0
  7. package/dist/components/browser/CreateFolderDialog.svelte +98 -0
  8. package/dist/components/browser/CreateFolderDialog.svelte.d.ts +6 -0
  9. package/dist/components/browser/DeleteConfirmDialog.svelte +90 -0
  10. package/dist/components/browser/DeleteConfirmDialog.svelte.d.ts +8 -0
  11. package/dist/components/browser/DropZone.svelte +83 -0
  12. package/dist/components/browser/DropZone.svelte.d.ts +7 -0
  13. package/dist/components/browser/FileBrowser.svelte +229 -0
  14. package/dist/components/browser/FileBrowser.svelte.d.ts +3 -0
  15. package/dist/components/browser/FileRow.svelte +112 -0
  16. package/dist/components/browser/FileRow.svelte.d.ts +9 -0
  17. package/dist/components/browser/FileTreeSidebar.svelte +559 -0
  18. package/dist/components/browser/FileTreeSidebar.svelte.d.ts +8 -0
  19. package/dist/components/browser/RenameDialog.svelte +101 -0
  20. package/dist/components/browser/RenameDialog.svelte.d.ts +8 -0
  21. package/dist/components/browser/SearchBar.svelte +40 -0
  22. package/dist/components/browser/SearchBar.svelte.d.ts +6 -0
  23. package/dist/components/browser/UploadButton.svelte +65 -0
  24. package/dist/components/browser/UploadButton.svelte.d.ts +3 -0
  25. package/dist/components/editor/CodeMirrorEditor.svelte +404 -0
  26. package/dist/components/editor/CodeMirrorEditor.svelte.d.ts +12 -0
  27. package/dist/components/editor/MilkdownEditor.svelte +98 -0
  28. package/dist/components/editor/MilkdownEditor.svelte.d.ts +9 -0
  29. package/dist/components/editor/SqlEditor.svelte +173 -0
  30. package/dist/components/editor/SqlEditor.svelte.d.ts +7 -0
  31. package/dist/components/editor/SqlResultBlock.svelte +199 -0
  32. package/dist/components/editor/SqlResultBlock.svelte.d.ts +9 -0
  33. package/dist/components/layout/ConnectionDialog.svelte +439 -0
  34. package/dist/components/layout/ConnectionDialog.svelte.d.ts +9 -0
  35. package/dist/components/layout/LocaleToggle.svelte +32 -0
  36. package/dist/components/layout/LocaleToggle.svelte.d.ts +3 -0
  37. package/dist/components/layout/SafeLockToggle.svelte +37 -0
  38. package/dist/components/layout/SafeLockToggle.svelte.d.ts +18 -0
  39. package/dist/components/layout/Sidebar.svelte +314 -0
  40. package/dist/components/layout/Sidebar.svelte.d.ts +3 -0
  41. package/dist/components/layout/StatusBar.svelte +73 -0
  42. package/dist/components/layout/StatusBar.svelte.d.ts +3 -0
  43. package/dist/components/layout/TabBar.svelte +102 -0
  44. package/dist/components/layout/TabBar.svelte.d.ts +7 -0
  45. package/dist/components/layout/ThemeToggle.svelte +52 -0
  46. package/dist/components/layout/ThemeToggle.svelte.d.ts +3 -0
  47. package/dist/components/ui/badge/badge.svelte +49 -0
  48. package/dist/components/ui/badge/badge.svelte.d.ts +32 -0
  49. package/dist/components/ui/badge/index.d.ts +1 -0
  50. package/dist/components/ui/badge/index.js +1 -0
  51. package/dist/components/ui/button/button.svelte +82 -0
  52. package/dist/components/ui/button/button.svelte.d.ts +64 -0
  53. package/dist/components/ui/button/index.d.ts +2 -0
  54. package/dist/components/ui/button/index.js +4 -0
  55. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +40 -0
  56. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +9 -0
  57. package/dist/components/ui/context-menu/context-menu-content.svelte +28 -0
  58. package/dist/components/ui/context-menu/context-menu-content.svelte.d.ts +10 -0
  59. package/dist/components/ui/context-menu/context-menu-group-heading.svelte +21 -0
  60. package/dist/components/ui/context-menu/context-menu-group-heading.svelte.d.ts +7 -0
  61. package/dist/components/ui/context-menu/context-menu-group.svelte +7 -0
  62. package/dist/components/ui/context-menu/context-menu-group.svelte.d.ts +4 -0
  63. package/dist/components/ui/context-menu/context-menu-item.svelte +27 -0
  64. package/dist/components/ui/context-menu/context-menu-item.svelte.d.ts +8 -0
  65. package/dist/components/ui/context-menu/context-menu-label.svelte +24 -0
  66. package/dist/components/ui/context-menu/context-menu-label.svelte.d.ts +8 -0
  67. package/dist/components/ui/context-menu/context-menu-portal.svelte +7 -0
  68. package/dist/components/ui/context-menu/context-menu-portal.svelte.d.ts +3 -0
  69. package/dist/components/ui/context-menu/context-menu-radio-group.svelte +16 -0
  70. package/dist/components/ui/context-menu/context-menu-radio-group.svelte.d.ts +4 -0
  71. package/dist/components/ui/context-menu/context-menu-radio-item.svelte +33 -0
  72. package/dist/components/ui/context-menu/context-menu-radio-item.svelte.d.ts +4 -0
  73. package/dist/components/ui/context-menu/context-menu-separator.svelte +17 -0
  74. package/dist/components/ui/context-menu/context-menu-separator.svelte.d.ts +4 -0
  75. package/dist/components/ui/context-menu/context-menu-shortcut.svelte +20 -0
  76. package/dist/components/ui/context-menu/context-menu-shortcut.svelte.d.ts +5 -0
  77. package/dist/components/ui/context-menu/context-menu-sub-content.svelte +20 -0
  78. package/dist/components/ui/context-menu/context-menu-sub-content.svelte.d.ts +4 -0
  79. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +29 -0
  80. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte.d.ts +8 -0
  81. package/dist/components/ui/context-menu/context-menu-sub.svelte +7 -0
  82. package/dist/components/ui/context-menu/context-menu-sub.svelte.d.ts +3 -0
  83. package/dist/components/ui/context-menu/context-menu-trigger.svelte +7 -0
  84. package/dist/components/ui/context-menu/context-menu-trigger.svelte.d.ts +4 -0
  85. package/dist/components/ui/context-menu/context-menu.svelte +7 -0
  86. package/dist/components/ui/context-menu/context-menu.svelte.d.ts +3 -0
  87. package/dist/components/ui/context-menu/index.d.ts +17 -0
  88. package/dist/components/ui/context-menu/index.js +19 -0
  89. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +43 -0
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +29 -0
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +7 -0
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +27 -0
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +24 -0
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +33 -0
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +20 -0
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +20 -0
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +4 -0
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
  121. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +7 -0
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
  123. package/dist/components/ui/dropdown-menu/index.d.ts +18 -0
  124. package/dist/components/ui/dropdown-menu/index.js +18 -0
  125. package/dist/components/ui/input/index.d.ts +2 -0
  126. package/dist/components/ui/input/index.js +4 -0
  127. package/dist/components/ui/input/input.svelte +52 -0
  128. package/dist/components/ui/input/input.svelte.d.ts +13 -0
  129. package/dist/components/ui/resizable/index.d.ts +4 -0
  130. package/dist/components/ui/resizable/index.js +6 -0
  131. package/dist/components/ui/resizable/resizable-handle.svelte +30 -0
  132. package/dist/components/ui/resizable/resizable-handle.svelte.d.ts +8 -0
  133. package/dist/components/ui/resizable/resizable-pane-group.svelte +20 -0
  134. package/dist/components/ui/resizable/resizable-pane-group.svelte.d.ts +7 -0
  135. package/dist/components/ui/scroll-area/index.d.ts +3 -0
  136. package/dist/components/ui/scroll-area/index.js +5 -0
  137. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  138. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  139. package/dist/components/ui/scroll-area/scroll-area.svelte +47 -0
  140. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +11 -0
  141. package/dist/components/ui/separator/index.d.ts +2 -0
  142. package/dist/components/ui/separator/index.js +4 -0
  143. package/dist/components/ui/separator/separator.svelte +21 -0
  144. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  145. package/dist/components/ui/sheet/index.d.ts +11 -0
  146. package/dist/components/ui/sheet/index.js +13 -0
  147. package/dist/components/ui/sheet/sheet-close.svelte +7 -0
  148. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +4 -0
  149. package/dist/components/ui/sheet/sheet-content.svelte +62 -0
  150. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +37 -0
  151. package/dist/components/ui/sheet/sheet-description.svelte +17 -0
  152. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +4 -0
  153. package/dist/components/ui/sheet/sheet-footer.svelte +20 -0
  154. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +5 -0
  155. package/dist/components/ui/sheet/sheet-header.svelte +20 -0
  156. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +5 -0
  157. package/dist/components/ui/sheet/sheet-overlay.svelte +20 -0
  158. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +4 -0
  159. package/dist/components/ui/sheet/sheet-portal.svelte +7 -0
  160. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +3 -0
  161. package/dist/components/ui/sheet/sheet-title.svelte +13 -0
  162. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +4 -0
  163. package/dist/components/ui/sheet/sheet-trigger.svelte +7 -0
  164. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +4 -0
  165. package/dist/components/ui/sheet/sheet.svelte +7 -0
  166. package/dist/components/ui/sheet/sheet.svelte.d.ts +3 -0
  167. package/dist/components/ui/switch/index.d.ts +2 -0
  168. package/dist/components/ui/switch/index.js +4 -0
  169. package/dist/components/ui/switch/switch.svelte +28 -0
  170. package/dist/components/ui/switch/switch.svelte.d.ts +8 -0
  171. package/dist/components/ui/tabs/index.d.ts +5 -0
  172. package/dist/components/ui/tabs/index.js +7 -0
  173. package/dist/components/ui/tabs/tabs-content.svelte +17 -0
  174. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  175. package/dist/components/ui/tabs/tabs-list.svelte +16 -0
  176. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  177. package/dist/components/ui/tabs/tabs-trigger.svelte +20 -0
  178. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  179. package/dist/components/ui/tabs/tabs.svelte +19 -0
  180. package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
  181. package/dist/components/ui/tooltip/index.d.ts +6 -0
  182. package/dist/components/ui/tooltip/index.js +8 -0
  183. package/dist/components/ui/tooltip/tooltip-content.svelte +52 -0
  184. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +11 -0
  185. package/dist/components/ui/tooltip/tooltip-portal.svelte +7 -0
  186. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +4 -0
  187. package/dist/components/ui/tooltip/tooltip-provider.svelte +7 -0
  188. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +4 -0
  189. package/dist/components/ui/tooltip/tooltip-trigger.svelte +7 -0
  190. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +4 -0
  191. package/dist/components/ui/tooltip/tooltip.svelte +7 -0
  192. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +4 -0
  193. package/dist/components/viewers/ArchiveViewer.svelte +586 -0
  194. package/dist/components/viewers/ArchiveViewer.svelte.d.ts +7 -0
  195. package/dist/components/viewers/CLAUDE.md +60 -0
  196. package/dist/components/viewers/CodeViewer.svelte +553 -0
  197. package/dist/components/viewers/CodeViewer.svelte.d.ts +7 -0
  198. package/dist/components/viewers/CogViewer.svelte +1345 -0
  199. package/dist/components/viewers/CogViewer.svelte.d.ts +7 -0
  200. package/dist/components/viewers/CopcViewer.svelte +25 -0
  201. package/dist/components/viewers/CopcViewer.svelte.d.ts +7 -0
  202. package/dist/components/viewers/DatabaseViewer.svelte +169 -0
  203. package/dist/components/viewers/DatabaseViewer.svelte.d.ts +7 -0
  204. package/dist/components/viewers/FileInfo.svelte +174 -0
  205. package/dist/components/viewers/FileInfo.svelte.d.ts +10 -0
  206. package/dist/components/viewers/FlatGeobufViewer.svelte +755 -0
  207. package/dist/components/viewers/FlatGeobufViewer.svelte.d.ts +7 -0
  208. package/dist/components/viewers/GeoParquetMapViewer.svelte +278 -0
  209. package/dist/components/viewers/GeoParquetMapViewer.svelte.d.ts +17 -0
  210. package/dist/components/viewers/ImageViewer.svelte +233 -0
  211. package/dist/components/viewers/ImageViewer.svelte.d.ts +7 -0
  212. package/dist/components/viewers/LoadProgress.svelte +93 -0
  213. package/dist/components/viewers/LoadProgress.svelte.d.ts +15 -0
  214. package/dist/components/viewers/MapViewer.svelte +234 -0
  215. package/dist/components/viewers/MapViewer.svelte.d.ts +7 -0
  216. package/dist/components/viewers/MarkdownViewer.svelte +478 -0
  217. package/dist/components/viewers/MarkdownViewer.svelte.d.ts +7 -0
  218. package/dist/components/viewers/MediaViewer.svelte +121 -0
  219. package/dist/components/viewers/MediaViewer.svelte.d.ts +7 -0
  220. package/dist/components/viewers/ModelViewer.svelte +164 -0
  221. package/dist/components/viewers/ModelViewer.svelte.d.ts +7 -0
  222. package/dist/components/viewers/NotebookViewer.svelte +389 -0
  223. package/dist/components/viewers/NotebookViewer.svelte.d.ts +7 -0
  224. package/dist/components/viewers/PdfViewer.svelte +278 -0
  225. package/dist/components/viewers/PdfViewer.svelte.d.ts +7 -0
  226. package/dist/components/viewers/PmtilesViewer.svelte +191 -0
  227. package/dist/components/viewers/PmtilesViewer.svelte.d.ts +7 -0
  228. package/dist/components/viewers/QueryHistoryPanel.svelte +159 -0
  229. package/dist/components/viewers/QueryHistoryPanel.svelte.d.ts +8 -0
  230. package/dist/components/viewers/RawViewer.svelte +117 -0
  231. package/dist/components/viewers/RawViewer.svelte.d.ts +7 -0
  232. package/dist/components/viewers/StacMapViewer.svelte +20 -0
  233. package/dist/components/viewers/StacMapViewer.svelte.d.ts +7 -0
  234. package/dist/components/viewers/StyleEditorOverlay.svelte +27 -0
  235. package/dist/components/viewers/StyleEditorOverlay.svelte.d.ts +7 -0
  236. package/dist/components/viewers/TableGrid.svelte +355 -0
  237. package/dist/components/viewers/TableGrid.svelte.d.ts +12 -0
  238. package/dist/components/viewers/TableStatusBar.svelte +92 -0
  239. package/dist/components/viewers/TableStatusBar.svelte.d.ts +11 -0
  240. package/dist/components/viewers/TableToolbar.svelte +382 -0
  241. package/dist/components/viewers/TableToolbar.svelte.d.ts +25 -0
  242. package/dist/components/viewers/TableViewer.svelte +923 -0
  243. package/dist/components/viewers/TableViewer.svelte.d.ts +7 -0
  244. package/dist/components/viewers/ViewerRouter.svelte +70 -0
  245. package/dist/components/viewers/ViewerRouter.svelte.d.ts +7 -0
  246. package/dist/components/viewers/ZarrMapViewer.svelte +288 -0
  247. package/dist/components/viewers/ZarrMapViewer.svelte.d.ts +17 -0
  248. package/dist/components/viewers/ZarrViewer.svelte +256 -0
  249. package/dist/components/viewers/ZarrViewer.svelte.d.ts +7 -0
  250. package/dist/components/viewers/map/AttributeTable.svelte +52 -0
  251. package/dist/components/viewers/map/AttributeTable.svelte.d.ts +8 -0
  252. package/dist/components/viewers/map/MapContainer.svelte +158 -0
  253. package/dist/components/viewers/map/MapContainer.svelte.d.ts +12 -0
  254. package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte +389 -0
  255. package/dist/components/viewers/pmtiles/PmtilesArchiveView.svelte.d.ts +10 -0
  256. package/dist/components/viewers/pmtiles/PmtilesMapView.svelte +332 -0
  257. package/dist/components/viewers/pmtiles/PmtilesMapView.svelte.d.ts +11 -0
  258. package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte +373 -0
  259. package/dist/components/viewers/pmtiles/PmtilesTileInspector.svelte.d.ts +12 -0
  260. package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte +112 -0
  261. package/dist/components/viewers/pmtiles/SvgTileRenderer.svelte.d.ts +10 -0
  262. package/dist/file-icons/CLAUDE.md +21 -0
  263. package/dist/file-icons/FileTypeIcon.svelte +74 -0
  264. package/dist/file-icons/FileTypeIcon.svelte.d.ts +9 -0
  265. package/dist/file-icons/index.d.ts +56 -0
  266. package/dist/file-icons/index.js +1070 -0
  267. package/dist/i18n/CLAUDE.md +19 -0
  268. package/dist/i18n/ar.d.ts +1 -0
  269. package/dist/i18n/ar.js +404 -0
  270. package/dist/i18n/en.d.ts +1 -0
  271. package/dist/i18n/en.js +404 -0
  272. package/dist/i18n/index.svelte.d.ts +9 -0
  273. package/dist/i18n/index.svelte.js +27 -0
  274. package/dist/index.d.ts +20 -0
  275. package/dist/index.js +13 -0
  276. package/dist/query/CLAUDE.md +22 -0
  277. package/dist/query/engine.d.ts +56 -0
  278. package/dist/query/engine.js +6 -0
  279. package/dist/query/index.d.ts +4 -0
  280. package/dist/query/index.js +19 -0
  281. package/dist/query/wasm.d.ts +20 -0
  282. package/dist/query/wasm.js +890 -0
  283. package/dist/storage/CLAUDE.md +23 -0
  284. package/dist/storage/adapter.d.ts +21 -0
  285. package/dist/storage/adapter.js +1 -0
  286. package/dist/storage/browser-azure.d.ts +25 -0
  287. package/dist/storage/browser-azure.js +271 -0
  288. package/dist/storage/browser-cloud.d.ts +32 -0
  289. package/dist/storage/browser-cloud.js +293 -0
  290. package/dist/storage/index.d.ts +11 -0
  291. package/dist/storage/index.js +37 -0
  292. package/dist/storage/url-adapter.d.ts +19 -0
  293. package/dist/storage/url-adapter.js +51 -0
  294. package/dist/stores/CLAUDE.md +29 -0
  295. package/dist/stores/browser.svelte.d.ts +28 -0
  296. package/dist/stores/browser.svelte.js +160 -0
  297. package/dist/stores/connections.svelte.d.ts +56 -0
  298. package/dist/stores/connections.svelte.js +272 -0
  299. package/dist/stores/credentials.svelte.d.ts +56 -0
  300. package/dist/stores/credentials.svelte.js +79 -0
  301. package/dist/stores/files.svelte.d.ts +20 -0
  302. package/dist/stores/files.svelte.js +76 -0
  303. package/dist/stores/query-history.svelte.d.ts +16 -0
  304. package/dist/stores/query-history.svelte.js +57 -0
  305. package/dist/stores/safelock.svelte.d.ts +8 -0
  306. package/dist/stores/safelock.svelte.js +52 -0
  307. package/dist/stores/settings.svelte.d.ts +11 -0
  308. package/dist/stores/settings.svelte.js +101 -0
  309. package/dist/stores/tab-resources.svelte.d.ts +25 -0
  310. package/dist/stores/tab-resources.svelte.js +61 -0
  311. package/dist/stores/tabs.svelte.d.ts +17 -0
  312. package/dist/stores/tabs.svelte.js +110 -0
  313. package/dist/types/notebookjs.d.ts +14 -0
  314. package/dist/types.d.ts +47 -0
  315. package/dist/types.js +1 -0
  316. package/dist/utils/CLAUDE.md +54 -0
  317. package/dist/utils/analytics.d.ts +10 -0
  318. package/dist/utils/analytics.js +38 -0
  319. package/dist/utils/archive.d.ts +70 -0
  320. package/dist/utils/archive.js +333 -0
  321. package/dist/utils/column-types.d.ts +5 -0
  322. package/dist/utils/column-types.js +137 -0
  323. package/dist/utils/deck.d.ts +98 -0
  324. package/dist/utils/deck.js +208 -0
  325. package/dist/utils/evidence-context.d.ts +22 -0
  326. package/dist/utils/evidence-context.js +56 -0
  327. package/dist/utils/export.d.ts +2 -0
  328. package/dist/utils/export.js +51 -0
  329. package/dist/utils/format.d.ts +14 -0
  330. package/dist/utils/format.js +56 -0
  331. package/dist/utils/geoarrow.d.ts +32 -0
  332. package/dist/utils/geoarrow.js +672 -0
  333. package/dist/utils/hex.d.ts +10 -0
  334. package/dist/utils/hex.js +27 -0
  335. package/dist/utils/host-detection.d.ts +23 -0
  336. package/dist/utils/host-detection.js +289 -0
  337. package/dist/utils/map-selection.d.ts +12 -0
  338. package/dist/utils/map-selection.js +45 -0
  339. package/dist/utils/markdown-sql.d.ts +30 -0
  340. package/dist/utils/markdown-sql.js +73 -0
  341. package/dist/utils/markdown.d.ts +18 -0
  342. package/dist/utils/markdown.js +146 -0
  343. package/dist/utils/model3d.d.ts +13 -0
  344. package/dist/utils/model3d.js +62 -0
  345. package/dist/utils/parquet-metadata.d.ts +58 -0
  346. package/dist/utils/parquet-metadata.js +228 -0
  347. package/dist/utils/pdf.d.ts +8 -0
  348. package/dist/utils/pdf.js +28 -0
  349. package/dist/utils/pmtiles-tile.d.ts +38 -0
  350. package/dist/utils/pmtiles-tile.js +64 -0
  351. package/dist/utils/pmtiles.d.ts +46 -0
  352. package/dist/utils/pmtiles.js +135 -0
  353. package/dist/utils/shiki.d.ts +8 -0
  354. package/dist/utils/shiki.js +98 -0
  355. package/dist/utils/storage-url.d.ts +64 -0
  356. package/dist/utils/storage-url.js +374 -0
  357. package/dist/utils/url-state.d.ts +40 -0
  358. package/dist/utils/url-state.js +113 -0
  359. package/dist/utils/url.d.ts +27 -0
  360. package/dist/utils/url.js +115 -0
  361. package/dist/utils/wkb.d.ts +43 -0
  362. package/dist/utils/wkb.js +345 -0
  363. package/dist/utils/zarr.d.ts +39 -0
  364. package/dist/utils/zarr.js +204 -0
  365. package/dist/utils.d.ts +12 -0
  366. package/dist/utils.js +5 -0
  367. package/package.json +203 -0
@@ -0,0 +1,439 @@
1
+ <script lang="ts">
2
+ import CheckIcon from '@lucide/svelte/icons/check';
3
+ import CloudIcon from '@lucide/svelte/icons/cloud';
4
+ import LinkIcon from '@lucide/svelte/icons/link';
5
+ import Loader2Icon from '@lucide/svelte/icons/loader-2';
6
+ import LockIcon from '@lucide/svelte/icons/lock';
7
+ import PlugZapIcon from '@lucide/svelte/icons/plug-zap';
8
+ import XIcon from '@lucide/svelte/icons/x';
9
+ import { Button } from '../ui/button/index.js';
10
+ import { Input } from '../ui/input/index.js';
11
+ import {
12
+ Sheet,
13
+ SheetContent,
14
+ SheetDescription,
15
+ SheetFooter,
16
+ SheetHeader,
17
+ SheetTitle
18
+ } from '../ui/sheet/index.js';
19
+ import { Switch } from '../ui/switch/index.js';
20
+ import { t } from '../../i18n/index.svelte.js';
21
+ import { connections } from '../../stores/connections.svelte.js';
22
+ import type { Connection, ConnectionConfig } from '../../types.js';
23
+ import { describeParseResult, looksLikeUrl, parseStorageUrl } from '../../utils/storage-url.js';
24
+
25
+ interface Props {
26
+ open: boolean;
27
+ editConnection?: Connection | null;
28
+ onSaved?: () => void;
29
+ }
30
+
31
+ let { open = $bindable(false), editConnection = null, onSaved = () => {} }: Props = $props();
32
+
33
+ const providers: Array<{ value: Connection['provider']; label: string }> = [
34
+ { value: 's3', label: 'S3' },
35
+ { value: 'gcs', label: 'GCS' },
36
+ { value: 'r2', label: 'R2' },
37
+ { value: 'minio', label: 'MinIO' },
38
+ { value: 'azure', label: 'Azure' },
39
+ { value: 'storj', label: 'Storj' }
40
+ ];
41
+
42
+ // Form state — initialized with defaults, then reset via $effect when editConnection changes
43
+ let name = $state('');
44
+ let provider = $state<Connection['provider']>('s3');
45
+ let bucket = $state('');
46
+ let region = $state('us-west-2');
47
+ let endpoint = $state('');
48
+ let anonymous = $state(true);
49
+ let accessKey = $state('');
50
+ let secretKey = $state('');
51
+ let sasToken = $state('');
52
+ let saving = $state(false);
53
+ let testing = $state(false);
54
+ let testResult = $state<'success' | 'error' | null>(null);
55
+ let parsedHint = $state<string | null>(null);
56
+
57
+ let isAzure = $derived(provider === 'azure');
58
+ let isStorj = $derived(provider === 'storj');
59
+ let needsRegion = $derived(provider !== 'azure' && provider !== 'r2' && provider !== 'storj');
60
+ let bucketLabel = $derived(isAzure ? t('connection.container') : t('connection.bucket'));
61
+
62
+ function handleBucketInput(value: string) {
63
+ bucket = value;
64
+ if (looksLikeUrl(value)) {
65
+ const parsed = parseStorageUrl(value, {
66
+ region: region || undefined,
67
+ endpoint: endpoint || undefined
68
+ });
69
+ parsedHint = describeParseResult(parsed);
70
+ } else {
71
+ parsedHint = null;
72
+ }
73
+ }
74
+
75
+ function applyParsedUrl() {
76
+ const parsed = parseStorageUrl(bucket, {
77
+ region: region || undefined,
78
+ endpoint: endpoint || undefined
79
+ });
80
+ bucket = parsed.bucket;
81
+ if (parsed.endpoint) endpoint = parsed.endpoint;
82
+ if (parsed.region) region = parsed.region;
83
+ // Auto-detect provider from URL
84
+ const providerMap: Record<string, Connection['provider']> = {
85
+ s3: 's3',
86
+ gcs: 'gcs',
87
+ r2: 'r2',
88
+ minio: 'minio',
89
+ azure: 'azure',
90
+ storj: 'storj'
91
+ };
92
+ if (parsed.provider in providerMap) {
93
+ provider = providerMap[parsed.provider];
94
+ }
95
+ parsedHint = null;
96
+ }
97
+
98
+ let isEditMode = $derived(editConnection !== null && editConnection !== undefined);
99
+ let title = $derived(isEditMode ? t('connection.editTitle') : t('connection.newTitle'));
100
+ let canSave = $derived(
101
+ name.trim() !== '' && bucket.trim() !== '' && (!needsRegion || region.trim() !== '')
102
+ );
103
+
104
+ // Reset form fields when editConnection changes
105
+ $effect(() => {
106
+ const conn = editConnection;
107
+ name = conn?.name ?? '';
108
+ provider = conn?.provider ?? 's3';
109
+ bucket = conn?.bucket ?? '';
110
+ region = conn?.region ?? 'us-west-2';
111
+ endpoint = conn?.endpoint ?? '';
112
+ anonymous = conn?.anonymous ?? true;
113
+ accessKey = '';
114
+ secretKey = '';
115
+ sasToken = '';
116
+ saving = false;
117
+ testing = false;
118
+ testResult = null;
119
+ parsedHint = null;
120
+ });
121
+
122
+ async function handleSave() {
123
+ if (!canSave) return;
124
+ saving = true;
125
+
126
+ // Auto-parse URL in bucket field before saving
127
+ let finalBucket = bucket.trim();
128
+ let finalRegion = region.trim();
129
+ let finalEndpoint = endpoint.trim();
130
+ if (looksLikeUrl(finalBucket)) {
131
+ const parsed = parseStorageUrl(finalBucket, {
132
+ region: finalRegion || undefined,
133
+ endpoint: finalEndpoint || undefined
134
+ });
135
+ finalBucket = parsed.bucket;
136
+ if (parsed.endpoint) finalEndpoint = parsed.endpoint;
137
+ if (parsed.region) finalRegion = parsed.region;
138
+ }
139
+
140
+ try {
141
+ const config: ConnectionConfig = {
142
+ name: name.trim(),
143
+ provider,
144
+ bucket: finalBucket,
145
+ region: finalRegion,
146
+ endpoint: finalEndpoint,
147
+ anonymous,
148
+ authMethod: isAzure && !anonymous ? 'sas-token' : !anonymous ? 'sigv4' : undefined,
149
+ ...(anonymous
150
+ ? {}
151
+ : isAzure
152
+ ? { sas_token: sasToken }
153
+ : { access_key: accessKey, secret_key: secretKey })
154
+ };
155
+
156
+ if (isEditMode && editConnection) {
157
+ await connections.update(editConnection.id, config);
158
+ } else {
159
+ await connections.save(config);
160
+ }
161
+
162
+ onSaved();
163
+ open = false;
164
+ } catch (err) {
165
+ console.error('Failed to save connection:', err);
166
+ } finally {
167
+ saving = false;
168
+ }
169
+ }
170
+
171
+ async function handleTestConnection() {
172
+ testing = true;
173
+ testResult = null;
174
+
175
+ try {
176
+ // Auto-parse URL in bucket field before testing
177
+ let finalBucket = bucket.trim();
178
+ let finalRegion = region.trim();
179
+ let finalEndpoint = endpoint.trim();
180
+ if (looksLikeUrl(finalBucket)) {
181
+ const parsed = parseStorageUrl(finalBucket, {
182
+ region: finalRegion || undefined,
183
+ endpoint: finalEndpoint || undefined
184
+ });
185
+ finalBucket = parsed.bucket;
186
+ if (parsed.endpoint) finalEndpoint = parsed.endpoint;
187
+ if (parsed.region) finalRegion = parsed.region;
188
+ }
189
+
190
+ const config: ConnectionConfig = {
191
+ name: name.trim() || 'test',
192
+ provider,
193
+ bucket: finalBucket,
194
+ region: finalRegion,
195
+ endpoint: finalEndpoint,
196
+ anonymous,
197
+ authMethod: isAzure && !anonymous ? 'sas-token' : !anonymous ? 'sigv4' : undefined,
198
+ ...(anonymous
199
+ ? {}
200
+ : isAzure
201
+ ? { sas_token: sasToken }
202
+ : { access_key: accessKey, secret_key: secretKey })
203
+ };
204
+
205
+ const ok = await connections.testWithConfig(config, editConnection?.id);
206
+ testResult = ok ? 'success' : 'error';
207
+ } catch {
208
+ testResult = 'error';
209
+ } finally {
210
+ testing = false;
211
+ }
212
+ }
213
+
214
+ function handleCancel() {
215
+ open = false;
216
+ }
217
+ </script>
218
+
219
+ <Sheet bind:open>
220
+ <SheetContent side="right" class="flex flex-col sm:max-w-md">
221
+ <SheetHeader>
222
+ <div class="flex items-center gap-2">
223
+ <CloudIcon class="size-5 text-primary" />
224
+ <SheetTitle>{title}</SheetTitle>
225
+ </div>
226
+ <SheetDescription>
227
+ {#if isEditMode}
228
+ {t('connection.editDescription')}
229
+ {:else}
230
+ {t('connection.newDescription')}
231
+ {/if}
232
+ </SheetDescription>
233
+ </SheetHeader>
234
+
235
+ <div class="flex flex-1 flex-col gap-5 overflow-y-auto px-4 py-2">
236
+ <!-- Name -->
237
+ <div class="flex flex-col gap-1.5">
238
+ <label for="conn-name" class="text-sm font-medium">
239
+ {t('connection.name')} <span class="text-destructive">*</span>
240
+ </label>
241
+ <Input
242
+ id="conn-name"
243
+ placeholder="e.g. Source Cooperative, My MinIO"
244
+ bind:value={name}
245
+ />
246
+ </div>
247
+
248
+ <!-- Provider -->
249
+ <fieldset class="flex flex-col gap-1.5">
250
+ <legend class="text-sm font-medium">{t('connection.provider')}</legend>
251
+ <div class="flex flex-wrap gap-2" role="radiogroup" aria-label="Cloud storage provider">
252
+ {#each providers as p (p.value)}
253
+ <Button
254
+ variant={provider === p.value ? 'default' : 'outline'}
255
+ size="sm"
256
+ class="h-8 px-3 text-xs"
257
+ aria-pressed={provider === p.value}
258
+ onclick={() => {
259
+ provider = p.value;
260
+ if (p.value === 'storj' && !endpoint) {
261
+ endpoint = 'https://gateway.storjshare.io';
262
+ region = 'us1';
263
+ }
264
+ }}
265
+ >
266
+ {p.label}
267
+ </Button>
268
+ {/each}
269
+ </div>
270
+ </fieldset>
271
+
272
+ <!-- Bucket / Container -->
273
+ <div class="flex flex-col gap-1.5">
274
+ <label for="conn-bucket" class="text-sm font-medium">
275
+ {bucketLabel} <span class="text-destructive">*</span>
276
+ </label>
277
+ <Input
278
+ id="conn-bucket"
279
+ placeholder={isAzure ? t('connection.containerPlaceholder') : t('connection.bucketPlaceholder')}
280
+ value={bucket}
281
+ oninput={(e: Event) => handleBucketInput((e.target as HTMLInputElement).value)}
282
+ />
283
+ {#if parsedHint}
284
+ <button
285
+ type="button"
286
+ class="flex items-center gap-1.5 rounded-md border border-blue-500/30 bg-blue-500/10 px-3 py-1.5 text-start text-xs text-blue-700 hover:bg-blue-500/20 dark:text-blue-400"
287
+ onclick={applyParsedUrl}
288
+ >
289
+ <LinkIcon class="size-3 shrink-0" />
290
+ <span>{parsedHint} <strong>{t('connection.clickToApply')}</strong></span>
291
+ </button>
292
+ {/if}
293
+ <p class="text-xs text-muted-foreground">
294
+ {isAzure ? t('connection.azureBucketHelper') : t('connection.s3BucketHelper')}
295
+ </p>
296
+ </div>
297
+
298
+ <!-- Region (hidden for Azure and R2) -->
299
+ {#if needsRegion}
300
+ <div class="flex flex-col gap-1.5">
301
+ <label for="conn-region" class="text-sm font-medium">
302
+ {t('connection.region')} <span class="text-destructive">*</span>
303
+ </label>
304
+ <Input
305
+ id="conn-region"
306
+ placeholder="us-west-2"
307
+ bind:value={region}
308
+ />
309
+ </div>
310
+ {/if}
311
+
312
+ <!-- Endpoint -->
313
+ <div class="flex flex-col gap-1.5">
314
+ <label for="conn-endpoint" class="text-sm font-medium">{t('connection.endpoint')}{isAzure ? ' *' : ''}</label>
315
+ <Input
316
+ id="conn-endpoint"
317
+ placeholder={isAzure
318
+ ? 'https://myaccount.blob.core.windows.net'
319
+ : isStorj
320
+ ? 'https://gateway.storjshare.io'
321
+ : 'https://custom-endpoint.example.com'}
322
+ bind:value={endpoint}
323
+ />
324
+ <p class="text-xs text-muted-foreground">
325
+ {isAzure
326
+ ? t('connection.azureEndpointHelper')
327
+ : isStorj
328
+ ? t('connection.storjEndpointHelper')
329
+ : t('connection.endpointHelper')}
330
+ </p>
331
+ </div>
332
+
333
+ <!-- Anonymous Access -->
334
+ <div class="flex items-center gap-3">
335
+ <Switch bind:checked={anonymous} aria-label={t('connection.anonymous')} />
336
+ <span class="text-sm font-medium">{t('connection.anonymous')}</span>
337
+ </div>
338
+
339
+ <!-- Credentials (shown only when not anonymous) -->
340
+ {#if !anonymous}
341
+ <form onsubmit={(e: Event) => e.preventDefault()} class="flex flex-col gap-4 rounded-md border border-border bg-muted/30 p-3">
342
+ {#if isAzure}
343
+ <div class="flex flex-col gap-1.5">
344
+ <label for="conn-sas-token" class="text-sm font-medium">{t('connection.sasToken')}</label>
345
+ <Input
346
+ id="conn-sas-token"
347
+ name="password"
348
+ autocomplete="current-password"
349
+ type="password"
350
+ placeholder="sv=2021-06-08&ss=b&srt=sco&sp=rl&se=..."
351
+ bind:value={sasToken}
352
+ />
353
+ <p class="text-xs text-muted-foreground">
354
+ {t('connection.sasTokenHelper')}
355
+ </p>
356
+ </div>
357
+ {:else}
358
+ <div class="flex flex-col gap-1.5">
359
+ <label for="conn-access-key" class="text-sm font-medium">{t('connection.accessKey')}</label>
360
+ <Input
361
+ id="conn-access-key"
362
+ name="username"
363
+ autocomplete="username"
364
+ placeholder="AKIAIOSFODNN7EXAMPLE"
365
+ bind:value={accessKey}
366
+ />
367
+ </div>
368
+ <div class="flex flex-col gap-1.5">
369
+ <label for="conn-secret-key" class="text-sm font-medium">{t('connection.secretKey')}</label>
370
+ <Input
371
+ id="conn-secret-key"
372
+ name="password"
373
+ autocomplete="current-password"
374
+ type="password"
375
+ placeholder="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
376
+ bind:value={secretKey}
377
+ />
378
+ </div>
379
+ {/if}
380
+
381
+ <div class="flex items-start gap-1.5 text-xs text-muted-foreground">
382
+ <LockIcon class="mt-0.5 size-3 shrink-0" />
383
+ <p>{t('connection.credentialNotice')}</p>
384
+ </div>
385
+ </form>
386
+ {/if}
387
+
388
+ <!-- Test Connection Result -->
389
+ {#if testResult === 'success'}
390
+ <div class="flex items-center gap-2 rounded-md border border-green-500/30 bg-green-500/10 px-3 py-2 text-sm text-green-700 dark:text-green-400">
391
+ <CheckIcon class="size-4 shrink-0" />
392
+ {t('connection.testSuccess')}
393
+ </div>
394
+ {:else if testResult === 'error'}
395
+ <div class="flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive">
396
+ <XIcon class="size-4 shrink-0" />
397
+ {t('connection.testFail')}
398
+ </div>
399
+ {/if}
400
+ </div>
401
+
402
+ <SheetFooter class="flex-row flex-wrap gap-2 border-t pt-4">
403
+ <Button
404
+ variant="outline"
405
+ size="icon-sm"
406
+ class="sm:h-8 sm:w-auto sm:px-3"
407
+ disabled={testing || saving || !bucket.trim()}
408
+ onclick={handleTestConnection}
409
+ title={t('connection.testButton')}
410
+ >
411
+ {#if testing}
412
+ <Loader2Icon class="size-4 animate-spin" />
413
+ {:else}
414
+ <PlugZapIcon class="size-4" />
415
+ {/if}
416
+ <span class="hidden sm:inline">{testing ? t('connection.testing') : t('connection.testButton')}</span>
417
+ </Button>
418
+
419
+ <div class="flex min-w-0 flex-1 justify-end gap-2">
420
+ <Button variant="ghost" size="sm" onclick={handleCancel} disabled={saving}>
421
+ {t('connection.cancel')}
422
+ </Button>
423
+
424
+ <Button
425
+ size="sm"
426
+ disabled={!canSave || saving}
427
+ onclick={handleSave}
428
+ >
429
+ {#if saving}
430
+ <Loader2Icon class="me-1.5 size-4 animate-spin" />
431
+ {t('connection.saving')}
432
+ {:else}
433
+ {isEditMode ? t('connection.update') : t('connection.create')}
434
+ {/if}
435
+ </Button>
436
+ </div>
437
+ </SheetFooter>
438
+ </SheetContent>
439
+ </Sheet>
@@ -0,0 +1,9 @@
1
+ import type { Connection } from '../../types.js';
2
+ interface Props {
3
+ open: boolean;
4
+ editConnection?: Connection | null;
5
+ onSaved?: () => void;
6
+ }
7
+ declare const ConnectionDialog: import("svelte").Component<Props, {}, "open">;
8
+ type ConnectionDialog = ReturnType<typeof ConnectionDialog>;
9
+ export default ConnectionDialog;
@@ -0,0 +1,32 @@
1
+ <script lang="ts">
2
+ import LanguagesIcon from '@lucide/svelte/icons/languages';
3
+ import { Button } from '../ui/button/index.js';
4
+ import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip/index.js';
5
+ import { t } from '../../i18n/index.svelte.js';
6
+ import { settings } from '../../stores/settings.svelte.js';
7
+
8
+ function toggle() {
9
+ settings.setLocale(settings.locale === 'en' ? 'ar' : 'en');
10
+ }
11
+
12
+ const label = $derived(settings.locale === 'en' ? 'EN' : 'AR');
13
+ </script>
14
+
15
+ <Tooltip>
16
+ <TooltipTrigger onclick={toggle}>
17
+ {#snippet child({ props })}
18
+ <Button
19
+ {...props}
20
+ variant="ghost"
21
+ size="icon-sm"
22
+ class="rounded-lg text-muted-foreground hover:text-foreground"
23
+ aria-label={t('locale.toggle')}
24
+ >
25
+ <LanguagesIcon class="size-4" />
26
+ </Button>
27
+ {/snippet}
28
+ </TooltipTrigger>
29
+ <TooltipContent side="right">
30
+ {label} — {t('locale.toggle')}
31
+ </TooltipContent>
32
+ </Tooltip>
@@ -0,0 +1,3 @@
1
+ declare const LocaleToggle: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type LocaleToggle = ReturnType<typeof LocaleToggle>;
3
+ export default LocaleToggle;
@@ -0,0 +1,37 @@
1
+ <script lang="ts">
2
+ import LockIcon from '@lucide/svelte/icons/lock';
3
+ import LockOpenIcon from '@lucide/svelte/icons/lock-open';
4
+ import * as Tooltip from '../ui/tooltip/index.js';
5
+ import { t } from '../../i18n/index.svelte.js';
6
+ import { safeLock } from '../../stores/safelock.svelte.js';
7
+
8
+ safeLock.init();
9
+ </script>
10
+
11
+ <Tooltip.Provider>
12
+ <Tooltip.Root>
13
+ <Tooltip.Trigger>
14
+ {#snippet child({ props })}
15
+ <button
16
+ {...props}
17
+ class="inline-flex size-5 items-center justify-center rounded transition-colors hover:bg-accent"
18
+ aria-label={safeLock.locked ? t('safeLock.enabledAria') : t('safeLock.disabledAria')}
19
+ onclick={() => safeLock.toggle()}
20
+ >
21
+ {#if safeLock.locked}
22
+ <LockIcon class="size-3 text-amber-500" />
23
+ {:else}
24
+ <LockOpenIcon class="size-3 text-green-500" />
25
+ {/if}
26
+ </button>
27
+ {/snippet}
28
+ </Tooltip.Trigger>
29
+ <Tooltip.Content>
30
+ {#if safeLock.locked}
31
+ {t('safeLock.enabledTooltip')}
32
+ {:else}
33
+ {t('safeLock.disabledTooltip')}
34
+ {/if}
35
+ </Tooltip.Content>
36
+ </Tooltip.Root>
37
+ </Tooltip.Provider>
@@ -0,0 +1,18 @@
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: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const SafeLockToggle: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type SafeLockToggle = InstanceType<typeof SafeLockToggle>;
18
+ export default SafeLockToggle;