@twick/timeline 0.14.13 → 0.14.15
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/index-CXhwwSX--32kJEN73.cjs +14961 -0
- package/dist/index-CXhwwSX--32kJEN73.cjs.map +1 -0
- package/dist/index.js +7930 -22816
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -30
- package/dist/index.mjs.map +1 -1
- package/dist/{context → src/context}/timeline-context.d.ts +16 -1
- package/dist/src/context/timeline-context.d.ts.map +1 -0
- package/dist/{context → src/context}/undo-redo-context.d.ts +1 -0
- package/dist/src/context/undo-redo-context.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/animation.d.ts +1 -0
- package/dist/src/core/addOns/animation.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/frame-effect.d.ts +1 -0
- package/dist/src/core/addOns/frame-effect.d.ts.map +1 -0
- package/dist/{core → src/core}/addOns/text-effect.d.ts +1 -0
- package/dist/src/core/addOns/text-effect.d.ts.map +1 -0
- package/dist/{core → src/core}/editor/timeline.editor.d.ts +1 -0
- package/dist/src/core/editor/timeline.editor.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/audio.element.d.ts +1 -0
- package/dist/src/core/elements/audio.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/base.element.d.ts +1 -0
- package/dist/src/core/elements/base.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/caption.element.d.ts +1 -0
- package/dist/src/core/elements/caption.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/circle.element.d.ts +1 -0
- package/dist/src/core/elements/circle.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/icon.element.d.ts +1 -0
- package/dist/src/core/elements/icon.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/image.element.d.ts +1 -0
- package/dist/src/core/elements/image.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/rect.element.d.ts +1 -0
- package/dist/src/core/elements/rect.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/text.element.d.ts +1 -0
- package/dist/src/core/elements/text.element.d.ts.map +1 -0
- package/dist/{core → src/core}/elements/video.element.d.ts +1 -0
- package/dist/src/core/elements/video.element.d.ts.map +1 -0
- package/dist/{core → src/core}/track/track.d.ts +1 -0
- package/dist/src/core/track/track.d.ts.map +1 -0
- package/dist/{core → src/core}/track/track.friend.d.ts +1 -0
- package/dist/src/core/track/track.friend.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-adder.d.ts +1 -0
- package/dist/src/core/visitor/element-adder.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-cloner.d.ts +1 -0
- package/dist/src/core/visitor/element-cloner.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-deserializer.d.ts +1 -0
- package/dist/src/core/visitor/element-deserializer.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-remover.d.ts +1 -0
- package/dist/src/core/visitor/element-remover.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-serializer.d.ts +1 -0
- package/dist/src/core/visitor/element-serializer.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-splitter.d.ts +1 -0
- package/dist/src/core/visitor/element-splitter.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-updater.d.ts +1 -0
- package/dist/src/core/visitor/element-updater.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-validator.d.ts +1 -0
- package/dist/src/core/visitor/element-validator.d.ts.map +1 -0
- package/dist/{core → src/core}/visitor/element-visitor.d.ts +1 -0
- package/dist/src/core/visitor/element-visitor.d.ts.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{services → src/services}/data.service.d.ts +1 -0
- package/dist/src/services/data.service.d.ts.map +1 -0
- package/dist/{types → src/types}/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/{types.d.ts → src/types.d.ts} +1 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/analytics.d.ts +40 -0
- package/dist/src/utils/analytics.d.ts.map +1 -0
- package/dist/{utils → src/utils}/constants.d.ts +1 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/{utils → src/utils}/register-editor.d.ts +1 -0
- package/dist/src/utils/register-editor.d.ts.map +1 -0
- package/dist/{utils → src/utils}/timeline.utils.d.ts +1 -0
- package/dist/src/utils/timeline.utils.d.ts.map +1 -0
- package/dist/src/utils/version.d.ts +21 -0
- package/dist/src/utils/version.d.ts.map +1 -0
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -588,8 +588,8 @@ class TrackElement {
|
|
|
588
588
|
this.trackId = trackId;
|
|
589
589
|
return this;
|
|
590
590
|
}
|
|
591
|
-
setName(
|
|
592
|
-
this.name =
|
|
591
|
+
setName(name2) {
|
|
592
|
+
this.name = name2;
|
|
593
593
|
return this;
|
|
594
594
|
}
|
|
595
595
|
setAnimation(animation) {
|
|
@@ -1237,7 +1237,7 @@ class RectElement extends TrackElement {
|
|
|
1237
1237
|
}
|
|
1238
1238
|
}
|
|
1239
1239
|
class ElementAnimation {
|
|
1240
|
-
constructor(
|
|
1240
|
+
constructor(name2) {
|
|
1241
1241
|
__publicField(this, "name");
|
|
1242
1242
|
__publicField(this, "interval");
|
|
1243
1243
|
__publicField(this, "duration");
|
|
@@ -1245,7 +1245,7 @@ class ElementAnimation {
|
|
|
1245
1245
|
__publicField(this, "animate");
|
|
1246
1246
|
__publicField(this, "mode");
|
|
1247
1247
|
__publicField(this, "direction");
|
|
1248
|
-
this.name =
|
|
1248
|
+
this.name = name2;
|
|
1249
1249
|
}
|
|
1250
1250
|
getName() {
|
|
1251
1251
|
return this.name;
|
|
@@ -1357,12 +1357,12 @@ class ElementFrameEffect {
|
|
|
1357
1357
|
}
|
|
1358
1358
|
}
|
|
1359
1359
|
class ElementTextEffect {
|
|
1360
|
-
constructor(
|
|
1360
|
+
constructor(name2) {
|
|
1361
1361
|
__publicField(this, "name");
|
|
1362
1362
|
__publicField(this, "duration");
|
|
1363
1363
|
__publicField(this, "delay");
|
|
1364
1364
|
__publicField(this, "bufferTime");
|
|
1365
|
-
this.name =
|
|
1365
|
+
this.name = name2;
|
|
1366
1366
|
}
|
|
1367
1367
|
getName() {
|
|
1368
1368
|
return this.name;
|
|
@@ -1873,14 +1873,14 @@ class Track {
|
|
|
1873
1873
|
* const trackWithId = new Track("Audio Track", "element", "video-track-1");
|
|
1874
1874
|
* ```
|
|
1875
1875
|
*/
|
|
1876
|
-
constructor(
|
|
1876
|
+
constructor(name2, type = "element", id) {
|
|
1877
1877
|
__publicField(this, "id");
|
|
1878
1878
|
__publicField(this, "name");
|
|
1879
1879
|
__publicField(this, "type");
|
|
1880
1880
|
__publicField(this, "props");
|
|
1881
1881
|
__publicField(this, "elements");
|
|
1882
1882
|
__publicField(this, "validator");
|
|
1883
|
-
this.name =
|
|
1883
|
+
this.name = name2;
|
|
1884
1884
|
this.id = id ?? `t-${generateShortUuid}`;
|
|
1885
1885
|
this.type = type;
|
|
1886
1886
|
this.props = {};
|
|
@@ -2928,12 +2928,12 @@ class TimelineEditor {
|
|
|
2928
2928
|
}
|
|
2929
2929
|
setTimelineData({
|
|
2930
2930
|
tracks,
|
|
2931
|
-
version,
|
|
2931
|
+
version: version2,
|
|
2932
2932
|
updatePlayerData
|
|
2933
2933
|
}) {
|
|
2934
2934
|
var _a, _b;
|
|
2935
2935
|
const prevTimelineData = this.getTimelineData();
|
|
2936
|
-
const updatedVersion =
|
|
2936
|
+
const updatedVersion = version2 ?? ((prevTimelineData == null ? void 0 : prevTimelineData.version) || 0) + 1;
|
|
2937
2937
|
const updatedTimelineData = {
|
|
2938
2938
|
tracks,
|
|
2939
2939
|
version: updatedVersion
|
|
@@ -2953,10 +2953,10 @@ class TimelineEditor {
|
|
|
2953
2953
|
}
|
|
2954
2954
|
return updatedTimelineData;
|
|
2955
2955
|
}
|
|
2956
|
-
addTrack(
|
|
2956
|
+
addTrack(name2, type = "element") {
|
|
2957
2957
|
const prevTimelineData = this.getTimelineData();
|
|
2958
2958
|
const id = `t-${generateShortUuid()}`;
|
|
2959
|
-
const track = new Track(
|
|
2959
|
+
const track = new Track(name2, type, id);
|
|
2960
2960
|
const updatedTimelines = [...(prevTimelineData == null ? void 0 : prevTimelineData.tracks) || [], track];
|
|
2961
2961
|
this.setTimelineData({ tracks: updatedTimelines, updatePlayerData: true });
|
|
2962
2962
|
return track;
|
|
@@ -2966,9 +2966,9 @@ class TimelineEditor {
|
|
|
2966
2966
|
const track = prevTimelineData == null ? void 0 : prevTimelineData.tracks.find((t2) => t2.getId() === id);
|
|
2967
2967
|
return track;
|
|
2968
2968
|
}
|
|
2969
|
-
getTrackByName(
|
|
2969
|
+
getTrackByName(name2) {
|
|
2970
2970
|
const prevTimelineData = this.getTimelineData();
|
|
2971
|
-
const track = prevTimelineData == null ? void 0 : prevTimelineData.tracks.find((t2) => t2.getName() ===
|
|
2971
|
+
const track = prevTimelineData == null ? void 0 : prevTimelineData.tracks.find((t2) => t2.getName() === name2);
|
|
2972
2972
|
return track;
|
|
2973
2973
|
}
|
|
2974
2974
|
getSubtiltesTrack() {
|
|
@@ -3126,10 +3126,10 @@ class TimelineEditor {
|
|
|
3126
3126
|
const tracks = timelineTrackData.tracks.map((t2) => t2.serialize());
|
|
3127
3127
|
this.totalDuration = getTotalDuration(tracks);
|
|
3128
3128
|
this.context.setTotalDuration(this.totalDuration);
|
|
3129
|
-
const
|
|
3129
|
+
const version2 = timelineTrackData.version;
|
|
3130
3130
|
this.context.setPresent({
|
|
3131
3131
|
tracks,
|
|
3132
|
-
version
|
|
3132
|
+
version: version2
|
|
3133
3133
|
});
|
|
3134
3134
|
}
|
|
3135
3135
|
/**
|
|
@@ -3199,17 +3199,17 @@ class TimelineEditor {
|
|
|
3199
3199
|
}
|
|
3200
3200
|
loadProject({
|
|
3201
3201
|
tracks,
|
|
3202
|
-
version
|
|
3202
|
+
version: version2
|
|
3203
3203
|
}) {
|
|
3204
3204
|
var _a;
|
|
3205
3205
|
this.pauseVideo();
|
|
3206
3206
|
this.context.handleResetHistory();
|
|
3207
3207
|
const timelineTracks = tracks.map((t2) => Track.fromJSON(t2));
|
|
3208
|
-
this.setTimelineData({ tracks: timelineTracks, version, updatePlayerData: true });
|
|
3208
|
+
this.setTimelineData({ tracks: timelineTracks, version: version2, updatePlayerData: true });
|
|
3209
3209
|
if ((_a = this.context) == null ? void 0 : _a.setTimelineAction) {
|
|
3210
3210
|
this.context.setTimelineAction(TIMELINE_ACTION.UPDATE_PLAYER_DATA, {
|
|
3211
3211
|
tracks,
|
|
3212
|
-
version,
|
|
3212
|
+
version: version2,
|
|
3213
3213
|
forceUpdate: true
|
|
3214
3214
|
});
|
|
3215
3215
|
}
|
|
@@ -7880,6 +7880,58 @@ var __POSTHOG_ERROR_MESSAGES = {
|
|
|
7880
7880
|
PostHogErrorBoundary.contextType = PostHogContext;
|
|
7881
7881
|
return PostHogErrorBoundary;
|
|
7882
7882
|
})(React.Component);
|
|
7883
|
+
const name = "@twick/timeline";
|
|
7884
|
+
const version = "0.14.15";
|
|
7885
|
+
const packageJson = {
|
|
7886
|
+
name,
|
|
7887
|
+
version
|
|
7888
|
+
};
|
|
7889
|
+
function getPackageVersion() {
|
|
7890
|
+
return packageJson.version;
|
|
7891
|
+
}
|
|
7892
|
+
function getPackageName() {
|
|
7893
|
+
return packageJson.name;
|
|
7894
|
+
}
|
|
7895
|
+
const __vite_import_meta_env__ = {};
|
|
7896
|
+
function isAnalyticsEnabled(config) {
|
|
7897
|
+
var _a;
|
|
7898
|
+
if (typeof window !== "undefined") {
|
|
7899
|
+
const envDisabled = window.__TWICK_ANALYTICS_DISABLED__ === true || (__vite_import_meta_env__ == null ? void 0 : __vite_import_meta_env__.VITE_TWICK_ANALYTICS_ENABLED) === "false" || typeof process !== "undefined" && ((_a = process.env) == null ? void 0 : _a.TWICK_ANALYTICS_ENABLED) === "false";
|
|
7900
|
+
if (envDisabled) return false;
|
|
7901
|
+
}
|
|
7902
|
+
if ((config == null ? void 0 : config.enabled) === false) return false;
|
|
7903
|
+
return true;
|
|
7904
|
+
}
|
|
7905
|
+
function getPostHogApiKey(config) {
|
|
7906
|
+
var _a;
|
|
7907
|
+
return (config == null ? void 0 : config.apiKey) || typeof window !== "undefined" && (__vite_import_meta_env__ == null ? void 0 : __vite_import_meta_env__.VITE_POSTHOG_API_KEY) || typeof process !== "undefined" && ((_a = process.env) == null ? void 0 : _a.POSTHOG_API_KEY) || "phc_v92Ybiir6eGbEOXmI60g7n0MhUZ1zSknfaf9a3wpAU0";
|
|
7908
|
+
}
|
|
7909
|
+
function getPostHogApiHost(config) {
|
|
7910
|
+
return (config == null ? void 0 : config.apiHost) || "https://us.i.posthog.com";
|
|
7911
|
+
}
|
|
7912
|
+
function trackEvent(posthog, eventName, properties, config) {
|
|
7913
|
+
if (!isAnalyticsEnabled(config)) {
|
|
7914
|
+
return;
|
|
7915
|
+
}
|
|
7916
|
+
try {
|
|
7917
|
+
const packageVersion = getPackageVersion();
|
|
7918
|
+
const packageName = getPackageName();
|
|
7919
|
+
posthog.capture(eventName, {
|
|
7920
|
+
...properties,
|
|
7921
|
+
packageName,
|
|
7922
|
+
packageVersion,
|
|
7923
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
7924
|
+
});
|
|
7925
|
+
} catch (error) {
|
|
7926
|
+
}
|
|
7927
|
+
}
|
|
7928
|
+
function getPostHogOptions(config, onLoaded) {
|
|
7929
|
+
return {
|
|
7930
|
+
api_host: getPostHogApiHost(config),
|
|
7931
|
+
disable_session_recording: (config == null ? void 0 : config.disableSessionRecording) ?? true,
|
|
7932
|
+
loaded: onLoaded
|
|
7933
|
+
};
|
|
7934
|
+
}
|
|
7883
7935
|
const TimelineContext = createContext(
|
|
7884
7936
|
void 0
|
|
7885
7937
|
);
|
|
@@ -7907,10 +7959,6 @@ const TimelineProviderInner = ({
|
|
|
7907
7959
|
const editor = useMemo(() => {
|
|
7908
7960
|
if (editorRegistry.has(contextId)) {
|
|
7909
7961
|
editorRegistry.delete(contextId);
|
|
7910
|
-
} else {
|
|
7911
|
-
pa.capture("timeline_editor_created", {
|
|
7912
|
-
contextId
|
|
7913
|
-
});
|
|
7914
7962
|
}
|
|
7915
7963
|
const newEditor = new TimelineEditor({
|
|
7916
7964
|
contextId,
|
|
@@ -7969,17 +8017,45 @@ const TimelineProvider = ({
|
|
|
7969
8017
|
resolution = { width: 720, height: 1280 },
|
|
7970
8018
|
initialData,
|
|
7971
8019
|
undoRedoPersistenceKey,
|
|
7972
|
-
maxHistorySize
|
|
8020
|
+
maxHistorySize,
|
|
8021
|
+
analytics
|
|
7973
8022
|
}) => {
|
|
8023
|
+
const analyticsEnabled = isAnalyticsEnabled(analytics);
|
|
8024
|
+
const apiKey = getPostHogApiKey(analytics);
|
|
8025
|
+
const onPostHogLoaded = (posthog) => {
|
|
8026
|
+
trackEvent(posthog, "timeline_editor_created", {
|
|
8027
|
+
contextId,
|
|
8028
|
+
url: typeof window !== "undefined" ? window.location.href : void 0,
|
|
8029
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
8030
|
+
});
|
|
8031
|
+
};
|
|
8032
|
+
const postHogOptions = getPostHogOptions(analytics, onPostHogLoaded);
|
|
8033
|
+
if (!analyticsEnabled || !apiKey) {
|
|
8034
|
+
return /* @__PURE__ */ jsx(
|
|
8035
|
+
UndoRedoProvider,
|
|
8036
|
+
{
|
|
8037
|
+
persistenceKey: undoRedoPersistenceKey,
|
|
8038
|
+
maxHistorySize,
|
|
8039
|
+
children: /* @__PURE__ */ jsx(
|
|
8040
|
+
TimelineProviderInner,
|
|
8041
|
+
{
|
|
8042
|
+
resolution,
|
|
8043
|
+
initialData,
|
|
8044
|
+
contextId,
|
|
8045
|
+
undoRedoPersistenceKey,
|
|
8046
|
+
maxHistorySize,
|
|
8047
|
+
analytics,
|
|
8048
|
+
children
|
|
8049
|
+
}
|
|
8050
|
+
)
|
|
8051
|
+
}
|
|
8052
|
+
);
|
|
8053
|
+
}
|
|
7974
8054
|
return /* @__PURE__ */ jsx(
|
|
7975
8055
|
PostHogProvider,
|
|
7976
8056
|
{
|
|
7977
|
-
apiKey
|
|
7978
|
-
options:
|
|
7979
|
-
api_host: "https://us.i.posthog.com",
|
|
7980
|
-
defaults: "2025-05-24",
|
|
7981
|
-
disable_session_recording: true
|
|
7982
|
-
},
|
|
8057
|
+
apiKey,
|
|
8058
|
+
options: postHogOptions,
|
|
7983
8059
|
children: /* @__PURE__ */ jsx(
|
|
7984
8060
|
UndoRedoProvider,
|
|
7985
8061
|
{
|
|
@@ -7993,6 +8069,7 @@ const TimelineProvider = ({
|
|
|
7993
8069
|
contextId,
|
|
7994
8070
|
undoRedoPersistenceKey,
|
|
7995
8071
|
maxHistorySize,
|
|
8072
|
+
analytics,
|
|
7996
8073
|
children
|
|
7997
8074
|
}
|
|
7998
8075
|
)
|