{"version":3,"file":"static/js/2dc8fc8eec11e72a4b9b.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/modules/dobbies-browse/dobbies-browse.tsx?bd3f","webpack://Dobbies.Commerce/./src/modules/dobbies-browse/dobbies-browse.view.tsx?e9ae","webpack://Dobbies.Commerce/./lib/dobbies-browse/module-registration.js?bc62","webpack://Dobbies.Commerce/../../src/get-current-category-hierarchy.ts?d48e","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDobbiesBrowseData } from './dobbies-browse.data';\r\nimport { IDobbiesBrowseProps } from './dobbies-browse.props.autogenerated';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nexport interface IDobbiesBrowseViewProps extends IDobbiesBrowseProps {\r\n maxNumberOfCategoriesForScreenSize?: number;\r\n}\r\nexport interface IDobbiesBrowseState {\r\n maxNumberOfCategoriesForScreenSize: number;\r\n}\r\n\r\n/**\r\n *\r\n * DobbiesBrowse component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DobbiesBrowse extends React.PureComponent, IDobbiesBrowseState> {\r\n public constructor(props: IDobbiesBrowseProps) {\r\n super(props);\r\n this.state = {\r\n maxNumberOfCategoriesForScreenSize: -1\r\n };\r\n }\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', this.setMaxCats);\r\n }\r\n this.setMaxCats();\r\n }\r\n private setMaxCats = (): void => {\r\n const maxCats = this.getMaxCategoriesForCurrentScreenSize();\r\n this.setState({ maxNumberOfCategoriesForScreenSize: maxCats });\r\n };\r\n private getMaxCategoriesForCurrentScreenSize = () => {\r\n if ((MsDyn365.isBrowser && window) !== undefined && MsDyn365.isBrowser && window && window.innerWidth) {\r\n if (window.innerWidth >= 1700) {\r\n return 4;\r\n } else if (window.innerWidth >= 1250 && window.innerWidth < 1700) {\r\n return 3;\r\n } else if (window.innerWidth >= 700 && window.innerWidth < 1250) {\r\n return 2;\r\n } else if (window.innerWidth < 700) {\r\n return 1;\r\n }\r\n }\r\n return -1;\r\n };\r\n public render(): JSX.Element | null {\r\n const dobbiesBrowseProps = {\r\n ...this.props,\r\n maxNumberOfCategoriesForScreenSize: this.state.maxNumberOfCategoriesForScreenSize\r\n };\r\n return this.props.renderView(dobbiesBrowseProps);\r\n }\r\n}\r\n\r\nexport default DobbiesBrowse;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport * as React from 'react';\r\nimport { IDobbiesBrowseViewProps } from './dobbies-browse';\r\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport Button from 'reactstrap/lib/Button';\r\nimport { ISubMenuStaticMenusData } from '../dobbies-navigation-menu/dobbies-navigation-menu.props.autogenerated';\r\n\r\nconst renderLinks = (category: CategoryHierarchy, props: IDobbiesBrowseViewProps): JSX.Element => {\r\n const recordId = props.context.request.urlTokens.recordId;\r\n const activeClass = recordId && +recordId === category.RecordId ? 'browse-active-link' : '';\r\n return (\r\n
  • \r\n \r\n {category.Name}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst shouldCategoryHide = (props: IDobbiesBrowseViewProps, neutralizedName?: string): boolean => {\r\n if (props.config.hideMenuItemPrefix && neutralizedName?.startsWith(props.config.hideMenuItemPrefix)) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst _getScreenSize = (ctx: Msdyn365.ICoreContext): number => {\r\n // always render in mobile viewport on a mobile device\r\n // if (ctx.request && ctx.request.device && ctx.request.device.Type === 'Mobile') {\r\n // return 1;\r\n // }\r\n\r\n if ((MsDyn365.isBrowser && window) !== undefined && MsDyn365.isBrowser && window && window.innerWidth) {\r\n const gridSettings = ctx.request.gridSettings;\r\n if (gridSettings) {\r\n // if (gridSettings.xs && (MsDyn365.isBrowser && window && window.innerWidth) < gridSettings.xs.w) {\r\n if (gridSettings.xs && (MsDyn365.isBrowser && window && window.innerWidth) < 700) {\r\n // mobile\r\n return 1;\r\n } else if (window.innerWidth >= 700 && window.innerWidth < 1250) {\r\n // else if (gridSettings.sm && (MsDyn365.isBrowser && window && window.innerWidth) <= gridSettings.sm.w) {\r\n // iPad\r\n return 2;\r\n } else if (window.innerWidth >= 1250 && window.innerWidth < 1700) {\r\n // else if (gridSettings.md && (MsDyn365.isBrowser && window && window.innerWidth) <= gridSettings.md.w) {\r\n // Desktop\r\n return 3;\r\n } else if (window.innerWidth >= 1700) {\r\n // Desktop\r\n return 3;\r\n } else {\r\n return 3;\r\n }\r\n }\r\n }\r\n\r\n return 3; // desktop\r\n};\r\n\r\n/* VSI-Customization -- START\r\nWill render \"View All\" link and append the direct children of root link (children links based on rootLink(category ID))\r\n*/\r\n\r\nconst showRemainingCategories = () => {\r\n const moreOptionsDiv = document.getElementById('more-cats-div');\r\n if (moreOptionsDiv) {\r\n if (moreOptionsDiv.classList.contains('show-more-option')) {\r\n moreOptionsDiv.classList.remove('show-more-option');\r\n moreOptionsDiv.classList.add('hide-more-option');\r\n } else {\r\n moreOptionsDiv.classList.remove('hide-more-option');\r\n moreOptionsDiv.classList.add('show-more-option');\r\n }\r\n }\r\n};\r\n\r\nconst renderRootLink = (\r\n categories: JSX.Element[],\r\n category: CategoryHierarchy,\r\n makeActive: boolean,\r\n screenSize: number,\r\n showMore: boolean,\r\n maxCategoriesToBeShown: number\r\n): JSX.Element[] => {\r\n if (screenSize === 1 && showMore) {\r\n return [\r\n // ...categories.slice(0, 2),\r\n
  • \r\n {\r\n showRemainingCategories();\r\n }}\r\n >\r\n {/* more options */}\r\n Categories\r\n \r\n
      \r\n {/* {categories.splice(2, categories.length)} */}\r\n {categories}\r\n
    \r\n
  • \r\n ];\r\n } else if (screenSize === 2 && showMore) {\r\n if (categories.length === maxCategoriesToBeShown + 1) {\r\n return [...categories];\r\n }\r\n return [\r\n ...categories.slice(0, maxCategoriesToBeShown),\r\n
  • \r\n {\r\n showRemainingCategories();\r\n }}\r\n >\r\n more options\r\n \r\n
      \r\n {categories.splice(maxCategoriesToBeShown, categories.length)}\r\n
    \r\n
  • \r\n ];\r\n } else if (screenSize === 3 && showMore) {\r\n if (categories.length === maxCategoriesToBeShown + 1) {\r\n return [...categories];\r\n }\r\n return [\r\n ...categories.slice(0, maxCategoriesToBeShown),\r\n
  • \r\n {\r\n showRemainingCategories();\r\n }}\r\n >\r\n more options\r\n \r\n
      \r\n {categories.splice(maxCategoriesToBeShown, categories.length)}\r\n
    \r\n
  • \r\n ];\r\n }\r\n return [...categories];\r\n};\r\n\r\nconst getMaxCategoriesForCurrentScreenSize = () => {\r\n if ((MsDyn365.isBrowser && window) !== undefined && MsDyn365.isBrowser && window && window.innerWidth) {\r\n if (window.innerWidth >= 1700) {\r\n return 4;\r\n } else if (window.innerWidth >= 1250 && window.innerWidth < 1700) {\r\n return 3;\r\n } else if (window.innerWidth >= 700 && window.innerWidth < 1250) {\r\n return 2;\r\n } else if (window.innerWidth < 700) {\r\n return 1;\r\n }\r\n }\r\n return 4;\r\n};\r\n\r\nconst getStaticCategories = (props: IDobbiesBrowseViewProps, results: CategoryHierarchy[] | undefined) => {\r\n const staticMenusCookie = props.context.request.cookies.get('static_submenu_items');\r\n let staticMenus: ISubMenuStaticMenusData[] = [];\r\n const staticCategories: CategoryHierarchy[] = [];\r\n if (Array.isArray(staticMenusCookie.value)) {\r\n staticMenus = staticMenusCookie.value as ISubMenuStaticMenusData[];\r\n }\r\n if (results && results.length) {\r\n const lastCategory = results[results.length - 1];\r\n staticMenus = staticMenus.filter(sm => sm.linkText === lastCategory.Name && sm.subMenus?.length);\r\n staticMenus.map(sm => {\r\n sm.subMenus?.map(sbm => {\r\n const c: CategoryHierarchy = { Name: sbm.linkText, Url: sbm.linkUrl.destinationUrl, Children: [], RecordId: -1 };\r\n staticCategories.push(c);\r\n });\r\n });\r\n }\r\n return staticCategories;\r\n};\r\n\r\nconst replaceCategory = (props: IDobbiesBrowseViewProps, category: CategoryHierarchy): CategoryHierarchy => {\r\n if (props.config.categoriesReplacementPriorityList && props.config.categoriesReplacementPriorityList.length) {\r\n for (const replacementInfo of props.config.categoriesReplacementPriorityList) {\r\n if (replacementInfo.categoryToBeReplaced === category.Name) {\r\n category.Name = replacementInfo.replacingCategory;\r\n category.Url = replacementInfo.replacingCategoryUrl;\r\n return category;\r\n }\r\n }\r\n }\r\n return category;\r\n};\r\n\r\n/* VSI-Customization -- END */\r\n\r\n/* VSI-Customization -- START Will render the categories based on selection */\r\nconst renderCategories = (props: IDobbiesBrowseViewProps): JSX.Element[][] | JSX.Element[] | undefined => {\r\n const results = props.data.categoryHierarchy.result;\r\n const [showMoreOptions, setShowMoreOptions] = React.useState(false);\r\n const screenSize = _getScreenSize(props.context);\r\n if (props.maxNumberOfCategoriesForScreenSize === -1) {\r\n return [<>];\r\n }\r\n let maxCategoriesToBeShown = props.maxNumberOfCategoriesForScreenSize\r\n ? props.maxNumberOfCategoriesForScreenSize\r\n : getMaxCategoriesForCurrentScreenSize(); // screenSize === 1 || screenSize === 2 ? 3 : 4;\r\n const originalMaxCategoriesToBeShown = props.maxNumberOfCategoriesForScreenSize\r\n ? props.maxNumberOfCategoriesForScreenSize\r\n : getMaxCategoriesForCurrentScreenSize(); // screenSize === 1 || screenSize === 2 ? 3 : 4;\r\n const characterLimit = props.config.maximumCharacterLimit;\r\n /* VSI-Customization -- START\r\n Render categories if parent doesn't exist\r\n */\r\n let lengthCheckIter = 0;\r\n if (results && results.length === 1) {\r\n return results.map((cat: CategoryHierarchy) => {\r\n const staticCategories = getStaticCategories(props, results);\r\n const categories = cat.Children.filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, cat, true, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n });\r\n }\r\n /* VSI-Customization -- END */\r\n\r\n /* VSI-Customization -- START\r\n Render Direct childrens of some category ID that has children categories\r\n */\r\n if (results && results.length === 2) {\r\n if (results[1].Children && results[1].Children.length > 0) {\r\n const staticCategories = getStaticCategories(props, [results[1]]);\r\n const categories = results[1].Children.filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[1], true, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n } else {\r\n // VSI CUSTOMIZATION - START - Edits Further Customization\r\n const urlID = Number(\r\n props.context.request.url.requestUrl.href\r\n .substring(props.context.request.url.requestUrl.href.lastIndexOf('/') + 1)\r\n .split('.')[0]\r\n );\r\n const staticCategories = getStaticCategories(props, [results[0]]);\r\n // VSI CUSTOMIZATION - END - Edits Further Customization\r\n const categories = results[0].Children.filter(cat => cat.RecordId !== urlID)\r\n .filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n // VSI CUSTOMIZATION - START - Edits Further Customization\r\n // if (category.RecordId === urlID) {\r\n // return renderLinks(category, props);\r\n // } else {\r\n // return
    ;\r\n // }\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n // VSI CUSTOMIZATION - END - Edits Further Customization\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[0], false, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n }\r\n }\r\n\r\n if (results && results.length === 3) {\r\n if (results[2].Children && results[2].Children.filter(cat => !shouldCategoryHide(props, cat.NeutralizedName)).length > 0) {\r\n const staticCategories = getStaticCategories(props, [results[2]]);\r\n const categories = results[2].Children.filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[2], true, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n } else {\r\n const urlID = Number(\r\n props.context.request.url.requestUrl.href\r\n .substring(props.context.request.url.requestUrl.href.lastIndexOf('/') + 1)\r\n .split('.')[0]\r\n );\r\n const staticCategories = getStaticCategories(props, [results[1]]);\r\n const categories = results[1].Children.filter(cat => cat.RecordId !== urlID)\r\n .filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[1], false, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n }\r\n }\r\n\r\n if (results && results.length === 4) {\r\n if (results[3].Children && results[3].Children.length > 0) {\r\n const staticCategories = getStaticCategories(props, [results[3]]);\r\n const categories = results[3].Children.filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown &&\r\n maxCategoriesToBeShown >= originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[3], true, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n } else {\r\n const staticCategories = getStaticCategories(props, [results[2]]);\r\n const urlID = Number(\r\n props.context.request.url.requestUrl.href\r\n .substring(props.context.request.url.requestUrl.href.lastIndexOf('/') + 1)\r\n .split('.')[0]\r\n );\r\n const categories = results[2].Children.filter(cat => cat.RecordId !== urlID)\r\n .filter(cat => !shouldCategoryHide(props, cat.NeutralizedName))\r\n .concat(staticCategories)\r\n .map(\r\n (category: CategoryHierarchy): JSX.Element => {\r\n if (\r\n characterLimit &&\r\n category?.Name?.length &&\r\n category?.Name?.length >= characterLimit &&\r\n lengthCheckIter < originalMaxCategoriesToBeShown\r\n ) {\r\n maxCategoriesToBeShown = maxCategoriesToBeShown - 1;\r\n }\r\n lengthCheckIter++;\r\n category = replaceCategory(props, category);\r\n return renderLinks(category, props);\r\n }\r\n );\r\n const totalCategories = categories?.length ? categories.length : 0;\r\n if (screenSize === 1) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n if (screenSize === 2) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n } else if (screenSize === 3) {\r\n if (totalCategories > maxCategoriesToBeShown && !showMoreOptions) {\r\n setShowMoreOptions(true);\r\n }\r\n }\r\n return renderRootLink(categories, results[2], false, screenSize, showMoreOptions, maxCategoriesToBeShown);\r\n }\r\n }\r\n\r\n return;\r\n};\r\n/* VSI-Customization -- END *\r\n\r\n/* VSI-Customization -- END */\r\n\r\nexport default (props: IDobbiesBrowseViewProps) => {\r\n console.log('Max Number of Categories', props.maxNumberOfCategoriesForScreenSize);\r\n return
      {renderCategories(props)}
    ;\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-browse'] = {\n c: () => require('partner/modules/dobbies-browse/dobbies-browse.tsx'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-browse',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-browse'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\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 export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-browse|dobbies-browse'] = {\n c: () => require('partner/modules/dobbies-browse/dobbies-browse.view.tsx'),\n cn: '__local__-__local__-dobbies-browse'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\n\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { ArrayExtensions } from './utilities';\n\n/**\n * Action Input Class for get-current-category-hierarchy.\n */\nexport class CurrentCategoryHierarchyInput extends CategoriesInput {\n public activeCategoryId: number;\n\n public constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number, activeCategoryId?: number) {\n super(context, mappedToHierarchy, maxItems);\n const defaultActiveCategoryId = 0;\n this.activeCategoryId = activeCategoryId ?? defaultActiveCategoryId;\n }\n\n // @ts-expect-error: Overriding cache object type\n public getCacheObjectType = () => 'CurrentCategoryHierarchy';\n\n public getCacheKey = () => `${this.activeCategoryId}-${this.channelId}`;\n}\n\n/**\n * Creates the input required for the data action.\n * @param inputData\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config?.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n let activeCategoryId =\n inputData.requestContext.urlTokens.pageType === 'Category' ? inputData.requestContext.urlTokens.itemId : undefined;\n activeCategoryId = activeCategoryId ?? inputData.requestContext.query?.categoryId;\n const activeCategoryParsedId = activeCategoryId ? Number.parseInt(activeCategoryId, 10) : undefined;\n\n return new CurrentCategoryHierarchyInput(inputData.requestContext, true, topItems, activeCategoryParsedId);\n};\n\n/**\n * Finds the given category in the list of categories and returns an array with the info on where it's located.\n * @param categories - Categories list to search from.\n * @param categoryId - The category id to find.\n * @returns A list of categories starting from the given category id, ending up the root parent.\n */\nconst findCategoryHierarchy = (categories: CategoryHierarchy[], categoryId: number): CategoryHierarchy[] | null => {\n for (const category of categories) {\n if (category.RecordId === categoryId) {\n return [category];\n }\n\n if (ArrayExtensions.hasElements(category.Children)) {\n const innerCategoryHierarchy = findCategoryHierarchy(category.Children, categoryId);\n if (ArrayExtensions.hasElements(innerCategoryHierarchy)) {\n innerCategoryHierarchy.push(category);\n return innerCategoryHierarchy;\n }\n }\n }\n\n return null;\n};\n\n/**\n * Get the hierarchy of categories that are currently active as a parent -> child array.\n * Return will be as follows: [ParentCategory, Child, SubChild, SubSubChild].\n * @param input\n * @param ctx\n */\nexport async function getCurrentCategoryHierarchyAction(\n input: CurrentCategoryHierarchyInput,\n ctx: IActionContext\n): Promise {\n const fullCategoryHierarchy = await getCategoriesHierarchy(new CategoriesInput(ctx.requestContext, true, input.maxItems), ctx);\n const categoryArray = findCategoryHierarchy(fullCategoryHierarchy, input.activeCategoryId) ?? [];\n const sortedCategoryArray = categoryArray.reverse();\n return sortedCategoryArray;\n}\n\nexport const getCurrentCategoryHierarchyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category-hierarchy',\n action: getCurrentCategoryHierarchyAction as IAction,\n input: createCategoriesHierarchyInput\n});\n\nexport default getCurrentCategoryHierarchyActionDataAction;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["DobbiesBrowse","React","constructor","props","super","setMaxCats","maxCats","this","getMaxCategoriesForCurrentScreenSize","setState","maxNumberOfCategoriesForScreenSize","undefined","MsDyn365","isBrowser","window","innerWidth","state","componentDidMount","addEventListener","render","dobbiesBrowseProps","_objectSpread","renderView","renderLinks","category","recordId","context","request","urlTokens","activeClass","RecordId","key","href","Url","className","Name","shouldCategoryHide","neutralizedName","config","hideMenuItemPrefix","startsWith","showRemainingCategories","moreOptionsDiv","document","getElementById","classList","contains","remove","add","renderRootLink","categories","makeActive","screenSize","showMore","maxCategoriesToBeShown","length","Button","onClick","id","slice","splice","getStaticCategories","results","staticMenusCookie","cookies","get","staticMenus","staticCategories","Array","isArray","value","lastCategory","filter","sm","_sm$subMenus","linkText","subMenus","map","_sm$subMenus2","sbm","c","linkUrl","destinationUrl","Children","push","replaceCategory","categoriesReplacementPriorityList","replacementInfo","categoryToBeReplaced","replacingCategory","replacingCategoryUrl","renderCategories","data","categoryHierarchy","result","showMoreOptions","setShowMoreOptions","ctx","gridSettings","xs","_getScreenSize","originalMaxCategoriesToBeShown","characterLimit","maximumCharacterLimit","lengthCheckIter","cat","NeutralizedName","concat","_category","_category2","totalCategories","_category3","_category4","urlID","Number","url","requestUrl","substring","lastIndexOf","split","_category5","_category6","_category7","_category8","_category9","_category10","_category11","_category12","_category13","_category14","console","log","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","CurrentCategoryHierarchyInput","CategoriesInput","mappedToHierarchy","maxItems","activeCategoryId","getCacheObjectType","getCacheKey","channelId","createCategoriesHierarchyInput","inputData","_inputData$config","_inputData$requestCon","topItems","topCategories","parseInt","requestContext","pageType","itemId","query","categoryId","activeCategoryParsedId","findCategoryHierarchy","ArrayExtensions","hasElements","innerCategoryHierarchy","async","getCurrentCategoryHierarchyAction","input","_findCategoryHierarch","fullCategoryHierarchy","getCategoriesHierarchy","reverse","getCurrentCategoryHierarchyActionDataAction","createObservableDataAction","action","module","exports","ReactDOM"],"sourceRoot":""}