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.
- package/dist/client/index.js +1 -1
- package/dist/core/category/index.d.ts.map +1 -1
- package/dist/core/category/index.js +2 -1
- package/dist/core/category/index.js.map +1 -1
- package/dist/core/category/types.js +1 -1
- package/dist/core/category/types.js.map +1 -1
- package/dist/core/file-tree/fileTreeModel.d.ts +49 -0
- package/dist/core/file-tree/fileTreeModel.d.ts.map +1 -1
- package/dist/core/file-tree/fileTreeModel.js +84 -0
- package/dist/core/file-tree/fileTreeModel.js.map +1 -1
- package/dist/core/layout/index.js +1 -1
- package/dist/core/layout/index.js.map +1 -1
- package/dist/core/media/index.js +1 -1
- package/dist/core/media/index.js.map +1 -1
- package/dist/core/media/types.js +1 -1
- package/dist/core/media/types.js.map +1 -1
- package/dist/core/media/uploadLimits.js +1 -1
- package/dist/core/media/uploadLimits.js.map +1 -1
- package/dist/core/sharing/model.d.ts +1 -1
- package/dist/ctgr/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/activity-bar/ActivityBar.d.ts +17 -0
- package/dist/react/activity-bar/ActivityBar.d.ts.map +1 -1
- package/dist/react/activity-bar/ActivityBar.js.map +1 -1
- package/dist/react/analytics/index.d.ts +1 -1
- package/dist/react/analytics/index.js +1 -1
- package/dist/react/chat/MessageComposer.d.ts.map +1 -1
- package/dist/react/chat/MessageComposer.js +5 -4
- package/dist/react/chat/MessageComposer.js.map +1 -1
- package/dist/react/components/Button.d.ts.map +1 -1
- package/dist/react/components/Button.js +3 -2
- package/dist/react/components/Button.js.map +1 -1
- package/dist/react/components/Checkbox.d.ts +19 -3
- package/dist/react/components/Checkbox.d.ts.map +1 -1
- package/dist/react/components/Checkbox.js +29 -12
- package/dist/react/components/Checkbox.js.map +1 -1
- package/dist/react/components/CodeArea.d.ts.map +1 -1
- package/dist/react/components/CodeArea.js +2 -1
- package/dist/react/components/CodeArea.js.map +1 -1
- package/dist/react/components/Collapsible.d.ts.map +1 -1
- package/dist/react/components/Collapsible.js +2 -1
- package/dist/react/components/Collapsible.js.map +1 -1
- package/dist/react/components/ComboboxField.d.ts.map +1 -1
- package/dist/react/components/ComboboxField.js +3 -2
- package/dist/react/components/ComboboxField.js.map +1 -1
- package/dist/react/components/CopyButton.d.ts.map +1 -1
- package/dist/react/components/CopyButton.js +2 -1
- package/dist/react/components/CopyButton.js.map +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.d.ts.map +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.js +2 -1
- package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
- package/dist/react/components/DataTable/Pagination.d.ts.map +1 -1
- package/dist/react/components/DataTable/Pagination.js +2 -1
- package/dist/react/components/DataTable/Pagination.js.map +1 -1
- package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
- package/dist/react/components/DataTable/SortHeader.js +2 -1
- package/dist/react/components/DataTable/SortHeader.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts +61 -0
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -0
- package/dist/react/components/DataTable/{FilterBuilder.js → TableFilterBuilder.js} +26 -3
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -0
- package/dist/react/components/DataTable/Toolbar.d.ts +1 -1
- package/dist/react/components/DataTable/Toolbar.js +3 -3
- package/dist/react/components/DataTable/Toolbar.js.map +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.d.ts.map +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.js +2 -1
- package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
- package/dist/react/components/DataTable/index.d.ts +1 -1
- package/dist/react/components/DataTable/index.d.ts.map +1 -1
- package/dist/react/components/DataTable/index.js +4 -1
- package/dist/react/components/DataTable/index.js.map +1 -1
- package/dist/react/components/DragHandle.d.ts.map +1 -1
- package/dist/react/components/DragHandle.js +2 -1
- package/dist/react/components/DragHandle.js.map +1 -1
- package/dist/react/components/EmojiField.d.ts.map +1 -1
- package/dist/react/components/EmojiField.js +2 -1
- package/dist/react/components/EmojiField.js.map +1 -1
- package/dist/react/components/EventTimeline.d.ts +3 -2
- package/dist/react/components/EventTimeline.d.ts.map +1 -1
- package/dist/react/components/EventTimeline.js +3 -2
- package/dist/react/components/EventTimeline.js.map +1 -1
- package/dist/react/components/IconButton.d.ts +1 -1
- package/dist/react/components/IconButton.js +1 -1
- package/dist/react/components/InfoHint.d.ts.map +1 -1
- package/dist/react/components/InfoHint.js +5 -4
- package/dist/react/components/InfoHint.js.map +1 -1
- package/dist/react/components/InheritBadge.js +1 -1
- package/dist/react/components/InheritBadge.js.map +1 -1
- package/dist/react/components/InlineEditableText.d.ts.map +1 -1
- package/dist/react/components/InlineEditableText.js +2 -1
- package/dist/react/components/InlineEditableText.js.map +1 -1
- package/dist/react/components/MeterList.d.ts.map +1 -1
- package/dist/react/components/MeterList.js +2 -1
- package/dist/react/components/MeterList.js.map +1 -1
- package/dist/react/components/PathText.d.ts +2 -2
- package/dist/react/components/PathText.d.ts.map +1 -1
- package/dist/react/components/PathText.js +2 -1
- package/dist/react/components/PathText.js.map +1 -1
- package/dist/react/components/RatingField.d.ts.map +1 -1
- package/dist/react/components/RatingField.js +2 -1
- package/dist/react/components/RatingField.js.map +1 -1
- package/dist/react/components/SecretInput.js +3 -2
- package/dist/react/components/SecretInput.js.map +1 -1
- package/dist/react/components/SegmentedControl.d.ts.map +1 -1
- package/dist/react/components/SegmentedControl.js +2 -1
- package/dist/react/components/SegmentedControl.js.map +1 -1
- package/dist/react/components/StarRating.d.ts.map +1 -1
- package/dist/react/components/StarRating.js +9 -5
- package/dist/react/components/StarRating.js.map +1 -1
- package/dist/react/components/StatStrip.d.ts.map +1 -1
- package/dist/react/components/StatStrip.js +2 -1
- package/dist/react/components/StatStrip.js.map +1 -1
- package/dist/react/components/StatTile.d.ts.map +1 -1
- package/dist/react/components/StatTile.js +3 -2
- package/dist/react/components/StatTile.js.map +1 -1
- package/dist/react/components/Tabs.d.ts.map +1 -1
- package/dist/react/components/Tabs.js +2 -1
- package/dist/react/components/Tabs.js.map +1 -1
- package/dist/react/components/TruncatedText.d.ts +2 -1
- package/dist/react/components/TruncatedText.d.ts.map +1 -1
- package/dist/react/components/TruncatedText.js +2 -1
- package/dist/react/components/TruncatedText.js.map +1 -1
- package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
- package/dist/react/components/calendar/MonthGrid.js +2 -1
- package/dist/react/components/calendar/MonthGrid.js.map +1 -1
- package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
- package/dist/react/components/calendar/WeekView.js +2 -1
- package/dist/react/components/calendar/WeekView.js.map +1 -1
- package/dist/react/components/revealOnHover.d.ts.map +1 -1
- package/dist/react/components/revealOnHover.js +2 -1
- package/dist/react/components/revealOnHover.js.map +1 -1
- package/dist/react/file-tree/FileTree.d.ts +50 -1
- package/dist/react/file-tree/FileTree.d.ts.map +1 -1
- package/dist/react/file-tree/FileTree.js +234 -6
- package/dist/react/file-tree/FileTree.js.map +1 -1
- package/dist/react/file-tree/fileTree.css +52 -0
- package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
- package/dist/react/filter-rail/FilterRail.js +5 -4
- package/dist/react/filter-rail/FilterRail.js.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.js +2 -1
- package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
- package/dist/react/index.d.ts +5 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +5 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/layoutEngine/index.js +1 -1
- package/dist/react/layoutEngine/index.js.map +1 -1
- package/dist/react/lib/field.d.ts.map +1 -1
- package/dist/react/lib/field.js +3 -2
- package/dist/react/lib/field.js.map +1 -1
- package/dist/react/lib/floatingStyles.d.ts.map +1 -1
- package/dist/react/lib/floatingStyles.js +2 -1
- package/dist/react/lib/floatingStyles.js.map +1 -1
- package/dist/react/lib/tapTarget.d.ts +96 -0
- package/dist/react/lib/tapTarget.d.ts.map +1 -0
- package/dist/react/lib/tapTarget.js +96 -0
- package/dist/react/lib/tapTarget.js.map +1 -0
- package/dist/react/media/VideoTrimmer.d.ts +1 -1
- package/dist/react/media/VideoTrimmer.js +1 -1
- package/dist/react/media/denseGallery.css +3 -3
- package/dist/react/media/ffmpegWasm.js +2 -2
- package/dist/react/media/ffmpegWasm.js.map +1 -1
- package/dist/react/media/videoPlayer.css +42 -0
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts +2 -2
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.js +4 -3
- package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
- package/dist/react/nav/HubTileGrid.d.ts.map +1 -1
- package/dist/react/nav/HubTileGrid.js +2 -1
- package/dist/react/nav/HubTileGrid.js.map +1 -1
- package/dist/react/nav/SideNav.d.ts.map +1 -1
- package/dist/react/nav/SideNav.js +4 -3
- package/dist/react/nav/SideNav.js.map +1 -1
- package/dist/react/nav/SideNavCustomize.d.ts.map +1 -1
- package/dist/react/nav/SideNavCustomize.js +2 -1
- package/dist/react/nav/SideNavCustomize.js.map +1 -1
- package/dist/react/palette/CommandPalette.d.ts.map +1 -1
- package/dist/react/palette/CommandPalette.js +3 -2
- package/dist/react/palette/CommandPalette.js.map +1 -1
- package/dist/server/drivers/pooledControlStores.pg.test.js +1 -0
- package/dist/server/drivers/pooledControlStores.pg.test.js.map +1 -1
- package/dist/server/drivers/pooledIdentityStore.pg.test.js +1 -0
- package/dist/server/drivers/pooledIdentityStore.pg.test.js.map +1 -1
- package/dist/server/drivers/retentionPolicy.pg.test.js +1 -0
- package/dist/server/drivers/retentionPolicy.pg.test.js.map +1 -1
- package/dist/server/guard/argon2Binding.d.ts +1 -1
- package/dist/server/guard/argon2Binding.js +1 -1
- package/dist/server/incidents/store.d.ts +3 -3
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/master-lock/masterLock.d.ts +1 -1
- package/dist/server/media-bun/index.js +1 -1
- package/dist/server/media-bun/index.js.map +1 -1
- package/dist/server/paths/appDataHome.d.ts +20 -0
- package/dist/server/paths/appDataHome.d.ts.map +1 -0
- package/dist/server/paths/appDataHome.js +69 -0
- package/dist/server/paths/appDataHome.js.map +1 -0
- package/dist/server/retention/archive.d.ts +3 -4
- package/dist/server/retention/archive.d.ts.map +1 -1
- package/dist/server/retention/archive.js +20 -15
- package/dist/server/retention/archive.js.map +1 -1
- package/dist/server/retention/index.d.ts +1 -1
- package/dist/server/retention/index.js +1 -1
- package/dist/server/retention/policy.d.ts +2 -2
- package/dist/server/retention/policy.d.ts.map +1 -1
- package/dist/server/retention/policy.js +1 -1
- package/dist/server/retention/store.d.ts.map +1 -1
- package/dist/server/retention/store.js +27 -20
- package/dist/server/retention/store.js.map +1 -1
- package/dist/server/runtime/localHost.d.ts +10 -5
- package/dist/server/runtime/localHost.d.ts.map +1 -1
- package/dist/server/runtime/localHost.js +12 -8
- package/dist/server/runtime/localHost.js.map +1 -1
- package/dist/server/runtime/meterRollup.pg.test.js +1 -0
- package/dist/server/runtime/meterRollup.pg.test.js.map +1 -1
- package/dist/server/runtime/recipe.d.ts +4 -4
- package/dist/server/runtime/retentionJob.pg.test.js +1 -0
- package/dist/server/runtime/retentionJob.pg.test.js.map +1 -1
- package/dist/server/search/pgSearchProvider.pg.test.js +1 -0
- package/dist/server/search/pgSearchProvider.pg.test.js.map +1 -1
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/styles-static.css +391 -0
- package/dist/styles.css +27 -0
- package/package.json +19 -167
- package/scripts/generateStaticStyles.ts +122 -0
- package/scripts/publicSurface.ts +455 -0
- package/scripts/testTmpRoot.ts +34 -5
- package/src/client/index.ts +1 -1
- package/src/core/category/index.ts +2 -1
- package/src/core/category/types.ts +1 -1
- package/src/core/file-tree/fileTreeModel.spec.ts +134 -0
- package/src/core/file-tree/fileTreeModel.ts +104 -0
- package/src/core/layout/index.ts +1 -1
- package/src/core/media/index.ts +1 -1
- package/src/core/media/types.ts +1 -1
- package/src/core/media/uploadLimits.ts +1 -1
- package/src/core/sharing/model.ts +1 -1
- package/src/ctgr/index.ts +1 -1
- package/src/declaredDepsAreImported.spec.ts +87 -0
- package/src/demoFixture.spec.ts +133 -0
- package/src/index.ts +1 -1
- package/src/lockfileIsTracked.spec.ts +50 -0
- package/src/namedSubpathsResolve.spec.ts +119 -0
- package/src/publicSurface.spec.ts +72 -0
- package/src/react/activity-bar/ActivityBar.tsx +17 -0
- package/src/react/analytics/index.ts +1 -1
- package/src/react/chat/MessageComposer.tsx +5 -4
- package/src/react/components/Button.tsx +3 -2
- package/src/react/components/Checkbox.spec.tsx +51 -0
- package/src/react/components/Checkbox.tsx +68 -26
- package/src/react/components/CodeArea.tsx +2 -1
- package/src/react/components/CodeChip.spec.tsx +2 -2
- package/src/react/components/Collapsible.tsx +2 -1
- package/src/react/components/ComboboxField.tsx +3 -2
- package/src/react/components/CopyButton.tsx +2 -1
- package/src/react/components/CopyableText.spec.tsx +1 -1
- package/src/react/components/DataTable/ColumnChecklist.tsx +2 -1
- package/src/react/components/DataTable/Pagination.tsx +2 -1
- package/src/react/components/DataTable/SortHeader.tsx +2 -1
- package/src/react/components/DataTable/{FilterBuilder.tsx → TableFilterBuilder.tsx} +33 -5
- package/src/react/components/DataTable/Toolbar.tsx +3 -3
- package/src/react/components/DataTable/cells/LinkCell.tsx +2 -1
- package/src/react/components/DataTable/index.ts +8 -1
- package/src/react/components/DragHandle.tsx +2 -1
- package/src/react/components/EmojiField.tsx +2 -1
- package/src/react/components/EventTimeline.tsx +3 -2
- package/src/react/components/FileLocation.spec.tsx +1 -1
- package/src/react/components/IconButton.tsx +1 -1
- package/src/react/components/InfoHint.tsx +5 -4
- package/src/react/components/InheritBadge.tsx +1 -1
- package/src/react/components/InlineEditableText.tsx +2 -1
- package/src/react/components/MeterList.tsx +2 -1
- package/src/react/components/PathText.tsx +4 -3
- package/src/react/components/RatingField.tsx +2 -1
- package/src/react/components/SecretInput.tsx +3 -3
- package/src/react/components/SegmentedControl.tsx +2 -2
- package/src/react/components/StarRating.spec.tsx +2 -2
- package/src/react/components/StarRating.tsx +9 -5
- package/src/react/components/StatStrip.tsx +2 -1
- package/src/react/components/StatTile.tsx +3 -3
- package/src/react/components/Tabs.spec.tsx +3 -2
- package/src/react/components/Tabs.tsx +2 -1
- package/src/react/components/TruncatedText.tsx +2 -1
- package/src/react/components/calendar/MonthGrid.spec.tsx +2 -1
- package/src/react/components/calendar/MonthGrid.tsx +2 -1
- package/src/react/components/calendar/WeekView.tsx +2 -1
- package/src/react/components/revealOnHover.ts +3 -2
- package/src/react/file-tree/FileTree.spec.tsx +248 -0
- package/src/react/file-tree/FileTree.tsx +304 -4
- package/src/react/file-tree/fileTree.css +52 -0
- package/src/react/file-tree/fileTreeGeometry.fixture.json +151 -0
- package/src/react/file-tree/fileTreeGeometry.spec.ts +33 -52
- package/src/react/filter-rail/FilterRail.spec.tsx +2 -1
- package/src/react/filter-rail/FilterRail.tsx +5 -4
- package/src/react/folder-tree/FolderTreeRail.tsx +2 -1
- package/src/react/index.ts +13 -3
- package/src/react/layoutEngine/index.ts +1 -1
- package/src/react/layoutEngine/types.ts +1 -1
- package/src/react/lib/field.ts +4 -2
- package/src/react/lib/floatingStyles.spec.ts +2 -1
- package/src/react/lib/floatingStyles.ts +3 -1
- package/src/react/lib/tapTarget.ts +100 -0
- package/src/react/media/MaskPainter.tsx +2 -2
- package/src/react/media/VideoTrimmer.tsx +1 -1
- package/src/react/media/denseGallery.css +3 -3
- package/src/react/media/ffmpegWasm.ts +2 -2
- package/src/react/media/videoPlayer.css +42 -0
- package/src/react/namespace/NamespaceTargetCapsule.tsx +2 -2
- package/src/react/nav/BreadcrumbTrail.tsx +4 -3
- package/src/react/nav/HubTileGrid.tsx +2 -1
- package/src/react/nav/SideNav.tsx +4 -3
- package/src/react/nav/SideNavCustomize.tsx +2 -1
- package/src/react/palette/CommandPalette.tsx +3 -2
- package/src/server/ctgr.ts +1 -1
- package/src/server/drivers/pooledControlStores.pg.test.ts +1 -0
- package/src/server/drivers/pooledIdentityStore.pg.test.ts +1 -0
- package/src/server/drivers/retentionPolicy.pg.test.ts +1 -0
- package/src/server/guard/argon2Binding.ts +1 -1
- package/src/server/incidents/store.ts +3 -3
- package/src/server/index.ts +1 -1
- package/src/server/master-lock/masterLock.spec.ts +18 -2
- package/src/server/master-lock/masterLock.ts +1 -1
- package/src/server/media-bun/image.spec.ts +1 -0
- package/src/server/media-bun/index.ts +1 -1
- package/src/server/media-bun/video.spec.ts +1 -0
- package/src/server/paths/appDataHome.spec.ts +87 -0
- package/src/server/paths/appDataHome.ts +84 -0
- package/src/server/retention/archive.spec.ts +26 -4
- package/src/server/retention/archive.ts +20 -15
- package/src/server/retention/index.ts +1 -1
- package/src/server/retention/policy.ts +2 -2
- package/src/server/retention/store.spec.ts +38 -10
- package/src/server/retention/store.ts +26 -19
- package/src/server/runtime/localHost.spec.ts +22 -3
- package/src/server/runtime/localHost.ts +12 -9
- package/src/server/runtime/meterRollup.pg.test.ts +1 -0
- package/src/server/runtime/recipe.ts +4 -4
- package/src/server/runtime/retentionJob.pg.test.ts +1 -0
- package/src/server/search/pgSearchProvider.pg.test.ts +1 -0
- package/src/server/storage/binaryServerProcessing.integration.spec.ts +6 -2
- package/src/server/storage/chunked.integration.spec.ts +5 -2
- package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +5 -2
- package/src/server/storage/files/adapter.photo.display.spec.ts +1 -0
- package/src/server/storage/imageThumbnail.spec.ts +1 -0
- package/src/server/storage/transcode.integration.spec.ts +5 -2
- package/src/server/storage/videoProcessor.posterOnly.spec.ts +1 -0
- package/src/shared/errors.ts +1 -1
- package/src/skippedTestsAreAnswered.spec.ts +215 -0
- package/src/styles-static.css +391 -0
- package/src/styles.css +27 -0
- package/src/stylesStaticMatches.spec.ts +134 -0
- package/src/tapTargetStylesheet.spec.ts +150 -0
- package/src/testTmpRoot.spec.ts +102 -0
- package/dist/core/duplicates/index.d.ts +0 -116
- package/dist/core/duplicates/index.d.ts.map +0 -1
- package/dist/core/duplicates/index.js +0 -178
- package/dist/core/duplicates/index.js.map +0 -1
- package/dist/core/namespace/helpers.d.ts +0 -14
- package/dist/core/namespace/helpers.d.ts.map +0 -1
- package/dist/core/namespace/helpers.js +0 -29
- package/dist/core/namespace/helpers.js.map +0 -1
- package/dist/core/namespace/index.d.ts +0 -4
- package/dist/core/namespace/index.d.ts.map +0 -1
- package/dist/core/namespace/index.js +0 -6
- package/dist/core/namespace/index.js.map +0 -1
- package/dist/core/namespace/memoryStore.d.ts +0 -19
- package/dist/core/namespace/memoryStore.d.ts.map +0 -1
- package/dist/core/namespace/memoryStore.js +0 -70
- package/dist/core/namespace/memoryStore.js.map +0 -1
- package/dist/core/namespace/types.d.ts +0 -44
- package/dist/core/namespace/types.d.ts.map +0 -1
- package/dist/core/namespace/types.js +0 -8
- package/dist/core/namespace/types.js.map +0 -1
- package/dist/game/core/DisposeRegistry.d.ts +0 -42
- package/dist/game/core/DisposeRegistry.d.ts.map +0 -1
- package/dist/game/core/DisposeRegistry.js +0 -67
- package/dist/game/core/DisposeRegistry.js.map +0 -1
- package/dist/game/core/drawBudget.d.ts +0 -26
- package/dist/game/core/drawBudget.d.ts.map +0 -1
- package/dist/game/core/drawBudget.js +0 -55
- package/dist/game/core/drawBudget.js.map +0 -1
- package/dist/game/core/fixedTimestep.d.ts +0 -38
- package/dist/game/core/fixedTimestep.d.ts.map +0 -1
- package/dist/game/core/fixedTimestep.js +0 -47
- package/dist/game/core/fixedTimestep.js.map +0 -1
- package/dist/game/core/index.d.ts +0 -9
- package/dist/game/core/index.d.ts.map +0 -1
- package/dist/game/core/index.js +0 -8
- package/dist/game/core/index.js.map +0 -1
- package/dist/game/core/inputCollector.d.ts +0 -82
- package/dist/game/core/inputCollector.d.ts.map +0 -1
- package/dist/game/core/inputCollector.js +0 -176
- package/dist/game/core/inputCollector.js.map +0 -1
- package/dist/game/core/resizeCanvas.d.ts +0 -19
- package/dist/game/core/resizeCanvas.d.ts.map +0 -1
- package/dist/game/core/resizeCanvas.js +0 -29
- package/dist/game/core/resizeCanvas.js.map +0 -1
- package/dist/game/react/index.d.ts +0 -3
- package/dist/game/react/index.d.ts.map +0 -1
- package/dist/game/react/index.js +0 -5
- package/dist/game/react/index.js.map +0 -1
- package/dist/game/react/useGameEngine.d.ts +0 -64
- package/dist/game/react/useGameEngine.d.ts.map +0 -1
- package/dist/game/react/useGameEngine.js +0 -78
- package/dist/game/react/useGameEngine.js.map +0 -1
- package/dist/react/canvas/CanvasNavHUD.d.ts +0 -64
- package/dist/react/canvas/CanvasNavHUD.d.ts.map +0 -1
- package/dist/react/canvas/CanvasNavHUD.js +0 -58
- package/dist/react/canvas/CanvasNavHUD.js.map +0 -1
- package/dist/react/canvas/fitLabel.d.ts +0 -53
- package/dist/react/canvas/fitLabel.d.ts.map +0 -1
- package/dist/react/canvas/fitLabel.js +0 -104
- package/dist/react/canvas/fitLabel.js.map +0 -1
- package/dist/react/canvas/index.d.ts +0 -4
- package/dist/react/canvas/index.d.ts.map +0 -1
- package/dist/react/canvas/index.js +0 -4
- package/dist/react/canvas/index.js.map +0 -1
- package/dist/react/canvas/lod.d.ts +0 -40
- package/dist/react/canvas/lod.d.ts.map +0 -1
- package/dist/react/canvas/lod.js +0 -37
- package/dist/react/canvas/lod.js.map +0 -1
- package/dist/react/components/DataTable/FilterBuilder.d.ts +0 -38
- package/dist/react/components/DataTable/FilterBuilder.d.ts.map +0 -1
- package/dist/react/components/DataTable/FilterBuilder.js.map +0 -1
- package/dist/react/seo/HeadProvider.d.ts +0 -14
- package/dist/react/seo/HeadProvider.d.ts.map +0 -1
- package/dist/react/seo/HeadProvider.js +0 -44
- package/dist/react/seo/HeadProvider.js.map +0 -1
- package/dist/react/seo/applyHeadToDocument.d.ts +0 -3
- package/dist/react/seo/applyHeadToDocument.d.ts.map +0 -1
- package/dist/react/seo/applyHeadToDocument.js +0 -66
- package/dist/react/seo/applyHeadToDocument.js.map +0 -1
- package/dist/react/seo/index.d.ts +0 -3
- package/dist/react/seo/index.d.ts.map +0 -1
- package/dist/react/seo/index.js +0 -7
- package/dist/react/seo/index.js.map +0 -1
- package/dist/react/timeline/ClipView.d.ts +0 -29
- package/dist/react/timeline/ClipView.d.ts.map +0 -1
- package/dist/react/timeline/ClipView.js +0 -53
- package/dist/react/timeline/ClipView.js.map +0 -1
- package/dist/react/timeline/Playhead.d.ts +0 -16
- package/dist/react/timeline/Playhead.d.ts.map +0 -1
- package/dist/react/timeline/Playhead.js +0 -26
- package/dist/react/timeline/Playhead.js.map +0 -1
- package/dist/react/timeline/TimeRuler.d.ts +0 -21
- package/dist/react/timeline/TimeRuler.d.ts.map +0 -1
- package/dist/react/timeline/TimeRuler.js +0 -31
- package/dist/react/timeline/TimeRuler.js.map +0 -1
- package/dist/react/timeline/TimelineSurface.d.ts +0 -29
- package/dist/react/timeline/TimelineSurface.d.ts.map +0 -1
- package/dist/react/timeline/TimelineSurface.js +0 -56
- package/dist/react/timeline/TimelineSurface.js.map +0 -1
- package/dist/react/timeline/TrackLane.d.ts +0 -31
- package/dist/react/timeline/TrackLane.d.ts.map +0 -1
- package/dist/react/timeline/TrackLane.js +0 -32
- package/dist/react/timeline/TrackLane.js.map +0 -1
- package/dist/react/timeline/index.d.ts +0 -6
- package/dist/react/timeline/index.d.ts.map +0 -1
- package/dist/react/timeline/index.js +0 -12
- package/dist/react/timeline/index.js.map +0 -1
- package/dist/server/private-media/index.d.ts +0 -7
- package/dist/server/private-media/index.d.ts.map +0 -1
- package/dist/server/private-media/index.js +0 -13
- package/dist/server/private-media/index.js.map +0 -1
- package/dist/server/seo/index.d.ts +0 -3
- package/dist/server/seo/index.d.ts.map +0 -1
- package/dist/server/seo/index.js +0 -6
- package/dist/server/seo/index.js.map +0 -1
- package/dist/server/seo/mountSeoRoutes.d.ts +0 -9
- package/dist/server/seo/mountSeoRoutes.d.ts.map +0 -1
- package/dist/server/seo/mountSeoRoutes.js +0 -19
- package/dist/server/seo/mountSeoRoutes.js.map +0 -1
- package/dist/server/seo/serveHeadInjectedIndex.d.ts +0 -9
- package/dist/server/seo/serveHeadInjectedIndex.d.ts.map +0 -1
- package/dist/server/seo/serveHeadInjectedIndex.js +0 -20
- package/dist/server/seo/serveHeadInjectedIndex.js.map +0 -1
- package/dist/upload.d.ts +0 -148
- package/dist/upload.d.ts.map +0 -1
- package/dist/upload.js +0 -159
- package/dist/upload.js.map +0 -1
- package/dist/verify/runtime/index.d.ts +0 -16
- package/dist/verify/runtime/index.d.ts.map +0 -1
- package/dist/verify/runtime/index.js +0 -16
- package/dist/verify/runtime/index.js.map +0 -1
- package/scripts/demoCheck.ts +0 -42
- package/src/core/duplicates/index.spec.ts +0 -116
- package/src/core/duplicates/index.ts +0 -203
- package/src/core/namespace/helpers.ts +0 -31
- package/src/core/namespace/index.ts +0 -12
- package/src/core/namespace/memoryStore.ts +0 -77
- package/src/core/namespace/namespace.spec.ts +0 -117
- package/src/core/namespace/types.ts +0 -53
- package/src/game/core/DisposeRegistry.spec.ts +0 -53
- package/src/game/core/DisposeRegistry.ts +0 -70
- package/src/game/core/drawBudget.spec.ts +0 -51
- package/src/game/core/drawBudget.ts +0 -75
- package/src/game/core/fixedTimestep.spec.ts +0 -91
- package/src/game/core/fixedTimestep.ts +0 -79
- package/src/game/core/index.ts +0 -16
- package/src/game/core/inputCollector.spec.ts +0 -29
- package/src/game/core/inputCollector.ts +0 -245
- package/src/game/core/resizeCanvas.ts +0 -31
- package/src/game/react/index.ts +0 -10
- package/src/game/react/useGameEngine.ts +0 -125
- package/src/react/canvas/CanvasNavHUD.spec.tsx +0 -62
- package/src/react/canvas/CanvasNavHUD.tsx +0 -210
- package/src/react/canvas/fitLabel.spec.ts +0 -82
- package/src/react/canvas/fitLabel.ts +0 -150
- package/src/react/canvas/index.ts +0 -15
- package/src/react/canvas/lod.ts +0 -53
- package/src/react/seo/HeadProvider.tsx +0 -67
- package/src/react/seo/applyHeadToDocument.ts +0 -73
- package/src/react/seo/index.ts +0 -12
- package/src/react/seo/seo.spec.tsx +0 -101
- package/src/react/timeline/ClipView.tsx +0 -146
- package/src/react/timeline/Playhead.tsx +0 -63
- package/src/react/timeline/TimeRuler.tsx +0 -85
- package/src/react/timeline/TimelineSurface.tsx +0 -157
- package/src/react/timeline/TrackLane.tsx +0 -87
- package/src/react/timeline/index.ts +0 -12
- package/src/react/timeline/timeline.spec.tsx +0 -175
- package/src/server/private-media/index.ts +0 -45
- package/src/server/seo/index.ts +0 -8
- package/src/server/seo/mountSeoRoutes.ts +0 -37
- package/src/server/seo/seo.spec.ts +0 -128
- package/src/server/seo/serveHeadInjectedIndex.ts +0 -36
- package/src/upload.spec.ts +0 -300
- package/src/upload.ts +0 -288
- package/src/verify/runtime/index.ts +0 -64
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fitting a human name into a node box without a harsh cut.
|
|
3
|
-
*
|
|
4
|
-
* `DESIGN.md` §5: *"Node diagrams, map elements, or tree visualizations displaying
|
|
5
|
-
* user identities must never truncate names with harsh, broken text string cuts.
|
|
6
|
-
* Use responsive font scaling, wrap long strings onto a clean second line, or
|
|
7
|
-
* optimize middle-initial stripping to keep names human-readable."*
|
|
8
|
-
*
|
|
9
|
-
* That is three strategies in a stated order, and every canvas in the fleet was
|
|
10
|
-
* improvising one of them (family's `TreeCanvas` does its own; the atlas does
|
|
11
|
-
* none). This is the shared ladder, as a pure function with no DOM, so a `<text>`
|
|
12
|
-
* in SVG, a 2D canvas and an absolutely-positioned `<div>` all fit labels the same
|
|
13
|
-
* way and it can be tested without a browser.
|
|
14
|
-
*
|
|
15
|
-
* @see lodForZoom — below ~50% zoom the answer is not a smaller label, it is a glyph.
|
|
16
|
-
*/
|
|
17
|
-
const defaultMeasure = (text, fontSize) => text.length * fontSize * 0.52;
|
|
18
|
-
/** `Mary Anne Beth Sullivan` → `Mary Sullivan`; drops middles, keeps first + last. */
|
|
19
|
-
function stripMiddles(parts) {
|
|
20
|
-
if (parts.length <= 2)
|
|
21
|
-
return parts;
|
|
22
|
-
return [parts[0], parts[parts.length - 1]];
|
|
23
|
-
}
|
|
24
|
-
/** `Mary Sullivan` → `Mary S.` — the last rung before giving up on text entirely. */
|
|
25
|
-
function toInitialForm(parts) {
|
|
26
|
-
if (parts.length === 0)
|
|
27
|
-
return '';
|
|
28
|
-
if (parts.length === 1)
|
|
29
|
-
return parts[0];
|
|
30
|
-
const first = parts[0];
|
|
31
|
-
const last = parts[parts.length - 1];
|
|
32
|
-
return `${first} ${last.charAt(0).toUpperCase()}.`;
|
|
33
|
-
}
|
|
34
|
-
/** Greedy word wrap into at most `maxLines`; returns null if it does not fit. */
|
|
35
|
-
function wrap(words, width, fontSize, maxLines, measure) {
|
|
36
|
-
const lines = [];
|
|
37
|
-
let current = '';
|
|
38
|
-
for (const word of words) {
|
|
39
|
-
const candidate = current ? `${current} ${word}` : word;
|
|
40
|
-
if (measure(candidate, fontSize) <= width || !current) {
|
|
41
|
-
current = candidate;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
lines.push(current);
|
|
45
|
-
current = word;
|
|
46
|
-
if (lines.length >= maxLines)
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (current)
|
|
51
|
-
lines.push(current);
|
|
52
|
-
if (lines.length === 0 || lines.length > maxLines)
|
|
53
|
-
return null;
|
|
54
|
-
return lines.every((l) => measure(l, fontSize) <= width) ? lines : null;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Fit `text` into `width`, in `DESIGN.md` §5's stated order: as-is → drop middle
|
|
58
|
-
* names → wrap onto a second line → scale the type down → first name + last
|
|
59
|
-
* initial → give up and tell the caller to draw a glyph.
|
|
60
|
-
*/
|
|
61
|
-
export function fitLabel(text, options) {
|
|
62
|
-
const { width, fontSize, maxLines = 2, minFontSize = 10, measure = defaultMeasure, } = options;
|
|
63
|
-
const clean = String(text ?? '').trim().replace(/\s+/g, ' ');
|
|
64
|
-
if (!clean)
|
|
65
|
-
return { lines: [''], fontSize, strategy: 'as-is', overflow: false };
|
|
66
|
-
if (width <= 0)
|
|
67
|
-
return { lines: [clean], fontSize, strategy: 'overflow', overflow: true };
|
|
68
|
-
if (measure(clean, fontSize) <= width) {
|
|
69
|
-
return { lines: [clean], fontSize, strategy: 'as-is', overflow: false };
|
|
70
|
-
}
|
|
71
|
-
const parts = clean.split(' ');
|
|
72
|
-
const stripped = stripMiddles(parts).join(' ');
|
|
73
|
-
if (stripped !== clean && measure(stripped, fontSize) <= width) {
|
|
74
|
-
return { lines: [stripped], fontSize, strategy: 'stripped', overflow: false };
|
|
75
|
-
}
|
|
76
|
-
if (maxLines > 1) {
|
|
77
|
-
const wrapped = wrap(stripped.split(' '), width, fontSize, maxLines, measure);
|
|
78
|
-
if (wrapped) {
|
|
79
|
-
return {
|
|
80
|
-
lines: wrapped,
|
|
81
|
-
fontSize,
|
|
82
|
-
strategy: stripped === clean ? 'wrapped' : 'stripped',
|
|
83
|
-
overflow: false,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Scale down in whole pixels — a fractional ladder produces sizes that differ
|
|
88
|
-
// between two adjacent nodes by less than the eye can see, for no extra fit.
|
|
89
|
-
for (let size = fontSize - 1; size >= minFontSize; size--) {
|
|
90
|
-
const wrapped = maxLines > 1
|
|
91
|
-
? wrap(stripped.split(' '), width, size, maxLines, measure)
|
|
92
|
-
: measure(stripped, size) <= width
|
|
93
|
-
? [stripped]
|
|
94
|
-
: null;
|
|
95
|
-
if (wrapped)
|
|
96
|
-
return { lines: wrapped, fontSize: size, strategy: 'scaled', overflow: false };
|
|
97
|
-
}
|
|
98
|
-
const initials = toInitialForm(parts);
|
|
99
|
-
if (measure(initials, minFontSize) <= width) {
|
|
100
|
-
return { lines: [initials], fontSize: minFontSize, strategy: 'initials', overflow: false };
|
|
101
|
-
}
|
|
102
|
-
return { lines: [initials], fontSize: minFontSize, strategy: 'overflow', overflow: true };
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=fitLabel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fitLabel.js","sourceRoot":"","sources":["../../../src/react/canvas/fitLabel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { CanvasNavHUD, type CanvasMinimapPoint, type CanvasNavHUDProps, type CanvasRect, } from './CanvasNavHUD';
|
|
2
|
-
export { fitLabel, type FitLabelOptions, type FittedLabel, type FitStrategy } from './fitLabel';
|
|
3
|
-
export { type CanvasLod, lodForNode, lodForZoom, lodShowsDetail, lodShowsText, type LodThresholds, } from './lod';
|
|
4
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EACL,KAAK,SAAS,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,OAAO,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/canvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAIb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAA4D,MAAM,YAAY,CAAC;AAChG,OAAO,EAEL,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,GAEb,MAAM,OAAO,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adaptive level of detail for an infinite canvas.
|
|
3
|
-
*
|
|
4
|
-
* `DESIGN.md` §7: *"Large-scale interactive graphs … must not render full textual
|
|
5
|
-
* strings when zoomed out past 50%. Dynamically scale down information density:
|
|
6
|
-
* collapse names or details entirely, displaying only clean geometric glyph nodes
|
|
7
|
-
* or color-coded markers until zoomed in or hovered over."*
|
|
8
|
-
*
|
|
9
|
-
* `UX_STANDARDS.md` §3.1–§3.2 states the same thing as a principle — *"zooming out
|
|
10
|
-
* changes the DESIGN, not the scale"* — and nothing in the fleet implemented it, so
|
|
11
|
-
* every canvas shrinks its text into illegible grey fur instead. This is the shared
|
|
12
|
-
* decision, kept as a pure function because the interesting part is the THRESHOLDS
|
|
13
|
-
* and those must be identical in the tree, the atlas and the orch lanes.
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* `full` — name plus its secondary line, portraits, badges.
|
|
17
|
-
* `compact` — the name only, at the node's own size.
|
|
18
|
-
* `glyph` — no text at all: a geometric marker, coloured by category. Labels
|
|
19
|
-
* come back on hover/focus, which is what keeps this navigable.
|
|
20
|
-
*/
|
|
21
|
-
export type CanvasLod = 'full' | 'compact' | 'glyph';
|
|
22
|
-
export interface LodThresholds {
|
|
23
|
-
/** At or above this zoom, everything is drawn. Default 0.75. */
|
|
24
|
-
full?: number;
|
|
25
|
-
/** At or above this zoom, the name survives. Default 0.5 — DESIGN.md §7's line. */
|
|
26
|
-
compact?: number;
|
|
27
|
-
}
|
|
28
|
-
/** The level of detail a canvas should draw at `zoom` (1 = 100%). */
|
|
29
|
-
export declare function lodForZoom(zoom: number, thresholds?: LodThresholds): CanvasLod;
|
|
30
|
-
/** Whether a node at this level of detail should render any text at all. */
|
|
31
|
-
export declare const lodShowsText: (lod: CanvasLod) => boolean;
|
|
32
|
-
/** Whether a node at this level of detail should render its secondary line. */
|
|
33
|
-
export declare const lodShowsDetail: (lod: CanvasLod) => boolean;
|
|
34
|
-
/**
|
|
35
|
-
* A hovered or focused node always renders its label, whatever the zoom — that is
|
|
36
|
-
* the "until zoomed in OR HOVERED over" half of the clause, and it is the thing
|
|
37
|
-
* that keeps a glyph field usable rather than merely pretty.
|
|
38
|
-
*/
|
|
39
|
-
export declare const lodForNode: (zoom: number, active: boolean, thresholds?: LodThresholds) => CanvasLod;
|
|
40
|
-
//# sourceMappingURL=lod.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lod.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/lod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,aAAkB,GAAG,SAAS,CAOlF;AAED,4EAA4E;AAC5E,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,KAAG,OAA0B,CAAC;AAEzE,+EAA+E;AAC/E,eAAO,MAAM,cAAc,GAAI,KAAK,SAAS,KAAG,OAAyB,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,QAAQ,OAAO,EAAE,aAAa,aAAa,KAAG,SACvC,CAAC"}
|
package/dist/react/canvas/lod.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adaptive level of detail for an infinite canvas.
|
|
3
|
-
*
|
|
4
|
-
* `DESIGN.md` §7: *"Large-scale interactive graphs … must not render full textual
|
|
5
|
-
* strings when zoomed out past 50%. Dynamically scale down information density:
|
|
6
|
-
* collapse names or details entirely, displaying only clean geometric glyph nodes
|
|
7
|
-
* or color-coded markers until zoomed in or hovered over."*
|
|
8
|
-
*
|
|
9
|
-
* `UX_STANDARDS.md` §3.1–§3.2 states the same thing as a principle — *"zooming out
|
|
10
|
-
* changes the DESIGN, not the scale"* — and nothing in the fleet implemented it, so
|
|
11
|
-
* every canvas shrinks its text into illegible grey fur instead. This is the shared
|
|
12
|
-
* decision, kept as a pure function because the interesting part is the THRESHOLDS
|
|
13
|
-
* and those must be identical in the tree, the atlas and the orch lanes.
|
|
14
|
-
*/
|
|
15
|
-
/** The level of detail a canvas should draw at `zoom` (1 = 100%). */
|
|
16
|
-
export function lodForZoom(zoom, thresholds = {}) {
|
|
17
|
-
const full = thresholds.full ?? 0.75;
|
|
18
|
-
const compact = thresholds.compact ?? 0.5;
|
|
19
|
-
if (!Number.isFinite(zoom))
|
|
20
|
-
return 'full';
|
|
21
|
-
if (zoom >= full)
|
|
22
|
-
return 'full';
|
|
23
|
-
if (zoom >= compact)
|
|
24
|
-
return 'compact';
|
|
25
|
-
return 'glyph';
|
|
26
|
-
}
|
|
27
|
-
/** Whether a node at this level of detail should render any text at all. */
|
|
28
|
-
export const lodShowsText = (lod) => lod !== 'glyph';
|
|
29
|
-
/** Whether a node at this level of detail should render its secondary line. */
|
|
30
|
-
export const lodShowsDetail = (lod) => lod === 'full';
|
|
31
|
-
/**
|
|
32
|
-
* A hovered or focused node always renders its label, whatever the zoom — that is
|
|
33
|
-
* the "until zoomed in OR HOVERED over" half of the clause, and it is the thing
|
|
34
|
-
* that keeps a glyph field usable rather than merely pretty.
|
|
35
|
-
*/
|
|
36
|
-
export const lodForNode = (zoom, active, thresholds) => active ? 'full' : lodForZoom(zoom, thresholds);
|
|
37
|
-
//# sourceMappingURL=lod.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lod.js","sourceRoot":"","sources":["../../../src/react/canvas/lod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,aAA4B,EAAE;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,GAAG,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,IAAI,IAAI,OAAO;QAAE,OAAO,SAAS,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAc,EAAW,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC;AAEzE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAc,EAAW,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,UAA0B,EAAa,EAAE,CACjG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { type FilterQuery } from './filterQuery';
|
|
2
|
-
export interface FilterBuilderColumn {
|
|
3
|
-
key: string;
|
|
4
|
-
label: string;
|
|
5
|
-
}
|
|
6
|
-
export interface FilterBuilderProps {
|
|
7
|
-
columns: FilterBuilderColumn[];
|
|
8
|
-
value: FilterQuery;
|
|
9
|
-
onChange: (next: FilterQuery) => void;
|
|
10
|
-
className?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* The filter builder — `(A and B) or (C and D)`, and the UX is the hard half.
|
|
14
|
-
*
|
|
15
|
-
* The owner's closing clause is the acceptance test, not a nicety: *"easy enough
|
|
16
|
-
* that I don't give up on trying it."* So every decision here is made against
|
|
17
|
-
* "can somebody who did not write this finish a two-group filter":
|
|
18
|
-
*
|
|
19
|
-
* - **No Apply button and no draft state.** Every keystroke narrows the table
|
|
20
|
-
* behind the popover, so you can see whether you are getting closer. A builder
|
|
21
|
-
* whose result only appears after a commit makes you guess, and guessing wrong
|
|
22
|
-
* twice is where people give up. `isActiveCondition` is what makes this
|
|
23
|
-
* survivable — a half-typed condition is not yet a constraint, so the table
|
|
24
|
-
* does not empty out the instant you add a row.
|
|
25
|
-
* - **The grammar is VISIBLE, not implied.** Groups are boxes, the word `OR`
|
|
26
|
-
* sits between them on its own rule, and `and` is printed before every
|
|
27
|
-
* condition after the first. Nobody has to know a precedence rule.
|
|
28
|
-
* - **Exactly two levels.** There is no "add nested group", because the moment
|
|
29
|
-
* nesting exists the reader has to hold a tree in their head. Two levels
|
|
30
|
-
* express his own worked example and everything shaped like it.
|
|
31
|
-
* - **Every row is removable, and so is the whole thing.** `Clear all` is
|
|
32
|
-
* always reachable; a filter you cannot get out of is worse than none.
|
|
33
|
-
*
|
|
34
|
-
* The trigger carries the live count so the toolbar says how many constraints
|
|
35
|
-
* are on without opening anything (DESIGN.md §2 — one line, state legible on it).
|
|
36
|
-
*/
|
|
37
|
-
export declare function FilterBuilder({ columns, value, onChange, className }: FilterBuilderProps): import("react").JSX.Element | null;
|
|
38
|
-
//# sourceMappingURL=FilterBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilder.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/FilterBuilder.tsx"],"names":[],"mappings":"AAOA,OAAO,EAOL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,kBAAkB,sCA6LxF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBuilder.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/FilterBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { HeadModel } from 'cwip/seo';
|
|
2
|
-
import { type ReactNode } from 'react';
|
|
3
|
-
export interface HeadProviderConfig {
|
|
4
|
-
default?: HeadModel;
|
|
5
|
-
siteUrl?: string;
|
|
6
|
-
titleTemplate?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface HeadProviderProps extends HeadProviderConfig {
|
|
9
|
-
children?: ReactNode;
|
|
10
|
-
}
|
|
11
|
-
export declare const useHeadConfig: () => HeadProviderConfig;
|
|
12
|
-
export declare const HeadProvider: ({ children, ...config }: HeadProviderProps) => import("react").JSX.Element;
|
|
13
|
-
export declare const useHead: (model: HeadModel) => void;
|
|
14
|
-
//# sourceMappingURL=HeadProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HeadProvider.d.ts","sourceRoot":"","sources":["../../../src/react/seo/HeadProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAiB,KAAK,SAAS,EAAkC,MAAM,OAAO,CAAC;AAGtF,MAAM,WAAW,kBAAkB;IAGjC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAOD,eAAO,MAAM,aAAa,QAAO,kBAA6C,CAAC;AAE/E,eAAO,MAAM,YAAY,GAAI,yBAAyB,iBAAiB,gCAUtE,CAAC;AAsBF,eAAO,MAAM,OAAO,GAAI,OAAO,SAAS,KAAG,IAS1C,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useEffect, useMemo } from 'react';
|
|
3
|
-
import { applyHeadToDocument } from './applyHeadToDocument';
|
|
4
|
-
const HeadContext = createContext({});
|
|
5
|
-
// Provides the site-wide SEO defaults (base head + siteUrl + title template) that
|
|
6
|
-
// every `useHead` call merges under its own model. Mount once near the app root.
|
|
7
|
-
// Read the site-wide SEO config supplied by the nearest `HeadProvider` (siteUrl,
|
|
8
|
-
// title template, base head). Returns `{}` when no provider is mounted, so a
|
|
9
|
-
// consumer can fall back (e.g. to `window.location.origin`) without crashing.
|
|
10
|
-
export const useHeadConfig = () => useContext(HeadContext);
|
|
11
|
-
export const HeadProvider = ({ children, ...config }) => {
|
|
12
|
-
const value = useMemo(() => ({
|
|
13
|
-
default: config.default,
|
|
14
|
-
siteUrl: config.siteUrl,
|
|
15
|
-
titleTemplate: config.titleTemplate,
|
|
16
|
-
}), [config.default, config.siteUrl, config.titleTemplate]);
|
|
17
|
-
return _jsx(HeadContext.Provider, { value: value, children: children });
|
|
18
|
-
};
|
|
19
|
-
const mergeHead = (base, model, titleTemplate) => ({
|
|
20
|
-
titleTemplate,
|
|
21
|
-
...base,
|
|
22
|
-
...model,
|
|
23
|
-
});
|
|
24
|
-
// Reconciles `document.head` for the CURRENT route. Merges the provider's default
|
|
25
|
-
// head with `model` (model wins field-by-field), then applies it imperatively on
|
|
26
|
-
// mount/update. SSR-safe — a no-op when `document` is unavailable.
|
|
27
|
-
//
|
|
28
|
-
// Multi-caller semantics (last-writer-wins): if more than one component calls
|
|
29
|
-
// `useHead` while mounted at once, the effect that (re)runs LAST wins — its model
|
|
30
|
-
// fully replaces the previously-applied managed tags, because `applyHeadToDocument`
|
|
31
|
-
// removes any managed tag not present in the new render. Design routes so exactly
|
|
32
|
-
// one component per active route calls `useHead`; a nested component that also
|
|
33
|
-
// calls it will overwrite the route's head on every one of its own re-renders.
|
|
34
|
-
export const useHead = (model) => {
|
|
35
|
-
const config = useContext(HeadContext);
|
|
36
|
-
const merged = mergeHead(config.default, model, config.titleTemplate);
|
|
37
|
-
const serialized = JSON.stringify(merged);
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (typeof document === 'undefined')
|
|
40
|
-
return;
|
|
41
|
-
applyHeadToDocument(JSON.parse(serialized));
|
|
42
|
-
}, [serialized]);
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=HeadProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HeadProvider.js","sourceRoot":"","sources":["../../../src/react/seo/HeadProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAU5D,MAAM,WAAW,GAAG,aAAa,CAAqB,EAAE,CAAC,CAAC;AAM1D,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,GAAuB,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAqB,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,EACF,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CACvD,CAAC;IACF,OAAO,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAwB,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,IAA2B,EAC3B,KAAgB,EAChB,aAAsB,EACX,EAAE,CAAC,CAAC;IACf,aAAa;IACb,GAAG,IAAI;IACP,GAAG,KAAK;CACT,CAAC,CAAC;AAEH,kFAAkF;AAClF,iFAAiF;AACjF,mEAAmE;AACnE,EAAE;AACF,8EAA8E;AAC9E,kFAAkF;AAClF,oFAAoF;AACpF,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAQ,EAAE;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAc,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applyHeadToDocument.d.ts","sourceRoot":"","sources":["../../../src/react/seo/applyHeadToDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA8B,MAAM,UAAU,CAAC;AAatE,eAAO,MAAM,mBAAmB,GAAI,OAAO,SAAS,EAAE,MAAK,QAAmB,KAAG,IAiChF,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { renderHead, SEO_TAG_MARKER } from 'cwip/seo';
|
|
2
|
-
// Applies a HeadModel to a live document: sets `document.title` and upserts the
|
|
3
|
-
// managed <meta>/<link>/<script type="application/ld+json"> tags into <head>. Every
|
|
4
|
-
// tag it creates or updates carries SEO_TAG_MARKER so a later call can find and
|
|
5
|
-
// replace its own tags without ever touching app-authored markup, and so it can
|
|
6
|
-
// remove a managed tag that is no longer present in the new model. Idempotent:
|
|
7
|
-
// calling twice with the same model produces the same DOM, never duplicates.
|
|
8
|
-
//
|
|
9
|
-
// Built directly on cwip's `renderHead` output (a string of tags) so the client
|
|
10
|
-
// reconciler and every other delivery mechanism (prerender/edge/server) stay in
|
|
11
|
-
// sync on exactly what a HeadModel renders to — this module only does the DOM
|
|
12
|
-
// diffing, not the serialization.
|
|
13
|
-
export const applyHeadToDocument = (model, doc = document) => {
|
|
14
|
-
const html = renderHead(model, { marker: true });
|
|
15
|
-
const template = doc.createElement('template');
|
|
16
|
-
template.innerHTML = html;
|
|
17
|
-
const nextNodes = Array.from(template.content.childNodes).filter((node) => node.nodeType === 1);
|
|
18
|
-
const title = nextNodes.find((node) => node.tagName === 'TITLE');
|
|
19
|
-
doc.title = title?.textContent ?? doc.title;
|
|
20
|
-
const previouslyManaged = Array.from(doc.head.querySelectorAll(`[${SEO_TAG_MARKER}]`));
|
|
21
|
-
const stillPresent = new Set();
|
|
22
|
-
for (const node of nextNodes) {
|
|
23
|
-
if (node.tagName === 'TITLE')
|
|
24
|
-
continue; // handled via doc.title above
|
|
25
|
-
const match = previouslyManaged.find((existing) => !stillPresent.has(existing) && isSameTag(existing, node));
|
|
26
|
-
if (match) {
|
|
27
|
-
copyAttributes(match, node);
|
|
28
|
-
match.textContent = node.textContent;
|
|
29
|
-
stillPresent.add(match);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
const clone = node.cloneNode(true);
|
|
33
|
-
doc.head.appendChild(clone);
|
|
34
|
-
stillPresent.add(clone);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
for (const existing of previouslyManaged) {
|
|
38
|
-
if (!stillPresent.has(existing))
|
|
39
|
-
existing.remove();
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
// Two tags are "the same" managed tag if they share a tag name and identifying key
|
|
43
|
-
// (meta name/property, link rel+href, or — for scripts/title — just the tag name,
|
|
44
|
-
// since a HeadModel carries at most one <title> and callers rarely emit more than
|
|
45
|
-
// one ld+json script; multiple ld+json blocks are matched positionally by falling
|
|
46
|
-
// through to a fresh append once earlier ones are claimed).
|
|
47
|
-
const isSameTag = (a, b) => {
|
|
48
|
-
if (a.tagName !== b.tagName)
|
|
49
|
-
return false;
|
|
50
|
-
if (a.tagName === 'META') {
|
|
51
|
-
return (identity(a, 'name') === identity(b, 'name') &&
|
|
52
|
-
identity(a, 'property') === identity(b, 'property'));
|
|
53
|
-
}
|
|
54
|
-
if (a.tagName === 'LINK') {
|
|
55
|
-
return identity(a, 'rel') === identity(b, 'rel') && identity(a, 'href') === identity(b, 'href');
|
|
56
|
-
}
|
|
57
|
-
return true; // SCRIPT (ld+json) — matched positionally among managed scripts
|
|
58
|
-
};
|
|
59
|
-
const identity = (el, attr) => el.getAttribute(attr) ?? '';
|
|
60
|
-
const copyAttributes = (target, source) => {
|
|
61
|
-
for (const attr of Array.from(target.attributes))
|
|
62
|
-
target.removeAttribute(attr.name);
|
|
63
|
-
for (const attr of Array.from(source.attributes))
|
|
64
|
-
target.setAttribute(attr.name, attr.value);
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=applyHeadToDocument.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applyHeadToDocument.js","sourceRoot":"","sources":["../../../src/react/seo/applyHeadToDocument.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/seo/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,OAAO,EACP,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
package/dist/react/seo/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// cursedbelt/react/seo — a tiny, react-helmet-style head manager keyed to cwip's
|
|
2
|
-
// `HeadModel`. `HeadProvider` supplies site-wide defaults; a route calls `useHead`
|
|
3
|
-
// once to own `document.head` for as long as it's mounted. Dedicated subpath so an
|
|
4
|
-
// app that never touches SEO pays nothing for it.
|
|
5
|
-
export { applyHeadToDocument } from './applyHeadToDocument';
|
|
6
|
-
export { HeadProvider, useHead, useHeadConfig, } from './HeadProvider';
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/seo/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mFAAmF;AACnF,mFAAmF;AACnF,kDAAkD;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,YAAY,EAGZ,OAAO,EACP,aAAa,GACd,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type TimelineClip } from 'cwip/timeline';
|
|
2
|
-
import type { ReactNode } from 'react';
|
|
3
|
-
export type TrimEdge = 'start' | 'end';
|
|
4
|
-
export interface ClipViewProps {
|
|
5
|
-
clip: TimelineClip;
|
|
6
|
-
zoomScale: number;
|
|
7
|
-
selected: boolean;
|
|
8
|
-
onSelect: () => void;
|
|
9
|
-
/** Live preview during a body drag (raw target start, seconds). */
|
|
10
|
-
onMovePreview: (toStartSeconds: number, event: PointerEvent) => void;
|
|
11
|
-
onMoveCommit: (toStartSeconds: number, cancelled: boolean) => void;
|
|
12
|
-
/** Live preview during an edge drag (raw signed delta, seconds). */
|
|
13
|
-
onTrimPreview: (edge: TrimEdge, deltaSeconds: number, event: PointerEvent) => void;
|
|
14
|
-
onTrimCommit: (edge: TrimEdge, deltaSeconds: number, cancelled: boolean) => void;
|
|
15
|
-
/** Fallback color token when the clip carries none (a theme token name,
|
|
16
|
-
* resolved as `var(--<token>)` — e.g. "chart-1"). */
|
|
17
|
-
defaultColorToken?: string;
|
|
18
|
-
/** Extra content under the label (waveform strip, filmstrip). */
|
|
19
|
-
children?: ReactNode;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* One clip block: body drag repositions, edge handles trim, click selects.
|
|
23
|
-
* PRESENTATIONAL — it translates pixels to seconds and reports intent; all
|
|
24
|
-
* clamping/rippling/snapping is the owner's job (cwip/timeline ops), so the
|
|
25
|
-
* block never disagrees with the engine. Colors ride theme tokens via
|
|
26
|
-
* `color-mix`, never raw values.
|
|
27
|
-
*/
|
|
28
|
-
export declare function ClipView({ clip, zoomScale, selected, onSelect, onMovePreview, onMoveCommit, onTrimPreview, onTrimCommit, defaultColorToken, children, }: ClipViewProps): import("react").JSX.Element;
|
|
29
|
-
//# sourceMappingURL=ClipView.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClipView.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/ClipView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAExF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACrE,YAAY,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,oEAAoE;IACpE,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACnF,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjF;yDACqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,iBAA6B,EAC7B,QAAQ,GACT,EAAE,aAAa,+BAmGf"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { clipLeftPx, clipWidthPx, pxToSeconds } from 'cwip/timeline';
|
|
3
|
-
import { Zap } from 'lucide-react';
|
|
4
|
-
import { useRef } from 'react';
|
|
5
|
-
import { formatTimecode } from '../../core/media';
|
|
6
|
-
import { usePointerDrag } from '../hooks/usePointerDrag';
|
|
7
|
-
import { cn } from '../lib/cn';
|
|
8
|
-
/**
|
|
9
|
-
* One clip block: body drag repositions, edge handles trim, click selects.
|
|
10
|
-
* PRESENTATIONAL — it translates pixels to seconds and reports intent; all
|
|
11
|
-
* clamping/rippling/snapping is the owner's job (cwip/timeline ops), so the
|
|
12
|
-
* block never disagrees with the engine. Colors ride theme tokens via
|
|
13
|
-
* `color-mix`, never raw values.
|
|
14
|
-
*/
|
|
15
|
-
export function ClipView({ clip, zoomScale, selected, onSelect, onMovePreview, onMoveCommit, onTrimPreview, onTrimCommit, defaultColorToken = 'chart-1', children, }) {
|
|
16
|
-
const token = clip.colorToken ?? defaultColorToken;
|
|
17
|
-
const originStart = useRef(0);
|
|
18
|
-
const bodyDrag = usePointerDrag({
|
|
19
|
-
onStart: () => {
|
|
20
|
-
originStart.current = clip.timelineStart;
|
|
21
|
-
onSelect();
|
|
22
|
-
},
|
|
23
|
-
onMove: ({ dx, event }) => onMovePreview(Math.max(0, originStart.current + pxToSeconds(dx, zoomScale)), event),
|
|
24
|
-
onEnd: ({ dx, cancelled }) => onMoveCommit(Math.max(0, originStart.current + pxToSeconds(dx, zoomScale)), cancelled),
|
|
25
|
-
});
|
|
26
|
-
// Both edge handles share one drag recipe, differing only by which edge they trim.
|
|
27
|
-
// `usePointerDrag` is a hook, so it's called directly at the top level (never inside a
|
|
28
|
-
// helper/closure — Rules of Hooks); `edgeDragOptions` builds the config, not the hook.
|
|
29
|
-
const edgeDragOptions = (edge) => ({
|
|
30
|
-
onStart: () => onSelect(),
|
|
31
|
-
onMove: ({ dx, event }) => onTrimPreview(edge, pxToSeconds(dx, zoomScale), event),
|
|
32
|
-
onEnd: ({ dx, cancelled }) => onTrimCommit(edge, pxToSeconds(dx, zoomScale), cancelled),
|
|
33
|
-
});
|
|
34
|
-
const startDrag = usePointerDrag(edgeDragOptions('start'));
|
|
35
|
-
const endDrag = usePointerDrag(edgeDragOptions('end'));
|
|
36
|
-
return (_jsxs("button", {
|
|
37
|
-
// guardrails-ignore no-raw-action-button: a draggable/trimmable timeline-canvas
|
|
38
|
-
// primitive (positioned, pointer-drag-driven, custom color-mix styling via
|
|
39
|
-
// `style`) — not a generic action trigger, so it can't route through the
|
|
40
|
-
// Button/Tooltip abstraction without breaking the drag/trim contract.
|
|
41
|
-
type: 'button', ...bodyDrag.handleProps, onClick: (e) => {
|
|
42
|
-
e.stopPropagation(); // the lane behind also listens (deselect/seek)
|
|
43
|
-
onSelect();
|
|
44
|
-
}, "aria-label": `Clip ${clip.name}`, "aria-pressed": selected, className: cn('group absolute inset-y-1 z-10 flex flex-col overflow-hidden rounded-md border p-0 text-left', 'cursor-grab appearance-none active:cursor-grabbing', selected && 'ring-2 ring-accent-solid ring-offset-1 ring-offset-background'), style: {
|
|
45
|
-
...bodyDrag.handleProps.style,
|
|
46
|
-
left: clipLeftPx(clip, zoomScale),
|
|
47
|
-
// 2px breathing room so butted clips stay visually distinct at high zoom
|
|
48
|
-
width: Math.max(8, clipWidthPx(clip, zoomScale) - 2),
|
|
49
|
-
borderColor: `var(--${token})`,
|
|
50
|
-
background: `color-mix(in srgb, var(--${token}) 30%, var(--background))`,
|
|
51
|
-
}, children: [children && _jsx("div", { className: 'pointer-events-none absolute inset-0', children: children }), _jsxs("div", { className: 'pointer-events-none relative z-1 flex items-center gap-1 px-1.5 pt-0.5', children: [_jsx("span", { className: 'truncate rounded bg-background/70 px-1 text-caption font-medium text-foreground', children: clip.name }), clip.speed !== 1 && (_jsxs("span", { className: 'inline-flex shrink-0 items-center gap-0.5 rounded bg-background/80 px-1 text-caption text-foreground', children: [_jsx(Zap, { "aria-hidden": true, className: 'size-2.5' }), clip.speed, "x"] }))] }), _jsxs("div", { className: 'pointer-events-none relative z-1 mt-auto w-fit rounded-tr bg-background/60 px-1.5 text-caption text-muted-foreground', children: [formatTimecode(clip.trackIn), "\u2013", formatTimecode(clip.trackOut)] }), _jsx("div", { ...startDrag.handleProps, className: cn('absolute inset-y-0 -left-1 z-20 flex w-4 cursor-ew-resize items-stretch justify-start', 'opacity-0 transition-opacity group-hover:opacity-100', selected && 'opacity-100'), style: startDrag.handleProps.style, "aria-hidden": true, children: _jsx("div", { className: 'ml-1 w-1.5 rounded-sm bg-foreground/40' }) }), _jsx("div", { ...endDrag.handleProps, className: cn('absolute inset-y-0 -right-1 z-20 flex w-4 cursor-ew-resize items-stretch justify-end', 'opacity-0 transition-opacity group-hover:opacity-100', selected && 'opacity-100'), style: endDrag.handleProps.style, "aria-hidden": true, children: _jsx("div", { className: 'mr-1 w-1.5 rounded-sm bg-foreground/40' }) })] }));
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=ClipView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClipView.js","sourceRoot":"","sources":["../../../src/react/timeline/ClipView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface PlayheadProps {
|
|
2
|
-
timeSeconds: number;
|
|
3
|
-
zoomScale: number;
|
|
4
|
-
/** Drag the head to scrub; omit for a display-only playhead. */
|
|
5
|
-
onScrub?: (seconds: number) => void;
|
|
6
|
-
onScrubStart?: () => void;
|
|
7
|
-
onScrubEnd?: () => void;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* The vertical playhead overlay (line + grab knob). Positioned absolutely in a
|
|
11
|
-
* `relative` container spanning the timeline's full scroll width. The knob is
|
|
12
|
-
* the drag target; the line itself stays click-through so clips underneath
|
|
13
|
-
* remain selectable.
|
|
14
|
-
*/
|
|
15
|
-
export declare function Playhead({ timeSeconds, zoomScale, onScrub, onScrubStart, onScrubEnd, }: PlayheadProps): import("react").JSX.Element;
|
|
16
|
-
//# sourceMappingURL=Playhead.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Playhead.d.ts","sourceRoot":"","sources":["../../../src/react/timeline/Playhead.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,WAAW,EACX,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,GACX,EAAE,aAAa,+BAqCf"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { pxToSeconds, secondsToPx } from 'cwip/timeline';
|
|
3
|
-
import { useRef } from 'react';
|
|
4
|
-
import { usePointerDrag } from '../hooks/usePointerDrag';
|
|
5
|
-
/**
|
|
6
|
-
* The vertical playhead overlay (line + grab knob). Positioned absolutely in a
|
|
7
|
-
* `relative` container spanning the timeline's full scroll width. The knob is
|
|
8
|
-
* the drag target; the line itself stays click-through so clips underneath
|
|
9
|
-
* remain selectable.
|
|
10
|
-
*/
|
|
11
|
-
export function Playhead({ timeSeconds, zoomScale, onScrub, onScrubStart, onScrubEnd, }) {
|
|
12
|
-
const originSeconds = useRef(0);
|
|
13
|
-
const drag = usePointerDrag({
|
|
14
|
-
onStart: () => {
|
|
15
|
-
originSeconds.current = timeSeconds;
|
|
16
|
-
onScrubStart?.();
|
|
17
|
-
},
|
|
18
|
-
onMove: ({ dx }) => {
|
|
19
|
-
onScrub?.(Math.max(0, originSeconds.current + pxToSeconds(dx, zoomScale)));
|
|
20
|
-
},
|
|
21
|
-
onEnd: () => onScrubEnd?.(),
|
|
22
|
-
disabled: !onScrub,
|
|
23
|
-
});
|
|
24
|
-
return (_jsxs("div", { className: 'pointer-events-none absolute inset-y-0 z-20', style: { left: secondsToPx(timeSeconds, zoomScale) }, children: [_jsx("div", { className: 'absolute inset-y-0 w-px bg-destructive' }), onScrub && (_jsx("div", { ...drag.handleProps, role: 'slider', "aria-label": 'Playhead', "aria-valuemin": 0, "aria-valuemax": Number.MAX_SAFE_INTEGER, "aria-valuenow": Math.round(timeSeconds), tabIndex: 0, className: 'pointer-events-auto absolute -top-1 -left-[11px] flex h-6 w-[23px] cursor-ew-resize items-start justify-center', style: drag.handleProps.style, children: _jsx("div", { className: 'h-3 w-3 rounded-full border border-background bg-destructive shadow' }) }))] }));
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=Playhead.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Playhead.js","sourceRoot":"","sources":["../../../src/react/timeline/Playhead.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAWzD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,WAAW,EACX,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,GACI;IACd,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;YACpC,YAAY,EAAE,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE;QAC3B,QAAQ,EAAE,CAAC,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO,CACL,eACE,SAAS,EAAC,6CAA6C,EACvD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,aAEpD,cAAK,SAAS,EAAC,wCAAwC,GAAG,EACzD,OAAO,IAAI,CACV,iBACM,IAAI,CAAC,WAAW,EACpB,IAAI,EAAC,QAAQ,gBACF,UAAU,mBACN,CAAC,mBACD,MAAM,CAAC,gBAAgB,mBACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EACtC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAC,gHAAgH,EAC1H,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,YAE7B,cAAK,SAAS,EAAC,qEAAqE,GAAG,GACnF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|