@ubio/webvision 2.0.0 → 2.1.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.
package/build/page.mjs CHANGED
@@ -224,25 +224,6 @@ function checkOccluded(element, gridSize = 8) {
224
224
  }
225
225
 
226
226
  // src/page/util.ts
227
- function findFrameTreeByRef(frameTrees, ref) {
228
- for (const frameTree of frameTrees) {
229
- if (ref >= frameTree.refRange[0] && ref <= frameTree.refRange[1]) {
230
- return frameTree;
231
- }
232
- }
233
- return null;
234
- }
235
- function findParentFrameTree(frameTrees, frameTree) {
236
- const { iframeRef } = frameTree;
237
- if (iframeRef == null) {
238
- return null;
239
- }
240
- return findFrameTreeByRef(frameTrees, iframeRef);
241
- }
242
- function checkFrameOmitted(frameTrees, frameTree) {
243
- const parentFrameTree = findParentFrameTree(frameTrees, frameTree);
244
- return parentFrameTree?.isOmitted ?? false;
245
- }
246
227
  function isContainerNode(vxNode) {
247
228
  const children = vxNode.children ?? [];
248
229
  const hasTextChildren = children.some((child) => !child.tagName);
@@ -688,131 +669,186 @@ function renderTagLine(vxNode, options) {
688
669
  return htmlStyle ? `<${components.join(" ")}>` : components.join("");
689
670
  }
690
671
 
691
- // src/page/view.ts
692
- var VxPageView = class {
693
- constructor(frameTrees) {
694
- this.frameTrees = frameTrees;
695
- this.vxTreeViewMap = /* @__PURE__ */ new Map();
696
- for (const frameTree of frameTrees) {
697
- const vxTreeView = new VxTreeView(this, frameTree);
698
- this.vxTreeViewMap.set(frameTree.frameId, vxTreeView);
699
- }
672
+ // src/page/snapshot.ts
673
+ var VX_DOM_SYMBOL = Symbol("vx:dom");
674
+ var VX_TREE_SYMBOL = Symbol("vx:tree");
675
+ function captureSnapshot(options = {}) {
676
+ const parser = new VxTreeParser(options);
677
+ const vxNodes = parser.getNodes();
678
+ const domMap = parser.getDomMap();
679
+ const vxTree = new VxTreeView(vxNodes);
680
+ globalThis[VX_DOM_SYMBOL] = domMap;
681
+ globalThis[VX_TREE_SYMBOL] = vxTree;
682
+ return {
683
+ nodes: vxNodes,
684
+ refRange: parser.getRefRange()
685
+ };
686
+ }
687
+ function getSnapshot() {
688
+ const vxTree = globalThis[VX_TREE_SYMBOL];
689
+ if (!vxTree) {
690
+ throw new Error("[VX] Snapshot not found");
700
691
  }
701
- get vxTrees() {
702
- return Array.from(this.vxTreeViewMap.values());
692
+ return vxTree;
693
+ }
694
+ function resolveDomNode(ref) {
695
+ const domMap = globalThis[VX_DOM_SYMBOL];
696
+ if (!domMap) {
697
+ return null;
703
698
  }
704
- findTreeByFrameId(frameId) {
705
- return this.vxTreeViewMap.get(frameId) ?? null;
699
+ return domMap.get(ref) ?? null;
700
+ }
701
+
702
+ // src/page/tree.ts
703
+ var VxTreeView = class {
704
+ constructor(nodes) {
705
+ this.nodes = nodes;
706
+ this.refMap = /* @__PURE__ */ new Map();
707
+ this.buildRefMap(nodes);
706
708
  }
707
- getTreeByFrameId(frameId) {
708
- const vxTreeView = this.vxTreeViewMap.get(frameId);
709
- if (vxTreeView == null) {
710
- throw new Error(`Frame tree not found for [frameId=${frameId}]`);
709
+ *traverse() {
710
+ for (const vxNode of this.nodes) {
711
+ yield* traverseVxNode(vxNode, 0);
711
712
  }
712
- return vxTreeView;
713
713
  }
714
- findTreeByRef(ref) {
715
- const frameTree = this.frameTrees.find(
716
- (tree) => ref >= tree.refRange[0] && ref <= tree.refRange[1]
717
- );
718
- if (!frameTree) {
719
- return null;
714
+ buildRefMap(nodes) {
715
+ for (const node of nodes) {
716
+ this.refMap.set(node.ref, node);
717
+ this.buildRefMap(node.children ?? []);
720
718
  }
721
- return this.vxTreeViewMap.get(frameTree.frameId) ?? null;
722
719
  }
723
- getTreeByRef(ref) {
724
- const vxTreeView = this.findTreeByRef(ref);
725
- if (vxTreeView == null) {
726
- throw new Error(`Frame tree not found for [ref=${ref}]`);
720
+ findNode(ref) {
721
+ return this.refMap.get(ref) ?? null;
722
+ }
723
+ render(options = {}) {
724
+ return this.nodes.map((node) => {
725
+ return renderVxNode(node, options);
726
+ }).join("\n");
727
+ }
728
+ highlight(options = {}) {
729
+ if (options.clearOverlay) {
730
+ clearOverlay();
731
+ }
732
+ const leafOnly = !options.includeAll;
733
+ const refs = this.collectRefs(leafOnly, options.filterRefs);
734
+ for (const ref of refs) {
735
+ const el = resolveDomNode(ref);
736
+ if (el instanceof Element) {
737
+ highlightEl(el);
738
+ }
727
739
  }
728
- return vxTreeView;
740
+ return refs;
729
741
  }
730
- renderAll(options) {
731
- return this.frameTrees.map((frameTree) => {
732
- return frameTree.nodes.map((node) => {
733
- return renderVxNode(node, options);
734
- }).join("\n");
735
- }).join("\n\n");
742
+ collectRefs(leafOnly = true, filterRefs) {
743
+ const refs = [];
744
+ for (const { vxNode } of this.traverse()) {
745
+ if (leafOnly && isContainerNode(vxNode)) {
746
+ continue;
747
+ }
748
+ if (filterRefs && !filterRefs.includes(vxNode.ref)) {
749
+ continue;
750
+ }
751
+ refs.push(vxNode.ref);
752
+ }
753
+ return refs;
736
754
  }
737
755
  };
738
- var VxTreeView = class {
739
- constructor(vxPage, vxTree) {
740
- this.vxPage = vxPage;
741
- this.vxTree = vxTree;
742
- this.refMap = /* @__PURE__ */ new Map();
743
- this.buildRefMap(vxTree.nodes);
756
+
757
+ // src/page/frame.ts
758
+ var VxPageView = class {
759
+ constructor(vxFrames) {
760
+ this.vxFrames = vxFrames;
761
+ this.vxFrameMap = /* @__PURE__ */ new Map();
762
+ this.vxTreeMap = /* @__PURE__ */ new Map();
763
+ for (const frame of vxFrames) {
764
+ this.vxFrameMap.set(frame.frameId, frame);
765
+ this.vxTreeMap.set(frame.frameId, new VxTreeView(frame.nodes));
766
+ }
744
767
  }
745
- get frameId() {
746
- return this.vxTree.frameId;
768
+ findFrameByFrameId(frameId) {
769
+ return this.vxFrameMap.get(frameId) ?? null;
747
770
  }
748
- get refRange() {
749
- return this.vxTree.refRange;
771
+ getFrameByFrameId(frameId) {
772
+ const vxFrame = this.vxFrameMap.get(frameId);
773
+ if (vxFrame == null) {
774
+ throw new Error(`[VX] Frame not found for [frameId=${frameId}]`);
775
+ }
776
+ return vxFrame;
750
777
  }
751
- findNode(ref) {
752
- return this.refMap.get(ref) ?? null;
778
+ findFrameByRef(ref) {
779
+ const vxFrame = this.vxFrames.find(
780
+ (frame) => ref >= frame.refRange[0] && ref <= frame.refRange[1]
781
+ );
782
+ if (!vxFrame) {
783
+ return null;
784
+ }
785
+ return this.vxFrameMap.get(vxFrame.frameId) ?? null;
753
786
  }
754
- *traverse() {
755
- for (const vxNode of this.vxTree.nodes) {
756
- yield* traverseVxNode(vxNode, 0);
787
+ getFrameByRef(ref) {
788
+ const vxFrame = this.findFrameByRef(ref);
789
+ if (vxFrame == null) {
790
+ throw new Error(`[VX] Frame not found for [ref=${ref}]`);
757
791
  }
792
+ return vxFrame;
758
793
  }
759
- findParentTree() {
760
- const { iframeRef } = this.vxTree;
794
+ findParentFrame(frameId) {
795
+ const frame = this.getFrameByFrameId(frameId);
796
+ const iframeRef = frame?.iframeRef;
761
797
  if (iframeRef == null) {
762
798
  return null;
763
799
  }
764
- return this.vxPage.findTreeByRef(iframeRef);
800
+ return this.findFrameByRef(iframeRef);
765
801
  }
766
- isFrameShown() {
767
- const parentTree = this.findParentTree();
768
- const { iframeRef } = this.vxTree;
769
- if (parentTree == null || iframeRef == null) {
770
- return true;
802
+ isFrameShown(frameId) {
803
+ const frame = this.getFrameByFrameId(frameId);
804
+ if (!frame) {
805
+ return false;
771
806
  }
772
- const existsInParent = !!parentTree.findNode(iframeRef);
773
- return existsInParent ? parentTree.isFrameShown() : false;
774
- }
775
- collectRefs(leafOnly = true) {
776
- const refs = [];
777
- for (const { vxNode } of this.traverse()) {
778
- if (leafOnly && isContainerNode(vxNode)) {
779
- continue;
780
- }
781
- refs.push(vxNode.ref);
807
+ const parentFrame = this.findParentFrame(frameId);
808
+ const { iframeRef } = frame;
809
+ if (parentFrame == null || iframeRef == null) {
810
+ return true;
782
811
  }
783
- return refs;
812
+ const vxTree = this.vxTreeMap.get(frameId);
813
+ const existsInParent = !!vxTree?.findNode(iframeRef);
814
+ return existsInParent ? this.isFrameShown(parentFrame.frameId) : false;
784
815
  }
785
- buildRefMap(nodes) {
786
- for (const node of nodes) {
787
- this.refMap.set(node.ref, node);
788
- this.buildRefMap(node.children ?? []);
789
- }
816
+ renderAll(options) {
817
+ return this.vxFrames.map((frame) => {
818
+ const vxTree = this.vxTreeMap.get(frame.frameId);
819
+ const rendered = vxTree?.render(options);
820
+ return [
821
+ `FRAME ${frame.frameId}`,
822
+ rendered
823
+ ].join("\n\n");
824
+ }).join("\n\n");
790
825
  }
791
826
  };
792
827
  export {
793
828
  Counter,
794
829
  INTERACTIVE_ROLES,
795
830
  INTERACTIVE_TAGS,
831
+ VX_DOM_SYMBOL,
796
832
  VX_IGNORE_SYMBOL,
797
833
  VX_IGNORE_TAGS,
798
834
  VX_LABEL_ATTRS,
799
835
  VX_NODE_SYMBOL,
800
836
  VX_SRC_ATTRS,
801
837
  VX_TAG_PREFERENCE,
838
+ VX_TREE_SYMBOL,
802
839
  VX_VALUE_ATTRS,
803
840
  VxPageView,
804
841
  VxTreeParser,
805
842
  VxTreeView,
806
- checkFrameOmitted,
843
+ captureSnapshot,
807
844
  checkOccluded,
808
845
  clearOverlay,
809
846
  containsSelector,
810
847
  escapeAttribute,
811
- findFrameTreeByRef,
812
- findParentFrameTree,
813
848
  fixZIndex,
814
849
  getNormalizedText,
815
850
  getOffsetTop,
851
+ getSnapshot,
816
852
  getViewportSize,
817
853
  hasVisibleArea,
818
854
  highlightEl,
@@ -827,6 +863,7 @@ export {
827
863
  normalizeText,
828
864
  probeViewport,
829
865
  renderVxNode,
866
+ resolveDomNode,
830
867
  showPoint,
831
868
  traverseVxNode,
832
869
  truncateAttrValue
@@ -0,0 +1,22 @@
1
+ import { VxNode } from './parser.js';
2
+ import { VxRenderOptions } from './render.js';
3
+ export interface VxFrame {
4
+ frameId: number;
5
+ iframeRef?: number;
6
+ refRange: [number, number];
7
+ nodes: VxNode[];
8
+ isOmitted?: boolean;
9
+ }
10
+ export declare class VxPageView<T extends VxFrame> {
11
+ readonly vxFrames: T[];
12
+ private vxFrameMap;
13
+ private vxTreeMap;
14
+ constructor(vxFrames: T[]);
15
+ findFrameByFrameId(frameId: number): T | null;
16
+ getFrameByFrameId(frameId: number): T;
17
+ findFrameByRef(ref: number): T | null;
18
+ getFrameByRef(ref: number): T;
19
+ findParentFrame(frameId: number): T | null;
20
+ isFrameShown(frameId: number): boolean;
21
+ renderAll(options: VxRenderOptions): string;
22
+ }
@@ -0,0 +1,69 @@
1
+ import { VxTreeView } from './tree.js';
2
+ export class VxPageView {
3
+ constructor(vxFrames) {
4
+ this.vxFrames = vxFrames;
5
+ this.vxFrameMap = new Map();
6
+ this.vxTreeMap = new Map();
7
+ for (const frame of vxFrames) {
8
+ this.vxFrameMap.set(frame.frameId, frame);
9
+ this.vxTreeMap.set(frame.frameId, new VxTreeView(frame.nodes));
10
+ }
11
+ }
12
+ findFrameByFrameId(frameId) {
13
+ return this.vxFrameMap.get(frameId) ?? null;
14
+ }
15
+ getFrameByFrameId(frameId) {
16
+ const vxFrame = this.vxFrameMap.get(frameId);
17
+ if (vxFrame == null) {
18
+ throw new Error(`[VX] Frame not found for [frameId=${frameId}]`);
19
+ }
20
+ return vxFrame;
21
+ }
22
+ findFrameByRef(ref) {
23
+ const vxFrame = this.vxFrames.find(frame => ref >= frame.refRange[0] && ref <= frame.refRange[1]);
24
+ if (!vxFrame) {
25
+ return null;
26
+ }
27
+ return this.vxFrameMap.get(vxFrame.frameId) ?? null;
28
+ }
29
+ getFrameByRef(ref) {
30
+ const vxFrame = this.findFrameByRef(ref);
31
+ if (vxFrame == null) {
32
+ throw new Error(`[VX] Frame not found for [ref=${ref}]`);
33
+ }
34
+ return vxFrame;
35
+ }
36
+ findParentFrame(frameId) {
37
+ const frame = this.getFrameByFrameId(frameId);
38
+ const iframeRef = frame?.iframeRef;
39
+ if (iframeRef == null) {
40
+ return null;
41
+ }
42
+ return this.findFrameByRef(iframeRef);
43
+ }
44
+ isFrameShown(frameId) {
45
+ const frame = this.getFrameByFrameId(frameId);
46
+ if (!frame) {
47
+ return false;
48
+ }
49
+ const parentFrame = this.findParentFrame(frameId);
50
+ const { iframeRef } = frame;
51
+ if (parentFrame == null || iframeRef == null) {
52
+ return true;
53
+ }
54
+ const vxTree = this.vxTreeMap.get(frameId);
55
+ const existsInParent = !!vxTree?.findNode(iframeRef);
56
+ return existsInParent ? this.isFrameShown(parentFrame.frameId) : false;
57
+ }
58
+ renderAll(options) {
59
+ return this.vxFrames.map(frame => {
60
+ const vxTree = this.vxTreeMap.get(frame.frameId);
61
+ const rendered = vxTree?.render(options);
62
+ return [
63
+ `FRAME ${frame.frameId}`,
64
+ rendered,
65
+ ].join('\n\n');
66
+ }).join('\n\n');
67
+ }
68
+ }
69
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/page/frame.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  export * from './counter.js';
2
2
  export * from './dom.js';
3
+ export * from './frame.js';
3
4
  export * from './overlay.js';
4
5
  export * from './parser.js';
5
6
  export * from './probe.js';
6
7
  export * from './render.js';
8
+ export * from './snapshot.js';
7
9
  export * from './traverse.js';
10
+ export * from './tree.js';
8
11
  export * from './util.js';
9
- export * from './view.js';
package/out/page/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  export * from './counter.js';
2
2
  export * from './dom.js';
3
+ export * from './frame.js';
3
4
  export * from './overlay.js';
4
5
  export * from './parser.js';
5
6
  export * from './probe.js';
6
7
  export * from './render.js';
8
+ export * from './snapshot.js';
7
9
  export * from './traverse.js';
10
+ export * from './tree.js';
8
11
  export * from './util.js';
9
- export * from './view.js';
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/page/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/page/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -6,13 +6,6 @@ export declare const VX_VALUE_ATTRS: string[];
6
6
  export declare const VX_SRC_ATTRS: string[];
7
7
  export declare const VX_TAG_PREFERENCE: string[];
8
8
  export type VxDomNode = Element | Text;
9
- export interface FrameVxTree {
10
- frameId: number;
11
- iframeRef?: number;
12
- refRange: [number, number];
13
- nodes: VxNode[];
14
- isOmitted?: boolean;
15
- }
16
9
  export interface VxNode {
17
10
  ref: number;
18
11
  tagName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/page/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/page/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAY,MAAM,UAAU,CAAC;AAC3L,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO;IACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAClC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAClC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO;IAChE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;IACrE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY;IACxD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC3C,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;CAC/B,CAAC;AAEF,MAAM,gBAAgB,GAAG,mDAAmD,CAAC;AAgC7E,MAAM,OAAO,YAAY;IASrB,YAAmB,UAAyB,EAAE;QAA3B,YAAO,GAAP,OAAO,CAAoB;QAHtC,kBAAa,GAAc,EAAE,CAAC;QAC9B,cAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;QAGxC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,eAAe,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEO,aAAa;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAE,CAAC;IAC3D,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,SAAS,CAAC,IAAU,EAAE,MAAqB;QAC/C,IAAK,IAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YACvB,0DAA0D;YAC1D,yEAAyE;YACzE,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;oBACvB,WAAW;oBACX,cAAc,EAAE,MAAM,EAAE,cAAc;oBACtC,iBAAiB,EAAE,MAAM,EAAE,iBAAiB;oBAC5C,UAAU,EAAE,MAAM,EAAE,UAAU;iBACjC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC9B,kBAAkB,CAAC,IAAmB,CAAC,CAAC;YAC5C,CAAC;YACD,SAAS,CAAC,IAAmB,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,EAAW;QAC5B,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAC7B,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;YACjC,EAAE,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC3C,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;iBAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;iBACvC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;YAClC,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;YAChC,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;SACvC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;aAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC5B,6FAA6F;QAC7F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YACjD,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,QAAQ,CAAC,IAAU,EAAE,IAAyB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAW;YACnB,GAAG,IAAI;YACP,GAAG;SACN,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAY,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;QACvC,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,cAAc,CAAC,MAAqB;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,6BAA6B;QAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,0DAA0D;QAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC9B,iCAAiC;QACjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,KAAa;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC;YACvB,GAAG,MAAM;YACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;SACjC,CAAC,CAAC;IACP,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,KAAa;QACtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC;gBAChC,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,MAAM,CAAC,QAAQ;aACrB,CAAC,CAAC,MAAM,CAAC;YACV,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC/B,GAAG,KAAK,CAAC,UAAU;gBACnB,GAAG,KAAK,CAAC,UAAU;gBACnB,GAAG,KAAK,CAAC,QAAQ;aACpB,CAAC,CAAC,MAAM,CAAC;YACV,OAAO,eAAe,GAAG,cAAc,CAAC;QAC5C,CAAC;QACD,OAAO,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC;IAC7E,CAAC;IAEO,aAAa,CAAC,CAAS,EAAE,CAAS;QACtC,OAAO;YACH,GAAG,CAAC;YACJ,GAAG,CAAC;YACJ,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE;YAChD,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE;YAChD,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE;SAC7C,CAAC;IACN,CAAC;IAEO,UAAU,CAAC,MAAc;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACrC,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;aACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,WAAW,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC;IACjD,CAAC;IAEO,UAAU,CAAC,EAAW;QAC1B,uDAAuD;QACvD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,iBAAiB,CAAC,EAAW;QACjC,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,CAAC;gBACR,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,iBAAiB,CAAC,EAAW;QACjC,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAChC,MAAM,KAAK,GAAI,EAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACR,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,EAAW;QAC/B,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAE,EAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,KAAK,EAAE,CAAC;gBACR,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CAEJ"}
@@ -1,6 +1,6 @@
1
1
  import { VxNode } from './parser.js';
2
2
  export interface VxRenderOptions {
3
- renderStyle?: 'html' | 'line';
3
+ renderStyle?: 'html' | 'text';
4
4
  renderTagNames?: boolean;
5
5
  renderIds?: boolean;
6
6
  renderClassNames?: boolean;
@@ -0,0 +1,10 @@
1
+ import { VxTreeOptions } from './parser.js';
2
+ import { VxTreeView } from './tree.js';
3
+ export declare const VX_DOM_SYMBOL: unique symbol;
4
+ export declare const VX_TREE_SYMBOL: unique symbol;
5
+ export declare function captureSnapshot(options?: VxTreeOptions): {
6
+ nodes: import("./parser.js").VxNode[];
7
+ refRange: [number, number];
8
+ };
9
+ export declare function getSnapshot(): VxTreeView;
10
+ export declare function resolveDomNode(ref: number): Node | null;
@@ -0,0 +1,31 @@
1
+ import { VxTreeParser } from './parser.js';
2
+ import { VxTreeView } from './tree.js';
3
+ export const VX_DOM_SYMBOL = Symbol('vx:dom');
4
+ export const VX_TREE_SYMBOL = Symbol('vx:tree');
5
+ export function captureSnapshot(options = {}) {
6
+ const parser = new VxTreeParser(options);
7
+ const vxNodes = parser.getNodes();
8
+ const domMap = parser.getDomMap();
9
+ const vxTree = new VxTreeView(vxNodes);
10
+ globalThis[VX_DOM_SYMBOL] = domMap;
11
+ globalThis[VX_TREE_SYMBOL] = vxTree;
12
+ return {
13
+ nodes: vxNodes,
14
+ refRange: parser.getRefRange(),
15
+ };
16
+ }
17
+ export function getSnapshot() {
18
+ const vxTree = globalThis[VX_TREE_SYMBOL];
19
+ if (!vxTree) {
20
+ throw new Error('[VX] Snapshot not found');
21
+ }
22
+ return vxTree;
23
+ }
24
+ export function resolveDomNode(ref) {
25
+ const domMap = globalThis[VX_DOM_SYMBOL];
26
+ if (!domMap) {
27
+ return null;
28
+ }
29
+ return domMap.get(ref) ?? null;
30
+ }
31
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/page/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,UAAyB,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,UAAkB,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;IAC3C,UAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;IAC7C,OAAO;QACH,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;KACjC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,MAAM,MAAM,GAAI,UAAkB,CAAC,cAAc,CAAe,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,MAAM,MAAM,GAAI,UAAkB,CAAC,aAAa,CAAsB,CAAC;IACvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { VxNode } from './parser.js';
2
+ import { VxRenderOptions } from './render.js';
3
+ export interface VxHighlightOptions {
4
+ highlight?: boolean;
5
+ clearOverlay?: boolean;
6
+ includeAll?: boolean;
7
+ filterRefs?: number[];
8
+ }
9
+ export declare class VxTreeView {
10
+ readonly nodes: VxNode[];
11
+ private refMap;
12
+ constructor(nodes: VxNode[]);
13
+ traverse(): IterableIterator<{
14
+ vxNode: VxNode;
15
+ depth: number;
16
+ }>;
17
+ private buildRefMap;
18
+ findNode(ref: number): VxNode | null;
19
+ render(options?: VxRenderOptions): string;
20
+ highlight(options?: VxHighlightOptions): number[];
21
+ collectRefs(leafOnly?: boolean, filterRefs?: number[]): number[];
22
+ }
@@ -0,0 +1,59 @@
1
+ import { clearOverlay, highlightEl } from './overlay.js';
2
+ import { renderVxNode } from './render.js';
3
+ import { resolveDomNode } from './snapshot.js';
4
+ import { traverseVxNode } from './traverse.js';
5
+ import { isContainerNode } from './util.js';
6
+ export class VxTreeView {
7
+ constructor(nodes) {
8
+ this.nodes = nodes;
9
+ this.refMap = new Map();
10
+ this.buildRefMap(nodes);
11
+ }
12
+ *traverse() {
13
+ for (const vxNode of this.nodes) {
14
+ yield* traverseVxNode(vxNode, 0);
15
+ }
16
+ }
17
+ buildRefMap(nodes) {
18
+ for (const node of nodes) {
19
+ this.refMap.set(node.ref, node);
20
+ this.buildRefMap(node.children ?? []);
21
+ }
22
+ }
23
+ findNode(ref) {
24
+ return this.refMap.get(ref) ?? null;
25
+ }
26
+ render(options = {}) {
27
+ return this.nodes.map(node => {
28
+ return renderVxNode(node, options);
29
+ }).join('\n');
30
+ }
31
+ highlight(options = {}) {
32
+ if (options.clearOverlay) {
33
+ clearOverlay();
34
+ }
35
+ const leafOnly = !options.includeAll;
36
+ const refs = this.collectRefs(leafOnly, options.filterRefs);
37
+ for (const ref of refs) {
38
+ const el = resolveDomNode(ref);
39
+ if (el instanceof Element) {
40
+ highlightEl(el);
41
+ }
42
+ }
43
+ return refs;
44
+ }
45
+ collectRefs(leafOnly = true, filterRefs) {
46
+ const refs = [];
47
+ for (const { vxNode } of this.traverse()) {
48
+ if (leafOnly && isContainerNode(vxNode)) {
49
+ continue;
50
+ }
51
+ if (filterRefs && !filterRefs.includes(vxNode.ref)) {
52
+ continue;
53
+ }
54
+ refs.push(vxNode.ref);
55
+ }
56
+ return refs;
57
+ }
58
+ }
59
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/page/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAS5C,MAAM,OAAO,UAAU;IAInB,YAAqB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;QAF5B,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAGvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,CAAC,QAAQ;QACL,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,KAAe;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,UAA2B,EAAE;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,UAA8B,EAAE;QACtC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,YAAY,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,YAAY,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAQ,GAAG,IAAI,EAAE,UAAqB;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,IAAI,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,SAAS;YACb,CAAC;YACD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ"}
@@ -1,6 +1,3 @@
1
- import { FrameVxTree, VxNode } from './parser.js';
2
- export declare function findFrameTreeByRef(frameTrees: FrameVxTree[], ref: number): FrameVxTree | null;
3
- export declare function findParentFrameTree(frameTrees: FrameVxTree[], frameTree: FrameVxTree): FrameVxTree | null;
4
- export declare function checkFrameOmitted(frameTrees: FrameVxTree[], frameTree: FrameVxTree): boolean;
1
+ import { VxNode } from './parser.js';
5
2
  export declare function isContainerNode(vxNode: VxNode): boolean;
6
3
  export declare function isObjectEmpty(obj: Record<string, any>): boolean;
package/out/page/util.js CHANGED
@@ -1,22 +1,3 @@
1
- export function findFrameTreeByRef(frameTrees, ref) {
2
- for (const frameTree of frameTrees) {
3
- if (ref >= frameTree.refRange[0] && ref <= frameTree.refRange[1]) {
4
- return frameTree;
5
- }
6
- }
7
- return null;
8
- }
9
- export function findParentFrameTree(frameTrees, frameTree) {
10
- const { iframeRef } = frameTree;
11
- if (iframeRef == null) {
12
- return null;
13
- }
14
- return findFrameTreeByRef(frameTrees, iframeRef);
15
- }
16
- export function checkFrameOmitted(frameTrees, frameTree) {
17
- const parentFrameTree = findParentFrameTree(frameTrees, frameTree);
18
- return parentFrameTree?.isOmitted ?? false;
19
- }
20
1
  export function isContainerNode(vxNode) {
21
2
  const children = vxNode.children ?? [];
22
3
  const hasTextChildren = children.some(child => !child.tagName);
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/page/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,UAAyB,EAAE,GAAW;IACrE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAyB,EAAE,SAAsB;IACjF,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAChC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAyB,EAAE,SAAsB;IAC/E,MAAM,eAAe,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO,eAAe,EAAE,SAAS,IAAI,KAAK,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAwB;IAClD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/page/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAwB;IAClD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubio/webvision",
3
- "version": "2.0.0",
3
+ "version": "2.1.1",
4
4
  "main": "out/main/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,30 +0,0 @@
1
- import { FrameVxTree, VxNode } from './parser.js';
2
- import { VxRenderOptions } from './render.js';
3
- export declare class VxPageView<T extends FrameVxTree> {
4
- readonly frameTrees: T[];
5
- private vxTreeViewMap;
6
- constructor(frameTrees: T[]);
7
- get vxTrees(): VxTreeView<T>[];
8
- findTreeByFrameId(frameId: number): VxTreeView<T> | null;
9
- getTreeByFrameId(frameId: number): VxTreeView<T> | null;
10
- findTreeByRef(ref: number): VxTreeView<T> | null;
11
- getTreeByRef(ref: number): VxTreeView<T>;
12
- renderAll(options: VxRenderOptions): string;
13
- }
14
- export declare class VxTreeView<T extends FrameVxTree> {
15
- readonly vxPage: VxPageView<T>;
16
- readonly vxTree: T;
17
- private refMap;
18
- constructor(vxPage: VxPageView<T>, vxTree: T);
19
- get frameId(): number;
20
- get refRange(): [number, number];
21
- findNode(ref: number): VxNode | null;
22
- traverse(): IterableIterator<{
23
- vxNode: VxNode;
24
- depth: number;
25
- }>;
26
- findParentTree(): VxTreeView<T> | null;
27
- isFrameShown(): boolean;
28
- collectRefs(leafOnly?: boolean): number[];
29
- private buildRefMap;
30
- }
package/out/page/view.js DELETED
@@ -1,103 +0,0 @@
1
- import { renderVxNode } from './render.js';
2
- import { traverseVxNode } from './traverse.js';
3
- import { isContainerNode } from './util.js';
4
- export class VxPageView {
5
- constructor(frameTrees) {
6
- this.frameTrees = frameTrees;
7
- this.vxTreeViewMap = new Map();
8
- for (const frameTree of frameTrees) {
9
- const vxTreeView = new VxTreeView(this, frameTree);
10
- this.vxTreeViewMap.set(frameTree.frameId, vxTreeView);
11
- }
12
- }
13
- get vxTrees() {
14
- return Array.from(this.vxTreeViewMap.values());
15
- }
16
- findTreeByFrameId(frameId) {
17
- return this.vxTreeViewMap.get(frameId) ?? null;
18
- }
19
- getTreeByFrameId(frameId) {
20
- const vxTreeView = this.vxTreeViewMap.get(frameId);
21
- if (vxTreeView == null) {
22
- throw new Error(`Frame tree not found for [frameId=${frameId}]`);
23
- }
24
- return vxTreeView;
25
- }
26
- findTreeByRef(ref) {
27
- const frameTree = this.frameTrees.find(tree => ref >= tree.refRange[0] && ref <= tree.refRange[1]);
28
- if (!frameTree) {
29
- return null;
30
- }
31
- return this.vxTreeViewMap.get(frameTree.frameId) ?? null;
32
- }
33
- getTreeByRef(ref) {
34
- const vxTreeView = this.findTreeByRef(ref);
35
- if (vxTreeView == null) {
36
- throw new Error(`Frame tree not found for [ref=${ref}]`);
37
- }
38
- return vxTreeView;
39
- }
40
- renderAll(options) {
41
- // TODO display frames
42
- return this.frameTrees.map(frameTree => {
43
- return frameTree.nodes.map(node => {
44
- return renderVxNode(node, options);
45
- }).join('\n');
46
- }).join('\n\n');
47
- }
48
- }
49
- export class VxTreeView {
50
- constructor(vxPage, vxTree) {
51
- this.vxPage = vxPage;
52
- this.vxTree = vxTree;
53
- this.refMap = new Map();
54
- this.buildRefMap(vxTree.nodes);
55
- }
56
- get frameId() {
57
- return this.vxTree.frameId;
58
- }
59
- get refRange() {
60
- return this.vxTree.refRange;
61
- }
62
- findNode(ref) {
63
- return this.refMap.get(ref) ?? null;
64
- }
65
- *traverse() {
66
- for (const vxNode of this.vxTree.nodes) {
67
- yield* traverseVxNode(vxNode, 0);
68
- }
69
- }
70
- findParentTree() {
71
- const { iframeRef } = this.vxTree;
72
- if (iframeRef == null) {
73
- return null;
74
- }
75
- return this.vxPage.findTreeByRef(iframeRef);
76
- }
77
- isFrameShown() {
78
- const parentTree = this.findParentTree();
79
- const { iframeRef } = this.vxTree;
80
- if (parentTree == null || iframeRef == null) {
81
- return true;
82
- }
83
- const existsInParent = !!parentTree.findNode(iframeRef);
84
- return existsInParent ? parentTree.isFrameShown() : false;
85
- }
86
- collectRefs(leafOnly = true) {
87
- const refs = [];
88
- for (const { vxNode } of this.traverse()) {
89
- if (leafOnly && isContainerNode(vxNode)) {
90
- continue;
91
- }
92
- refs.push(vxNode.ref);
93
- }
94
- return refs;
95
- }
96
- buildRefMap(nodes) {
97
- for (const node of nodes) {
98
- this.refMap.set(node.ref, node);
99
- this.buildRefMap(node.children ?? []);
100
- }
101
- }
102
- }
103
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/page/view.ts"],"names":[],"mappings":"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"}