@editframe/elements 0.19.4-beta.0 → 0.20.0-beta.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.
Files changed (96) hide show
  1. package/dist/elements/ContextProxiesController.d.ts +40 -0
  2. package/dist/elements/ContextProxiesController.js +69 -0
  3. package/dist/elements/EFCaptions.d.ts +45 -6
  4. package/dist/elements/EFCaptions.js +220 -26
  5. package/dist/elements/EFImage.js +4 -1
  6. package/dist/elements/EFMedia/AssetIdMediaEngine.d.ts +2 -1
  7. package/dist/elements/EFMedia/AssetIdMediaEngine.js +9 -0
  8. package/dist/elements/EFMedia/AssetMediaEngine.d.ts +1 -0
  9. package/dist/elements/EFMedia/AssetMediaEngine.js +11 -0
  10. package/dist/elements/EFMedia/BaseMediaEngine.d.ts +13 -1
  11. package/dist/elements/EFMedia/BaseMediaEngine.js +9 -0
  12. package/dist/elements/EFMedia/JitMediaEngine.d.ts +7 -1
  13. package/dist/elements/EFMedia/JitMediaEngine.js +24 -0
  14. package/dist/elements/EFMedia/shared/GlobalInputCache.d.ts +39 -0
  15. package/dist/elements/EFMedia/shared/GlobalInputCache.js +57 -0
  16. package/dist/elements/EFMedia/shared/ThumbnailExtractor.d.ts +27 -0
  17. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +106 -0
  18. package/dist/elements/EFMedia.js +25 -1
  19. package/dist/elements/EFSurface.browsertest.d.ts +0 -0
  20. package/dist/elements/EFSurface.d.ts +30 -0
  21. package/dist/elements/EFSurface.js +96 -0
  22. package/dist/elements/EFTemporal.js +7 -6
  23. package/dist/elements/EFThumbnailStrip.browsertest.d.ts +0 -0
  24. package/dist/elements/EFThumbnailStrip.d.ts +86 -0
  25. package/dist/elements/EFThumbnailStrip.js +490 -0
  26. package/dist/elements/EFThumbnailStrip.media-engine.browsertest.d.ts +0 -0
  27. package/dist/elements/EFTimegroup.d.ts +6 -1
  28. package/dist/elements/EFTimegroup.js +46 -10
  29. package/dist/elements/updateAnimations.browsertest.d.ts +13 -0
  30. package/dist/elements/updateAnimations.d.ts +5 -0
  31. package/dist/elements/updateAnimations.js +37 -13
  32. package/dist/getRenderInfo.js +1 -1
  33. package/dist/gui/ContextMixin.js +27 -14
  34. package/dist/gui/EFControls.browsertest.d.ts +0 -0
  35. package/dist/gui/EFControls.d.ts +38 -0
  36. package/dist/gui/EFControls.js +51 -0
  37. package/dist/gui/EFFilmstrip.d.ts +40 -1
  38. package/dist/gui/EFFilmstrip.js +240 -3
  39. package/dist/gui/EFPreview.js +2 -1
  40. package/dist/gui/EFScrubber.d.ts +6 -5
  41. package/dist/gui/EFScrubber.js +31 -21
  42. package/dist/gui/EFTimeDisplay.browsertest.d.ts +0 -0
  43. package/dist/gui/EFTimeDisplay.d.ts +2 -6
  44. package/dist/gui/EFTimeDisplay.js +13 -23
  45. package/dist/gui/TWMixin.js +1 -1
  46. package/dist/gui/currentTimeContext.d.ts +3 -0
  47. package/dist/gui/currentTimeContext.js +3 -0
  48. package/dist/gui/durationContext.d.ts +3 -0
  49. package/dist/gui/durationContext.js +3 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.js +4 -1
  52. package/dist/style.css +1 -1
  53. package/dist/transcoding/types/index.d.ts +11 -0
  54. package/dist/utils/LRUCache.d.ts +46 -0
  55. package/dist/utils/LRUCache.js +382 -1
  56. package/dist/utils/LRUCache.test.d.ts +1 -0
  57. package/package.json +2 -2
  58. package/src/elements/ContextProxiesController.ts +123 -0
  59. package/src/elements/EFCaptions.browsertest.ts +1820 -0
  60. package/src/elements/EFCaptions.ts +373 -36
  61. package/src/elements/EFImage.ts +4 -1
  62. package/src/elements/EFMedia/AssetIdMediaEngine.ts +30 -1
  63. package/src/elements/EFMedia/AssetMediaEngine.ts +33 -0
  64. package/src/elements/EFMedia/BaseMediaEngine.browsertest.ts +3 -8
  65. package/src/elements/EFMedia/BaseMediaEngine.ts +35 -0
  66. package/src/elements/EFMedia/JitMediaEngine.ts +48 -0
  67. package/src/elements/EFMedia/shared/GlobalInputCache.ts +77 -0
  68. package/src/elements/EFMedia/shared/ThumbnailExtractor.ts +227 -0
  69. package/src/elements/EFMedia.ts +38 -1
  70. package/src/elements/EFSurface.browsertest.ts +155 -0
  71. package/src/elements/EFSurface.ts +141 -0
  72. package/src/elements/EFTemporal.ts +14 -8
  73. package/src/elements/EFThumbnailStrip.browsertest.ts +591 -0
  74. package/src/elements/EFThumbnailStrip.media-engine.browsertest.ts +713 -0
  75. package/src/elements/EFThumbnailStrip.ts +905 -0
  76. package/src/elements/EFTimegroup.browsertest.ts +56 -7
  77. package/src/elements/EFTimegroup.ts +70 -11
  78. package/src/elements/updateAnimations.browsertest.ts +333 -11
  79. package/src/elements/updateAnimations.ts +68 -19
  80. package/src/gui/ContextMixin.browsertest.ts +0 -25
  81. package/src/gui/ContextMixin.ts +44 -20
  82. package/src/gui/EFControls.browsertest.ts +175 -0
  83. package/src/gui/EFControls.ts +84 -0
  84. package/src/gui/EFFilmstrip.ts +323 -4
  85. package/src/gui/EFPreview.ts +2 -1
  86. package/src/gui/EFScrubber.ts +29 -25
  87. package/src/gui/EFTimeDisplay.browsertest.ts +237 -0
  88. package/src/gui/EFTimeDisplay.ts +12 -40
  89. package/src/gui/currentTimeContext.ts +5 -0
  90. package/src/gui/durationContext.ts +3 -0
  91. package/src/transcoding/types/index.ts +13 -0
  92. package/src/utils/LRUCache.test.ts +272 -0
  93. package/src/utils/LRUCache.ts +543 -0
  94. package/types.json +1 -1
  95. package/dist/transcoding/cache/CacheManager.d.ts +0 -73
  96. package/src/transcoding/cache/CacheManager.ts +0 -208
@@ -1,73 +0,0 @@
1
- import { CacheStats, ManifestResponse, VideoMetadata } from '../types/index.js';
2
- export declare class CacheManager {
3
- private maxSize;
4
- private segmentCache;
5
- private metadataCache;
6
- private manifestCache;
7
- private initSegmentCache;
8
- private cacheAccessOrder;
9
- private cacheHits;
10
- private cacheMisses;
11
- private totalRequests;
12
- constructor(maxSize: number);
13
- /**
14
- * Cache a segment with LRU eviction
15
- */
16
- cacheSegment(cacheKey: string, buffer: ArrayBuffer): void;
17
- /**
18
- * Get a segment from cache
19
- */
20
- getSegment(cacheKey: string): ArrayBuffer | undefined;
21
- /**
22
- * Check if a segment exists in cache
23
- */
24
- hasSegment(cacheKey: string): boolean;
25
- /**
26
- * Cache metadata
27
- */
28
- cacheMetadata(url: string, metadata: VideoMetadata): void;
29
- /**
30
- * Get metadata from cache
31
- */
32
- getMetadata(url: string): VideoMetadata | undefined;
33
- /**
34
- * Cache manifest
35
- */
36
- cacheManifest(url: string, manifest: ManifestResponse): void;
37
- /**
38
- * Get manifest from cache
39
- */
40
- getManifest(url: string): ManifestResponse | undefined;
41
- /**
42
- * Cache init segment
43
- */
44
- cacheInitSegment(cacheKey: string, buffer: ArrayBuffer): void;
45
- /**
46
- * Get init segment from cache
47
- */
48
- getInitSegment(cacheKey: string): ArrayBuffer | undefined;
49
- /**
50
- * Get comprehensive cache statistics
51
- */
52
- getCacheStats(): CacheStats;
53
- /**
54
- * Clear all caches
55
- */
56
- clearAll(): void;
57
- /**
58
- * Get cache sizes for each cache type
59
- */
60
- getCacheSizes(): {
61
- segments: number;
62
- metadata: number;
63
- manifests: number;
64
- initSegments: number;
65
- };
66
- /**
67
- * Clear specific cache type
68
- */
69
- clearSegmentCache(): void;
70
- clearMetadataCache(): void;
71
- clearManifestCache(): void;
72
- clearInitSegmentCache(): void;
73
- }
@@ -1,208 +0,0 @@
1
- /**
2
- * Cache manager for handling multiple cache types with LRU eviction and statistics
3
- */
4
-
5
- import type {
6
- CacheStats,
7
- ManifestResponse,
8
- VideoMetadata,
9
- } from "../types/index.js";
10
-
11
- export class CacheManager {
12
- private segmentCache = new Map<string, ArrayBuffer>();
13
- private metadataCache = new Map<string, VideoMetadata>();
14
- private manifestCache = new Map<string, ManifestResponse>();
15
- private initSegmentCache = new Map<string, ArrayBuffer>();
16
- private cacheAccessOrder: string[] = [];
17
-
18
- // Cache performance tracking
19
- private cacheHits = 0;
20
- private cacheMisses = 0;
21
- private totalRequests = 0;
22
-
23
- constructor(private maxSize: number) {}
24
-
25
- /**
26
- * Cache a segment with LRU eviction
27
- */
28
- cacheSegment(cacheKey: string, buffer: ArrayBuffer): void {
29
- // Implement LRU eviction
30
- if (this.segmentCache.size >= this.maxSize) {
31
- const firstKey = this.segmentCache.keys().next().value;
32
- if (firstKey) {
33
- this.segmentCache.delete(firstKey);
34
- // Remove from access order tracking
35
- const index = this.cacheAccessOrder.indexOf(firstKey);
36
- if (index > -1) {
37
- this.cacheAccessOrder.splice(index, 1);
38
- }
39
- }
40
- }
41
-
42
- this.segmentCache.set(cacheKey, buffer);
43
-
44
- // Track access order for LRU analytics
45
- const existingIndex = this.cacheAccessOrder.indexOf(cacheKey);
46
- if (existingIndex > -1) {
47
- this.cacheAccessOrder.splice(existingIndex, 1);
48
- }
49
- this.cacheAccessOrder.push(cacheKey);
50
- }
51
-
52
- /**
53
- * Get a segment from cache
54
- */
55
- getSegment(cacheKey: string): ArrayBuffer | undefined {
56
- const cached = this.segmentCache.get(cacheKey);
57
- if (cached) {
58
- this.cacheHits++;
59
- // Update access order for LRU
60
- const index = this.cacheAccessOrder.indexOf(cacheKey);
61
- if (index > -1) {
62
- this.cacheAccessOrder.splice(index, 1);
63
- this.cacheAccessOrder.push(cacheKey);
64
- }
65
- return cached;
66
- }
67
- this.cacheMisses++;
68
- return undefined;
69
- }
70
-
71
- /**
72
- * Check if a segment exists in cache
73
- */
74
- hasSegment(cacheKey: string): boolean {
75
- return this.segmentCache.has(cacheKey);
76
- }
77
-
78
- /**
79
- * Cache metadata
80
- */
81
- cacheMetadata(url: string, metadata: VideoMetadata): void {
82
- this.metadataCache.set(url, metadata);
83
- }
84
-
85
- /**
86
- * Get metadata from cache
87
- */
88
- getMetadata(url: string): VideoMetadata | undefined {
89
- const cached = this.metadataCache.get(url);
90
- if (cached) {
91
- this.cacheHits++;
92
- return cached;
93
- }
94
- this.cacheMisses++;
95
- return undefined;
96
- }
97
-
98
- /**
99
- * Cache manifest
100
- */
101
- cacheManifest(url: string, manifest: ManifestResponse): void {
102
- this.manifestCache.set(url, manifest);
103
- }
104
-
105
- /**
106
- * Get manifest from cache
107
- */
108
- getManifest(url: string): ManifestResponse | undefined {
109
- const cached = this.manifestCache.get(url);
110
- if (cached) {
111
- this.cacheHits++;
112
- return cached;
113
- }
114
- this.cacheMisses++;
115
- return undefined;
116
- }
117
-
118
- /**
119
- * Cache init segment
120
- */
121
- cacheInitSegment(cacheKey: string, buffer: ArrayBuffer): void {
122
- this.initSegmentCache.set(cacheKey, buffer);
123
- }
124
-
125
- /**
126
- * Get init segment from cache
127
- */
128
- getInitSegment(cacheKey: string): ArrayBuffer | undefined {
129
- const cached = this.initSegmentCache.get(cacheKey);
130
- if (cached) {
131
- this.cacheHits++;
132
- return cached;
133
- }
134
- this.cacheMisses++;
135
- return undefined;
136
- }
137
-
138
- /**
139
- * Get comprehensive cache statistics
140
- */
141
- getCacheStats(): CacheStats {
142
- this.totalRequests = this.cacheHits + this.cacheMisses;
143
- const hitRate =
144
- this.totalRequests > 0 ? this.cacheHits / this.totalRequests : 0;
145
- const efficiency =
146
- this.segmentCache.size > 0 ? this.cacheHits / this.segmentCache.size : 0;
147
-
148
- return {
149
- size: this.segmentCache.size,
150
- maxSize: this.maxSize,
151
- hitRate: hitRate,
152
- efficiency: efficiency,
153
- totalRequests: this.totalRequests,
154
- recentKeys: this.cacheAccessOrder.slice(-5), // Last 5 accessed keys
155
- };
156
- }
157
-
158
- /**
159
- * Clear all caches
160
- */
161
- clearAll(): void {
162
- this.segmentCache.clear();
163
- this.metadataCache.clear();
164
- this.manifestCache.clear();
165
- this.initSegmentCache.clear();
166
- this.cacheAccessOrder = [];
167
- this.cacheHits = 0;
168
- this.cacheMisses = 0;
169
- this.totalRequests = 0;
170
- }
171
-
172
- /**
173
- * Get cache sizes for each cache type
174
- */
175
- getCacheSizes(): {
176
- segments: number;
177
- metadata: number;
178
- manifests: number;
179
- initSegments: number;
180
- } {
181
- return {
182
- segments: this.segmentCache.size,
183
- metadata: this.metadataCache.size,
184
- manifests: this.manifestCache.size,
185
- initSegments: this.initSegmentCache.size,
186
- };
187
- }
188
-
189
- /**
190
- * Clear specific cache type
191
- */
192
- clearSegmentCache(): void {
193
- this.segmentCache.clear();
194
- this.cacheAccessOrder = [];
195
- }
196
-
197
- clearMetadataCache(): void {
198
- this.metadataCache.clear();
199
- }
200
-
201
- clearManifestCache(): void {
202
- this.manifestCache.clear();
203
- }
204
-
205
- clearInitSegmentCache(): void {
206
- this.initSegmentCache.clear();
207
- }
208
- }