@highlight-run/rrweb 1.2.0 → 2.0.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 (185) hide show
  1. package/dist/plugins/console-record.js +655 -0
  2. package/dist/plugins/console-record.min.js +1 -1
  3. package/dist/plugins/console-record.min.js.map +1 -1
  4. package/dist/plugins/console-replay.js +293 -0
  5. package/dist/plugins/console-replay.min.js +16 -0
  6. package/dist/plugins/console-replay.min.js.map +1 -0
  7. package/dist/plugins/sequential-id-record.js +33 -0
  8. package/dist/plugins/sequential-id-record.min.js +2 -0
  9. package/dist/plugins/sequential-id-record.min.js.map +1 -0
  10. package/dist/plugins/sequential-id-replay.js +37 -0
  11. package/dist/plugins/sequential-id-replay.min.js +2 -0
  12. package/dist/plugins/sequential-id-replay.min.js.map +1 -0
  13. package/dist/record/rrweb-record-pack.js +747 -0
  14. package/dist/record/rrweb-record-pack.min.js +16 -0
  15. package/dist/record/rrweb-record-pack.min.js.map +1 -0
  16. package/dist/record/rrweb-record.js +3318 -0
  17. package/dist/record/rrweb-record.min.js +16 -0
  18. package/dist/record/rrweb-record.min.js.map +1 -0
  19. package/dist/replay/rrweb-replay-unpack.js +4626 -0
  20. package/dist/replay/rrweb-replay-unpack.min.css +2 -0
  21. package/dist/replay/rrweb-replay-unpack.min.css.map +1 -0
  22. package/dist/replay/rrweb-replay-unpack.min.js +30 -0
  23. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -0
  24. package/dist/replay/rrweb-replay.js +4216 -0
  25. package/dist/replay/rrweb-replay.min.css +2 -0
  26. package/dist/replay/rrweb-replay.min.css.map +1 -0
  27. package/dist/replay/rrweb-replay.min.js +30 -0
  28. package/dist/replay/rrweb-replay.min.js.map +1 -0
  29. package/dist/rrweb-all.js +8708 -0
  30. package/dist/rrweb-all.min.css +2 -0
  31. package/dist/rrweb-all.min.css.map +1 -0
  32. package/dist/rrweb-all.min.js +30 -0
  33. package/dist/rrweb-all.min.js.map +1 -0
  34. package/dist/rrweb.js +7294 -0
  35. package/dist/rrweb.min.css +2 -0
  36. package/dist/rrweb.min.css.map +1 -0
  37. package/dist/rrweb.min.js +2 -2
  38. package/dist/rrweb.min.js.map +1 -1
  39. package/es/rrweb/ext/@xstate/fsm/es/index.js +17 -0
  40. package/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js +49 -0
  41. package/es/rrweb/ext/fflate/esm/browser.js +777 -0
  42. package/es/rrweb/ext/mitt/dist/mitt.es.js +63 -0
  43. package/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js +78 -0
  44. package/es/rrweb/packages/rrweb/src/entries/all.js +13 -0
  45. package/es/rrweb/packages/rrweb/src/index.js +12 -0
  46. package/es/rrweb/packages/rrweb/src/packer/base.js +3 -0
  47. package/es/rrweb/packages/rrweb/src/packer/pack.js +10 -0
  48. package/es/rrweb/packages/rrweb/src/packer/unpack.js +29 -0
  49. package/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js +179 -0
  50. package/es/rrweb/packages/rrweb/src/plugins/console/record/index.js +134 -0
  51. package/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js +141 -0
  52. package/es/rrweb/packages/rrweb/src/plugins/console/replay/index.js +111 -0
  53. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/record/index.js +23 -0
  54. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/replay/index.js +28 -0
  55. package/es/rrweb/packages/rrweb/src/record/iframe-manager.js +32 -0
  56. package/es/rrweb/packages/rrweb/src/record/index.js +381 -0
  57. package/es/rrweb/packages/rrweb/src/record/mutation.js +532 -0
  58. package/es/rrweb/packages/rrweb/src/record/observer.js +665 -0
  59. package/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js +78 -0
  60. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js +93 -0
  61. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js +30 -0
  62. package/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js +116 -0
  63. package/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js +78 -0
  64. package/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js +45 -0
  65. package/es/rrweb/packages/rrweb/src/replay/canvas/2d.js +25 -0
  66. package/es/rrweb/packages/rrweb/src/replay/canvas/index.js +35 -0
  67. package/es/rrweb/packages/rrweb/src/replay/canvas/webgl.js +124 -0
  68. package/es/rrweb/packages/rrweb/src/replay/index.js +1864 -0
  69. package/es/rrweb/packages/rrweb/src/replay/machine.js +321 -0
  70. package/es/rrweb/packages/rrweb/src/replay/smoothscroll.js +221 -0
  71. package/es/rrweb/packages/rrweb/src/replay/styles/inject-style.js +8 -0
  72. package/es/rrweb/packages/rrweb/src/replay/timer.js +96 -0
  73. package/es/rrweb/packages/rrweb/src/replay/virtual-styles.js +121 -0
  74. package/es/rrweb/packages/rrweb/src/types.js +75 -0
  75. package/es/rrweb/packages/rrweb/src/utils.js +509 -0
  76. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +1697 -0
  77. package/lib/plugins/console-record.js +650 -0
  78. package/lib/plugins/console-replay.js +288 -0
  79. package/lib/plugins/sequential-id-record.js +28 -0
  80. package/lib/plugins/sequential-id-replay.js +32 -0
  81. package/lib/record/rrweb-record-pack.js +742 -0
  82. package/lib/record/rrweb-record.js +3315 -0
  83. package/lib/replay/rrweb-replay-unpack.js +4621 -0
  84. package/lib/replay/rrweb-replay.js +4211 -0
  85. package/lib/rrweb-all.js +8703 -0
  86. package/lib/rrweb.js +7289 -0
  87. package/package.json +41 -43
  88. package/typings/entries/all.d.ts +6 -0
  89. package/{dist → typings}/entries/record-pack.d.ts +0 -0
  90. package/{dist → typings}/entries/replay-unpack.d.ts +0 -0
  91. package/{dist → typings}/index.d.ts +1 -2
  92. package/{dist → typings}/packer/base.d.ts +0 -0
  93. package/{dist → typings}/packer/index.d.ts +0 -0
  94. package/{dist → typings}/packer/pack.d.ts +0 -0
  95. package/{dist → typings}/packer/unpack.d.ts +0 -0
  96. package/{dist → typings}/plugins/console/record/error-stack-parser.d.ts +0 -0
  97. package/{dist → typings}/plugins/console/record/index.d.ts +3 -2
  98. package/{dist → typings}/plugins/console/record/stringify.d.ts +0 -0
  99. package/{dist → typings}/plugins/console/replay/index.d.ts +2 -2
  100. package/{dist → typings}/plugins/sequential-id/record/index.d.ts +0 -0
  101. package/{dist → typings}/plugins/sequential-id/replay/index.d.ts +0 -0
  102. package/{dist → typings}/record/iframe-manager.d.ts +1 -1
  103. package/{dist → typings}/record/index.d.ts +0 -0
  104. package/{dist → typings}/record/mutation.d.ts +5 -8
  105. package/typings/record/observer.d.ts +7 -0
  106. package/{dist → typings}/record/observers/canvas/2d.d.ts +0 -0
  107. package/{dist → typings}/record/observers/canvas/canvas-manager.d.ts +0 -0
  108. package/{dist → typings}/record/observers/canvas/canvas.d.ts +0 -0
  109. package/{dist → typings}/record/observers/canvas/serialize-args.d.ts +1 -1
  110. package/{dist → typings}/record/observers/canvas/webgl.d.ts +0 -0
  111. package/typings/record/observers/canvas/webgl2.d.ts +2 -0
  112. package/typings/record/shadow-dom-manager.d.ts +21 -0
  113. package/{dist → typings}/replay/canvas/2d.d.ts +0 -0
  114. package/{dist → typings}/replay/canvas/index.d.ts +0 -0
  115. package/{dist → typings}/replay/canvas/webgl.d.ts +0 -0
  116. package/{dist → typings}/replay/index.d.ts +1 -0
  117. package/{dist → typings}/replay/machine.d.ts +0 -0
  118. package/{dist → typings}/replay/smoothscroll.d.ts +0 -0
  119. package/{dist → typings}/replay/styles/inject-style.d.ts +0 -0
  120. package/{dist → typings}/replay/timer.d.ts +0 -0
  121. package/{dist → typings}/replay/virtual-styles.d.ts +1 -1
  122. package/{dist → typings}/rrdom/index.d.ts +0 -0
  123. package/{dist → typings}/rrdom/tree-node.d.ts +0 -0
  124. package/{dist → typings}/types.d.ts +7 -8
  125. package/{dist → typings}/utils.d.ts +3 -4
  126. package/CHANGELOG.md +0 -26
  127. package/README.md +0 -124
  128. package/README.zh_CN.md +0 -122
  129. package/dist/entries/all.d.ts +0 -4
  130. package/dist/index.css +0 -82
  131. package/dist/index.css.map +0 -1
  132. package/dist/index.js +0 -3
  133. package/dist/index.js.LICENSE.txt +0 -14
  134. package/dist/index.js.map +0 -1
  135. package/dist/plugins/entries/all.d.ts +0 -4
  136. package/dist/plugins/entries/record-pack.d.ts +0 -2
  137. package/dist/plugins/entries/replay-unpack.d.ts +0 -2
  138. package/dist/plugins/index.d.ts +0 -9
  139. package/dist/plugins/packer/base.d.ts +0 -7
  140. package/dist/plugins/packer/index.d.ts +0 -2
  141. package/dist/plugins/packer/pack.d.ts +0 -2
  142. package/dist/plugins/packer/unpack.d.ts +0 -2
  143. package/dist/plugins/plugins/console/record/error-stack-parser.d.ts +0 -37
  144. package/dist/plugins/plugins/console/record/index.d.ts +0 -41
  145. package/dist/plugins/plugins/console/record/stringify.d.ts +0 -2
  146. package/dist/plugins/plugins/console/replay/index.d.ts +0 -9
  147. package/dist/plugins/plugins/sequential-id/record/index.d.ts +0 -6
  148. package/dist/plugins/plugins/sequential-id/replay/index.d.ts +0 -7
  149. package/dist/plugins/record/iframe-manager.d.ts +0 -13
  150. package/dist/plugins/record/index.d.ts +0 -9
  151. package/dist/plugins/record/mutation.d.ts +0 -45
  152. package/dist/plugins/record/observer.d.ts +0 -11
  153. package/dist/plugins/record/observers/canvas/2d.d.ts +0 -2
  154. package/dist/plugins/record/observers/canvas/canvas-manager.d.ts +0 -32
  155. package/dist/plugins/record/observers/canvas/canvas.d.ts +0 -2
  156. package/dist/plugins/record/observers/canvas/serialize-args.d.ts +0 -6
  157. package/dist/plugins/record/observers/canvas/webgl.d.ts +0 -2
  158. package/dist/plugins/record/shadow-dom-manager.d.ts +0 -34
  159. package/dist/plugins/replay/canvas/2d.d.ts +0 -9
  160. package/dist/plugins/replay/canvas/index.d.ts +0 -9
  161. package/dist/plugins/replay/canvas/webgl.d.ts +0 -11
  162. package/dist/plugins/replay/index.d.ts +0 -82
  163. package/dist/plugins/replay/machine.d.ts +0 -85
  164. package/dist/plugins/replay/smoothscroll.d.ts +0 -1
  165. package/dist/plugins/replay/styles/inject-style.d.ts +0 -2
  166. package/dist/plugins/replay/timer.d.ts +0 -19
  167. package/dist/plugins/replay/virtual-styles.d.ts +0 -43
  168. package/dist/plugins/rrdom/index.d.ts +0 -1
  169. package/dist/plugins/rrdom/tree-node.d.ts +0 -20
  170. package/dist/plugins/snapshot/css.d.ts +0 -92
  171. package/dist/plugins/snapshot/index.d.ts +0 -5
  172. package/dist/plugins/snapshot/rebuild.d.ts +0 -19
  173. package/dist/plugins/snapshot/snapshot.d.ts +0 -49
  174. package/dist/plugins/snapshot/types.d.ts +0 -99
  175. package/dist/plugins/snapshot/utils.d.ts +0 -11
  176. package/dist/plugins/types.d.ts +0 -509
  177. package/dist/plugins/utils.d.ts +0 -71
  178. package/dist/record/observer.d.ts +0 -11
  179. package/dist/record/shadow-dom-manager.d.ts +0 -34
  180. package/dist/snapshot/css.d.ts +0 -92
  181. package/dist/snapshot/index.d.ts +0 -5
  182. package/dist/snapshot/rebuild.d.ts +0 -19
  183. package/dist/snapshot/snapshot.d.ts +0 -49
  184. package/dist/snapshot/types.d.ts +0 -99
  185. package/dist/snapshot/utils.d.ts +0 -11
@@ -0,0 +1,321 @@
1
+ import { __assign, __values } from '../../ext/tslib/tslib.es6.js';
2
+ import { interpret as v, createMachine as s, assign as o } from '../../../../ext/@xstate/fsm/es/index.js';
3
+ import { EventType, IncrementalSource, ReplayerEvents } from '../types.js';
4
+ import { addDelay } from './timer.js';
5
+
6
+ function discardPriorSnapshots(events, baselineTime) {
7
+ for (var idx = events.length - 1; idx >= 0; idx--) {
8
+ var event_1 = events[idx];
9
+ if (event_1.type === EventType.Meta) {
10
+ if (event_1.timestamp <= baselineTime) {
11
+ return events.slice(idx);
12
+ }
13
+ }
14
+ }
15
+ return events;
16
+ }
17
+ function createPlayerService(context, _a) {
18
+ var getCastFn = _a.getCastFn, applyEventsSynchronously = _a.applyEventsSynchronously, emitter = _a.emitter;
19
+ var playerMachine = s({
20
+ id: 'player',
21
+ context: context,
22
+ initial: 'paused',
23
+ states: {
24
+ playing: {
25
+ on: {
26
+ PAUSE: {
27
+ target: 'paused',
28
+ actions: ['pause'],
29
+ },
30
+ CAST_EVENT: {
31
+ target: 'playing',
32
+ actions: 'castEvent',
33
+ },
34
+ END: {
35
+ target: 'paused',
36
+ actions: ['resetLastPlayedEvent', 'pause'],
37
+ },
38
+ ADD_EVENT: {
39
+ target: 'playing',
40
+ actions: ['addEvent'],
41
+ },
42
+ REPLACE_EVENTS: {
43
+ target: 'playing',
44
+ actions: ['replaceEvents'],
45
+ },
46
+ },
47
+ },
48
+ paused: {
49
+ on: {
50
+ PLAY: {
51
+ target: 'playing',
52
+ actions: ['recordTimeOffset', 'play'],
53
+ },
54
+ CAST_EVENT: {
55
+ target: 'paused',
56
+ actions: 'castEvent',
57
+ },
58
+ TO_LIVE: {
59
+ target: 'live',
60
+ actions: ['startLive'],
61
+ },
62
+ ADD_EVENT: {
63
+ target: 'paused',
64
+ actions: ['addEvent'],
65
+ },
66
+ REPLACE_EVENTS: {
67
+ target: 'paused',
68
+ actions: ['replaceEvents'],
69
+ },
70
+ },
71
+ },
72
+ live: {
73
+ on: {
74
+ ADD_EVENT: {
75
+ target: 'live',
76
+ actions: ['addEvent'],
77
+ },
78
+ CAST_EVENT: {
79
+ target: 'live',
80
+ actions: ['castEvent'],
81
+ },
82
+ },
83
+ },
84
+ },
85
+ }, {
86
+ actions: {
87
+ castEvent: o({
88
+ lastPlayedEvent: function (ctx, event) {
89
+ if (event.type === 'CAST_EVENT') {
90
+ return event.payload.event;
91
+ }
92
+ return ctx.lastPlayedEvent;
93
+ },
94
+ }),
95
+ recordTimeOffset: o(function (ctx, event) {
96
+ var timeOffset = ctx.timeOffset;
97
+ if ('payload' in event && 'timeOffset' in event.payload) {
98
+ timeOffset = event.payload.timeOffset;
99
+ }
100
+ return __assign(__assign({}, ctx), { timeOffset: timeOffset, baselineTime: ctx.events[0].timestamp + timeOffset });
101
+ }),
102
+ play: function (ctx) {
103
+ var e_1, _a, e_2, _b;
104
+ var _c;
105
+ var timer = ctx.timer, events = ctx.events, baselineTime = ctx.baselineTime, lastPlayedEvent = ctx.lastPlayedEvent;
106
+ timer.clear();
107
+ try {
108
+ for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {
109
+ var event_2 = events_1_1.value;
110
+ addDelay(event_2, baselineTime);
111
+ }
112
+ }
113
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
114
+ finally {
115
+ try {
116
+ if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);
117
+ }
118
+ finally { if (e_1) throw e_1.error; }
119
+ }
120
+ var neededEvents = discardPriorSnapshots(events, baselineTime);
121
+ var lastPlayedTimestamp = lastPlayedEvent === null || lastPlayedEvent === void 0 ? void 0 : lastPlayedEvent.timestamp;
122
+ if ((lastPlayedEvent === null || lastPlayedEvent === void 0 ? void 0 : lastPlayedEvent.type) === EventType.IncrementalSnapshot &&
123
+ lastPlayedEvent.data.source === IncrementalSource.MouseMove) {
124
+ lastPlayedTimestamp =
125
+ lastPlayedEvent.timestamp +
126
+ ((_c = lastPlayedEvent.data.positions[0]) === null || _c === void 0 ? void 0 : _c.timeOffset);
127
+ }
128
+ if (baselineTime < (lastPlayedTimestamp || 0)) {
129
+ emitter.emit(ReplayerEvents.PlayBack);
130
+ }
131
+ var syncEvents = new Array();
132
+ var actions = new Array();
133
+ var _loop_1 = function (event_3) {
134
+ if (lastPlayedTimestamp &&
135
+ lastPlayedTimestamp < baselineTime &&
136
+ (event_3.timestamp <= lastPlayedTimestamp ||
137
+ event_3 === lastPlayedEvent)) {
138
+ return "continue";
139
+ }
140
+ if (event_3.timestamp < baselineTime) {
141
+ syncEvents.push(event_3);
142
+ }
143
+ else {
144
+ var castFn_1 = getCastFn(event_3, false);
145
+ actions.push({
146
+ doAction: function () {
147
+ castFn_1();
148
+ },
149
+ delay: event_3.delay,
150
+ });
151
+ }
152
+ };
153
+ try {
154
+ for (var neededEvents_1 = __values(neededEvents), neededEvents_1_1 = neededEvents_1.next(); !neededEvents_1_1.done; neededEvents_1_1 = neededEvents_1.next()) {
155
+ var event_3 = neededEvents_1_1.value;
156
+ _loop_1(event_3);
157
+ }
158
+ }
159
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
160
+ finally {
161
+ try {
162
+ if (neededEvents_1_1 && !neededEvents_1_1.done && (_b = neededEvents_1.return)) _b.call(neededEvents_1);
163
+ }
164
+ finally { if (e_2) throw e_2.error; }
165
+ }
166
+ applyEventsSynchronously(syncEvents);
167
+ emitter.emit(ReplayerEvents.Flush);
168
+ timer.addActions(actions);
169
+ timer.start();
170
+ },
171
+ pause: function (ctx) {
172
+ ctx.timer.clear();
173
+ },
174
+ resetLastPlayedEvent: o(function (ctx) {
175
+ return __assign(__assign({}, ctx), { lastPlayedEvent: null });
176
+ }),
177
+ startLive: o({
178
+ baselineTime: function (ctx, event) {
179
+ ctx.timer.toggleLiveMode(true);
180
+ ctx.timer.start();
181
+ if (event.type === 'TO_LIVE' && event.payload.baselineTime) {
182
+ return event.payload.baselineTime;
183
+ }
184
+ return Date.now();
185
+ },
186
+ }),
187
+ replaceEvents: o(function (ctx, machineEvent) {
188
+ var e_3, _a;
189
+ var curEvents = ctx.events, timer = ctx.timer, baselineTime = ctx.baselineTime;
190
+ if (machineEvent.type === 'REPLACE_EVENTS') {
191
+ var newEvents = machineEvent.payload.events;
192
+ curEvents.length = 0;
193
+ var actions = [];
194
+ var _loop_2 = function (event_4) {
195
+ addDelay(event_4, baselineTime);
196
+ curEvents.push(event_4);
197
+ if (event_4.timestamp >= timer.timeOffset + baselineTime) {
198
+ var castFn_2 = getCastFn(event_4, false);
199
+ actions.push({
200
+ doAction: function () {
201
+ castFn_2();
202
+ },
203
+ delay: event_4.delay,
204
+ });
205
+ }
206
+ };
207
+ try {
208
+ for (var newEvents_1 = __values(newEvents), newEvents_1_1 = newEvents_1.next(); !newEvents_1_1.done; newEvents_1_1 = newEvents_1.next()) {
209
+ var event_4 = newEvents_1_1.value;
210
+ _loop_2(event_4);
211
+ }
212
+ }
213
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
214
+ finally {
215
+ try {
216
+ if (newEvents_1_1 && !newEvents_1_1.done && (_a = newEvents_1.return)) _a.call(newEvents_1);
217
+ }
218
+ finally { if (e_3) throw e_3.error; }
219
+ }
220
+ if (timer.isActive()) {
221
+ timer.replaceActions(actions);
222
+ }
223
+ }
224
+ return __assign(__assign({}, ctx), { events: curEvents });
225
+ }),
226
+ addEvent: o(function (ctx, machineEvent) {
227
+ var baselineTime = ctx.baselineTime, timer = ctx.timer, events = ctx.events;
228
+ if (machineEvent.type === 'ADD_EVENT') {
229
+ var event_5 = machineEvent.payload.event;
230
+ addDelay(event_5, baselineTime);
231
+ var end = events.length - 1;
232
+ if (!events[end] || events[end].timestamp <= event_5.timestamp) {
233
+ events.push(event_5);
234
+ }
235
+ else {
236
+ var insertionIndex = -1;
237
+ var start = 0;
238
+ while (start <= end) {
239
+ var mid = Math.floor((start + end) / 2);
240
+ if (events[mid].timestamp <= event_5.timestamp) {
241
+ start = mid + 1;
242
+ }
243
+ else {
244
+ end = mid - 1;
245
+ }
246
+ }
247
+ if (insertionIndex === -1) {
248
+ insertionIndex = start;
249
+ }
250
+ events.splice(insertionIndex, 0, event_5);
251
+ }
252
+ var isSync = event_5.timestamp < baselineTime;
253
+ var castFn_3 = getCastFn(event_5, isSync);
254
+ if (isSync) {
255
+ castFn_3();
256
+ }
257
+ else if (timer.isActive()) {
258
+ timer.addAction({
259
+ doAction: function () {
260
+ castFn_3();
261
+ },
262
+ delay: event_5.delay,
263
+ });
264
+ }
265
+ }
266
+ return __assign(__assign({}, ctx), { events: events });
267
+ }),
268
+ },
269
+ });
270
+ return v(playerMachine);
271
+ }
272
+ function createSpeedService(context) {
273
+ var speedMachine = s({
274
+ id: 'speed',
275
+ context: context,
276
+ initial: 'normal',
277
+ states: {
278
+ normal: {
279
+ on: {
280
+ FAST_FORWARD: {
281
+ target: 'skipping',
282
+ actions: ['recordSpeed', 'setSpeed'],
283
+ },
284
+ SET_SPEED: {
285
+ target: 'normal',
286
+ actions: ['setSpeed'],
287
+ },
288
+ },
289
+ },
290
+ skipping: {
291
+ on: {
292
+ BACK_TO_NORMAL: {
293
+ target: 'normal',
294
+ actions: ['restoreSpeed'],
295
+ },
296
+ SET_SPEED: {
297
+ target: 'normal',
298
+ actions: ['setSpeed'],
299
+ },
300
+ },
301
+ },
302
+ },
303
+ }, {
304
+ actions: {
305
+ setSpeed: function (ctx, event) {
306
+ if ('payload' in event) {
307
+ ctx.timer.setSpeed(event.payload.speed);
308
+ }
309
+ },
310
+ recordSpeed: o({
311
+ normalSpeed: function (ctx) { return ctx.timer.speed; },
312
+ }),
313
+ restoreSpeed: function (ctx) {
314
+ ctx.timer.setSpeed(ctx.normalSpeed);
315
+ },
316
+ },
317
+ });
318
+ return v(speedMachine);
319
+ }
320
+
321
+ export { createPlayerService, createSpeedService, discardPriorSnapshots };
@@ -0,0 +1,221 @@
1
+ function polyfill(w, d) {
2
+ if (w === void 0) { w = window; }
3
+ if (d === void 0) { d = document; }
4
+ if ('scrollBehavior' in d.documentElement.style &&
5
+ w.__forceSmoothScrollPolyfill__ !== true) {
6
+ return;
7
+ }
8
+ var Element = w.HTMLElement || w.Element;
9
+ var SCROLL_TIME = 468;
10
+ var original = {
11
+ scroll: w.scroll || w.scrollTo,
12
+ scrollBy: w.scrollBy,
13
+ elementScroll: Element.prototype.scroll || scrollElement,
14
+ scrollIntoView: Element.prototype.scrollIntoView,
15
+ };
16
+ var now = w.performance && w.performance.now
17
+ ? w.performance.now.bind(w.performance)
18
+ : Date.now;
19
+ function isMicrosoftBrowser(userAgent) {
20
+ var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
21
+ return new RegExp(userAgentPatterns.join('|')).test(userAgent);
22
+ }
23
+ var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
24
+ function scrollElement(x, y) {
25
+ this.scrollLeft = x;
26
+ this.scrollTop = y;
27
+ }
28
+ function ease(k) {
29
+ return 0.5 * (1 - Math.cos(Math.PI * k));
30
+ }
31
+ function shouldBailOut(firstArg) {
32
+ if (firstArg === null ||
33
+ typeof firstArg !== 'object' ||
34
+ firstArg.behavior === undefined ||
35
+ firstArg.behavior === 'auto' ||
36
+ firstArg.behavior === 'instant') {
37
+ return true;
38
+ }
39
+ if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
40
+ return false;
41
+ }
42
+ throw new TypeError('behavior member of ScrollOptions ' +
43
+ firstArg.behavior +
44
+ ' is not a valid value for enumeration ScrollBehavior.');
45
+ }
46
+ function hasScrollableSpace(el, axis) {
47
+ if (axis === 'Y') {
48
+ return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
49
+ }
50
+ if (axis === 'X') {
51
+ return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
52
+ }
53
+ }
54
+ function canOverflow(el, axis) {
55
+ var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
56
+ return overflowValue === 'auto' || overflowValue === 'scroll';
57
+ }
58
+ function isScrollable(el) {
59
+ var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
60
+ var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
61
+ return isScrollableY || isScrollableX;
62
+ }
63
+ function findScrollableParent(el) {
64
+ while (el !== d.body && isScrollable(el) === false) {
65
+ el = el.parentNode || el.host;
66
+ }
67
+ return el;
68
+ }
69
+ function step(context) {
70
+ var time = now();
71
+ var value;
72
+ var currentX;
73
+ var currentY;
74
+ var elapsed = (time - context.startTime) / SCROLL_TIME;
75
+ elapsed = elapsed > 1 ? 1 : elapsed;
76
+ value = ease(elapsed);
77
+ currentX = context.startX + (context.x - context.startX) * value;
78
+ currentY = context.startY + (context.y - context.startY) * value;
79
+ context.method.call(context.scrollable, currentX, currentY);
80
+ if (currentX !== context.x || currentY !== context.y) {
81
+ w.requestAnimationFrame(step.bind(w, context));
82
+ }
83
+ }
84
+ function smoothScroll(el, x, y) {
85
+ var scrollable;
86
+ var startX;
87
+ var startY;
88
+ var method;
89
+ var startTime = now();
90
+ if (el === d.body) {
91
+ scrollable = w;
92
+ startX = w.scrollX || w.pageXOffset;
93
+ startY = w.scrollY || w.pageYOffset;
94
+ method = original.scroll;
95
+ }
96
+ else {
97
+ scrollable = el;
98
+ startX = el.scrollLeft;
99
+ startY = el.scrollTop;
100
+ method = scrollElement;
101
+ }
102
+ step({
103
+ scrollable: scrollable,
104
+ method: method,
105
+ startTime: startTime,
106
+ startX: startX,
107
+ startY: startY,
108
+ x: x,
109
+ y: y,
110
+ });
111
+ }
112
+ w.scroll = w.scrollTo = function () {
113
+ if (arguments[0] === undefined) {
114
+ return;
115
+ }
116
+ if (shouldBailOut(arguments[0]) === true) {
117
+ original.scroll.call(w, arguments[0].left !== undefined
118
+ ? arguments[0].left
119
+ : typeof arguments[0] !== 'object'
120
+ ? arguments[0]
121
+ : w.scrollX || w.pageXOffset, arguments[0].top !== undefined
122
+ ? arguments[0].top
123
+ : arguments[1] !== undefined
124
+ ? arguments[1]
125
+ : w.scrollY || w.pageYOffset);
126
+ return;
127
+ }
128
+ smoothScroll.call(w, d.body, arguments[0].left !== undefined
129
+ ? ~~arguments[0].left
130
+ : w.scrollX || w.pageXOffset, arguments[0].top !== undefined
131
+ ? ~~arguments[0].top
132
+ : w.scrollY || w.pageYOffset);
133
+ };
134
+ w.scrollBy = function () {
135
+ if (arguments[0] === undefined) {
136
+ return;
137
+ }
138
+ if (shouldBailOut(arguments[0])) {
139
+ original.scrollBy.call(w, arguments[0].left !== undefined
140
+ ? arguments[0].left
141
+ : typeof arguments[0] !== 'object'
142
+ ? arguments[0]
143
+ : 0, arguments[0].top !== undefined
144
+ ? arguments[0].top
145
+ : arguments[1] !== undefined
146
+ ? arguments[1]
147
+ : 0);
148
+ return;
149
+ }
150
+ smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset));
151
+ };
152
+ Element.prototype.scroll = Element.prototype.scrollTo = function () {
153
+ if (arguments[0] === undefined) {
154
+ return;
155
+ }
156
+ if (shouldBailOut(arguments[0]) === true) {
157
+ if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
158
+ throw new SyntaxError('Value could not be converted');
159
+ }
160
+ original.elementScroll.call(this, arguments[0].left !== undefined
161
+ ? ~~arguments[0].left
162
+ : typeof arguments[0] !== 'object'
163
+ ? ~~arguments[0]
164
+ : this.scrollLeft, arguments[0].top !== undefined
165
+ ? ~~arguments[0].top
166
+ : arguments[1] !== undefined
167
+ ? ~~arguments[1]
168
+ : this.scrollTop);
169
+ return;
170
+ }
171
+ var left = arguments[0].left;
172
+ var top = arguments[0].top;
173
+ smoothScroll.call(this, this, typeof left === 'undefined' ? this.scrollLeft : ~~left, typeof top === 'undefined' ? this.scrollTop : ~~top);
174
+ };
175
+ Element.prototype.scrollBy = function () {
176
+ if (arguments[0] === undefined) {
177
+ return;
178
+ }
179
+ if (shouldBailOut(arguments[0]) === true) {
180
+ original.elementScroll.call(this, arguments[0].left !== undefined
181
+ ? ~~arguments[0].left + this.scrollLeft
182
+ : ~~arguments[0] + this.scrollLeft, arguments[0].top !== undefined
183
+ ? ~~arguments[0].top + this.scrollTop
184
+ : ~~arguments[1] + this.scrollTop);
185
+ return;
186
+ }
187
+ this.scroll({
188
+ left: ~~arguments[0].left + this.scrollLeft,
189
+ top: ~~arguments[0].top + this.scrollTop,
190
+ behavior: arguments[0].behavior,
191
+ });
192
+ };
193
+ Element.prototype.scrollIntoView = function () {
194
+ if (shouldBailOut(arguments[0]) === true) {
195
+ original.scrollIntoView.call(this, arguments[0] === undefined ? true : arguments[0]);
196
+ return;
197
+ }
198
+ var scrollableParent = findScrollableParent(this);
199
+ var parentRects = scrollableParent.getBoundingClientRect();
200
+ var clientRects = this.getBoundingClientRect();
201
+ if (scrollableParent !== d.body) {
202
+ smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top);
203
+ if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
204
+ w.scrollBy({
205
+ left: parentRects.left,
206
+ top: parentRects.top,
207
+ behavior: 'smooth',
208
+ });
209
+ }
210
+ }
211
+ else {
212
+ w.scrollBy({
213
+ left: clientRects.left,
214
+ top: clientRects.top,
215
+ behavior: 'smooth',
216
+ });
217
+ }
218
+ };
219
+ }
220
+
221
+ export { polyfill };
@@ -0,0 +1,8 @@
1
+ var rules = function (blockClass) { return [
2
+ ".".concat(blockClass, " { background: currentColor }"),
3
+ 'noscript { display: none !important; }',
4
+ ".".concat(blockClass, " { background: currentColor; border-radius: 5px; }"),
5
+ ".".concat(blockClass, ":hover::after {content: 'Redacted'; color: white; background: black; text-align: center; width: 100%; display: block;}"),
6
+ ]; };
7
+
8
+ export default rules;
@@ -0,0 +1,96 @@
1
+ import { __spreadArray, __read } from '../../ext/tslib/tslib.es6.js';
2
+ import { EventType, IncrementalSource } from '../types.js';
3
+
4
+ var Timer = (function () {
5
+ function Timer(actions, speed) {
6
+ if (actions === void 0) { actions = []; }
7
+ this.timeOffset = 0;
8
+ this.raf = null;
9
+ this.actions = actions;
10
+ this.speed = speed;
11
+ }
12
+ Timer.prototype.addAction = function (action) {
13
+ var index = this.findActionIndex(action);
14
+ this.actions.splice(index, 0, action);
15
+ };
16
+ Timer.prototype.addActions = function (actions) {
17
+ this.actions = this.actions.concat(actions);
18
+ };
19
+ Timer.prototype.replaceActions = function (actions) {
20
+ var _a;
21
+ this.actions.length = 0;
22
+ (_a = this.actions).splice.apply(_a, __spreadArray([0, 0], __read(actions), false));
23
+ };
24
+ Timer.prototype.start = function () {
25
+ this.timeOffset = 0;
26
+ var lastTimestamp = performance.now();
27
+ var actions = this.actions;
28
+ var self = this;
29
+ function check() {
30
+ var time = performance.now();
31
+ self.timeOffset += (time - lastTimestamp) * self.speed;
32
+ lastTimestamp = time;
33
+ while (actions.length) {
34
+ var action = actions[0];
35
+ if (self.timeOffset >= action.delay) {
36
+ actions.shift();
37
+ action.doAction();
38
+ }
39
+ else {
40
+ break;
41
+ }
42
+ }
43
+ if (actions.length > 0 || self.liveMode) {
44
+ self.raf = requestAnimationFrame(check);
45
+ }
46
+ }
47
+ this.raf = requestAnimationFrame(check);
48
+ };
49
+ Timer.prototype.clear = function () {
50
+ if (this.raf) {
51
+ cancelAnimationFrame(this.raf);
52
+ this.raf = null;
53
+ }
54
+ this.actions.length = 0;
55
+ };
56
+ Timer.prototype.setSpeed = function (speed) {
57
+ this.speed = speed;
58
+ };
59
+ Timer.prototype.toggleLiveMode = function (mode) {
60
+ this.liveMode = mode;
61
+ };
62
+ Timer.prototype.isActive = function () {
63
+ return this.raf !== null;
64
+ };
65
+ Timer.prototype.findActionIndex = function (action) {
66
+ var start = 0;
67
+ var end = this.actions.length - 1;
68
+ while (start <= end) {
69
+ var mid = Math.floor((start + end) / 2);
70
+ if (this.actions[mid].delay < action.delay) {
71
+ start = mid + 1;
72
+ }
73
+ else if (this.actions[mid].delay > action.delay) {
74
+ end = mid - 1;
75
+ }
76
+ else {
77
+ return mid + 1;
78
+ }
79
+ }
80
+ return start;
81
+ };
82
+ return Timer;
83
+ }());
84
+ function addDelay(event, baselineTime) {
85
+ if (event.type === EventType.IncrementalSnapshot &&
86
+ event.data.source === IncrementalSource.MouseMove) {
87
+ var firstOffset = event.data.positions[0].timeOffset;
88
+ var firstTimestamp = event.timestamp + firstOffset;
89
+ event.delay = firstTimestamp - baselineTime;
90
+ return firstTimestamp - baselineTime;
91
+ }
92
+ event.delay = event.timestamp - baselineTime;
93
+ return event.delay;
94
+ }
95
+
96
+ export { Timer, addDelay };