@panoramax/web-viewer 3.2.3-develop-83778bdd → 3.2.3-develop-64f445f0

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/docs/index.md CHANGED
@@ -83,6 +83,15 @@ Once ready, you can create for example a viewer. We use web components to do so,
83
83
 
84
84
  [Many options are available to configure it finely](./reference/components/core/Viewer.md).
85
85
 
86
+ You may also add some CSS to make sure your component has proper dimensions:
87
+
88
+ ```css
89
+ pnx-viewer {
90
+ width: 300px;
91
+ height: 250px;
92
+ }
93
+ ```
94
+
86
95
  Beyond classic viewer, other widgets are available and [can be tested online](https://viewer.geovisio.fr/).
87
96
 
88
97
  __Coverage map__
@@ -35,11 +35,14 @@
35
35
  ### new CoverageMap()
36
36
  Coverage Map is a basic map showing Panoramax coverage.
37
37
 
38
+ Make sure to set width/height through CSS for proper display.
39
+
38
40
  **Example**
39
41
  ```html
40
42
  <pnx-coverage-map
41
43
  endpoint="https://panoramax.openstreetmap.fr/"
42
44
  map='{"bounds": [[-73.9876, 40.7661], [-73.9397, 40.8002]]}'
45
+ style="width: 300px; height: 250px"
43
46
  />
44
47
  ```
45
48
  <a name="Panoramax.components.core.CoverageMap+properties"></a>
@@ -38,10 +38,13 @@
38
38
  Editor allows to focus on a single sequence, and preview what you edits would look like.
39
39
  It shows both picture and map.
40
40
 
41
+ Make sure to set width/height through CSS for proper display.
42
+
41
43
  **Example**
42
44
  ```html
43
45
  <pnx-editor
44
46
  endpoint="https://panoramax.openstreetmap.fr/"
47
+ style="width: 300px; height: 250px"
45
48
  />
46
49
  ```
47
50
  <a name="Panoramax.components.core.Editor+properties"></a>
@@ -56,16 +56,20 @@ This component has a [CorneredGrid](../layout/CorneredGrid.md/#Panoramax.compone
56
56
 
57
57
  If you need a viewer with map, checkout [Viewer component](Viewer.md/#Panoramax.components.core.Viewer).
58
58
 
59
+ Make sure to set width/height through CSS for proper display.
60
+
59
61
  **Example**
60
62
  ```html
61
63
  <!-- Basic example -->
62
64
  <pnx-photo-viewer
63
65
  endpoint="https://panoramax.openstreetmap.fr/"
66
+ style="width: 300px; height: 250px"
64
67
  />
65
68
 
66
69
  <!-- With slotted widgets -->
67
70
  <pnx-photo-viewer
68
71
  endpoint="https://panoramax.openstreetmap.fr/"
72
+ style="width: 300px; height: 250px"
69
73
  >
70
74
  <p slot="top-right">My custom text</p>
71
75
  </pnx-photo-viewer>
@@ -73,6 +77,7 @@ If you need a viewer with map, checkout [Viewer component](Viewer.md/#Panoramax.
73
77
  <!-- With only your custom widgets -->
74
78
  <pnx-photo-viewer
75
79
  endpoint="https://panoramax.openstreetmap.fr/"
80
+ style="width: 300px; height: 250px"
76
81
  widgets="false"
77
82
  >
78
83
  <p slot="top-right">My custom text</p>
@@ -61,16 +61,20 @@ This component has a [CorneredGrid](../layout/CorneredGrid.md/#Panoramax.compone
61
61
 
62
62
  If you need a viewer without map, checkout [Photo Viewer component](PhotoViewer.md/#Panoramax.components.core.PhotoViewer).
63
63
 
64
+ Make sure to set width/height through CSS for proper display.
65
+
64
66
  **Example**
65
67
  ```html
66
68
  <!-- Basic example -->
67
69
  <pnx-viewer
68
70
  endpoint="https://panoramax.openstreetmap.fr/"
71
+ style="width: 300px; height: 250px"
69
72
  />
70
73
 
71
74
  <!-- With slotted widgets -->
72
75
  <pnx-viewer
73
76
  endpoint="https://panoramax.openstreetmap.fr/"
77
+ style="width: 300px; height: 250px"
74
78
  >
75
79
  <p slot="top-right">My custom text</p>
76
80
  </pnx-viewer>
@@ -78,6 +82,7 @@ If you need a viewer without map, checkout [Photo Viewer component](PhotoViewer.
78
82
  <!-- With only your custom widgets -->
79
83
  <pnx-viewer
80
84
  endpoint="https://panoramax.openstreetmap.fr/"
85
+ style="width: 300px; height: 250px"
81
86
  widgets="false"
82
87
  >
83
88
  <p slot="top-right">My custom text</p>
@@ -86,6 +91,7 @@ If you need a viewer without map, checkout [Photo Viewer component](PhotoViewer.
86
91
  <!-- With map options -->
87
92
  <pnx-viewer
88
93
  endpoint="https://panoramax.openstreetmap.fr/"
94
+ style="width: 300px; height: 250px"
89
95
  map="{'maxZoom': 15, 'background': 'aerial', 'raster': '...'}"
90
96
  />
91
97
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panoramax/web-viewer",
3
- "version": "3.2.3-develop-83778bdd",
3
+ "version": "3.2.3-develop-64f445f0",
4
4
  "description": "Panoramax web viewer for geolocated pictures",
5
5
  "main": "build/index.js",
6
6
  "author": "Panoramax team",
@@ -8,6 +8,8 @@ import { default as InitParameters, alterMapState } from "../../utils/InitParame
8
8
 
9
9
  /**
10
10
  * Coverage Map is a basic map showing Panoramax coverage.
11
+ *
12
+ * Make sure to set width/height through CSS for proper display.
11
13
  * @class Panoramax.components.core.CoverageMap
12
14
  * @element pnx-coverage-map
13
15
  * @extends Panoramax.components.core.Basic
@@ -22,6 +24,7 @@ import { default as InitParameters, alterMapState } from "../../utils/InitParame
22
24
  * <pnx-coverage-map
23
25
  * endpoint="https://panoramax.openstreetmap.fr/"
24
26
  * map='{"bounds": [[-73.9876, 40.7661], [-73.9397, 40.8002]]}'
27
+ * style="width: 300px; height: 250px"
25
28
  * />
26
29
  * ```
27
30
  */
@@ -54,9 +57,6 @@ export default class CoverageMap extends Basic {
54
57
  this._initParams = new InitParameters(InitParameters.GetComponentProperties(CoverageMap, this));
55
58
  this._initMap();
56
59
  });
57
-
58
- // Events handlers
59
- this.addEventListener("select", this._onSelect.bind(this));
60
60
  }
61
61
 
62
62
  getClassName() {
@@ -103,13 +103,16 @@ export default class CoverageMap extends Basic {
103
103
  this.map = new MyMap(this, this._mapContainer, Object.assign({}, this._initParams.getMapInit(), { hash: true }));
104
104
  this.map.addControl(new NavigationControl({ showCompass: false }));
105
105
  this.loader.setAttribute("value", 70);
106
+
107
+ this.addEventListener("select", this._onSelect.bind(this));
108
+ this.map.on("picture-click", e => this.select(e.seqId, e.picId));
109
+ this.map.on("sequence-click", e => this.select(e.seqId));
110
+
106
111
  this.map.waitForEnoughMapLoaded().then(() => {
107
112
  alterMapState(this.map, this._initParams.getMapPostInit());
108
113
  this.map.reloadLayersStyles();
109
114
  this.loader.dismiss();
110
115
  });
111
- this.map.on("picture-click", e => this.select(e.seqId, e.picId));
112
- this.map.on("sequence-click", e => this.select(e.seqId));
113
116
  }
114
117
 
115
118
  /**
@@ -17,6 +17,8 @@ const LAYER_HEADING_ID = "sequence-headings";
17
17
  /**
18
18
  * Editor allows to focus on a single sequence, and preview what you edits would look like.
19
19
  * It shows both picture and map.
20
+ *
21
+ * Make sure to set width/height through CSS for proper display.
20
22
  * @class Panoramax.components.core.Editor
21
23
  * @element pnx-editor
22
24
  * @extends Panoramax.components.core.Basic
@@ -31,6 +33,7 @@ const LAYER_HEADING_ID = "sequence-headings";
31
33
  * ```html
32
34
  * <pnx-editor
33
35
  * endpoint="https://panoramax.openstreetmap.fr/"
36
+ * style="width: 300px; height: 250px"
34
37
  * />
35
38
  * ```
36
39
  */
@@ -20,6 +20,8 @@ const PSV_MOVE_DELTA = Math.PI / 6;
20
20
  * This component has a [CorneredGrid](#Panoramax.components.layout.CorneredGrid) layout, you can use directly any slot element to pass custom widgets.
21
21
  *
22
22
  * If you need a viewer with map, checkout [Viewer component](#Panoramax.components.core.Viewer).
23
+ *
24
+ * Make sure to set width/height through CSS for proper display.
23
25
  * @class Panoramax.components.core.PhotoViewer
24
26
  * @element pnx-photo-viewer
25
27
  * @extends Panoramax.components.core.Basic
@@ -43,11 +45,13 @@ const PSV_MOVE_DELTA = Math.PI / 6;
43
45
  * <!-- Basic example -->
44
46
  * <pnx-photo-viewer
45
47
  * endpoint="https://panoramax.openstreetmap.fr/"
48
+ * style="width: 300px; height: 250px"
46
49
  * />
47
50
  *
48
51
  * <!-- With slotted widgets -->
49
52
  * <pnx-photo-viewer
50
53
  * endpoint="https://panoramax.openstreetmap.fr/"
54
+ * style="width: 300px; height: 250px"
51
55
  * >
52
56
  * <p slot="top-right">My custom text</p>
53
57
  * </pnx-photo-viewer>
@@ -55,6 +59,7 @@ const PSV_MOVE_DELTA = Math.PI / 6;
55
59
  * <!-- With only your custom widgets -->
56
60
  * <pnx-photo-viewer
57
61
  * endpoint="https://panoramax.openstreetmap.fr/"
62
+ * style="width: 300px; height: 250px"
58
63
  * widgets="false"
59
64
  * >
60
65
  * <p slot="top-right">My custom text</p>
@@ -118,7 +123,7 @@ export default class PhotoViewer extends Basic {
118
123
 
119
124
  /** @private */
120
125
  _initWidgets() {
121
- if(this._initParams.getParentInit().widgets !== "false") {
126
+ if(this._initParams.getParentPostInit().widgets !== "false") {
122
127
  if(!this.isWidthSmall()) {
123
128
  this.grid.appendChild(createWebComp("pnx-widget-zoom", {
124
129
  slot: "bottom-right",
@@ -26,6 +26,8 @@ const MAP_MOVE_DELTA = 100;
26
26
  * This component has a [CorneredGrid](#Panoramax.components.layout.CorneredGrid) layout, you can use directly any slot element to pass custom widgets.
27
27
  *
28
28
  * If you need a viewer without map, checkout [Photo Viewer component](#Panoramax.components.core.PhotoViewer).
29
+ *
30
+ * Make sure to set width/height through CSS for proper display.
29
31
  * @class Panoramax.components.core.Viewer
30
32
  * @element pnx-viewer
31
33
  * @extends Panoramax.components.core.PhotoViewer
@@ -52,11 +54,13 @@ const MAP_MOVE_DELTA = 100;
52
54
  * <!-- Basic example -->
53
55
  * <pnx-viewer
54
56
  * endpoint="https://panoramax.openstreetmap.fr/"
57
+ * style="width: 300px; height: 250px"
55
58
  * />
56
59
  *
57
60
  * <!-- With slotted widgets -->
58
61
  * <pnx-viewer
59
62
  * endpoint="https://panoramax.openstreetmap.fr/"
63
+ * style="width: 300px; height: 250px"
60
64
  * >
61
65
  * <p slot="top-right">My custom text</p>
62
66
  * </pnx-viewer>
@@ -64,6 +68,7 @@ const MAP_MOVE_DELTA = 100;
64
68
  * <!-- With only your custom widgets -->
65
69
  * <pnx-viewer
66
70
  * endpoint="https://panoramax.openstreetmap.fr/"
71
+ * style="width: 300px; height: 250px"
67
72
  * widgets="false"
68
73
  * >
69
74
  * <p slot="top-right">My custom text</p>
@@ -72,6 +77,7 @@ const MAP_MOVE_DELTA = 100;
72
77
  * <!-- With map options -->
73
78
  * <pnx-viewer
74
79
  * endpoint="https://panoramax.openstreetmap.fr/"
80
+ * style="width: 300px; height: 250px"
75
81
  * map="{'maxZoom': 15, 'background': 'aerial', 'raster': '...'}"
76
82
  * />
77
83
  * ```
@@ -133,7 +139,7 @@ export default class Viewer extends PhotoViewer {
133
139
 
134
140
  /** @private */
135
141
  _initWidgets() {
136
- if(this._initParams.getParentInit().widgets !== "false") {
142
+ if(this._initParams.getParentPostInit().widgets !== "false") {
137
143
  this.grid.appendChild(createWebComp("pnx-widget-zoom", {
138
144
  slot: this.isWidthSmall() ? "top-left" : "bottom-right",
139
145
  class: this.isWidthSmall() ? "pnx-only-map pnx-print-hidden" : "pnx-print-hidden",
package/src/utils/map.js CHANGED
@@ -136,6 +136,9 @@ export function combineStyles(parent, options) {
136
136
  style.layers = style.layers.concat(options.supplementaryStyle.layers || []);
137
137
  }
138
138
 
139
+ // Fix for empty layers causing sorting issues
140
+ style.layers = style.layers.filter(l => l.id);
141
+
139
142
  // Aerial imagery background
140
143
  if(options.raster) {
141
144
  style.sources["pnx-aerial"] = options.raster;
@@ -6,6 +6,7 @@ jest.mock("../../../src/components/core/Basic", () => (
6
6
  this.api = {
7
7
  getMapStyle: () => ({}),
8
8
  _getMapRequestTransform: () => ({}),
9
+ _endpoints: {},
9
10
  };
10
11
  this._t = { maplibre: {}, psv: {} };
11
12
  }
@@ -7,6 +7,43 @@ global.console = { info: jest.fn(), error: jest.fn(), warn: jest.fn(), log: glob
7
7
  beforeEach(() => comp = new PhotoViewer());
8
8
  afterEach(() => jest.clearAllMocks());
9
9
 
10
+
11
+ describe("_initWidgets", () => {
12
+ let initParamsMock;
13
+
14
+ beforeEach(() => {
15
+ comp.grid.appendChild = jest.fn();
16
+
17
+ // Mock the return value of getParentPostInit
18
+ initParamsMock = {
19
+ widgets: "true",
20
+ focus: "pic",
21
+ picture: "somePicture",
22
+ };
23
+ comp._createInitParamsHandler();
24
+ comp._initParams.getParentPostInit = jest.fn();
25
+ comp._initParams.getParentPostInit.mockReturnValue(initParamsMock);
26
+ });
27
+
28
+ it("should not add widgets if widgets is false", () => {
29
+ initParamsMock.widgets = "false";
30
+ comp._initWidgets();
31
+ expect(comp.grid.appendChild).not.toHaveBeenCalled();
32
+ });
33
+
34
+ it("should handle widgets if width is not small", () => {
35
+ comp.isWidthSmall = () => false;
36
+ comp._initWidgets();
37
+ expect(comp.grid.appendChild).toMatchSnapshot();
38
+ });
39
+
40
+ it("should handle widgets if width is small", () => {
41
+ comp.isWidthSmall = () => true;
42
+ comp._initWidgets();
43
+ expect(comp.grid.appendChild).toMatchSnapshot();
44
+ });
45
+ });
46
+
10
47
  describe("getClassName", () => {
11
48
  it("works", () => {
12
49
  expect(comp.getClassName()).toBe("PhotoViewer");
@@ -1,12 +1,72 @@
1
1
  import Viewer from "../../../src/components/core/Viewer";
2
2
  import "./BasicMock";
3
3
 
4
+ jest.mock("../../../src/components/core/PhotoViewer", () => (
5
+ class PhotoViewer extends EventTarget {
6
+ constructor() {
7
+ super();
8
+ this.loader = { setAttribute: jest.fn() };
9
+ this.api = {
10
+ getMapStyle: () => ({}),
11
+ _getMapRequestTransform: () => ({}),
12
+ _endpoints: {},
13
+ };
14
+ this._t = { maplibre: {}, psv: {} };
15
+ this.grid = { appendChild: jest.fn() };
16
+ }
17
+ getAttribute() { return null; }
18
+ isWidthSmall() { return false; }
19
+ getSubComponentsNames() {
20
+ return ["loader", "api", "psv", "grid", "popup", "urlHandler"];
21
+ }
22
+ onceAPIReady() {
23
+ return Promise.resolve();
24
+ }
25
+ }
26
+ ));
27
+
4
28
  let comp;
5
29
  global.console = { info: jest.fn(), error: jest.fn(), warn: jest.fn(), log: global.console.log };
6
30
 
7
31
  beforeEach(() => comp = new Viewer());
8
32
  afterEach(() => jest.clearAllMocks());
9
33
 
34
+ describe("_initWidgets", () => {
35
+ let initParamsMock;
36
+
37
+ beforeEach(() => {
38
+ comp.grid.appendChild = jest.fn();
39
+
40
+ // Mock the return value of getParentPostInit
41
+ initParamsMock = {
42
+ widgets: "true",
43
+ focus: "pic",
44
+ picture: "somePicture",
45
+ };
46
+ comp._createInitParamsHandler();
47
+ comp._initParams.getParentPostInit = jest.fn();
48
+ comp._initParams.getParentPostInit.mockReturnValue(initParamsMock);
49
+ });
50
+
51
+ it("should not add widgets if widgets is false", () => {
52
+ initParamsMock.widgets = "false";
53
+ comp._initWidgets();
54
+ expect(comp.grid.appendChild).not.toHaveBeenCalled();
55
+ });
56
+
57
+ it("should handle widgets if width is not small", () => {
58
+ comp.isWidthSmall = () => false;
59
+ comp._initWidgets();
60
+ expect(comp.grid.appendChild).toMatchSnapshot();
61
+ });
62
+
63
+ it("should handle widgets if width is small", () => {
64
+ comp.isWidthSmall = () => true;
65
+ comp._initWidgets();
66
+ expect(comp.grid.appendChild).toMatchSnapshot();
67
+ });
68
+ });
69
+
10
70
  describe("getClassName", () => {
11
71
  it("works", () => {
12
72
  expect(comp.getClassName()).toBe("Viewer");
@@ -0,0 +1,91 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`_initWidgets should handle widgets if width is not small 1`] = `
4
+ [MockFunction] {
5
+ "calls": Array [
6
+ Array [
7
+ <pnx-widget-zoom
8
+ class="pnx-print-hidden"
9
+ slot="bottom-right"
10
+ />,
11
+ ],
12
+ Array [
13
+ <pnx-widget-share
14
+ class="pnx-print-hidden"
15
+ slot="bottom-right"
16
+ />,
17
+ ],
18
+ Array [
19
+ <pnx-widget-legend
20
+ focus="pic"
21
+ picture="somePicture"
22
+ slot="top-left"
23
+ />,
24
+ ],
25
+ Array [
26
+ <pnx-widget-player
27
+ class="pnx-only-psv pnx-print-hidden"
28
+ slot="top"
29
+ />,
30
+ ],
31
+ ],
32
+ "results": Array [
33
+ Object {
34
+ "type": "return",
35
+ "value": undefined,
36
+ },
37
+ Object {
38
+ "type": "return",
39
+ "value": undefined,
40
+ },
41
+ Object {
42
+ "type": "return",
43
+ "value": undefined,
44
+ },
45
+ Object {
46
+ "type": "return",
47
+ "value": undefined,
48
+ },
49
+ ],
50
+ }
51
+ `;
52
+
53
+ exports[`_initWidgets should handle widgets if width is small 1`] = `
54
+ [MockFunction] {
55
+ "calls": Array [
56
+ Array [
57
+ <pnx-widget-share
58
+ class="pnx-print-hidden"
59
+ slot="bottom-right"
60
+ />,
61
+ ],
62
+ Array [
63
+ <pnx-widget-legend
64
+ focus="pic"
65
+ picture="somePicture"
66
+ slot="top"
67
+ />,
68
+ ],
69
+ Array [
70
+ <pnx-widget-player
71
+ class="pnx-only-psv pnx-print-hidden"
72
+ slot="top"
73
+ />,
74
+ ],
75
+ ],
76
+ "results": Array [
77
+ Object {
78
+ "type": "return",
79
+ "value": undefined,
80
+ },
81
+ Object {
82
+ "type": "return",
83
+ "value": undefined,
84
+ },
85
+ Object {
86
+ "type": "return",
87
+ "value": undefined,
88
+ },
89
+ ],
90
+ }
91
+ `;
@@ -0,0 +1,163 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`_initWidgets should handle widgets if width is not small 1`] = `
4
+ [MockFunction] {
5
+ "calls": Array [
6
+ Array [
7
+ <pnx-widget-zoom
8
+ class="pnx-print-hidden"
9
+ slot="bottom-right"
10
+ />,
11
+ ],
12
+ Array [
13
+ <pnx-widget-share
14
+ class="pnx-print-hidden"
15
+ slot="bottom-right"
16
+ />,
17
+ ],
18
+ Array [
19
+ <pnx-widget-legend
20
+ focus="pic"
21
+ picture="somePicture"
22
+ slot="top-left"
23
+ />,
24
+ ],
25
+ Array [
26
+ <pnx-widget-player
27
+ class="pnx-only-psv pnx-print-hidden"
28
+ slot="top"
29
+ />,
30
+ ],
31
+ Array [
32
+ <pnx-widget-geosearch
33
+ class="pnx-only-map pnx-print-hidden"
34
+ slot="top-left"
35
+ />,
36
+ ],
37
+ Array [
38
+ <pnx-widget-mapfilters
39
+ class="pnx-only-map pnx-print-hidden"
40
+ slot="top-left"
41
+ user-search="true"
42
+ />,
43
+ ],
44
+ Array [
45
+ <pnx-widget-maplayers
46
+ class="pnx-only-map pnx-print-hidden"
47
+ slot="top-right"
48
+ />,
49
+ ],
50
+ ],
51
+ "results": Array [
52
+ Object {
53
+ "type": "return",
54
+ "value": undefined,
55
+ },
56
+ Object {
57
+ "type": "return",
58
+ "value": undefined,
59
+ },
60
+ Object {
61
+ "type": "return",
62
+ "value": undefined,
63
+ },
64
+ Object {
65
+ "type": "return",
66
+ "value": undefined,
67
+ },
68
+ Object {
69
+ "type": "return",
70
+ "value": undefined,
71
+ },
72
+ Object {
73
+ "type": "return",
74
+ "value": undefined,
75
+ },
76
+ Object {
77
+ "type": "return",
78
+ "value": undefined,
79
+ },
80
+ ],
81
+ }
82
+ `;
83
+
84
+ exports[`_initWidgets should handle widgets if width is small 1`] = `
85
+ [MockFunction] {
86
+ "calls": Array [
87
+ Array [
88
+ <pnx-widget-zoom
89
+ class="pnx-only-map pnx-print-hidden"
90
+ slot="top-left"
91
+ />,
92
+ ],
93
+ Array [
94
+ <pnx-widget-share
95
+ class="pnx-print-hidden"
96
+ slot="bottom-right"
97
+ />,
98
+ ],
99
+ Array [
100
+ <pnx-widget-legend
101
+ focus="pic"
102
+ picture="somePicture"
103
+ slot="top"
104
+ />,
105
+ ],
106
+ Array [
107
+ <pnx-widget-player
108
+ class="pnx-only-psv pnx-print-hidden"
109
+ slot="top"
110
+ />,
111
+ ],
112
+ Array [
113
+ <pnx-widget-geosearch
114
+ class="pnx-only-map pnx-print-hidden"
115
+ slot="top-right"
116
+ />,
117
+ ],
118
+ Array [
119
+ <pnx-widget-mapfilters
120
+ class="pnx-only-map pnx-print-hidden"
121
+ slot="top-right"
122
+ user-search="true"
123
+ />,
124
+ ],
125
+ Array [
126
+ <pnx-widget-maplayers
127
+ class="pnx-only-map pnx-print-hidden"
128
+ slot="top-right"
129
+ />,
130
+ ],
131
+ ],
132
+ "results": Array [
133
+ Object {
134
+ "type": "return",
135
+ "value": undefined,
136
+ },
137
+ Object {
138
+ "type": "return",
139
+ "value": undefined,
140
+ },
141
+ Object {
142
+ "type": "return",
143
+ "value": undefined,
144
+ },
145
+ Object {
146
+ "type": "return",
147
+ "value": undefined,
148
+ },
149
+ Object {
150
+ "type": "return",
151
+ "value": undefined,
152
+ },
153
+ Object {
154
+ "type": "return",
155
+ "value": undefined,
156
+ },
157
+ Object {
158
+ "type": "return",
159
+ "value": undefined,
160
+ },
161
+ ],
162
+ }
163
+ `;