@webpacked-timeline/core 1.0.0-beta.1

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 (77) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/LICENSE +21 -0
  3. package/README.md +162 -0
  4. package/dist/chunk-27XCNVPR.js +5969 -0
  5. package/dist/chunk-6PDBJDHM.js +2263 -0
  6. package/dist/chunk-BWPS6NQT.js +7465 -0
  7. package/dist/chunk-FBOYSUYV.js +1280 -0
  8. package/dist/chunk-FR632TZX.js +1870 -0
  9. package/dist/chunk-HW4Z7YLJ.js +1242 -0
  10. package/dist/chunk-HWW62IFH.js +5424 -0
  11. package/dist/chunk-I2GZXRH4.js +4790 -0
  12. package/dist/chunk-JQZE3OK4.js +1255 -0
  13. package/dist/chunk-KF7JNK2F.js +1864 -0
  14. package/dist/chunk-KR3P2DYK.js +5655 -0
  15. package/dist/chunk-MO5DSFSW.js +2214 -0
  16. package/dist/chunk-MQAW33RJ.js +5530 -0
  17. package/dist/chunk-N4WUWZZX.js +2833 -0
  18. package/dist/chunk-NRJV7I4C.js +1331 -0
  19. package/dist/chunk-NXG52532.js +2230 -0
  20. package/dist/chunk-PVXF67CN.js +1278 -0
  21. package/dist/chunk-QSB6DHIF.js +5429 -0
  22. package/dist/chunk-QYWJT7HR.js +5837 -0
  23. package/dist/chunk-SWBRCMW7.js +7466 -0
  24. package/dist/chunk-TAT3ULSV.js +2214 -0
  25. package/dist/chunk-TTDP5JUM.js +2228 -0
  26. package/dist/chunk-UAGP4VPG.js +1739 -0
  27. package/dist/chunk-WIG6SY7A.js +1183 -0
  28. package/dist/chunk-YJ2K5N2R.js +6187 -0
  29. package/dist/index-3Lr_vKBd.d.cts +2810 -0
  30. package/dist/index-3Lr_vKBd.d.ts +2810 -0
  31. package/dist/index-7IPJn1yM.d.cts +1146 -0
  32. package/dist/index-7IPJn1yM.d.ts +1146 -0
  33. package/dist/index-B0xOv0V0.d.cts +3259 -0
  34. package/dist/index-B0xOv0V0.d.ts +3259 -0
  35. package/dist/index-B2m3zwg7.d.cts +1381 -0
  36. package/dist/index-B2m3zwg7.d.ts +1381 -0
  37. package/dist/index-B3sUrU_X.d.cts +1249 -0
  38. package/dist/index-B3sUrU_X.d.ts +1249 -0
  39. package/dist/index-B6wla7ZJ.d.cts +2751 -0
  40. package/dist/index-B6wla7ZJ.d.ts +2751 -0
  41. package/dist/index-BIv8RWWT.d.cts +1574 -0
  42. package/dist/index-BIv8RWWT.d.ts +1574 -0
  43. package/dist/index-BJv6hDHL.d.cts +3255 -0
  44. package/dist/index-BJv6hDHL.d.ts +3255 -0
  45. package/dist/index-BUCimS2e.d.cts +1393 -0
  46. package/dist/index-BUCimS2e.d.ts +1393 -0
  47. package/dist/index-Bw_nvNcG.d.cts +1275 -0
  48. package/dist/index-Bw_nvNcG.d.ts +1275 -0
  49. package/dist/index-ByG0gOtd.d.cts +1167 -0
  50. package/dist/index-ByG0gOtd.d.ts +1167 -0
  51. package/dist/index-CDGd2XXv.d.cts +2492 -0
  52. package/dist/index-CDGd2XXv.d.ts +2492 -0
  53. package/dist/index-CznAVeJ6.d.cts +1145 -0
  54. package/dist/index-CznAVeJ6.d.ts +1145 -0
  55. package/dist/index-DQD9IMh7.d.cts +2534 -0
  56. package/dist/index-DQD9IMh7.d.ts +2534 -0
  57. package/dist/index-Dl3qtJEI.d.cts +2178 -0
  58. package/dist/index-Dl3qtJEI.d.ts +2178 -0
  59. package/dist/index-DnE2A-Nz.d.cts +2603 -0
  60. package/dist/index-DnE2A-Nz.d.ts +2603 -0
  61. package/dist/index-DrOA6QmW.d.cts +2492 -0
  62. package/dist/index-DrOA6QmW.d.ts +2492 -0
  63. package/dist/index-Vpa3rPEM.d.cts +1402 -0
  64. package/dist/index-Vpa3rPEM.d.ts +1402 -0
  65. package/dist/index-jP6BomSd.d.cts +2640 -0
  66. package/dist/index-jP6BomSd.d.ts +2640 -0
  67. package/dist/index-wiGRwVyY.d.cts +3259 -0
  68. package/dist/index-wiGRwVyY.d.ts +3259 -0
  69. package/dist/index.cjs +7386 -0
  70. package/dist/index.d.cts +1 -0
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.js +263 -0
  73. package/dist/internal.cjs +7721 -0
  74. package/dist/internal.d.cts +704 -0
  75. package/dist/internal.d.ts +704 -0
  76. package/dist/internal.js +405 -0
  77. package/package.json +58 -0
@@ -0,0 +1,405 @@
1
+ import {
2
+ CURRENT_SCHEMA_VERSION,
3
+ DEFAULT_AUDIO_PROPERTIES,
4
+ DEFAULT_CLIP_TRANSFORM,
5
+ DEFAULT_COMPRESSION_POLICY,
6
+ DEFAULT_KEY_BINDINGS,
7
+ EMPTY_STATE_CHANGE,
8
+ FrameRates,
9
+ HOLD_EASING,
10
+ HandTool,
11
+ HistoryStack,
12
+ IntervalTree,
13
+ KeyboardHandler,
14
+ KeyframeTool,
15
+ LINEAR_EASING,
16
+ NO_COMPRESSION,
17
+ NoOpTool,
18
+ PlaybackEngine,
19
+ PlayheadController,
20
+ RazorTool,
21
+ RippleDeleteTool,
22
+ RippleInsertTool,
23
+ RippleTrimTool,
24
+ RollTrimTool,
25
+ SelectionTool,
26
+ SerializationError,
27
+ SlideTool,
28
+ SlipTool,
29
+ SnapIndexManager,
30
+ ThumbnailCache,
31
+ ThumbnailQueue,
32
+ TimelineEngine,
33
+ TrackIndex,
34
+ TransactionCompressor,
35
+ TransitionTool,
36
+ ZoomTool,
37
+ activateTool,
38
+ addBin,
39
+ addClip,
40
+ addFrames,
41
+ addItemToBin,
42
+ addTimeline,
43
+ addTrack,
44
+ browserClock,
45
+ buildSnapIndex,
46
+ canRedo,
47
+ canUndo,
48
+ checkInvariants,
49
+ clampFrame,
50
+ clearProvisional,
51
+ clipContainsFrame,
52
+ clipsOverlap,
53
+ combineResults,
54
+ createAnimatableProperty,
55
+ createAsset,
56
+ createBin,
57
+ createClip,
58
+ createEffect,
59
+ createHistory,
60
+ createLinkGroup,
61
+ createProject,
62
+ createProvisionalManager,
63
+ createRegistry,
64
+ createTestClock,
65
+ createTimeline,
66
+ createTimelineState,
67
+ createTrack,
68
+ createTrackGroup,
69
+ createTransition,
70
+ createZoomTool,
71
+ defaultCaptionStyle,
72
+ deserializeProject,
73
+ deserializeTimeline,
74
+ diffStates,
75
+ dispatch,
76
+ exportToAAF,
77
+ exportToEDL,
78
+ exportToFCPXML,
79
+ exportToOTIO,
80
+ findClipById,
81
+ findMarkersByColor,
82
+ findMarkersByLabel,
83
+ findNextClipBoundary,
84
+ findNextMarker,
85
+ findOfflineAssets,
86
+ findPrevClipBoundary,
87
+ findPrevMarker,
88
+ findTrackById,
89
+ findTrackIndex,
90
+ frame,
91
+ frameDuration,
92
+ frameRate,
93
+ frameToTimecode,
94
+ framesToMinutesSeconds,
95
+ framesToSeconds,
96
+ framesToTimecode,
97
+ getActiveTool,
98
+ getAllAssets,
99
+ getAllClips,
100
+ getAllTracks,
101
+ getAsset,
102
+ getClipDuration,
103
+ getClipMediaDuration,
104
+ getClipsAtFrame,
105
+ getClipsInRange,
106
+ getClipsOnTrack,
107
+ getCurrentState,
108
+ getVisibleClips,
109
+ getVisibleFrameRange,
110
+ hasAsset,
111
+ importFromOTIO,
112
+ insertEdit,
113
+ insertMove,
114
+ invalidResult,
115
+ invalidResults,
116
+ isDropFrame,
117
+ isValidFrame,
118
+ mediaFrameForClip,
119
+ moveClip,
120
+ moveClipToTrack,
121
+ moveItemBetweenBins,
122
+ moveTrack,
123
+ nearest,
124
+ nodeClock,
125
+ parseSRT,
126
+ parseVTT,
127
+ pushHistory,
128
+ redo,
129
+ reelName,
130
+ registerAsset,
131
+ registerTool,
132
+ remapAssetPaths,
133
+ removeBin,
134
+ removeClip,
135
+ removeItemFromBin,
136
+ removeTimeline,
137
+ removeTrack,
138
+ resizeClip,
139
+ resolveClip,
140
+ resolveFrame,
141
+ rippleDelete,
142
+ rippleMove,
143
+ rippleTrim,
144
+ secondsToFrames,
145
+ serializeProject,
146
+ serializeTimeline,
147
+ setProvisional,
148
+ setTimelineDuration,
149
+ setTimelineName,
150
+ sortTrackClips,
151
+ subtitleImportToOps,
152
+ subtractFrames,
153
+ toAssetId,
154
+ toBinId,
155
+ toClipId,
156
+ toEffectId,
157
+ toFCPTime,
158
+ toFrame,
159
+ toKeyframeId,
160
+ toLinkGroupId,
161
+ toMarkerId,
162
+ toProjectId,
163
+ toTimecode,
164
+ toToolId,
165
+ toTrackGroupId,
166
+ toTrackId,
167
+ toTransitionId,
168
+ toggleSnap,
169
+ toggleTrackLock,
170
+ toggleTrackMute,
171
+ trimClip,
172
+ undo,
173
+ unregisterAsset,
174
+ updateClip,
175
+ updateTrack,
176
+ validResult,
177
+ validateClip,
178
+ validateNoOverlap,
179
+ validateTimeline,
180
+ validateTrack
181
+ } from "./chunk-SWBRCMW7.js";
182
+
183
+ // src/utils/id.ts
184
+ var idCounter = 0;
185
+ function generateId(prefix) {
186
+ idCounter++;
187
+ return `${prefix}_${idCounter}`;
188
+ }
189
+ function generateClipId() {
190
+ return generateId("clip");
191
+ }
192
+ function generateTrackId() {
193
+ return generateId("track");
194
+ }
195
+ function generateTimelineId() {
196
+ return generateId("timeline");
197
+ }
198
+ function generateAssetId() {
199
+ return generateId("asset");
200
+ }
201
+ function resetIdCounter() {
202
+ idCounter = 0;
203
+ }
204
+
205
+ // src/utils/id-phase2.ts
206
+ function generateLinkGroupId() {
207
+ return generateId("linkgroup");
208
+ }
209
+ function generateGroupId() {
210
+ return generateId("group");
211
+ }
212
+ function generateMarkerId() {
213
+ return generateId("marker");
214
+ }
215
+ export {
216
+ CURRENT_SCHEMA_VERSION,
217
+ DEFAULT_AUDIO_PROPERTIES,
218
+ DEFAULT_CLIP_TRANSFORM,
219
+ DEFAULT_COMPRESSION_POLICY,
220
+ DEFAULT_KEY_BINDINGS,
221
+ EMPTY_STATE_CHANGE,
222
+ FrameRates,
223
+ HOLD_EASING,
224
+ HandTool,
225
+ HistoryStack,
226
+ IntervalTree,
227
+ KeyboardHandler,
228
+ KeyframeTool,
229
+ LINEAR_EASING,
230
+ NO_COMPRESSION,
231
+ NoOpTool,
232
+ PlaybackEngine,
233
+ PlayheadController,
234
+ RazorTool,
235
+ RippleDeleteTool,
236
+ RippleInsertTool,
237
+ RippleTrimTool,
238
+ RollTrimTool,
239
+ SelectionTool,
240
+ SerializationError,
241
+ SlideTool,
242
+ SlipTool,
243
+ SnapIndexManager,
244
+ ThumbnailCache,
245
+ ThumbnailQueue,
246
+ TimelineEngine,
247
+ TrackIndex,
248
+ TransactionCompressor,
249
+ TransitionTool,
250
+ ZoomTool,
251
+ activateTool,
252
+ activateTool as activateToolInRegistry,
253
+ addBin,
254
+ addClip,
255
+ addFrames,
256
+ addItemToBin,
257
+ addTimeline,
258
+ addTrack,
259
+ browserClock,
260
+ buildSnapIndex,
261
+ canRedo,
262
+ canUndo,
263
+ checkInvariants,
264
+ clampFrame,
265
+ clearProvisional,
266
+ clipContainsFrame,
267
+ clipsOverlap,
268
+ combineResults,
269
+ createAnimatableProperty,
270
+ createAsset,
271
+ createBin,
272
+ createClip,
273
+ createEffect,
274
+ createHistory,
275
+ createLinkGroup,
276
+ createProject,
277
+ createProvisionalManager,
278
+ createRegistry,
279
+ createTestClock,
280
+ createTimeline,
281
+ createTimelineState,
282
+ createTrack,
283
+ createTrackGroup,
284
+ createTransition,
285
+ createZoomTool,
286
+ defaultCaptionStyle,
287
+ deserializeProject,
288
+ deserializeTimeline,
289
+ diffStates,
290
+ dispatch,
291
+ exportToAAF,
292
+ exportToEDL,
293
+ exportToFCPXML,
294
+ exportToOTIO,
295
+ findClipById,
296
+ findMarkersByColor,
297
+ findMarkersByLabel,
298
+ findNextClipBoundary,
299
+ findNextMarker,
300
+ findOfflineAssets,
301
+ findPrevClipBoundary,
302
+ findPrevMarker,
303
+ findTrackById,
304
+ findTrackIndex,
305
+ frame,
306
+ frameDuration,
307
+ frameRate,
308
+ frameToTimecode,
309
+ framesToMinutesSeconds,
310
+ framesToSeconds,
311
+ framesToTimecode,
312
+ generateAssetId,
313
+ generateClipId,
314
+ generateGroupId,
315
+ generateId,
316
+ generateLinkGroupId,
317
+ generateMarkerId,
318
+ generateTimelineId,
319
+ generateTrackId,
320
+ getActiveTool,
321
+ getAllAssets,
322
+ getAllClips,
323
+ getAllTracks,
324
+ getAsset,
325
+ getClipDuration,
326
+ getClipMediaDuration,
327
+ getClipsAtFrame,
328
+ getClipsInRange,
329
+ getClipsOnTrack,
330
+ getCurrentState,
331
+ getVisibleClips,
332
+ getVisibleFrameRange,
333
+ hasAsset,
334
+ importFromOTIO,
335
+ insertEdit,
336
+ insertMove,
337
+ invalidResult,
338
+ invalidResults,
339
+ isDropFrame,
340
+ isValidFrame,
341
+ mediaFrameForClip,
342
+ moveClip,
343
+ moveClipToTrack,
344
+ moveItemBetweenBins,
345
+ moveTrack,
346
+ nearest,
347
+ nodeClock,
348
+ parseSRT,
349
+ parseVTT,
350
+ pushHistory,
351
+ redo,
352
+ reelName,
353
+ registerAsset,
354
+ registerTool,
355
+ remapAssetPaths,
356
+ removeBin,
357
+ removeClip,
358
+ removeItemFromBin,
359
+ removeTimeline,
360
+ removeTrack,
361
+ resetIdCounter,
362
+ resizeClip,
363
+ resolveClip,
364
+ resolveFrame,
365
+ rippleDelete,
366
+ rippleMove,
367
+ rippleTrim,
368
+ secondsToFrames,
369
+ serializeProject,
370
+ serializeTimeline,
371
+ setProvisional,
372
+ setTimelineDuration,
373
+ setTimelineName,
374
+ sortTrackClips,
375
+ subtitleImportToOps,
376
+ subtractFrames,
377
+ toAssetId,
378
+ toBinId,
379
+ toClipId,
380
+ toEffectId,
381
+ toFCPTime,
382
+ toFrame,
383
+ toKeyframeId,
384
+ toLinkGroupId,
385
+ toMarkerId,
386
+ toProjectId,
387
+ toTimecode,
388
+ toToolId,
389
+ toTrackGroupId,
390
+ toTrackId,
391
+ toTransitionId,
392
+ toggleSnap,
393
+ toggleTrackLock,
394
+ toggleTrackMute,
395
+ trimClip,
396
+ undo,
397
+ unregisterAsset,
398
+ updateClip,
399
+ updateTrack,
400
+ validResult,
401
+ validateClip,
402
+ validateNoOverlap,
403
+ validateTimeline,
404
+ validateTrack
405
+ };
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@webpacked-timeline/core",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "Headless TypeScript engine for professional NLE timeline editing. Framework-agnostic, fully tested.",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./internal": {
16
+ "types": "./dist/internal.d.ts",
17
+ "import": "./dist/internal.js",
18
+ "require": "./dist/internal.cjs"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "README.md",
24
+ "CHANGELOG.md"
25
+ ],
26
+ "keywords": [
27
+ "timeline",
28
+ "nle",
29
+ "video-editor",
30
+ "typescript",
31
+ "headless",
32
+ "editing"
33
+ ],
34
+ "author": "",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/manas-timeline/timeline",
39
+ "directory": "packages/core"
40
+ },
41
+ "homepage": "https://github.com/manas-timeline/timeline/tree/main/packages/core#readme",
42
+ "devDependencies": {
43
+ "@types/node": "^24.10.11",
44
+ "@vitest/coverage-v8": "^2.1.8",
45
+ "tsup": "^8.5.1",
46
+ "tsx": "^4.21.0",
47
+ "typescript": "~5.9.3",
48
+ "vitest": "^2.1.8"
49
+ },
50
+ "scripts": {
51
+ "build": "tsup src/index.ts src/internal.ts --format cjs,esm --dts",
52
+ "dev": "tsup src/index.ts src/internal.ts --format cjs,esm --dts --watch",
53
+ "test": "vitest run",
54
+ "test:watch": "vitest",
55
+ "test:coverage": "vitest run --coverage",
56
+ "test:legacy": "tsx src/__tests__/edge-case-tests.ts && tsx src/__tests__/stress-tests.ts && tsx src/__tests__/phase2-tests.ts"
57
+ }
58
+ }