{"version":3,"file":"static/js/74e6b87209292f29798b.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/get-roof-table.action.ts?6b0d","webpack://Msdyn365.Commerce.Online/./src/modules/components/lobas-url-utils.ts?7bae","webpack://Msdyn365.Commerce.Online/./src/modules/components/lobas-labeled-dropdown.tsx?8e80","webpack://Msdyn365.Commerce.Online/./src/modules/lobas-product-selector/lobas-product-selector.tsx?2ea0","webpack://Msdyn365.Commerce.Online/./src/modules/lobas-product-selector/lobas-product-selector.view.tsx?0130","webpack://Msdyn365.Commerce.Online/./lib/lobas-product-selector/module-registration.js?fc17","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/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\r\nimport { createObservableDataAction, IAction, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { retailAction } from '@msdyn365-commerce/retail-proxy';\r\nimport { IRoof } from './DataServiceEntities.g';\r\nimport { createGetRoofTableInput } from './DataActionExtension.g';\r\n\r\nexport default createObservableDataAction({\r\n action: >retailAction,\r\n input: (context: ICreateActionContext) => {\r\n return createGetRoofTableInput({ Paging: { Top: 0 } });\r\n }\r\n});\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Refiner Compression:\r\n * Refiners contains a non-trivial amount of data that is required to successfully make\r\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\r\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\r\n * the following array style index-based format:\r\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText].\r\n */\r\nconst compressedRefinerKeys = [\r\n 'DataTypeValue',\r\n 'LeftValueBoundString',\r\n 'RefinerRecordId',\r\n 'RefinerSourceValue',\r\n 'RightValueBoundString',\r\n 'UnitText'\r\n];\r\n\r\n/**\r\n * Hydrates compressed refiner data from URL.\r\n * @param fullUrl The full URL of the page.\r\n * @param requestContext\r\n */\r\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\r\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\r\n if (!compressedRefinerArray || compressedRefinerArray.length === 0) {\r\n return [];\r\n }\r\n\r\n return compressedRefinerArray\r\n .map(compressedRefiner => {\r\n try {\r\n const parsedRefiner: ProductRefinerValue = {};\r\n compressedRefinerKeys.forEach((refinerKey, index) => {\r\n parsedRefiner[refinerKey] = compressedRefiner[index];\r\n });\r\n return parsedRefiner;\r\n } catch {\r\n return undefined;\r\n }\r\n })\r\n .filter(Boolean);\r\n};\r\n\r\n/**\r\n * Compressed a list of refiners for use in URLs.\r\n * @param refiners The uncompressed refiners.\r\n */\r\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\r\n const compressedRefiners: (string | number)[][] = [];\r\n\r\n refiners.forEach(refiner => {\r\n const compressedRefiner: (string | number)[] = [];\r\n compressedRefinerKeys.forEach(refinerKey => {\r\n compressedRefiner.push(refiner[refinerKey]);\r\n });\r\n compressedRefiners.push(compressedRefiner);\r\n });\r\n\r\n return compressedRefiners;\r\n};\r\n\r\n/**\r\n * Method which creates a URL contiaining serialized active refiners.\r\n * @param fullUrl The Current URL of the page.\r\n * @param refiners The refiners which should be added to the URL.\r\n * @param sortingColumns\r\n * @param skipCount\r\n */\r\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\r\n // Refiner Change flow\r\n if (refiners !== undefined) {\r\n if (refiners.length === 0) {\r\n fullUrl.searchParams.delete('refiners');\r\n } else {\r\n const sortedRefiners = refiners.sort((first, second) =>\r\n first.RefinerRecordId && second.RefinerRecordId && first.RefinerRecordId > second.RefinerRecordId ? 1 : -1\r\n );\r\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(sortedRefiners)));\r\n }\r\n\r\n // Adding or removing a refiner means we want to always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (sortingColumns !== undefined) {\r\n if (sortingColumns.length === 0) {\r\n fullUrl.searchParams.delete('sorting');\r\n } else {\r\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\r\n }\r\n\r\n // Changing the sort means always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (skipCount) {\r\n fullUrl.searchParams.set('skip', skipCount.toString());\r\n }\r\n\r\n return fullUrl.href;\r\n};\r\n\r\n/**\r\n * Parses a query param from the query object of the request context.\r\n * @param key The query parameter key.\r\n * @param requestContext The request context.\r\n */\r\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\r\n if (requestContext.query && requestContext.query[key]) {\r\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Gets the current URL of the page from the request context.\r\n * @param requestContext The request context.\r\n */\r\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\r\n if (MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n }\r\n\r\n // NOTE: Typing on requestURL is incorrect\r\n if (requestContext.url.requestUrl.href) {\r\n return new URL(requestContext.url.requestUrl.href);\r\n }\r\n return new URL((requestContext.url.requestUrl));\r\n};\r\n","/* eslint-disable security/detect-object-injection */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { ILobasLabeledDropdownProps } from './lobas-labeled-dropdown.props';\r\n\r\nexport interface ILobasLabeledDropdownState {\r\n selectedIndex: number;\r\n}\r\n\r\n/**\r\n * Labeled Dropdown component.\r\n */\r\nexport default class LobasLabeledDropdown extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n toggleColor: 'link'\r\n };\r\n\r\n constructor(props: ILobasLabeledDropdownProps) {\r\n super(props);\r\n this._onSelectOption = this._onSelectOption.bind(this);\r\n const selectedKey = this.props.selectedOption.key;\r\n const keys = this.props.dropdownOptions.map(option => option.key);\r\n this.state = { selectedIndex: keys.indexOf(selectedKey) };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { labelText, labelClassname, dropdownId, dropdownOptions, dropdownClassname, dropdownDisabled } = this.props;\r\n\r\n const labelClassNames = classNames('msc-l-dropdown__label', labelClassname);\r\n const dropdownClassNames = classNames('msc-l-dropdown', dropdownClassname);\r\n const selectedIndex = this._getSelectedIndex();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _getSelectedIndex(): number {\r\n if (this.props.controlledByParent) {\r\n let selectedIndex = -1;\r\n const selectedKey = this.props.selectedOption.key;\r\n for (let i = 0; i < this.props.dropdownOptions.length; i++) {\r\n if (this.props.dropdownOptions[i].key === selectedKey) {\r\n selectedIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n return selectedIndex;\r\n }\r\n\r\n return this.state.selectedIndex;\r\n }\r\n\r\n private _onSelectOption(event: React.ChangeEvent): void {\r\n const { dropdownOptions, onSelectOption } = this.props;\r\n const index = event.currentTarget.selectedOptions[0].index;\r\n const selectedOption = dropdownOptions[index];\r\n this.setState({ selectedIndex: index });\r\n onSelectOption({ selectedOption });\r\n }\r\n}\r\n","/* eslint-disable no-debugger */\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 * as React from 'react';\r\n\r\nimport { ILobasProductSelectorData } from './lobas-product-selector.data';\r\nimport { ILobasProductSelectorProps } from './lobas-product-selector.props.autogenerated';\r\n\r\nimport { ITelemetryContent, getTelemetryObject, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport { ILobasLabeledDropdownOnChangeNotification, ILobasLabeledDropdownOption } from '../components/lobas-labeled-dropdown.props';\r\n//import classnames from 'classnames';\r\nimport { getUpdatedRefinementCriteria, IRefineItemToggleNotification } from '../lobas-search-result-container/components';\r\n\r\nimport { transaction, reaction, observable, computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { buildListPageUrl, getCurrentUrl } from '../components/lobas-url-utils';\r\nimport LobasLabeledDropdown from '../components/lobas-labeled-dropdown';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { GridSize } from '../lobas-search-result-container/lobas-search-result-container';\r\n\r\nexport interface ILobasProductSelectorViewProps extends ILobasProductSelectorProps {\r\n selectorContainer?: React.ReactNode;\r\n productSelector: IModuleProps;\r\n}\r\n\r\nexport interface ILobasProductSelectorRefinerHierarchy {\r\n type: string;\r\n covering: string;\r\n manufacturer: string;\r\n model: string;\r\n}\r\n\r\nexport interface ILobasProductSelectorState {\r\n refiners: ILobasProductSelectorRefinerHierarchy;\r\n isReady: boolean;\r\n refresh: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * LobasProductSelector component\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass LobasProductSelector extends React.PureComponent, ILobasProductSelectorState> {\r\n @observable\r\n private _viewport: GridSize = 'lg';\r\n\r\n @computed get isMobile(): boolean {\r\n return this._viewport === 'xs' || this._viewport === 'sm';\r\n }\r\n\r\n public constructor(props: ILobasProductSelectorProps, state: ILobasProductSelectorState) {\r\n super(props);\r\n this._viewport = props.context.request?.device?.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.state = {\r\n isReady: false,\r\n refresh: true,\r\n refiners: { type: '', covering: '', manufacturer: '', model: '' }\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n if (MsDyn365.isBrowser && window.addEventListener) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n\r\n const listPageState = await this.props.data.listPageState;\r\n\r\n // Initialize reaction based on listPageState properties\r\n reaction(\r\n () => {\r\n return [\r\n listPageState.activeFilters?.length,\r\n listPageState.currentPageNumber,\r\n ArrayExtensions.hasElements(listPageState.sortingCritera?.Columns)\r\n ];\r\n },\r\n async () => {\r\n const newListPageState = await this.props.data.listPageState;\r\n\r\n if (newListPageState && newListPageState.activeFilters && ArrayExtensions.hasElements(newListPageState.activeFilters)) {\r\n const type = newListPageState.activeFilters.filter(\r\n refiner => refiner.RefinerRecordId === this.props.config.typeRecordId\r\n );\r\n const covering = newListPageState.activeFilters.filter(\r\n refiner => refiner.RefinerRecordId === this.props.config.coveringRecordId\r\n );\r\n const manufacturer = newListPageState.activeFilters.filter(\r\n refiner => refiner.RefinerRecordId === this.props.config.manufacturerRecordId\r\n );\r\n const model = newListPageState.activeFilters.filter(\r\n refiner => refiner.RefinerRecordId === this.props.config.modelRecordId\r\n );\r\n\r\n const selectedRefinerValues: ILobasProductSelectorRefinerHierarchy = {\r\n type: ArrayExtensions.hasElements(type) && type[0].LeftValueBoundString ? type[0].LeftValueBoundString : '',\r\n covering:\r\n ArrayExtensions.hasElements(covering) && covering[0].LeftValueBoundString\r\n ? covering[0].LeftValueBoundString\r\n : '',\r\n manufacturer:\r\n ArrayExtensions.hasElements(manufacturer) && manufacturer[0].LeftValueBoundString\r\n ? manufacturer[0].LeftValueBoundString\r\n : '',\r\n model: ArrayExtensions.hasElements(model) && model[0].LeftValueBoundString ? model[0].LeftValueBoundString : ''\r\n };\r\n\r\n this.setState({ refiners: selectedRefinerValues });\r\n } else {\r\n this.setState({ refiners: { type: '', covering: '', manufacturer: '', model: '' } });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps = {\r\n ...this.props,\r\n selectorContainer: this.createSelectorContainer(this.props.data),\r\n productSelector: {\r\n moduleProps: this.props,\r\n className: 'lobas-product-selector-container',\r\n tag: 'div'\r\n }\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private createSelectorContainer(content: ILobasProductSelectorData): JSX.Element | null {\r\n let typeFiltered = content.roofTable.result;\r\n let coveringFiltered = content.roofTable.result;\r\n let manufacturerFiltered = content.roofTable.result;\r\n let modelFiltered = content.roofTable.result;\r\n\r\n typeFiltered = typeFiltered?.filter(roof =>\r\n this.state.refiners.type !== ''\r\n ? roof.CoveringName === this.state.refiners.covering\r\n : true && this.state.refiners.manufacturer !== ''\r\n ? roof.ManufacturerName === this.state.refiners.manufacturer\r\n : true && this.state.refiners.model !== ''\r\n ? roof.ModelName === this.state.refiners.model\r\n : true\r\n );\r\n\r\n coveringFiltered = coveringFiltered?.filter(roof =>\r\n this.state.refiners.type !== ''\r\n ? roof.TypeName === this.state.refiners.type\r\n : true && this.state.refiners.manufacturer !== ''\r\n ? roof.ManufacturerName === this.state.refiners.manufacturer\r\n : true && this.state.refiners.model !== ''\r\n ? roof.ModelName === this.state.refiners.model\r\n : true\r\n );\r\n manufacturerFiltered = manufacturerFiltered?.filter(roof =>\r\n this.state.refiners.type !== ''\r\n ? roof.TypeName === this.state.refiners.type\r\n : true && this.state.refiners.covering !== ''\r\n ? roof.CoveringName === this.state.refiners.covering\r\n : true && this.state.refiners.model !== ''\r\n ? roof.ModelName === this.state.refiners.model\r\n : true\r\n );\r\n modelFiltered = modelFiltered?.filter(roof =>\r\n this.state.refiners.type !== ''\r\n ? roof.TypeName === this.state.refiners.type\r\n : true && this.state.refiners.covering !== ''\r\n ? roof.CoveringName === this.state.refiners.covering\r\n : true && this.state.refiners.manufacturer !== ''\r\n ? roof.ManufacturerName === this.state.refiners.manufacturer\r\n : true\r\n );\r\n\r\n let distinctTypes = typeFiltered\r\n ? typeFiltered.map(roof => {\r\n return roof.TypeName ? roof.TypeName : '';\r\n })\r\n : [];\r\n let distinctCoverings = coveringFiltered\r\n ? coveringFiltered.map(roof => {\r\n return roof.CoveringName ? roof.CoveringName : '';\r\n })\r\n : [];\r\n let distinctManufacturers = manufacturerFiltered\r\n ? manufacturerFiltered.map(roof => {\r\n return roof.ManufacturerName ? roof.ManufacturerName : '';\r\n })\r\n : [];\r\n let distinctModels = modelFiltered\r\n ? modelFiltered.map(roof => {\r\n return roof.ModelName ? roof.ModelName : '';\r\n })\r\n : [];\r\n\r\n distinctTypes = distinctTypes.sort();\r\n distinctCoverings = distinctCoverings.sort();\r\n distinctManufacturers = distinctManufacturers.sort();\r\n distinctModels = distinctModels.sort();\r\n\r\n const typeDropdownItems: ILobasLabeledDropdownOption[] = distinctTypes\r\n .filter((v, i, a) => a.indexOf(v) === i)\r\n .map((type, index) => {\r\n return {\r\n value: type,\r\n key: index.toString()\r\n };\r\n });\r\n typeDropdownItems.unshift({ value: this.props.resources.defaultValueLabel, key: '' });\r\n\r\n const coveringDropdownItems: ILobasLabeledDropdownOption[] = distinctCoverings\r\n .filter((v, i, a) => a.indexOf(v) === i)\r\n .map((type, index) => {\r\n return {\r\n value: type,\r\n key: index.toString()\r\n };\r\n });\r\n coveringDropdownItems.unshift({ value: this.props.resources.defaultValueLabel, key: '' });\r\n\r\n const manufacturerDropdownItems: ILobasLabeledDropdownOption[] = distinctManufacturers\r\n .filter((v, i, a) => a.indexOf(v) === i)\r\n .map((type, index) => {\r\n return {\r\n value: type,\r\n key: index.toString()\r\n };\r\n });\r\n manufacturerDropdownItems.unshift({ value: this.props.resources.defaultValueLabel, key: '' });\r\n\r\n const modelDropdownItems: ILobasLabeledDropdownOption[] = distinctModels\r\n .filter((v, i, a) => a.indexOf(v) === i)\r\n .map((type, index) => {\r\n return {\r\n value: type,\r\n key: index.toString()\r\n };\r\n });\r\n\r\n modelDropdownItems.unshift({ value: this.props.resources.defaultValueLabel, key: '' });\r\n\r\n const typeDropdown = (\r\n item.value === this.state.refiners.type)[0] !== undefined\r\n ? typeDropdownItems.filter(item => item.value === this.state.refiners.type)[0]\r\n : typeDropdownItems[0]\r\n }\r\n controlledByParent={true}\r\n dropdownDisabled={false}\r\n />\r\n );\r\n const coveringDropdown = (\r\n item.value === this.state.refiners.covering)[0] !== undefined\r\n ? coveringDropdownItems.filter(item => item.value === this.state.refiners.covering)[0]\r\n : coveringDropdownItems[0]\r\n }\r\n controlledByParent={true}\r\n dropdownDisabled={false /* this.state.refiners.type !== '' && this.state.refiners.type !== undefined ? false : true */}\r\n />\r\n );\r\n const manufacturerDropdown = (\r\n item.value === this.state.refiners.manufacturer)[0] !== undefined\r\n ? manufacturerDropdownItems.filter(item => item.value === this.state.refiners.manufacturer)[0]\r\n : manufacturerDropdownItems[0]\r\n }\r\n controlledByParent={true}\r\n dropdownDisabled={\r\n false /* this.state.refiners.covering !== '' && this.state.refiners.covering !== undefined ? false : true */\r\n }\r\n />\r\n );\r\n const modelDropdown = (\r\n item.value === this.state.refiners.model)[0] !== undefined\r\n ? modelDropdownItems.filter(item => item.value === this.state.refiners.model)[0]\r\n : modelDropdownItems[0]\r\n }\r\n controlledByParent={true}\r\n dropdownDisabled={\r\n false /* this.state.refiners.manufacturer !== '' && this.state.refiners.manufacturer !== undefined ? false : true */\r\n }\r\n />\r\n );\r\n\r\n return (\r\n
\r\n
{typeDropdown}
\r\n
{coveringDropdown}
\r\n
{manufacturerDropdown}
\r\n
{modelDropdown}
\r\n
\r\n );\r\n }\r\n\r\n private readonly _onChangedType = (notification: ILobasLabeledDropdownOnChangeNotification) => {\r\n this.updateRefiners(notification, 'Type');\r\n };\r\n\r\n private readonly _onChangedCovering = (notification: ILobasLabeledDropdownOnChangeNotification) => {\r\n this.updateRefiners(notification, 'Covering');\r\n };\r\n\r\n private readonly _onChangedManufacturer = (notification: ILobasLabeledDropdownOnChangeNotification) => {\r\n this.updateRefiners(notification, 'Manufacturer');\r\n };\r\n\r\n private readonly _onChangedModel = (notification: ILobasLabeledDropdownOnChangeNotification) => {\r\n this.updateRefiners(notification, 'Model');\r\n };\r\n\r\n private updateRefiners(notification: ILobasLabeledDropdownOnChangeNotification, id: string) {\r\n const { context } = this.props;\r\n const requestContext = context && context.request;\r\n const actionContext = context && context.actionContext;\r\n\r\n const typeRecordId = this.props.config.typeRecordId;\r\n const coveringRecordId = this.props.config.coveringRecordId;\r\n const manufacturerRecordId = this.props.config.manufacturerRecordId;\r\n const modelRecordId = this.props.config.modelRecordId;\r\n\r\n let typeChanged = false;\r\n let coveringChanged = false;\r\n let manufacturerChanged = false;\r\n\r\n if (!requestContext || !actionContext || !this.props.data.listPageState.result) {\r\n const error = `Refine menu cannot refine search criteria: ${!requestContext ? 'requestContext ' : ''} ${\r\n !actionContext ? 'actionContext ' : ''\r\n } could not be found`;\r\n this.props.telemetry.warning(error);\r\n }\r\n\r\n let refinerRecordId: number | undefined;\r\n\r\n switch (id) {\r\n case 'Type':\r\n refinerRecordId = typeRecordId;\r\n typeChanged = true;\r\n break;\r\n case 'Covering':\r\n refinerRecordId = coveringRecordId;\r\n coveringChanged = true;\r\n break;\r\n case 'Manufacturer':\r\n refinerRecordId = manufacturerRecordId;\r\n manufacturerChanged = true;\r\n break;\r\n case 'Model':\r\n refinerRecordId = modelRecordId;\r\n break;\r\n }\r\n\r\n const refineNotification: IRefineItemToggleNotification = {\r\n productRefinerValue: {\r\n RefinerSourceValue: 1,\r\n RefinerRecordId: refinerRecordId,\r\n LeftValueBoundString: notification.selectedOption.value,\r\n RightValueBoundString: notification.selectedOption.value\r\n },\r\n parentProductRefinerHierarchy: { RecordId: refinerRecordId, RefinerTypeValue: 1, Values: [] },\r\n isSelecting: false\r\n };\r\n\r\n let updatedRefinementCriteria = (this.props.data.listPageState.result && this.props.data.listPageState.result.activeFilters) || [];\r\n let refinementCriteriaUpdated = false;\r\n\r\n if (typeChanged) {\r\n updatedRefinementCriteria = updatedRefinementCriteria\r\n ? updatedRefinementCriteria.filter(\r\n filter =>\r\n filter.RefinerRecordId !== coveringRecordId &&\r\n filter.RefinerRecordId !== manufacturerRecordId &&\r\n filter.RefinerRecordId !== modelRecordId\r\n )\r\n : [];\r\n } else if (coveringChanged) {\r\n updatedRefinementCriteria = updatedRefinementCriteria\r\n ? updatedRefinementCriteria.filter(\r\n filter => filter.RefinerRecordId !== manufacturerRecordId && filter.RefinerRecordId !== modelRecordId\r\n )\r\n : [];\r\n } else if (manufacturerChanged) {\r\n updatedRefinementCriteria = updatedRefinementCriteria\r\n ? updatedRefinementCriteria.filter(filter => filter.RefinerRecordId !== modelRecordId)\r\n : [];\r\n }\r\n\r\n if (refineNotification.productRefinerValue.LeftValueBoundString === '') {\r\n updatedRefinementCriteria = updatedRefinementCriteria\r\n ? updatedRefinementCriteria.filter(\r\n filter => filter.RefinerRecordId !== refineNotification.productRefinerValue.RefinerRecordId\r\n )\r\n : [];\r\n refinementCriteriaUpdated = true;\r\n } else {\r\n updatedRefinementCriteria = updatedRefinementCriteria\r\n ? updatedRefinementCriteria.map(refiner => {\r\n if (refiner.RefinerRecordId === refineNotification.productRefinerValue.RefinerRecordId) {\r\n refiner.LeftValueBoundString = refineNotification.productRefinerValue.LeftValueBoundString;\r\n refiner.RightValueBoundString = refineNotification.productRefinerValue.RightValueBoundString;\r\n refinementCriteriaUpdated = true;\r\n }\r\n\r\n return refiner;\r\n })\r\n : [];\r\n }\r\n\r\n updatedRefinementCriteria = updatedRefinementCriteria.filter(\r\n refiner => refiner.LeftValueBoundString !== this.props.resources.defaultValueLabel\r\n );\r\n\r\n if (!refinementCriteriaUpdated) {\r\n updatedRefinementCriteria = getUpdatedRefinementCriteria(refineNotification, updatedRefinementCriteria);\r\n }\r\n\r\n const selectedType =\r\n updatedRefinementCriteria && updatedRefinementCriteria[0] && updatedRefinementCriteria[0].LeftValueBoundString\r\n ? updatedRefinementCriteria[0].LeftValueBoundString\r\n : '';\r\n\r\n let selectedCovering;\r\n let selectedManufacturer;\r\n let selectedModel;\r\n\r\n if (updatedRefinementCriteria && updatedRefinementCriteria[1] && updatedRefinementCriteria[1].LeftValueBoundString) {\r\n if (typeChanged) {\r\n selectedCovering = '';\r\n } else {\r\n selectedCovering = updatedRefinementCriteria[1].LeftValueBoundString;\r\n }\r\n } else {\r\n selectedCovering = '';\r\n }\r\n if (updatedRefinementCriteria && updatedRefinementCriteria[2] && updatedRefinementCriteria[2].LeftValueBoundString) {\r\n if (typeChanged || coveringChanged) {\r\n selectedManufacturer = '';\r\n } else {\r\n selectedManufacturer = updatedRefinementCriteria[2].LeftValueBoundString;\r\n }\r\n } else {\r\n selectedManufacturer = '';\r\n }\r\n if (updatedRefinementCriteria && updatedRefinementCriteria[3] && updatedRefinementCriteria[3].LeftValueBoundString) {\r\n if (typeChanged || coveringChanged || manufacturerChanged) {\r\n selectedModel = '';\r\n } else {\r\n selectedModel = updatedRefinementCriteria[3].LeftValueBoundString;\r\n }\r\n } else {\r\n selectedModel = '';\r\n }\r\n\r\n const selectedRefinerValues: ILobasProductSelectorRefinerHierarchy = {\r\n type: selectedType,\r\n covering: selectedCovering,\r\n manufacturer: selectedManufacturer,\r\n model: selectedModel\r\n };\r\n\r\n this.setState({ refiners: selectedRefinerValues });\r\n\r\n window.history.pushState({}, '', buildListPageUrl(getCurrentUrl(this.props.context.request), updatedRefinementCriteria));\r\n transaction(() => {\r\n this.props.data.listPageState.result!.currentPageNumber = 0;\r\n this.props.data.listPageState.result!.activeFilters = updatedRefinementCriteria;\r\n });\r\n }\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n if (MsDyn365.isBrowser) {\r\n return isMobile({ variant: VariantType.Browser, context: this.props.context.request });\r\n }\r\n return isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\r\n }\r\n}\r\n\r\nexport function getTelemetryContent(props: ILobasProductSelectorProps): ITelemetryContent {\r\n return getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n}\r\n\r\nexport default LobasProductSelector;\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 * as React from 'react';\r\nimport { ILobasProductSelectorViewProps } from './lobas-product-selector';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { ILobasProductSelectorData } from './lobas-product-selector.data';\r\nimport { ILobasProductSelectorProps } from './lobas-product-selector.props.autogenerated';\r\n\r\nexport const LobasProductSelectorFunctionalComponent: React.FC> = (props: ILobasProductSelectorViewProps) => {\r\n return (\r\n \r\n {props.selectorContainer}\r\n \r\n );\r\n};\r\n\r\nexport default LobasProductSelectorFunctionalComponent;\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['lobas-product-selector'] = {\n c: () => require('partner/modules/lobas-product-selector/lobas-product-selector.tsx'),\n $type: 'contentModule',\n da: [{name:'listPageState', path:'modules/lobas-search-result-container/list-page-state', runOn: 0},{name:'roofTable', path:'actions/get-roof-table.action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'lobas-product-selector',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/lobas-product-selector'\n });\n \n\n {\n const sanitizedActionPath = 'actions/get-roof-table.action';\n let dataAction = require('partner/actions/get-roof-table.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/lobas-search-result-container/list-page-state';\n let dataAction = require('partner/modules/lobas-search-result-container/list-page-state');\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|lobas-product-selector|lobas-product-selector'] = {\n c: () => require('partner/modules/lobas-product-selector/lobas-product-selector.view.tsx'),\n cn: '__local__-__local__-lobas-product-selector'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["createObservableDataAction","action","retailAction","input","context","createGetRoofTableInput","Paging","Top","compressedRefinerKeys","hydrateRefinersFromUrl","requestContext","compressedRefinerArray","parseQueryParam","length","map","compressedRefiner","parsedRefiner","forEach","refinerKey","index","_unused","filter","Boolean","buildListPageUrl","fullUrl","refiners","sortingColumns","skipCount","undefined","searchParams","delete","sortedRefiners","sort","first","second","RefinerRecordId","set","JSON","stringify","compressedRefiners","refiner","push","compressRefiners","href","toString","key","query","parse","decodeURIComponent","getCurrentUrl","MsDyn365","URL","window","location","url","requestUrl","LobasLabeledDropdown","React","constructor","props","super","this","_onSelectOption","bind","selectedKey","selectedOption","keys","dropdownOptions","option","state","selectedIndex","indexOf","render","labelText","labelClassname","dropdownId","dropdownClassname","dropdownDisabled","labelClassNames","classNames","dropdownClassNames","_getSelectedIndex","className","htmlFor","id","onChange","disabled","selected","value","controlledByParent","i","event","onSelectOption","currentTarget","selectedOptions","setState","defaultProps","toggleColor","LobasProductSelector","_props$context$reques","_props$context$reques2","_viewport","_onChangedType","notification","updateRefiners","_onChangedCovering","_onChangedManufacturer","_onChangedModel","request","device","Type","_updateViewport","isReady","refresh","type","covering","manufacturer","model","addEventListener","listPageState","data","reaction","_listPageState$active","_listPageState$sortin","activeFilters","currentPageNumber","ArrayExtensions","sortingCritera","Columns","async","newListPageState","config","typeRecordId","coveringRecordId","manufacturerRecordId","modelRecordId","selectedRefinerValues","LeftValueBoundString","viewProps","_objectSpread","selectorContainer","createSelectorContainer","productSelector","moduleProps","tag","renderView","content","_typeFiltered","_coveringFiltered","_manufacturerFiltered","_modelFiltered","typeFiltered","roofTable","result","coveringFiltered","manufacturerFiltered","modelFiltered","roof","CoveringName","ManufacturerName","ModelName","TypeName","distinctTypes","distinctCoverings","distinctManufacturers","distinctModels","typeDropdownItems","v","a","unshift","resources","defaultValueLabel","coveringDropdownItems","manufacturerDropdownItems","modelDropdownItems","typeDropdown","typeLabel","item","coveringDropdown","coveringLabel","manufacturerDropdown","manufacturerLabel","modelDropdown","modelLabel","actionContext","refinerRecordId","typeChanged","coveringChanged","manufacturerChanged","error","telemetry","warning","refineNotification","productRefinerValue","RefinerSourceValue","RightValueBoundString","parentProductRefinerHierarchy","RecordId","RefinerTypeValue","Values","isSelecting","updatedRefinementCriteria","refinementCriteriaUpdated","getUpdatedRefinementCriteria","selectedType","selectedCovering","selectedManufacturer","selectedModel","history","pushState","transaction","_getViewport","isMobile","variant","VariantType","getTelemetryContent","getTelemetryObject","telemetryPageName","friendlyName","__decorate","observable","computed","observer","LobasProductSelectorFunctionalComponent","Module","Object","assign","Node","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}