@vertexvis/viewer 1.0.2-testing.5 → 1.1.1-canary.0

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 (167) hide show
  1. package/dist/cjs/{controller-C-I_MLA3.js → controller-C74GX70e.js} +138 -34
  2. package/dist/cjs/controller-C74GX70e.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +9 -9
  5. package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js +1 -1
  6. package/dist/cjs/vertex-scene-tree-table-header.cjs.entry.js +1 -1
  7. package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
  8. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
  9. package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +1 -1
  10. package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +1 -1
  11. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  12. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
  13. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
  14. package/dist/cjs/vertex-viewer-layer.cjs.entry.js +1 -1
  15. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
  16. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +3 -3
  17. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +4 -4
  18. package/dist/cjs/vertex-viewer.cjs.entry.js +9 -4
  19. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  20. package/dist/collection/collection-manifest.json +3 -3
  21. package/dist/collection/components/scene-tree/lib/controller.js +48 -30
  22. package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
  23. package/dist/collection/components/scene-tree/lib/jwt.js +1 -1
  24. package/dist/collection/components/scene-tree/lib/jwt.js.map +1 -1
  25. package/dist/collection/components/scene-tree/scene-tree.js +2 -2
  26. package/dist/collection/components/scene-tree-notification-banner/scene-tree-notification-banner.js +1 -1
  27. package/dist/collection/components/scene-tree-search/scene-tree-search.js +3 -3
  28. package/dist/collection/components/scene-tree-table-column/scene-tree-table-column.js +1 -1
  29. package/dist/collection/components/scene-tree-table-header/scene-tree-table-header.js +1 -1
  30. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
  31. package/dist/collection/components/viewer/viewer.css +45 -1
  32. package/dist/collection/components/viewer/viewer.js +18 -6
  33. package/dist/collection/components/viewer/viewer.js.map +1 -1
  34. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
  35. package/dist/collection/components/viewer-button/viewer-button.js +1 -1
  36. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js +1 -1
  37. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
  38. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
  39. package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
  40. package/dist/collection/components/viewer-layer/viewer-layer.js +1 -1
  41. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
  42. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
  43. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +3 -3
  44. package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.js +1 -1
  45. package/dist/collection/index.js +1 -0
  46. package/dist/collection/index.js.map +1 -1
  47. package/dist/components/index.js +1 -1
  48. package/dist/components/{p-DwnNhGFv.js → p-B4MsUZ3n.js} +2 -2
  49. package/dist/components/p-BAsg2_dY.js +5 -0
  50. package/dist/components/{p-BwtZ7wGg.js → p-BEkJ7rmE.js} +2 -2
  51. package/dist/components/{p-XmNH38dk.js → p-BmoTo_-J.js} +2 -2
  52. package/dist/components/{p-Dymd58Ac.js → p-C--Voxln.js} +2 -2
  53. package/dist/components/{p-BphxnS-a.js → p-CIuxJYJL.js} +2 -2
  54. package/dist/components/p-CnYEgl0H.js +5 -0
  55. package/dist/components/p-CnYEgl0H.js.map +1 -0
  56. package/dist/components/{p-1qJWPhfT.js → p-D97fhwcJ.js} +2 -2
  57. package/dist/components/{p-CaXlgCvb.js → p-Dva0y9cX.js} +2 -2
  58. package/dist/components/{p-BxYIAIHN.js → p-NXN0rSu2.js} +2 -2
  59. package/dist/components/{p-D0KZu516.js → p-Y8W_BXUk.js} +2 -2
  60. package/dist/components/{p-CXO1zq8l.js → p-mJhaiMMT.js} +2 -2
  61. package/dist/components/vertex-scene-tree-notification-banner.js +1 -1
  62. package/dist/components/vertex-scene-tree-search.js +1 -1
  63. package/dist/components/vertex-scene-tree-table-column.js +1 -1
  64. package/dist/components/vertex-scene-tree-table-header.js +1 -1
  65. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  66. package/dist/components/vertex-scene-tree.js +1 -1
  67. package/dist/components/vertex-viewer-box-query-tool.js +1 -1
  68. package/dist/components/vertex-viewer-button.js +1 -1
  69. package/dist/components/vertex-viewer-default-toolbar.js +1 -1
  70. package/dist/components/vertex-viewer-default-toolbar.js.map +1 -1
  71. package/dist/components/vertex-viewer-dom-element.js +1 -1
  72. package/dist/components/vertex-viewer-dom-group.js +1 -1
  73. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  74. package/dist/components/vertex-viewer-layer.js +1 -1
  75. package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
  76. package/dist/components/vertex-viewer-pin-group.js +1 -1
  77. package/dist/components/vertex-viewer-pin-label-line.js +1 -1
  78. package/dist/components/vertex-viewer-pin-label.js +1 -1
  79. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  80. package/dist/components/vertex-viewer-toolbar.js +1 -1
  81. package/dist/components/vertex-viewer-view-cube.js +1 -1
  82. package/dist/components/vertex-viewer.js +1 -1
  83. package/dist/components/vertex-viewer.js.map +1 -1
  84. package/dist/esm/{controller-CwTBp6Da.js → controller-CE2DwTNf.js} +139 -35
  85. package/dist/esm/controller-CE2DwTNf.js.map +1 -0
  86. package/dist/esm/index.js +1 -1
  87. package/dist/esm/index.mjs +1 -1
  88. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +9 -9
  89. package/dist/esm/vertex-scene-tree-table-column.entry.js +1 -1
  90. package/dist/esm/vertex-scene-tree-table-header.entry.js +1 -1
  91. package/dist/esm/vertex-scene-tree.entry.js +3 -3
  92. package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
  93. package/dist/esm/vertex-viewer-button_3.entry.js +1 -1
  94. package/dist/esm/vertex-viewer-default-toolbar.entry.js +1 -1
  95. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  96. package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
  97. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
  98. package/dist/esm/vertex-viewer-layer.entry.js +1 -1
  99. package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
  100. package/dist/esm/vertex-viewer-pin-group.entry.js +3 -3
  101. package/dist/esm/vertex-viewer-pin-label_2.entry.js +4 -4
  102. package/dist/esm/vertex-viewer.entry.js +9 -4
  103. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  104. package/dist/types/components/scene-tree/lib/controller.d.ts +2 -0
  105. package/dist/types/components/scene-tree/lib/jwt.d.ts +1 -1
  106. package/dist/types/components/viewer/viewer.d.ts +9 -1
  107. package/dist/types/components.d.ts +1 -1
  108. package/dist/types/index.d.ts +1 -0
  109. package/dist/viewer/index.esm.js +1 -1
  110. package/dist/viewer/{p-4716c5d5.entry.js → p-06c99572.entry.js} +2 -2
  111. package/dist/viewer/p-15683a45.entry.js +5 -0
  112. package/dist/viewer/{p-78b4be75.entry.js → p-39129117.entry.js} +2 -2
  113. package/dist/viewer/p-5763b907.entry.js +5 -0
  114. package/dist/viewer/p-5763b907.entry.js.map +1 -0
  115. package/dist/viewer/{p-def7870b.entry.js → p-72479c7e.entry.js} +2 -2
  116. package/dist/viewer/{p-f3eff8c9.entry.js → p-7c767052.entry.js} +2 -2
  117. package/dist/viewer/{p-dd5d4304.entry.js → p-9c02567d.entry.js} +2 -2
  118. package/dist/viewer/p-CnYEgl0H.js +5 -0
  119. package/dist/viewer/p-CnYEgl0H.js.map +1 -0
  120. package/dist/viewer/p-a180d8a2.entry.js.map +1 -1
  121. package/dist/viewer/p-aceb3ef2.entry.js +5 -0
  122. package/dist/viewer/{p-21bacf72.entry.js.map → p-aceb3ef2.entry.js.map} +1 -1
  123. package/dist/viewer/p-b6dfbeec.entry.js +5 -0
  124. package/dist/viewer/{p-5963afa1.entry.js → p-c2c3579f.entry.js} +2 -2
  125. package/dist/viewer/p-d357d235.entry.js +5 -0
  126. package/dist/viewer/{p-c07dec9d.entry.js → p-dca0a6d8.entry.js} +2 -2
  127. package/dist/viewer/{p-5e162bd2.entry.js → p-ed965902.entry.js} +2 -2
  128. package/dist/viewer/{p-c76b6bc1.entry.js → p-ff5bb594.entry.js} +2 -2
  129. package/dist/viewer/viewer.esm.js +1 -1
  130. package/package.json +11 -11
  131. package/readme.md +4 -4
  132. package/dist/cjs/controller-C-I_MLA3.js.map +0 -1
  133. package/dist/components/p-C-Bg5fev.js +0 -5
  134. package/dist/components/p-C-Bg5fev.js.map +0 -1
  135. package/dist/components/p-CDa0u-Gp.js +0 -5
  136. package/dist/esm/controller-CwTBp6Da.js.map +0 -1
  137. package/dist/viewer/p-21bacf72.entry.js +0 -5
  138. package/dist/viewer/p-27e68321.entry.js +0 -5
  139. package/dist/viewer/p-27e68321.entry.js.map +0 -1
  140. package/dist/viewer/p-686eef80.entry.js +0 -5
  141. package/dist/viewer/p-C-Bg5fev.js +0 -5
  142. package/dist/viewer/p-C-Bg5fev.js.map +0 -1
  143. package/dist/viewer/p-ba57a018.entry.js +0 -5
  144. package/dist/viewer/p-c7bd9aea.entry.js +0 -5
  145. /package/dist/components/{p-DwnNhGFv.js.map → p-B4MsUZ3n.js.map} +0 -0
  146. /package/dist/components/{p-CDa0u-Gp.js.map → p-BAsg2_dY.js.map} +0 -0
  147. /package/dist/components/{p-BwtZ7wGg.js.map → p-BEkJ7rmE.js.map} +0 -0
  148. /package/dist/components/{p-XmNH38dk.js.map → p-BmoTo_-J.js.map} +0 -0
  149. /package/dist/components/{p-Dymd58Ac.js.map → p-C--Voxln.js.map} +0 -0
  150. /package/dist/components/{p-BphxnS-a.js.map → p-CIuxJYJL.js.map} +0 -0
  151. /package/dist/components/{p-1qJWPhfT.js.map → p-D97fhwcJ.js.map} +0 -0
  152. /package/dist/components/{p-CaXlgCvb.js.map → p-Dva0y9cX.js.map} +0 -0
  153. /package/dist/components/{p-BxYIAIHN.js.map → p-NXN0rSu2.js.map} +0 -0
  154. /package/dist/components/{p-D0KZu516.js.map → p-Y8W_BXUk.js.map} +0 -0
  155. /package/dist/components/{p-CXO1zq8l.js.map → p-mJhaiMMT.js.map} +0 -0
  156. /package/dist/viewer/{p-4716c5d5.entry.js.map → p-06c99572.entry.js.map} +0 -0
  157. /package/dist/viewer/{p-c7bd9aea.entry.js.map → p-15683a45.entry.js.map} +0 -0
  158. /package/dist/viewer/{p-78b4be75.entry.js.map → p-39129117.entry.js.map} +0 -0
  159. /package/dist/viewer/{p-def7870b.entry.js.map → p-72479c7e.entry.js.map} +0 -0
  160. /package/dist/viewer/{p-f3eff8c9.entry.js.map → p-7c767052.entry.js.map} +0 -0
  161. /package/dist/viewer/{p-dd5d4304.entry.js.map → p-9c02567d.entry.js.map} +0 -0
  162. /package/dist/viewer/{p-ba57a018.entry.js.map → p-b6dfbeec.entry.js.map} +0 -0
  163. /package/dist/viewer/{p-5963afa1.entry.js.map → p-c2c3579f.entry.js.map} +0 -0
  164. /package/dist/viewer/{p-686eef80.entry.js.map → p-d357d235.entry.js.map} +0 -0
  165. /package/dist/viewer/{p-c07dec9d.entry.js.map → p-dca0a6d8.entry.js.map} +0 -0
  166. /package/dist/viewer/{p-5e162bd2.entry.js.map → p-ed965902.entry.js.map} +0 -0
  167. /package/dist/viewer/{p-c76b6bc1.entry.js.map → p-ff5bb594.entry.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { a as requireGoogleProtobuf, b as requireWrappers_pb, r as requireGrpcWebClient_umd, g as grpcWebClient_umdExports } from './wrappers_pb-Xw_x1jYm.js';
5
5
  import { r as requireUuid_pb, f as requirePaging_pb, C as CustomError, u as uuid_pbExports, p as paging_pbExports } from './errors-Cs13_LRq.js';
6
- import { E as EventDispatcher } from './bundle-CElJxyjH.js';
6
+ import { E as EventDispatcher, a as async } from './bundle-CElJxyjH.js';
7
7
  import { i as isLoadedRow, f as fromNodeProto } from './row-CiSHWNC4.js';
8
8
 
9
9
  var domain_pb = {};
@@ -2701,7 +2701,8 @@ function requireScene_tree_api_pb () {
2701
2701
  var f, obj = {
2702
2702
  viewId: (f = msg.getViewId()) && core_protos_uuid_pb.Uuid.toObject(includeInstance, f),
2703
2703
  pager: (f = msg.getPager()) && core_protos_paging_pb.OffsetPager.toObject(includeInstance, f),
2704
- additionalColumnKeysList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f
2704
+ additionalColumnKeysList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,
2705
+ requireViewReady: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)
2705
2706
  };
2706
2707
 
2707
2708
  if (includeInstance) {
@@ -2752,6 +2753,10 @@ function requireScene_tree_api_pb () {
2752
2753
  var value = /** @type {string} */ (reader.readString());
2753
2754
  msg.addAdditionalColumnKeys(value);
2754
2755
  break;
2756
+ case 4:
2757
+ var value = /** @type {boolean} */ (reader.readBool());
2758
+ msg.setRequireViewReady(value);
2759
+ break;
2755
2760
  default:
2756
2761
  reader.skipField();
2757
2762
  break;
@@ -2804,6 +2809,13 @@ function requireScene_tree_api_pb () {
2804
2809
  f
2805
2810
  );
2806
2811
  }
2812
+ f = message.getRequireViewReady();
2813
+ if (f) {
2814
+ writer.writeBool(
2815
+ 4,
2816
+ f
2817
+ );
2818
+ }
2807
2819
  };
2808
2820
 
2809
2821
 
@@ -2918,6 +2930,24 @@ function requireScene_tree_api_pb () {
2918
2930
  };
2919
2931
 
2920
2932
 
2933
+ /**
2934
+ * optional bool require_view_ready = 4;
2935
+ * @return {boolean}
2936
+ */
2937
+ proto.vertexvis.protobuf.scenetree.v1alpha1.GetTreeRequest.prototype.getRequireViewReady = function() {
2938
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
2939
+ };
2940
+
2941
+
2942
+ /**
2943
+ * @param {boolean} value
2944
+ * @return {!proto.vertexvis.protobuf.scenetree.v1alpha1.GetTreeRequest} returns this
2945
+ */
2946
+ proto.vertexvis.protobuf.scenetree.v1alpha1.GetTreeRequest.prototype.setRequireViewReady = function(value) {
2947
+ return jspb.Message.setProto3BooleanField(this, 4, value);
2948
+ };
2949
+
2950
+
2921
2951
 
2922
2952
  /**
2923
2953
  * List of repeated fields within this message type.
@@ -6509,10 +6539,66 @@ function webSocketSubscriptionTransportFactory(options) {
6509
6539
  }
6510
6540
  }
6511
6541
 
6512
- function e(e){this.message=e;}e.prototype=new Error,e.prototype.name="InvalidCharacterError";var r="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,"");if(t.length%4==1)throw new e("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,o,a=0,i=0,c="";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return c};function t(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw "Illegal base64url string!"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0"+t),"%"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e;}function o(e,r){if("string"!=typeof e)throw new n("Invalid token specified");var o=true===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(".")[o]))}catch(e){throw new n("Invalid token specified: "+e.message)}}n.prototype=new Error,n.prototype.name="InvalidTokenError";
6542
+ class InvalidTokenError extends Error {
6543
+ }
6544
+ InvalidTokenError.prototype.name = "InvalidTokenError";
6545
+ function b64DecodeUnicode(str) {
6546
+ return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {
6547
+ let code = p.charCodeAt(0).toString(16).toUpperCase();
6548
+ if (code.length < 2) {
6549
+ code = "0" + code;
6550
+ }
6551
+ return "%" + code;
6552
+ }));
6553
+ }
6554
+ function base64UrlDecode(str) {
6555
+ let output = str.replace(/-/g, "+").replace(/_/g, "/");
6556
+ switch (output.length % 4) {
6557
+ case 0:
6558
+ break;
6559
+ case 2:
6560
+ output += "==";
6561
+ break;
6562
+ case 3:
6563
+ output += "=";
6564
+ break;
6565
+ default:
6566
+ throw new Error("base64 string is not of the correct length");
6567
+ }
6568
+ try {
6569
+ return b64DecodeUnicode(output);
6570
+ }
6571
+ catch (err) {
6572
+ return atob(output);
6573
+ }
6574
+ }
6575
+ function jwtDecode(token, options) {
6576
+ if (typeof token !== "string") {
6577
+ throw new InvalidTokenError("Invalid token specified: must be a string");
6578
+ }
6579
+ options || (options = {});
6580
+ const pos = options.header === true ? 0 : 1;
6581
+ const part = token.split(".")[pos];
6582
+ if (typeof part !== "string") {
6583
+ throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);
6584
+ }
6585
+ let decoded;
6586
+ try {
6587
+ decoded = base64UrlDecode(part);
6588
+ }
6589
+ catch (e) {
6590
+ throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);
6591
+ }
6592
+ try {
6593
+ return JSON.parse(decoded);
6594
+ }
6595
+ catch (e) {
6596
+ throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);
6597
+ }
6598
+ }
6513
6599
 
6514
6600
  function decodeSceneTreeJwt(jwt) {
6515
- return o(jwt);
6601
+ return jwtDecode(jwt);
6516
6602
  }
6517
6603
 
6518
6604
  /**
@@ -6883,25 +6969,23 @@ class SceneTreeController {
6883
6969
  * @param index A 0 based index to fetch.
6884
6970
  */
6885
6971
  async fetchPage(index) {
6886
- return this.ifConnectionHasJwt(async (jwt) => {
6887
- if (index < 0 || index > this.maxPages - 1) {
6888
- return;
6889
- }
6890
- if (!this.pages.has(index)) {
6891
- const offset = index * this.rowLimit;
6892
- this.log('Scene tree fetching page', index, offset);
6893
- const res = this.fetchTree(offset, this.rowLimit, jwt);
6894
- const id = this.nextPageId++;
6895
- const page = { id, res, index, metadataKeys: this.metadataKeys };
6896
- this.pages.set(index, page);
6897
- page.done = this.handlePageResult(page);
6898
- }
6899
- const page = this.pages.get(index);
6900
- const [resResult] = await Promise.allSettled([page === null || page === void 0 ? void 0 : page.res, page === null || page === void 0 ? void 0 : page.done]);
6901
- if ((resResult === null || resResult === void 0 ? void 0 : resResult.status) === 'rejected') {
6902
- throw resResult.reason;
6903
- }
6904
- });
6972
+ if (index < 0 || index > this.maxPages - 1) {
6973
+ return;
6974
+ }
6975
+ if (!this.pages.has(index)) {
6976
+ const offset = index * this.rowLimit;
6977
+ this.log('Scene tree fetching page', index, offset);
6978
+ const res = this.fetchTree(offset, this.rowLimit, () => this.ifConnectionHasJwt((jwt) => jwt));
6979
+ const id = this.nextPageId++;
6980
+ const page = { id, res, index, metadataKeys: this.metadataKeys };
6981
+ this.pages.set(index, page);
6982
+ page.done = this.handlePageResult(page);
6983
+ }
6984
+ const page = this.pages.get(index);
6985
+ const [resResult] = await Promise.allSettled([page === null || page === void 0 ? void 0 : page.res, page === null || page === void 0 ? void 0 : page.done]);
6986
+ if ((resResult === null || resResult === void 0 ? void 0 : resResult.status) === 'rejected') {
6987
+ throw resResult.reason;
6988
+ }
6905
6989
  }
6906
6990
  /**
6907
6991
  * Fetches a page that contains the given row offset.
@@ -7323,16 +7407,34 @@ class SceneTreeController {
7323
7407
  const pageEnd = this.getPageForOffset(end);
7324
7408
  return [pageStart, pageEnd];
7325
7409
  }
7326
- async fetchTree(offset, limit, jwt) {
7327
- return this.requestUnary(jwt, (metadata, handler) => {
7328
- const pager = new paging_pbExports.OffsetPager();
7329
- pager.setOffset(offset);
7330
- pager.setLimit(limit);
7331
- const req = new scene_tree_api_pbExports.GetTreeRequest();
7332
- req.setPager(pager);
7333
- req.setAdditionalColumnKeysList(this.metadataKeys);
7334
- this.client.getTree(req, metadata, handler);
7335
- });
7410
+ async fetchTree(offset, limit, jwtProvider, currentAttempt = 1) {
7411
+ const maxAttempts = SceneTreeController.MAX_GET_TREE_ATTEMPTS;
7412
+ try {
7413
+ const jwt = await jwtProvider();
7414
+ return await this.requestUnary(jwt, (metadata, handler) => {
7415
+ const pager = new paging_pbExports.OffsetPager();
7416
+ pager.setOffset(offset);
7417
+ pager.setLimit(limit);
7418
+ const req = new scene_tree_api_pbExports.GetTreeRequest();
7419
+ req.setPager(pager);
7420
+ req.setAdditionalColumnKeysList(this.metadataKeys);
7421
+ req.setRequireViewReady(true);
7422
+ this.client.getTree(req, metadata, handler);
7423
+ });
7424
+ }
7425
+ catch (error) {
7426
+ if (!isGrpcServiceError(error) || error.code !== grpcWebClient_umdExports.grpc.Code.Unavailable) {
7427
+ throw error;
7428
+ }
7429
+ if (currentAttempt >= maxAttempts) {
7430
+ throw new Error(`Failed to retrieve scene tree after ${maxAttempts} attempts.`);
7431
+ }
7432
+ const delay = SceneTreeController.GET_TREE_RETRY_DELAYS_IN_MS[currentAttempt - 1];
7433
+ const nextAttempt = currentAttempt + 1;
7434
+ console.warn(`GetTree failed because the view is not ready. Retrying in ${delay}ms (attempt ${nextAttempt}/${maxAttempts}).`);
7435
+ await async.delay(delay);
7436
+ return this.fetchTree(offset, limit, jwtProvider, nextAttempt);
7437
+ }
7336
7438
  }
7337
7439
  // TODO(dan): used shared grpc lib
7338
7440
  requestUnary(jwt, req) {
@@ -7434,8 +7536,10 @@ class SceneTreeController {
7434
7536
  SceneTreeController.IDLE_RECONNECT_IN_SECONDS = 4 * 60;
7435
7537
  SceneTreeController.LOST_CONNECTION_RECONNECT_IN_SECONDS = 2;
7436
7538
  SceneTreeController.MAX_SUBSCRIPTION_RETRY_COUNT = 2;
7539
+ SceneTreeController.MAX_GET_TREE_ATTEMPTS = 6;
7540
+ SceneTreeController.GET_TREE_RETRY_DELAYS_IN_MS = [1000, 2000, 4000, 8000, 15000];
7437
7541
 
7438
7542
  export { SceneTreeController as S, SceneTreeErrorCode as a, SceneTreeErrorDetails as b, scene_tree_api_pb_serviceExports as s, webSocketSubscriptionTransportFactory as w };
7439
- //# sourceMappingURL=controller-CwTBp6Da.js.map
7543
+ //# sourceMappingURL=controller-CE2DwTNf.js.map
7440
7544
 
7441
- //# sourceMappingURL=controller-CwTBp6Da.js.map
7545
+ //# sourceMappingURL=controller-CE2DwTNf.js.map