@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.
Files changed (77) hide show
  1. package/dist/index-CXhwwSX--32kJEN73.cjs +14961 -0
  2. package/dist/index-CXhwwSX--32kJEN73.cjs.map +1 -0
  3. package/dist/index.js +7930 -22816
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +107 -30
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/{context → src/context}/timeline-context.d.ts +16 -1
  8. package/dist/src/context/timeline-context.d.ts.map +1 -0
  9. package/dist/{context → src/context}/undo-redo-context.d.ts +1 -0
  10. package/dist/src/context/undo-redo-context.d.ts.map +1 -0
  11. package/dist/{core → src/core}/addOns/animation.d.ts +1 -0
  12. package/dist/src/core/addOns/animation.d.ts.map +1 -0
  13. package/dist/{core → src/core}/addOns/frame-effect.d.ts +1 -0
  14. package/dist/src/core/addOns/frame-effect.d.ts.map +1 -0
  15. package/dist/{core → src/core}/addOns/text-effect.d.ts +1 -0
  16. package/dist/src/core/addOns/text-effect.d.ts.map +1 -0
  17. package/dist/{core → src/core}/editor/timeline.editor.d.ts +1 -0
  18. package/dist/src/core/editor/timeline.editor.d.ts.map +1 -0
  19. package/dist/{core → src/core}/elements/audio.element.d.ts +1 -0
  20. package/dist/src/core/elements/audio.element.d.ts.map +1 -0
  21. package/dist/{core → src/core}/elements/base.element.d.ts +1 -0
  22. package/dist/src/core/elements/base.element.d.ts.map +1 -0
  23. package/dist/{core → src/core}/elements/caption.element.d.ts +1 -0
  24. package/dist/src/core/elements/caption.element.d.ts.map +1 -0
  25. package/dist/{core → src/core}/elements/circle.element.d.ts +1 -0
  26. package/dist/src/core/elements/circle.element.d.ts.map +1 -0
  27. package/dist/{core → src/core}/elements/icon.element.d.ts +1 -0
  28. package/dist/src/core/elements/icon.element.d.ts.map +1 -0
  29. package/dist/{core → src/core}/elements/image.element.d.ts +1 -0
  30. package/dist/src/core/elements/image.element.d.ts.map +1 -0
  31. package/dist/{core → src/core}/elements/rect.element.d.ts +1 -0
  32. package/dist/src/core/elements/rect.element.d.ts.map +1 -0
  33. package/dist/{core → src/core}/elements/text.element.d.ts +1 -0
  34. package/dist/src/core/elements/text.element.d.ts.map +1 -0
  35. package/dist/{core → src/core}/elements/video.element.d.ts +1 -0
  36. package/dist/src/core/elements/video.element.d.ts.map +1 -0
  37. package/dist/{core → src/core}/track/track.d.ts +1 -0
  38. package/dist/src/core/track/track.d.ts.map +1 -0
  39. package/dist/{core → src/core}/track/track.friend.d.ts +1 -0
  40. package/dist/src/core/track/track.friend.d.ts.map +1 -0
  41. package/dist/{core → src/core}/visitor/element-adder.d.ts +1 -0
  42. package/dist/src/core/visitor/element-adder.d.ts.map +1 -0
  43. package/dist/{core → src/core}/visitor/element-cloner.d.ts +1 -0
  44. package/dist/src/core/visitor/element-cloner.d.ts.map +1 -0
  45. package/dist/{core → src/core}/visitor/element-deserializer.d.ts +1 -0
  46. package/dist/src/core/visitor/element-deserializer.d.ts.map +1 -0
  47. package/dist/{core → src/core}/visitor/element-remover.d.ts +1 -0
  48. package/dist/src/core/visitor/element-remover.d.ts.map +1 -0
  49. package/dist/{core → src/core}/visitor/element-serializer.d.ts +1 -0
  50. package/dist/src/core/visitor/element-serializer.d.ts.map +1 -0
  51. package/dist/{core → src/core}/visitor/element-splitter.d.ts +1 -0
  52. package/dist/src/core/visitor/element-splitter.d.ts.map +1 -0
  53. package/dist/{core → src/core}/visitor/element-updater.d.ts +1 -0
  54. package/dist/src/core/visitor/element-updater.d.ts.map +1 -0
  55. package/dist/{core → src/core}/visitor/element-validator.d.ts +1 -0
  56. package/dist/src/core/visitor/element-validator.d.ts.map +1 -0
  57. package/dist/{core → src/core}/visitor/element-visitor.d.ts +1 -0
  58. package/dist/src/core/visitor/element-visitor.d.ts.map +1 -0
  59. package/dist/{index.d.ts → src/index.d.ts} +1 -0
  60. package/dist/src/index.d.ts.map +1 -0
  61. package/dist/{services → src/services}/data.service.d.ts +1 -0
  62. package/dist/src/services/data.service.d.ts.map +1 -0
  63. package/dist/{types → src/types}/index.d.ts +1 -0
  64. package/dist/src/types/index.d.ts.map +1 -0
  65. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  66. package/dist/src/types.d.ts.map +1 -0
  67. package/dist/src/utils/analytics.d.ts +40 -0
  68. package/dist/src/utils/analytics.d.ts.map +1 -0
  69. package/dist/{utils → src/utils}/constants.d.ts +1 -0
  70. package/dist/src/utils/constants.d.ts.map +1 -0
  71. package/dist/{utils → src/utils}/register-editor.d.ts +1 -0
  72. package/dist/src/utils/register-editor.d.ts.map +1 -0
  73. package/dist/{utils → src/utils}/timeline.utils.d.ts +1 -0
  74. package/dist/src/utils/timeline.utils.d.ts.map +1 -0
  75. package/dist/src/utils/version.d.ts +21 -0
  76. package/dist/src/utils/version.d.ts.map +1 -0
  77. 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(name) {
592
- this.name = 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(name) {
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 = 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(name) {
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 = 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(name, type = "element", id) {
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 = 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 = version ?? ((prevTimelineData == null ? void 0 : prevTimelineData.version) || 0) + 1;
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(name, type = "element") {
2956
+ addTrack(name2, type = "element") {
2957
2957
  const prevTimelineData = this.getTimelineData();
2958
2958
  const id = `t-${generateShortUuid()}`;
2959
- const track = new Track(name, type, id);
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(name) {
2969
+ getTrackByName(name2) {
2970
2970
  const prevTimelineData = this.getTimelineData();
2971
- const track = prevTimelineData == null ? void 0 : prevTimelineData.tracks.find((t2) => t2.getName() === name);
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 version = timelineTrackData.version;
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: "phc_XaPky8YDbZjqm4GkCWBsVmICZTOTgjascrsftSOoJUJ",
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
  )