@cliquify.me/timeline 3.1.8 → 3.1.10
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/constants/constants.d.ts +23 -0
- package/dist/constants/fabric.d.ts +6 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/objects.d.ts +5 -0
- package/dist/constants/scale.d.ts +16 -0
- package/dist/constants/sizes.d.ts +3 -0
- package/dist/controls/controls.d.ts +22 -0
- package/dist/controls/draw.d.ts +3 -0
- package/dist/controls/index.d.ts +5 -0
- package/dist/events/canvas/before-transform.d.ts +4 -0
- package/dist/events/canvas/drag.d.ts +4 -0
- package/dist/events/canvas/events.d.ts +4 -0
- package/dist/events/canvas/guidelines.d.ts +6 -0
- package/dist/events/canvas/internal.d.ts +35 -0
- package/dist/events/canvas/modified.d.ts +4 -0
- package/dist/events/canvas/moving.d.ts +4 -0
- package/dist/events/canvas/placeholder.d.ts +4 -0
- package/dist/events/canvas/resized.d.ts +4 -0
- package/dist/events/canvas/resizing.d.ts +8 -0
- package/dist/events/canvas/scrolling.d.ts +7 -0
- package/dist/events/canvas/selection.d.ts +4 -0
- package/dist/events/canvas/timeline.d.ts +4 -0
- package/dist/events/store/connect.d.ts +4 -0
- package/dist/global/events.d.ts +6 -0
- package/dist/global/index.d.ts +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.es.js +11831 -0
- package/dist/index.umd.js +498 -0
- package/dist/interfaces/canvas.d.ts +21 -0
- package/dist/mixins/canvas.d.ts +17 -0
- package/dist/mixins/track-items.d.ts +21 -0
- package/dist/mixins/tracks.d.ts +15 -0
- package/dist/mixins/transitions.d.ts +10 -0
- package/dist/objects/audio.d.ts +40 -0
- package/dist/objects/captions.d.ts +34 -0
- package/dist/objects/drag-track-item.d.ts +33 -0
- package/dist/objects/helper.d.ts +29 -0
- package/dist/objects/image.d.ts +36 -0
- package/dist/objects/index.d.ts +11 -0
- package/dist/objects/placeholder.d.ts +36 -0
- package/dist/objects/template.d.ts +36 -0
- package/dist/objects/text.d.ts +34 -0
- package/dist/objects/track.d.ts +28 -0
- package/dist/objects/transition-guide.d.ts +38 -0
- package/dist/objects/transition.d.ts +43 -0
- package/dist/objects/video.d.ts +43 -0
- package/dist/resize/audio.d.ts +13 -0
- package/dist/resize/common.d.ts +13 -0
- package/dist/resize/index.d.ts +1 -0
- package/dist/resize/media.d.ts +13 -0
- package/dist/resize/resize.d.ts +6 -0
- package/dist/resize/template.d.ts +13 -0
- package/dist/resize/transition.d.ts +4 -0
- package/dist/timeline.d.ts +94 -0
- package/dist/utils/accepts.d.ts +2 -0
- package/dist/utils/apply-mixins.d.ts +7 -0
- package/dist/utils/array.d.ts +6 -0
- package/dist/utils/canvas.d.ts +8 -0
- package/dist/utils/clone-deep.d.ts +1 -0
- package/dist/utils/fabric.d.ts +15 -0
- package/dist/utils/group-by-transition.d.ts +18 -0
- package/dist/utils/group-items.d.ts +11 -0
- package/dist/utils/guideline.d.ts +57 -0
- package/dist/utils/id.d.ts +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/item.d.ts +3 -0
- package/dist/utils/load-object.d.ts +43 -0
- package/dist/utils/over-element.d.ts +6 -0
- package/dist/utils/resolve-origin.d.ts +9 -0
- package/dist/utils/sizes.d.ts +3 -0
- package/dist/utils/timeline.d.ts +6 -0
- package/package.json +12 -5
- package/src/index.ts +0 -18
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Canvas, CanvasOptions, TPointerEvent } from 'fabric';
|
|
2
|
+
import { default as CanvasMixin } from './mixins/canvas';
|
|
3
|
+
import { default as TrackItemsMixin } from './mixins/track-items';
|
|
4
|
+
import { default as TracksMixin } from './mixins/tracks';
|
|
5
|
+
import { default as TransitionsMixin } from './mixins/transitions';
|
|
6
|
+
import { ITimelineScaleState, ITrack, ITrackItem, ITransition, IStateManager, IUpdateStateOptions, IItem, CanvasSpacing } from '@cliquify.me/types';
|
|
7
|
+
|
|
8
|
+
interface Bounding {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
}
|
|
12
|
+
export interface TimelineOptions extends CanvasOptions {
|
|
13
|
+
bounding?: {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
};
|
|
17
|
+
onScroll?: OnScroll;
|
|
18
|
+
onResizeCanvas?: OnResizeCanvas;
|
|
19
|
+
tScale?: number;
|
|
20
|
+
scale: ITimelineScaleState;
|
|
21
|
+
state?: IStateManager;
|
|
22
|
+
acceptsMap?: Record<string, string[]>;
|
|
23
|
+
sizesMap?: Record<string, number>;
|
|
24
|
+
spacing?: CanvasSpacing;
|
|
25
|
+
}
|
|
26
|
+
type OnScroll = (v: {
|
|
27
|
+
scrollTop: number;
|
|
28
|
+
scrollLeft: number;
|
|
29
|
+
}) => void;
|
|
30
|
+
type OnResizeCanvas = (v: {
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
}) => void;
|
|
34
|
+
interface Timeline extends Canvas, CanvasMixin, TrackItemsMixin, TracksMixin, TransitionsMixin {
|
|
35
|
+
}
|
|
36
|
+
declare class Timeline extends Canvas {
|
|
37
|
+
static registerItems(classes: Record<any, any>): void;
|
|
38
|
+
acceptsMap: Record<string, string[]>;
|
|
39
|
+
sizesMap: Record<string, number>;
|
|
40
|
+
tracks: ITrack[];
|
|
41
|
+
trackItemsMap: Record<string, ITrackItem>;
|
|
42
|
+
trackItemIds: string[];
|
|
43
|
+
transitionIds: string[];
|
|
44
|
+
transitionsMap: Record<string, ITransition>;
|
|
45
|
+
trackItemDetailsMap: Record<string, IItem>;
|
|
46
|
+
scale: ITimelineScaleState;
|
|
47
|
+
duration: number;
|
|
48
|
+
bounding: Bounding;
|
|
49
|
+
onScroll?: OnScroll;
|
|
50
|
+
onResizeCanvas?: OnResizeCanvas;
|
|
51
|
+
tScale: number;
|
|
52
|
+
state: IStateManager;
|
|
53
|
+
activeIds: string[];
|
|
54
|
+
spacing: CanvasSpacing;
|
|
55
|
+
guideLineColor: string;
|
|
56
|
+
transitionGroups: (ITrackItem | ITransition)[][];
|
|
57
|
+
constructor(canvasEl: HTMLCanvasElement, options: Partial<TimelineOptions> & {
|
|
58
|
+
scale: ITimelineScaleState;
|
|
59
|
+
duration: number;
|
|
60
|
+
guideLineColor?: string;
|
|
61
|
+
});
|
|
62
|
+
private initializeCanvasDefaults;
|
|
63
|
+
__onMouseDown(e: TPointerEvent): void;
|
|
64
|
+
initEventListeners(): void;
|
|
65
|
+
setActiveIds(activeIds: string[]): void;
|
|
66
|
+
updateState(dataHistory?: IUpdateStateOptions): void;
|
|
67
|
+
private getUpdatedState;
|
|
68
|
+
getDurationBasedOnTrackItemsPosition(): number;
|
|
69
|
+
notify(dataHistory?: IUpdateStateOptions): void;
|
|
70
|
+
getState(): {
|
|
71
|
+
tracks: ITrack[];
|
|
72
|
+
trackItemIds: string[];
|
|
73
|
+
trackItemsMap: Record<string, ITrackItem>;
|
|
74
|
+
transitionIds: string[];
|
|
75
|
+
transitionsMap: Record<string, ITransition>;
|
|
76
|
+
trackItemDetailsMap: Record<string, IItem>;
|
|
77
|
+
scale: ITimelineScaleState;
|
|
78
|
+
duration: number;
|
|
79
|
+
};
|
|
80
|
+
purge(): void;
|
|
81
|
+
scrollTo({ scrollLeft, scrollTop }: {
|
|
82
|
+
scrollLeft?: number;
|
|
83
|
+
scrollTop?: number;
|
|
84
|
+
}): void;
|
|
85
|
+
setBounding(bounding: Bounding): void;
|
|
86
|
+
calcBounding(): void;
|
|
87
|
+
setViewportPos(posX: number, posY: number): void;
|
|
88
|
+
getViewportPos(posX: number, posY: number): {
|
|
89
|
+
x: number;
|
|
90
|
+
y: number;
|
|
91
|
+
};
|
|
92
|
+
setScale(scale: ITimelineScaleState): void;
|
|
93
|
+
}
|
|
94
|
+
export default Timeline;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type Constructor<T = object> = new (...args: any[]) => T;
|
|
2
|
+
/***
|
|
3
|
+
* https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern
|
|
4
|
+
*/
|
|
5
|
+
export declare function applyMixins<T extends Constructor, S extends Constructor>(derivedCtor: T, constructors: S[]): T & {
|
|
6
|
+
prototype: InstanceType<T & S>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ITrack } from '@cliquify.me/types';
|
|
2
|
+
|
|
3
|
+
export declare function findRelativePosition(arr: number[], referenceValue: number, targetValue: number): number | null;
|
|
4
|
+
export declare function createCombinedTracksArray(refTrack: ITrack, newTracks: (ITrack & {
|
|
5
|
+
tempIndex: number;
|
|
6
|
+
})[]): ITrack[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Canvas, FabricObject, TPointerEvent } from 'fabric';
|
|
2
|
+
import { CanvasSpacing } from '@cliquify.me/types';
|
|
3
|
+
|
|
4
|
+
export declare const clearPlaceholderObjects: (canvas: Canvas, placeholderMovingObjects: FabricObject[]) => void;
|
|
5
|
+
export declare const clearTrackHelperGuides: (allObjects: FabricObject[]) => void;
|
|
6
|
+
export declare const isHelperTrack: (obj: FabricObject | undefined) => boolean;
|
|
7
|
+
export declare const calcCanvasSpacing: (payload?: Partial<CanvasSpacing>) => CanvasSpacing;
|
|
8
|
+
export declare const isTouchEvent: (event: TPointerEvent) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function cloneDeep<T>(obj: T): T;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Transform, TransformActionHandler } from 'fabric';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Checks if transform is centered
|
|
5
|
+
* @param {Object} transform transform data
|
|
6
|
+
* @return {Boolean} true if transform is centered
|
|
7
|
+
*/
|
|
8
|
+
export declare function isTransformCentered(transform: Transform): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Wrap an action handler with saving/restoring object position on the transform.
|
|
11
|
+
* this is the code that permits to objects to keep their position while transforming.
|
|
12
|
+
* @param {Function} actionHandler the function to wrap
|
|
13
|
+
* @return {Function} a function with an action handler signature
|
|
14
|
+
*/
|
|
15
|
+
export declare function wrapWithFixedAnchor<T extends Transform>(actionHandler: TransformActionHandler<T>): TransformActionHandler<T>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ITrackItemsMap, ITransition, ITrackItem } from '@cliquify.me/types';
|
|
2
|
+
import { FabricObject, RectProps } from 'fabric';
|
|
3
|
+
|
|
4
|
+
export type GroupElement = ITrackItem | ITransition;
|
|
5
|
+
export declare const compareTransitionGroups: (a: GroupElement[], b: GroupElement[]) => boolean;
|
|
6
|
+
export declare const groupByTransition: (data: {
|
|
7
|
+
trackItemIds: string[];
|
|
8
|
+
transitionsMap: Record<string, ITransition>;
|
|
9
|
+
trackItemsMap: ITrackItemsMap;
|
|
10
|
+
}) => GroupElement[][];
|
|
11
|
+
export declare function getNextTransitionMappings(tracks: FabricObject[], trackItems: FabricObject[], currentTransitionsMap: Record<string, ITransition>, positionAfterTransform: Record<string, Pick<RectProps, "left" | "top">>): {
|
|
12
|
+
newTransitionIds: string[];
|
|
13
|
+
newTransitionsMap: Record<string, ITransition>;
|
|
14
|
+
};
|
|
15
|
+
export declare const getAdjustedTrackItemDimensions: (id: string, transitionGroup: GroupElement[]) => {
|
|
16
|
+
durationDiff: number;
|
|
17
|
+
offsetTransitions: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ITrackItemsMap, ITransition, ITrackItem } from '@cliquify.me/types';
|
|
2
|
+
import { default as Timeline } from '../timeline';
|
|
3
|
+
|
|
4
|
+
type GroupElement = ITrackItem | ITransition;
|
|
5
|
+
export declare const groupTrackItems: (data: {
|
|
6
|
+
trackItemIds: string[];
|
|
7
|
+
transitionsMap: Record<string, ITransition>;
|
|
8
|
+
trackItemsMap: ITrackItemsMap;
|
|
9
|
+
}) => GroupElement[][];
|
|
10
|
+
export declare const getPrevTransitionDuration: (timeline: Timeline, id: string) => number;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Canvas, FabricObject, TBBox } from 'fabric';
|
|
2
|
+
import { default as Timeline } from '../timeline';
|
|
3
|
+
|
|
4
|
+
export declare const clearAuxiliaryObjects: (canvas: Canvas, allObjects: FabricObject[]) => void;
|
|
5
|
+
interface LineGuide {
|
|
6
|
+
val: number;
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const getLineGuideStops: (skipShapes: FabricObject[], canvas: Canvas) => {
|
|
11
|
+
vertical: LineGuide[];
|
|
12
|
+
horizontal: LineGuide[];
|
|
13
|
+
};
|
|
14
|
+
export declare const getGuides: (lineGuideStops: {
|
|
15
|
+
vertical: LineGuide[];
|
|
16
|
+
horizontal: LineGuide[];
|
|
17
|
+
}, itemBounds: {
|
|
18
|
+
vertical: {
|
|
19
|
+
guide: number;
|
|
20
|
+
offset: number;
|
|
21
|
+
snap: string;
|
|
22
|
+
}[];
|
|
23
|
+
horizontal: {
|
|
24
|
+
guide: number;
|
|
25
|
+
offset: number;
|
|
26
|
+
snap: string;
|
|
27
|
+
}[];
|
|
28
|
+
}) => Guide[];
|
|
29
|
+
interface Guide {
|
|
30
|
+
lineGuide: number;
|
|
31
|
+
offset: number;
|
|
32
|
+
orientation: "V" | "H";
|
|
33
|
+
snap: string;
|
|
34
|
+
targetDim: {
|
|
35
|
+
start: number;
|
|
36
|
+
end: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare const drawGuides: (guides: Guide[], _: TBBox, canvas: Timeline) => void;
|
|
40
|
+
export declare const getObjectSnappingEdges: (target: FabricObject) => {
|
|
41
|
+
vertical: {
|
|
42
|
+
guide: number;
|
|
43
|
+
offset: number;
|
|
44
|
+
snap: string;
|
|
45
|
+
}[];
|
|
46
|
+
horizontal: {
|
|
47
|
+
guide: number;
|
|
48
|
+
offset: number;
|
|
49
|
+
snap: string;
|
|
50
|
+
}[];
|
|
51
|
+
};
|
|
52
|
+
export declare const getStopsForObject: (start: number, distance: number, drawStart: number, drawDistance: number) => {
|
|
53
|
+
val: number;
|
|
54
|
+
start: number;
|
|
55
|
+
end: number;
|
|
56
|
+
}[];
|
|
57
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateId(length?: number): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Audio, Caption, Image, Text, Video } from '../objects';
|
|
2
|
+
import { IAudio, IDisplay, ITextDetails, ITrackItem, ITrackItemAndDetails, ITrim, IVideo } from '@cliquify.me/types';
|
|
3
|
+
import { default as Template } from '../objects/template';
|
|
4
|
+
|
|
5
|
+
export declare const loadVideoObject: (item: IVideo, options: {
|
|
6
|
+
tScale: number;
|
|
7
|
+
sizesMap: Record<string, number>;
|
|
8
|
+
}) => Video;
|
|
9
|
+
export declare const loadTextObject: (item: {
|
|
10
|
+
display: IDisplay;
|
|
11
|
+
id: string;
|
|
12
|
+
details: ITextDetails;
|
|
13
|
+
}, options: {
|
|
14
|
+
tScale: number;
|
|
15
|
+
sizesMap: Record<string, number>;
|
|
16
|
+
}) => Text;
|
|
17
|
+
export declare const loadCaptionObject: (item: {
|
|
18
|
+
display: IDisplay;
|
|
19
|
+
id: string;
|
|
20
|
+
details: ITextDetails;
|
|
21
|
+
}, options: {
|
|
22
|
+
tScale: number;
|
|
23
|
+
sizesMap: Record<string, number>;
|
|
24
|
+
}) => Caption;
|
|
25
|
+
export declare const loadImageObject: (item: ITrackItem, options: {
|
|
26
|
+
tScale: number;
|
|
27
|
+
sizesMap: Record<string, number>;
|
|
28
|
+
}) => Image;
|
|
29
|
+
export declare const loadAudioObject: (item: IAudio, options: {
|
|
30
|
+
tScale: number;
|
|
31
|
+
sizesMap: Record<string, number>;
|
|
32
|
+
}) => Audio;
|
|
33
|
+
export declare const loadTemplateObject: (item: {
|
|
34
|
+
id: string;
|
|
35
|
+
display: IDisplay;
|
|
36
|
+
trim?: ITrim;
|
|
37
|
+
}, options: {
|
|
38
|
+
tScale: number;
|
|
39
|
+
}) => Template;
|
|
40
|
+
export declare const loadMediaObject: (item: ITrackItemAndDetails, options: {
|
|
41
|
+
tScale: number;
|
|
42
|
+
sizesMap: Record<string, number>;
|
|
43
|
+
}) => Image | Video | Audio | Text | Caption | Template | undefined;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FabricObject, Point } from 'fabric';
|
|
2
|
+
|
|
3
|
+
export declare const detectOverObject: (point: Point, objects: FabricObject[]) => {
|
|
4
|
+
isOverObject: boolean;
|
|
5
|
+
overObjects: FabricObject<Partial<import('fabric').FabricObjectProps>, import('fabric').SerializedObjectProps, import('fabric').ObjectEvents>[];
|
|
6
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TOriginX, TOriginY } from 'fabric';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolves origin value relative to center
|
|
5
|
+
* @private
|
|
6
|
+
* @param {TOriginX | TOriginY} originValue originX / originY
|
|
7
|
+
* @returns number
|
|
8
|
+
*/
|
|
9
|
+
export declare const resolveOrigin: (originValue: TOriginX | TOriginY | number) => number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ITrackItem } from '@cliquify.me/types';
|
|
2
|
+
|
|
3
|
+
export declare function timeMsToUnits(timeMs: number, zoom?: number, playbackRate?: number): number;
|
|
4
|
+
export declare function unitsToTimeMs(units: number, zoom?: number, playbackRate?: number): number;
|
|
5
|
+
export declare function calculateTimelineWidth(totalLengthMs: number, zoom?: number): number;
|
|
6
|
+
export declare const getDuration: (trackItems: Record<string, ITrackItem>) => number;
|
package/package.json
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cliquify.me/timeline",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.10",
|
|
4
4
|
"private": false,
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
7
7
|
],
|
|
8
|
-
"main": "
|
|
9
|
-
"module": "
|
|
10
|
-
"types": "
|
|
8
|
+
"main": "dist/index.umd.js",
|
|
9
|
+
"module": "dist/index.es.js",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.es.js",
|
|
14
|
+
"require": "./dist/index.umd.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
11
18
|
"devDependencies": {
|
|
12
19
|
"@types/lodash-es": "^4.17.12",
|
|
13
20
|
"@types/node": "^20.11.24",
|
|
@@ -27,7 +34,7 @@
|
|
|
27
34
|
"peerDependencies": {
|
|
28
35
|
"@types/lodash-es": "^4.17.12",
|
|
29
36
|
"@designcombo/events": "^1.0.2",
|
|
30
|
-
"@cliquify.me/types": "3.1.
|
|
37
|
+
"@cliquify.me/types": "3.1.10"
|
|
31
38
|
},
|
|
32
39
|
"scripts": {
|
|
33
40
|
"dev": "vite",
|
package/src/index.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export { drawVerticalLine } from "./controls/draw";
|
|
2
|
-
export * from "./objects";
|
|
3
|
-
export { default } from "./timeline";
|
|
4
|
-
export * from "./utils";
|
|
5
|
-
export * from "./constants";
|
|
6
|
-
export * from "./resize";
|
|
7
|
-
export * from "./global";
|
|
8
|
-
export * from "./timeline";
|
|
9
|
-
export {
|
|
10
|
-
FabricObject,
|
|
11
|
-
Control,
|
|
12
|
-
classRegistry,
|
|
13
|
-
Rect,
|
|
14
|
-
util,
|
|
15
|
-
controlsUtils,
|
|
16
|
-
Pattern
|
|
17
|
-
} from "fabric";
|
|
18
|
-
export type { TransformActionHandler } from "fabric";
|