{"version":3,"sources":["webpack:///src/modules/notifications-list/notifications-list.view.tsx?6e9c","webpack:///src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?b150","webpack:///src/utils/classnames.ts?8f2b","webpack:///src/modules/adventureworks/adventureworks.tsx?ed80","webpack:///src/modules/default-container-2-slots/default-container-2-slots.tsx?b218","webpack:///src/modules/default-page/default-page.tsx?0e08","webpack:///src/utils/script-utils.ts?9534","webpack:///src/modules/spacer/spacer.tsx?3b03","webpack:///src/modules/default-inline-script/default-inline-script.tsx?3ed3","webpack:///src/modules/default-metatags/default-metatags.tsx?1bb4","webpack:///src/modules/default-external-script/default-external-script.tsx?203d","webpack:///src/modules/default-page-summary/default-page-summary.tsx?b254","webpack:///src/modules/starter/starter.tsx?2704","webpack:///src/components/container-background-image/container-background-image-helper.ts?d691","webpack:///src/components/container-background-image/container-backgroud-image.tsx?89dd","webpack:///src/components/base-components.tsx?5f88","webpack:///src/modules/spacer/spacer.view.tsx?bd25","webpack:///src/modules/fabrikam/fabrikam.tsx?a751","webpack:///src/modules/text-block/text-block.view.tsx?8d9b","webpack:///src/modules/text-block/text-block.tsx?1fe8","webpack:///src/modules/product-page-summary/product-page-summary.tsx?a2ef","webpack:///src/modules/default-container-3-slots/default-container-3-slots.tsx?06cd","webpack:///src/modules/notifications-list/notifications-list.tsx?8a0a","webpack:///src/modules/default-container/default-container.tsx?4334","webpack:///src/modules/script-injector/script-injector.tsx?fad8"],"names":["NotificationsListView","props","React","Module","Object","container","notificationsList","PlaceholderForContainerPreviewComponent","sizePattern","getColumnSizes","config","size","exec","cols","split","slice","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","map","colWidth","showErrors","context","isDebug","isEditor","request","params","getColClassArray","options","xsmall","small","medium","large","filter","Boolean","colWidths","Map","Default2SlotContainer","PureComponent","constructor","super","handleTextChange","event","this","heading","headingText","target","value","_getColClassName","classNames","length","reduce","memo","left","right","push","render","slots","telemetry","data","log","LogLevel","Debug","values","id","typeName","content","slotsClassNames","Warning","headingProps","requestContext","Container","containerType","className","backgroundImage","backgroundImageRepeat","backgroundImageSize","moduleLayout","msdyn365__moduleLayout","HeadingComponent","join","slot","index","key","DefaultPageContainer","skipToMainText","app","platform","tabIndexSkipToMain","isEditorialMode","actionContext","href","tabIndex","header","children","subheader","primary","subfooter","footer","logDebug","debugMessage","logError","errorMessage","Error","isAbsoluteUrl","source","test","isRelativeUrl","Spacer","spacerClass","spacerHeight","viewProps","classnames","renderView","DefaultInlineScript","inlineScript","includes","nonceToken","isNonceEnabled","scriptHtml","SDK_FRAGMENT_NAME","dangerouslySetInnerHTML","__html","DefaultMetaTags","metaTags","metaTagsHtml","_addNonceToInlineScript","metaTagsText","simpleText","text","inlineScripRegex","metaTag","replace","DefaultExternalScript","scriptSource","relativeBaseUrl","url","staticCdnUrl","msdyn365Commerce","getEnvironmentVariable","path","async","defer","DefaultPageSummary","undefined","pageSummary","result","title","description","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","src","pageTitle","_constructPageTitle","HtmlHeadInclude","name","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","pageTitlePrefix","pageTitleSuffix","getBackgroundRepeatProperty","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","image","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","moduleName","layout","isBrowser","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","getAuthoringViewport","imgSettings","viewports","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","vp","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","getDataBgSetAttribute","dataBgSetAttributes","BackgroundImage","state","stylesByViewport","_onChangeHandler","bind","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","lazyLoad","role","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","setState","winInnerWidth","innerWidth","Number","MAX_SAFE_INTEGER","_getDefaultStyle","disableLazyLoad","getContainerType","customClassName","containerContent","tag","textSize","Tag","classNameWithHeading","Text","editProps","onEdit","SpacerView","renderModuleAttributes","TextBlockView","paragraph","TextBlock","MsDyn365","textBlockViewProps","ProductPageSummary","productPageSummary","productId","productBrand","price","productName","productDescription","productImageUrl","_renderProductMetadata","channel","Currency","currencyCode","productMetaData","JSON","stringify","sku","brand","offers","priceCurrency","type","Default3SlotContainer","center","NotificationComponentsList","Component","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","_getCurrentTopPosition","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","find","otherValue","notification","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","unsubscribe","forEach","component","events","getValue","NotificationEvents","RemovedFromList","addNotificationComponent","notificationComponent","instanceId","handler","newList","unshift","_className","moduleProps","_renderNotificationsList","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","newTop","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","get","ScriptInjector","_debug","placeHolderPropsRegEx","RegExp","placeHolders","originalSource","resolvedSource","hasMorePlaceHolders","_resolvePlaceHolder","_isUrl","loadPoint","placeHolderToken","placeHolderTokens","propertyContext","propertyName","user","query"],"mappings":";iMAUO,MAAMA,EAA+DC,GAEpEC,gBAACC,SAAMC,iBAAKH,EAAMI,WACbJ,EAAMK,mBAKJN,a,oCClBf,uBAOeO,YAAf,G,wKCEA,MAAMC,EAAc,2BAmCPC,EAAiB,CAACC,EAAgBC,KAC3C,IAAKH,EAAYI,KAAKF,GAClB,OAAO,EAEX,MAAMG,EAAOH,EAAOI,MAAM,KAAKC,MAAM,GAC/BC,EA1BeC,KACrB,OAAQA,GAAUA,EAAOC,eACrB,IAAK,QACD,MAAO,KACX,IAAK,SACD,MAAO,KACX,IAAK,QACD,MAAO,KACX,IAAK,SACL,QACI,MAAO,KAgBQC,CAAgBR,GACjCS,EAAcJ,GAAc,WAAQA,IAAqB,GAC/D,OAAOH,EAAKQ,IAAKC,GAAD,aAA4BF,EAA5B,YAA0CE,KAGjDC,EAAcC,IACvB,MAAM,QAAEC,EAAF,SAAWC,GAAiCF,GAAWA,EAAQG,SAAWH,EAAQG,QAAQC,QAAW,GAC3G,QAASH,KAAaC,GAMbG,EAAoBC,GAEzB,CACIA,EAAQC,QAAUtB,EAAeqB,EAAQC,QACzCD,EAAQE,OAASvB,EAAeqB,EAAQE,MAAO,SAC/CF,EAAQG,QAAUxB,EAAeqB,EAAQG,OAAQ,UACjDH,EAAQI,OAASzB,EAAeqB,EAAQI,MAAO,UACjDC,OAAOC,SAGJC,EAAY,IAAIC,IAAoB,CAC7C,CAAC,MAAO,YACR,CAAC,MAAO,YACR,CAAC,QAAS,YACV,CAAC,OAAQ,YACT,CAAC,MAAO,YACR,CAAC,SAAU,gB,oCCzEf,uBAGe,cAAMpC,6B,6tBCerB,MAAMqC,UAA8BrC,IAAMsC,cACtCC,YAAYxC,GACRyC,MAAMzC,GAuDH,KAAA0C,iBAAoBC,GAAiCC,KAAK5C,MAAMS,OAAOoC,QAASC,YAAcH,EAAMI,OAAOC,MAK3G,KAAAC,iBAAmB,KACtB,MAAM,OAAExC,GAAWmC,KAAK5C,MAElBkD,EAAatB,YAAiBnB,GAEpC,OAAKyC,EAAWC,OAOTD,EAAWE,OACd,CAACC,EAAD,KAA6C,IAA1BC,EAAMC,GAAoB,EAGzC,OAFAF,EAAKC,KAAKE,KAAKF,GACfD,EAAKE,MAAMC,KAAKD,GACTF,GAEX,CAAEC,KAAM,GAAIC,MAAO,KAZZ,CACHD,KAAM,CAAC,OACPC,MAAO,CAAC,SAjEbE,SACH,MAAM,MAAEC,EAAF,UAASC,EAAT,QAAoBpC,EAApB,OAA6Bd,EAA7B,KAAqCmD,GAAShB,KAAK5C,MACzD2D,EAAUE,IAAIC,IAASC,MAAO,2DAA4D,CACtFC,OAAQ,CAACpB,KAAK5C,MAAMiE,GAAIrB,KAAK5C,MAAMkE,YAGvC,MAAMC,EAAUT,GAASA,EAAMS,QACzBC,EAAkBxB,KAAKK,mBACzBkB,GAAWA,EAAQhB,OAAS,GAC5BQ,EAAUE,IAAIC,IAASO,QAAS,qDAEpC,MAAMxB,EAAUpC,EAAOoC,SAAWe,EAAKf,QACjCyB,EAAY,OACXzB,GADW,IAEdH,iBAAkBE,KAAKF,iBACvB6B,eAAgB3B,KAAK5C,MAAMuB,QAAQG,UAEvC,OACIzB,kBAACuE,IAAS,CACNC,cAAehE,EAAOgE,cACtBC,UAAWjE,EAAOiE,UAClBR,SAAUtB,KAAK5C,MAAMkE,SACrBD,GAAIrB,KAAK5C,MAAMiE,GACfvC,QAASkB,KAAK5C,MAAMuB,QAAQG,QAC5BiD,gBAAiBlE,aAAF,EAAEA,EAAQkE,gBACzBC,sBAAuBnE,aAAF,EAAEA,EAAQmE,sBAC/BC,oBAAqBpE,aAAF,EAAEA,EAAQoE,oBAE7BC,aAAerE,aAAH,EAAGA,EAAgBsE,wBAE9BlC,GAAW5C,kBAAC+E,IAAgB7E,eAACuE,UAAU,qBAAwBJ,IAC/DH,GAAWA,EAAQ,IAAMlE,yBAAKyE,UAAWN,EAAgBd,KAAK2B,KAAK,MAAOd,EAAQ,IAClFA,GAAWA,EAAQ,IAAMlE,yBAAKyE,UAAWN,EAAgBb,MAAM0B,KAAK,MAAOd,EAAQ,IACpFlE,oCACKqB,YAAWC,IACR4C,GACAA,EAAQrD,MAAM,EAAGqD,EAAQhB,OAAS,GAAG/B,IAAI,CAAC8D,EAAiBC,IAEnDlF,yBAAKyE,UAAU,SAASU,IAAKD,GACzBlF,yBAAKyE,UAAU,QACXzE,yBAAKyE,UAAU,oCAAkC,2EAwC1EpC,a,oCC5Gf,+CAeA,MAAM+C,UAA6BpF,gBAC/BuC,YAAYxC,GACRyC,MAAMzC,GAGHyD,SACH,MAAM,MAAEC,EAAF,UAASC,EAAT,GAAoBM,EAApB,SAAwBC,GAAatB,KAAK5C,MAEhD,IAAIsF,EAAiB1C,KAAK5C,MAAMS,QAAUmC,KAAK5C,MAAMS,OAAO6E,eAC5D3B,EAAUE,IAAIC,IAASC,MAAO,uDAAwD,CAAEC,OAAQ,CAACC,EAAIC,KAEhGoB,IACDA,EACI1C,KAAK5C,MAAMuB,QAAQgE,KAAO3C,KAAK5C,MAAMuB,QAAQgE,IAAIC,SAAW5C,KAAK5C,MAAMuB,QAAQgE,IAAIC,SAASF,eAAiB,IAGrH,MAAMG,EAAqBC,YAAgB9C,KAAK5C,MAAMuB,QAAQoE,cAAcpB,iBAAmB,EAAI,EAEnG,OACItE,gBAACA,WAAc,KACXA,qBAAGyE,UAAU,eAAekB,KAAK,QAAQC,SAAUJ,GAC9CH,GAELrF,8BACKyD,GACGA,EAAMoC,QACNpC,EAAMoC,OAAO1E,IAAK2E,GACPA,IAGlBrC,GAASA,EAAMsC,WACZ/F,uBAAKgE,GAAG,aACHP,EAAMsC,UAAU5E,IAAK2E,GACXA,IAInB9F,wBAAMgE,GAAG,QACJP,GACGA,EAAMuC,SACNvC,EAAMuC,QAAQ7E,IAAK2E,GACRA,IAGlBrC,GAASA,EAAMwC,WACZjG,uBAAKgE,GAAG,aACHP,EAAMwC,UAAU9E,IAAK2E,GACXA,IAInB9F,8BACKyD,GACGA,EAAMyC,QACNzC,EAAMyC,OAAO/E,IAAK2E,GACPA,MAQpBV,a,oMCvER,MAAMe,EAAW,CAACC,EAAsB1C,KAC3CA,GAAaA,EAAUE,IAAIC,IAASC,MAAOsC,IAGlCC,EAAW,CAACC,EAAsB5C,KAC3CA,GAAaA,EAAUE,IAAIC,IAAS0C,MAAOD,IAQlCE,EAAiBC,GACnB,kFAAkFC,KAAKD,GAGrFE,EAAiBF,GACnB,8DAA8DC,KAAKD,I,+qBCN9E,MAAMG,UAAe5G,gBACVwD,SACH,MAAM,UAAEiB,GAAc9B,KAAK5C,MAAMS,OAC3BqG,EAAclE,KAAK5C,MAAMS,OAAOsG,aAAlB,aAAuCnE,KAAK5C,MAAMS,OAAOsG,cAAiB,YACxFC,EAAS,OAGRpE,KAAK5C,OAHG,IAIX0E,UAAWA,GAAauC,IAAWH,EAAapC,IAAcoC,IAGlE,OAAOlE,KAAK5C,MAAMkH,WAAWF,IAItBH,a,6FCnBf,MAAMM,UAA4BlH,gBAC9BuC,YAAYxC,GACRyC,MAAMzC,GAGHyD,SACH,MAAM,OAAEhD,GAAWmC,KAAK5C,MACxBoG,YAAS,2BAAD,OAA4BxD,KAAK5C,MAAMiE,GAAvC,YAA6CrB,KAAK5C,MAAMkE,SAAxD,KAAqEtB,KAAK5C,MAAM2D,WACxF,MAAM+C,EAASjG,EAAO2G,aAEtB,IAAKV,GAAqB,KAAXA,GAAiBD,YAAcC,IAAWE,YAAcF,GAKnE,OAJAJ,YACI,wKACA1D,KAAK5C,MAAM2D,WAER,KAGX,GAAI+C,EAAOW,SAAS,cAEhB,OADAf,YAAS,qEAAsE1D,KAAK5C,MAAM2D,WACnF,KAGX,MAAM2D,EAAa1E,KAAK5C,MAAMuB,SAAWgG,YAAe3E,KAAK5C,MAAMuB,QAAQG,SACrE8F,EAAU,kBAAcF,EAAU,iBAAaA,EAAb,KAA6B,GAArD,YAA2DZ,EAA3D,cAChB,OAAOzG,gBAAoBwH,IAAmB,CAAErC,IAAKxC,KAAK5C,MAAMiE,GAAIyD,wBAAyB,CAAEC,OAAQH,MAIhGL,a,yFC5Bf,MAAMS,UAAwB3H,gBACnBwD,SACH,MAAM,KAAEG,EAAF,OAAQnD,GAAWmC,KAAK5C,MACxBsH,EAAa1E,KAAK5C,MAAMuB,SAAWgG,YAAe3E,KAAK5C,MAAMuB,QAAQG,SAC3E,IACImG,EADAC,EAAuB,GAE3B,GAAIrH,EAAOoH,SACPA,EAAWP,EAAa1E,KAAKmF,wBAAwBtH,EAAOoH,SAAUP,GAAc7G,EAAOoH,SAC3FC,EAAeD,GAAYA,EAAS5C,KAAK,WACtC,GAAIrB,EAAKiE,SAAU,CACtBA,EAAWjE,EAAKiE,SAChB,IAAIG,EAAeH,EAASzG,IAAI6G,GAAcA,EAAWC,MACzDF,EAAeV,EAAa1E,KAAKmF,wBAAwBC,EAAcV,GAAcU,EACrFF,EAAeE,GAAgBA,EAAa/C,KAAK,MAErD,OAAOhF,gBAAoBwH,IAAmB,CAAErC,IAAKxC,KAAK5C,MAAMiE,GAAIyD,wBAAyB,CAAEC,OAAQG,KAGnGC,wBAAwBF,EAAoBP,GAChD,MAAMa,EAAmB,4CACzB,OAAON,EACFzG,IAAIgH,GACGD,EAAiBxB,KAAKyB,GACfA,EAAQC,QAAQ,WAAhB,wBAA6Cf,IAEjDc,GAEVlG,OAAOC,UAILyF,a,kCC/Cf,2DAgBA,MAAMU,UAA8BrI,gBAChCuC,YAAYxC,GACRyC,MAAMzC,GAGHyD,SACH,MAAM,OAAEhD,GAAWmC,KAAK5C,MACxBoG,YAAS,2BAAD,OAA4BxD,KAAK5C,MAAMiE,GAAvC,YAA6CrB,KAAK5C,MAAMkE,SAAxD,KAAqEtB,KAAK5C,MAAM2D,WACxF,IAAI+C,EAASjG,EAAO8H,aAEhBC,EAA0B,GAO9B,GALI5F,KAAK5C,MAAMuB,UACXiH,GAAmB5F,KAAK5C,MAAMuB,QAAQG,QAAQ+G,IAAIC,aAClDF,GAAmBG,IAAiBC,uBAAuB,iBAAmB,IAG9EhC,YAAcF,GAEdA,EAAM,UAAM8B,EAAN,YAAyBK,OAAUnC,SACtC,GAAe,KAAXA,IAAkBD,YAAcC,GAKvC,OAJAJ,YACI,mKACA1D,KAAK5C,MAAM2D,WAER,KAEX,MAAM6D,EAAU,uBAAmBd,EAAnB,qBAAsCjG,EAAOqI,MAA7C,oBAA8DrI,EAAOsI,MAArE,gBAEhB,OAAO9I,gBAAoBwH,IAAmB,CAAErC,IAAKxC,KAAK5C,MAAMiE,GAAIyD,wBAAyB,CAAEC,OAAQH,MAIhGc,a,+ECjCf,MAAMU,UAA2B/I,gBACtBwD,SACH,QAA2CwF,IAAvCrG,KAAK5C,MAAM4D,KAAKsF,YAAYC,OAC5B,MAAM,IAAI3C,MAAM,uFAEpB,IACI5C,MACIsF,aACIC,QAAQ,MAAEC,EAAF,YAASC,EAAT,SAAsBC,EAAtB,gBAAgCC,EAAhC,WAAiDC,MAGjE5G,KAAK5C,MAET,MAAM,OACFS,EADE,QAEFc,EACAqC,MACIsF,aACIC,QAAQ,aAAEM,MAGlB7G,KAAK5C,MAGToJ,EAAQ3I,EAAO2I,OAASA,EACxBC,EAAc5I,EAAO4I,aAAeA,EACpCC,EAAW7I,EAAO6I,UAAYA,EAC9BC,EAAmB9I,EAAOiJ,cAAgBjJ,EAAOiJ,aAAaC,KAAQJ,EACtEC,EAAa/I,EAAO+I,YAAcA,EAElC,MAAMI,EAAYhH,KAAKiH,oBAAoBT,EAAO7H,GAAWA,EAAQG,SAAWH,EAAQG,QAAQ6D,KAChG,OACItF,gCACIA,gBAAC6J,IAAe,KACXF,GAAa3J,6BACT2J,GAEJP,GAAepJ,wBAAM8J,KAAK,cAAc5F,QAASkF,IACjDC,GAAYrJ,wBAAM8J,KAAK,WAAW5F,QAASmF,IAC3CG,GAAgBxJ,wBAAM+J,IAAI,YAAYpE,KAAM6D,IAC5CD,GAAcvJ,wBAAM+J,IAAI,gBAAgBpE,KAAM4D,MAEjD/I,EAAOwJ,eAAiBrH,KAAKsH,cAAcN,EAAWP,EAAaE,IACnE9I,EAAO0J,oBAAsBvH,KAAKwH,mBAAmBR,EAAWP,EAAaE,IAKnFW,cAAcd,EAA2BC,EAAiCE,GAC9E,OACItJ,gBAAC6J,IAAe,KACXV,GAASnJ,wBAAMoK,SAAS,WAAWlG,QAASiF,IAC5CC,GAAepJ,wBAAMoK,SAAS,iBAAiBlG,QAASkF,IACxDE,GAAmBtJ,wBAAMoK,SAAS,WAAWlG,QAASoF,IACvDtJ,wBAAMoK,SAAS,UAAUlG,QAAQ,aAKrCiG,mBACJhB,EACAC,EACAE,GAEA,OACItJ,gBAAC6J,IAAe,KACXV,GAASnJ,wBAAM8J,KAAK,gBAAgB5F,QAASiF,IAC7CC,GAAepJ,wBAAM8J,KAAK,sBAAsB5F,QAASkF,IACzDE,GAAmBtJ,wBAAM8J,KAAK,gBAAgB5F,QAASoF,IACxDtJ,wBAAM8J,KAAK,eAAe5F,QAAQ,aAKtC0F,oBAAoBT,EAA2B7D,GAC9C6D,IACDA,EAAQ,IAGZ,MAAMkB,EAAe1H,KAAK5C,MAAMS,OAChC,GAAI6J,GAAgBA,EAAaC,wBAC7B,OAAOnB,EAGX,MAAMoB,EAAYjF,GAAOA,EAAIC,SAU7B,OATIgF,IACIA,EAAUC,kBACVrB,EAASoB,EAAUC,gBAA6BrB,GAEhDoB,EAAUE,kBACVtB,GAAUoB,EAAUE,kBAIrBtB,GAIAJ,a,kCC7Gf,uBAGe,cAAM/I,6B,myBCiBrB,MAAM0K,EAA8B,CAACjK,EAA0BkK,KAC3D,IAAKlK,GAAiB,UAATA,EACT,MAAO,YAEX,OAAQkK,GACJ,IAAK,WACD,MAAO,YACX,IAAK,SACD,MAAO,SACX,QACI,MAAO,cAIbC,EAA6BnK,IAC/B,OAAQA,GACJ,IAAK,QACD,MAAO,QACX,IAAK,UACD,MAAO,UACX,IAAK,UACL,QACI,SA4CCoK,EAAwC9K,IAAiE,MAClH,MAAM,cAAEyE,EAAF,MAAiBsG,EAAjB,QAAwBrJ,EAAxB,QAAiCsJ,GAAYhL,EAE7CiL,EAAY,UAAGvJ,EAAQuJ,oBAAX,QAA2B,GACvCC,EAAgBH,EAAMG,cAEtBC,EAA0C,GAE1CC,EAAiCC,YAAkCJ,GACzE,GAAIG,GAAkCF,EAAe,CAEjD,MAAMI,EA1Be,EAACC,EAAgCC,KAC1D,IAAK7C,IAAiB8C,UAClB,OAIJ,MAAMC,EAAmBC,OAAeC,UAAUF,gBAClD,OAAKA,EAKEG,YAAqCN,EAAYC,EAAQ,kBAAmBE,aAAxC,EAAwCA,EAAiBI,oBALpG,GAmB+BC,CAAqBtH,EAAeuG,aAAhB,EAAgBA,EAASQ,QAClEQ,EAAW,OACVd,GADU,IAEbe,UAAU,EAAD,GAAO,IAAWX,GAAsBJ,EAAce,WArDhE,CACHC,GAAI,CACAC,EAAG,IACHC,EAAG,KAEPC,GAAI,CACAF,EAAG,KACHC,EAAG,KAEPE,GAAI,CACAH,EAAG,KACHC,EAAG,KAEPG,GAAI,CACAJ,EAAG,KACHC,EAAG,KAEPI,GAAI,CACAL,EAAG,KACHC,EAAG,UAsCDK,GAA6B,EACnCtM,OAAOuM,KAAKV,EAAYC,WAAW7K,IAAIuL,IAAK,MACxC,MAAMC,EAAWD,EACXE,EAAcC,YAAe7B,EAAce,EAAaY,EAAUxB,GAClE2B,EAASC,YACXjC,EAAMpB,IACNqC,EAAYC,UAAUW,GACtBZ,EACAS,EACA1B,aAL4B,EAK5BA,EAAOkC,iBACPvL,aAN4B,EAM5BA,EAASwL,aAEb/B,EAAOyB,GAAY,CACfO,SAAUN,EAAYO,IACtBC,SAAUR,EAAYS,IACtBC,UAAS,UAAEvB,EAAYC,UAAUW,UAAxB,aAAE,EAAiCR,EAC5CzH,gBAAiBoI,EACjBS,iBAAkB7C,EAA4BK,aAAD,EAACA,EAAStK,KAAMsK,aAAhB,EAAgBA,EAASJ,QACtE6C,eAAgB5C,EAA0BG,aAAD,EAACA,EAAStK,MACnDgN,mBAAoB,mBAKhC,OAAOvC,GAGEwC,EAAqBC,IAC9B,IAAIC,EAAwB,GAS5B,OARID,IACAC,EAAK,KAAQD,GACbC,EAAK,cAAe5E,EACpB4E,EAAK,MAAY,OACbD,EAAajJ,kBACbkJ,EAAK,gBAAL,eAAmCD,EAAajJ,gBAAhD,QAGDkJ,GA4CEC,EAAyB3C,IAClC,MAAM4C,EAAgC,GAOtC,OANA5N,OAAOuM,KAAKvB,GAAQ/J,IAAIuL,IATiBkB,MAUjC1C,EAAOwB,GAAIhI,iBACXoJ,EAAoBvK,KAApB,UAA4B2H,EAAOwB,GAAIhI,gBAAvC,aAXiCkJ,EAWsD1C,EAAOwB,IAV5FQ,SACA,gBAAN,OAAuBU,EAAMV,SAA7B,QAEG,OAWAY,EAAoB9I,KAAK,Q,ykBC3K7B,MAAM+I,UAAwB/N,gBAKjCuC,YAAYxC,EAA8BiO,GACtCxL,MAAMzC,GACN4C,KAAKsL,iBAAmBpD,EAAqClI,KAAK5C,OAClE4C,KAAKuL,iBAAmBvL,KAAKuL,iBAAiBC,KAAKxL,MACnDA,KAAKgL,aAAehL,KAAKyL,mBACzBzL,KAAK0L,SAAU,EACf1L,KAAK2L,iBAAmB3L,KAAK2L,iBAAiBH,KAAKxL,MACnDA,KAAKyL,iBAAmBzL,KAAKyL,iBAAiBD,KAAKxL,MACnDA,KAAKqL,MAAQ,CAAEO,kBAAkB,GAG9BC,oBACC9F,IAAiB8C,YACjBE,OAAO+C,iBAAiB,SAAU9L,KAAK2L,kBACvC3L,KAAK0L,SAAU,EACf1L,KAAK2L,oBAINI,uBACChG,IAAiB8C,YACjBE,OAAOiD,oBAAoB,SAAUhM,KAAK2L,kBAC1C3L,KAAK0L,SAAU,GAIhBO,sBAAsBC,EAAkCC,GAAwC,gBACnG,OACInM,KAAKqL,QAAUc,IACf,UAAAnM,KAAK5C,MAAM0B,eAAX,eAAoBuJ,iBAApB,UAAqC6D,EAAUpN,eAA/C,aAAqC,EAAmBuJ,eACxDrI,KAAK5C,MAAMgL,QAAQJ,SAAWkE,EAAU9D,QAAQJ,QAChDhI,KAAK5C,MAAMgL,QAAQtK,OAASoO,EAAU9D,QAAQtK,MAC9CkC,KAAK5C,MAAMgL,QAAQQ,SAAWsD,EAAU9D,QAAQQ,SAChD,UAAA5I,KAAK5C,MAAM+K,aAAX,eAAkBG,kBAAlB,UAAoC4D,EAAU/D,aAA9C,aAAoC,EAAiBG,iBACrD,UAAAtI,KAAK5C,MAAM+K,aAAX,eAAkBpB,QAAlB,UAA0BmF,EAAU/D,aAApC,aAA0B,EAAiBpB,KAO5ClG,SACH,MAAM,SAAEsC,GAAanD,KAAK5C,MAE1B,IAII,GAHA4C,KAAKsL,iBAAmBpD,EAAqClI,KAAK5C,OAClE4C,KAAKgL,aAAehL,KAAKyL,mBAErBzL,KAAKgL,aAAc,CACnB,MAAMoB,EAA2BC,YAAuBrM,KAAK5C,MAAM0B,SAAlC,UA5Db,gCA4Da,8BA5Db,gCA+DdwN,EAAqBtM,KAAKuM,mBAC5BH,EACApM,KAAKgL,aACLhL,KAAKsL,iBACLtL,KAAKwM,eAEHC,EAAazM,KAAK0M,eAAeJ,GACjCK,EAAgBN,YAAuBrM,KAAK5C,MAAM0B,SAAW,CAAE8N,cAAe5M,KAAKuL,kBAAqB,GAE9G,OAAIvL,KAAKqL,MAAMO,iBAGPvO,uCAASsP,EAAmBF,GACvBtJ,GAGFnD,KAAKwM,cAGRnP,uCAASsP,EAAa,CAAE7K,UAAWsK,IAC9BjJ,GAML9F,uCAASsP,EAAmB3M,KAAK6M,yBAC5B1J,GAMb,OAAO9F,gCAAG8F,GAEhB,SAEE,OAAO9F,gCAAG8F,IAIVoJ,mBACJzK,EACAkJ,EACAM,EACAwB,GAEA,OAAIA,EDkBwC,EAChDhL,EACAkJ,EACAzC,KAEA,MAAMkE,EAAa,CACfM,KAAM,MACNjL,UAAU,GAAD,OAAKA,EAAL,aACT,aAAcoJ,EAAsB3C,IAQxC,OALIyC,IACAyB,EAAU,MAAY1B,EAAkBC,GAExCyB,EAAU,MAAV,qBAAyCpG,GAEtCoG,GCjCQO,CAAqClL,EAAWkJ,EAAcM,GDoCrC,EACxCxJ,EACAkJ,KAEA,MAAMyB,EAAa,CACfM,KAAM,MACNjL,aAMJ,OAHIkJ,IACAyB,EAAU,MAAY1B,EAAkBC,IAErCyB,GC9CQQ,CAA6BnL,EAAWkJ,GAI/C0B,eAAeJ,GACnB,OAAO,OAAKA,GAAZ,IAAgCrB,MAAM,KAAMqB,aAAP,EAAOA,EAAoBrB,SAG5DM,iBAAiBxL,GACrB,GAAIA,EAAMI,SAAYJ,EAA+BmN,cAAe,CAChE,MAAMC,EAAenN,KAAK5C,MAAM+K,MAC1BiF,EAAmBrN,EAAMI,OAC/BgN,EAAQE,MAAQD,EAAYhN,OAI5BuL,mBACJ,GAAI5F,IAAiB8C,UAAW,CAC5B,MAAMyE,EAAgBtN,KAAKyL,oBAEvBzL,KAAK0L,SAAY4B,IAAkB,IAAStN,KAAKgL,aAAcsC,KAC/DtN,KAAKuN,SAAS,CAAE3B,kBAAkB,KAKtCH,mBACJ,GAAI1F,IAAiB8C,UAAW,CAC5B,MAAM2E,EAAwBzE,OAAO0E,WACrC,IAAIH,EAUJ,OATA/P,OAAOuM,KAAK9J,KAAKsL,kBAAkB9M,IAAIuL,IAAK,aAEnC,UAAA/J,KAAKsL,iBAAiBvB,UAAtB,SAA2BU,UAA3B,UAAuCzK,KAAKsL,iBAAiBvB,UAA7D,OAAuC,EAA2BQ,aAClE,UAAAvK,KAAKsL,iBAAiBvB,UAAtB,eAA2BU,WAAY,IAAM+C,GAC9CA,KAAkB,UAAAxN,KAAKsL,iBAAiBvB,UAAtB,eAA2BQ,WAAYmD,OAAOC,oBAEhEL,EAAgBtN,KAAKsL,iBAAiBvB,MAGvCuD,EAEP,OAAOtN,KAAK4N,mBAIZpB,cAAW,QAEf,QAAO,UAACxM,KAAK5C,MAAM+K,aAAZ,iBAAC,EAAkBG,qBAAnB,OAAC,EAAiCuF,iBAGrCD,mBAAgB,MACpB,MAAM,QAAE9O,GAAYkB,KAAK5C,MACnBoL,EAAiCC,YAAiC,UAAC3J,EAAQuJ,oBAAT,QAAyB,IACjG,OAAOrI,KAAKsL,iBAAiB9C,GAGzBqE,wBACJ,MAAM5B,EAAQjL,KAAK4N,mBACbtB,EAAqBrB,EACrBjL,KAAKuM,mBA5KiB,gCA4K+BtB,EAAOjL,KAAKsL,iBAAkBtL,KAAKwM,eACxF,GACN,OAAOxM,KAAK0M,eAAeJ,ICnHnC,MAAMwB,EAAoBjM,IACtB,OAAQA,GACJ,IAAK,YACD,MAAO,YACX,IAAK,QACL,QACI,MAAO,UAQND,EAAyCxE,IAClD,MAAM,cACFyE,EADE,UAEFC,EAFE,SAGFR,EAHE,GAIFD,EAJE,SAKF8B,EALE,gBAMFpB,EANE,QAOFjD,EAPE,sBAQFkD,EARE,oBASFC,EATE,aAUFC,GACA9E,EACE2Q,EAAkBjM,EAAS,WAAOA,GAAc,GAEtD,IAAIkM,EAAmB7K,EAsBvB,OArBItB,IACAmM,EAAmB3Q,uBAAKyE,UAAU,OAAOkM,IAGzCjM,GAAmBA,EAAgBgF,KAAOhF,EAAgBuG,eAAiBxJ,IAC3EkP,EACI3Q,gBAAC+N,EAAe,CACZvJ,cAAeP,EACfxC,QAASA,EACTqJ,MAAOpG,EACPqG,QAAS,CACLJ,OAAQhG,EACRlE,KAAMmE,EACN2G,OAAQ1G,IAGX8L,IAKNnM,EACHxE,uBAAKyE,UAAS,UAAKR,EAAL,YAAiBD,EAAjB,YAAuByM,EAAiBjM,IAAxC,OAAyDkM,IAAoBC,GAE3F3Q,uBAAKyE,UAAS,UAAKR,EAAL,YAAiBD,GAAjB,OAAsB0M,IAAoBC,IAInD5L,EAAoBhF,IAC7B,MAAM,IAAE6Q,EAAF,YAAO/N,EAAP,SAAoBgO,EAApB,UAA8BpM,GAAc1E,EAC5C+Q,EAAMF,GAAO,KACbG,EAAuBF,EAAQ,kBAAcA,EAAd,YAA0BpM,GAA1B,kBAAmDA,GACxF,OACK5B,GACG7C,gBAACgR,IAAI,CACDvM,UAAWsM,EACXH,IAAKE,EACL7I,KAAMpF,EACNoO,UAAW,CAAEC,OAAQnR,EAAM0C,iBAAkB6B,eAAgBvE,EAAMuE,mBAG3E,O,mEC1IO6M,UAJgCpR,GAC3CC,qCAAKyE,UAAW1E,EAAM0E,UAAWT,GAAIjE,EAAMiE,IAAQjE,EAAMqR,uBAAuBrR,M,kCCLpF,uBAGe,cAAMC,6B,mECONqR,UANsCtR,GACjDC,qCAAKyE,UAAW1E,EAAM0E,UAAWT,GAAIjE,EAAMiE,IAAQjE,EAAMqR,uBAAuBrR,IAC3EA,EAAMuR,Y,qsBCSf,MAAMC,UAAkBvR,gBAAxBuC,kCAaW,KAAAE,iBAAoBC,GAAyCC,KAAK5C,MAAMS,OAAO8Q,UAAY5O,EAAMI,OAAOC,MAZxGS,SACH,MAAM,UAAE8N,EAAF,UAAa7M,GAAc9B,KAAK5C,MAAMS,OACtCyH,EAAOqJ,GAAatR,gBAACwR,IAA0B,CAACvJ,KAAMqJ,EAAWL,UAAW,CAAEC,OAAQvO,KAAKF,iBAAkB6B,eAAgB3B,KAAK5C,MAAMuB,QAAQG,WAChJgQ,EAAkB,OACjB9O,KAAK5C,OADY,IAEpBuR,UAAWrJ,EACXxD,UAAWuC,IAAW,gBAAiBvC,KAG3C,OAAO9B,KAAK5C,MAAMkH,WAAWwK,IAKtBF,a,+ECnBf,MAAMG,UAA2B1R,gBACtBwD,SAAM,MACT,QAAkDwF,IAA9CrG,KAAK5C,MAAM4D,KAAKgO,mBAAmBzI,OACnC,MAAM,IAAI3C,MAAM,uFAEpB,IACI5C,MACIgO,oBACIzI,QAAQ,MAAEC,EAAF,YAASC,EAAT,SAAsBC,EAAtB,gBAAgCC,EAAhC,WAAiDC,MAGjE5G,KAAK5C,MAET,MAAM,OACFS,EADE,QAEFc,EACAqC,MACIgO,oBACIzI,QAAQ,aAAEM,EAAF,UAAgBoI,EAAhB,aAA2BC,EAA3B,MAAyCC,MAGzDnP,KAAK5C,MAGHgS,EAAc5I,EACd6I,EAAqB5I,EACrB6I,EAAkB3I,EAGxBH,EAAQ3I,EAAO2I,OAASA,EACxBC,EAAc5I,EAAO4I,aAAeA,EACpCC,EAAW7I,EAAO6I,UAAYA,EAC9BC,EAAmB9I,EAAOiJ,cAAgBjJ,EAAOiJ,aAAaC,KAAQJ,EACtEC,EAAa/I,EAAO+I,YAAcA,EAGlC,MAAMI,EAAYhH,KAAKiH,oBAAoBT,EAAO7H,GAAWA,EAAQG,SAAWH,EAAQG,QAAQ6D,KAChG,OACItF,gCACIA,gBAAC6J,IAAe,KACXF,GAAa3J,6BACT2J,GAEJP,GAAepJ,wBAAM8J,KAAK,cAAc5F,QAASkF,IACjDC,GAAYrJ,wBAAM8J,KAAK,WAAW5F,QAASmF,IAC3CG,GAAgBxJ,wBAAM+J,IAAI,YAAYpE,KAAM6D,IAC5CD,GAAcvJ,wBAAM+J,IAAI,gBAAgBpE,KAAM4D,KAElD5G,KAAKuP,uBAAuBH,EAAaC,EAAoBC,EAAiBzI,EAAcoI,EAAWE,EAAvG,UAA8GxQ,EAAQG,QAAQ0Q,eAA9H,aAA8G,EAAyBC,SAAUP,IAChJrR,EAAOwJ,eAAiBrH,KAAKsH,cAAcN,EAAWP,EAAaE,IACnE9I,EAAO0J,oBAAsBvH,KAAKwH,mBAAmBR,EAAWP,EAAaE,IAYnFW,cAAcd,EAA2BC,EAAiCE,GAC9E,OACItJ,gBAAC6J,IAAe,KACXV,GAASnJ,wBAAMoK,SAAS,WAAWlG,QAASiF,IAC5CC,GAAepJ,wBAAMoK,SAAS,iBAAiBlG,QAASkF,IACxDE,GAAmBtJ,wBAAMoK,SAAS,WAAWlG,QAASoF,IACvDtJ,wBAAMoK,SAAS,UAAUlG,QAAQ,aAiBrCgO,uBAAuBH,EAC3B3I,EACAE,EACAE,EACAoI,EACAE,EACAO,EACAR,GAEA,MAAMS,EAAkBC,KAAKC,UAAU,CACnC,WAAY,oBACZ,QAAS,UACT1I,KAAMiI,EACN3I,cACA0B,MAAOxB,EACPmJ,IAAKb,EACLc,MAAO,CACH,QAAS,QACT5I,KAAM+H,GAEVc,OAAQ,CACJ,QAAS,QACTnK,IAAKgB,EACLoJ,cAAeP,EACfP,WAGR,OACI9R,gBAAC6J,IAAe,KAEZ7J,4CAAwB,UAAU6S,KAAK,sBAAsBpL,wBAAyB,CAAEC,OAAQ4K,MAWpGnI,mBACJhB,EACAC,EACAE,GAEA,OACItJ,gBAAC6J,IAAe,KACXV,GAASnJ,wBAAM8J,KAAK,gBAAgB5F,QAASiF,IAC7CC,GAAepJ,wBAAM8J,KAAK,sBAAsB5F,QAASkF,IACzDE,GAAmBtJ,wBAAM8J,KAAK,gBAAgB5F,QAASoF,IACxDtJ,wBAAM8J,KAAK,eAAe5F,QAAQ,aAUtC0F,oBAAoBT,EAA2B7D,GAC9C6D,IACDA,EAAQ,IAEZ,MAAMkB,EAAe1H,KAAK5C,MAAMS,OAChC,GAAI6J,GAAgBA,EAAaC,wBAC7B,OAAOnB,EAEX,MAAMoB,EAAYjF,GAAOA,EAAIC,SAU7B,OATIgF,IACIA,EAAUC,kBACVrB,EAAK,UAAMoB,EAAUC,iBAAhB,OAAkCrB,IAEvCoB,EAAUE,kBACVtB,EAAK,UAAMA,GAAN,OAAcoB,EAAUE,mBAI9BtB,GAIAuI,a,6tBChKf,MAAMoB,UAA8B9S,IAAMsC,cACtCC,YAAYxC,GACRyC,MAAMzC,GAyDH,KAAA0C,iBAAoBC,GAAiCC,KAAK5C,MAAMS,OAAOoC,QAASC,YAAcH,EAAMI,OAAOC,MAK3G,KAAAC,iBAAmB,KACtB,MAAM,OAAExC,GAAWmC,KAAK5C,MAElBkD,EAAatB,YAAiBnB,GAEpC,OAAKyC,EAAWC,OAQTD,EAAWE,OACd,CAACC,EAAD,KAAqD,IAAlCC,EAAM0P,EAAQzP,GAAoB,EAIjD,OAHAF,EAAKC,KAAKE,KAAKF,GACfD,EAAK2P,OAAOxP,KAAKwP,GACjB3P,EAAKE,MAAMC,KAAKD,GACTF,GAEX,CAAEC,KAAM,GAAI0P,OAAQ,GAAIzP,MAAO,KAdxB,CACHD,KAAM,CAAC,OACP0P,OAAQ,CAAC,OACTzP,MAAO,CAAC,SApEbE,SACH,MAAM,MAAEC,EAAF,UAASC,EAAT,QAAoBpC,EAApB,OAA6Bd,EAA7B,KAAqCmD,GAAShB,KAAK5C,MAEnDoE,EAAkBxB,KAAKK,mBACvBkB,EAAUT,GAASA,EAAMS,QAE/BR,EAAUE,IAAIC,IAASC,MAAO,2DAA4D,CACtFC,OAAQ,CAACpB,KAAK5C,MAAMiE,GAAIrB,KAAK5C,MAAMkE,YAEnCC,GAAWA,EAAQhB,OAAS,GAC5BQ,EAAUE,IAAIC,IAASO,QAAS,qDAEpC,MAAMxB,EAAUpC,EAAOoC,SAAWe,EAAKf,QACjCyB,EAAY,OACXzB,GADW,IAEdH,iBAAkBE,KAAKF,iBACvB6B,eAAgB3B,KAAK5C,MAAMuB,QAAQG,UAEvC,OACIzB,kBAACuE,IAAS,CACNC,cAAehE,EAAOgE,cACtBC,UAAWjE,EAAOiE,UAClBR,SAAUtB,KAAK5C,MAAMkE,SACrBD,GAAIrB,KAAK5C,MAAMiE,GACfvC,QAASkB,KAAK5C,MAAMuB,QAAQG,QAC5BiD,gBAAiBlE,aAAF,EAAEA,EAAQkE,gBACzBC,sBAAuBnE,aAAF,EAAEA,EAAQmE,sBAC/BC,oBAAqBpE,aAAF,EAAEA,EAAQoE,oBAE7BC,aAAerE,aAAH,EAAGA,EAAgBsE,wBAE9BlC,GAAW5C,kBAAC+E,IAAgB7E,eAACuE,UAAU,qBAAwBJ,IAC/DH,GAAWA,EAAQ,IAAMlE,yBAAKyE,UAAWN,EAAgBd,KAAK2B,KAAK,MAAOd,EAAQ,IAClFA,GAAWA,EAAQ,IAAMlE,yBAAKyE,UAAWN,EAAgB4O,OAAO/N,KAAK,MAAOd,EAAQ,IACpFA,GAAWA,EAAQ,IAAMlE,yBAAKyE,UAAWN,EAAgBb,MAAM0B,KAAK,MAAOd,EAAQ,IACpFlE,oCACKqB,YAAWC,IACR4C,GACAA,EAAQrD,MAAM,EAAGqD,EAAQhB,OAAS,GAAG/B,IAAI,CAAC8D,EAAiBC,IAEnDlF,yBAAKyE,UAAU,SAASU,IAAKD,GACzBlF,yBAAKyE,UAAU,QACXzE,yBAAKyE,UAAU,oCAAkC,2EA0C1EqO,a,iyBCzDR,MAAME,UACDhT,IAAMiT,UAoCd1Q,YAAmBxC,GACfyC,MAAMzC,GAEN4C,KAAKuQ,KAAOnT,EAAMS,OAAO0S,KAEpBC,mBAAiBC,kBAAkBrT,EAAMS,OAAO6S,eAChDF,mBAAiBC,kBAAkBrT,EAAMS,OAAO8S,gBACjD3Q,KAAK4Q,qBAAuB,CACxBF,aAActT,EAAMS,OAAO6S,aAC3BC,aAAcvT,EAAMS,OAAO8S,eAInC3Q,KAAK6Q,4BAA8B,GAEnC7Q,KAAKqL,MAAQ,CACTyF,2BAA4B,IAGhC9Q,KAAK+Q,iBAAmB/Q,KAAK+Q,iBAAiBvF,KAAKxL,MACnDA,KAAKgR,uBAAyBhR,KAAKgR,uBAAuBxF,KAAKxL,MAS5DiM,sBAAsBC,EAAkDC,GAC3E,MAAM8E,EAAmBjR,KAAKuQ,OAASrE,EAAUrO,OAAO0S,MACpDvQ,KAAK5C,MAAMS,OAAOqT,wBAA0BhF,EAAUrO,OAAOqT,uBAC7DlR,KAAK5C,MAAMS,OAAO8S,eAAiBzE,EAAUrO,OAAO8S,cACpD3Q,KAAK5C,MAAMS,OAAO6S,eAAiBxE,EAAUrO,OAAO6S,cACpD1Q,KAAK5C,MAAMS,OAAOiE,YAAcoK,EAAUrO,OAAOiE,WACjD9B,KAAK5C,MAAMiE,KAAO6K,EAAU7K,GAC1B8P,EAAmBnR,KAAKqL,MAAM+F,MAAQjF,EAAUiF,KAClDpR,KAAKqL,MAAMyF,2BAA2BvQ,SAAW4L,EAAU2E,2BAA2BvQ,QACtFP,KAAKqL,MAAMyF,2BAA2BO,MAAMjR,GAAS+L,EAAU2E,2BAA2BQ,KACtFC,GAAcA,EAAWnU,MAAMoU,aAAanQ,KAAOjB,EAAMhD,MAAMoU,aAAanQ,KACpF,OAAO4P,GAAoBE,EAOxBtF,oBACH4F,qCAAmCC,UAAU1R,MAE7CA,KAAK2R,YAAL,qCAAiDC,SAAOC,KAAKC,gBAEzDjD,IAAShG,gBAA2CxC,IAA9BrG,KAAK4Q,sBAC3B7H,OAAO+C,iBAAiB,SAAU9L,KAAK+Q,kBAQxChF,uBACH0F,qCAAmCM,YAAY/R,MAE/CA,KAAK6Q,4BAA4BmB,QAAQC,IAAS,uBAAIA,EAAU7U,MAAMoU,aAAaU,OAAOC,SAASC,qBAAmBC,wBAApE,aAAI,EAAkFN,YAAY/R,KAAK2R,eAErJ9C,IAAShG,gBAA2CxC,IAA9BrG,KAAK4Q,sBAC3B7H,OAAOiD,oBAAoB,SAAUhM,KAAK+Q,kBAQ3CuB,yBAAyBC,GAAiD,MAC7E,QAAyBlM,IAArBrG,KAAK2R,YAAT,CAIA,IAAKnB,mBAAiBC,kBAAkBzQ,KAAK5C,MAAMS,OAAOqT,wBACtDlR,KAAK6Q,4BAA4BtQ,QAAUP,KAAK5C,MAAMS,OAAOqT,sBAE7D,MAAM,IAAItN,MAAM,gEAIpB,UAAA2O,EAAsBnV,MAAMoU,aAAaU,OAAOC,SAASC,qBAAmBC,wBAA5E,SAA8FX,UAAU,CACpGc,WAAYxS,KAAK2R,YACjBc,QAAS,KAAK,MACV,UAAAF,EAAsBnV,MAAMoU,aAAaU,OAAOC,SAASC,qBAAmBC,wBAA5E,SAA8FN,YAAY/R,KAAK2R,aAC/G,MAAMe,EAAU1S,KAAK6Q,4BAA4BvR,OAAO2S,GAAaA,IAAcM,GACnFvS,KAAK6Q,4BAA8B6B,EACnC1S,KAAKuN,SAAS,CAAEuD,2BAA4B9Q,KAAK6Q,iCAKzD7Q,KAAK6Q,4BAA4B8B,QAAQJ,GACzCvS,KAAKuN,SAAS,CAAEuD,2BAA4B9Q,KAAK6Q,8BACjD7Q,KAAK+Q,oBAGFlQ,SACH,MAAMiB,EAAYuC,IACdgM,EAA2BuC,WADH,UAErBvC,EAA2BuC,WAFN,aAEqB5S,KAAKuQ,MAClDvQ,KAAK5C,MAAMS,OAAOiE,WAEhBsC,EAAS,OACRpE,KAAK5C,OADG,IAEXI,UAAW,CACPqV,YAAa7S,KAAK5C,MAClB0E,YACAT,GAAIrB,KAAK2R,YACT1G,MAAO,CAAEmG,IAAKpR,KAAKqL,MAAM+F,MAE7B3T,kBAAmBuC,KAAK8S,6BAG5B,OAAO9S,KAAK5C,MAAMkH,WAAWF,GAOzB0O,2BAEJ,MAAMC,EAAmBC,kBAAgBC,YAAYjT,KAAKqL,MAAMyF,4BAC1DoC,EAAqB7O,IAAW,GAAD,OAC9BgM,EAA2BuC,WADG,gBAEjB,UAAMvC,EAA2BuC,WAAjDG,EAAgB,kCAEpB,OACI1V,yBAAKyE,UAAWoR,EAAoBjI,MAAO,CAAEkI,UAAWnT,KAAKqL,MAAM+F,KAAX,uBAAkCpR,KAAKqL,MAAM+F,IAA7C,SAEhDpR,KAAKqL,MAAMyF,2BAA2BtS,IAAKyT,IACvC,MAAMmB,EAAiBnB,EAAUoB,eACjC,OACIhW,kBAAC+V,EAAc7V,iBAAK0U,EAAU7U,MAAK,CAAEoF,IAAKyP,EAAU7U,MAAMoU,aAAanQ,SAWvF2P,yBACJ,MAAMsC,EAAgBtT,KAAK4Q,qBAE3B,QAAsBvK,IAAlBiN,EACA,OAGJ,IAAIC,EAAc,EAKlB,OAJI1E,IAAShG,YACT0K,EAAcxK,OAAOwK,aAGlBC,KAAKhJ,IAAIgJ,KAAK9I,IAAI4I,EAAc3C,aAAc2C,EAAc3C,aAAe4C,GAAcD,EAAc5C,cAM1GK,mBACJ,MAAM0C,EAASzT,KAAKgR,yBACpBhR,KAAKuN,SAAS,CAAE6D,IAAKqC,KAzMDpD,aAAqB,yBA6MlCA,a,wsBC1Pf,MAAMqD,UAAyBrW,gBAC3BuC,YAAYxC,GACRyC,MAAMzC,GA2CH,KAAA0C,iBAAoBC,GAAiCC,KAAK5C,MAAMS,OAAOoC,QAASC,YAAcH,EAAMI,OAAOC,MAxC3GS,SACH,MAAM,MAAEC,EAAF,UAASC,EAAT,OAAoBlD,EAApB,KAA4BmD,GAAShB,KAAK5C,MAChD2D,EAAUE,IAAIC,IAASC,MAAO,oDAAqD,CAC/EC,OAAQ,CAACpB,KAAK5C,MAAMiE,GAAIrB,KAAK5C,MAAMkE,YAGvC,MAAMrB,EAAUpC,EAAOoC,SAAWe,EAAKf,QACjCyB,EAAY,OACXzB,GADW,IAEdH,iBAAkBE,KAAKF,iBACvB6B,eAAgB3B,KAAK5C,MAAMuB,QAAQG,UAGvC,OACIzB,gBAACuE,IAAS,CACNC,cAAehE,EAAOgE,cACtBC,UAAWjE,EAAOiE,UAClBR,SAAUtB,KAAK5C,MAAMkE,SACrBD,GAAIrB,KAAK5C,MAAMiE,GACfvC,QAASkB,KAAK5C,MAAMuB,QAAQG,QAC5BiD,gBAAiBlE,aAAF,EAAEA,EAAQkE,gBACzBC,sBAAuBnE,aAAF,EAAEA,EAAQmE,sBAC/BC,oBAAqBpE,aAAF,EAAEA,EAAQoE,oBAE7BC,aAAerE,aAAH,EAAGA,EAAgBsE,wBAE9BlC,GAAW5C,gBAAC+E,IAAgB7E,eAACuE,UAAU,qBAAwBJ,IAC/DZ,GACGA,EAAMS,SACNT,EAAMS,QAAQ/C,IAAI,CAAC2E,EAA2BZ,IAEtClF,uBAAKyE,UAAW9B,KAAK2T,wBAAyBnR,IAAKD,GAC9CY,KAUrBwQ,wBACJ,MACI9V,QAAQ,OAAE+K,EAAF,cAAUgL,IAClB5T,KAAK5C,MACT,OAAQwL,GACJ,IAAI,OACA,MAAoB,SAAbgL,EAA2C,gBAAkB5T,KAAK6T,eAAeD,GAC5F,IAAI,UACJ,QACI,MAAO,UAIXC,eAAeC,GACnB,OAAOtU,IAAUuU,IAAID,GAAC,SAA+B,UAI9CJ,a,mICpEf,MAAMM,UAAuB3W,gBACzBuC,YAAYxC,GACRyC,MAAMzC,GAGHyD,SACH,MAAM,OAAEhD,GAAWmC,KAAK5C,MACxB4C,KAAKiU,OAAL,qCAA0CjU,KAAK5C,MAAMiE,GAArD,YAA2DrB,KAAK5C,MAAMkE,SAAtE,MAEA,MAAM4S,EAAwBC,OAAO,mBAAoB,KACzD,IAAIC,EACJ,MAAMC,EAAiBxW,GAAUA,EAAO8H,aACxC,IAAI2O,EAEJ,GAAID,EAAgB,CAChB,IAAIE,GAAsB,EAG1B,IAFAD,EAAiBD,EAEVE,GACHH,EAAeF,EAAsBnW,KAAKsW,GAEtCD,GAAgBA,EAAa7T,OAAS,GACtCP,KAAKiU,OAAL,gCAAqCG,EAAa,KAClDE,EAAiBtU,KAAKwU,oBAAoBF,EAAgBF,EAAa,KAEvEG,GAAsB,EAKlC,OAAKD,EAKDjX,gBAACwR,IAAwB,KACpB7O,KAAKyU,OAAOH,GACTjX,0BACI0J,IAAKuN,EACLpO,QAASrI,EAAOqI,MAChBC,QAAStI,EAAOsI,MAAK,kBACJtI,EAAO6W,WAAa,YAGzCrX,0BACI6I,QAASrI,EAAOqI,MAChBC,QAAStI,EAAOsI,MAAK,kBACJtI,EAAO6W,WAAa,UAErC5P,wBAAyB,CAAEC,OAAQuP,MAlBxC,KAyBPL,OAAOxQ,GACPzD,KAAK5C,MAAM2D,WACXf,KAAK5C,MAAM2D,UAAUE,IAAIC,IAASC,MAAOsC,GAIzCgR,OAAO3Q,GACX,MAAO,oFAAoFC,KAAKD,GAG5F0Q,oBAAoBF,EAAwBK,GAEhD,MAAMC,EAAoBD,EAAiB1W,MAAM,QAEjD,GAAiC,IAA7B2W,EAAkBrU,SAAiB+T,EACnC,OAAOA,EAGX,MAAMO,EAAkBD,EAAkB,GACpCE,EAAeF,EAAkB,GAEvC,GAAwB,UAApBC,EACI7U,KAAK5C,MAAM0X,KACXR,EAAiBA,EAAe7O,QAAQkP,EAAkB3U,KAAK5C,MAAM0X,IACrE9U,KAAKiU,OAAL,+BAAoCU,EAApC,gCAA4E3U,KAAK5C,MAAM0X,WAExF,GAAI9U,KAAK5C,MAAMuB,SAAWqB,KAAK5C,MAAMuB,QAAQG,QAChD,OAAQ+V,GACJ,IAAK,UACG7U,KAAK5C,MAAMuB,QAAQG,QAAQgW,KAC3BR,EAAiBA,EAAe7O,QAAQkP,EAAkB3U,KAAK5C,MAAMuB,QAAQG,QAAQgW,IACrF9U,KAAKiU,OAAL,+BAC4BU,EAD5B,kCACsE3U,KAAK5C,MAAMuB,QAAQG,QAAQgW,MAIrG,MACJ,IAAK,OACG9U,KAAK5C,MAAMuB,QAAQG,QAAQiW,MAAQ/U,KAAK5C,MAAMuB,QAAQG,QAAQiW,KAAKD,KACnER,EAAiBA,EAAe7O,QAAQkP,EAAkB3U,KAAK5C,MAAMuB,QAAQG,QAAQiW,KAAKD,IAC1F9U,KAAKiU,OAAL,+BAC4BU,EAD5B,+BACmE3U,KAAK5C,MAAMuB,QAAQG,QAAQiW,KAAKD,MAIvG,MACJ,IAAK,QACG9U,KAAK5C,MAAMuB,QAAQG,QAAQkW,OAAShV,KAAK5C,MAAMuB,QAAQG,QAAQkW,MAAMF,KACrER,EAAiBA,EAAe7O,QAAQkP,EAAkB3U,KAAK5C,MAAMuB,QAAQG,QAAQkW,MAAMF,IAC3F9U,KAAKiU,OAAL,+BAC4BU,EAD5B,iCACqE3U,KAAK5C,MAAMuB,QAAQG,QAAQkW,MAAMF,MAStH,OAAOR,GAIAN","file":"static/js/10.527cb1625a1fac3d882a.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return (\n \n {props.notificationsList}\n \n );\n};\n\nexport default NotificationsListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PlaceholderForContainerPreviewComponent } from '@msdyn365-commerce/core';\n\nexport default PlaceholderForContainerPreviewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport * as twoSlots from '../modules/default-container-2-slots/default-container-2-slots.props.autogenerated';\nimport * as threeSlots from '../modules/default-container-3-slots/default-container-3-slots.props.autogenerated';\n\nconst sizePattern = /col(_(\\d|auto){1,2}){2,}/;\n\nexport interface IShowErrorOptions {\n isDebug?: boolean;\n isEditor?: boolean;\n}\n\nexport interface IViewPortOptions {\n xsmall?: threeSlots.xsmall | twoSlots.xsmall;\n small?: threeSlots.small | twoSlots.small;\n medium?: threeSlots.medium | twoSlots.medium;\n large?: threeSlots.large | twoSlots.large;\n}\n\nconst translatePrefix = (prefix: `large` | `medium` | `small` | `xsmall` | undefined) => {\n switch (prefix && prefix.toLowerCase()) {\n case 'large':\n return 'lg';\n case 'medium':\n return 'md';\n case 'small':\n return 'sm';\n case 'xsmall':\n default:\n return '';\n }\n};\n\n/**\n * converts config option and size to bootstrap col class name\n * If size is auto or config option is invalid col-auto will be returned\n * If size is xsmall or size is invalid col-{config} will be returned\n * @param config configuration option e.g. col_12_12\n * @param size bootstrap gridsize\n */\nexport const getColumnSizes = (config: string, size?: `large` | `medium` | `small` | `xsmall`): string[] | boolean => {\n if (!sizePattern.exec(config)) {\n return false;\n }\n const cols = config.split('_').slice(1);\n const translatedSize = translatePrefix(size);\n const sizePrefix = (translatedSize && `-${translatedSize}`) || '';\n return cols.map((colWidth: string) => `col${sizePrefix}-${colWidth}`);\n};\n\nexport const showErrors = (context?: ICoreContext): Boolean => {\n const { isDebug, isEditor }: IShowErrorOptions = (context && context.request && context.request.params) || {};\n return !!isDebug || !!isEditor;\n};\n\n/**\n * Converts viewport configuration into a two dimensional array of class names\n */\nexport const getColClassArray = (options: IViewPortOptions): string[][] =>\n (\n [\n options.xsmall && getColumnSizes(options.xsmall),\n options.small && getColumnSizes(options.small, 'small'),\n options.medium && getColumnSizes(options.medium, 'medium'),\n options.large && getColumnSizes(options.large, 'large')\n ].filter(Boolean)\n );\n\nexport const colWidths = new Map([\n ['one', 'col-md-1'],\n ['two', 'col-md-2'],\n ['three', 'col-md-3'],\n ['four', 'col-md-4'],\n ['six', 'col-md-6'],\n ['twelve', 'col-md-12']\n]);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer2SlotsData } from './default-container-2-slots.data';\nimport { IDefaultContainer2SlotsProps } from './default-container-2-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n right: string[];\n}\n\n/**\n * Default container that displays 2 modules\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default2SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer2SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default 2 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const content = slots && slots.content;\n const slotsClassNames = this._getColClassName();\n if (content && content.length > 2) {\n telemetry.log(LogLevel.Warning, 'Default 2 Slot Container passed more than 2 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (2)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, right]: string[]) => {\n memo.left.push(left);\n memo.right.push(right);\n return memo;\n },\n { left: [], right: [] }\n );\n };\n}\n\nexport default Default2SlotContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { isEditorialMode } from '@msdyn365-commerce/core-internal';\nimport { IDefaultPageProps } from './default-page.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent}\n */\nclass DefaultPageContainer extends React.PureComponent> {\n constructor(props: IDefaultPageProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, id, typeName } = this.props;\n\n let skipToMainText = this.props.config && this.props.config.skipToMainText;\n telemetry.log(LogLevel.Debug, \"DefaultPageContainer rendering for '{id}/{typeName}'\", { values: [id, typeName] });\n\n if (!skipToMainText) {\n skipToMainText =\n this.props.context.app && this.props.context.app.platform ? this.props.context.app.platform.skipToMainText : '';\n }\n\n const tabIndexSkipToMain = isEditorialMode(this.props.context.actionContext.requestContext) ? -1 : 0;\n\n return (\n \n \n {skipToMainText}\n \n
\n {slots &&\n slots.header &&\n slots.header.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subheader && (\n
\n {slots.subheader.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.primary &&\n slots.primary.map((children: React.ReactNode) => {\n return children;\n })}\n
\n {slots && slots.subfooter && (\n
\n {slots.subfooter.map((children: React.ReactNode) => {\n return children;\n })}\n
\n )}\n
\n {slots &&\n slots.footer &&\n slots.footer.map((children: React.ReactNode) => {\n return children;\n })}\n
\n
\n );\n }\n}\n\nexport default DefaultPageContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IInternalTelemetry, LogLevel } from '@msdyn365-commerce/telemetry-internal';\n\nexport const logDebug = (debugMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n telemetry && telemetry.log(LogLevel.Debug, debugMessage);\n};\n\nexport const logError = (errorMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n telemetry && telemetry.log(LogLevel.Error, errorMessage);\n};\n\n/**\n * Returns true if the given string matches an URL pattern\n *\n * @param source The string to check against\n */\nexport const isAbsoluteUrl = (source: string): boolean => {\n return /^(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(source);\n};\n\nexport const isRelativeUrl = (source: string): boolean => {\n return /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*(\\.js){1}$/.test(source);\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISpacerProps } from './spacer.props.autogenerated';\n\nexport interface ISpacerViewProps extends ISpacerProps<{}> {\n className?: string;\n}\n\n/**\n *\n * SpacerModule component.\n * @extends {React.PureComponent}\n */\nclass Spacer extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n const spacerClass = this.props.config.spacerHeight ? `ms-${this.props.config.spacerHeight}` : 'ms-spacer';\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n className: className && classnames(spacerClass, className) || spacerClass\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default Spacer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultInlineScriptProps } from './default-inline-script.props.autogenerated';\n\n/**\n *\n * DefaultScript\n * @extends {React.PureComponent>}\n */\nclass DefaultInlineScript extends React.PureComponent> {\n constructor(props: IDefaultInlineScriptProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\n const source = config.inlineScript;\n\n if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\n logError(\n 'Invalid inline script - Empty inline source defined or a url is being used as a source. Use default-external-script to load scripts from an external or relative url.',\n this.props.telemetry\n );\n return null;\n }\n\n if (source.includes('')) {\n logError('Invalid inline script - inline script should not contain html tags', this.props.telemetry);\n return null;\n }\n\n const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n const scriptHtml = ``;\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n }\n}\n\nexport default DefaultInlineScript;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport { IDefaultMetatagsData } from './default-metatags.data';\nimport { IDefaultMetatagsProps } from './default-metatags.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component\n * @extends {React.PureComponent>}\n */\nclass DefaultMetaTags extends React.PureComponent> {\n public render(): JSX.Element {\n const { data, config } = this.props;\n const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n let metaTagsHtml: string = '';\n let metaTags;\n if (config.metaTags) {\n metaTags = nonceToken ? this._addNonceToInlineScript(config.metaTags, nonceToken) : config.metaTags;\n metaTagsHtml = metaTags && metaTags.join('\\n');\n } else if (data.metaTags) {\n metaTags = data.metaTags;\n let metaTagsText = metaTags.map(simpleText => simpleText.text);\n metaTagsText = nonceToken ? this._addNonceToInlineScript(metaTagsText, nonceToken) : metaTagsText;\n metaTagsHtml = metaTagsText && metaTagsText.join('\\n');\n }\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: metaTagsHtml } });\n }\n\n private _addNonceToInlineScript(metaTags: string[], nonceToken: string): string[] {\n const inlineScripRegex = /(.*?)<\\/script>/g;\n return metaTags\n .map(metaTag => {\n if (inlineScripRegex.test(metaTag)) {\n return metaTag.replace(/`;\n\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n }\n}\n\nexport default DefaultExternalScript;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IDefaultPageSummaryData } from './default-page-summary.data';\nimport { IDefaultPageSummaryProps } from './default-page-summary.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component.\n * @extends {React.PureComponent}\n */\nclass DefaultPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.pageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n pageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n pageSummary: {\n result: { canonicalUrl }\n }\n }\n } = this.props;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && \n {pageTitle}\n }\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _renderTwitterTags(\n title: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined\n ): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _constructPageTitle(title: string | undefined, app: IGeneric): string | undefined {\n if (!title) {\n title = '';\n }\n\n const moduleConfig = this.props.config;\n if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\n return title;\n }\n\n const appConfig = app && app.platform;\n if (appConfig) {\n if (appConfig.pageTitlePrefix) {\n title = (appConfig.pageTitlePrefix as string) + title;\n }\n if (appConfig.pageTitleSuffix) {\n title += (appConfig.pageTitleSuffix as string);\n }\n }\n\n return title;\n }\n}\n\nexport default DefaultPageSummary;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, {\n constructViewportInformationForImage,\n getImageResizeUrl,\n getLargestGridSettingViewportName,\n getMinMaxWidth,\n IAny,\n IGeneric,\n IViewPort,\n Viewport\n} from '@msdyn365-commerce/core-internal';\nimport { cloneDeep as _cloneDeep } from 'lodash';\nimport {\n BackgroundImageRepeat,\n BackgroundImageSize,\n IBackgroundImageAttributes,\n IBackgroundImageLazyloadAttributes,\n IBackgroundImageProps,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst getBackgroundRepeatProperty = (size: string | undefined, repeat: string | undefined): BackgroundImageRepeat => {\n if (!size || size === 'cover') {\n return 'no-repeat';\n }\n switch (repeat) {\n case 'noRepeat':\n return 'no-repeat';\n case 'repeat':\n return 'repeat';\n default:\n return 'no-repeat';\n }\n};\n\nconst getBackgroundSizeProperty = (size: string | undefined): BackgroundImageSize => {\n switch (size) {\n case 'cover':\n return 'cover';\n case 'contain':\n return 'contain';\n case 'default':\n default:\n return undefined;\n }\n};\n\nconst getDefaultViewports = (): IViewPort => {\n return {\n xs: {\n w: 800,\n h: 600\n },\n sm: {\n w: 1200,\n h: 900\n },\n md: {\n w: 1600,\n h: 900\n },\n lg: {\n w: 1600,\n h: 700\n },\n xl: {\n w: 1600,\n h: 700\n }\n };\n};\n\nconst getAuthoringViewport = (moduleName: string | undefined, layout: string | undefined): IViewPort | undefined => {\n if (!msdyn365Commerce.isBrowser) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const authoringHelper = (window as any)._msdyn365.authoringHelper;\n if (!authoringHelper) {\n return;\n }\n\n // if authoring helper is setup, component is rendering from site builder. Build viewport based on layout selected.\n return constructViewportInformationForImage(moduleName, layout, 'backgroundImage', authoringHelper?.themeSettings) as IViewPort;\n};\n\nexport const buildBackgroundImageStylesByViewport = (props: IBackgroundImageProps): IGeneric => {\n const { containerType, image, request, configs } = props;\n\n const gridSettings = request.gridSettings ?? {};\n const imageSettings = image.imageSettings;\n\n const styles: IGeneric = {};\n\n const largestGridSettingViewportName = getLargestGridSettingViewportName(gridSettings);\n if (largestGridSettingViewportName && imageSettings) {\n // in site builder the layout may change, so use authoring viewports.\n const authoringViewPorts = getAuthoringViewport(containerType, configs?.layout);\n const imgSettings = {\n ...imageSettings,\n viewports: { ..._cloneDeep(authoringViewPorts || imageSettings.viewports || getDefaultViewports()) }\n };\n\n // Skip resizing width and height for background images.\n const skipWidthAndHeightSettings = true;\n Object.keys(imgSettings.viewports).map(vp => {\n const viewport = vp as Viewport;\n const minMaxWidth = getMinMaxWidth(gridSettings, imgSettings, viewport, largestGridSettingViewportName);\n const urlSrc = getImageResizeUrl(\n image.src,\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n minHeight: imgSettings.viewports[viewport]?.h,\n backgroundImage: urlSrc,\n backgroundRepeat: getBackgroundRepeatProperty(configs?.size, configs?.repeat),\n backgroundSize: getBackgroundSizeProperty(configs?.size),\n backgroundPosition: 'center center'\n };\n });\n }\n\n return styles;\n};\n\nexport const setStyleAttribute = (currentStyle: IBackgroundImageStyle): IGeneric => {\n let style: IGeneric = {};\n if (currentStyle) {\n style = { ...currentStyle };\n style['minWidth'] = undefined;\n style['width'] = '100%';\n if (currentStyle.backgroundImage) {\n style['backgroundImage'] = `url('${currentStyle.backgroundImage}')`;\n }\n }\n return style;\n};\n\nexport const getBackgroundImageLazyloadAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined,\n styles: IGeneric\n): IBackgroundImageLazyloadAttributes => {\n const attributes = {\n role: 'img',\n className: `${className} lazyload`,\n 'data-bgset': getDataBgSetAttribute(styles)\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n // On lazyload, lazysizes plugin should pick which background image to use based on data-bgset attribute.\n attributes['style']['backgroundImage'] = undefined;\n }\n return attributes;\n};\n\nexport const getBackgroundImageAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined\n): IBackgroundImageAttributes => {\n const attributes = {\n role: 'img',\n className\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n }\n return attributes;\n};\n\nexport const getBgSetMinMaxWidthAttribute = (style: IBackgroundImageStyle): string => {\n if (style.maxWidth) {\n return `[(max-width: ${style.maxWidth}px)]`;\n }\n return '';\n};\n\nexport const getDataBgSetAttribute = (styles: IGeneric): string => {\n const dataBgSetAttributes: string[] = [];\n Object.keys(styles).map(vp => {\n if (styles[vp].backgroundImage) {\n dataBgSetAttributes.push(`${styles[vp].backgroundImage} ${getBgSetMinMaxWidthAttribute(styles[vp])}`);\n }\n });\n\n return dataBgSetAttributes.join(' | ');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport msdyn365Commerce, { getLargestGridSettingViewportName, IGeneric, isAuthoringEditEnabled } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isEqual as _isEqual } from 'lodash';\nimport {\n buildBackgroundImageStylesByViewport,\n getBackgroundImageAttributes,\n getBackgroundImageLazyloadAttributes\n} from './container-background-image-helper';\nimport {\n IBackgroundImageAttributes,\n IBackgroundImageProps,\n IBackgroundImageState,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst BACKGROUND_IMAGE_CLASS_NAME = 'ms-container-background-image';\n\n/**\n * BackgroundImage component\n * @extends {React.PureComponent}\n */\nexport class BackgroundImage extends React.PureComponent {\n private stylesByViewport: IGeneric;\n private currentStyle: IBackgroundImageStyle | undefined;\n private mounted: boolean;\n\n constructor(props: IBackgroundImageProps, state: IBackgroundImageState) {\n super(props);\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this._onChangeHandler = this._onChangeHandler.bind(this);\n this.currentStyle = this._getCurrentStyle();\n this.mounted = false;\n this._componentResize = this._componentResize.bind(this);\n this._getCurrentStyle = this._getCurrentStyle.bind(this);\n this.state = { updateAttributes: false };\n }\n\n public componentDidMount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this._componentResize);\n this.mounted = true;\n this._componentResize();\n }\n }\n\n public componentWillUnmount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this._componentResize);\n this.mounted = false;\n }\n }\n\n public shouldComponentUpdate(nextProps: IBackgroundImageProps, nextState: { updateAttributes: boolean }): boolean {\n if (\n this.state !== nextState ||\n this.props.request?.gridSettings !== nextProps.request?.gridSettings ||\n this.props.configs.repeat !== nextProps.configs.repeat ||\n this.props.configs.size !== nextProps.configs.size ||\n this.props.configs.layout !== nextProps.configs.layout ||\n this.props.image?.imageSettings !== nextProps.image?.imageSettings ||\n this.props.image?.src !== nextProps.image?.src\n ) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { children } = this.props;\n\n try {\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n\n if (this.currentStyle) {\n const backgroundImageClassName = isAuthoringEditEnabled(this.props.request)\n ? `${BACKGROUND_IMAGE_CLASS_NAME} ms-editable-field enabled`\n : BACKGROUND_IMAGE_CLASS_NAME;\n const processedAtributes = this._processAttributes(\n backgroundImageClassName,\n this.currentStyle,\n this.stylesByViewport,\n this._isLazyload()\n );\n const attributes = this._getAttributes(processedAtributes);\n const eventHandlers = isAuthoringEditEnabled(this.props.request) ? { onDoubleClick: this._onChangeHandler } : {};\n\n if (this.state.updateAttributes) {\n // Update component with the latest attributes.\n return (\n
\n {children}\n
\n );\n } else if (this._isLazyload()) {\n // On lazyload, only include the class name on the first render.\n return (\n
\n {children}\n
\n );\n } else {\n // On lazyload disabled, render the default attributes from server side.\n return (\n
\n {children}\n
\n );\n }\n } else {\n // in no style is found, return the container content.\n return <>{children};\n }\n } catch {\n // in case of any failure, return the container content.\n return <>{children};\n }\n }\n\n private _processAttributes(\n className: string,\n currentStyle: IBackgroundImageStyle,\n stylesByViewport: IGeneric,\n lazyLoad: boolean\n ) {\n if (lazyLoad) {\n return getBackgroundImageLazyloadAttributes(className, currentStyle, stylesByViewport);\n } else {\n return getBackgroundImageAttributes(className, currentStyle);\n }\n }\n\n private _getAttributes(processedAtributes: IBackgroundImageAttributes) {\n return { ...processedAtributes, style: { ...processedAtributes?.style } };\n }\n\n private _onChangeHandler(event: React.SyntheticEvent | { target: { value: string } }): void {\n if (event.target === (event as React.SyntheticEvent).currentTarget) {\n const binding: any = this.props.image;\n const eventTarget: any = event.target;\n binding.$type = eventTarget.value;\n }\n }\n\n private _componentResize(): void {\n if (msdyn365Commerce.isBrowser) {\n const selectedStyle = this._getCurrentStyle();\n\n if (this.mounted || (selectedStyle && !_isEqual(this.currentStyle, selectedStyle))) {\n this.setState({ updateAttributes: true });\n }\n }\n }\n\n private _getCurrentStyle(): IBackgroundImageStyle | undefined {\n if (msdyn365Commerce.isBrowser) {\n const winInnerWidth: number = window.innerWidth;\n let selectedStyle: IBackgroundImageStyle | undefined;\n Object.keys(this.stylesByViewport).map(vp => {\n if (\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\n selectedStyle = this.stylesByViewport[vp];\n }\n });\n return selectedStyle;\n } else {\n return this._getDefaultStyle();\n }\n }\n\n private _isLazyload(): boolean {\n // Lazyload by default if nothing is specified\n return !this.props.image?.imageSettings?.disableLazyLoad;\n }\n\n private _getDefaultStyle(): IBackgroundImageStyle | undefined {\n const { request } = this.props;\n const largestGridSettingViewportName = getLargestGridSettingViewportName(request.gridSettings ?? {});\n return this.stylesByViewport[largestGridSettingViewportName];\n }\n\n private _getDefaultAttributes(): IBackgroundImageAttributes {\n const style = this._getDefaultStyle();\n const processedAtributes = style\n ? this._processAttributes(BACKGROUND_IMAGE_CLASS_NAME, style, this.stylesByViewport, this._isLazyload())\n : {};\n return this._getAttributes(processedAtributes);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, IImageData, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { BackgroundImage } from './container-background-image/container-backgroud-image';\n\n/**\n * Heading options\n */\nexport interface IHeadingComponentProps {\n /**\n * Heading text\n */\n headingText?: string;\n /**\n * Heading tag (h1, h2, h3, h4, h5, h6)\n */\n tag?: HeadingTag;\n /**\n * Heading text size (sm, md, lg, xl)\n */\n textSize?: TextSize;\n\n requestContext: IRequestContext;\n\n handleTextChange(event: ContentEditableEvent): string;\n}\n\nexport type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type TextSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Container class options\n */\nexport interface IContainerProps {\n /**\n * CSS class name\n */\n className?: string;\n /**\n * Bootstrap supported container types\n */\n containerType?: string;\n /**\n * type name\n */\n typeName?: string;\n /**\n * id of container\n */\n id?: string;\n /**\n * React children\n */\n children: React.ReactNode;\n /**\n * Request context\n */\n request?: IRequestContext;\n /**\n * background image\n */\n backgroundImage?: IImageData;\n /**\n * background image repeat property\n */\n backgroundImageRepeat?: string;\n /**\n * background image size property\n */\n backgroundImageSize?: string;\n /**\n * module layout property\n */\n moduleLayout?: string;\n}\n\nconst getContainerType = (containerType: string | undefined) => {\n switch (containerType) {\n case 'container':\n return 'container';\n case 'fluid':\n default:\n return 'fluid';\n }\n};\n\n/**\n * HOC to create bootstrap container div. If no container type is specified children are rendered.\n * @param options IContainerClasses\n */\nexport const Container: React.SFC = (props: IContainerProps): JSX.Element => {\n const {\n containerType,\n className,\n typeName,\n id,\n children,\n backgroundImage,\n request,\n backgroundImageRepeat,\n backgroundImageSize,\n moduleLayout\n } = props;\n const customClassName = className ? ` ${className}` : '';\n\n let containerContent = children;\n if (containerType) {\n containerContent =
{containerContent}
;\n }\n\n if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n containerContent = (\n \n {containerContent}\n \n );\n }\n\n return containerType ? (\n
{containerContent}
\n ) : (\n
{containerContent}
\n );\n};\n\nexport const HeadingComponent = (props: IHeadingComponentProps & { className: string }): JSX.Element | null => {\n const { tag, headingText, textSize, className } = props;\n const Tag = tag || 'h2';\n const classNameWithHeading = textSize ? `heading ${textSize} ${className}` : `heading ${className}`;\n return (\n (headingText && (\n \n )) ||\n null\n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { ISpacerViewProps } from './spacer';\n\nconst SpacerView: React.FC = props => (\n
\n);\n\nexport default SpacerView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () =>
;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { ITextBlockViewProps } from './text-block';\n\nconst TextBlockView: React.FC = props => (\n
\n {props.paragraph}\n
\n);\n\nexport default TextBlockView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITextBlockProps } from './text-block.props.autogenerated';\n\nexport interface ITextBlockViewProps extends ITextBlockProps<{}> {\n paragraph?: React.ReactNode;\n className?: string;\n}\n\n/**\n *\n * TextBlock component.\n */\nclass TextBlock extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { paragraph, className } = this.props.config;\n const text = paragraph && ;\n const textBlockViewProps = {\n ...this.props,\n paragraph: text,\n className: classnames('ms-text-block', className)\n\n };\n return this.props.renderView(textBlockViewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.paragraph = event.target.value;\n}\nexport default TextBlock;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IProductPageSummaryData } from './product-page-summary.data';\nimport { IProductPageSummaryProps } from './product-page-summary.props.autogenerated';\n\n/**\n *\n * ProductPageSummary component.\n * @extends {React.PureComponent}\n */\nclass ProductPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.productPageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n productPageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n productPageSummary: {\n result: { canonicalUrl, productId, productBrand, price }\n }\n }\n } = this.props;\n\n // Product SEO metadata specific information - non-overridable\n const productName = title;\n const productDescription = description;\n const productImageUrl = sharingImageUrl;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n // Construct page title with suffix and prefix if provided from app settings\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && \n {pageTitle}\n }\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {this._renderProductMetadata(productName, productDescription, productImageUrl, canonicalUrl, productId, price, context.request.channel?.Currency, productBrand)}\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n /**\n * Renders the facebook and other social media specific metadata tags.\n *\n * @param title Page title.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n */\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n /**\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\n *\n * @param productName Product name.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n * @param canonicalUrl Product canonical url.\n * @param productId Master product id.\n * @param price Proudct price.\n * @param currencyCode Current channel currency code.\n * @param productBrand Product brand.\n */\n private _renderProductMetadata(productName: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined,\n canonicalUrl: string | undefined,\n productId: number | undefined,\n price: number | undefined,\n currencyCode: string | undefined,\n productBrand: string | undefined): JSX.Element {\n // Construct the JSON-LD data that contains the product metadata information used by search enginge crawlers\n const productMetaData = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Product',\n name: productName,\n description,\n image: sharingImageUrl,\n sku: productId,\n brand: {\n '@type': 'Brand',\n name: productBrand\n },\n offers: {\n '@type': 'Offer',\n url: canonicalUrl,\n priceCurrency: currencyCode,\n price\n }\n });\n return (\n \n\n