{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?b150","webpack:///src/utils/classnames.ts?8f2b","webpack:///src/modules/default-container-2-slots/default-container-2-slots.tsx?b218","webpack:///src/modules/default-page/default-page.tsx?0e08","webpack:///src/modules/footer-category/footer-category.tsx?b7b8","webpack:///src/modules/spacer/spacer.tsx?3b03","webpack:///src/modules/default-inline-script/default-inline-script.tsx?3ed3","webpack:///src/modules/default-page-summary/default-page-summary.tsx?b254","webpack:///src/modules/starter/starter.tsx?2704","webpack:///src/components/base-components.tsx?5f88","webpack:///src/modules/spacer/spacer.view.tsx?bd25","webpack:///src/modules/text-block/text-block.view.tsx?8d9b","webpack:///src/modules/video-player/video-player.view.tsx?2e40","webpack:///src/modules/social-share/social-share.tsx?ed88","webpack:///src/modules/text-block/text-block.tsx?1fe8","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/default-container-3-slots/default-container-3-slots.tsx?06cd","webpack:///src/modules/default-container/default-container.tsx?4334","webpack:///src/modules/script-injector/script-injector.tsx?fad8"],"names":["ProductSpecificationTableRow","productName","cellData","className","scope","dangerouslySetInnerHTML","handleHeadingChange","event","this","props","config","heading","text","target","value","context","data","telemetry","product","result","RecordId","actionInput","actionContext","requestContext","apiSettings","channelId","catch","error","warning","debug","e","productSpecificationData","length","viewProps","ProductSpecification","moduleProps","ProductSpecificationTableProps","tag","ProductSpecificationTableBodyProps","title","editProps","onEdit","request","productSpecificationResult","_createTableBody","renderView","content","map","index","_renderProductCell","key","Name","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","CurrencyValue","undefined","CurrencyCode","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","resources","trueValueText","falseValueText","sizePattern","getColumnSizes","size","exec","cols","split","slice","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","showErrors","isDebug","isEditor","params","getColClassArray","options","xsmall","small","medium","large","filter","Boolean","colWidths","Map","Default2SlotContainer","PureComponent","super","handleTextChange","headingText","_getColClassName","classNames","reduce","memo","left","right","push","slots","log","Debug","values","id","typeName","slotsClassNames","Warning","headingProps","containerType","join","slot","DefaultPageContainer","skipToMainText","app","platform","href","tabIndex","header","children","subheader","primary","subfooter","footer","FooterCategory","viewprops","categories","FooterList","FooterListItem","Spacer","spacerClass","spacerHeight","DefaultInlineScript","source","inlineScript","includes","nonceToken","scriptHtml","__html","DefaultPageSummary","pageSummary","Error","description","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","src","pageTitle","_constructPageTitle","name","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","pageTitlePrefix","pageTitleSuffix","getContainerType","Container","customClassName","HeadingComponent","textSize","Tag","classNameWithHeading","renderModuleAttributes","paragraph","player","SocialShare","socialShareItems","cookies","isConsentGiven","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","TextBlock","textBlockViewProps","mapRef","_initMap","channel","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","_updateMap","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","unitStoreInfo","storeLocation","OrgUnitAvailability","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","_getPushpinOptions","pushpin","Pushpin","Location","Events","addHandler","setSelectedStoreLocationId","unshift","currLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","showIndex","toString","color","selectionColor","icon","_getSvgIcon","BingMapsEnabled","setMapModuleLoaded","loadMapApi","lang","ChannelCountryRegionISOCode","market","DefaultLanguageId","async","isDialog","displayMap","listMapViewState","ModuleProps","show","Header","headerProps","MapProps","ref","Default3SlotContainer","DefaultContainer","_getChildColClassName","layout","childrenWidth","_getWidthClass","s","get","ScriptInjector","_debug","placeHolderPropsRegEx","RegExp","placeHolders","originalSource","scriptSource","resolvedSource","hasMorePlaceHolders","_resolvePlaceHolder","_isUrl","defer","loadPoint","debugMessage","test","placeHolderToken","placeHolderTokens","propertyContext","propertyName","replace","user","query"],"mappings":"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","file":"static/js/5.7cccad680f27011c.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n// tslint:disable:react-no-dangerous-html\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className}) => (\n \n \n \n \n { cellData }\n \n);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from '../../dataActions/get-attributes-for-selected-variant';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { IProductSpecificationProps } from './product-specification.props.autogenerated';\n\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n title?: React.ReactNode;\n}\n\n/**\n *\n * ProductSpecification component\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component> {\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n\n // @ts-ignore: Compiler not reconizing condition check for function params\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n // @ts-ignore\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error);\n });\n }\n }\n );\n }\n\n // tslint:disable-next-line:max-func-body-length\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n\n try {\n data = this.props.data;\n } catch (e) {\n this.props.telemetry.error(`Something went wrong ------${e}`);\n return
{e}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n\n const viewProps = {\n ...this.props,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n ProductSpecificationTableBodyProps: {\n className: '',\n tag: 'tbody'\n },\n title: heading && heading.text && (\n ),\n productSpecificationResult: productSpecificationData && this._createTableBody(data)\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n return content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n \n );\n });\n }\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // none\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue !== null && product.DateTimeOffsetValue !== undefined && product.DateTimeOffsetValue.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // tslint:disable-next-line\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n } else {\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n }\n}\n\nexport default ProductSpecification;\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.\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 { 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 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. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if(!this.props.slots || !this.props.slots.content || !this.props.slots.content.length) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag:'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n },\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\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. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\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 && {pageTitle}}\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 = 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 * Licensed under the MIT License. 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, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\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\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 { containerType, className, typeName, id, children } = props;\n const customClassName = className ? ` ${className}` : '';\n\n return containerType ? (\n
\n
{children}
\n
\n ) : (\n
{children}
\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 * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\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 * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\nimport { ITextBlockViewProps } from './text-block';\n\nconst TextBlockView: React.FC = props => (\n
\n {props.paragraph}\n
\n);\n\nexport default TextBlockView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\nimport { IVideoPlayerViewProps } from './video-player';\n\nconst VideoPlayerView: React.FC = props => (\n \n {props.player}\n
\n);\n\nexport default VideoPlayerView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (slots && slots.socialShareItems.length === 0) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (isConsentGiven === false) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${this.props.config.orientation === orientation.vertical ? 'vertical' : ''}`,\n tag: 'ul'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\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 * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n// tslint:disable:no-reference\n/// \n\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions/dist/types/utilities/full-org-unit-availability';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport classname from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private mapRef: React.RefObject = React.createRef();\n\n constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map];\n },\n async () => {\n if (!this.props.data.storeSelectorStateManager.result?.context?.isDialog) {\n this._updateMap();\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n\n const {\n config: {\n heading,\n className\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const displayMap = storeSelectorStateManager?.listMapViewState?.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: displayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading && heading.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n private _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n }\n }\n\n private _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n orgUnitStoreInformation.map((unitStoreInfo: IFullOrgUnitAvailability, index: number) => {\n const storeLocation = unitStoreInfo?.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => storeLocation.OrgUnitNumber && storeSelectorStateManager?.setSelectedStoreLocationId(storeLocation.OrgUnitNumber));\n\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n });\n\n if (mapLocation) {\n const currLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map?.entities.push(pushpins);\n }\n }\n\n private _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon: icon\n };\n }\n\n private _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n }\n}\n\nexport default Map;\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 { IDefaultContainer3SlotsData } from './default-container-3-slots.data';\nimport { IDefaultContainer3SlotsProps } from './default-container-3-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n center: string[];\n right: string[];\n}\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default3SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer3SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n\n const slotsClassNames = this._getColClassName();\n const content = slots && slots.content;\n\n telemetry.log(LogLevel.Debug, \"Default 3 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n if (content && content.length > 3) {\n telemetry.log(LogLevel.Warning, 'Default 3 Slot Container passed more than 3 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 {content && content[2] &&
{content[2]}
}\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. (3)\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 center: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, center, right]: string[]) => {\n memo.left.push(left);\n memo.center.push(center);\n memo.right.push(right);\n return memo;\n },\n { left: [], center: [], right: [] }\n );\n };\n}\n\nexport default Default3SlotContainer;\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 * as React from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { colWidths } from '../../utils/classnames';\nimport { IDefaultContainerData } from './default-container.data';\nimport { childrenWidth as childrenWidthEnum, IDefaultContainerProps, layout as layoutEnum } from './default-container.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass DefaultContainer extends React.PureComponent> {\n constructor(props: IDefaultContainerProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\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 {slots &&\n slots.content &&\n slots.content.map((children: React.ReactNode, index: number) => {\n return (\n
\n {children}\n
\n );\n })}\n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n\n private _getChildColClassName(): string {\n const {\n config: { layout, childrenWidth }\n } = this.props;\n switch (layout) {\n case layoutEnum.flow:\n return childrenWidth === childrenWidthEnum.auto ? 'col-12 col-md' : this._getWidthClass(childrenWidth);\n case layoutEnum.stacked:\n default:\n return 'col-12';\n }\n }\n\n private _getWidthClass(s?: childrenWidthEnum): string {\n return colWidths.get(s || childrenWidthEnum.four) || 'col-12';\n }\n}\n\nexport default DefaultContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core-internal';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { IScriptInjectorProps } from './script-injector.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent}\n */\nclass ScriptInjector extends React.PureComponent> {\n constructor(props: IScriptInjectorProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n this._debug(`Adding html head tags for '${this.props.id}/${this.props.typeName}'`);\n\n const placeHolderPropsRegEx = RegExp('%[a-zA-Z0-9-.]*%', 'g');\n let placeHolders: RegExpExecArray | null;\n const originalSource = config && config.scriptSource;\n let resolvedSource;\n\n if (originalSource) {\n let hasMorePlaceHolders = true;\n resolvedSource = originalSource;\n\n while (hasMorePlaceHolders) {\n placeHolders = placeHolderPropsRegEx.exec(originalSource);\n\n if (placeHolders && placeHolders.length > 0) {\n this._debug(`extracted placeholder ${placeHolders[0]}`);\n resolvedSource = this._resolvePlaceHolder(resolvedSource, placeHolders[0]);\n } else {\n hasMorePlaceHolders = false;\n }\n }\n }\n\n if (!resolvedSource) {\n return null;\n }\n\n return (\n \n {this._isUrl(resolvedSource) ? (\n \n ) : (\n \n )}\n \n );\n }\n\n private _debug(debugMessage: string): void {\n if (this.props.telemetry) {\n this.props.telemetry.log(LogLevel.Debug, debugMessage);\n }\n }\n\n private _isUrl(source: string): boolean {\n return /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/.test(source);\n }\n\n private _resolvePlaceHolder(resolvedSource: string, placeHolderToken: string): string {\n // expect placeholder to of the format eg: %config.id%\n const placeHolderTokens = placeHolderToken.split(/[%.]/);\n\n if (placeHolderTokens.length !== 4 || !resolvedSource) {\n return resolvedSource;\n }\n\n const propertyContext = placeHolderTokens[1];\n const propertyName = placeHolderTokens[2];\n\n if (propertyContext === 'props') {\n if (this.props[propertyName]) {\n resolvedSource = resolvedSource.replace(placeHolderToken, this.props[propertyName]);\n this._debug(`Replaced placeholder ${placeHolderToken} with props property ${this.props[propertyName]}`);\n }\n } else if (this.props.context && this.props.context.request) {\n switch (propertyContext) {\n case 'request':\n if (this.props.context.request[propertyName]) {\n resolvedSource = resolvedSource.replace(placeHolderToken, this.props.context.request[propertyName]);\n this._debug(\n `Replaced placeholder ${placeHolderToken} with request property ${this.props.context.request[propertyName]}`\n );\n }\n\n break;\n case 'user':\n if (this.props.context.request.user && this.props.context.request.user[propertyName]) {\n resolvedSource = resolvedSource.replace(placeHolderToken, this.props.context.request.user[propertyName]);\n this._debug(\n `Replaced placeholder ${placeHolderToken} with user property ${this.props.context.request.user[propertyName]}`\n );\n }\n\n break;\n case 'query':\n if (this.props.context.request.query && this.props.context.request.query[propertyName]) {\n resolvedSource = resolvedSource.replace(placeHolderToken, this.props.context.request.query[propertyName]);\n this._debug(\n `Replaced placeholder ${placeHolderToken} with query parameter ${this.props.context.request.query[propertyName]}`\n );\n }\n\n break;\n default:\n }\n }\n\n return resolvedSource;\n }\n}\n\nexport default ScriptInjector;\n"],"sourceRoot":""}