{"version":3,"file":"static/js/a6424b275051df6253ea.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/modules/dobbies-category-page-summary/dobbies-category-page-summary.action.ts?c3db","webpack://Dobbies.Commerce/./lib/dobbies-category-page-summary/module-registration.js?825e","webpack://Dobbies.Commerce/./src/modules/default-page-summary/default-page-summary.tsx?0c78","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n    CacheType,\r\n    createObservableDataAction,\r\n    getFriendlyName,\r\n    IAction,\r\n    IActionContext,\r\n    IActionInput,\r\n    IAny,\r\n    ICreateActionContext,\r\n    IGeneric,\r\n    IRequestContext\r\n} from '@msdyn365-commerce/core';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport {\r\n    buildCacheKeyWithUrlTokens,\r\n    CurrentCategoryInput,\r\n    getCategoryUrl,\r\n    getCurrentCategory,\r\n    removeDomainQspFromUrl\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IDefaultPageSummaryConfig } from '@msdyn365-commerce-modules/page-summary';\r\nimport { IPageSummaryData } from '@msdyn365-commerce-modules/page-summary';\r\nimport { IDobbiesCategoryPageSummaryConfig } from './dobbies-category-page-summary.props.autogenerated';\r\n/**\r\n * Category Page Summary Input\r\n */\r\nexport class CategoryPageSummaryInput implements IActionInput {\r\n    public requestContext: IRequestContext;\r\n    public config: IDobbiesCategoryPageSummaryConfig;\r\n    constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\r\n        this.config = config || {};\r\n        this.requestContext = requestContext;\r\n    }\r\n    public getCacheObjectType = (): string => 'CategoryPageSummary';\r\n    public getCacheKey = (): string => buildCacheKeyWithUrlTokens('CategoryPageSummary', this.requestContext);\r\n    public dataCacheType = (): CacheType => 'none';\r\n}\r\nconst createGetCurrentCategoryInput = (inputData: IActionContext): CurrentCategoryInput => {\r\n    if (inputData && inputData.requestContext) {\r\n        return new CurrentCategoryInput(inputData.requestContext);\r\n    }\r\n    throw new Error('Please specify categoryId query string in request.');\r\n};\r\n/**\r\n * Get skip count.\r\n * @param inputData\r\n */\r\nfunction getSkipCount(inputData: ICreateActionContext<IGeneric<IAny>, IGeneric<IAny>>): string | undefined {\r\n    return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skip;\r\n}\r\nconst action = async (input: CategoryPageSummaryInput, context: IActionContext): Promise<IPageSummaryData> => {\r\n    const { config } = input;\r\n    // const jsonUrl =\r\n    //     context.requestContext.app.config.plpSeoJsonUrl ||\r\n    //     'https://files-eu-prod.cms.commerce.dynamics.com/cms/api/ctdwmwnctb/binary/MD4Pav';\r\n    const excelUrl =\r\n        context.requestContext.app.config.plpSeoTSVUrl ||\r\n        'https://files-eu-prod.cms.commerce.dynamics.com/cms/api/ctdwmwnctb/binary/MD8w5X';\r\n    // const res = await Msdyn365.sendRequest<any>(jsonUrl, 'get');\r\n    const excelRes = await Msdyn365.sendRequest<any>(excelUrl, 'get');\r\n    let currentCategoryResult;\r\n    try {\r\n        currentCategoryResult = await getCurrentCategory(createGetCurrentCategoryInput(context), context);\r\n    } catch {\r\n        // Do nothing, if the action fails fallback to values defined in data\r\n    }\r\n    const currCatUrl = context.requestContext.url.requestUrl.href;\r\n    let configCategoryUrl = '';\r\n    let configCategoryName = '';\r\n    let configCategoryDesc = '';\r\n    if (\r\n        context.requestContext.app.config.canonicalUrlForCategories &&\r\n        Array.isArray(context.requestContext.app.config.canonicalUrlForCategories)\r\n    ) {\r\n        for (const canonicalUrlCatConfig of context.requestContext.app.config.canonicalUrlForCategories) {\r\n            if (currCatUrl.includes(canonicalUrlCatConfig.categoryIDOrUrl) || currCatUrl === canonicalUrlCatConfig.categoryIDOrUrl) {\r\n                configCategoryUrl = canonicalUrlCatConfig.canonicalUrl;\r\n                configCategoryName = canonicalUrlCatConfig.canonicalName;\r\n                configCategoryDesc = canonicalUrlCatConfig.canonicalDescription;\r\n            }\r\n        }\r\n    }\r\n    if (currentCategoryResult) {\r\n        const currentCategory = { ...currentCategoryResult };\r\n        let categoryUrl: string | undefined;\r\n        try {\r\n            // Reset category's name neutralizedName\r\n            const localName = getFriendlyName(context.requestContext.locale, currentCategory.NameTranslations);\r\n            const neutralizedName = currentCategory.NeutralizedName || currentCategory.Name;\r\n            currentCategory.Name = localName;\r\n            currentCategory.NeutralizedName = neutralizedName;\r\n            categoryUrl = getCategoryUrl(currentCategory);\r\n            const canonicalDomain = context.requestContext.canonicalDomain;\r\n            if (categoryUrl && canonicalDomain) {\r\n                categoryUrl = `https://${canonicalDomain}${categoryUrl}`.toLocaleLowerCase();\r\n                const skipCount = getSkipCount(context);\r\n                const Url = new URL(categoryUrl);\r\n                const urlParams: URLSearchParams = new URLSearchParams(Url.search);\r\n                if (skipCount) {\r\n                    urlParams.set('skip', skipCount);\r\n                }\r\n                Url.search = urlParams.toString();\r\n                categoryUrl = Url.toString();\r\n                categoryUrl = removeDomainQspFromUrl(categoryUrl, context.requestContext);\r\n            } else {\r\n                categoryUrl = undefined;\r\n            }\r\n        } catch {\r\n            categoryUrl = undefined;\r\n        }\r\n        const catUrl = getCategoryUrl(currentCategory);\r\n        const excelDataStr = excelRes.data as string;\r\n        const splittedExcelData = excelDataStr.split('\\n');\r\n        let title = currentCategory.Name;\r\n        let desc: string | undefined;\r\n        let canonical = categoryUrl;\r\n        for (const dataRow of splittedExcelData) {\r\n            if (!dataRow || !dataRow.trim()) {\r\n                continue;\r\n            }\r\n            const rowSplitted = dataRow.trim().split('\\t');\r\n            const curl = rowSplitted[0];\r\n            if (catUrl && (catUrl === curl || catUrl?.includes(curl) || curl.includes(catUrl))) {\r\n                title = rowSplitted.length > 1 ? rowSplitted[1] : currentCategory.Name;\r\n                desc = rowSplitted.length > 2 ? rowSplitted[2] : undefined;\r\n                if (config.descriptionLimit && desc) {\r\n                    desc = desc.substring(0, config.descriptionLimit);\r\n                }\r\n                canonical = rowSplitted.length > 3 ? rowSplitted[3] : categoryUrl;\r\n                const categoryOGImageUrl = rowSplitted.length > 4 ? rowSplitted[4] : currentCategory.OfflineImage;\r\n                return {\r\n                    title: title,\r\n                    description: desc,\r\n                    sharingImageUrl: categoryOGImageUrl,\r\n                    canonicalUrl: canonical,\r\n                    faviconUrl: config && config.faviconUrl\r\n                };\r\n            }\r\n        }\r\n        if (config.descriptionLimit && desc) {\r\n            desc = desc.substring(0, config.descriptionLimit);\r\n        }\r\n        return {\r\n            title: title,\r\n            description: desc\r\n                ? desc\r\n                : config.defaultCategoryDescription\r\n                ? config.defaultCategoryDescription\r\n                : 'Dobbies Garden Centres are proud to provide the very best in horticultural products and expert gardening advice to gardeners throughout the UK',\r\n            sharingImageUrl: currentCategory.OfflineImage,\r\n            canonicalUrl: canonical,\r\n            faviconUrl: config && config.faviconUrl\r\n        };\r\n        // const plpSeoData = res.data && catUrl && res.data[catUrl];\r\n        // return {\r\n        //     title: plpSeoData ? plpSeoData.title : currentCategory.Name,\r\n        //     description: plpSeoData && plpSeoData.description,\r\n        //     sharingImageUrl: currentCategory.OfflineImage,\r\n        //     canonicalUrl: plpSeoData ? plpSeoData.canonicalUrl : categoryUrl,\r\n        //     faviconUrl: config && config.faviconUrl\r\n        // };\r\n        // If the action fails fallback to values defined from data\r\n    } else if (configCategoryUrl && configCategoryName) {\r\n        if (config.descriptionLimit && configCategoryDesc) {\r\n            configCategoryDesc = configCategoryDesc.substring(0, config.descriptionLimit);\r\n        }\r\n        return {\r\n            title: configCategoryName,\r\n            description: configCategoryDesc,\r\n            sharingImageUrl: config.sharingImage && config.sharingImage.src,\r\n            canonicalUrl: configCategoryUrl,\r\n            faviconUrl: config && config.faviconUrl\r\n        };\r\n    } else if (config) {\r\n        return {\r\n            title: config.title,\r\n            sharingImageUrl: config.sharingImage && config.sharingImage.src,\r\n            faviconUrl: config && config.faviconUrl\r\n        };\r\n    }\r\n    return {};\r\n};\r\nexport default createObservableDataAction({\r\n    id: '@msdyn365-commerce-modules/page-summary/category-page-summary',\r\n    action: <IAction<IPageSummaryData>>action,\r\n    input: (args: ICreateActionContext) => {\r\n        return new CategoryPageSummaryInput(<IDefaultPageSummaryConfig>args.config, args.requestContext);\r\n    }\r\n});\r\n","const binding = { modules: {}, dataActions: {} };\n\n    const registerActionId = (actionPath) => {\n        if (binding.dataActions[actionPath] &&\n            binding.dataActions[actionPath].default &&\n            binding.dataActions[actionPath].default.prototype &&\n            binding.dataActions[actionPath].default.prototype.id) {\n            binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n        } else {\n            Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n                if (binding.dataActions[actionPath][exportName] &&\n                    binding.dataActions[actionPath][exportName].prototype &&\n                    binding.dataActions[actionPath][exportName].prototype.Action) {\n                    binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n                }\n            })\n        }\n    };\n\n    const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n        if (process.env.NODE_ENV === 'development') {\n            if (!dataAction.default) {\n                throw new Error('Data action path does not have a default export');\n            }\n            if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n                binding.dataActions[sanitizedActionPath] = dataAction;\n            }\n        } else {\n            binding.dataActions[sanitizedActionPath] = dataAction;\n            if (!binding.dataActions[sanitizedActionPath].default) {\n                throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n            }\n            binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n            if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n                binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n            }\n        }\n    };\n    \n\n    (binding.modules['dobbies-category-page-summary'] = {\n        c: () => require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n        $type: 'htmlHeadTagsModule',\n        da: [{name:'pageSummary',  path:'modules/dobbies-category-page-summary/dobbies-category-page-summary.action', runOn: 0}],\n        \n        iNM: true,\n        ns: '__local__',\n        n: 'dobbies-category-page-summary',\n        p: '__local__',\n        \n        pdp: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.definition.json',\n        \n        \n        md: 'src/modules/dobbies-category-page-summary'\n    });\n        \n\n        {\n            const sanitizedActionPath = 'modules/dobbies-category-page-summary/dobbies-category-page-summary.action';\n            let dataAction = require('partner/modules/dobbies-category-page-summary/dobbies-category-page-summary.action');\n            registerSanitizedActionPath(sanitizedActionPath, dataAction);\n        }\n            \n\n        \n    window.__bindings__ = window.__bindings__ || {};\n    window.__bindings__.modules = {\n        ...window.__bindings__.modules || {},\n        ...binding.modules\n    };\n    \n        window.__bindings__.dataActions = {\n        ...window.__bindings__.dataActions || {},\n        ...binding.dataActions\n    };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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<DefaultPageSummaryProps>}\n */\nclass DefaultPageSummary extends React.PureComponent<IDefaultPageSummaryProps<IDefaultPageSummaryData>> {\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                <HtmlHeadInclude>\n                    {pageTitle && <title>{pageTitle}</title>}\n                    {description && <meta name='description' content={description} />}\n                    {keywords && <meta name='keywords' content={keywords} />}\n                    {canonicalUrl && <link rel='canonical' href={canonicalUrl} />}\n                    {faviconUrl && <link rel='shortcut icon' href={faviconUrl} />}\n                </HtmlHeadInclude>\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            <HtmlHeadInclude>\n                {title && <meta property='og:title' content={title} />}\n                {description && <meta property='og:description' content={description} />}\n                {sharingImageUrl && <meta property='og:image' content={sharingImageUrl} />}\n                <meta property='og:type' content='website' />\n            </HtmlHeadInclude>\n        );\n    }\n\n    private _renderTwitterTags(\n        title: string | undefined,\n        description: string | undefined,\n        sharingImageUrl: string | undefined\n    ): JSX.Element {\n        return (\n            <HtmlHeadInclude>\n                {title && <meta name='twitter:title' content={title} />}\n                {description && <meta name='twitter:description' content={description} />}\n                {sharingImageUrl && <meta name='twitter:image' content={sharingImageUrl} />}\n                <meta name='twitter:card' content='summary' />\n            </HtmlHeadInclude>\n        );\n    }\n\n    private _constructPageTitle(title: string | undefined, app: IGeneric<IAny>): 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","module.exports = React;","module.exports = ReactDOM;"],"names":["CategoryPageSummaryInput","constructor","config","requestContext","getCacheObjectType","getCacheKey","buildCacheKeyWithUrlTokens","this","dataCacheType","createObservableDataAction","id","action","async","input","context","excelUrl","app","plpSeoTSVUrl","excelRes","Msdyn365","currentCategoryResult","getCurrentCategory","inputData","CurrentCategoryInput","Error","createGetCurrentCategoryInput","_unused","currCatUrl","url","requestUrl","href","configCategoryUrl","configCategoryName","configCategoryDesc","canonicalUrlForCategories","Array","isArray","canonicalUrlCatConfig","includes","categoryIDOrUrl","canonicalUrl","canonicalName","canonicalDescription","currentCategory","_objectSpread","categoryUrl","localName","getFriendlyName","locale","NameTranslations","neutralizedName","NeutralizedName","Name","getCategoryUrl","canonicalDomain","toLocaleLowerCase","skipCount","query","skip","Url","URL","urlParams","URLSearchParams","search","set","toString","removeDomainQspFromUrl","undefined","_unused2","catUrl","splittedExcelData","data","split","desc","title","canonical","dataRow","trim","rowSplitted","curl","length","descriptionLimit","substring","description","sharingImageUrl","OfflineImage","faviconUrl","defaultCategoryDescription","sharingImage","src","args","binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","window","__bindings__","DefaultPageSummary","React","render","props","pageSummary","result","keywords","pageTitle","_constructPageTitle","request","HtmlHeadInclude","content","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","module","exports","ReactDOM"],"sourceRoot":""}