@gemx-dev/clarity-visualize 0.8.68 → 0.8.70

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/src/visualizer.ts CHANGED
@@ -38,7 +38,7 @@ export class Visualizer implements VisualizerType {
38
38
  return this.layout?.get(hash);
39
39
  }
40
40
 
41
- private shortCircuitRendering = (strategy: ShortCircuitStrategy, domEvent: Layout.DomEvent, hash: string) => {
41
+ public shortCircuitRendering = (strategy: ShortCircuitStrategy, domEvent: Layout.DomEvent, hash: string) => {
42
42
  switch (strategy) {
43
43
  case ShortCircuitStrategy.HashFirstTimestamp:
44
44
  return this.layout.exists(hash);
@@ -64,11 +64,11 @@ export class Visualizer implements VisualizerType {
64
64
  if (decoded && decoded.length > 0 && target) {
65
65
  try {
66
66
  // Flatten the payload and parse all events out of them, sorted by time
67
- let merged = this.merge(decoded);
67
+ let merged = this.mergeForHtml(decoded);
68
68
  await this.setup(target, { version: decoded[0].envelope.version, dom: merged.dom, useproxy, portalCanvasId });
69
69
  // Render all mutations on top of the initial markup
70
- while (merged.events.length > 0) {
71
- let entry = merged.events.shift();
70
+ for (let i = 0; i < merged.events.length; i++) {
71
+ let entry = merged.events[i];
72
72
  switch (entry.event) {
73
73
  case Data.Event.StyleSheetAdoption:
74
74
  case Data.Event.StyleSheetUpdate:
@@ -154,6 +154,38 @@ export class Visualizer implements VisualizerType {
154
154
  return merged;
155
155
  }
156
156
 
157
+ public mergeForHtml = (decoded: DecodedData.DecodedPayload[]): MergedPayload => {
158
+ let merged: MergedPayload = { timestamp: null, envelope: null, dom: null, events: [] };
159
+
160
+ decoded = decoded.sort(this.sortPayloads);
161
+ this.enrich = this.enrich || new EnrichHelper();
162
+ helper.selector.config(this._excludeClassNames);
163
+ this.enrich.reset();
164
+
165
+ for (let payload of decoded) {
166
+ merged.timestamp = merged.timestamp ? merged.timestamp : payload.timestamp;
167
+ merged.envelope = payload.envelope;
168
+ const domEntries = payload[Constant.Dom];
169
+ if (Array.isArray(domEntries)) {
170
+ for (let entry of domEntries) {
171
+ let enriched = this.enrich.selectors(entry);
172
+ if (entry.event === Data.Event.Discover) {
173
+ merged.dom = enriched;
174
+ } else if (
175
+ entry.event === Data.Event.Mutation ||
176
+ entry.event === Data.Event.StyleSheetAdoption ||
177
+ entry.event === Data.Event.StyleSheetUpdate ||
178
+ entry.event === Data.Event.CustomElement
179
+ ) {
180
+ merged.events.push(entry);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ merged.events = merged.events.sort(this.sortEvents);
186
+ return merged;
187
+ }
188
+
157
189
  public setup = async (target: Window, options: Options): Promise<Visualizer> => {
158
190
  this.reset();
159
191
  if (options.excludeClassNames) {
package/types/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { MergedPayload, ResizeHandler, Visualize, Visualizer, ShortCircuitStrategy } from "./visualize";
1
+ import { MergedPayload, ResizeHandler, Visualize, Visualizer, ShortCircuitStrategy, Options, PlaybackState, LinkHandler, ErrorLogger, Activity, ScrollMapInfo } from "./visualize";
2
2
  import { Data, Diagnostic, Interaction, Layout } from "@gemx-dev/clarity-decode"
3
3
 
4
4
  /**
@@ -6,5 +6,4 @@ import { Data, Diagnostic, Interaction, Layout } from "@gemx-dev/clarity-decode"
6
6
  */
7
7
  declare const visualize: Visualize;
8
8
 
9
- export { visualize, Visualizer, Data, Diagnostic, Interaction, Layout, MergedPayload, ResizeHandler, ShortCircuitStrategy };
10
-
9
+ export { visualize, Visualizer, Data, Diagnostic, Interaction, Layout, MergedPayload, ResizeHandler, ShortCircuitStrategy, Options, PlaybackState, LinkHandler, ErrorLogger, Activity, ScrollMapInfo };
@@ -19,6 +19,7 @@ export interface Visualize {
19
19
 
20
20
  export class Visualizer {
21
21
  readonly state: PlaybackState;
22
+ renderTime: number;
22
23
  dom: (event: Layout.DomEvent) => Promise<void>;
23
24
  html: (decoded: Data.DecodedPayload[], target: Window, portalCanvasId?: string, hash?: string, useproxy?: LinkHandler, logerror?: ErrorLogger, shortCircuitStrategy?: ShortCircuitStrategy) => Promise<Visualizer>;
24
25
  clickmap: (activity?: Activity) => void;