@microsoft/sp-adaptive-card-extension-base 1.23.2 → 1.24.0-beta.2
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/dist/eeec822e-c28a-46b4-affc-7058e4c1aa80.manifest.json +137 -142
- package/dist/index-internal-beta.d.ts +2 -6
- package/dist/index-internal-public.d.ts +2 -6
- package/dist/index-internal.d.ts +193 -28
- package/dist/index.d.ts +2 -2
- package/dist/sp-adaptive-card-extension-base_default_be5d2a76104ab20a7df3.js +1 -0
- package/dist/sp-adaptive-card-extension-base_en-us_daf5e5154e82492eea26.js +1 -0
- package/dist/sp-adaptive-card-extension-base_qps-ploc_3f63afdd6f59d8592622.js +1 -0
- package/dist/sp-adaptive-card-extension-base_qps-ploca_0bc9525a6a1a759b7d4f.js +1 -0
- package/dist/tsdoc-metadata.json +1 -1
- package/lib-commonjs/AdaptiveCardExtensionContext.js +66 -99
- package/lib-commonjs/AdaptiveCardExtensionHost.js +52 -60
- package/lib-commonjs/AdaptiveCardExtensionLoader.js +90 -97
- package/lib-commonjs/BaseAdaptiveCardExtension.js +941 -1138
- package/lib-commonjs/ac-template/basicL1Template.js +19 -14
- package/lib-commonjs/ac-template/basicL1TemplateSelectAction.js +19 -14
- package/lib-commonjs/ac-template/common/Constants.js +13 -5
- package/lib-commonjs/ac-template/common/CustomElements.js +63 -51
- package/lib-commonjs/ac-template/imageL1Template.js +19 -14
- package/lib-commonjs/ac-template/imageL1TemplateSelectAction.js +19 -14
- package/lib-commonjs/ac-template/index.js +37 -15
- package/lib-commonjs/ac-template/primaryTextL1Template.js +22 -15
- package/lib-commonjs/ac-template/primaryTextL1TemplateSelectAction.js +22 -15
- package/lib-commonjs/ac-template/searchL1Template.js +21 -20
- package/lib-commonjs/ac-template/textInputL1Template.js +38 -39
- package/lib-commonjs/ac-template/util/actionButtonHelper.js +76 -78
- package/lib-commonjs/ac-template/util/getCardRenderParameters.js +109 -119
- package/lib-commonjs/actionShim/AdaptiveCardExtensionActionShim.js +86 -100
- package/lib-commonjs/actionShim/IActionShimProvider.js +5 -2
- package/lib-commonjs/actionShim/getOnBeforeActionArguments.js +30 -29
- package/lib-commonjs/caching/CacheManager.js +40 -35
- package/lib-commonjs/caching/IAdaptiveCardExtensionCacheObject.js +5 -2
- package/lib-commonjs/caching/ICacheSettings.js +5 -2
- package/lib-commonjs/caching/ICachedLoadParameters.js +11 -4
- package/lib-commonjs/caching/cache/ACEMySiteCacheManager.js +88 -90
- package/lib-commonjs/caching/cache/BaseAdaptiveCardExtensionCache.js +21 -24
- package/lib-commonjs/caching/cache/IAdaptiveCardExtensionCache.js +5 -2
- package/lib-commonjs/caching/cache/LocalStorageACECache.js +56 -64
- package/lib-commonjs/common/Flights.js +27 -16
- package/lib-commonjs/common/Killswitches.js +143 -150
- package/lib-commonjs/components/BarChartComponent.js +68 -72
- package/lib-commonjs/components/BaseComponent.js +15 -15
- package/lib-commonjs/components/CardBarComponent.js +15 -9
- package/lib-commonjs/components/CardButtonComponent.js +26 -23
- package/lib-commonjs/components/DataVisualizationComponent.js +30 -19
- package/lib-commonjs/components/ICardButtonBase.js +5 -2
- package/lib-commonjs/components/LineChartComponent.js +28 -22
- package/lib-commonjs/components/PieChartComponent.js +69 -44
- package/lib-commonjs/components/PoweredByComponent.js +15 -9
- package/lib-commonjs/components/PromptsSetComponent.js +15 -9
- package/lib-commonjs/components/SearchBoxComponent.js +15 -9
- package/lib-commonjs/components/SearchFooterComponent.js +15 -6
- package/lib-commonjs/components/TextComponent.js +15 -9
- package/lib-commonjs/components/TextInputComponent.js +15 -9
- package/lib-commonjs/index.js +201 -91
- package/lib-commonjs/interfaces/CardActionType.js +5 -2
- package/lib-commonjs/interfaces/IActionArguments.js +5 -2
- package/lib-commonjs/interfaces/IAdaptiveCardExtension.js +5 -2
- package/lib-commonjs/interfaces/IAdaptiveCardExtensionData.js +5 -2
- package/lib-commonjs/interfaces/IAdaptiveCardExtensionImage.js +12 -3
- package/lib-commonjs/interfaces/IAdaptiveCardExtensionLoadContext.js +5 -2
- package/lib-commonjs/interfaces/IAdaptiveCardExtensionPropertiesMetadata.js +5 -2
- package/lib-commonjs/interfaces/IAdaptiveCardRenderParameters.js +5 -2
- package/lib-commonjs/interfaces/IBaseCardParameters.js +10 -3
- package/lib-commonjs/interfaces/ICardButton.js +5 -2
- package/lib-commonjs/interfaces/ICardRenderParameters.js +5 -2
- package/lib-commonjs/interfaces/IFocusParameters.js +6 -4
- package/lib-commonjs/interfaces/IGetLocationActionTypes.js +5 -2
- package/lib-commonjs/interfaces/IHostContext.js +13 -3
- package/lib-commonjs/interfaces/ILocation.js +6 -4
- package/lib-commonjs/interfaces/INotificationTypes.js +5 -2
- package/lib-commonjs/interfaces/IOnBeforeActionArguments.js +5 -2
- package/lib-commonjs/interfaces/IQuickViewRenderParameters.js +5 -2
- package/lib-commonjs/interfaces/ISPFxAdaptiveCard.js +5 -2
- package/lib-commonjs/interfaces/ISelectMediaActionTypes.js +13 -10
- package/lib-commonjs/interfaces/ISelectionActionTemplateAdaptiveCard.js +5 -2
- package/lib-commonjs/interfaces/IShowLocationActionTypes.js +5 -2
- package/lib-commonjs/interfaces/InternalTypes.js +9 -3
- package/lib-commonjs/isolation/IsolatedAdaptiveCardExtensionService.js +396 -399
- package/lib-commonjs/isolation/RenderArgumentsUtils.js +99 -86
- package/lib-commonjs/isolation/interfaces/IBot.js +6 -4
- package/lib-commonjs/isolation/interfaces/IIsolatedAction.js +5 -2
- package/lib-commonjs/isolation/interfaces/IIsolatedListener.js +5 -2
- package/lib-commonjs/isolation/interfaces/IIsolatedServiceCallbackParameters.js +5 -2
- package/lib-commonjs/isolation/interfaces/ILoadIsolatedAdaptiveCardExtensionParameters.js +5 -2
- package/lib-commonjs/isolation/interfaces/IRenderIsolatedQuickViewParameters.js +13 -3
- package/lib-commonjs/isolation/interfaces/IsolatedAdaptiveCardExtensionApplicationMessageEvent.js +5 -2
- package/lib-commonjs/isolation/interfaces/IsolatedServiceMessageEvent.js +5 -2
- package/lib-commonjs/test-api/AdaptiveCardExtensionTestWrapper.js +95 -123
- package/lib-commonjs/test-api/MockAdaptiveCardExtensionManifestInstance.js +22 -11
- package/lib-commonjs/test-api/index.js +12 -5
- package/lib-commonjs/utilities/StringHelper.js +13 -10
- package/lib-commonjs/views/base/BaseView.js +46 -76
- package/lib-commonjs/views/card/BaseBasicCardView.js +37 -52
- package/lib-commonjs/views/card/BaseCardView.js +56 -81
- package/lib-commonjs/views/card/BaseComponentsCardView.js +41 -39
- package/lib-commonjs/views/card/BaseImageCardView.js +38 -54
- package/lib-commonjs/views/card/BasePrimaryTextCardView.js +37 -54
- package/lib-commonjs/views/card/BaseTemplateCardView.js +47 -67
- package/lib-commonjs/views/card/DefaultCardView.js +24 -29
- package/lib-commonjs/views/card/parameters/BaseParameters.js +5 -2
- package/lib-commonjs/views/card/parameters/CardViewParametersProcessors.js +26 -31
- package/lib-commonjs/views/card/parameters/DataVisualizationParameters.js +75 -76
- package/lib-commonjs/views/card/parameters/FocusedParameters.js +53 -35
- package/lib-commonjs/views/card/parameters/GenericTemplates.js +87 -70
- package/lib-commonjs/views/interfaces/IAdaptiveCardExtensionActionView.js +5 -2
- package/lib-commonjs/views/interfaces/IAdaptiveCardExtensionDataView.js +5 -2
- package/lib-commonjs/views/interfaces/INavigationBarProperties.js +5 -2
- package/lib-commonjs/views/interfaces/IViewNavigator.js +5 -2
- package/lib-commonjs/views/navigator/QuickViewNavigator.js +22 -28
- package/lib-commonjs/views/navigator/ViewNavigator.js +138 -193
- package/lib-commonjs/views/navigator/ViewRegistry.js +25 -26
- package/lib-commonjs/views/quickView/BaseAdaptiveCardQuickView.js +64 -88
- package/lib-commonjs/views/quickView/BaseQuickView.js +32 -46
- package/lib-commonjs/views/quickView/BaseWebQuickView.js +47 -59
- package/{lib → lib-dts}/AdaptiveCardExtensionContext.d.ts +1 -5
- package/{lib → lib-dts}/BaseAdaptiveCardExtension.d.ts +2 -1
- package/lib-esm/AdaptiveCardExtensionContext.js +67 -0
- package/lib-esm/AdaptiveCardExtensionHost.js +65 -0
- package/{lib → lib-esm}/AdaptiveCardExtensionLoader.js +56 -74
- package/lib-esm/BaseAdaptiveCardExtension.js +1237 -0
- package/{lib → lib-esm}/ac-template/basicL1Template.js +6 -4
- package/{lib → lib-esm}/ac-template/basicL1TemplateSelectAction.js +6 -4
- package/{lib → lib-esm}/ac-template/common/Constants.js +3 -2
- package/{lib → lib-esm}/ac-template/common/CustomElements.js +26 -30
- package/{lib → lib-esm}/ac-template/imageL1Template.js +6 -4
- package/{lib → lib-esm}/ac-template/imageL1TemplateSelectAction.js +6 -4
- package/{lib → lib-esm}/ac-template/index.js +2 -1
- package/{lib → lib-esm}/ac-template/primaryTextL1Template.js +10 -5
- package/{lib → lib-esm}/ac-template/primaryTextL1TemplateSelectAction.js +10 -5
- package/{lib → lib-esm}/ac-template/searchL1Template.js +7 -7
- package/{lib → lib-esm}/ac-template/textInputL1Template.js +10 -13
- package/{lib → lib-esm}/ac-template/util/actionButtonHelper.js +45 -57
- package/{lib → lib-esm}/ac-template/util/getCardRenderParameters.js +75 -92
- package/{lib → lib-esm}/actionShim/AdaptiveCardExtensionActionShim.js +74 -87
- package/lib-esm/actionShim/IActionShimProvider.js +7 -0
- package/{lib → lib-esm}/actionShim/getOnBeforeActionArguments.js +22 -25
- package/lib-esm/caching/CacheManager.js +55 -0
- package/lib-esm/caching/IAdaptiveCardExtensionCacheObject.js +7 -0
- package/lib-esm/caching/ICacheSettings.js +5 -0
- package/{lib → lib-esm}/caching/ICachedLoadParameters.js +2 -1
- package/lib-esm/caching/cache/ACEMySiteCacheManager.js +130 -0
- package/{lib → lib-esm}/caching/cache/BaseAdaptiveCardExtensionCache.js +10 -16
- package/lib-esm/caching/cache/IAdaptiveCardExtensionCache.js +7 -0
- package/lib-esm/caching/cache/LocalStorageACECache.js +73 -0
- package/{lib → lib-esm}/common/Flights.js +6 -8
- package/{lib → lib-esm}/common/Killswitches.js +37 -105
- package/lib-esm/components/BarChartComponent.js +112 -0
- package/{lib → lib-esm}/components/BaseComponent.js +8 -4
- package/lib-esm/components/CardBarComponent.js +10 -0
- package/{lib → lib-esm}/components/CardButtonComponent.js +9 -9
- package/lib-esm/components/DataVisualizationComponent.js +26 -0
- package/lib-esm/components/ICardButtonBase.js +7 -0
- package/lib-esm/components/LineChartComponent.js +29 -0
- package/lib-esm/components/PieChartComponent.js +115 -0
- package/lib-esm/components/PoweredByComponent.js +10 -0
- package/lib-esm/components/PromptsSetComponent.js +10 -0
- package/lib-esm/components/SearchBoxComponent.js +10 -0
- package/lib-esm/components/SearchFooterComponent.js +8 -0
- package/lib-esm/components/TextComponent.js +10 -0
- package/lib-esm/components/TextInputComponent.js +10 -0
- package/{lib → lib-esm}/index.js +3 -3
- package/lib-esm/interfaces/CardActionType.js +5 -0
- package/lib-esm/interfaces/IActionArguments.js +7 -0
- package/lib-esm/interfaces/IAdaptiveCardExtension.js +7 -0
- package/lib-esm/interfaces/IAdaptiveCardExtensionData.js +5 -0
- package/lib-esm/interfaces/IAdaptiveCardExtensionImage.js +15 -0
- package/lib-esm/interfaces/IAdaptiveCardExtensionLoadContext.js +5 -0
- package/lib-esm/interfaces/IAdaptiveCardExtensionPropertiesMetadata.js +7 -0
- package/lib-esm/interfaces/IAdaptiveCardRenderParameters.js +5 -0
- package/lib-esm/interfaces/IBaseCardParameters.js +11 -0
- package/lib-esm/interfaces/ICardButton.js +6 -0
- package/lib-esm/interfaces/ICardRenderParameters.js +6 -0
- package/{lib → lib-esm}/interfaces/IFocusParameters.js +3 -3
- package/lib-esm/interfaces/IGetLocationActionTypes.js +7 -0
- package/lib-esm/interfaces/IHostContext.js +15 -0
- package/lib-esm/interfaces/ILocation.js +6 -0
- package/lib-esm/interfaces/INotificationTypes.js +9 -0
- package/lib-esm/interfaces/IOnBeforeActionArguments.js +7 -0
- package/lib-esm/interfaces/IQuickViewRenderParameters.js +5 -0
- package/lib-esm/interfaces/ISPFxAdaptiveCard.js +7 -0
- package/{lib → lib-esm}/interfaces/ISelectMediaActionTypes.js +3 -7
- package/lib-esm/interfaces/ISelectionActionTemplateAdaptiveCard.js +5 -0
- package/lib-esm/interfaces/IShowLocationActionTypes.js +9 -0
- package/lib-esm/interfaces/InternalTypes.js +6 -0
- package/lib-esm/isolation/IsolatedAdaptiveCardExtensionService.js +505 -0
- package/{lib → lib-esm}/isolation/RenderArgumentsUtils.js +79 -71
- package/{lib → lib-esm}/isolation/interfaces/IBot.js +3 -3
- package/lib-esm/isolation/interfaces/IIsolatedAction.js +5 -0
- package/lib-esm/isolation/interfaces/IIsolatedListener.js +7 -0
- package/lib-esm/isolation/interfaces/IIsolatedServiceCallbackParameters.js +5 -0
- package/lib-esm/isolation/interfaces/ILoadIsolatedAdaptiveCardExtensionParameters.js +7 -0
- package/lib-esm/isolation/interfaces/IRenderIsolatedQuickViewParameters.js +10 -0
- package/lib-esm/isolation/interfaces/IsolatedAdaptiveCardExtensionApplicationMessageEvent.js +5 -0
- package/lib-esm/isolation/interfaces/IsolatedServiceMessageEvent.js +5 -0
- package/lib-esm/test-api/AdaptiveCardExtensionTestWrapper.js +125 -0
- package/{lib → lib-esm}/test-api/MockAdaptiveCardExtensionManifestInstance.js +12 -8
- package/{lib → lib-esm}/test-api/index.js +2 -1
- package/lib-esm/utilities/StringHelper.js +8 -0
- package/lib-esm/views/base/BaseView.js +47 -0
- package/lib-esm/views/card/BaseBasicCardView.js +51 -0
- package/lib-esm/views/card/BaseCardView.js +59 -0
- package/lib-esm/views/card/BaseComponentsCardView.js +43 -0
- package/{lib → lib-esm}/views/card/BaseImageCardView.js +24 -36
- package/{lib → lib-esm}/views/card/BasePrimaryTextCardView.js +23 -35
- package/lib-esm/views/card/BaseTemplateCardView.js +65 -0
- package/lib-esm/views/card/DefaultCardView.js +19 -0
- package/lib-esm/views/card/parameters/BaseParameters.js +7 -0
- package/lib-esm/views/card/parameters/CardViewParametersProcessors.js +30 -0
- package/{lib → lib-esm}/views/card/parameters/DataVisualizationParameters.js +41 -35
- package/lib-esm/views/card/parameters/FocusedParameters.js +58 -0
- package/{lib → lib-esm}/views/card/parameters/GenericTemplates.js +59 -34
- package/lib-esm/views/interfaces/IAdaptiveCardExtensionActionView.js +7 -0
- package/lib-esm/views/interfaces/IAdaptiveCardExtensionDataView.js +7 -0
- package/lib-esm/views/interfaces/INavigationBarProperties.js +5 -0
- package/lib-esm/views/interfaces/IViewNavigator.js +5 -0
- package/lib-esm/views/navigator/QuickViewNavigator.js +22 -0
- package/lib-esm/views/navigator/ViewNavigator.js +174 -0
- package/lib-esm/views/navigator/ViewRegistry.js +26 -0
- package/lib-esm/views/quickView/BaseAdaptiveCardQuickView.js +65 -0
- package/lib-esm/views/quickView/BaseQuickView.js +28 -0
- package/lib-esm/views/quickView/BaseWebQuickView.js +49 -0
- package/package.json +53 -18
- package/dist/index.js +0 -8
- package/dist/sp-adaptive-card-extension-base_default_80cb284b0ce5185f01a3.js +0 -1
- package/dist/sp-adaptive-card-extension-base_en-us_f42ce38c47d8423e6856.js +0 -1
- package/dist/sp-adaptive-card-extension-base_qps-ploc_256d38b669b67722cc35.js +0 -1
- package/dist/sp-adaptive-card-extension-base_qps-ploca_d709c1c8a8609f16e251.js +0 -1
- package/dist/test-api/AdaptiveCardExtensionTestWrapper.js +0 -155
- package/dist/test-api/MockAdaptiveCardExtensionManifestInstance.js +0 -23
- package/dist/test-api/index.js +0 -6
- package/lib/AdaptiveCardExtensionContext.d.ts.map +0 -1
- package/lib/AdaptiveCardExtensionContext.js +0 -103
- package/lib/AdaptiveCardExtensionHost.d.ts.map +0 -1
- package/lib/AdaptiveCardExtensionHost.js +0 -76
- package/lib/AdaptiveCardExtensionLoader.d.ts.map +0 -1
- package/lib/BaseAdaptiveCardExtension.d.ts.map +0 -1
- package/lib/BaseAdaptiveCardExtension.js +0 -1433
- package/lib/ac-template/basicL1Template.d.ts.map +0 -1
- package/lib/ac-template/basicL1TemplateSelectAction.d.ts.map +0 -1
- package/lib/ac-template/common/Constants.d.ts.map +0 -1
- package/lib/ac-template/common/CustomElements.d.ts.map +0 -1
- package/lib/ac-template/imageL1Template.d.ts.map +0 -1
- package/lib/ac-template/imageL1TemplateSelectAction.d.ts.map +0 -1
- package/lib/ac-template/index.d.ts.map +0 -1
- package/lib/ac-template/primaryTextL1Template.d.ts.map +0 -1
- package/lib/ac-template/primaryTextL1TemplateSelectAction.d.ts.map +0 -1
- package/lib/ac-template/searchL1Template.d.ts.map +0 -1
- package/lib/ac-template/textInputL1Template.d.ts.map +0 -1
- package/lib/ac-template/util/actionButtonHelper.d.ts.map +0 -1
- package/lib/ac-template/util/getCardRenderParameters.d.ts.map +0 -1
- package/lib/actionShim/AdaptiveCardExtensionActionShim.d.ts.map +0 -1
- package/lib/actionShim/IActionShimProvider.d.ts.map +0 -1
- package/lib/actionShim/IActionShimProvider.js +0 -2
- package/lib/actionShim/getOnBeforeActionArguments.d.ts.map +0 -1
- package/lib/caching/CacheManager.d.ts.map +0 -1
- package/lib/caching/CacheManager.js +0 -57
- package/lib/caching/IAdaptiveCardExtensionCacheObject.d.ts.map +0 -1
- package/lib/caching/IAdaptiveCardExtensionCacheObject.js +0 -2
- package/lib/caching/ICacheSettings.d.ts.map +0 -1
- package/lib/caching/ICacheSettings.js +0 -2
- package/lib/caching/ICachedLoadParameters.d.ts.map +0 -1
- package/lib/caching/cache/ACEMySiteCacheManager.d.ts.map +0 -1
- package/lib/caching/cache/ACEMySiteCacheManager.js +0 -135
- package/lib/caching/cache/BaseAdaptiveCardExtensionCache.d.ts.map +0 -1
- package/lib/caching/cache/IAdaptiveCardExtensionCache.d.ts.map +0 -1
- package/lib/caching/cache/IAdaptiveCardExtensionCache.js +0 -2
- package/lib/caching/cache/LocalStorageACECache.d.ts.map +0 -1
- package/lib/caching/cache/LocalStorageACECache.js +0 -84
- package/lib/common/Flights.d.ts.map +0 -1
- package/lib/common/Killswitches.d.ts.map +0 -1
- package/lib/components/BarChartComponent.d.ts.map +0 -1
- package/lib/components/BarChartComponent.js +0 -125
- package/lib/components/BaseComponent.d.ts.map +0 -1
- package/lib/components/CardBarComponent.d.ts.map +0 -1
- package/lib/components/CardBarComponent.js +0 -8
- package/lib/components/CardButtonComponent.d.ts.map +0 -1
- package/lib/components/DataVisualizationComponent.d.ts.map +0 -1
- package/lib/components/DataVisualizationComponent.js +0 -24
- package/lib/components/ICardButtonBase.d.ts.map +0 -1
- package/lib/components/ICardButtonBase.js +0 -2
- package/lib/components/LineChartComponent.d.ts.map +0 -1
- package/lib/components/LineChartComponent.js +0 -32
- package/lib/components/PieChartComponent.d.ts.map +0 -1
- package/lib/components/PieChartComponent.js +0 -99
- package/lib/components/PoweredByComponent.d.ts.map +0 -1
- package/lib/components/PoweredByComponent.js +0 -8
- package/lib/components/PromptsSetComponent.d.ts.map +0 -1
- package/lib/components/PromptsSetComponent.js +0 -8
- package/lib/components/SearchBoxComponent.d.ts.map +0 -1
- package/lib/components/SearchBoxComponent.js +0 -8
- package/lib/components/SearchFooterComponent.d.ts.map +0 -1
- package/lib/components/SearchFooterComponent.js +0 -5
- package/lib/components/TextComponent.d.ts.map +0 -1
- package/lib/components/TextComponent.js +0 -8
- package/lib/components/TextInputComponent.d.ts.map +0 -1
- package/lib/components/TextInputComponent.js +0 -8
- package/lib/index.d.ts.map +0 -1
- package/lib/interfaces/CardActionType.d.ts.map +0 -1
- package/lib/interfaces/CardActionType.js +0 -2
- package/lib/interfaces/IActionArguments.d.ts.map +0 -1
- package/lib/interfaces/IActionArguments.js +0 -2
- package/lib/interfaces/IAdaptiveCardExtension.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardExtension.js +0 -2
- package/lib/interfaces/IAdaptiveCardExtensionData.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardExtensionData.js +0 -2
- package/lib/interfaces/IAdaptiveCardExtensionImage.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardExtensionImage.js +0 -2
- package/lib/interfaces/IAdaptiveCardExtensionLoadContext.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardExtensionLoadContext.js +0 -2
- package/lib/interfaces/IAdaptiveCardExtensionPropertiesMetadata.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardExtensionPropertiesMetadata.js +0 -2
- package/lib/interfaces/IAdaptiveCardRenderParameters.d.ts.map +0 -1
- package/lib/interfaces/IAdaptiveCardRenderParameters.js +0 -2
- package/lib/interfaces/IBaseCardParameters.d.ts.map +0 -1
- package/lib/interfaces/IBaseCardParameters.js +0 -2
- package/lib/interfaces/ICardButton.d.ts.map +0 -1
- package/lib/interfaces/ICardButton.js +0 -2
- package/lib/interfaces/ICardRenderParameters.d.ts.map +0 -1
- package/lib/interfaces/ICardRenderParameters.js +0 -2
- package/lib/interfaces/IFocusParameters.d.ts.map +0 -1
- package/lib/interfaces/IGetLocationActionTypes.d.ts.map +0 -1
- package/lib/interfaces/IGetLocationActionTypes.js +0 -2
- package/lib/interfaces/IHostContext.d.ts.map +0 -1
- package/lib/interfaces/IHostContext.js +0 -2
- package/lib/interfaces/ILocation.d.ts.map +0 -1
- package/lib/interfaces/ILocation.js +0 -6
- package/lib/interfaces/INotificationTypes.d.ts.map +0 -1
- package/lib/interfaces/INotificationTypes.js +0 -2
- package/lib/interfaces/IOnBeforeActionArguments.d.ts.map +0 -1
- package/lib/interfaces/IOnBeforeActionArguments.js +0 -2
- package/lib/interfaces/IQuickViewRenderParameters.d.ts.map +0 -1
- package/lib/interfaces/IQuickViewRenderParameters.js +0 -2
- package/lib/interfaces/ISPFxAdaptiveCard.d.ts.map +0 -1
- package/lib/interfaces/ISPFxAdaptiveCard.js +0 -2
- package/lib/interfaces/ISelectMediaActionTypes.d.ts.map +0 -1
- package/lib/interfaces/ISelectionActionTemplateAdaptiveCard.d.ts.map +0 -1
- package/lib/interfaces/ISelectionActionTemplateAdaptiveCard.js +0 -2
- package/lib/interfaces/IShowLocationActionTypes.d.ts.map +0 -1
- package/lib/interfaces/IShowLocationActionTypes.js +0 -2
- package/lib/interfaces/InternalTypes.d.ts.map +0 -1
- package/lib/interfaces/InternalTypes.js +0 -2
- package/lib/isolation/IsolatedAdaptiveCardExtensionService.d.ts.map +0 -1
- package/lib/isolation/IsolatedAdaptiveCardExtensionService.js +0 -513
- package/lib/isolation/RenderArgumentsUtils.d.ts.map +0 -1
- package/lib/isolation/interfaces/IBot.d.ts.map +0 -1
- package/lib/isolation/interfaces/IIsolatedAction.d.ts.map +0 -1
- package/lib/isolation/interfaces/IIsolatedAction.js +0 -2
- package/lib/isolation/interfaces/IIsolatedListener.d.ts.map +0 -1
- package/lib/isolation/interfaces/IIsolatedListener.js +0 -2
- package/lib/isolation/interfaces/IIsolatedServiceCallbackParameters.d.ts.map +0 -1
- package/lib/isolation/interfaces/IIsolatedServiceCallbackParameters.js +0 -2
- package/lib/isolation/interfaces/ILoadIsolatedAdaptiveCardExtensionParameters.d.ts.map +0 -1
- package/lib/isolation/interfaces/ILoadIsolatedAdaptiveCardExtensionParameters.js +0 -2
- package/lib/isolation/interfaces/IRenderIsolatedQuickViewParameters.d.ts.map +0 -1
- package/lib/isolation/interfaces/IRenderIsolatedQuickViewParameters.js +0 -2
- package/lib/isolation/interfaces/IsolatedAdaptiveCardExtensionApplicationMessageEvent.d.ts.map +0 -1
- package/lib/isolation/interfaces/IsolatedAdaptiveCardExtensionApplicationMessageEvent.js +0 -2
- package/lib/isolation/interfaces/IsolatedServiceMessageEvent.d.ts.map +0 -1
- package/lib/isolation/interfaces/IsolatedServiceMessageEvent.js +0 -2
- package/lib/test-api/AdaptiveCardExtensionTestWrapper.d.ts.map +0 -1
- package/lib/test-api/AdaptiveCardExtensionTestWrapper.js +0 -152
- package/lib/test-api/MockAdaptiveCardExtensionManifestInstance.d.ts.map +0 -1
- package/lib/test-api/index.d.ts.map +0 -1
- package/lib/utilities/StringHelper.d.ts.map +0 -1
- package/lib/utilities/StringHelper.js +0 -11
- package/lib/views/base/BaseView.d.ts.map +0 -1
- package/lib/views/base/BaseView.js +0 -77
- package/lib/views/card/BaseBasicCardView.d.ts.map +0 -1
- package/lib/views/card/BaseBasicCardView.js +0 -63
- package/lib/views/card/BaseCardView.d.ts.map +0 -1
- package/lib/views/card/BaseCardView.js +0 -84
- package/lib/views/card/BaseComponentsCardView.d.ts.map +0 -1
- package/lib/views/card/BaseComponentsCardView.js +0 -44
- package/lib/views/card/BaseImageCardView.d.ts.map +0 -1
- package/lib/views/card/BasePrimaryTextCardView.d.ts.map +0 -1
- package/lib/views/card/BaseTemplateCardView.d.ts.map +0 -1
- package/lib/views/card/BaseTemplateCardView.js +0 -85
- package/lib/views/card/DefaultCardView.d.ts.map +0 -1
- package/lib/views/card/DefaultCardView.js +0 -29
- package/lib/views/card/parameters/BaseParameters.d.ts.map +0 -1
- package/lib/views/card/parameters/BaseParameters.js +0 -2
- package/lib/views/card/parameters/CardViewParametersProcessors.d.ts.map +0 -1
- package/lib/views/card/parameters/CardViewParametersProcessors.js +0 -37
- package/lib/views/card/parameters/DataVisualizationParameters.d.ts.map +0 -1
- package/lib/views/card/parameters/FocusedParameters.d.ts.map +0 -1
- package/lib/views/card/parameters/FocusedParameters.js +0 -43
- package/lib/views/card/parameters/GenericTemplates.d.ts.map +0 -1
- package/lib/views/interfaces/IAdaptiveCardExtensionActionView.d.ts.map +0 -1
- package/lib/views/interfaces/IAdaptiveCardExtensionActionView.js +0 -2
- package/lib/views/interfaces/IAdaptiveCardExtensionDataView.d.ts.map +0 -1
- package/lib/views/interfaces/IAdaptiveCardExtensionDataView.js +0 -2
- package/lib/views/interfaces/INavigationBarProperties.d.ts.map +0 -1
- package/lib/views/interfaces/INavigationBarProperties.js +0 -2
- package/lib/views/interfaces/IViewNavigator.d.ts.map +0 -1
- package/lib/views/interfaces/IViewNavigator.js +0 -2
- package/lib/views/navigator/QuickViewNavigator.d.ts.map +0 -1
- package/lib/views/navigator/QuickViewNavigator.js +0 -29
- package/lib/views/navigator/ViewNavigator.d.ts.map +0 -1
- package/lib/views/navigator/ViewNavigator.js +0 -233
- package/lib/views/navigator/ViewRegistry.d.ts.map +0 -1
- package/lib/views/navigator/ViewRegistry.js +0 -32
- package/lib/views/quickView/BaseAdaptiveCardQuickView.d.ts.map +0 -1
- package/lib/views/quickView/BaseAdaptiveCardQuickView.js +0 -90
- package/lib/views/quickView/BaseQuickView.d.ts.map +0 -1
- package/lib/views/quickView/BaseQuickView.js +0 -45
- package/lib/views/quickView/BaseWebQuickView.d.ts.map +0 -1
- package/lib/views/quickView/BaseWebQuickView.js +0 -64
- /package/{lib → lib-dts}/AdaptiveCardExtensionHost.d.ts +0 -0
- /package/{lib → lib-dts}/AdaptiveCardExtensionLoader.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/basicL1Template.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/basicL1TemplateSelectAction.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/common/Constants.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/common/CustomElements.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/imageL1Template.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/imageL1TemplateSelectAction.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/index.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/primaryTextL1Template.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/primaryTextL1TemplateSelectAction.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/searchL1Template.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/textInputL1Template.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/util/actionButtonHelper.d.ts +0 -0
- /package/{lib → lib-dts}/ac-template/util/getCardRenderParameters.d.ts +0 -0
- /package/{lib → lib-dts}/actionShim/AdaptiveCardExtensionActionShim.d.ts +0 -0
- /package/{lib → lib-dts}/actionShim/IActionShimProvider.d.ts +0 -0
- /package/{lib → lib-dts}/actionShim/getOnBeforeActionArguments.d.ts +0 -0
- /package/{lib → lib-dts}/caching/CacheManager.d.ts +0 -0
- /package/{lib → lib-dts}/caching/IAdaptiveCardExtensionCacheObject.d.ts +0 -0
- /package/{lib → lib-dts}/caching/ICacheSettings.d.ts +0 -0
- /package/{lib → lib-dts}/caching/ICachedLoadParameters.d.ts +0 -0
- /package/{lib → lib-dts}/caching/cache/ACEMySiteCacheManager.d.ts +0 -0
- /package/{lib → lib-dts}/caching/cache/BaseAdaptiveCardExtensionCache.d.ts +0 -0
- /package/{lib → lib-dts}/caching/cache/IAdaptiveCardExtensionCache.d.ts +0 -0
- /package/{lib → lib-dts}/caching/cache/LocalStorageACECache.d.ts +0 -0
- /package/{lib → lib-dts}/common/Flights.d.ts +0 -0
- /package/{lib → lib-dts}/common/Killswitches.d.ts +0 -0
- /package/{lib → lib-dts}/components/BarChartComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/BaseComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/CardBarComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/CardButtonComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/DataVisualizationComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/ICardButtonBase.d.ts +0 -0
- /package/{lib → lib-dts}/components/LineChartComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/PieChartComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/PoweredByComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/PromptsSetComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/SearchBoxComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/SearchFooterComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/TextComponent.d.ts +0 -0
- /package/{lib → lib-dts}/components/TextInputComponent.d.ts +0 -0
- /package/{lib → lib-dts}/index.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/CardActionType.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IActionArguments.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardExtension.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardExtensionData.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardExtensionImage.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardExtensionLoadContext.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardExtensionPropertiesMetadata.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IAdaptiveCardRenderParameters.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IBaseCardParameters.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ICardButton.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ICardRenderParameters.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IFocusParameters.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IGetLocationActionTypes.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IHostContext.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ILocation.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/INotificationTypes.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IOnBeforeActionArguments.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IQuickViewRenderParameters.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ISPFxAdaptiveCard.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ISelectMediaActionTypes.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/ISelectionActionTemplateAdaptiveCard.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/IShowLocationActionTypes.d.ts +0 -0
- /package/{lib → lib-dts}/interfaces/InternalTypes.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/IsolatedAdaptiveCardExtensionService.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/RenderArgumentsUtils.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IBot.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IIsolatedAction.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IIsolatedListener.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IIsolatedServiceCallbackParameters.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/ILoadIsolatedAdaptiveCardExtensionParameters.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IRenderIsolatedQuickViewParameters.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IsolatedAdaptiveCardExtensionApplicationMessageEvent.d.ts +0 -0
- /package/{lib → lib-dts}/isolation/interfaces/IsolatedServiceMessageEvent.d.ts +0 -0
- /package/{lib → lib-dts}/loc/Strings.resx.d.ts +0 -0
- /package/{lib → lib-dts}/test-api/AdaptiveCardExtensionTestWrapper.d.ts +0 -0
- /package/{lib → lib-dts}/test-api/MockAdaptiveCardExtensionManifestInstance.d.ts +0 -0
- /package/{lib → lib-dts}/test-api/index.d.ts +0 -0
- /package/{lib → lib-dts}/utilities/StringHelper.d.ts +0 -0
- /package/{lib → lib-dts}/views/base/BaseView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BaseBasicCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BaseCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BaseComponentsCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BaseImageCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BasePrimaryTextCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/BaseTemplateCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/DefaultCardView.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/parameters/BaseParameters.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/parameters/CardViewParametersProcessors.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/parameters/DataVisualizationParameters.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/parameters/FocusedParameters.d.ts +0 -0
- /package/{lib → lib-dts}/views/card/parameters/GenericTemplates.d.ts +0 -0
- /package/{lib → lib-dts}/views/interfaces/IAdaptiveCardExtensionActionView.d.ts +0 -0
- /package/{lib → lib-dts}/views/interfaces/IAdaptiveCardExtensionDataView.d.ts +0 -0
- /package/{lib → lib-dts}/views/interfaces/INavigationBarProperties.d.ts +0 -0
- /package/{lib → lib-dts}/views/interfaces/IViewNavigator.d.ts +0 -0
- /package/{lib → lib-dts}/views/navigator/QuickViewNavigator.d.ts +0 -0
- /package/{lib → lib-dts}/views/navigator/ViewNavigator.d.ts +0 -0
- /package/{lib → lib-dts}/views/navigator/ViewRegistry.d.ts +0 -0
- /package/{lib → lib-dts}/views/quickView/BaseAdaptiveCardQuickView.d.ts +0 -0
- /package/{lib → lib-dts}/views/quickView/BaseQuickView.d.ts +0 -0
- /package/{lib → lib-dts}/views/quickView/BaseWebQuickView.d.ts +0 -0
- /package/{lib → lib-esm}/loc/Strings.resx.json +0 -0
- /package/{lib → lib-esm}/sp-adaptive-card-base.manifest.json +0 -0
|
@@ -1,217 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var sp_telemetry_1 = require("@msinternal/sp-telemetry");
|
|
10
|
-
var Flights_1 = require("../common/Flights");
|
|
11
|
-
var Killswitches_1 = require("../common/Killswitches");
|
|
12
|
-
var TIMEOUT_INTERVAL = 15000;
|
|
13
|
-
var EMBEDDED_PAGE_CONTAINER = 'embedded-page-container';
|
|
14
|
-
/**
|
|
15
|
-
* @internal
|
|
16
|
-
*/
|
|
17
|
-
var IsolatedAdaptiveCardExtensionService = /** @class */ (function () {
|
|
18
|
-
function IsolatedAdaptiveCardExtensionService(serviceScope) {
|
|
19
|
-
var _this = this;
|
|
20
|
-
this._callbackCache = new Map();
|
|
21
|
-
this._isolatedFrames = new Map();
|
|
22
|
-
this._isolatedListeners = new Map();
|
|
23
|
-
this._handleIframeTimeout = function (isolatedFrameKey, isVCD1P) {
|
|
24
|
-
var frame = _this._isolatedFrames.get(isolatedFrameKey);
|
|
25
|
-
var frameMonitor = frame.frameMonitor, retryMonitor = frame.retryMonitor, tokenMonitor = frame.tokenMonitor;
|
|
26
|
-
/*
|
|
27
|
-
* There is a rare case the iframe is running into a "reset connection" error. This is because the
|
|
28
|
-
* client/server is unable to communicate for an unknown reason. When we run into this, we will attempt to refresh the iframe once.
|
|
29
|
-
*/
|
|
30
|
-
if (frame.retryCount < 1) {
|
|
31
|
-
frame.retryCount += 1;
|
|
32
|
-
frame.retryMonitor = _this._createRetryMonitor();
|
|
33
|
-
// Use a shorter interval for the retry, this would put the retry around ~P95
|
|
34
|
-
frame.timeoutId = setTimeout(function () { return _this._handleIframeTimeout(isolatedFrameKey, isVCD1P); }, TIMEOUT_INTERVAL - 500);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
else if (retryMonitor) {
|
|
38
|
-
retryMonitor.writeUnexpectedFailure('reloadFailed');
|
|
39
|
-
}
|
|
40
|
-
/*
|
|
41
|
-
* If this timeout has been executed then the isolated ACE application
|
|
42
|
-
* did not send the `Ready` message to the host applicaton. By checking if
|
|
43
|
-
* the `tokenMonitor` exists we can verify whether framedteamslogon even requested
|
|
44
|
-
* a token. If it doesn't exist, then we assume we are stuck in the MSAL interactive flow.
|
|
45
|
-
* This would be unexpected in Teams but is a known issue in browsers with ITP or 3P
|
|
46
|
-
* cookies blocked.
|
|
47
|
-
*/
|
|
48
|
-
if (frameMonitor && !frameMonitor.hasEnded) {
|
|
49
|
-
try {
|
|
50
|
-
if (tokenMonitor) {
|
|
51
|
-
frameMonitor.writeUnexpectedFailure('tokenTimeout');
|
|
52
|
-
if (!tokenMonitor.hasEnded) {
|
|
53
|
-
tokenMonitor.writeUnexpectedFailure('timeout');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
if (isVCD1P) {
|
|
58
|
-
// We should never hit this, but adding for completeness
|
|
59
|
-
frameMonitor.writeUnexpectedFailure('authorizeTimeout');
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
frameMonitor.writeExpectedFailure('authorizeTimeout');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
frameMonitor.writeUnexpectedFailure('unexpectedFailure', e);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Message handler for isolated domain iframes.
|
|
73
|
-
*
|
|
74
|
-
* @param message - {@link _IsolatedAdaptiveCardExtensionApplicationMessageEvent}
|
|
75
|
-
*/
|
|
76
|
-
this._handleIsolatedApplicationMessage = function (message) {
|
|
77
|
-
var data = message.data;
|
|
78
|
-
if (data.messageType === 'applicationMessage') {
|
|
79
|
-
var instanceId = data.instanceId, kind = data.kind;
|
|
80
|
-
switch (kind) {
|
|
81
|
-
case 'Card':
|
|
82
|
-
_this._invokeCallback(instanceId, {
|
|
83
|
-
aceData: data.aceData,
|
|
84
|
-
card: data.card,
|
|
85
|
-
cacheObject: data.cacheObject,
|
|
86
|
-
type: kind
|
|
87
|
-
});
|
|
88
|
-
break;
|
|
89
|
-
case 'CloseQuickView':
|
|
90
|
-
var qvFrame = _this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
91
|
-
if (qvFrame) {
|
|
92
|
-
qvFrame.iframe.hidden = true;
|
|
93
|
-
}
|
|
94
|
-
break;
|
|
95
|
-
case 'Error':
|
|
96
|
-
_this._invokeCallback(instanceId, { error: data.error, type: kind });
|
|
97
|
-
break;
|
|
98
|
-
case 'OpenQuickView':
|
|
99
|
-
var frame = _this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
100
|
-
if (frame) {
|
|
101
|
-
frame.iframe.hidden = false;
|
|
102
|
-
}
|
|
103
|
-
break;
|
|
104
|
-
case 'OpenUrl':
|
|
105
|
-
_this._invokeCallback(instanceId, { type: kind, url: data.url });
|
|
106
|
-
break;
|
|
107
|
-
case 'LocationRequest':
|
|
108
|
-
_this._invokeCallback(instanceId, { type: kind });
|
|
109
|
-
break;
|
|
110
|
-
case 'RenderCompleted':
|
|
111
|
-
_this._invokeCallback(instanceId, { type: kind, didUpdate: data.didUpdate });
|
|
112
|
-
break;
|
|
113
|
-
case 'Ready':
|
|
114
|
-
/*
|
|
115
|
-
* Once we get this message from the isolated ACE application, we know it has been loaded
|
|
116
|
-
* and we can start sending messages to the isolated frame.
|
|
117
|
-
*/
|
|
118
|
-
var isolatedFrame = _this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
119
|
-
if (isolatedFrame) {
|
|
120
|
-
if (isolatedFrame.retryMonitor) {
|
|
121
|
-
isolatedFrame.retryMonitor.writeSuccess();
|
|
122
|
-
}
|
|
123
|
-
clearTimeout(isolatedFrame.timeoutId);
|
|
124
|
-
isolatedFrame.frameMonitor.writeSuccess();
|
|
125
|
-
isolatedFrame.isReady = true;
|
|
126
|
-
for (var _i = 0, _a = isolatedFrame.messageQueue; _i < _a.length; _i++) {
|
|
127
|
-
var _b = _a[_i], id = _b[0], msg = _b[1];
|
|
128
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
129
|
-
_this._sendMessage(_this._getIsolatedFrame(id), id, msg);
|
|
130
|
-
}
|
|
131
|
-
isolatedFrame.messageQueue = [];
|
|
132
|
-
}
|
|
133
|
-
break;
|
|
134
|
-
case 'OBOTokenRequest':
|
|
135
|
-
var applicationId = data.applicationId, claims = data.claims;
|
|
136
|
-
_this._getAuthToken(applicationId, claims, message.origin);
|
|
137
|
-
break;
|
|
138
|
-
case 'PropertyPaneConfiguration':
|
|
139
|
-
_this._invokeCallback(instanceId, {
|
|
140
|
-
propertyPaneConfiguration: data.propertyPaneConfiguration,
|
|
141
|
-
type: kind
|
|
142
|
-
});
|
|
143
|
-
break;
|
|
144
|
-
default:
|
|
145
|
-
_this._logError("Unexpected message: ".concat(JSON.stringify(message.data)));
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else if (data.messageType === 'bridgeMessage' && data.bridgeAction === 'onTokenRequested') {
|
|
150
|
-
/*
|
|
151
|
-
* When we load in Teams, we use framedteamslogon to ensure the isolated app iframe has a valid cookie.
|
|
152
|
-
* If it doesn't then framedteamslogon will request a token from the host app to use to call the
|
|
153
|
-
* /Authenticate API, which will set a new session cookie on the iframe and then redirect to the isolated
|
|
154
|
-
* ACE applicaton.
|
|
155
|
-
*/
|
|
156
|
-
var monitor_1 = _this._createTokenRequestMonitor();
|
|
157
|
-
var applicationId = data.applicationId, claims = data.claims;
|
|
158
|
-
var isolatedFrame_1 = _this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
159
|
-
if (!isolatedFrame_1) {
|
|
160
|
-
monitor_1.writeUnexpectedFailure('missingIsolatedFrame');
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
isolatedFrame_1.tokenMonitor = monitor_1;
|
|
164
|
-
var configurableTokenProvider = sp_http_base_1._AadTokenProviders.configurable;
|
|
165
|
-
if (!configurableTokenProvider._oboThirdPartyTokenCallback) {
|
|
166
|
-
monitor_1.writeUnexpectedFailure('missingThirdPartyTokenCallback');
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
try {
|
|
170
|
-
configurableTokenProvider._oboThirdPartyTokenCallback(applicationId, claims)
|
|
171
|
-
.then(function (token) {
|
|
172
|
-
if (!isolatedFrame_1.iframe.contentWindow) {
|
|
173
|
-
throw new Error('missingContentWindow');
|
|
174
|
-
}
|
|
175
|
-
isolatedFrame_1.iframe.contentWindow.postMessage({ token: token, messageType: 'dashboardMessage', kind: 'Token' }, '*');
|
|
176
|
-
monitor_1.writeSuccess();
|
|
177
|
-
})
|
|
178
|
-
.catch(function (e) {
|
|
179
|
-
monitor_1.writeUnexpectedFailure('oboThirdPartyTokenCallbackError', e);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
catch (e) {
|
|
183
|
-
/*
|
|
184
|
-
* This is to account for an exception when calling the `_oboThirdPartyTokenCallback`.
|
|
185
|
-
* We've seen in the past where it unexpectedly returned `undefined` causing the Promise
|
|
186
|
-
* chain to never be executed.
|
|
187
|
-
*/
|
|
188
|
-
monitor_1.writeUnexpectedFailure('unexpectedException', e);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
this._serviceScope = serviceScope;
|
|
193
|
-
window.addEventListener('message', this._handleIsolatedApplicationMessage);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "IsolatedAdaptiveCardExtensionService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return IsolatedAdaptiveCardExtensionService;
|
|
194
9
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
10
|
+
});
|
|
11
|
+
const _spcomponentbase = require("@microsoft/sp-component-base");
|
|
12
|
+
const _spcorelibrary = require("@microsoft/sp-core-library");
|
|
13
|
+
const _spdiagnostics = require("@microsoft/sp-diagnostics");
|
|
14
|
+
const _sphttpbase = require("@microsoft/sp-http-base");
|
|
15
|
+
const _sppagecontext = require("@microsoft/sp-page-context");
|
|
16
|
+
const _sptelemetry = require("@msinternal/sp-telemetry");
|
|
17
|
+
const _Flights = require("../common/Flights");
|
|
18
|
+
const _Killswitches = require("../common/Killswitches");
|
|
19
|
+
const TIMEOUT_INTERVAL = 15000;
|
|
20
|
+
const EMBEDDED_PAGE_CONTAINER = 'embedded-page-container';
|
|
21
|
+
class IsolatedAdaptiveCardExtensionService {
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/ get _pageContext() {
|
|
25
|
+
if (!this._pContext) {
|
|
26
|
+
// Since this service can be autocreated, we must consume services after autocreation has finished
|
|
27
|
+
this._pContext = this._serviceScope.consume(_sppagecontext.PageContext.serviceKey);
|
|
28
|
+
}
|
|
29
|
+
return this._pContext;
|
|
30
|
+
}
|
|
31
|
+
disposeEntry(instanceId, isolatedDomain) {
|
|
210
32
|
this._isolatedListeners.delete(instanceId);
|
|
211
|
-
if (!(0,
|
|
33
|
+
if (!(0, _Killswitches.isRemoveIsolatedDomainOnDisposeKSActivated)()) {
|
|
212
34
|
this._callbackCache.delete(instanceId);
|
|
213
35
|
// reduce the number of Isolated ACEs tied to a isolated domain
|
|
214
|
-
|
|
36
|
+
const frame = this._isolatedFrames.get(isolatedDomain);
|
|
215
37
|
if (frame) {
|
|
216
38
|
frame.childInstanceIds.delete(instanceId);
|
|
217
39
|
// remove the isolated domain when there is no isolated aces depending on it.
|
|
@@ -221,34 +43,31 @@ var IsolatedAdaptiveCardExtensionService = /** @class */ (function () {
|
|
|
221
43
|
}
|
|
222
44
|
}
|
|
223
45
|
}
|
|
224
|
-
}
|
|
46
|
+
}
|
|
225
47
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
var _this = this;
|
|
234
|
-
var callback = args.callback, instanceId = args.instanceId, listenerId = args.listenerId;
|
|
48
|
+
* Load an isolated Adaptive Card Extension.
|
|
49
|
+
*
|
|
50
|
+
* @remarks Only loads one iframe per isolated domain.
|
|
51
|
+
*
|
|
52
|
+
* @param args - {@link _ILoadIsolatedAdaptiveCardExtensionParameters}
|
|
53
|
+
*/ load(args) {
|
|
54
|
+
const { callback, instanceId, listenerId } = args;
|
|
235
55
|
// Normalize the domain since we are using it as dictionary keys
|
|
236
|
-
|
|
237
|
-
|
|
56
|
+
const isolatedDomain = args.isolatedDomain.toLowerCase();
|
|
57
|
+
let isolatedFrame = this._isolatedFrames.get(isolatedDomain);
|
|
238
58
|
if (!isolatedFrame) {
|
|
239
|
-
|
|
240
|
-
|
|
59
|
+
const monitor = this._createLoadMonitor();
|
|
60
|
+
const iframe = document.createElement('iframe');
|
|
241
61
|
// to fix isTeamsHosted in Teams 2.1 and in old Teams isBrowserHosted check
|
|
242
|
-
if (!(0,
|
|
62
|
+
if (!(0, _Killswitches.isFixIframeNameKSActive)() && window.name === EMBEDDED_PAGE_CONTAINER) {
|
|
243
63
|
iframe.name = EMBEDDED_PAGE_CONTAINER;
|
|
244
64
|
}
|
|
245
|
-
|
|
246
|
-
iframe.src = this._configureIframeSrc(isolatedDomain, args,
|
|
65
|
+
const isVCD1P = _spcorelibrary._BrowserUtilities.isTeams1PVivaDesktopHosted();
|
|
66
|
+
iframe.src = this._configureIframeSrc(isolatedDomain, args, isVCD1P);
|
|
247
67
|
/*
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
iframe.hidden = true;
|
|
68
|
+
* Initialize the iframe as hidden and full screen.
|
|
69
|
+
* This effectively sets up the isolated iframe as an overlay over the application.
|
|
70
|
+
*/ iframe.hidden = true;
|
|
252
71
|
iframe.scrolling = 'no';
|
|
253
72
|
iframe.style.overflow = 'hidden';
|
|
254
73
|
iframe.style.height = '100%';
|
|
@@ -261,256 +80,434 @@ var IsolatedAdaptiveCardExtensionService = /** @class */ (function () {
|
|
|
261
80
|
iframe.setAttribute('allow', 'geolocation');
|
|
262
81
|
iframe.setAttribute('data-automation-id', 'isolated_ACE_iframe');
|
|
263
82
|
document.body.appendChild(iframe);
|
|
264
|
-
|
|
83
|
+
const isolatedFrameKey = isolatedDomain.toLowerCase();
|
|
265
84
|
isolatedFrame = {
|
|
266
|
-
iframe
|
|
85
|
+
iframe,
|
|
267
86
|
frameMonitor: monitor,
|
|
268
87
|
isReady: false,
|
|
269
88
|
messageQueue: [],
|
|
270
89
|
retryCount: 0,
|
|
271
90
|
childInstanceIds: new Set()
|
|
272
91
|
};
|
|
273
|
-
isolatedFrame.timeoutId = setTimeout(
|
|
274
|
-
|
|
92
|
+
isolatedFrame.timeoutId = setTimeout(()=>{
|
|
93
|
+
this._handleIframeTimeout(isolatedFrameKey, isVCD1P);
|
|
275
94
|
}, TIMEOUT_INTERVAL);
|
|
276
|
-
this._isolatedFrames.set(
|
|
95
|
+
this._isolatedFrames.set(isolatedFrameKey, isolatedFrame);
|
|
277
96
|
}
|
|
278
|
-
if (!(0,
|
|
97
|
+
if (!(0, _Killswitches.isRemoveIsolatedDomainOnDisposeKSActivated)()) {
|
|
279
98
|
isolatedFrame.childInstanceIds.add(instanceId);
|
|
280
99
|
}
|
|
281
|
-
|
|
100
|
+
const entry = this._isolatedListeners.get(instanceId);
|
|
282
101
|
if (!entry) {
|
|
283
|
-
|
|
102
|
+
const listenerEntry = this._createIsolatedListenerEntry(isolatedDomain, isolatedFrame.iframe, args);
|
|
284
103
|
this._isolatedListeners.set(instanceId, listenerEntry);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
|
|
104
|
+
} else if (!entry.listeners.get(listenerId)) {
|
|
105
|
+
entry.listeners.set(listenerId, {
|
|
106
|
+
callback
|
|
107
|
+
});
|
|
288
108
|
}
|
|
289
109
|
// When we are creating a new isolated ACE during authoring, we need to tell the isolated app to initialize a new ACE instance.
|
|
290
110
|
if (!args.isRenderedFromPersistedData) {
|
|
291
111
|
this.sendInitialize(args);
|
|
292
|
-
}
|
|
293
|
-
else {
|
|
112
|
+
} else {
|
|
294
113
|
this._handleRenderingFromPersistedData(args);
|
|
295
114
|
}
|
|
296
115
|
// If the ACE has previously loaded, then send the latest data to the listener.
|
|
297
116
|
// Otherwise, when the isolated domain iframe has loaded we will automatically notify the listener.
|
|
298
|
-
|
|
117
|
+
const callbackArgs = this._callbackCache.get(instanceId);
|
|
299
118
|
if (callbackArgs) {
|
|
300
119
|
this._invokeCallback(instanceId, callbackArgs, listenerId);
|
|
301
120
|
}
|
|
302
|
-
}
|
|
121
|
+
}
|
|
303
122
|
/**
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
var instanceId = args.instanceId, isSelectAction = args.isSelectAction, listenerId = args.listenerId, pageTheme = args.pageTheme, targetRect = args.targetRect, theme = args.theme, viewId = args.viewId;
|
|
123
|
+
* Display the iframe with the ACE quick view.
|
|
124
|
+
*
|
|
125
|
+
* @param args - {@link _IRenderIsolatedQuickViewParameters}
|
|
126
|
+
*/ renderQuickView(args) {
|
|
127
|
+
const { instanceId, isSelectAction, listenerId, pageTheme, targetRect, theme, viewId } = args;
|
|
310
128
|
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
311
129
|
serviceAction: 'Action',
|
|
312
130
|
action: {
|
|
313
|
-
action: {
|
|
314
|
-
|
|
315
|
-
|
|
131
|
+
action: {
|
|
132
|
+
type: 'QuickView',
|
|
133
|
+
isSelectAction,
|
|
134
|
+
pageTheme,
|
|
135
|
+
targetRect,
|
|
136
|
+
theme,
|
|
137
|
+
viewId
|
|
138
|
+
},
|
|
139
|
+
instanceId,
|
|
140
|
+
listenerId
|
|
316
141
|
}
|
|
317
142
|
});
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}
|
|
143
|
+
}
|
|
144
|
+
setDisplayMode(displayMode) {
|
|
145
|
+
// not implemented
|
|
146
|
+
}
|
|
147
|
+
setRenderType(newRenderType) {
|
|
148
|
+
// not implemented
|
|
149
|
+
}
|
|
325
150
|
/**
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
151
|
+
* Send an action to an isolated ACE.
|
|
152
|
+
*
|
|
153
|
+
* @param action - {@link _IIsolatedAction}
|
|
154
|
+
*/ sendAction(action) {
|
|
155
|
+
const { instanceId } = action;
|
|
156
|
+
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
157
|
+
serviceAction: 'Action',
|
|
158
|
+
action
|
|
159
|
+
});
|
|
160
|
+
}
|
|
334
161
|
/**
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
var instanceId = action.instanceId;
|
|
162
|
+
* Send an action to ACE onBeforeAction in an isolated domain.
|
|
163
|
+
*
|
|
164
|
+
* @param action - {@link _IIsolatedOnBeforeAction}
|
|
165
|
+
*/ sendOnBeforeAction(action) {
|
|
166
|
+
const { instanceId } = action;
|
|
341
167
|
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
342
168
|
serviceAction: 'OnBeforeAction',
|
|
343
|
-
action
|
|
169
|
+
action
|
|
344
170
|
});
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
171
|
+
}
|
|
172
|
+
sendInitialize(args) {
|
|
173
|
+
const { instanceId, manifestId } = args;
|
|
348
174
|
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
349
175
|
serviceAction: 'Initialize',
|
|
350
|
-
instanceId
|
|
351
|
-
manifestId
|
|
176
|
+
instanceId,
|
|
177
|
+
manifestId
|
|
352
178
|
});
|
|
353
|
-
}
|
|
354
|
-
|
|
179
|
+
}
|
|
180
|
+
updateACEData(instanceId, aceData) {
|
|
355
181
|
if (this._isolatedListeners.has(instanceId)) {
|
|
356
182
|
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
357
|
-
aceData
|
|
358
|
-
instanceId
|
|
183
|
+
aceData,
|
|
184
|
+
instanceId,
|
|
359
185
|
serviceAction: 'UpdateACEData'
|
|
360
186
|
});
|
|
361
187
|
}
|
|
362
|
-
}
|
|
363
|
-
|
|
188
|
+
}
|
|
189
|
+
handleLocationRequest(instanceId, location, locationError) {
|
|
364
190
|
this._sendMessage(this._getIsolatedFrame(instanceId), instanceId, {
|
|
365
|
-
location
|
|
366
|
-
locationError
|
|
367
|
-
instanceId
|
|
191
|
+
location,
|
|
192
|
+
locationError,
|
|
193
|
+
instanceId,
|
|
368
194
|
serviceAction: 'LocationResponse'
|
|
369
195
|
});
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
return new
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
return new
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
return new
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
return new
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
196
|
+
}
|
|
197
|
+
_createLoadMonitor() {
|
|
198
|
+
return new _spdiagnostics._QosMonitor('IsolatedAdaptiveCardExtensionService.load');
|
|
199
|
+
}
|
|
200
|
+
_createRetryMonitor() {
|
|
201
|
+
return new _spdiagnostics._QosMonitor('IsolatedAdaptiveCardExtension.iframeReload');
|
|
202
|
+
}
|
|
203
|
+
_createTokenRequestMonitor() {
|
|
204
|
+
return new _spdiagnostics._QosMonitor('IsolatedAdaptiveCardExtensionService.onTokenRequested');
|
|
205
|
+
}
|
|
206
|
+
_createGetAuthTokenMonitor() {
|
|
207
|
+
return new _spdiagnostics._QosMonitor('IsolatedAdaptiveCardExtensionService._getAuthToken');
|
|
208
|
+
}
|
|
209
|
+
_configureDestUrlParams(loadArgs) {
|
|
210
|
+
const { dashboardListId, itemId } = loadArgs;
|
|
211
|
+
const destUrlParams = new URLSearchParams(window.location.search);
|
|
386
212
|
destUrlParams.append('dashboardListID', dashboardListId);
|
|
387
213
|
destUrlParams.append('id', itemId);
|
|
388
|
-
if (
|
|
214
|
+
if (_sptelemetry._SPPerfExperiment.getVariantAndTrackExperiment(_sptelemetry._PerformanceExperiment.WEXOOPIF) === 1) {
|
|
389
215
|
destUrlParams.append('OOPIF', '1');
|
|
390
216
|
}
|
|
391
|
-
destUrlParams.append('deviceContext',
|
|
217
|
+
destUrlParams.append('deviceContext', _spcorelibrary._BrowserUtilities.isTeams1PVivaDesktopHosted() ? 'TeamsDesktop' : 'WebView');
|
|
392
218
|
destUrlParams.append('parentWindowOrigin', window.location.origin);
|
|
393
219
|
return destUrlParams;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
if (
|
|
406
|
-
return "".concat(isolatedUrlBase, "/_layouts/15/brokerlogon.aspx?spfx=true&").concat(sp_core_library_1._BROKER_IN_USE_KEY, "=true&dest=").concat(encodeURIComponent(isolatedUrlBase + destUrl));
|
|
407
|
-
}
|
|
408
|
-
else if (isVCD1P && (0, Flights_1.isFramedTeamsLogonEnabled)()) {
|
|
220
|
+
}
|
|
221
|
+
_configureIframeSrc(isolatedDomain, loadArgs, isVCD1P) {
|
|
222
|
+
const serverRelativeUrl = this._pageContext.site.serverRelativeUrl;
|
|
223
|
+
const destBaseUrl = serverRelativeUrl === '/' ? '' : serverRelativeUrl;
|
|
224
|
+
const isolatedUrlBase = (0, _spcomponentbase._ensureIsolatedDomainUrl)(isolatedDomain, this._pageContext.web.absoluteUrl);
|
|
225
|
+
const destUrlParams = this._configureDestUrlParams(loadArgs);
|
|
226
|
+
const { serviceDestinationEndpoint } = loadArgs;
|
|
227
|
+
const layoutPage = !(0, _Killswitches.isTargetBotDriveAceAspxKSActivated)() && serviceDestinationEndpoint !== undefined ? serviceDestinationEndpoint : 'adaptivecardextensions.aspx';
|
|
228
|
+
const destUrl = `/_layouts/15/${layoutPage}?${destUrlParams.toString()}`;
|
|
229
|
+
if (_spcorelibrary._BrowserUtilities.isUsingSecureBroker()) {
|
|
230
|
+
return `${isolatedUrlBase}/_layouts/15/brokerlogon.aspx?spfx=true&${_spcorelibrary._BROKER_IN_USE_KEY}=true&dest=${encodeURIComponent(isolatedUrlBase + destUrl)}`;
|
|
231
|
+
} else if (isVCD1P && (0, _Flights.isFramedTeamsLogonEnabled)()) {
|
|
409
232
|
// Use framedteamslogon.aspx for scenarios where cookie auth doesn't work e.g. Teams, Safari, etc.
|
|
410
|
-
return
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
233
|
+
return `${isolatedUrlBase}/_layouts/15/framedteamslogon.aspx?spfx=true&dest=${encodeURIComponent(destBaseUrl + destUrl)}`;
|
|
234
|
+
} else {
|
|
413
235
|
return isolatedUrlBase + destUrl;
|
|
414
236
|
}
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
|
|
237
|
+
}
|
|
238
|
+
_createIsolatedListenerEntry(isolatedDomain, iframe, args) {
|
|
239
|
+
const { listenerId, callback, manifestId } = args;
|
|
418
240
|
return {
|
|
419
|
-
isolatedDomain
|
|
241
|
+
isolatedDomain,
|
|
420
242
|
iframe: iframe,
|
|
421
|
-
listeners: new Map([
|
|
422
|
-
|
|
243
|
+
listeners: new Map([
|
|
244
|
+
[
|
|
245
|
+
listenerId,
|
|
246
|
+
{
|
|
247
|
+
callback
|
|
248
|
+
}
|
|
249
|
+
]
|
|
250
|
+
]),
|
|
251
|
+
manifestId
|
|
423
252
|
};
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
}
|
|
253
|
+
}
|
|
254
|
+
_handleRenderingFromPersistedData(args) {
|
|
255
|
+
// not implemented
|
|
256
|
+
}
|
|
428
257
|
/**
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
var entry = this._isolatedListeners.get(instanceId);
|
|
258
|
+
* @internal
|
|
259
|
+
* @param instanceId - string
|
|
260
|
+
* @returns IIsolatedFrame instance
|
|
261
|
+
*/ _getIsolatedFrame(instanceId) {
|
|
262
|
+
const entry = this._isolatedListeners.get(instanceId);
|
|
435
263
|
return entry ? this._isolatedFrames.get(entry.isolatedDomain) : undefined;
|
|
436
|
-
}
|
|
437
|
-
|
|
264
|
+
}
|
|
265
|
+
_sendMessage(isolatedFrame, instanceId, message) {
|
|
438
266
|
if (isolatedFrame) {
|
|
439
267
|
this._postOrQueueMessage(isolatedFrame, message, instanceId);
|
|
268
|
+
} else {
|
|
269
|
+
this._logError(`No entry for ${instanceId}`);
|
|
440
270
|
}
|
|
441
|
-
|
|
442
|
-
this._logError("No entry for ".concat(instanceId));
|
|
443
|
-
}
|
|
444
|
-
};
|
|
271
|
+
}
|
|
445
272
|
/**
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
var _a;
|
|
454
|
-
var entry = this._isolatedListeners.get(instanceId);
|
|
273
|
+
* Notify listeners of a change with the ACE;
|
|
274
|
+
*
|
|
275
|
+
* @param instanceId - ACE instance.
|
|
276
|
+
* @param args - {@link _IsolatedServiceCallbackParameters}
|
|
277
|
+
* @param listenerId - Optional. If provided, only invoke the callback for this listener.
|
|
278
|
+
*/ _invokeCallback(instanceId, args, listenerId) {
|
|
279
|
+
const entry = this._isolatedListeners.get(instanceId);
|
|
455
280
|
this._callbackCache.set(instanceId, args);
|
|
456
281
|
if (entry) {
|
|
457
282
|
if (listenerId) {
|
|
458
|
-
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
entry.listeners.forEach(function (listener) { return listener.callback(args); });
|
|
283
|
+
entry.listeners.get(listenerId)?.callback(args);
|
|
284
|
+
} else {
|
|
285
|
+
entry.listeners.forEach((listener)=>listener.callback(args));
|
|
462
286
|
}
|
|
287
|
+
} else {
|
|
288
|
+
this._logError(`No entry for ${instanceId}`);
|
|
463
289
|
}
|
|
464
|
-
|
|
465
|
-
this._logError("No entry for ".concat(instanceId));
|
|
466
|
-
}
|
|
467
|
-
};
|
|
290
|
+
}
|
|
468
291
|
/**
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
var qosMonitor = this._createGetAuthTokenMonitor();
|
|
479
|
-
var configurableTokenProvider = sp_http_base_1._AadTokenProviders.configurable;
|
|
292
|
+
* Trace log an error.
|
|
293
|
+
*
|
|
294
|
+
* @param errorMessage - Message to create a new `Error` object.
|
|
295
|
+
*/ _logError(errorMessage) {
|
|
296
|
+
_spdiagnostics._TraceLogger.logError(IsolatedAdaptiveCardExtensionService._logSource, new Error(errorMessage));
|
|
297
|
+
}
|
|
298
|
+
_getAuthToken(applicationId, claims, origin) {
|
|
299
|
+
const qosMonitor = this._createGetAuthTokenMonitor();
|
|
300
|
+
const configurableTokenProvider = _sphttpbase._AadTokenProviders.configurable;
|
|
480
301
|
if (!configurableTokenProvider._oboThirdPartyTokenCallback) {
|
|
481
302
|
qosMonitor.writeUnexpectedFailure('oboThirdPartTokenCallbackUndefined');
|
|
482
303
|
this._logError('Unexpected message: oboThirdPartyTokenCallback is not defined.');
|
|
483
304
|
return;
|
|
484
305
|
}
|
|
485
|
-
configurableTokenProvider._oboThirdPartyTokenCallback(applicationId, claims)
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
token: token,
|
|
492
|
-
applicationId: applicationId,
|
|
306
|
+
configurableTokenProvider._oboThirdPartyTokenCallback(applicationId, claims).then((token)=>{
|
|
307
|
+
const originURL = new URL(origin);
|
|
308
|
+
const isolatedFrame = this._isolatedFrames.get(originURL.hostname);
|
|
309
|
+
this._sendMessage(isolatedFrame, '', {
|
|
310
|
+
token,
|
|
311
|
+
applicationId,
|
|
493
312
|
serviceAction: 'OBOToken'
|
|
494
313
|
});
|
|
495
314
|
qosMonitor.writeSuccess();
|
|
496
|
-
})
|
|
497
|
-
.catch(function (err) {
|
|
315
|
+
}).catch((err)=>{
|
|
498
316
|
qosMonitor.writeUnexpectedFailure('oboThirdPartTokenCallbackFailure');
|
|
499
|
-
|
|
317
|
+
this._logError(`Unexpected message: ${JSON.stringify(err)}`);
|
|
500
318
|
});
|
|
501
|
-
}
|
|
502
|
-
|
|
319
|
+
}
|
|
320
|
+
_postOrQueueMessage(isolatedFrame, message, instanceId) {
|
|
503
321
|
if (isolatedFrame.isReady) {
|
|
504
322
|
message.messageType = 'serviceMessage';
|
|
505
323
|
isolatedFrame.iframe.contentWindow.postMessage(message, '*');
|
|
324
|
+
} else {
|
|
325
|
+
isolatedFrame.messageQueue.push([
|
|
326
|
+
instanceId,
|
|
327
|
+
message
|
|
328
|
+
]);
|
|
506
329
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
|
|
330
|
+
}
|
|
331
|
+
constructor(serviceScope){
|
|
332
|
+
this._callbackCache = new Map();
|
|
333
|
+
this._isolatedFrames = new Map();
|
|
334
|
+
this._isolatedListeners = new Map();
|
|
335
|
+
this._handleIframeTimeout = (isolatedFrameKey, isVCD1P)=>{
|
|
336
|
+
const frame = this._isolatedFrames.get(isolatedFrameKey);
|
|
337
|
+
const { frameMonitor, retryMonitor, tokenMonitor } = frame;
|
|
338
|
+
/*
|
|
339
|
+
* There is a rare case the iframe is running into a "reset connection" error. This is because the
|
|
340
|
+
* client/server is unable to communicate for an unknown reason. When we run into this, we will attempt to refresh the iframe once.
|
|
341
|
+
*/ if (frame.retryCount < 1) {
|
|
342
|
+
frame.retryCount += 1;
|
|
343
|
+
frame.retryMonitor = this._createRetryMonitor();
|
|
344
|
+
// Use a shorter interval for the retry, this would put the retry around ~P95
|
|
345
|
+
frame.timeoutId = setTimeout(()=>this._handleIframeTimeout(isolatedFrameKey, isVCD1P), TIMEOUT_INTERVAL - 500);
|
|
346
|
+
return;
|
|
347
|
+
} else if (retryMonitor) {
|
|
348
|
+
retryMonitor.writeUnexpectedFailure('reloadFailed');
|
|
349
|
+
}
|
|
350
|
+
/*
|
|
351
|
+
* If this timeout has been executed then the isolated ACE application
|
|
352
|
+
* did not send the `Ready` message to the host applicaton. By checking if
|
|
353
|
+
* the `tokenMonitor` exists we can verify whether framedteamslogon even requested
|
|
354
|
+
* a token. If it doesn't exist, then we assume we are stuck in the MSAL interactive flow.
|
|
355
|
+
* This would be unexpected in Teams but is a known issue in browsers with ITP or 3P
|
|
356
|
+
* cookies blocked.
|
|
357
|
+
*/ if (frameMonitor && !frameMonitor.hasEnded) {
|
|
358
|
+
try {
|
|
359
|
+
if (tokenMonitor) {
|
|
360
|
+
frameMonitor.writeUnexpectedFailure('tokenTimeout');
|
|
361
|
+
if (!tokenMonitor.hasEnded) {
|
|
362
|
+
tokenMonitor.writeUnexpectedFailure('timeout');
|
|
363
|
+
}
|
|
364
|
+
} else {
|
|
365
|
+
if (isVCD1P) {
|
|
366
|
+
// We should never hit this, but adding for completeness
|
|
367
|
+
frameMonitor.writeUnexpectedFailure('authorizeTimeout');
|
|
368
|
+
} else {
|
|
369
|
+
frameMonitor.writeExpectedFailure('authorizeTimeout');
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
} catch (e) {
|
|
373
|
+
frameMonitor.writeUnexpectedFailure('unexpectedFailure', e);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
/**
|
|
378
|
+
* Message handler for isolated domain iframes.
|
|
379
|
+
*
|
|
380
|
+
* @param message - {@link _IsolatedAdaptiveCardExtensionApplicationMessageEvent}
|
|
381
|
+
*/ this._handleIsolatedApplicationMessage = (message)=>{
|
|
382
|
+
const { data } = message;
|
|
383
|
+
if (data.messageType === 'applicationMessage') {
|
|
384
|
+
const { instanceId, kind } = data;
|
|
385
|
+
switch(kind){
|
|
386
|
+
case 'Card':
|
|
387
|
+
this._invokeCallback(instanceId, {
|
|
388
|
+
aceData: data.aceData,
|
|
389
|
+
card: data.card,
|
|
390
|
+
cacheObject: data.cacheObject,
|
|
391
|
+
type: kind
|
|
392
|
+
});
|
|
393
|
+
break;
|
|
394
|
+
case 'CloseQuickView':
|
|
395
|
+
const qvFrame = this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
396
|
+
if (qvFrame) {
|
|
397
|
+
qvFrame.iframe.hidden = true;
|
|
398
|
+
}
|
|
399
|
+
break;
|
|
400
|
+
case 'Error':
|
|
401
|
+
this._invokeCallback(instanceId, {
|
|
402
|
+
error: data.error,
|
|
403
|
+
type: kind
|
|
404
|
+
});
|
|
405
|
+
break;
|
|
406
|
+
case 'OpenQuickView':
|
|
407
|
+
const frame = this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
408
|
+
if (frame) {
|
|
409
|
+
frame.iframe.hidden = false;
|
|
410
|
+
}
|
|
411
|
+
break;
|
|
412
|
+
case 'OpenUrl':
|
|
413
|
+
this._invokeCallback(instanceId, {
|
|
414
|
+
type: kind,
|
|
415
|
+
url: data.url
|
|
416
|
+
});
|
|
417
|
+
break;
|
|
418
|
+
case 'LocationRequest':
|
|
419
|
+
this._invokeCallback(instanceId, {
|
|
420
|
+
type: kind
|
|
421
|
+
});
|
|
422
|
+
break;
|
|
423
|
+
case 'RenderCompleted':
|
|
424
|
+
this._invokeCallback(instanceId, {
|
|
425
|
+
type: kind,
|
|
426
|
+
didUpdate: data.didUpdate
|
|
427
|
+
});
|
|
428
|
+
break;
|
|
429
|
+
case 'Ready':
|
|
430
|
+
/*
|
|
431
|
+
* Once we get this message from the isolated ACE application, we know it has been loaded
|
|
432
|
+
* and we can start sending messages to the isolated frame.
|
|
433
|
+
*/ const isolatedFrame = this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
434
|
+
if (isolatedFrame) {
|
|
435
|
+
if (isolatedFrame.retryMonitor) {
|
|
436
|
+
isolatedFrame.retryMonitor.writeSuccess();
|
|
437
|
+
}
|
|
438
|
+
clearTimeout(isolatedFrame.timeoutId);
|
|
439
|
+
isolatedFrame.frameMonitor.writeSuccess();
|
|
440
|
+
isolatedFrame.isReady = true;
|
|
441
|
+
for (const [id, msg] of isolatedFrame.messageQueue){
|
|
442
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
443
|
+
this._sendMessage(this._getIsolatedFrame(id), id, msg);
|
|
444
|
+
}
|
|
445
|
+
isolatedFrame.messageQueue = [];
|
|
446
|
+
}
|
|
447
|
+
break;
|
|
448
|
+
case 'OBOTokenRequest':
|
|
449
|
+
const { applicationId, claims } = data;
|
|
450
|
+
this._getAuthToken(applicationId, claims, message.origin);
|
|
451
|
+
break;
|
|
452
|
+
case 'PropertyPaneConfiguration':
|
|
453
|
+
this._invokeCallback(instanceId, {
|
|
454
|
+
propertyPaneConfiguration: data.propertyPaneConfiguration,
|
|
455
|
+
type: kind
|
|
456
|
+
});
|
|
457
|
+
break;
|
|
458
|
+
default:
|
|
459
|
+
this._logError(`Unexpected message: ${JSON.stringify(message.data)}`);
|
|
460
|
+
break;
|
|
461
|
+
}
|
|
462
|
+
} else if (data.messageType === 'bridgeMessage' && data.bridgeAction === 'onTokenRequested') {
|
|
463
|
+
/*
|
|
464
|
+
* When we load in Teams, we use framedteamslogon to ensure the isolated app iframe has a valid cookie.
|
|
465
|
+
* If it doesn't then framedteamslogon will request a token from the host app to use to call the
|
|
466
|
+
* /Authenticate API, which will set a new session cookie on the iframe and then redirect to the isolated
|
|
467
|
+
* ACE applicaton.
|
|
468
|
+
*/ const monitor = this._createTokenRequestMonitor();
|
|
469
|
+
const { applicationId, claims } = data;
|
|
470
|
+
const isolatedFrame = this._isolatedFrames.get(new URL(message.origin).hostname);
|
|
471
|
+
if (!isolatedFrame) {
|
|
472
|
+
monitor.writeUnexpectedFailure('missingIsolatedFrame');
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
isolatedFrame.tokenMonitor = monitor;
|
|
476
|
+
const configurableTokenProvider = _sphttpbase._AadTokenProviders.configurable;
|
|
477
|
+
if (!configurableTokenProvider._oboThirdPartyTokenCallback) {
|
|
478
|
+
monitor.writeUnexpectedFailure('missingThirdPartyTokenCallback');
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
try {
|
|
482
|
+
configurableTokenProvider._oboThirdPartyTokenCallback(applicationId, claims).then((token)=>{
|
|
483
|
+
if (!isolatedFrame.iframe.contentWindow) {
|
|
484
|
+
throw new Error('missingContentWindow');
|
|
485
|
+
}
|
|
486
|
+
isolatedFrame.iframe.contentWindow.postMessage({
|
|
487
|
+
token,
|
|
488
|
+
messageType: 'dashboardMessage',
|
|
489
|
+
kind: 'Token'
|
|
490
|
+
}, '*');
|
|
491
|
+
monitor.writeSuccess();
|
|
492
|
+
}).catch((e)=>{
|
|
493
|
+
monitor.writeUnexpectedFailure('oboThirdPartyTokenCallbackError', e);
|
|
494
|
+
});
|
|
495
|
+
} catch (e) {
|
|
496
|
+
/*
|
|
497
|
+
* This is to account for an exception when calling the `_oboThirdPartyTokenCallback`.
|
|
498
|
+
* We've seen in the past where it unexpectedly returned `undefined` causing the Promise
|
|
499
|
+
* chain to never be executed.
|
|
500
|
+
*/ monitor.writeUnexpectedFailure('unexpectedException', e);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
this._serviceScope = serviceScope;
|
|
505
|
+
window.addEventListener('message', this._handleIsolatedApplicationMessage);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
IsolatedAdaptiveCardExtensionService.serviceKey = _spcorelibrary.ServiceKey.create('sp-adaptive-card-extension-base::IsolatedAdaptiveCardExtensionService', IsolatedAdaptiveCardExtensionService);
|
|
509
|
+
IsolatedAdaptiveCardExtensionService._logSource = {
|
|
510
|
+
id: 'IsolatedAdaptiveCardExtensionService'
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
//# sourceMappingURL=./IsolatedAdaptiveCardExtensionService.js.map
|