@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
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { HostEvent, RuntimeFilter } from '../types';
|
|
2
|
+
import { SessionInterface } from '../utils/graphql/answerService/answerService';
|
|
3
|
+
|
|
4
|
+
export interface LiveboardTab {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface LiveboardGroup {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Levels at which a filter or parameter can be applied.
|
|
18
|
+
*/
|
|
19
|
+
export enum ApplicabilityLevel {
|
|
20
|
+
Liveboard = 'LIVEBOARD',
|
|
21
|
+
Tab = 'TAB',
|
|
22
|
+
Group = 'GROUP',
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Scopes a filter or parameter to a specific target.
|
|
27
|
+
* At `LIVEBOARD` level the filter applies to the whole Liveboard, so `targetId`
|
|
28
|
+
* is not required. `level` accepts the enum or its string value, e.g. `'TAB'`.
|
|
29
|
+
*/
|
|
30
|
+
export interface Applicability {
|
|
31
|
+
level: ApplicabilityLevel | `${ApplicabilityLevel}`;
|
|
32
|
+
targetId?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface FilterUpdate {
|
|
36
|
+
column: string;
|
|
37
|
+
oper: string;
|
|
38
|
+
values: string[];
|
|
39
|
+
type?: string;
|
|
40
|
+
applicability?: Applicability;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface LiveboardFilter {
|
|
44
|
+
applicability?: Applicability;
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface LiveboardParameter {
|
|
49
|
+
applicability?: Applicability;
|
|
50
|
+
[key: string]: any;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export enum UIPassthroughEvent {
|
|
54
|
+
PinAnswerToLiveboard = 'addVizToPinboard',
|
|
55
|
+
SaveAnswer = 'saveAnswer',
|
|
56
|
+
GetDiscoverabilityStatus = 'getDiscoverabilityStatus',
|
|
57
|
+
GetAvailableUIPassthroughs = 'getAvailableUiPassthroughs',
|
|
58
|
+
GetAnswerConfig = 'getAnswerPageConfig',
|
|
59
|
+
GetLiveboardConfig = 'getPinboardPageConfig',
|
|
60
|
+
GetUnsavedAnswerTML = 'getUnsavedAnswerTML',
|
|
61
|
+
UpdateFilters = 'updateFilters',
|
|
62
|
+
Drilldown = 'drillDown',
|
|
63
|
+
GetAnswerSession = 'getAnswerSession',
|
|
64
|
+
GetFilters = 'getFilters',
|
|
65
|
+
GetIframeUrl = 'getIframeUrl',
|
|
66
|
+
GetParameters = 'getParameters',
|
|
67
|
+
GetTML = 'getTML',
|
|
68
|
+
GetTabs = 'getTabs',
|
|
69
|
+
GetGroups = 'getGroups',
|
|
70
|
+
GetExportRequestForCurrentPinboard = 'getExportRequestForCurrentPinboard',
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* UI passthrough contract. Each event's request/response is a named interface so it
|
|
75
|
+
* documents and imports cleanly; `UIPassthroughContractBase` maps events to the pairs.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
/** Request for {@link UIPassthroughEvent.PinAnswerToLiveboard}. */
|
|
79
|
+
export interface PinAnswerToLiveboardRequest {
|
|
80
|
+
vizId?: string;
|
|
81
|
+
newVizName: string;
|
|
82
|
+
newVizDescription?: string;
|
|
83
|
+
liveboardId?: string;
|
|
84
|
+
tabId?: string;
|
|
85
|
+
newLiveboardName?: string;
|
|
86
|
+
newTabName?: string;
|
|
87
|
+
}
|
|
88
|
+
/** Response for {@link UIPassthroughEvent.PinAnswerToLiveboard}. */
|
|
89
|
+
export interface PinAnswerToLiveboardResponse {
|
|
90
|
+
liveboardId: string;
|
|
91
|
+
tabId: string;
|
|
92
|
+
vizId: string;
|
|
93
|
+
}
|
|
94
|
+
/** Request for {@link UIPassthroughEvent.SaveAnswer}. */
|
|
95
|
+
export interface SaveAnswerRequest {
|
|
96
|
+
name: string;
|
|
97
|
+
description: string;
|
|
98
|
+
vizId?: string;
|
|
99
|
+
isDiscoverable?: boolean;
|
|
100
|
+
}
|
|
101
|
+
/** Response for {@link UIPassthroughEvent.SaveAnswer}. */
|
|
102
|
+
export interface SaveAnswerResponse {
|
|
103
|
+
answerId: string;
|
|
104
|
+
saveResponse?: any;
|
|
105
|
+
shareResponse?: any;
|
|
106
|
+
}
|
|
107
|
+
/** Response for {@link UIPassthroughEvent.GetDiscoverabilityStatus}. */
|
|
108
|
+
export interface GetDiscoverabilityStatusResponse {
|
|
109
|
+
shouldShowDiscoverability: boolean;
|
|
110
|
+
isDiscoverabilityCheckboxUnselectedPerOrg: boolean;
|
|
111
|
+
}
|
|
112
|
+
/** Response for {@link UIPassthroughEvent.GetAvailableUIPassthroughs}. */
|
|
113
|
+
export interface GetAvailableUIPassthroughsResponse {
|
|
114
|
+
keys: string[];
|
|
115
|
+
}
|
|
116
|
+
/** Request for {@link UIPassthroughEvent.GetAnswerConfig}. */
|
|
117
|
+
export interface GetAnswerConfigRequest {
|
|
118
|
+
vizId?: string;
|
|
119
|
+
}
|
|
120
|
+
/** Request for {@link UIPassthroughEvent.GetUnsavedAnswerTML}. */
|
|
121
|
+
export interface GetUnsavedAnswerTMLRequest {
|
|
122
|
+
sessionId?: string;
|
|
123
|
+
vizId?: string;
|
|
124
|
+
}
|
|
125
|
+
/** Response for {@link UIPassthroughEvent.GetUnsavedAnswerTML}. */
|
|
126
|
+
export interface GetUnsavedAnswerTMLResponse {
|
|
127
|
+
tml: string;
|
|
128
|
+
}
|
|
129
|
+
/** Request for {@link UIPassthroughEvent.GetAnswerSession}. */
|
|
130
|
+
export interface GetAnswerSessionRequest {
|
|
131
|
+
vizId?: string;
|
|
132
|
+
}
|
|
133
|
+
/** Response for {@link UIPassthroughEvent.GetAnswerSession}. */
|
|
134
|
+
export interface GetAnswerSessionResponse {
|
|
135
|
+
session: SessionInterface;
|
|
136
|
+
embedAnswerData?: Record<string, any>;
|
|
137
|
+
}
|
|
138
|
+
/** Request for {@link UIPassthroughEvent.GetFilters}. */
|
|
139
|
+
export interface GetFiltersRequest {
|
|
140
|
+
vizId?: string;
|
|
141
|
+
}
|
|
142
|
+
/** Response for {@link UIPassthroughEvent.GetFilters}. */
|
|
143
|
+
export interface GetFiltersResponse {
|
|
144
|
+
liveboardFilters: LiveboardFilter[];
|
|
145
|
+
runtimeFilters: RuntimeFilter[];
|
|
146
|
+
}
|
|
147
|
+
/** Response for {@link UIPassthroughEvent.GetIframeUrl}. */
|
|
148
|
+
export interface GetIframeUrlResponse {
|
|
149
|
+
iframeUrl: string;
|
|
150
|
+
}
|
|
151
|
+
/** Response for {@link UIPassthroughEvent.GetParameters}. */
|
|
152
|
+
export interface GetParametersResponse {
|
|
153
|
+
parameters: LiveboardParameter[];
|
|
154
|
+
}
|
|
155
|
+
/** Request for {@link UIPassthroughEvent.GetTML}. */
|
|
156
|
+
export interface GetTMLRequest {
|
|
157
|
+
vizId?: string;
|
|
158
|
+
includeNonExecutedSearchTokens?: boolean;
|
|
159
|
+
}
|
|
160
|
+
/** Response for {@link UIPassthroughEvent.GetTabs}. */
|
|
161
|
+
export interface GetTabsResponse {
|
|
162
|
+
orderedTabIds: string[];
|
|
163
|
+
numberOfTabs: number;
|
|
164
|
+
Tabs: LiveboardTab[];
|
|
165
|
+
}
|
|
166
|
+
/** Response for {@link UIPassthroughEvent.GetGroups}. */
|
|
167
|
+
export interface GetGroupsResponse {
|
|
168
|
+
orderedGroupIds: string[];
|
|
169
|
+
numberOfGroups: number;
|
|
170
|
+
Groups: LiveboardGroup[];
|
|
171
|
+
}
|
|
172
|
+
/** Response for {@link UIPassthroughEvent.GetExportRequestForCurrentPinboard}. */
|
|
173
|
+
export interface GetExportRequestForCurrentPinboardResponse {
|
|
174
|
+
data: { v2Content: string };
|
|
175
|
+
type: UIPassthroughEvent.GetExportRequestForCurrentPinboard;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Request for {@link UIPassthroughEvent.UpdateFilters}. Not the host-event
|
|
179
|
+
* `UpdateFiltersRequest` (host-event-contracts.ts), which has a different shape.
|
|
180
|
+
*/
|
|
181
|
+
export interface UpdateFiltersPassthroughRequest {
|
|
182
|
+
filter?: FilterUpdate;
|
|
183
|
+
filters?: FilterUpdate[];
|
|
184
|
+
}
|
|
185
|
+
/** Request for {@link UIPassthroughEvent.Drilldown}. */
|
|
186
|
+
export interface DrilldownRequest {
|
|
187
|
+
points: {
|
|
188
|
+
selectedPoints?: string[];
|
|
189
|
+
clickedPoint?: string;
|
|
190
|
+
};
|
|
191
|
+
columnGuid?: string;
|
|
192
|
+
autoDrillDown?: boolean;
|
|
193
|
+
vizId?: string;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** Maps each UI passthrough event to its request/response pair. */
|
|
197
|
+
export type UIPassthroughContractBase = {
|
|
198
|
+
[UIPassthroughEvent.PinAnswerToLiveboard]: {
|
|
199
|
+
request: PinAnswerToLiveboardRequest;
|
|
200
|
+
response: PinAnswerToLiveboardResponse;
|
|
201
|
+
};
|
|
202
|
+
[UIPassthroughEvent.SaveAnswer]: {
|
|
203
|
+
request: SaveAnswerRequest;
|
|
204
|
+
response: SaveAnswerResponse;
|
|
205
|
+
};
|
|
206
|
+
[UIPassthroughEvent.GetDiscoverabilityStatus]: {
|
|
207
|
+
request: any;
|
|
208
|
+
response: GetDiscoverabilityStatusResponse;
|
|
209
|
+
};
|
|
210
|
+
[UIPassthroughEvent.GetAvailableUIPassthroughs]: {
|
|
211
|
+
request: any;
|
|
212
|
+
response: GetAvailableUIPassthroughsResponse;
|
|
213
|
+
};
|
|
214
|
+
[UIPassthroughEvent.GetAnswerConfig]: {
|
|
215
|
+
request: GetAnswerConfigRequest;
|
|
216
|
+
response: any;
|
|
217
|
+
};
|
|
218
|
+
[UIPassthroughEvent.GetLiveboardConfig]: {
|
|
219
|
+
request: any;
|
|
220
|
+
response: any;
|
|
221
|
+
};
|
|
222
|
+
[UIPassthroughEvent.GetUnsavedAnswerTML]: {
|
|
223
|
+
request: GetUnsavedAnswerTMLRequest;
|
|
224
|
+
response: GetUnsavedAnswerTMLResponse;
|
|
225
|
+
};
|
|
226
|
+
[UIPassthroughEvent.GetAnswerSession]: {
|
|
227
|
+
request: GetAnswerSessionRequest;
|
|
228
|
+
response: GetAnswerSessionResponse;
|
|
229
|
+
};
|
|
230
|
+
[UIPassthroughEvent.GetFilters]: {
|
|
231
|
+
request: GetFiltersRequest;
|
|
232
|
+
response: GetFiltersResponse;
|
|
233
|
+
};
|
|
234
|
+
[UIPassthroughEvent.GetIframeUrl]: {
|
|
235
|
+
request: Record<string, never>;
|
|
236
|
+
response: GetIframeUrlResponse;
|
|
237
|
+
};
|
|
238
|
+
[UIPassthroughEvent.GetParameters]: {
|
|
239
|
+
request: Record<string, never>;
|
|
240
|
+
response: GetParametersResponse;
|
|
241
|
+
};
|
|
242
|
+
[UIPassthroughEvent.GetTML]: {
|
|
243
|
+
request: GetTMLRequest;
|
|
244
|
+
response: Record<string, any>;
|
|
245
|
+
};
|
|
246
|
+
[UIPassthroughEvent.GetTabs]: {
|
|
247
|
+
request: Record<string, never>;
|
|
248
|
+
response: GetTabsResponse;
|
|
249
|
+
};
|
|
250
|
+
[UIPassthroughEvent.GetGroups]: {
|
|
251
|
+
request: Record<string, never>;
|
|
252
|
+
response: GetGroupsResponse;
|
|
253
|
+
};
|
|
254
|
+
[UIPassthroughEvent.GetExportRequestForCurrentPinboard]: {
|
|
255
|
+
request: Record<string, never>;
|
|
256
|
+
response: GetExportRequestForCurrentPinboardResponse;
|
|
257
|
+
};
|
|
258
|
+
[UIPassthroughEvent.UpdateFilters]: {
|
|
259
|
+
request: UpdateFiltersPassthroughRequest;
|
|
260
|
+
response: unknown;
|
|
261
|
+
};
|
|
262
|
+
[UIPassthroughEvent.Drilldown]: {
|
|
263
|
+
request: DrilldownRequest;
|
|
264
|
+
response: unknown;
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
// UI Passthrough Request and Response
|
|
269
|
+
export type UIPassthroughRequest<T
|
|
270
|
+
extends keyof UIPassthroughContractBase
|
|
271
|
+
> = UIPassthroughContractBase[T]['request'];
|
|
272
|
+
|
|
273
|
+
export type UIPassthroughResponse<
|
|
274
|
+
T extends keyof UIPassthroughContractBase
|
|
275
|
+
> = UIPassthroughContractBase[T]['response'];
|
|
276
|
+
|
|
277
|
+
export type UIPassthroughArrayResponse<ApiName extends keyof UIPassthroughContractBase> =
|
|
278
|
+
Array<{
|
|
279
|
+
refId?: string;
|
|
280
|
+
value?: UIPassthroughResponse<ApiName>;
|
|
281
|
+
error?: any;
|
|
282
|
+
}>
|
|
283
|
+
|
|
284
|
+
// Host event and UI Passthrough Event Mapping
|
|
285
|
+
export type EmbedApiHostEventMapping = {
|
|
286
|
+
[HostEvent.Pin]: UIPassthroughEvent.PinAnswerToLiveboard;
|
|
287
|
+
[HostEvent.SaveAnswer]: UIPassthroughEvent.SaveAnswer;
|
|
288
|
+
[HostEvent.GetAnswerSession]: UIPassthroughEvent.GetAnswerSession;
|
|
289
|
+
[HostEvent.GetFilters]: UIPassthroughEvent.GetFilters;
|
|
290
|
+
[HostEvent.GetIframeUrl]: UIPassthroughEvent.GetIframeUrl;
|
|
291
|
+
[HostEvent.GetParameters]: UIPassthroughEvent.GetParameters;
|
|
292
|
+
[HostEvent.GetTML]: UIPassthroughEvent.GetTML;
|
|
293
|
+
[HostEvent.GetTabs]: UIPassthroughEvent.GetTabs;
|
|
294
|
+
[HostEvent.GetGroups]: UIPassthroughEvent.GetGroups;
|
|
295
|
+
[HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// NOTE: HostEventRequest / HostEventResponse / TriggerPayload / TriggerResponse
|
|
299
|
+
// live in the sibling ./host-event-contracts, which layers the
|
|
300
|
+
// HostEventRequestMap on top of the UI-passthrough mapping above.
|
|
301
|
+
// The former 2-tier definitions that lived here were superseded and removed.
|
package/src/embed/app.spec.ts
CHANGED
|
@@ -55,7 +55,7 @@ const testUrlParams = async (viewConfig: AppViewConfig, expectedUrl: string) =>
|
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
// Helper function to test
|
|
58
|
+
// Helper function to test the full-height route-change behavior
|
|
59
59
|
const testSetIframeHeightBehavior = (
|
|
60
60
|
currentPath: string,
|
|
61
61
|
shouldBeCalled: boolean
|
|
@@ -70,7 +70,7 @@ const testSetIframeHeightBehavior = (
|
|
|
70
70
|
: jest.spyOn(appEmbed, 'setIFrameHeight');
|
|
71
71
|
|
|
72
72
|
appEmbed.render();
|
|
73
|
-
appEmbed.
|
|
73
|
+
appEmbed.fullHeightController.handleRouteChange({
|
|
74
74
|
data: { currentPath },
|
|
75
75
|
type: 'Route',
|
|
76
76
|
});
|
|
@@ -375,6 +375,21 @@ describe('App embed tests', () => {
|
|
|
375
375
|
});
|
|
376
376
|
});
|
|
377
377
|
|
|
378
|
+
test('should hide the Customize homepage button via hiddenActions', async () => {
|
|
379
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
380
|
+
...defaultViewConfig,
|
|
381
|
+
hiddenActions: [Action.CustomizeHomepage],
|
|
382
|
+
} as AppViewConfig);
|
|
383
|
+
|
|
384
|
+
appEmbed.render();
|
|
385
|
+
await executeAfterWait(() => {
|
|
386
|
+
expectUrlMatchesWithParams(
|
|
387
|
+
getIFrameSrc(),
|
|
388
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&hideHomepageLeftNav=false&navigationVersion=v3&homepageVersion=v3&${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22,%22customizeHomepage%22]${defaultParamsPost}#/home`,
|
|
389
|
+
);
|
|
390
|
+
});
|
|
391
|
+
});
|
|
392
|
+
|
|
378
393
|
test('should set enable2ColumnLayout to true in url', async () => {
|
|
379
394
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
380
395
|
...defaultViewConfig,
|
|
@@ -1851,6 +1866,7 @@ describe('App embed tests', () => {
|
|
|
1851
1866
|
|
|
1852
1867
|
test('should register event handlers to adjust iframe height', async () => {
|
|
1853
1868
|
let embedHeightCallback: any = () => { };
|
|
1869
|
+
let embedIframeCenterCallback: any = () => { };
|
|
1854
1870
|
const onSpy = jest.spyOn(AppEmbed.prototype, 'on').mockImplementation((event, callback) => {
|
|
1855
1871
|
if (event === EmbedEvent.RouteChange) {
|
|
1856
1872
|
callback({ type: EmbedEvent.RouteChange, data: { currentPath: '/answers' } } as any, jest.fn());
|
|
@@ -1859,11 +1875,10 @@ describe('App embed tests', () => {
|
|
|
1859
1875
|
embedHeightCallback = callback;
|
|
1860
1876
|
}
|
|
1861
1877
|
if (event === EmbedEvent.EmbedIframeCenter) {
|
|
1862
|
-
|
|
1878
|
+
embedIframeCenterCallback = callback;
|
|
1863
1879
|
}
|
|
1864
1880
|
return null;
|
|
1865
1881
|
});
|
|
1866
|
-
jest.spyOn(TsEmbed.prototype as any, 'getIframeCenter').mockReturnValue({});
|
|
1867
1882
|
jest.spyOn(TsEmbed.prototype as any, 'setIFrameHeight').mockReturnValue({});
|
|
1868
1883
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
1869
1884
|
...defaultViewConfig,
|
|
@@ -1879,13 +1894,27 @@ describe('App embed tests', () => {
|
|
|
1879
1894
|
await appEmbed.render();
|
|
1880
1895
|
embedHeightCallback({ data: '100%' });
|
|
1881
1896
|
|
|
1897
|
+
// The app only asks for the iframe center once the iframe exists.
|
|
1898
|
+
const centerResponder = jest.fn();
|
|
1899
|
+
embedIframeCenterCallback(
|
|
1900
|
+
{ type: EmbedEvent.EmbedIframeCenter, data: {} } as any,
|
|
1901
|
+
centerResponder,
|
|
1902
|
+
);
|
|
1903
|
+
|
|
1882
1904
|
// Verify event handlers were registered
|
|
1883
1905
|
await executeAfterWait(() => {
|
|
1884
1906
|
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
|
|
1885
1907
|
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RouteChange, expect.anything());
|
|
1886
1908
|
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedIframeCenter, expect.anything());
|
|
1887
1909
|
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RequestVisibleEmbedCoordinates, expect.anything());
|
|
1910
|
+
expect(centerResponder).toHaveBeenCalledWith(
|
|
1911
|
+
expect.objectContaining({ type: EmbedEvent.EmbedIframeCenter }),
|
|
1912
|
+
);
|
|
1888
1913
|
}, 100);
|
|
1914
|
+
|
|
1915
|
+
// This test replaces AppEmbed.prototype.on; restore it so the mock does
|
|
1916
|
+
// not leak into the tests that follow.
|
|
1917
|
+
jest.restoreAllMocks();
|
|
1889
1918
|
});
|
|
1890
1919
|
|
|
1891
1920
|
describe('Navigate to Page API', () => {
|
|
@@ -2130,7 +2159,6 @@ describe('App embed tests', () => {
|
|
|
2130
2159
|
const onSpy = jest.spyOn(AppEmbed.prototype, 'on').mockImplementation((event, callback) => {
|
|
2131
2160
|
return null;
|
|
2132
2161
|
});
|
|
2133
|
-
jest.spyOn(TsEmbed.prototype as any, 'getIframeCenter').mockReturnValue({});
|
|
2134
2162
|
jest.spyOn(TsEmbed.prototype as any, 'setIFrameHeight').mockReturnValue({});
|
|
2135
2163
|
|
|
2136
2164
|
// Create the AppEmbed instance
|
|
@@ -2165,10 +2193,6 @@ describe('App embed tests', () => {
|
|
|
2165
2193
|
fullHeight: true,
|
|
2166
2194
|
} as AppViewConfig);
|
|
2167
2195
|
|
|
2168
|
-
expect((appEmbed as any).viewConfig.lazyLoadingForFullHeight).toBe(true);
|
|
2169
|
-
expect((appEmbed as any).viewConfig.enableScrollableContainerLazyLoading).toBe(true);
|
|
2170
|
-
expect((appEmbed as any).viewConfig.lazyLoadingMargin).toBe('500px 0px');
|
|
2171
|
-
|
|
2172
2196
|
await appEmbed.render();
|
|
2173
2197
|
|
|
2174
2198
|
await executeAfterWait(() => {
|
|
@@ -2184,11 +2208,14 @@ describe('App embed tests', () => {
|
|
|
2184
2208
|
...defaultViewConfig,
|
|
2185
2209
|
} as AppViewConfig);
|
|
2186
2210
|
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2211
|
+
await appEmbed.render();
|
|
2212
|
+
|
|
2213
|
+
await executeAfterWait(() => {
|
|
2214
|
+
const iframeSrc = getIFrameSrc();
|
|
2215
|
+
expect(iframeSrc).not.toContain('isFullHeightPinboard');
|
|
2216
|
+
expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled');
|
|
2217
|
+
expect(iframeSrc).not.toContain('rootMarginForLazyLoad');
|
|
2218
|
+
}, 100);
|
|
2192
2219
|
});
|
|
2193
2220
|
|
|
2194
2221
|
test('should not write the defaults back onto the caller view config', async () => {
|
|
@@ -2210,11 +2237,14 @@ describe('App embed tests', () => {
|
|
|
2210
2237
|
fullHeight: false,
|
|
2211
2238
|
} as AppViewConfig);
|
|
2212
2239
|
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2240
|
+
await appEmbed.render();
|
|
2241
|
+
|
|
2242
|
+
await executeAfterWait(() => {
|
|
2243
|
+
const iframeSrc = getIFrameSrc();
|
|
2244
|
+
expect(iframeSrc).not.toContain('isFullHeightPinboard');
|
|
2245
|
+
expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled');
|
|
2246
|
+
expect(iframeSrc).not.toContain('rootMarginForLazyLoad');
|
|
2247
|
+
}, 100);
|
|
2218
2248
|
});
|
|
2219
2249
|
|
|
2220
2250
|
test('should default lazyLoadingMargin when lazyLoadingForFullHeight is set explicitly', async () => {
|
|
@@ -2224,14 +2254,14 @@ describe('App embed tests', () => {
|
|
|
2224
2254
|
lazyLoadingForFullHeight: true,
|
|
2225
2255
|
} as AppViewConfig);
|
|
2226
2256
|
|
|
2227
|
-
expect((appEmbed as any).viewConfig.lazyLoadingMargin).toBe(
|
|
2228
|
-
config.DEFAULT_LAZY_LOADING_MARGIN,
|
|
2229
|
-
);
|
|
2230
|
-
|
|
2231
2257
|
await appEmbed.render();
|
|
2232
2258
|
|
|
2233
2259
|
await executeAfterWait(() => {
|
|
2234
|
-
expect(getIFrameSrc()).toContain(
|
|
2260
|
+
expect(getIFrameSrc()).toContain(
|
|
2261
|
+
`rootMarginForLazyLoad=${encodeURIComponent(
|
|
2262
|
+
config.DEFAULT_LAZY_LOADING_MARGIN,
|
|
2263
|
+
)}`,
|
|
2264
|
+
);
|
|
2235
2265
|
}, 100);
|
|
2236
2266
|
});
|
|
2237
2267
|
|
|
@@ -2455,7 +2485,7 @@ describe('App embed tests', () => {
|
|
|
2455
2485
|
await appEmbed.render();
|
|
2456
2486
|
|
|
2457
2487
|
// Trigger the lazy load data calculation
|
|
2458
|
-
(appEmbed as any).
|
|
2488
|
+
(appEmbed as any).fullHeightController.sendVisibleCoordinates();
|
|
2459
2489
|
|
|
2460
2490
|
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
2461
2491
|
top: 0,
|
|
@@ -2477,7 +2507,7 @@ describe('App embed tests', () => {
|
|
|
2477
2507
|
await appEmbed.render();
|
|
2478
2508
|
|
|
2479
2509
|
// Trigger the lazy load data calculation
|
|
2480
|
-
(appEmbed as any).
|
|
2510
|
+
(appEmbed as any).fullHeightController.sendVisibleCoordinates();
|
|
2481
2511
|
|
|
2482
2512
|
expect(mockTrigger).not.toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
2483
2513
|
top: 0,
|
|
@@ -2510,7 +2540,7 @@ describe('App embed tests', () => {
|
|
|
2510
2540
|
await appEmbed.render();
|
|
2511
2541
|
|
|
2512
2542
|
// Trigger the lazy load data calculation
|
|
2513
|
-
(appEmbed as any).
|
|
2543
|
+
(appEmbed as any).fullHeightController.sendVisibleCoordinates();
|
|
2514
2544
|
|
|
2515
2545
|
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
2516
2546
|
top: 50, // 50px clipped from top
|
|
@@ -2618,7 +2648,7 @@ describe('App embed tests', () => {
|
|
|
2618
2648
|
const mockResponder = jest.fn();
|
|
2619
2649
|
|
|
2620
2650
|
// Trigger the handler directly
|
|
2621
|
-
(appEmbed as any).
|
|
2651
|
+
(appEmbed as any).fullHeightController.handleRequestVisibleCoordinates({}, mockResponder);
|
|
2622
2652
|
|
|
2623
2653
|
// Verify the responder was called with the correct data
|
|
2624
2654
|
expect(mockResponder).toHaveBeenCalledWith({
|
|
@@ -2676,7 +2706,7 @@ describe('App embed tests', () => {
|
|
|
2676
2706
|
data: 600,
|
|
2677
2707
|
type: EmbedEvent.EmbedHeight,
|
|
2678
2708
|
};
|
|
2679
|
-
appEmbed.
|
|
2709
|
+
appEmbed.fullHeightController.handleEmbedHeight(mockEvent);
|
|
2680
2710
|
|
|
2681
2711
|
// Check if the iframe style was updated
|
|
2682
2712
|
expect(mockIFrame.style.height).toBe('600px');
|
|
@@ -2697,7 +2727,7 @@ describe('App embed tests', () => {
|
|
|
2697
2727
|
data: 0, // This will make it use the default height
|
|
2698
2728
|
type: EmbedEvent.EmbedHeight,
|
|
2699
2729
|
};
|
|
2700
|
-
appEmbed.
|
|
2730
|
+
appEmbed.fullHeightController.handleEmbedHeight(mockEvent);
|
|
2701
2731
|
|
|
2702
2732
|
// Should use the default height
|
|
2703
2733
|
expect(mockIFrame.style.height).toBe('500px');
|
|
@@ -2712,7 +2742,7 @@ describe('App Embed Default Height and Minimum Height Handling', () => {
|
|
|
2712
2742
|
fullHeight: true,
|
|
2713
2743
|
} as AppViewConfig);
|
|
2714
2744
|
await appEmbed.render();
|
|
2715
|
-
expect(appEmbed['
|
|
2745
|
+
expect(appEmbed['fullHeightController'].minimumHeight).toBe(500);
|
|
2716
2746
|
});
|
|
2717
2747
|
test('should set default height to 700 when default height is provided', async () => {
|
|
2718
2748
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
@@ -2721,7 +2751,7 @@ describe('App Embed Default Height and Minimum Height Handling', () => {
|
|
|
2721
2751
|
minimumHeight: 700,
|
|
2722
2752
|
} as AppViewConfig);
|
|
2723
2753
|
await appEmbed.render();
|
|
2724
|
-
expect(appEmbed['
|
|
2754
|
+
expect(appEmbed['fullHeightController'].minimumHeight).toBe(700);
|
|
2725
2755
|
});
|
|
2726
2756
|
});
|
|
2727
2757
|
|
|
@@ -2756,6 +2786,43 @@ describe('AppEmbed uncovered branch tests', () => {
|
|
|
2756
2786
|
});
|
|
2757
2787
|
});
|
|
2758
2788
|
|
|
2789
|
+
test('should set showAnswerEditPanel=false when hideAnswerEditPanel is true', async () => {
|
|
2790
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
2791
|
+
...defaultViewConfig,
|
|
2792
|
+
hideAnswerEditPanel: true,
|
|
2793
|
+
} as AppViewConfig);
|
|
2794
|
+
appEmbed.render();
|
|
2795
|
+
await executeAfterWait(() => {
|
|
2796
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
2797
|
+
showAnswerEditPanel: 'false',
|
|
2798
|
+
});
|
|
2799
|
+
});
|
|
2800
|
+
});
|
|
2801
|
+
|
|
2802
|
+
test('should set showAnswerEditPanel=true when hideAnswerEditPanel is false', async () => {
|
|
2803
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
2804
|
+
...defaultViewConfig,
|
|
2805
|
+
hideAnswerEditPanel: false,
|
|
2806
|
+
} as AppViewConfig);
|
|
2807
|
+
appEmbed.render();
|
|
2808
|
+
await executeAfterWait(() => {
|
|
2809
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
2810
|
+
showAnswerEditPanel: 'true',
|
|
2811
|
+
});
|
|
2812
|
+
});
|
|
2813
|
+
});
|
|
2814
|
+
|
|
2815
|
+
test('should not set showAnswerEditPanel param when hideAnswerEditPanel is not provided', async () => {
|
|
2816
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
2817
|
+
...defaultViewConfig,
|
|
2818
|
+
} as AppViewConfig);
|
|
2819
|
+
appEmbed.render();
|
|
2820
|
+
await executeAfterWait(() => {
|
|
2821
|
+
const url = new URL(getIFrameSrc());
|
|
2822
|
+
expect(url.searchParams.has('showAnswerEditPanel')).toBe(false);
|
|
2823
|
+
});
|
|
2824
|
+
});
|
|
2825
|
+
|
|
2759
2826
|
test('should set hideObjects param when non-empty array is provided', async () => {
|
|
2760
2827
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
2761
2828
|
...defaultViewConfig,
|
|
@@ -2807,7 +2874,7 @@ describe('AppEmbed uncovered branch tests', () => {
|
|
|
2807
2874
|
});
|
|
2808
2875
|
});
|
|
2809
2876
|
|
|
2810
|
-
test('
|
|
2877
|
+
test('lazy load registration should return early when iFrame is not set', () => {
|
|
2811
2878
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
2812
2879
|
...defaultViewConfig,
|
|
2813
2880
|
fullHeight: true,
|
|
@@ -2815,7 +2882,7 @@ describe('AppEmbed uncovered branch tests', () => {
|
|
|
2815
2882
|
} as AppViewConfig);
|
|
2816
2883
|
// iFrame is not set (render not called), should not throw
|
|
2817
2884
|
expect(() => {
|
|
2818
|
-
(appEmbed as any).
|
|
2885
|
+
(appEmbed as any).fullHeightController.onRender();
|
|
2819
2886
|
}).not.toThrow();
|
|
2820
2887
|
});
|
|
2821
2888
|
});
|