{"version":3,"file":"static/js/e4768c6aa5026c7a1fbf.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\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 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 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 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 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 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 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 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","renderCategories","data","categoryHierarchy","result","showMoreOptions","setShowMoreOptions","ctx","gridSettings","xs","_getScreenSize","originalMaxCategoriesToBeShown","characterLimit","maximumCharacterLimit","lengthCheckIter","cat","NeutralizedName","concat","_category$Name","_category$Name2","totalCategories","_category$Name3","_category$Name4","urlID","Number","url","requestUrl","substring","lastIndexOf","split","_category$Name5","_category$Name6","_category$Name7","_category$Name8","_category$Name9","_category$Name10","_category$Name11","_category$Name12","_category$Name13","_category$Name14","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","_activeCategoryId","_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":""}