cursedbelt 1.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/client/index.js +1 -1
  2. package/dist/core/category/index.d.ts.map +1 -1
  3. package/dist/core/category/index.js +2 -1
  4. package/dist/core/category/index.js.map +1 -1
  5. package/dist/core/category/types.js +1 -1
  6. package/dist/core/category/types.js.map +1 -1
  7. package/dist/core/file-tree/fileTreeModel.d.ts +49 -0
  8. package/dist/core/file-tree/fileTreeModel.d.ts.map +1 -1
  9. package/dist/core/file-tree/fileTreeModel.js +84 -0
  10. package/dist/core/file-tree/fileTreeModel.js.map +1 -1
  11. package/dist/core/layout/index.js +1 -1
  12. package/dist/core/layout/index.js.map +1 -1
  13. package/dist/core/media/index.js +1 -1
  14. package/dist/core/media/index.js.map +1 -1
  15. package/dist/core/media/types.js +1 -1
  16. package/dist/core/media/types.js.map +1 -1
  17. package/dist/core/media/uploadLimits.js +1 -1
  18. package/dist/core/media/uploadLimits.js.map +1 -1
  19. package/dist/core/sharing/model.d.ts +1 -1
  20. package/dist/ctgr/index.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/react/activity-bar/ActivityBar.d.ts +17 -0
  24. package/dist/react/activity-bar/ActivityBar.d.ts.map +1 -1
  25. package/dist/react/activity-bar/ActivityBar.js.map +1 -1
  26. package/dist/react/analytics/index.d.ts +1 -1
  27. package/dist/react/analytics/index.js +1 -1
  28. package/dist/react/chat/MessageComposer.d.ts.map +1 -1
  29. package/dist/react/chat/MessageComposer.js +5 -4
  30. package/dist/react/chat/MessageComposer.js.map +1 -1
  31. package/dist/react/components/Button.d.ts.map +1 -1
  32. package/dist/react/components/Button.js +3 -2
  33. package/dist/react/components/Button.js.map +1 -1
  34. package/dist/react/components/Checkbox.d.ts +19 -3
  35. package/dist/react/components/Checkbox.d.ts.map +1 -1
  36. package/dist/react/components/Checkbox.js +29 -12
  37. package/dist/react/components/Checkbox.js.map +1 -1
  38. package/dist/react/components/CodeArea.d.ts.map +1 -1
  39. package/dist/react/components/CodeArea.js +2 -1
  40. package/dist/react/components/CodeArea.js.map +1 -1
  41. package/dist/react/components/Collapsible.d.ts.map +1 -1
  42. package/dist/react/components/Collapsible.js +2 -1
  43. package/dist/react/components/Collapsible.js.map +1 -1
  44. package/dist/react/components/ComboboxField.d.ts.map +1 -1
  45. package/dist/react/components/ComboboxField.js +3 -2
  46. package/dist/react/components/ComboboxField.js.map +1 -1
  47. package/dist/react/components/CopyButton.d.ts.map +1 -1
  48. package/dist/react/components/CopyButton.js +2 -1
  49. package/dist/react/components/CopyButton.js.map +1 -1
  50. package/dist/react/components/DataTable/ColumnChecklist.d.ts.map +1 -1
  51. package/dist/react/components/DataTable/ColumnChecklist.js +2 -1
  52. package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
  53. package/dist/react/components/DataTable/Pagination.d.ts.map +1 -1
  54. package/dist/react/components/DataTable/Pagination.js +2 -1
  55. package/dist/react/components/DataTable/Pagination.js.map +1 -1
  56. package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
  57. package/dist/react/components/DataTable/SortHeader.js +2 -1
  58. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  59. package/dist/react/components/DataTable/TableFilterBuilder.d.ts +61 -0
  60. package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -0
  61. package/dist/react/components/DataTable/{FilterBuilder.js → TableFilterBuilder.js} +26 -3
  62. package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -0
  63. package/dist/react/components/DataTable/Toolbar.d.ts +1 -1
  64. package/dist/react/components/DataTable/Toolbar.js +3 -3
  65. package/dist/react/components/DataTable/Toolbar.js.map +1 -1
  66. package/dist/react/components/DataTable/cells/LinkCell.d.ts.map +1 -1
  67. package/dist/react/components/DataTable/cells/LinkCell.js +2 -1
  68. package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
  69. package/dist/react/components/DataTable/index.d.ts +1 -1
  70. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  71. package/dist/react/components/DataTable/index.js +4 -1
  72. package/dist/react/components/DataTable/index.js.map +1 -1
  73. package/dist/react/components/DragHandle.d.ts.map +1 -1
  74. package/dist/react/components/DragHandle.js +2 -1
  75. package/dist/react/components/DragHandle.js.map +1 -1
  76. package/dist/react/components/EmojiField.d.ts.map +1 -1
  77. package/dist/react/components/EmojiField.js +2 -1
  78. package/dist/react/components/EmojiField.js.map +1 -1
  79. package/dist/react/components/EventTimeline.d.ts +3 -2
  80. package/dist/react/components/EventTimeline.d.ts.map +1 -1
  81. package/dist/react/components/EventTimeline.js +3 -2
  82. package/dist/react/components/EventTimeline.js.map +1 -1
  83. package/dist/react/components/IconButton.d.ts +1 -1
  84. package/dist/react/components/IconButton.js +1 -1
  85. package/dist/react/components/InfoHint.d.ts.map +1 -1
  86. package/dist/react/components/InfoHint.js +5 -4
  87. package/dist/react/components/InfoHint.js.map +1 -1
  88. package/dist/react/components/InheritBadge.js +1 -1
  89. package/dist/react/components/InheritBadge.js.map +1 -1
  90. package/dist/react/components/InlineEditableText.d.ts.map +1 -1
  91. package/dist/react/components/InlineEditableText.js +2 -1
  92. package/dist/react/components/InlineEditableText.js.map +1 -1
  93. package/dist/react/components/MeterList.d.ts.map +1 -1
  94. package/dist/react/components/MeterList.js +2 -1
  95. package/dist/react/components/MeterList.js.map +1 -1
  96. package/dist/react/components/PathText.d.ts +2 -2
  97. package/dist/react/components/PathText.d.ts.map +1 -1
  98. package/dist/react/components/PathText.js +2 -1
  99. package/dist/react/components/PathText.js.map +1 -1
  100. package/dist/react/components/RatingField.d.ts.map +1 -1
  101. package/dist/react/components/RatingField.js +2 -1
  102. package/dist/react/components/RatingField.js.map +1 -1
  103. package/dist/react/components/SecretInput.js +3 -2
  104. package/dist/react/components/SecretInput.js.map +1 -1
  105. package/dist/react/components/SegmentedControl.d.ts.map +1 -1
  106. package/dist/react/components/SegmentedControl.js +2 -1
  107. package/dist/react/components/SegmentedControl.js.map +1 -1
  108. package/dist/react/components/StarRating.d.ts.map +1 -1
  109. package/dist/react/components/StarRating.js +9 -5
  110. package/dist/react/components/StarRating.js.map +1 -1
  111. package/dist/react/components/StatStrip.d.ts.map +1 -1
  112. package/dist/react/components/StatStrip.js +2 -1
  113. package/dist/react/components/StatStrip.js.map +1 -1
  114. package/dist/react/components/StatTile.d.ts.map +1 -1
  115. package/dist/react/components/StatTile.js +3 -2
  116. package/dist/react/components/StatTile.js.map +1 -1
  117. package/dist/react/components/Tabs.d.ts.map +1 -1
  118. package/dist/react/components/Tabs.js +2 -1
  119. package/dist/react/components/Tabs.js.map +1 -1
  120. package/dist/react/components/TruncatedText.d.ts +2 -1
  121. package/dist/react/components/TruncatedText.d.ts.map +1 -1
  122. package/dist/react/components/TruncatedText.js +2 -1
  123. package/dist/react/components/TruncatedText.js.map +1 -1
  124. package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
  125. package/dist/react/components/calendar/MonthGrid.js +2 -1
  126. package/dist/react/components/calendar/MonthGrid.js.map +1 -1
  127. package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
  128. package/dist/react/components/calendar/WeekView.js +2 -1
  129. package/dist/react/components/calendar/WeekView.js.map +1 -1
  130. package/dist/react/components/revealOnHover.d.ts.map +1 -1
  131. package/dist/react/components/revealOnHover.js +2 -1
  132. package/dist/react/components/revealOnHover.js.map +1 -1
  133. package/dist/react/file-tree/FileTree.d.ts +50 -1
  134. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  135. package/dist/react/file-tree/FileTree.js +234 -6
  136. package/dist/react/file-tree/FileTree.js.map +1 -1
  137. package/dist/react/file-tree/fileTree.css +52 -0
  138. package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
  139. package/dist/react/filter-rail/FilterRail.js +5 -4
  140. package/dist/react/filter-rail/FilterRail.js.map +1 -1
  141. package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
  142. package/dist/react/folder-tree/FolderTreeRail.js +2 -1
  143. package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
  144. package/dist/react/index.d.ts +5 -1
  145. package/dist/react/index.d.ts.map +1 -1
  146. package/dist/react/index.js +5 -1
  147. package/dist/react/index.js.map +1 -1
  148. package/dist/react/layoutEngine/index.js +1 -1
  149. package/dist/react/layoutEngine/index.js.map +1 -1
  150. package/dist/react/lib/field.d.ts.map +1 -1
  151. package/dist/react/lib/field.js +3 -2
  152. package/dist/react/lib/field.js.map +1 -1
  153. package/dist/react/lib/floatingStyles.d.ts.map +1 -1
  154. package/dist/react/lib/floatingStyles.js +2 -1
  155. package/dist/react/lib/floatingStyles.js.map +1 -1
  156. package/dist/react/lib/tapTarget.d.ts +96 -0
  157. package/dist/react/lib/tapTarget.d.ts.map +1 -0
  158. package/dist/react/lib/tapTarget.js +96 -0
  159. package/dist/react/lib/tapTarget.js.map +1 -0
  160. package/dist/react/media/VideoTrimmer.d.ts +1 -1
  161. package/dist/react/media/VideoTrimmer.js +1 -1
  162. package/dist/react/media/denseGallery.css +3 -3
  163. package/dist/react/media/ffmpegWasm.js +2 -2
  164. package/dist/react/media/ffmpegWasm.js.map +1 -1
  165. package/dist/react/media/videoPlayer.css +42 -0
  166. package/dist/react/namespace/NamespaceTargetCapsule.d.ts +2 -2
  167. package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
  168. package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
  169. package/dist/react/nav/BreadcrumbTrail.js +4 -3
  170. package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
  171. package/dist/react/nav/HubTileGrid.d.ts.map +1 -1
  172. package/dist/react/nav/HubTileGrid.js +2 -1
  173. package/dist/react/nav/HubTileGrid.js.map +1 -1
  174. package/dist/react/nav/SideNav.d.ts.map +1 -1
  175. package/dist/react/nav/SideNav.js +4 -3
  176. package/dist/react/nav/SideNav.js.map +1 -1
  177. package/dist/react/nav/SideNavCustomize.d.ts.map +1 -1
  178. package/dist/react/nav/SideNavCustomize.js +2 -1
  179. package/dist/react/nav/SideNavCustomize.js.map +1 -1
  180. package/dist/react/palette/CommandPalette.d.ts.map +1 -1
  181. package/dist/react/palette/CommandPalette.js +3 -2
  182. package/dist/react/palette/CommandPalette.js.map +1 -1
  183. package/dist/server/drivers/pooledControlStores.pg.test.js +1 -0
  184. package/dist/server/drivers/pooledControlStores.pg.test.js.map +1 -1
  185. package/dist/server/drivers/pooledIdentityStore.pg.test.js +1 -0
  186. package/dist/server/drivers/pooledIdentityStore.pg.test.js.map +1 -1
  187. package/dist/server/drivers/retentionPolicy.pg.test.js +1 -0
  188. package/dist/server/drivers/retentionPolicy.pg.test.js.map +1 -1
  189. package/dist/server/guard/argon2Binding.d.ts +1 -1
  190. package/dist/server/guard/argon2Binding.js +1 -1
  191. package/dist/server/incidents/store.d.ts +3 -3
  192. package/dist/server/index.js +1 -1
  193. package/dist/server/index.js.map +1 -1
  194. package/dist/server/master-lock/masterLock.d.ts +1 -1
  195. package/dist/server/media-bun/index.js +1 -1
  196. package/dist/server/media-bun/index.js.map +1 -1
  197. package/dist/server/paths/appDataHome.d.ts +20 -0
  198. package/dist/server/paths/appDataHome.d.ts.map +1 -0
  199. package/dist/server/paths/appDataHome.js +69 -0
  200. package/dist/server/paths/appDataHome.js.map +1 -0
  201. package/dist/server/retention/archive.d.ts +3 -4
  202. package/dist/server/retention/archive.d.ts.map +1 -1
  203. package/dist/server/retention/archive.js +20 -15
  204. package/dist/server/retention/archive.js.map +1 -1
  205. package/dist/server/retention/index.d.ts +1 -1
  206. package/dist/server/retention/index.js +1 -1
  207. package/dist/server/retention/policy.d.ts +2 -2
  208. package/dist/server/retention/policy.d.ts.map +1 -1
  209. package/dist/server/retention/policy.js +1 -1
  210. package/dist/server/retention/store.d.ts.map +1 -1
  211. package/dist/server/retention/store.js +27 -20
  212. package/dist/server/retention/store.js.map +1 -1
  213. package/dist/server/runtime/localHost.d.ts +10 -5
  214. package/dist/server/runtime/localHost.d.ts.map +1 -1
  215. package/dist/server/runtime/localHost.js +12 -8
  216. package/dist/server/runtime/localHost.js.map +1 -1
  217. package/dist/server/runtime/meterRollup.pg.test.js +1 -0
  218. package/dist/server/runtime/meterRollup.pg.test.js.map +1 -1
  219. package/dist/server/runtime/recipe.d.ts +4 -4
  220. package/dist/server/runtime/retentionJob.pg.test.js +1 -0
  221. package/dist/server/runtime/retentionJob.pg.test.js.map +1 -1
  222. package/dist/server/search/pgSearchProvider.pg.test.js +1 -0
  223. package/dist/server/search/pgSearchProvider.pg.test.js.map +1 -1
  224. package/dist/shared/errors.d.ts +1 -1
  225. package/dist/shared/errors.js +1 -1
  226. package/dist/styles-static.css +391 -0
  227. package/dist/styles.css +27 -0
  228. package/package.json +19 -167
  229. package/scripts/generateStaticStyles.ts +122 -0
  230. package/scripts/publicSurface.ts +455 -0
  231. package/scripts/testTmpRoot.ts +34 -5
  232. package/src/client/index.ts +1 -1
  233. package/src/core/category/index.ts +2 -1
  234. package/src/core/category/types.ts +1 -1
  235. package/src/core/file-tree/fileTreeModel.spec.ts +134 -0
  236. package/src/core/file-tree/fileTreeModel.ts +104 -0
  237. package/src/core/layout/index.ts +1 -1
  238. package/src/core/media/index.ts +1 -1
  239. package/src/core/media/types.ts +1 -1
  240. package/src/core/media/uploadLimits.ts +1 -1
  241. package/src/core/sharing/model.ts +1 -1
  242. package/src/ctgr/index.ts +1 -1
  243. package/src/declaredDepsAreImported.spec.ts +87 -0
  244. package/src/demoFixture.spec.ts +133 -0
  245. package/src/index.ts +1 -1
  246. package/src/lockfileIsTracked.spec.ts +50 -0
  247. package/src/namedSubpathsResolve.spec.ts +119 -0
  248. package/src/publicSurface.spec.ts +72 -0
  249. package/src/react/activity-bar/ActivityBar.tsx +17 -0
  250. package/src/react/analytics/index.ts +1 -1
  251. package/src/react/chat/MessageComposer.tsx +5 -4
  252. package/src/react/components/Button.tsx +3 -2
  253. package/src/react/components/Checkbox.spec.tsx +51 -0
  254. package/src/react/components/Checkbox.tsx +68 -26
  255. package/src/react/components/CodeArea.tsx +2 -1
  256. package/src/react/components/CodeChip.spec.tsx +2 -2
  257. package/src/react/components/Collapsible.tsx +2 -1
  258. package/src/react/components/ComboboxField.tsx +3 -2
  259. package/src/react/components/CopyButton.tsx +2 -1
  260. package/src/react/components/CopyableText.spec.tsx +1 -1
  261. package/src/react/components/DataTable/ColumnChecklist.tsx +2 -1
  262. package/src/react/components/DataTable/Pagination.tsx +2 -1
  263. package/src/react/components/DataTable/SortHeader.tsx +2 -1
  264. package/src/react/components/DataTable/{FilterBuilder.tsx → TableFilterBuilder.tsx} +33 -5
  265. package/src/react/components/DataTable/Toolbar.tsx +3 -3
  266. package/src/react/components/DataTable/cells/LinkCell.tsx +2 -1
  267. package/src/react/components/DataTable/index.ts +8 -1
  268. package/src/react/components/DragHandle.tsx +2 -1
  269. package/src/react/components/EmojiField.tsx +2 -1
  270. package/src/react/components/EventTimeline.tsx +3 -2
  271. package/src/react/components/FileLocation.spec.tsx +1 -1
  272. package/src/react/components/IconButton.tsx +1 -1
  273. package/src/react/components/InfoHint.tsx +5 -4
  274. package/src/react/components/InheritBadge.tsx +1 -1
  275. package/src/react/components/InlineEditableText.tsx +2 -1
  276. package/src/react/components/MeterList.tsx +2 -1
  277. package/src/react/components/PathText.tsx +4 -3
  278. package/src/react/components/RatingField.tsx +2 -1
  279. package/src/react/components/SecretInput.tsx +3 -3
  280. package/src/react/components/SegmentedControl.tsx +2 -2
  281. package/src/react/components/StarRating.spec.tsx +2 -2
  282. package/src/react/components/StarRating.tsx +9 -5
  283. package/src/react/components/StatStrip.tsx +2 -1
  284. package/src/react/components/StatTile.tsx +3 -3
  285. package/src/react/components/Tabs.spec.tsx +3 -2
  286. package/src/react/components/Tabs.tsx +2 -1
  287. package/src/react/components/TruncatedText.tsx +2 -1
  288. package/src/react/components/calendar/MonthGrid.spec.tsx +2 -1
  289. package/src/react/components/calendar/MonthGrid.tsx +2 -1
  290. package/src/react/components/calendar/WeekView.tsx +2 -1
  291. package/src/react/components/revealOnHover.ts +3 -2
  292. package/src/react/file-tree/FileTree.spec.tsx +248 -0
  293. package/src/react/file-tree/FileTree.tsx +304 -4
  294. package/src/react/file-tree/fileTree.css +52 -0
  295. package/src/react/file-tree/fileTreeGeometry.fixture.json +151 -0
  296. package/src/react/file-tree/fileTreeGeometry.spec.ts +33 -52
  297. package/src/react/filter-rail/FilterRail.spec.tsx +2 -1
  298. package/src/react/filter-rail/FilterRail.tsx +5 -4
  299. package/src/react/folder-tree/FolderTreeRail.tsx +2 -1
  300. package/src/react/index.ts +13 -3
  301. package/src/react/layoutEngine/index.ts +1 -1
  302. package/src/react/layoutEngine/types.ts +1 -1
  303. package/src/react/lib/field.ts +4 -2
  304. package/src/react/lib/floatingStyles.spec.ts +2 -1
  305. package/src/react/lib/floatingStyles.ts +3 -1
  306. package/src/react/lib/tapTarget.ts +100 -0
  307. package/src/react/media/MaskPainter.tsx +2 -2
  308. package/src/react/media/VideoTrimmer.tsx +1 -1
  309. package/src/react/media/denseGallery.css +3 -3
  310. package/src/react/media/ffmpegWasm.ts +2 -2
  311. package/src/react/media/videoPlayer.css +42 -0
  312. package/src/react/namespace/NamespaceTargetCapsule.tsx +2 -2
  313. package/src/react/nav/BreadcrumbTrail.tsx +4 -3
  314. package/src/react/nav/HubTileGrid.tsx +2 -1
  315. package/src/react/nav/SideNav.tsx +4 -3
  316. package/src/react/nav/SideNavCustomize.tsx +2 -1
  317. package/src/react/palette/CommandPalette.tsx +3 -2
  318. package/src/server/ctgr.ts +1 -1
  319. package/src/server/drivers/pooledControlStores.pg.test.ts +1 -0
  320. package/src/server/drivers/pooledIdentityStore.pg.test.ts +1 -0
  321. package/src/server/drivers/retentionPolicy.pg.test.ts +1 -0
  322. package/src/server/guard/argon2Binding.ts +1 -1
  323. package/src/server/incidents/store.ts +3 -3
  324. package/src/server/index.ts +1 -1
  325. package/src/server/master-lock/masterLock.spec.ts +18 -2
  326. package/src/server/master-lock/masterLock.ts +1 -1
  327. package/src/server/media-bun/image.spec.ts +1 -0
  328. package/src/server/media-bun/index.ts +1 -1
  329. package/src/server/media-bun/video.spec.ts +1 -0
  330. package/src/server/paths/appDataHome.spec.ts +87 -0
  331. package/src/server/paths/appDataHome.ts +84 -0
  332. package/src/server/retention/archive.spec.ts +26 -4
  333. package/src/server/retention/archive.ts +20 -15
  334. package/src/server/retention/index.ts +1 -1
  335. package/src/server/retention/policy.ts +2 -2
  336. package/src/server/retention/store.spec.ts +38 -10
  337. package/src/server/retention/store.ts +26 -19
  338. package/src/server/runtime/localHost.spec.ts +22 -3
  339. package/src/server/runtime/localHost.ts +12 -9
  340. package/src/server/runtime/meterRollup.pg.test.ts +1 -0
  341. package/src/server/runtime/recipe.ts +4 -4
  342. package/src/server/runtime/retentionJob.pg.test.ts +1 -0
  343. package/src/server/search/pgSearchProvider.pg.test.ts +1 -0
  344. package/src/server/storage/binaryServerProcessing.integration.spec.ts +6 -2
  345. package/src/server/storage/chunked.integration.spec.ts +5 -2
  346. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +5 -2
  347. package/src/server/storage/files/adapter.photo.display.spec.ts +1 -0
  348. package/src/server/storage/imageThumbnail.spec.ts +1 -0
  349. package/src/server/storage/transcode.integration.spec.ts +5 -2
  350. package/src/server/storage/videoProcessor.posterOnly.spec.ts +1 -0
  351. package/src/shared/errors.ts +1 -1
  352. package/src/skippedTestsAreAnswered.spec.ts +215 -0
  353. package/src/styles-static.css +391 -0
  354. package/src/styles.css +27 -0
  355. package/src/stylesStaticMatches.spec.ts +134 -0
  356. package/src/tapTargetStylesheet.spec.ts +150 -0
  357. package/src/testTmpRoot.spec.ts +102 -0
  358. package/dist/core/duplicates/index.d.ts +0 -116
  359. package/dist/core/duplicates/index.d.ts.map +0 -1
  360. package/dist/core/duplicates/index.js +0 -178
  361. package/dist/core/duplicates/index.js.map +0 -1
  362. package/dist/core/namespace/helpers.d.ts +0 -14
  363. package/dist/core/namespace/helpers.d.ts.map +0 -1
  364. package/dist/core/namespace/helpers.js +0 -29
  365. package/dist/core/namespace/helpers.js.map +0 -1
  366. package/dist/core/namespace/index.d.ts +0 -4
  367. package/dist/core/namespace/index.d.ts.map +0 -1
  368. package/dist/core/namespace/index.js +0 -6
  369. package/dist/core/namespace/index.js.map +0 -1
  370. package/dist/core/namespace/memoryStore.d.ts +0 -19
  371. package/dist/core/namespace/memoryStore.d.ts.map +0 -1
  372. package/dist/core/namespace/memoryStore.js +0 -70
  373. package/dist/core/namespace/memoryStore.js.map +0 -1
  374. package/dist/core/namespace/types.d.ts +0 -44
  375. package/dist/core/namespace/types.d.ts.map +0 -1
  376. package/dist/core/namespace/types.js +0 -8
  377. package/dist/core/namespace/types.js.map +0 -1
  378. package/dist/game/core/DisposeRegistry.d.ts +0 -42
  379. package/dist/game/core/DisposeRegistry.d.ts.map +0 -1
  380. package/dist/game/core/DisposeRegistry.js +0 -67
  381. package/dist/game/core/DisposeRegistry.js.map +0 -1
  382. package/dist/game/core/drawBudget.d.ts +0 -26
  383. package/dist/game/core/drawBudget.d.ts.map +0 -1
  384. package/dist/game/core/drawBudget.js +0 -55
  385. package/dist/game/core/drawBudget.js.map +0 -1
  386. package/dist/game/core/fixedTimestep.d.ts +0 -38
  387. package/dist/game/core/fixedTimestep.d.ts.map +0 -1
  388. package/dist/game/core/fixedTimestep.js +0 -47
  389. package/dist/game/core/fixedTimestep.js.map +0 -1
  390. package/dist/game/core/index.d.ts +0 -9
  391. package/dist/game/core/index.d.ts.map +0 -1
  392. package/dist/game/core/index.js +0 -8
  393. package/dist/game/core/index.js.map +0 -1
  394. package/dist/game/core/inputCollector.d.ts +0 -82
  395. package/dist/game/core/inputCollector.d.ts.map +0 -1
  396. package/dist/game/core/inputCollector.js +0 -176
  397. package/dist/game/core/inputCollector.js.map +0 -1
  398. package/dist/game/core/resizeCanvas.d.ts +0 -19
  399. package/dist/game/core/resizeCanvas.d.ts.map +0 -1
  400. package/dist/game/core/resizeCanvas.js +0 -29
  401. package/dist/game/core/resizeCanvas.js.map +0 -1
  402. package/dist/game/react/index.d.ts +0 -3
  403. package/dist/game/react/index.d.ts.map +0 -1
  404. package/dist/game/react/index.js +0 -5
  405. package/dist/game/react/index.js.map +0 -1
  406. package/dist/game/react/useGameEngine.d.ts +0 -64
  407. package/dist/game/react/useGameEngine.d.ts.map +0 -1
  408. package/dist/game/react/useGameEngine.js +0 -78
  409. package/dist/game/react/useGameEngine.js.map +0 -1
  410. package/dist/react/canvas/CanvasNavHUD.d.ts +0 -64
  411. package/dist/react/canvas/CanvasNavHUD.d.ts.map +0 -1
  412. package/dist/react/canvas/CanvasNavHUD.js +0 -58
  413. package/dist/react/canvas/CanvasNavHUD.js.map +0 -1
  414. package/dist/react/canvas/fitLabel.d.ts +0 -53
  415. package/dist/react/canvas/fitLabel.d.ts.map +0 -1
  416. package/dist/react/canvas/fitLabel.js +0 -104
  417. package/dist/react/canvas/fitLabel.js.map +0 -1
  418. package/dist/react/canvas/index.d.ts +0 -4
  419. package/dist/react/canvas/index.d.ts.map +0 -1
  420. package/dist/react/canvas/index.js +0 -4
  421. package/dist/react/canvas/index.js.map +0 -1
  422. package/dist/react/canvas/lod.d.ts +0 -40
  423. package/dist/react/canvas/lod.d.ts.map +0 -1
  424. package/dist/react/canvas/lod.js +0 -37
  425. package/dist/react/canvas/lod.js.map +0 -1
  426. package/dist/react/components/DataTable/FilterBuilder.d.ts +0 -38
  427. package/dist/react/components/DataTable/FilterBuilder.d.ts.map +0 -1
  428. package/dist/react/components/DataTable/FilterBuilder.js.map +0 -1
  429. package/dist/react/seo/HeadProvider.d.ts +0 -14
  430. package/dist/react/seo/HeadProvider.d.ts.map +0 -1
  431. package/dist/react/seo/HeadProvider.js +0 -44
  432. package/dist/react/seo/HeadProvider.js.map +0 -1
  433. package/dist/react/seo/applyHeadToDocument.d.ts +0 -3
  434. package/dist/react/seo/applyHeadToDocument.d.ts.map +0 -1
  435. package/dist/react/seo/applyHeadToDocument.js +0 -66
  436. package/dist/react/seo/applyHeadToDocument.js.map +0 -1
  437. package/dist/react/seo/index.d.ts +0 -3
  438. package/dist/react/seo/index.d.ts.map +0 -1
  439. package/dist/react/seo/index.js +0 -7
  440. package/dist/react/seo/index.js.map +0 -1
  441. package/dist/react/timeline/ClipView.d.ts +0 -29
  442. package/dist/react/timeline/ClipView.d.ts.map +0 -1
  443. package/dist/react/timeline/ClipView.js +0 -53
  444. package/dist/react/timeline/ClipView.js.map +0 -1
  445. package/dist/react/timeline/Playhead.d.ts +0 -16
  446. package/dist/react/timeline/Playhead.d.ts.map +0 -1
  447. package/dist/react/timeline/Playhead.js +0 -26
  448. package/dist/react/timeline/Playhead.js.map +0 -1
  449. package/dist/react/timeline/TimeRuler.d.ts +0 -21
  450. package/dist/react/timeline/TimeRuler.d.ts.map +0 -1
  451. package/dist/react/timeline/TimeRuler.js +0 -31
  452. package/dist/react/timeline/TimeRuler.js.map +0 -1
  453. package/dist/react/timeline/TimelineSurface.d.ts +0 -29
  454. package/dist/react/timeline/TimelineSurface.d.ts.map +0 -1
  455. package/dist/react/timeline/TimelineSurface.js +0 -56
  456. package/dist/react/timeline/TimelineSurface.js.map +0 -1
  457. package/dist/react/timeline/TrackLane.d.ts +0 -31
  458. package/dist/react/timeline/TrackLane.d.ts.map +0 -1
  459. package/dist/react/timeline/TrackLane.js +0 -32
  460. package/dist/react/timeline/TrackLane.js.map +0 -1
  461. package/dist/react/timeline/index.d.ts +0 -6
  462. package/dist/react/timeline/index.d.ts.map +0 -1
  463. package/dist/react/timeline/index.js +0 -12
  464. package/dist/react/timeline/index.js.map +0 -1
  465. package/dist/server/private-media/index.d.ts +0 -7
  466. package/dist/server/private-media/index.d.ts.map +0 -1
  467. package/dist/server/private-media/index.js +0 -13
  468. package/dist/server/private-media/index.js.map +0 -1
  469. package/dist/server/seo/index.d.ts +0 -3
  470. package/dist/server/seo/index.d.ts.map +0 -1
  471. package/dist/server/seo/index.js +0 -6
  472. package/dist/server/seo/index.js.map +0 -1
  473. package/dist/server/seo/mountSeoRoutes.d.ts +0 -9
  474. package/dist/server/seo/mountSeoRoutes.d.ts.map +0 -1
  475. package/dist/server/seo/mountSeoRoutes.js +0 -19
  476. package/dist/server/seo/mountSeoRoutes.js.map +0 -1
  477. package/dist/server/seo/serveHeadInjectedIndex.d.ts +0 -9
  478. package/dist/server/seo/serveHeadInjectedIndex.d.ts.map +0 -1
  479. package/dist/server/seo/serveHeadInjectedIndex.js +0 -20
  480. package/dist/server/seo/serveHeadInjectedIndex.js.map +0 -1
  481. package/dist/upload.d.ts +0 -148
  482. package/dist/upload.d.ts.map +0 -1
  483. package/dist/upload.js +0 -159
  484. package/dist/upload.js.map +0 -1
  485. package/dist/verify/runtime/index.d.ts +0 -16
  486. package/dist/verify/runtime/index.d.ts.map +0 -1
  487. package/dist/verify/runtime/index.js +0 -16
  488. package/dist/verify/runtime/index.js.map +0 -1
  489. package/scripts/demoCheck.ts +0 -42
  490. package/src/core/duplicates/index.spec.ts +0 -116
  491. package/src/core/duplicates/index.ts +0 -203
  492. package/src/core/namespace/helpers.ts +0 -31
  493. package/src/core/namespace/index.ts +0 -12
  494. package/src/core/namespace/memoryStore.ts +0 -77
  495. package/src/core/namespace/namespace.spec.ts +0 -117
  496. package/src/core/namespace/types.ts +0 -53
  497. package/src/game/core/DisposeRegistry.spec.ts +0 -53
  498. package/src/game/core/DisposeRegistry.ts +0 -70
  499. package/src/game/core/drawBudget.spec.ts +0 -51
  500. package/src/game/core/drawBudget.ts +0 -75
  501. package/src/game/core/fixedTimestep.spec.ts +0 -91
  502. package/src/game/core/fixedTimestep.ts +0 -79
  503. package/src/game/core/index.ts +0 -16
  504. package/src/game/core/inputCollector.spec.ts +0 -29
  505. package/src/game/core/inputCollector.ts +0 -245
  506. package/src/game/core/resizeCanvas.ts +0 -31
  507. package/src/game/react/index.ts +0 -10
  508. package/src/game/react/useGameEngine.ts +0 -125
  509. package/src/react/canvas/CanvasNavHUD.spec.tsx +0 -62
  510. package/src/react/canvas/CanvasNavHUD.tsx +0 -210
  511. package/src/react/canvas/fitLabel.spec.ts +0 -82
  512. package/src/react/canvas/fitLabel.ts +0 -150
  513. package/src/react/canvas/index.ts +0 -15
  514. package/src/react/canvas/lod.ts +0 -53
  515. package/src/react/seo/HeadProvider.tsx +0 -67
  516. package/src/react/seo/applyHeadToDocument.ts +0 -73
  517. package/src/react/seo/index.ts +0 -12
  518. package/src/react/seo/seo.spec.tsx +0 -101
  519. package/src/react/timeline/ClipView.tsx +0 -146
  520. package/src/react/timeline/Playhead.tsx +0 -63
  521. package/src/react/timeline/TimeRuler.tsx +0 -85
  522. package/src/react/timeline/TimelineSurface.tsx +0 -157
  523. package/src/react/timeline/TrackLane.tsx +0 -87
  524. package/src/react/timeline/index.ts +0 -12
  525. package/src/react/timeline/timeline.spec.tsx +0 -175
  526. package/src/server/private-media/index.ts +0 -45
  527. package/src/server/seo/index.ts +0 -8
  528. package/src/server/seo/mountSeoRoutes.ts +0 -37
  529. package/src/server/seo/seo.spec.ts +0 -128
  530. package/src/server/seo/serveHeadInjectedIndex.ts +0 -36
  531. package/src/upload.spec.ts +0 -300
  532. package/src/upload.ts +0 -288
  533. package/src/verify/runtime/index.ts +0 -64
@@ -1,21 +0,0 @@
1
- export interface TimeRulerProps {
2
- /** Ruler length (seconds) — usually total duration + some tail slack. */
3
- durationSeconds: number;
4
- zoomScale: number;
5
- /** Click/drag anywhere on the ruler seeks (a scrub). */
6
- onScrub: (seconds: number) => void;
7
- /** Fires on pointer-down / pointer-up of a ruler scrub so the owner can
8
- * suppress live playback while the gesture owns the playhead (parity with the
9
- * draggable playhead knob). */
10
- onScrubStart?: () => void;
11
- onScrubEnd?: () => void;
12
- /** Current playhead time — announced as the slider value. */
13
- currentTimeSeconds?: number;
14
- className?: string;
15
- }
16
- /**
17
- * The clickable time ruler. Tick density self-adjusts with zoom (labels never
18
- * crowd below ~60px apart); pointer down + drag scrubs continuously.
19
- */
20
- export declare function TimeRuler({ durationSeconds, zoomScale, onScrub, onScrubStart, onScrubEnd, currentTimeSeconds, className, }: TimeRulerProps): import("react").JSX.Element;
21
- //# sourceMappingURL=TimeRuler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeRuler.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/TimeRuler.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;mCAE+B;IAC/B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,eAAe,EACf,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,EACV,kBAAsB,EACtB,SAAS,GACV,EAAE,cAAc,+BAkDhB"}
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { pxToSeconds, rulerTicks, secondsToPx } from 'cwip/timeline';
3
- import { useRef } from 'react';
4
- import { formatTimecode } from '../../core/media';
5
- import { usePointerDrag } from '../hooks/usePointerDrag';
6
- import { cn } from '../lib/cn';
7
- /**
8
- * The clickable time ruler. Tick density self-adjusts with zoom (labels never
9
- * crowd below ~60px apart); pointer down + drag scrubs continuously.
10
- */
11
- export function TimeRuler({ durationSeconds, zoomScale, onScrub, onScrubStart, onScrubEnd, currentTimeSeconds = 0, className, }) {
12
- const ref = useRef(null);
13
- const seekAtClientX = (clientX) => {
14
- const rect = ref.current?.getBoundingClientRect();
15
- if (!rect)
16
- return;
17
- const seconds = pxToSeconds(clientX - rect.left, zoomScale);
18
- onScrub(Math.min(durationSeconds, Math.max(0, seconds)));
19
- };
20
- const drag = usePointerDrag({
21
- onStart: (e) => {
22
- onScrubStart?.();
23
- seekAtClientX(e.clientX);
24
- },
25
- onMove: ({ event }) => seekAtClientX(event.clientX),
26
- onEnd: () => onScrubEnd?.(),
27
- });
28
- const ticks = rulerTicks(durationSeconds, zoomScale);
29
- return (_jsx("div", { ref: ref, ...drag.handleProps, className: cn('relative h-7 min-h-7 cursor-ew-resize select-none border-b border-border bg-muted/40', className), style: { ...drag.handleProps.style, width: secondsToPx(durationSeconds, zoomScale) }, role: 'slider', "aria-label": 'Timeline position', "aria-valuemin": 0, "aria-valuemax": Math.round(durationSeconds), "aria-valuenow": Math.min(Math.round(durationSeconds), Math.round(currentTimeSeconds)), tabIndex: 0, children: ticks.map((t) => (_jsx("div", { className: 'absolute top-0 h-full border-l border-border/70', style: { left: secondsToPx(t, zoomScale) }, children: _jsx("span", { className: 'pl-1 text-caption leading-7 text-muted-foreground', children: formatTimecode(t) }) }, t))) }));
30
- }
31
- //# sourceMappingURL=TimeRuler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeRuler.js","sourceRoot":"","sources":["../../../src/react/timeline/TimeRuler.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAkB/B;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,eAAe,EACf,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,EACV,kBAAkB,GAAG,CAAC,EACtB,SAAS,GACM;IACf,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,YAAY,EAAE,EAAE,CAAC;YACjB,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACnD,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE;KAC5B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAErD,OAAO,CACL,cACE,GAAG,EAAE,GAAG,KACJ,IAAI,CAAC,WAAW,EACpB,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,SAAS,CACV,EACD,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,EACpF,IAAI,EAAC,QAAQ,gBACF,mBAAmB,mBACf,CAAC,mBACD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,mBAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,EACpF,QAAQ,EAAE,CAAC,YAEV,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,cAEE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,YAE1C,eAAM,SAAS,EAAC,mDAAmD,YAChE,cAAc,CAAC,CAAC,CAAC,GACb,IANF,CAAC,CAOF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,29 +0,0 @@
1
- import { type TimelineTrack } from 'cwip/timeline';
2
- import { type ReactNode } from 'react';
3
- export interface TimelineSurfaceProps {
4
- tracks: TimelineTrack[];
5
- zoomScale: number;
6
- currentTime: number;
7
- onScrub: (seconds: number) => void;
8
- onScrubStart?: () => void;
9
- onScrubEnd?: () => void;
10
- /** Zoom changes arrive pre-clamped; scroll is re-anchored on the playhead. */
11
- onZoomChange?: (zoomScale: number) => void;
12
- /** Renders each track's lane (TrackLane + ClipViews) — the owner wires ops. */
13
- renderTrack: (track: TimelineTrack, durationSeconds: number) => ReactNode;
14
- /** Extra tail beyond the last clip so there's room to drop/extend (default 10s). */
15
- tailSeconds?: number;
16
- /** Auto-scroll so the playhead stays in view as `currentTime` advances (e.g. during
17
- * playback) — once it nears the viewport edge, the view pages forward to keep it
18
- * visible, rather than scrolling every frame. */
19
- followPlayhead?: boolean;
20
- className?: string;
21
- }
22
- /**
23
- * The composed timeline scroller: ruler + track lanes + playhead in one
24
- * horizontally-scrolling keyboard-inset-safe surface (ScrollArea — no raw
25
- * overflow), with zoom controls that keep the playhead visually anchored.
26
- * Fully controlled; owns NO timeline state.
27
- */
28
- export declare function TimelineSurface({ tracks, zoomScale, currentTime, onScrub, onScrubStart, onScrubEnd, onZoomChange, renderTrack, tailSeconds, followPlayhead, className, }: TimelineSurfaceProps): import("react").JSX.Element;
29
- //# sourceMappingURL=TimelineSurface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimelineSurface.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/TimelineSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAInB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAS1D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+EAA+E;IAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,KAAK,SAAS,CAAC;IAC1E,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;qDAEiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,SAAS,EACT,WAAW,EACX,OAAO,EACP,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAgB,EAChB,cAAsB,EACtB,SAAS,GACV,EAAE,oBAAoB,+BAoGtB"}
@@ -1,56 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { clampZoom, secondsToPx, totalDuration, ZOOM_RANGE, zoomAnchoredScrollLeft, } from 'cwip/timeline';
3
- import { Minus, Plus } from 'lucide-react';
4
- import { useEffect, useRef } from 'react';
5
- import { IconButton } from '../components/IconButton';
6
- import { ScrollArea } from '../components/ScrollArea';
7
- import { Slider } from '../components/Slider';
8
- import { Tooltip } from '../components/Tooltip';
9
- import { cn } from '../lib/cn';
10
- import { Playhead } from './Playhead';
11
- import { TimeRuler } from './TimeRuler';
12
- /**
13
- * The composed timeline scroller: ruler + track lanes + playhead in one
14
- * horizontally-scrolling keyboard-inset-safe surface (ScrollArea — no raw
15
- * overflow), with zoom controls that keep the playhead visually anchored.
16
- * Fully controlled; owns NO timeline state.
17
- */
18
- export function TimelineSurface({ tracks, zoomScale, currentTime, onScrub, onScrubStart, onScrubEnd, onZoomChange, renderTrack, tailSeconds = 10, followPlayhead = false, className, }) {
19
- const scrollRef = useRef(null);
20
- const durationSeconds = totalDuration(tracks) + tailSeconds;
21
- useEffect(() => {
22
- if (!followPlayhead)
23
- return;
24
- const el = scrollRef.current;
25
- if (!el)
26
- return;
27
- const playheadPx = secondsToPx(currentTime, zoomScale);
28
- const viewportX = playheadPx - el.scrollLeft;
29
- // Only page the view forward/back once the playhead nears an edge — scrolling every
30
- // frame during playback would fight the user's ability to glance elsewhere.
31
- const margin = el.clientWidth * 0.1;
32
- if (viewportX < margin || viewportX > el.clientWidth - margin) {
33
- el.scrollLeft = Math.max(0, playheadPx - el.clientWidth * 0.2);
34
- }
35
- }, [followPlayhead, currentTime, zoomScale]);
36
- const changeZoom = (next) => {
37
- if (!onZoomChange)
38
- return;
39
- const clamped = clampZoom(next);
40
- const el = scrollRef.current;
41
- if (el) {
42
- const anchorViewportPx = secondsToPx(currentTime, zoomScale) - el.scrollLeft;
43
- // after the re-render at the new zoom, restore the playhead's viewport x
44
- requestAnimationFrame(() => {
45
- el.scrollLeft = zoomAnchoredScrollLeft(currentTime, anchorViewportPx, clamped);
46
- });
47
- }
48
- onZoomChange(clamped);
49
- };
50
- return (_jsxs("div", { className: cn('flex flex-col', className), children: [onZoomChange && (_jsxs("div", { className: 'flex items-center justify-end gap-2 border-b border-border px-2 py-1', children: [_jsx(Tooltip, { content: 'Zoom out', children: _jsx(IconButton, { label: 'Zoom out', onClick: () => changeZoom(zoomScale / 1.4), disabled: zoomScale <= ZOOM_RANGE.min, children: _jsx(Minus, { "aria-hidden": true, className: 'size-4' }) }) }), _jsx(Slider, { value: zoomScale, min: ZOOM_RANGE.min, max: ZOOM_RANGE.max,
51
- // A coarse step of 1 would swallow the whole low end (0.05–1) in a single
52
- // increment, making the zoomed-out-enough-to-fit-a-long-clip range
53
- // unreachable by dragging — 0.5 keeps that end usable too.
54
- step: 0.5, "aria-label": 'Timeline zoom', className: 'w-24', onChange: changeZoom }), _jsxs("span", { className: 'w-14 text-center text-caption tabular-nums text-muted-foreground', children: [Math.round(zoomScale), " px/s"] }), _jsx(Tooltip, { content: 'Zoom in', children: _jsx(IconButton, { label: 'Zoom in', onClick: () => changeZoom(zoomScale * 1.4), disabled: zoomScale >= ZOOM_RANGE.max, children: _jsx(Plus, { "aria-hidden": true, className: 'size-4' }) }) })] })), _jsx(ScrollArea, { axis: 'x', space: 'none', scrollRef: scrollRef, className: 'grow', children: _jsxs("div", { className: 'relative w-max min-w-full', children: [_jsx("div", { className: 'ml-28', children: _jsx(TimeRuler, { durationSeconds: durationSeconds, zoomScale: zoomScale, currentTimeSeconds: currentTime, onScrub: onScrub, onScrubStart: onScrubStart, onScrubEnd: onScrubEnd }) }), tracks.map((track) => renderTrack(track, durationSeconds)), _jsx("div", { className: 'pointer-events-none absolute inset-y-0 left-28 right-0', children: _jsx("div", { className: 'relative h-full', children: _jsx(Playhead, { timeSeconds: currentTime, zoomScale: zoomScale, onScrub: onScrub, onScrubStart: onScrubStart, onScrubEnd: onScrubEnd }) }) })] }) })] }));
55
- }
56
- //# sourceMappingURL=TimelineSurface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimelineSurface.js","sourceRoot":"","sources":["../../../src/react/timeline/TimelineSurface.tsx"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { type TimelineTrack } from 'cwip/timeline';
2
- import type { ReactNode } from 'react';
3
- export declare const TRACK_LANE_HEIGHT_PX = 108;
4
- export interface TrackLaneProps {
5
- track: TimelineTrack;
6
- zoomScale: number;
7
- /** Lane runway width (seconds) — the surface passes one shared duration. */
8
- durationSeconds: number;
9
- /** Rendered `ClipView`s (the owner maps clips so it controls the wiring). */
10
- children: ReactNode;
11
- /** Lane height in px (default {@link TRACK_LANE_HEIGHT_PX}). Owners can shrink
12
- * a rarely-used lane (e.g. an empty audio track) and grow it once it holds a
13
- * clip, so unused lanes don't waste vertical space. */
14
- laneHeightPx?: number;
15
- /** Click on empty runway — typically seek + deselect. */
16
- onRunwayClick?: (seconds: number) => void;
17
- /** A `dataTransfer` drop on the runway (asset from a library/palette). */
18
- onDropData?: (payload: {
19
- atSeconds: number;
20
- dataTransfer: DataTransfer;
21
- }) => void;
22
- className?: string;
23
- }
24
- /**
25
- * One track row: a sticky header (name + kind icon) and the clip runway. The
26
- * runway is the `relative` positioning context `ClipView`s place themselves
27
- * in, and the drop target for library assets (drop position is reported in
28
- * SECONDS, scroll offset already accounted for via the runway's own rect).
29
- */
30
- export declare function TrackLane({ track, zoomScale, durationSeconds, children, laneHeightPx, onRunwayClick, onDropData, className, }: TrackLaneProps): import("react").JSX.Element;
31
- //# sourceMappingURL=TrackLane.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TrackLane.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/TrackLane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,EAAE,SAAS,CAAC;IACpB;;2DAEuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,EACR,YAAmC,EACnC,aAAa,EACb,UAAU,EACV,SAAS,GACV,EAAE,cAAc,+BA6ChB"}
@@ -1,32 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { pxToSeconds, secondsToPx } from 'cwip/timeline';
3
- import { AudioLines, Film } from 'lucide-react';
4
- import { useRef } from 'react';
5
- import { cn } from '../lib/cn';
6
- export const TRACK_LANE_HEIGHT_PX = 108;
7
- /**
8
- * One track row: a sticky header (name + kind icon) and the clip runway. The
9
- * runway is the `relative` positioning context `ClipView`s place themselves
10
- * in, and the drop target for library assets (drop position is reported in
11
- * SECONDS, scroll offset already accounted for via the runway's own rect).
12
- */
13
- export function TrackLane({ track, zoomScale, durationSeconds, children, laneHeightPx = TRACK_LANE_HEIGHT_PX, onRunwayClick, onDropData, className, }) {
14
- const runwayRef = useRef(null);
15
- const secondsAt = (clientX) => {
16
- const rect = runwayRef.current?.getBoundingClientRect();
17
- if (!rect)
18
- return 0;
19
- return Math.max(0, pxToSeconds(clientX - rect.left, zoomScale));
20
- };
21
- const onDrop = (e) => {
22
- if (!onDropData)
23
- return;
24
- e.preventDefault();
25
- onDropData({ atSeconds: secondsAt(e.clientX), dataTransfer: e.dataTransfer });
26
- };
27
- return (_jsxs("div", { className: cn('flex border-b border-border/60 transition-[min-height]', className), style: { minHeight: laneHeightPx }, children: [_jsxs("div", { className: 'sticky left-0 z-30 flex w-28 shrink-0 items-center gap-1.5 border-r border-border bg-muted/60 px-2 backdrop-blur-sm', children: [track.type === 'video' ? (_jsx(Film, { "aria-hidden": true, className: 'size-3.5 text-muted-foreground' })) : (_jsx(AudioLines, { "aria-hidden": true, className: 'size-3.5 text-muted-foreground' })), _jsx("span", { className: 'truncate text-xs text-foreground', children: track.name })] }), _jsx("div", { ref: runwayRef, className: 'relative', style: { width: secondsToPx(durationSeconds, zoomScale) }, onClick: (e) => onRunwayClick?.(secondsAt(e.clientX)), onDragOver: (e) => {
28
- if (onDropData)
29
- e.preventDefault(); // required for `drop` to fire
30
- }, onDrop: onDrop, "data-track-id": track.id, children: children })] }));
31
- }
32
- //# sourceMappingURL=TrackLane.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TrackLane.js","sourceRoot":"","sources":["../../../src/react/timeline/TrackLane.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAoBxC;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,EACR,YAAY,GAAG,oBAAoB,EACnC,aAAa,EACb,UAAU,EACV,SAAS,GACM;IACf,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,CAAC,OAAe,EAAU,EAAE;QAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAY,EAAE,EAAE;QAC9B,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,wDAAwD,EAAE,SAAS,CAAC,EAClF,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAElC,eAAK,SAAS,EAAC,qHAAqH,aACjI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,yBAAa,SAAS,EAAC,gCAAgC,GAAG,CAChE,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,yBAAa,SAAS,EAAC,gCAAgC,GAAG,CACtE,EACD,eAAM,SAAS,EAAC,kCAAkC,YAAE,KAAK,CAAC,IAAI,GAAQ,IAClE,EAGN,cACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,EACzD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACrD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;oBAChB,IAAI,UAAU;wBAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,8BAA8B;gBACpE,CAAC,EACD,MAAM,EAAE,MAAM,mBACC,KAAK,CAAC,EAAE,YAEtB,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- export { ClipView, type ClipViewProps, type TrimEdge } from './ClipView';
2
- export { Playhead, type PlayheadProps } from './Playhead';
3
- export { TimelineSurface, type TimelineSurfaceProps } from './TimelineSurface';
4
- export { TimeRuler, type TimeRulerProps } from './TimeRuler';
5
- export { TRACK_LANE_HEIGHT_PX, TrackLane, type TrackLaneProps } from './TrackLane';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -1,12 +0,0 @@
1
- // cursedbelt/react/timeline — the generic multi-track timeline editor surface.
2
- // Controlled/presentational components over the cwip/timeline engine: they
3
- // translate pixels to seconds and report INTENT (select/move/trim/scrub); the
4
- // owner applies cwip ops (clamping, ripple, snapping) and passes state back
5
- // down. Reusable for any lane-based editor (video NLE, audio arrangement,
6
- // schedule lanes) — the cursedshell video-editor plugin is the reference user.
7
- export { ClipView } from './ClipView';
8
- export { Playhead } from './Playhead';
9
- export { TimelineSurface } from './TimelineSurface';
10
- export { TimeRuler } from './TimeRuler';
11
- export { TRACK_LANE_HEIGHT_PX, TrackLane } from './TrackLane';
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/timeline/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC"}
@@ -1,7 +0,0 @@
1
- export type { ContentKey, KeyMode } from './crypto';
2
- export { cryptBlobStream, derivePasswordSetKey, deriveServerSetKey, generateContentKey, generateUserSalt, openMeta, sealMeta, unwrapContentKey, wrapContentKey, } from './crypto';
3
- export { createMemoryPrivateIndex, type PrivateIndex, type PrivateIndexRow, type PrivateItem, toPublic, } from './index-store';
4
- export { type CorsResolver, type MountPrivateOptions, mountPrivateRoutes, } from './mountPrivateRoutes';
5
- export { type PrivateBlobResult, type PrivateProcessOptions, type PrivateProcessResult, processPrivateBlob, processPrivateVideo, } from './pipeline';
6
- export { createUnlockService, type UnlockGrant, type UnlockPasswordPolicy, type UnlockService, } from './unlock';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/private-media/index.ts"],"names":[],"mappings":"AAQA,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC"}
@@ -1,13 +0,0 @@
1
- // cursedbelt/server/private-media — encrypted private media: a multi-password, semi-deniable
2
- // layer over server/storage. Bytes are AES-128-encrypted HLS (fast, edge-cacheable, client-
3
- // decrypted); the per-item content key is wrapped under a set key that is either server-held
4
- // (standard, recoverable) or password-derived (deniable, zero-knowledge). A clear index exposes
5
- // only size + created-at so users can prune forgotten-password media; title/thumb/notes stay in
6
- // an encrypted envelope revealed only by the right password. Builds on cwip secretBox (scrypt +
7
- // AES-GCM) + server/auth (jose) + server/media (the encrypted-HLS pipeline).
8
- export { cryptBlobStream, derivePasswordSetKey, deriveServerSetKey, generateContentKey, generateUserSalt, openMeta, sealMeta, unwrapContentKey, wrapContentKey, } from './crypto';
9
- export { createMemoryPrivateIndex, toPublic, } from './index-store';
10
- export { mountPrivateRoutes, } from './mountPrivateRoutes';
11
- export { processPrivateBlob, processPrivateVideo, } from './pipeline';
12
- export { createUnlockService, } from './unlock';
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/private-media/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,4FAA4F;AAC5F,6FAA6F;AAC7F,gGAAgG;AAChG,gGAAgG;AAChG,gGAAgG;AAChG,6EAA6E;AAG7E,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,wBAAwB,EAIxB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,GAIpB,MAAM,UAAU,CAAC"}
@@ -1,3 +0,0 @@
1
- export { type MountSeoOptions, mountSeoRoutes } from './mountSeoRoutes';
2
- export { type ServeHeadInjectedIndexOptions, serveHeadInjectedIndex, } from './serveHeadInjectedIndex';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/seo/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EACL,KAAK,6BAA6B,EAClC,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
@@ -1,6 +0,0 @@
1
- // cursedbelt/server/seo — Hono wiring for cwip's SEO core: sitemap.xml/robots.txt
2
- // routes and a static-HTML head-injection handler. See seo-reusable-plan.md for the
3
- // wider architecture (visibility model, delivery targets, cursedshell aggregation).
4
- export { mountSeoRoutes } from './mountSeoRoutes';
5
- export { serveHeadInjectedIndex, } from './serveHeadInjectedIndex';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/seo/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oFAAoF;AACpF,oFAAoF;AACpF,OAAO,EAAwB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAEL,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { SeoPolicy } from 'cwip/seo';
2
- import type { Hono } from 'hono';
3
- export interface MountSeoOptions {
4
- sitemapPath?: string;
5
- robotsPath?: string;
6
- cacheControl?: string;
7
- }
8
- export declare const mountSeoRoutes: (app: Hono, policy: SeoPolicy, options?: MountSeoOptions) => void;
9
- //# sourceMappingURL=mountSeoRoutes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountSeoRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/seo/mountSeoRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,WAAW,eAAe;IAG9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,eAAO,MAAM,cAAc,GACzB,KAAK,IAAI,EACT,QAAQ,SAAS,EACjB,UAAS,eAAoB,KAC5B,IAcF,CAAC"}
@@ -1,19 +0,0 @@
1
- import { buildRobots, buildSitemap } from 'cwip/seo';
2
- // Registers GET /sitemap.xml and GET /robots.txt from a SeoPolicy. These serve raw
3
- // text bytes, so — per cursedbelt STANDARDS.md §5 — they are registered DIRECTLY
4
- // with `app.get`, never through `buildRoutes`: routing them through the ctgr
5
- // GET-tunnel would base64url-encode the response body instead of serving it as-is.
6
- export const mountSeoRoutes = (app, policy, options = {}) => {
7
- const sitemapPath = options.sitemapPath ?? '/sitemap.xml';
8
- const robotsPath = options.robotsPath ?? '/robots.txt';
9
- const cacheControl = options.cacheControl ?? 'public, max-age=3600';
10
- app.get(sitemapPath, (c) => {
11
- c.header('Cache-Control', cacheControl);
12
- return c.body(buildSitemap(policy), 200, { 'Content-Type': 'application/xml' });
13
- });
14
- app.get(robotsPath, (c) => {
15
- c.header('Cache-Control', cacheControl);
16
- return c.body(buildRobots(policy, { sitemapPath }), 200, { 'Content-Type': 'text/plain' });
17
- });
18
- };
19
- //# sourceMappingURL=mountSeoRoutes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountSeoRoutes.js","sourceRoot":"","sources":["../../../src/server/seo/mountSeoRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAarD,mFAAmF;AACnF,iFAAiF;AACjF,6EAA6E;AAC7E,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAS,EACT,MAAiB,EACjB,UAA2B,EAAE,EACvB,EAAE;IACR,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC;IAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,aAAa,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,sBAAsB,CAAC;IAEpE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QACzB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { HeadModel } from 'cwip/seo';
2
- import type { Context } from 'hono';
3
- export interface ServeHeadInjectedIndexOptions {
4
- html: string | (() => string | Promise<string>);
5
- resolve: (path: string) => HeadModel | undefined;
6
- stripBase?: boolean;
7
- }
8
- export declare const serveHeadInjectedIndex: (opts: ServeHeadInjectedIndexOptions) => (c: Context) => Promise<Response>;
9
- //# sourceMappingURL=serveHeadInjectedIndex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serveHeadInjectedIndex.d.ts","sourceRoot":"","sources":["../../../src/server/seo/serveHeadInjectedIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,WAAW,6BAA6B;IAG5C,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAGhD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAIjD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,eAAO,MAAM,sBAAsB,GAAI,MAAM,6BAA6B,MAG1D,GAAG,OAAO,sBASzB,CAAC"}
@@ -1,20 +0,0 @@
1
- import { injectHead, renderHead, stripBaseTitleAndDescription } from 'cwip/seo';
2
- // Builds a Hono handler that serves `opts.html` with a per-route HeadModel spliced
3
- // into <head> via cwip's `injectHead`/`renderHead` — a pure string transform, so it
4
- // runs anywhere Bun does (this repo's Hono/Bun.serve host). An HTMLRewriter-based
5
- // streaming variant for Cloudflare Workers/Pages Functions can reuse the exact same
6
- // `renderHead` output later; that seam is intentionally left for a future target
7
- // rather than built here (see seo-reusable-plan.md §4/§6).
8
- export const serveHeadInjectedIndex = (opts) => {
9
- const stripBase = opts.stripBase ?? true;
10
- return async (c) => {
11
- const html = typeof opts.html === 'function' ? await opts.html() : opts.html;
12
- const model = opts.resolve(c.req.path);
13
- if (!model)
14
- return c.html(html);
15
- const shell = stripBase ? stripBaseTitleAndDescription(html) : html;
16
- const headHtml = renderHead(model, { marker: true, indent: ' ' });
17
- return c.html(injectHead(shell, headHtml));
18
- };
19
- };
20
- //# sourceMappingURL=serveHeadInjectedIndex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serveHeadInjectedIndex.js","sourceRoot":"","sources":["../../../src/server/seo/serveHeadInjectedIndex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAgBhF,mFAAmF;AACnF,oFAAoF;AACpF,kFAAkF;AAClF,oFAAoF;AACpF,iFAAiF;AACjF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAmC,EAAE,EAAE;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IAEzC,OAAO,KAAK,EAAE,CAAU,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC,CAAC"}
package/dist/upload.d.ts DELETED
@@ -1,148 +0,0 @@
1
- /** True for iPhone HEIC/HEIF images — the server converts these to JPEG. */
2
- export declare function isHeicFile(file: File): boolean;
3
- export interface UploadConstraints {
4
- /** Allowed MIME types (exact match or glob prefix, e.g. 'image/*'). If omitted, any type. */
5
- accept?: string[];
6
- /** Maximum file size in bytes. If omitted, no cap. */
7
- maxBytes?: number;
8
- }
9
- export type ValidationError = {
10
- kind: 'type';
11
- file: string;
12
- mime: string;
13
- accept: string[];
14
- } | {
15
- kind: 'size';
16
- file: string;
17
- bytes: number;
18
- maxBytes: number;
19
- };
20
- export type ValidationResult = {
21
- ok: true;
22
- } | {
23
- ok: false;
24
- error: ValidationError;
25
- };
26
- export declare function validateFile(file: File, constraints: UploadConstraints): ValidationResult;
27
- export declare function formatValidationError(error: ValidationError): string;
28
- export type UploadProgress = {
29
- phase: 'validating';
30
- } | {
31
- phase: 'uploading';
32
- loaded: number;
33
- total: number;
34
- } | {
35
- phase: 'chunking';
36
- chunk: number;
37
- total: number;
38
- } | {
39
- phase: 'done';
40
- } | {
41
- phase: 'error';
42
- message: string;
43
- };
44
- /** Subset of the server FileRecord that upload consumers care about. */
45
- export interface UploadedFile {
46
- id: string;
47
- name: string;
48
- mime: string;
49
- size: number;
50
- fileType: string;
51
- tags: string[];
52
- processingStatus: string;
53
- /** True when the server accepted a HEIC/HEIF file for conversion. */
54
- heicConverted?: boolean;
55
- }
56
- export type UploadResult = {
57
- ok: true;
58
- file: UploadedFile;
59
- } | {
60
- ok: false;
61
- error: string;
62
- validationError?: ValidationError;
63
- };
64
- /** Minimal transport interface the pipeline requires — satisfied by FileUploadClient. */
65
- export interface UploadTransport {
66
- uploadAuto(file: File, opts?: {
67
- tags?: string[];
68
- }): Promise<{
69
- ok: true;
70
- file?: {
71
- id: string;
72
- name: string;
73
- mime: string;
74
- size: number;
75
- fileType: string;
76
- tags: string[];
77
- processingStatus: string;
78
- };
79
- } | {
80
- ok: false;
81
- error: string;
82
- }>;
83
- upload(file: File | Blob, opts?: {
84
- name?: string;
85
- tags?: string[];
86
- }): Promise<{
87
- ok: true;
88
- file?: {
89
- id: string;
90
- name: string;
91
- mime: string;
92
- size: number;
93
- fileType: string;
94
- tags: string[];
95
- processingStatus: string;
96
- };
97
- } | {
98
- ok: false;
99
- error: string;
100
- }>;
101
- }
102
- export interface UploadPipelineOptions {
103
- transport: UploadTransport;
104
- constraints?: UploadConstraints;
105
- tags?: string[];
106
- onProgress?: (progress: UploadProgress) => void;
107
- }
108
- export declare function uploadFile(file: File, opts: UploadPipelineOptions): Promise<UploadResult>;
109
- /** Upload multiple files sequentially, stopping on the first error. */
110
- export declare function uploadFiles(files: File[], opts: UploadPipelineOptions): Promise<{
111
- results: UploadResult[];
112
- firstError: string | null;
113
- }>;
114
- export interface DropZoneHandlers {
115
- onDragOver: (e: DragEvent) => void;
116
- onDragLeave: (e: DragEvent) => void;
117
- onDrop: (e: DragEvent) => void;
118
- }
119
- export interface DropZoneOptions {
120
- /** Invoked with accepted files dropped onto the zone. */
121
- onFiles: (files: File[]) => void;
122
- /** Invoked when a drag enters the zone (for visual feedback). */
123
- onEnter?: () => void;
124
- /** Invoked when a drag leaves or is dropped (for visual feedback). */
125
- onLeave?: () => void;
126
- /** Optionally filter dropped items by MIME — mismatched files are silently excluded. */
127
- accept?: string[];
128
- }
129
- /**
130
- * Returns plain event handler objects that wire a DOM element as a drop zone.
131
- * Attach them with addEventListener or pass to a React component's onDrag* props.
132
- *
133
- * @example
134
- * const { onDragOver, onDragLeave, onDrop } = createDropZoneHandlers({ onFiles });
135
- * el.addEventListener('dragover', onDragOver);
136
- * el.addEventListener('dragleave', onDragLeave);
137
- * el.addEventListener('drop', onDrop);
138
- */
139
- export declare function createDropZoneHandlers(opts: DropZoneOptions): DropZoneHandlers;
140
- /**
141
- * Mount a drop zone on `el`, returning an unmount function.
142
- *
143
- * @example
144
- * const unmount = mountDropZone(containerEl, { onFiles, accept: ['image/*'] });
145
- * // later: unmount();
146
- */
147
- export declare function mountDropZone(el: HTMLElement, opts: DropZoneOptions): () => void;
148
- //# sourceMappingURL=upload.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AAcA,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAK9C;AAID,MAAM,WAAW,iBAAiB;IAChC,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAUpF,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAiBzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAKpE;AAID,MAAM,MAAM,cAAc,GACtB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAIxC,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAChC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC;AAIpE,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,UAAU,CACR,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACzB,OAAO,CACN;QACE,EAAE,EAAE,IAAI,CAAC;QACT,IAAI,CAAC,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,EAAE,CAAC;YACf,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;KACH,GACD;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAC/B,CAAC;IACF,MAAM,CACJ,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACxC,OAAO,CACN;QACE,EAAE,EAAE,IAAI,CAAC;QACT,IAAI,CAAC,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,EAAE,CAAC;YACf,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;KACH,GACD;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAC/B,CAAC;CACH;AAID,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+C/F;AAED,uEAAuE;AACvE,wBAAsB,WAAW,CAC/B,KAAK,EAAE,IAAI,EAAE,EACb,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQjE;AAID,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACjC,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,CA0B9E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,IAAI,CAUhF"}