@thoughtspot/visual-embed-sdk 1.52.0 → 1.52.2-beta
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/cjs/package.json +19 -4
- package/cjs/src/contracts/contracts.spec.d.ts +2 -0
- package/cjs/src/contracts/contracts.spec.d.ts.map +1 -0
- package/cjs/src/contracts/contracts.spec.js +345 -0
- package/cjs/src/contracts/contracts.spec.js.map +1 -0
- package/cjs/src/contracts/embed-event-payloads.d.ts +73 -0
- package/cjs/src/contracts/embed-event-payloads.d.ts.map +1 -0
- package/cjs/src/contracts/embed-event-payloads.js +3 -0
- package/cjs/src/contracts/embed-event-payloads.js.map +1 -0
- package/cjs/src/contracts/host-event-contracts.d.ts +416 -0
- package/cjs/src/contracts/host-event-contracts.d.ts.map +1 -0
- package/cjs/src/contracts/host-event-contracts.js +3 -0
- package/cjs/src/contracts/host-event-contracts.js.map +1 -0
- package/cjs/src/contracts/index.d.ts +22 -0
- package/cjs/src/contracts/index.d.ts.map +1 -0
- package/cjs/src/contracts/index.js +33 -0
- package/cjs/src/contracts/index.js.map +1 -0
- package/cjs/src/contracts/ui-passthrough-contracts.d.ts +277 -0
- package/cjs/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
- package/cjs/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
- package/cjs/src/contracts/ui-passthrough-contracts.js.map +1 -0
- package/cjs/src/embed/app.d.ts +21 -143
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +21 -121
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +80 -26
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.js +1 -1
- package/cjs/src/embed/auto-frame-renderer.js.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.spec.js +24 -13
- package/cjs/src/embed/auto-frame-renderer.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +1 -1
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +1 -0
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +4 -4
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +35 -24
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/embedConfig.spec.js +2 -1
- package/cjs/src/embed/embedConfig.spec.js.map +1 -1
- package/cjs/src/embed/events.spec.js +12 -2
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts +5 -4
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +34 -23
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js +50 -44
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/utils.d.ts +10 -1
- package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/utils.js +52 -6
- package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
- package/cjs/src/embed/hostEventClient/utils.spec.js +151 -0
- package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +13 -164
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +72 -135
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +213 -29
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/search-bar.js +1 -1
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +14 -0
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +5 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +85 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/spotter-utils.d.ts +8 -1
- package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
- package/cjs/src/embed/spotter-utils.js +14 -1
- package/cjs/src/embed/spotter-utils.js.map +1 -1
- package/cjs/src/embed/spotter-utils.spec.js +26 -0
- package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +20 -22
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +171 -66
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +486 -38
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/errors.js +1 -1
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/full-height.d.ts +137 -0
- package/cjs/src/full-height.d.ts.map +1 -0
- package/cjs/src/full-height.js +272 -0
- package/cjs/src/full-height.js.map +1 -0
- package/cjs/src/full-height.spec.d.ts +2 -0
- package/cjs/src/full-height.spec.d.ts.map +1 -0
- package/cjs/src/full-height.spec.js +835 -0
- package/cjs/src/full-height.spec.js.map +1 -0
- package/cjs/src/index.d.ts +5 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +6 -4
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +2 -1
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/all-types-export.parity.spec.js +55 -3
- package/cjs/src/react/all-types-export.parity.spec.js.map +1 -1
- package/cjs/src/types.d.ts +584 -24
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +370 -22
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.spec.js +2 -1
- package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
- package/cjs/src/utils/custom-actions.spec.js +4 -2
- package/cjs/src/utils/custom-actions.spec.js.map +1 -1
- package/cjs/src/utils/filterConverter.d.ts +106 -0
- package/cjs/src/utils/filterConverter.d.ts.map +1 -0
- package/cjs/src/utils/filterConverter.js +215 -0
- package/cjs/src/utils/filterConverter.js.map +1 -0
- package/cjs/src/utils/filterConverter.spec.d.ts +2 -0
- package/cjs/src/utils/filterConverter.spec.d.ts.map +1 -0
- package/cjs/src/utils/filterConverter.spec.js +709 -0
- package/cjs/src/utils/filterConverter.spec.js.map +1 -0
- package/cjs/src/utils/processData.spec.js +2 -1
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/cjs/src/utils/processTrigger.d.ts +3 -1
- package/cjs/src/utils/processTrigger.d.ts.map +1 -1
- package/cjs/src/utils/processTrigger.js +19 -51
- package/cjs/src/utils/processTrigger.js.map +1 -1
- package/cjs/src/utils/transport/iframe-transport.d.ts +55 -0
- package/cjs/src/utils/transport/iframe-transport.d.ts.map +1 -0
- package/cjs/src/utils/transport/iframe-transport.js +108 -0
- package/cjs/src/utils/transport/iframe-transport.js.map +1 -0
- package/cjs/src/utils/transport/iframe-transport.spec.d.ts +2 -0
- package/cjs/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
- package/cjs/src/utils/transport/iframe-transport.spec.js +140 -0
- package/cjs/src/utils/transport/iframe-transport.spec.js.map +1 -0
- package/cjs/src/utils.d.ts +18 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +39 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +62 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-BMppCU63.js → index-CcBYlGo9.js} +1 -1
- package/dist/src/contracts/contracts.spec.d.ts +2 -0
- package/dist/src/contracts/contracts.spec.d.ts.map +1 -0
- package/dist/src/contracts/embed-event-payloads.d.ts +73 -0
- package/dist/src/contracts/embed-event-payloads.d.ts.map +1 -0
- package/dist/src/contracts/host-event-contracts.d.ts +416 -0
- package/dist/src/contracts/host-event-contracts.d.ts.map +1 -0
- package/dist/src/contracts/index.d.ts +22 -0
- package/dist/src/contracts/index.d.ts.map +1 -0
- package/dist/src/contracts/ui-passthrough-contracts.d.ts +277 -0
- package/dist/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
- package/dist/src/embed/app.d.ts +21 -143
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +1 -0
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts +5 -4
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/utils.d.ts +10 -1
- package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +13 -164
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +14 -0
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/spotter-utils.d.ts +8 -1
- package/dist/src/embed/spotter-utils.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +20 -22
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/full-height.d.ts +137 -0
- package/dist/src/full-height.d.ts.map +1 -0
- package/dist/src/full-height.spec.d.ts +2 -0
- package/dist/src/full-height.spec.d.ts.map +1 -0
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/types.d.ts +584 -24
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/filterConverter.d.ts +106 -0
- package/dist/src/utils/filterConverter.d.ts.map +1 -0
- package/dist/src/utils/filterConverter.spec.d.ts +2 -0
- package/dist/src/utils/filterConverter.spec.d.ts.map +1 -0
- package/dist/src/utils/processTrigger.d.ts +3 -1
- package/dist/src/utils/processTrigger.d.ts.map +1 -1
- package/dist/src/utils/transport/iframe-transport.d.ts +55 -0
- package/dist/src/utils/transport/iframe-transport.d.ts.map +1 -0
- package/dist/src/utils/transport/iframe-transport.spec.d.ts +2 -0
- package/dist/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
- package/dist/src/utils.d.ts +18 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +1144 -412
- package/dist/tsembed-react.js +1143 -411
- package/dist/tsembed.es.js +1357 -418
- package/dist/tsembed.js +1352 -412
- package/dist/visual-embed-sdk-react-full.d.ts +1514 -651
- package/dist/visual-embed-sdk-react.d.ts +1351 -632
- package/dist/visual-embed-sdk.d.ts +1508 -668
- package/lib/package.json +19 -4
- package/lib/src/contracts/contracts.spec.d.ts +2 -0
- package/lib/src/contracts/contracts.spec.d.ts.map +1 -0
- package/lib/src/contracts/contracts.spec.js +342 -0
- package/lib/src/contracts/contracts.spec.js.map +1 -0
- package/lib/src/contracts/embed-event-payloads.d.ts +73 -0
- package/lib/src/contracts/embed-event-payloads.d.ts.map +1 -0
- package/lib/src/contracts/embed-event-payloads.js +2 -0
- package/lib/src/contracts/embed-event-payloads.js.map +1 -0
- package/lib/src/contracts/host-event-contracts.d.ts +416 -0
- package/lib/src/contracts/host-event-contracts.d.ts.map +1 -0
- package/lib/src/contracts/host-event-contracts.js +2 -0
- package/lib/src/contracts/host-event-contracts.js.map +1 -0
- package/lib/src/contracts/index.d.ts +22 -0
- package/lib/src/contracts/index.d.ts.map +1 -0
- package/lib/src/contracts/index.js +22 -0
- package/lib/src/contracts/index.js.map +1 -0
- package/lib/src/contracts/ui-passthrough-contracts.d.ts +277 -0
- package/lib/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
- package/lib/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
- package/lib/src/contracts/ui-passthrough-contracts.js.map +1 -0
- package/lib/src/embed/app.d.ts +21 -143
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +23 -123
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +80 -26
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/auto-frame-renderer.js +1 -1
- package/lib/src/embed/auto-frame-renderer.js.map +1 -1
- package/lib/src/embed/auto-frame-renderer.spec.js +24 -13
- package/lib/src/embed/auto-frame-renderer.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +1 -1
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +1 -0
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +5 -5
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +35 -24
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/embedConfig.spec.js +2 -1
- package/lib/src/embed/embedConfig.spec.js.map +1 -1
- package/lib/src/embed/events.spec.js +12 -2
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts +5 -4
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +19 -8
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.spec.js +15 -9
- package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/utils.d.ts +10 -1
- package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/utils.js +48 -3
- package/lib/src/embed/hostEventClient/utils.js.map +1 -1
- package/lib/src/embed/hostEventClient/utils.spec.js +152 -1
- package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +13 -164
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +73 -136
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +213 -29
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/search-bar.js +1 -1
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +14 -0
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +5 -2
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +85 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/spotter-utils.d.ts +8 -1
- package/lib/src/embed/spotter-utils.d.ts.map +1 -1
- package/lib/src/embed/spotter-utils.js +12 -0
- package/lib/src/embed/spotter-utils.js.map +1 -1
- package/lib/src/embed/spotter-utils.spec.js +27 -1
- package/lib/src/embed/spotter-utils.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +20 -22
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +171 -66
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +484 -36
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.js +1 -1
- package/lib/src/errors.js.map +1 -1
- package/lib/src/full-height.d.ts +137 -0
- package/lib/src/full-height.d.ts.map +1 -0
- package/lib/src/full-height.js +268 -0
- package/lib/src/full-height.js.map +1 -0
- package/lib/src/full-height.spec.d.ts +2 -0
- package/lib/src/full-height.spec.d.ts.map +1 -0
- package/lib/src/full-height.spec.js +833 -0
- package/lib/src/full-height.spec.js.map +1 -0
- package/lib/src/index.d.ts +5 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +3 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/all-types-export.parity.spec.js +55 -3
- package/lib/src/react/all-types-export.parity.spec.js.map +1 -1
- package/lib/src/types.d.ts +584 -24
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +370 -22
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.spec.js +2 -1
- package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
- package/lib/src/utils/custom-actions.spec.js +4 -2
- package/lib/src/utils/custom-actions.spec.js.map +1 -1
- package/lib/src/utils/filterConverter.d.ts +106 -0
- package/lib/src/utils/filterConverter.d.ts.map +1 -0
- package/lib/src/utils/filterConverter.js +210 -0
- package/lib/src/utils/filterConverter.js.map +1 -0
- package/lib/src/utils/filterConverter.spec.d.ts +2 -0
- package/lib/src/utils/filterConverter.spec.d.ts.map +1 -0
- package/lib/src/utils/filterConverter.spec.js +707 -0
- package/lib/src/utils/filterConverter.spec.js.map +1 -0
- package/lib/src/utils/processData.spec.js +2 -1
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils/processTrigger.d.ts +3 -1
- package/lib/src/utils/processTrigger.d.ts.map +1 -1
- package/lib/src/utils/processTrigger.js +19 -51
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/lib/src/utils/transport/iframe-transport.d.ts +55 -0
- package/lib/src/utils/transport/iframe-transport.d.ts.map +1 -0
- package/lib/src/utils/transport/iframe-transport.js +101 -0
- package/lib/src/utils/transport/iframe-transport.js.map +1 -0
- package/lib/src/utils/transport/iframe-transport.spec.d.ts +2 -0
- package/lib/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
- package/lib/src/utils/transport/iframe-transport.spec.js +138 -0
- package/lib/src/utils/transport/iframe-transport.spec.js.map +1 -0
- package/lib/src/utils.d.ts +18 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +37 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +63 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +1508 -668
- package/package.json +19 -4
- package/src/contracts/contracts.spec.ts +392 -0
- package/src/contracts/embed-event-payloads.ts +83 -0
- package/src/contracts/host-event-contracts.ts +500 -0
- package/src/contracts/index.ts +53 -0
- package/src/contracts/ui-passthrough-contracts.ts +301 -0
- package/src/embed/app.spec.ts +101 -34
- package/src/embed/app.ts +42 -268
- package/src/embed/auto-frame-renderer.spec.ts +24 -13
- package/src/embed/auto-frame-renderer.ts +1 -1
- package/src/embed/bodyless-conversation.ts +1 -1
- package/src/embed/conversation.spec.ts +38 -27
- package/src/embed/conversation.ts +5 -5
- package/src/embed/embedConfig.spec.ts +2 -1
- package/src/embed/events.spec.ts +14 -2
- package/src/embed/hostEventClient/host-event-client.spec.ts +16 -10
- package/src/embed/hostEventClient/host-event-client.ts +31 -10
- package/src/embed/hostEventClient/utils.spec.ts +176 -1
- package/src/embed/hostEventClient/utils.ts +53 -3
- package/src/embed/liveboard.spec.ts +261 -41
- package/src/embed/liveboard.ts +85 -300
- package/src/embed/search-bar.tsx +1 -1
- package/src/embed/search.spec.ts +103 -0
- package/src/embed/search.ts +21 -1
- package/src/embed/spotter-utils.spec.ts +29 -0
- package/src/embed/spotter-utils.ts +16 -0
- package/src/embed/ts-embed.spec.ts +650 -36
- package/src/embed/ts-embed.ts +205 -76
- package/src/errors.ts +1 -1
- package/src/full-height.spec.ts +1008 -0
- package/src/full-height.ts +361 -0
- package/src/index.ts +103 -5
- package/src/react/all-types-export.parity.spec.ts +63 -3
- package/src/react/all-types-export.ts +49 -0
- package/src/types.ts +584 -22
- package/src/utils/authService/tokenizedAuthService.spec.ts +2 -1
- package/src/utils/custom-actions.spec.ts +4 -2
- package/src/utils/filterConverter.spec.ts +801 -0
- package/src/utils/filterConverter.ts +304 -0
- package/src/utils/processData.spec.ts +2 -1
- package/src/utils/processTrigger.ts +28 -58
- package/src/utils/transport/iframe-transport.spec.ts +177 -0
- package/src/utils/transport/iframe-transport.ts +122 -0
- package/src/utils.spec.ts +71 -0
- package/src/utils.ts +38 -0
- package/cjs/src/embed/hostEventClient/contracts.d.ts +0 -231
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +0 -1
- package/cjs/src/embed/hostEventClient/contracts.js.map +0 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts +0 -231
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +0 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +0 -231
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +0 -1
- package/lib/src/embed/hostEventClient/contracts.js.map +0 -1
- package/src/embed/hostEventClient/contracts.ts +0 -262
package/src/embed/ts-embed.ts
CHANGED
|
@@ -10,20 +10,26 @@ import isEqual from 'lodash/isEqual';
|
|
|
10
10
|
import isEmpty from 'lodash/isEmpty';
|
|
11
11
|
import isObject from 'lodash/isObject';
|
|
12
12
|
import {
|
|
13
|
-
HostEventRequest,
|
|
14
|
-
TriggerPayload,
|
|
15
|
-
TriggerResponse,
|
|
16
13
|
UIPassthroughArrayResponse,
|
|
17
14
|
UIPassthroughEvent,
|
|
18
15
|
UIPassthroughRequest,
|
|
19
|
-
} from '
|
|
16
|
+
} from '../contracts/ui-passthrough-contracts';
|
|
17
|
+
// Contract resolution comes from the shared contracts module (the single
|
|
18
|
+
// source of truth for event payload shapes) rather than the legacy
|
|
19
|
+
// UI-passthrough-only mapping.
|
|
20
|
+
import {
|
|
21
|
+
HostEventRequest,
|
|
22
|
+
TriggerData,
|
|
23
|
+
TriggerResponse,
|
|
24
|
+
} from '../contracts/host-event-contracts';
|
|
25
|
+
import { EmbedEventPayload } from '../contracts/embed-event-payloads';
|
|
26
|
+
import { isMessageFromIframe } from '../utils/transport/iframe-transport';
|
|
20
27
|
import { logger } from '../utils/logger';
|
|
21
28
|
import { getAuthenticationToken } from '../authToken';
|
|
22
29
|
import { AnswerService } from '../utils/graphql/answerService/answerService';
|
|
23
30
|
import {
|
|
24
31
|
getEncodedQueryParamsString,
|
|
25
32
|
getCssDimension,
|
|
26
|
-
getOffsetTop,
|
|
27
33
|
embedEventStatus,
|
|
28
34
|
setAttributes,
|
|
29
35
|
getCustomisations,
|
|
@@ -110,6 +116,66 @@ const TS_EMBED_ID = '_thoughtspot-embed';
|
|
|
110
116
|
const PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY = 'tsEmbedOriginalPosition';
|
|
111
117
|
const PRERENDER_WRAPPER_ID_PREFIX = 'tsEmbed-pre-render-wrapper-';
|
|
112
118
|
|
|
119
|
+
// The container applies UpdateEmbedParams through React state, so a delivered
|
|
120
|
+
// post is not the same as the params being in effect.
|
|
121
|
+
const UPDATE_EMBED_PARAMS_SETTLE_MS = 200;
|
|
122
|
+
|
|
123
|
+
// The container ignores runtimeFilterParams/runtimeParameterParams unless
|
|
124
|
+
// truthy, so null or '' leaves the previous embed's values in place. '&' is
|
|
125
|
+
// truthy and parses to {}.
|
|
126
|
+
const NO_RUNTIME_PARAMS = '&';
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Query parameters that stay on the iframe `src` while config is excluded from
|
|
130
|
+
* the URL, which is the default unless the embed sets the
|
|
131
|
+
* `excludeConfigFromURL` additional flag to `false`. These are the parameters the
|
|
132
|
+
* application shell needs before it can receive a postMessage at all: the
|
|
133
|
+
* embed marker, the host application URL used to validate the message origin,
|
|
134
|
+
* the SDK version, the flags that pick the authentication flow, and the
|
|
135
|
+
* boot-time settings that would otherwise be applied a frame late (viewport,
|
|
136
|
+
* log level, locale, formatting and org). Everything else is delivered over
|
|
137
|
+
* `HostEvent.UpdateEmbedParams`.
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
const BOOTSTRAP_URL_PARAMS: ReadonlySet<string> = new Set<string>([
|
|
141
|
+
Param.EmbedApp,
|
|
142
|
+
Param.HostAppUrl,
|
|
143
|
+
Param.Version,
|
|
144
|
+
Param.AuthType,
|
|
145
|
+
Param.AutoLogin,
|
|
146
|
+
Param.DisableLoginRedirect,
|
|
147
|
+
Param.ForceSAMLAutoRedirect,
|
|
148
|
+
Param.cookieless,
|
|
149
|
+
Param.preAuthCache,
|
|
150
|
+
Param.blockNonEmbedFullAppAccess,
|
|
151
|
+
Param.OverrideOrgId,
|
|
152
|
+
Param.ViewPortHeight,
|
|
153
|
+
Param.ViewPortWidth,
|
|
154
|
+
Param.ClientLogLevel,
|
|
155
|
+
Param.OverrideNativeConsole,
|
|
156
|
+
Param.PendoTrackingKey,
|
|
157
|
+
Param.NumberFormatLocale,
|
|
158
|
+
Param.DateFormatLocale,
|
|
159
|
+
Param.CurrencyFormat,
|
|
160
|
+
Param.Locale,
|
|
161
|
+
Param.searchEmbed,
|
|
162
|
+
Param.livedBoardEmbed,
|
|
163
|
+
Param.isSpotterAgentEmbed,
|
|
164
|
+
Param.SpotterEnabled,
|
|
165
|
+
Param.IsFullAppEmbed,
|
|
166
|
+
Param.IsOnBeforeGetVizDataInterceptEnabled,
|
|
167
|
+
Param.LinkOverride,
|
|
168
|
+
Param.EnableLinkOverridesV2,
|
|
169
|
+
Param.DisableRedirectionLinksInNewTab,
|
|
170
|
+
Param.OverrideHistoryState,
|
|
171
|
+
Param.ForceTable,
|
|
172
|
+
Param.StringIDsUrl,
|
|
173
|
+
Param.DataSources,
|
|
174
|
+
Param.ExposeTranslationIDs,
|
|
175
|
+
Param.IconSpriteUrl,
|
|
176
|
+
Param.Tag,
|
|
177
|
+
]);
|
|
178
|
+
|
|
113
179
|
/**
|
|
114
180
|
* The event id map from v2 event names to v1 event id
|
|
115
181
|
* v1 events are the classic embed events implemented in Blink v1
|
|
@@ -142,6 +208,8 @@ export class TsEmbed {
|
|
|
142
208
|
*/
|
|
143
209
|
protected embedNodeKey = '__tsEmbed';
|
|
144
210
|
|
|
211
|
+
protected embedContainerLoadedKey = '__tsEmbedContainerLoaded';
|
|
212
|
+
|
|
145
213
|
protected isAppInitialized = false;
|
|
146
214
|
|
|
147
215
|
/**
|
|
@@ -439,7 +507,7 @@ export class TsEmbed {
|
|
|
439
507
|
const eventType = this.getEventType(event);
|
|
440
508
|
const eventPort = this.getEventPort(event);
|
|
441
509
|
const eventData = this.formatEventData(event, eventType);
|
|
442
|
-
if (event
|
|
510
|
+
if (isMessageFromIframe(event, this.iFrame, this.thoughtSpotHost)) {
|
|
443
511
|
const processedEventData = processEventData(
|
|
444
512
|
eventType,
|
|
445
513
|
eventData,
|
|
@@ -720,7 +788,19 @@ export class TsEmbed {
|
|
|
720
788
|
queryParams[key] = deserializeParam(queryParams[key]);
|
|
721
789
|
});
|
|
722
790
|
const appInitData = await this.getAppInitData();
|
|
723
|
-
return {
|
|
791
|
+
return {
|
|
792
|
+
...this.viewConfig,
|
|
793
|
+
...queryParams,
|
|
794
|
+
...appInitData,
|
|
795
|
+
// A show cycle has no URL to carry these, so the payload always
|
|
796
|
+
// states them — including "none", which is the case that leaks the
|
|
797
|
+
// previous filters.
|
|
798
|
+
runtimeFilterParams:
|
|
799
|
+
getFilterQuery(this.viewConfig.runtimeFilters ?? []) || NO_RUNTIME_PARAMS,
|
|
800
|
+
runtimeParameterParams:
|
|
801
|
+
getRuntimeParameters(this.viewConfig.runtimeParameters ?? [])
|
|
802
|
+
|| NO_RUNTIME_PARAMS,
|
|
803
|
+
};
|
|
724
804
|
}
|
|
725
805
|
|
|
726
806
|
/**
|
|
@@ -921,7 +1001,7 @@ export class TsEmbed {
|
|
|
921
1001
|
}
|
|
922
1002
|
|
|
923
1003
|
protected getEmbedParams() {
|
|
924
|
-
const queryParams = this.
|
|
1004
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
925
1005
|
return getQueryParamString(queryParams);
|
|
926
1006
|
}
|
|
927
1007
|
|
|
@@ -930,6 +1010,16 @@ export class TsEmbed {
|
|
|
930
1010
|
return params;
|
|
931
1011
|
}
|
|
932
1012
|
|
|
1013
|
+
protected getUrlQueryParamsObject(): Record<any, any> {
|
|
1014
|
+
const queryParams = this.getEmbedParamsObject();
|
|
1015
|
+
if (!this.isConfigExcludedFromUrl()) {
|
|
1016
|
+
return queryParams;
|
|
1017
|
+
}
|
|
1018
|
+
return Object.fromEntries(
|
|
1019
|
+
Object.entries(queryParams).filter(([key]) => BOOTSTRAP_URL_PARAMS.has(key)),
|
|
1020
|
+
);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
933
1023
|
protected getRootIframeSrc() {
|
|
934
1024
|
const query = this.getEmbedParams();
|
|
935
1025
|
return this.getEmbedBasePath(query);
|
|
@@ -1125,6 +1215,8 @@ export class TsEmbed {
|
|
|
1125
1215
|
return preRenderWrapper;
|
|
1126
1216
|
}
|
|
1127
1217
|
|
|
1218
|
+
// TODO(SCAL-338011): move the pre-render code out to its own file, the way
|
|
1219
|
+
// full height did. It is spread across this class and getting messy.
|
|
1128
1220
|
protected preRenderWrapper: HTMLElement;
|
|
1129
1221
|
|
|
1130
1222
|
protected preRenderChild: HTMLElement;
|
|
@@ -1470,41 +1562,6 @@ export class TsEmbed {
|
|
|
1470
1562
|
return V1EventMap[eventType] || eventType;
|
|
1471
1563
|
}
|
|
1472
1564
|
|
|
1473
|
-
/**
|
|
1474
|
-
* Calculates the iframe center for the current visible viewPort
|
|
1475
|
-
* of iframe using Scroll position of Host App, offsetTop for iframe
|
|
1476
|
-
* in Host app. ViewPort height of the tab.
|
|
1477
|
-
* @returns iframe Center in visible viewport,
|
|
1478
|
-
* Iframe height,
|
|
1479
|
-
* View port height.
|
|
1480
|
-
*/
|
|
1481
|
-
protected getIframeCenter() {
|
|
1482
|
-
const offsetTopClient = getOffsetTop(this.iFrame);
|
|
1483
|
-
const scrollTopClient = window.scrollY;
|
|
1484
|
-
const viewPortHeight = window.innerHeight;
|
|
1485
|
-
const iframeHeight = this.iFrame.offsetHeight;
|
|
1486
|
-
const iframeScrolled = scrollTopClient - offsetTopClient;
|
|
1487
|
-
let iframeVisibleViewPort;
|
|
1488
|
-
let iframeOffset;
|
|
1489
|
-
|
|
1490
|
-
if (iframeScrolled < 0) {
|
|
1491
|
-
iframeVisibleViewPort = viewPortHeight - (offsetTopClient - scrollTopClient);
|
|
1492
|
-
iframeVisibleViewPort = Math.min(iframeHeight, iframeVisibleViewPort);
|
|
1493
|
-
iframeOffset = 0;
|
|
1494
|
-
} else {
|
|
1495
|
-
iframeVisibleViewPort = Math.min(iframeHeight - iframeScrolled, viewPortHeight);
|
|
1496
|
-
iframeOffset = iframeScrolled;
|
|
1497
|
-
}
|
|
1498
|
-
const iframeCenter = iframeOffset + iframeVisibleViewPort / 2;
|
|
1499
|
-
return {
|
|
1500
|
-
iframeCenter,
|
|
1501
|
-
iframeScrolled,
|
|
1502
|
-
iframeHeight,
|
|
1503
|
-
viewPortHeight,
|
|
1504
|
-
iframeVisibleViewPort,
|
|
1505
|
-
};
|
|
1506
|
-
}
|
|
1507
|
-
|
|
1508
1565
|
/**
|
|
1509
1566
|
* Registers an event listener to trigger an alert when the ThoughtSpot app
|
|
1510
1567
|
* sends an event of a particular message type to the host application.
|
|
@@ -1528,9 +1585,12 @@ export class TsEmbed {
|
|
|
1528
1585
|
* });
|
|
1529
1586
|
* ```
|
|
1530
1587
|
*/
|
|
1531
|
-
public on(
|
|
1532
|
-
messageType:
|
|
1533
|
-
callback:
|
|
1588
|
+
public on<EmbedEventT extends EmbedEvent>(
|
|
1589
|
+
messageType: EmbedEventT,
|
|
1590
|
+
callback: (
|
|
1591
|
+
payload: EmbedEventPayload<EmbedEventT>,
|
|
1592
|
+
responder?: (data: any) => void,
|
|
1593
|
+
) => void,
|
|
1534
1594
|
options: MessageOptions = { start: false },
|
|
1535
1595
|
isRegisteredBySDK = false,
|
|
1536
1596
|
): typeof TsEmbed.prototype {
|
|
@@ -1608,14 +1668,35 @@ export class TsEmbed {
|
|
|
1608
1668
|
protected getPreRenderObj<T extends TsEmbed>(): T {
|
|
1609
1669
|
const embedObj = (this.preRenderWrapper as any)?.[this.embedNodeKey] as T;
|
|
1610
1670
|
if (embedObj === (this as any)) {
|
|
1611
|
-
logger.
|
|
1671
|
+
logger.debug('embedObj is same as this');
|
|
1612
1672
|
}
|
|
1613
1673
|
return embedObj;
|
|
1614
1674
|
}
|
|
1615
1675
|
|
|
1676
|
+
protected takeOverPreRender(): void {
|
|
1677
|
+
if (!this.preRenderWrapper) return;
|
|
1678
|
+
(this.preRenderWrapper as any)[this.embedNodeKey] = this;
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1681
|
+
// The flag lives on the wrapper because it describes the iframe: an
|
|
1682
|
+
// instance hidden when the container announced itself would otherwise
|
|
1683
|
+
// report false forever.
|
|
1684
|
+
private markEmbedContainerLoaded() {
|
|
1685
|
+
this.isEmbedContainerLoaded = true;
|
|
1686
|
+
if (this.preRenderWrapper) {
|
|
1687
|
+
(this.preRenderWrapper as any)[this.embedContainerLoadedKey] = true;
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1616
1691
|
private checkEmbedContainerLoaded() {
|
|
1617
1692
|
if (this.isEmbedContainerLoaded) return true;
|
|
1618
1693
|
|
|
1694
|
+
if ((this.preRenderWrapper as any)?.[this.embedContainerLoadedKey]) {
|
|
1695
|
+
this.isEmbedContainerLoaded = true;
|
|
1696
|
+
return true;
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
// Older builds stamped the flag on the instance, not the wrapper.
|
|
1619
1700
|
const preRenderObj = this.getPreRenderObj<TsEmbed>();
|
|
1620
1701
|
if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {
|
|
1621
1702
|
this.isEmbedContainerLoaded = true;
|
|
@@ -1648,24 +1729,32 @@ export class TsEmbed {
|
|
|
1648
1729
|
(source: EmbedEvent.AuthInit | EmbedEvent.EmbedListenerReady) => () => {
|
|
1649
1730
|
const processEmbedContainerReady = () => {
|
|
1650
1731
|
logger.debug('processEmbedContainerReady');
|
|
1651
|
-
this.
|
|
1732
|
+
this.markEmbedContainerLoaded();
|
|
1652
1733
|
this.executeEmbedContainerReadyCallbacks();
|
|
1653
1734
|
};
|
|
1654
1735
|
if (source === EmbedEvent.AuthInit) {
|
|
1655
1736
|
const AUTH_INIT_FALLBACK_DELAY = 1000;
|
|
1656
1737
|
// Wait for 1 second to ensure the embed container is loaded
|
|
1657
1738
|
// This is a workaround to ensure the embed container is loaded
|
|
1658
|
-
// this is needed until all clusters have EmbedListenerReady
|
|
1739
|
+
// this is needed until all clusters have EmbedListenerReady
|
|
1740
|
+
// event
|
|
1659
1741
|
setTimeout(processEmbedContainerReady, AUTH_INIT_FALLBACK_DELAY);
|
|
1660
1742
|
} else if (source === EmbedEvent.EmbedListenerReady) {
|
|
1661
1743
|
processEmbedContainerReady();
|
|
1744
|
+
if (this.isConfigExcludedFromUrl()) {
|
|
1745
|
+
this.triggerUpdateEmbedParams();
|
|
1746
|
+
}
|
|
1662
1747
|
}
|
|
1663
1748
|
};
|
|
1664
1749
|
|
|
1665
1750
|
/**
|
|
1666
1751
|
* Triggers an event to the embedded app
|
|
1752
|
+
*
|
|
1753
|
+
* Payload typing: from SDK 1.52.0 (ThoughtSpot Cloud 26.9.0.cl), unknown fields
|
|
1754
|
+
* on a known event's payload fail to compile. From SDK 1.54.0 (26.11.0.cl) the
|
|
1755
|
+
* payload is checked strictly against the event contract — update call sites now.
|
|
1667
1756
|
* @param {HostEvent} messageType The event type
|
|
1668
|
-
* @param {
|
|
1757
|
+
* @param {TriggerData} data The payload, typed against the event's contract
|
|
1669
1758
|
* @param {ContextType} context Optional context type to specify the context from which the event is triggered.
|
|
1670
1759
|
* Use ContextType.Search for search answer context, ContextType.Answer for answer/explore context,
|
|
1671
1760
|
* ContextType.Liveboard for liveboard context, or ContextType.Spotter for spotter context.
|
|
@@ -1688,7 +1777,10 @@ export class TsEmbed {
|
|
|
1688
1777
|
ContextT extends ContextType = ContextType,
|
|
1689
1778
|
>(
|
|
1690
1779
|
messageType: HostEventT,
|
|
1691
|
-
|
|
1780
|
+
// Contract shape is the contextual type: payload fields autocomplete
|
|
1781
|
+
// and unknown fields on object literals are flagged. Strict checks
|
|
1782
|
+
// land in SDK 1.54.0 — see TriggerData.
|
|
1783
|
+
data: TriggerData<HostEventT> = {} as any,
|
|
1692
1784
|
context?: ContextT,
|
|
1693
1785
|
): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>> {
|
|
1694
1786
|
uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
|
|
@@ -2015,24 +2107,49 @@ export class TsEmbed {
|
|
|
2015
2107
|
return this.renderIFrame(prerenderFrameSrc);
|
|
2016
2108
|
}
|
|
2017
2109
|
|
|
2110
|
+
// Subclasses that navigate the pre-render on show must await this before
|
|
2111
|
+
// triggering Navigate. Resolves even on failure, so navigation is never
|
|
2112
|
+
// blocked.
|
|
2113
|
+
protected preRenderParamsApplied: Promise<void> = Promise.resolve();
|
|
2114
|
+
|
|
2115
|
+
protected isConfigExcludedFromUrl(): boolean {
|
|
2116
|
+
const flag =
|
|
2117
|
+
this.viewConfig.additionalFlags?.excludeConfigFromURL ??
|
|
2118
|
+
this.embedConfig.additionalFlags?.excludeConfigFromURL;
|
|
2119
|
+
// Enabled by default; only an explicit false opts out.
|
|
2120
|
+
return flag !== false && flag !== 'false';
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
protected async triggerUpdateEmbedParams(): Promise<void> {
|
|
2124
|
+
try {
|
|
2125
|
+
const params = await this.getUpdateEmbedParamsObject();
|
|
2126
|
+
this.trigger(HostEvent.UpdateEmbedParams, params);
|
|
2127
|
+
} catch (error) {
|
|
2128
|
+
logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
|
|
2129
|
+
this.handleError({
|
|
2130
|
+
errorType: ErrorDetailsTypes.API,
|
|
2131
|
+
message: error?.message || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
|
|
2132
|
+
code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
|
|
2133
|
+
error: error?.message || error,
|
|
2134
|
+
});
|
|
2135
|
+
}
|
|
2136
|
+
}
|
|
2137
|
+
|
|
2018
2138
|
protected beforePrerenderVisible(): void {
|
|
2019
2139
|
// We can ignore this as its a bit expensive and the newer customers
|
|
2020
2140
|
// have moved on to UpdateEmbedParams supported clusters
|
|
2021
2141
|
// this.validatePreRenderViewConfig(this.viewConfig); removed in #517
|
|
2022
2142
|
logger.debug('triggering UpdateEmbedParams', this.viewConfig);
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
error: error?.message || error,
|
|
2034
|
-
});
|
|
2035
|
-
}
|
|
2143
|
+
// Created synchronously: a queued navigation needs something to await
|
|
2144
|
+
// whether the container is already loaded or not.
|
|
2145
|
+
this.preRenderParamsApplied = new Promise<void>((resolve) => {
|
|
2146
|
+
this.executeAfterEmbedContainerLoaded(async () => {
|
|
2147
|
+
try {
|
|
2148
|
+
await this.triggerUpdateEmbedParams();
|
|
2149
|
+
} finally {
|
|
2150
|
+
setTimeout(resolve, UPDATE_EMBED_PARAMS_SETTLE_MS);
|
|
2151
|
+
}
|
|
2152
|
+
});
|
|
2036
2153
|
});
|
|
2037
2154
|
}
|
|
2038
2155
|
|
|
@@ -2065,8 +2182,9 @@ export class TsEmbed {
|
|
|
2065
2182
|
if (this.hostElement) {
|
|
2066
2183
|
this.insertedDomEl = this.createPreRenderPlaceholder();
|
|
2067
2184
|
if ((this.viewConfig as { fullHeight: boolean }).fullHeight) {
|
|
2068
|
-
// If fullHeight has already sized the wrapper, seed the
|
|
2069
|
-
// with the same height so syncPreRenderStyle gets
|
|
2185
|
+
// If fullHeight has already sized the wrapper, seed the
|
|
2186
|
+
// placeholder with the same height so syncPreRenderStyle gets
|
|
2187
|
+
// an accurate rect.
|
|
2070
2188
|
const existingHeight = this.preRenderWrapper.style.height;
|
|
2071
2189
|
if (existingHeight) {
|
|
2072
2190
|
(this.insertedDomEl as HTMLDivElement).style.height = existingHeight;
|
|
@@ -2075,12 +2193,13 @@ export class TsEmbed {
|
|
|
2075
2193
|
|
|
2076
2194
|
const placeHolderId = this.getPreRenderIds().placeHolder;
|
|
2077
2195
|
// Remove any stale placeholder from a previous cycle. It is located
|
|
2078
|
-
// via a subtree-wide querySelector, so it may be nested deeper
|
|
2079
|
-
// direct child (E.g.: with fullHeight the host app can wrap
|
|
2080
|
-
// Element.remove() — which detaches from whatever the real
|
|
2081
|
-
// rather than hostElement.removeChild(), which throws
|
|
2082
|
-
// when the match is not a direct child. Mirrors the
|
|
2083
|
-
// cleanup in
|
|
2196
|
+
// via a subtree-wide querySelector, so it may be nested deeper
|
|
2197
|
+
// than a direct child (E.g.: with fullHeight the host app can wrap
|
|
2198
|
+
// it). Use Element.remove() — which detaches from whatever the real
|
|
2199
|
+
// parent is — rather than hostElement.removeChild(), which throws
|
|
2200
|
+
// NotFoundError when the match is not a direct child. Mirrors the
|
|
2201
|
+
// wrapper/child cleanup in
|
|
2202
|
+
// createPreRenderWrapper()/createPreRenderChild().
|
|
2084
2203
|
this.hostElement.querySelector(`#${placeHolderId}`)?.remove();
|
|
2085
2204
|
|
|
2086
2205
|
this.hostElement.appendChild(this.insertedDomEl);
|
|
@@ -2119,6 +2238,10 @@ export class TsEmbed {
|
|
|
2119
2238
|
this.setupFullscreenChangeHandler();
|
|
2120
2239
|
}
|
|
2121
2240
|
|
|
2241
|
+
// Last, so everything above still sees the instance being taken over
|
|
2242
|
+
// from.
|
|
2243
|
+
this.takeOverPreRender();
|
|
2244
|
+
|
|
2122
2245
|
return this;
|
|
2123
2246
|
}
|
|
2124
2247
|
|
|
@@ -2339,12 +2462,18 @@ export class V1Embed extends TsEmbed {
|
|
|
2339
2462
|
* });
|
|
2340
2463
|
* ```
|
|
2341
2464
|
*/
|
|
2342
|
-
public on(
|
|
2343
|
-
messageType:
|
|
2344
|
-
callback:
|
|
2465
|
+
public on<EmbedEventT extends EmbedEvent>(
|
|
2466
|
+
messageType: EmbedEventT,
|
|
2467
|
+
callback: (
|
|
2468
|
+
payload: EmbedEventPayload<EmbedEventT>,
|
|
2469
|
+
responder?: (data: any) => void,
|
|
2470
|
+
) => void,
|
|
2345
2471
|
options: MessageOptions = { start: false },
|
|
2346
2472
|
): typeof TsEmbed.prototype {
|
|
2347
|
-
|
|
2473
|
+
// Mirror the base TsEmbed.on generic signature so the enriched
|
|
2474
|
+
// EmbedEventPayload (e.g. CustomAction's answerService) flows through
|
|
2475
|
+
// the override too, and the class hierarchy stays assignable.
|
|
2476
|
+
const eventType = this.getCompatibleEventType(messageType) as EmbedEventT;
|
|
2348
2477
|
return super.on(eventType, callback, options);
|
|
2349
2478
|
}
|
|
2350
2479
|
|
package/src/errors.ts
CHANGED
|
@@ -29,7 +29,7 @@ export const ERROR_MESSAGE = {
|
|
|
29
29
|
SSR_ENVIRONMENT_ERROR: 'SSR environment detected. This function cannot be called in SSR environment.',
|
|
30
30
|
UPDATE_PARAMS_FAILED: 'Failed to update embed parameters',
|
|
31
31
|
INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
|
|
32
|
-
UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: {
|
|
32
|
+
UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { columnName, operator, values } } or { filters: [{ columnName, operator, values }, ...] }',
|
|
33
33
|
DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
|
|
34
34
|
UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
|
|
35
35
|
};
|