@thoughtspot/visual-embed-sdk 1.35.12 → 1.35.13

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 (131) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/auth.d.ts +2 -1
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +3 -1
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/embed/app.d.ts.map +1 -1
  7. package/cjs/src/embed/app.js +2 -0
  8. package/cjs/src/embed/app.js.map +1 -1
  9. package/cjs/src/embed/conversation.d.ts +44 -0
  10. package/cjs/src/embed/conversation.d.ts.map +1 -1
  11. package/cjs/src/embed/conversation.js +10 -1
  12. package/cjs/src/embed/conversation.js.map +1 -1
  13. package/cjs/src/embed/conversation.spec.js +36 -0
  14. package/cjs/src/embed/conversation.spec.js.map +1 -1
  15. package/cjs/src/embed/hostEventClient/contracts.d.ts +3 -3
  16. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  17. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  18. package/cjs/src/embed/hostEventClient/host-event-client.js +6 -1
  19. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  20. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  21. package/cjs/src/embed/liveboard.js +8 -2
  22. package/cjs/src/embed/liveboard.js.map +1 -1
  23. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  24. package/cjs/src/embed/search-bar.js +4 -2
  25. package/cjs/src/embed/search-bar.js.map +1 -1
  26. package/cjs/src/embed/search.d.ts.map +1 -1
  27. package/cjs/src/embed/search.js +4 -2
  28. package/cjs/src/embed/search.js.map +1 -1
  29. package/cjs/src/embed/search.spec.js +56 -3
  30. package/cjs/src/embed/search.spec.js.map +1 -1
  31. package/cjs/src/embed/ts-embed.d.ts +6 -0
  32. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  33. package/cjs/src/embed/ts-embed.js +38 -13
  34. package/cjs/src/embed/ts-embed.js.map +1 -1
  35. package/cjs/src/embed/ts-embed.spec.js +132 -130
  36. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  37. package/cjs/src/types.d.ts +43 -17
  38. package/cjs/src/types.d.ts.map +1 -1
  39. package/cjs/src/types.js +35 -7
  40. package/cjs/src/types.js.map +1 -1
  41. package/cjs/src/utils/processData.d.ts.map +1 -1
  42. package/cjs/src/utils/processData.js +9 -2
  43. package/cjs/src/utils/processData.js.map +1 -1
  44. package/cjs/src/utils/processData.spec.js +51 -0
  45. package/cjs/src/utils/processData.spec.js.map +1 -1
  46. package/dist/index-B3hd6DTM.js +7370 -0
  47. package/dist/src/auth.d.ts +2 -1
  48. package/dist/src/auth.d.ts.map +1 -1
  49. package/dist/src/embed/app.d.ts.map +1 -1
  50. package/dist/src/embed/conversation.d.ts +44 -0
  51. package/dist/src/embed/conversation.d.ts.map +1 -1
  52. package/dist/src/embed/hostEventClient/contracts.d.ts +3 -3
  53. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  54. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  55. package/dist/src/embed/liveboard.d.ts.map +1 -1
  56. package/dist/src/embed/search-bar.d.ts.map +1 -1
  57. package/dist/src/embed/search.d.ts.map +1 -1
  58. package/dist/src/embed/ts-embed.d.ts +6 -0
  59. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  60. package/dist/src/types.d.ts +43 -17
  61. package/dist/src/types.d.ts.map +1 -1
  62. package/dist/src/utils/processData.d.ts.map +1 -1
  63. package/dist/tsembed-react.es.js +122 -34
  64. package/dist/tsembed-react.js +121 -33
  65. package/dist/tsembed.es.js +122 -34
  66. package/dist/tsembed.js +121 -33
  67. package/dist/visual-embed-sdk-react-full.d.ts +92 -21
  68. package/dist/visual-embed-sdk-react.d.ts +92 -21
  69. package/dist/visual-embed-sdk.d.ts +92 -21
  70. package/lib/package.json +1 -1
  71. package/lib/src/auth.d.ts +2 -1
  72. package/lib/src/auth.d.ts.map +1 -1
  73. package/lib/src/auth.js +3 -1
  74. package/lib/src/auth.js.map +1 -1
  75. package/lib/src/embed/app.d.ts.map +1 -1
  76. package/lib/src/embed/app.js +2 -0
  77. package/lib/src/embed/app.js.map +1 -1
  78. package/lib/src/embed/conversation.d.ts +44 -0
  79. package/lib/src/embed/conversation.d.ts.map +1 -1
  80. package/lib/src/embed/conversation.js +10 -1
  81. package/lib/src/embed/conversation.js.map +1 -1
  82. package/lib/src/embed/conversation.spec.js +36 -0
  83. package/lib/src/embed/conversation.spec.js.map +1 -1
  84. package/lib/src/embed/hostEventClient/contracts.d.ts +3 -3
  85. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  86. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  87. package/lib/src/embed/hostEventClient/host-event-client.js +6 -1
  88. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  89. package/lib/src/embed/liveboard.d.ts.map +1 -1
  90. package/lib/src/embed/liveboard.js +8 -2
  91. package/lib/src/embed/liveboard.js.map +1 -1
  92. package/lib/src/embed/search-bar.d.ts.map +1 -1
  93. package/lib/src/embed/search-bar.js +4 -2
  94. package/lib/src/embed/search-bar.js.map +1 -1
  95. package/lib/src/embed/search.d.ts.map +1 -1
  96. package/lib/src/embed/search.js +4 -2
  97. package/lib/src/embed/search.js.map +1 -1
  98. package/lib/src/embed/search.spec.js +56 -3
  99. package/lib/src/embed/search.spec.js.map +1 -1
  100. package/lib/src/embed/ts-embed.d.ts +6 -0
  101. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  102. package/lib/src/embed/ts-embed.js +38 -13
  103. package/lib/src/embed/ts-embed.js.map +1 -1
  104. package/lib/src/embed/ts-embed.spec.js +133 -131
  105. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  106. package/lib/src/types.d.ts +43 -17
  107. package/lib/src/types.d.ts.map +1 -1
  108. package/lib/src/types.js +35 -7
  109. package/lib/src/types.js.map +1 -1
  110. package/lib/src/utils/processData.d.ts.map +1 -1
  111. package/lib/src/utils/processData.js +9 -2
  112. package/lib/src/utils/processData.js.map +1 -1
  113. package/lib/src/utils/processData.spec.js +51 -0
  114. package/lib/src/utils/processData.spec.js.map +1 -1
  115. package/lib/src/visual-embed-sdk.d.ts +92 -21
  116. package/package.json +1 -1
  117. package/src/auth.ts +3 -1
  118. package/src/embed/app.ts +2 -0
  119. package/src/embed/conversation.spec.ts +52 -3
  120. package/src/embed/conversation.ts +60 -1
  121. package/src/embed/hostEventClient/contracts.ts +3 -3
  122. package/src/embed/hostEventClient/host-event-client.ts +7 -1
  123. package/src/embed/liveboard.ts +9 -4
  124. package/src/embed/search-bar.tsx +6 -4
  125. package/src/embed/search.spec.ts +71 -3
  126. package/src/embed/search.ts +6 -5
  127. package/src/embed/ts-embed.spec.ts +153 -180
  128. package/src/embed/ts-embed.ts +46 -30
  129. package/src/types.ts +44 -15
  130. package/src/utils/processData.spec.ts +63 -0
  131. package/src/utils/processData.ts +12 -2
@@ -4,13 +4,11 @@ import {
4
4
  } from './conversation';
5
5
  import * as authInstance from '../auth';
6
6
  import { init } from '../index';
7
- import { Action, AuthType, RuntimeFilterOp } from '../types';
7
+ import { AuthType } from '../types';
8
8
  import {
9
- executeAfterWait,
10
9
  getDocumentBody,
11
10
  getIFrameSrc,
12
11
  getRootEl,
13
- fixedEncodeURI,
14
12
  defaultParamsWithoutHiddenActions as defaultParams,
15
13
  expectUrlMatchesWithParams,
16
14
  } from '../test/test-utils';
@@ -62,6 +60,40 @@ describe('ConversationEmbed', () => {
62
60
  );
63
61
  });
64
62
 
63
+ it('should render the conversation embed with spotter limitations text if flag is set', async () => {
64
+ const viewConfig: ConversationViewConfig = {
65
+ worksheetId: 'worksheetId',
66
+ searchOptions: {
67
+ searchQuery: 'searchQuery',
68
+ },
69
+ showSpotterLimitations: true,
70
+ };
71
+
72
+ const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
73
+ await conversationEmbed.render();
74
+ expectUrlMatchesWithParams(
75
+ getIFrameSrc(),
76
+ `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&showSpotterLimitations=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
77
+ );
78
+ });
79
+
80
+ it('should render the conversation embed with sample questions hidden', async () => {
81
+ const viewConfig: ConversationViewConfig = {
82
+ worksheetId: 'worksheetId',
83
+ searchOptions: {
84
+ searchQuery: 'searchQuery',
85
+ },
86
+ hideSampleQuestions: true,
87
+ };
88
+
89
+ const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
90
+ await conversationEmbed.render();
91
+ expectUrlMatchesWithParams(
92
+ getIFrameSrc(),
93
+ `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&hideSampleQuestions=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
94
+ );
95
+ });
96
+
65
97
  it('should render the conversation embed with worksheets hidden', async () => {
66
98
  const viewConfig: ConversationViewConfig = {
67
99
  worksheetId: 'worksheetId',
@@ -93,4 +125,21 @@ describe('ConversationEmbed', () => {
93
125
  ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
94
126
  );
95
127
  });
128
+
129
+ it('should render the conversation embed if data panel v2 flag is true', async () => {
130
+ const viewConfig: ConversationViewConfig = {
131
+ worksheetId: 'worksheetId',
132
+ searchOptions: {
133
+ searchQuery: 'searchQuery',
134
+ },
135
+ dataPanelV2: true,
136
+ };
137
+
138
+ const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
139
+ await conversationEmbed.render();
140
+ expectUrlMatchesWithParams(
141
+ getIFrameSrc(),
142
+ `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&enableDataPanelV2=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
143
+ );
144
+ });
96
145
  });
@@ -14,6 +14,10 @@ export interface SearchOptions {
14
14
  searchQuery: string;
15
15
  }
16
16
 
17
+ /**
18
+ * The configuration for the embedded conversationEmbed options.
19
+ * @group Embed components
20
+ */
17
21
  export interface ConversationViewConfig extends ViewConfig {
18
22
  /**
19
23
  * The ID of the worksheet to use for the conversation.
@@ -48,6 +52,46 @@ export interface ConversationViewConfig extends ViewConfig {
48
52
  * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
49
53
  */
50
54
  hideSourceSelection?: boolean;
55
+ /**
56
+ * Flag to control Data panel experience
57
+ * @default false
58
+ * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.4.0.cl
59
+ * @example
60
+ * ```js
61
+ * const embed = new AppEmbed('#tsEmbed', {
62
+ * ... // other options
63
+ * dataPanelV2: true,
64
+ * })
65
+ * ```
66
+ */
67
+ dataPanelV2?: boolean;
68
+ /**
69
+ * showSpotterLimitations : show limitation text
70
+ * of the spotter underneath the chat input.
71
+ * default is false.
72
+ * @example
73
+ * ```js
74
+ * const embed = new ConversationEmbed('#tsEmbed', {
75
+ * ... // other options
76
+ * showSpotterLimitations : true,
77
+ * })
78
+ * ```
79
+ * @version SDK: 1.36.0 | Thoughtspot: 10.5.0.cl
80
+ */
81
+ showSpotterLimitations?: boolean;
82
+ /**
83
+ * hideSampleQuestions : Hide sample questions on
84
+ * the initial screen of the conversation.
85
+ * @example
86
+ * ```js
87
+ * const embed = new ConversationEmbed('#tsEmbed', {
88
+ * ... // other options
89
+ * hideSampleQuestions : true,
90
+ * })
91
+ * ```
92
+ * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
93
+ */
94
+ hideSampleQuestions?: boolean;
51
95
  }
52
96
 
53
97
  /**
@@ -71,12 +115,15 @@ export class ConversationEmbed extends TsEmbed {
71
115
  super(container, viewConfig);
72
116
  }
73
117
 
74
- public getIframeSrc() {
118
+ public getIframeSrc(): string {
75
119
  const {
76
120
  worksheetId,
77
121
  searchOptions,
78
122
  disableSourceSelection,
79
123
  hideSourceSelection,
124
+ dataPanelV2,
125
+ showSpotterLimitations,
126
+ hideSampleQuestions,
80
127
  } = this.viewConfig;
81
128
  const path = 'insights/conv-assist';
82
129
  if (!worksheetId) {
@@ -91,6 +138,18 @@ export class ConversationEmbed extends TsEmbed {
91
138
  queryParams[Param.HideSourceSelection] = !!hideSourceSelection;
92
139
  }
93
140
 
141
+ if (!isUndefined(dataPanelV2)) {
142
+ queryParams[Param.DataPanelV2Enabled] = !!dataPanelV2;
143
+ }
144
+
145
+ if (!isUndefined(showSpotterLimitations)) {
146
+ queryParams[Param.ShowSpotterLimitations] = !!showSpotterLimitations;
147
+ }
148
+
149
+ if (!isUndefined(hideSampleQuestions)) {
150
+ queryParams[Param.HideSampleQuestions] = !!hideSampleQuestions;
151
+ }
152
+
94
153
  let query = '';
95
154
  const queryParamsString = getQueryParamString(queryParams, true);
96
155
  if (queryParamsString) {
@@ -16,13 +16,13 @@ export type UIPassthroughContractBase = {
16
16
  vizId?: string;
17
17
  newVizName: string;
18
18
  newVizDescription?: string;
19
- pinboardId?: string;
19
+ liveboardId?: string;
20
20
  tabId?: string;
21
- newPinboardName?: string;
21
+ newLiveboardName?: string;
22
22
  newTabName?: string;
23
23
  };
24
24
  response: {
25
- pinboardId: string;
25
+ liveboardId: string;
26
26
  tabId: string;
27
27
  vizId: string;
28
28
  };
@@ -96,8 +96,14 @@ export class HostEventClient {
96
96
  return this.hostEventFallback(HostEvent.Pin, payload);
97
97
  }
98
98
 
99
+ const formattedPayload = {
100
+ ...payload,
101
+ pinboardId: payload.liveboardId,
102
+ newPinboardName: payload.newLiveboardName,
103
+ };
104
+
99
105
  return this.handleHostEventWithParam(
100
- UIPassthroughEvent.PinAnswerToLiveboard, payload,
106
+ UIPassthroughEvent.PinAnswerToLiveboard, formattedPayload,
101
107
  );
102
108
  }
103
109
 
@@ -25,6 +25,13 @@ import { V1Embed } from './ts-embed';
25
25
  import { addPreviewStylesIfNotPresent } from '../utils/global-styles';
26
26
  import { TriggerPayload, TriggerResponse } from './hostEventClient/contracts';
27
27
 
28
+ const liveboardHeightWhitelistedRoutes = [
29
+ '/embed/viz/',
30
+ '/embed/insights/viz/',
31
+ '/tsl-editor/PINBOARD_ANSWER_BOOK/',
32
+ '/import-tsl/PINBOARD_ANSWER_BOOK/',
33
+ ];
34
+
28
35
  /**
29
36
  * The configuration for the embedded Liveboard or visualization page view.
30
37
  * @group Embed components
@@ -562,10 +569,8 @@ export class LiveboardEmbed extends V1Embed {
562
569
  };
563
570
 
564
571
  private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => {
565
- if (
566
- data.data.currentPath.startsWith('/embed/viz/')
567
- || data.data.currentPath.startsWith('/embed/insights/viz/')
568
- ) {
572
+ const routePath = data.data.currentPath;
573
+ if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) {
569
574
  return;
570
575
  }
571
576
  this.setIFrameHeight(this.defaultHeight);
@@ -143,10 +143,12 @@ export class SearchBarEmbed extends TsEmbed {
143
143
  if (dataSource) {
144
144
  queryParams[Param.DataSources] = `["${dataSource}"]`;
145
145
  }
146
- if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
147
- queryParams[Param.searchTokenString] = encodeURIComponent(
148
- searchOptions.searchTokenString,
149
- );
146
+ if (searchOptions?.searchTokenString) {
147
+ if (!excludeSearchTokenStringFromURL) {
148
+ queryParams[Param.searchTokenString] = encodeURIComponent(
149
+ searchOptions.searchTokenString,
150
+ );
151
+ }
150
152
 
151
153
  if (searchOptions.executeSearch) {
152
154
  queryParams[Param.executeSearch] = true;
@@ -539,10 +539,10 @@ describe('Search embed tests', () => {
539
539
  });
540
540
  });
541
541
 
542
- test('with excludeSearchTokenStringFromURL', async () => {
542
+ test('with excludeSearchTokenStringFromURL, execute as false', async () => {
543
543
  const searchOptions: SearchOptions = {
544
544
  searchTokenString: '[commit date][revenue]',
545
- executeSearch: true,
545
+ executeSearch: false,
546
546
  };
547
547
  const searchEmbed = new SearchEmbed(getRootEl(), {
548
548
  ...defaultViewConfig,
@@ -570,6 +570,9 @@ describe('Search embed tests', () => {
570
570
  );
571
571
  });
572
572
 
573
+ expect(getIFrameSrc().includes('searchTokenString')).toBeFalsy();
574
+ expect(getIFrameSrc().includes('executeSearch')).toBeFalsy();
575
+
573
576
  expect(mockPort.postMessage).toHaveBeenCalledWith({
574
577
  type: EmbedEvent.APP_INIT,
575
578
  data: expect.objectContaining({
@@ -580,22 +583,87 @@ describe('Search embed tests', () => {
580
583
  });
581
584
  });
582
585
 
583
- test('without excludeSearchTokenStringFromURL', async () => {
586
+ test('with excludeSearchTokenStringFromURL with execute true', async () => {
584
587
  const searchOptions: SearchOptions = {
585
588
  searchTokenString: '[commit date][revenue]',
586
589
  executeSearch: true,
587
590
  };
591
+ const searchEmbed = new SearchEmbed(getRootEl(), {
592
+ ...defaultViewConfig,
593
+ searchOptions,
594
+ excludeSearchTokenStringFromURL: true,
595
+ });
596
+ const mockEmbedEventPayload = {
597
+ type: EmbedEvent.APP_INIT,
598
+ data: {},
599
+ };
600
+ searchEmbed.render();
601
+
602
+ const mockPort: any = {
603
+ postMessage: jest.fn(),
604
+ };
605
+ await executeAfterWait(() => {
606
+ const iframe = getIFrameEl();
607
+ postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
608
+ });
609
+
610
+ expect(getIFrameSrc().includes('searchTokenString')).toBeFalsy();
611
+
612
+ await executeAfterWait(() => {
613
+ expectUrlMatchesWithParams(
614
+ getIFrameSrc(),
615
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&executeSearch=true&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
616
+ );
617
+ });
618
+
619
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
620
+ type: EmbedEvent.APP_INIT,
621
+ data: expect.objectContaining({
622
+ searchOptions: {
623
+ searchTokenString: '[commit date][revenue]',
624
+ },
625
+ }),
626
+ });
627
+ });
628
+
629
+ test('without excludeSearchTokenStringFromURL with execute search as false', async () => {
630
+ const searchOptions: SearchOptions = {
631
+ searchTokenString: '[commit date][revenue]',
632
+ executeSearch: false,
633
+ };
634
+ const searchEmbed = new SearchEmbed(getRootEl(), {
635
+ ...defaultViewConfig,
636
+ searchOptions,
637
+ excludeSearchTokenStringFromURL: false,
638
+ });
639
+ searchEmbed.render();
640
+ await executeAfterWait(() => {
641
+ expectUrlMatchesWithParams(
642
+ getIFrameSrc(),
643
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
644
+ );
645
+ });
646
+ });
647
+
648
+ test('without excludeSearchTokenStringFromURL with executeSearch as false', async () => {
649
+ const searchOptions: SearchOptions = {
650
+ searchTokenString: '[commit date][revenue]',
651
+ executeSearch: false,
652
+ };
588
653
  const searchEmbed = new SearchEmbed(getRootEl(), {
589
654
  ...defaultViewConfig,
590
655
  searchOptions,
591
656
  excludeSearchTokenStringFromURL: false,
592
657
  });
593
658
  searchEmbed.render();
659
+
594
660
  await executeAfterWait(() => {
595
661
  expectUrlMatchesWithParams(
596
662
  getIFrameSrc(),
597
663
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
598
664
  );
599
665
  });
666
+
667
+ expect(getIFrameSrc().includes('executeSearch')).toBeFalsy();
600
668
  });
601
669
  });
@@ -392,11 +392,12 @@ export class SearchEmbed extends TsEmbed {
392
392
  if (dataSource) {
393
393
  queryParams[Param.DataSources] = `["${dataSource}"]`;
394
394
  }
395
- if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
396
- queryParams[Param.searchTokenString] = encodeURIComponent(
397
- searchOptions.searchTokenString,
398
- );
399
-
395
+ if (searchOptions?.searchTokenString) {
396
+ if (!excludeSearchTokenStringFromURL) {
397
+ queryParams[Param.searchTokenString] = encodeURIComponent(
398
+ searchOptions.searchTokenString,
399
+ );
400
+ }
400
401
  if (searchOptions.executeSearch) {
401
402
  queryParams[Param.executeSearch] = true;
402
403
  }