@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/build/clarity.visualize.js +31 -3
- package/build/clarity.visualize.min.js +1 -1
- package/build/clarity.visualize.module.js +31 -3
- package/package.json +2 -2
- package/src/clarity-app.js +235808 -0
- package/src/visualizer.ts +36 -4
- package/types/index.d.ts +2 -3
- package/types/visualize.d.ts +1 -0
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
|
-
|
|
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.
|
|
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
|
-
|
|
71
|
-
let entry = merged.events
|
|
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 };
|
package/types/visualize.d.ts
CHANGED
|
@@ -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;
|