{"version":3,"file":"static/js/55536039ed0847b8d89c.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/eCommSelectedFilter/ecomm-get-selected-filter-criterias.ts?cf57","webpack://Msdyn365.Commerce.Online/./src/components/breakpoints.ts?f4e7","webpack://Msdyn365.Commerce.Online/./src/components/ecomm-product-card.tsx?2eed","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-product-list/component/ecomm-product-list.component.tsx?b674","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-product-list/ecomm-product-list.tsx?19a2","webpack://Msdyn365.Commerce.Online/./src/modules/ecomm-product-list/ecomm-product-list.view.tsx?ad1c","webpack://Msdyn365.Commerce.Online/./lib/ecomm-product-list/module-registration.js?669b","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/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 Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * GetActivecategorymenustate Input Action\r\n */\r\nexport class GetCategoryFilterValuesInput implements Msdyn365.IActionInput {\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `CategoryFilter`;\r\n public getCacheObjectType = () => 'CategoryFilter';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetFilteredCategoryMenuStateData {\r\n filteredCategories: string[];\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetCategoryFilterValuesInput();\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function getCategoryFilterValuesStateAction(input: GetCategoryFilterValuesInput, ctx: Msdyn365.IActionContext):Promise {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest('/get/example/id/1', 'get');\r\n return { filteredCategories: [] };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getCategoryFilterValuesStateAction,\r\n // TODO: Give your data action a unique id\r\n id: 'GetCategoryFilterValuesStateActionState',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});","// <= 999 = Mobile\r\n// >= 1000 = Tablet and Desktop\r\n\r\nexport const enum Breakpoints {\r\n small = 540,\r\n medium = 768,\r\n large = 992\r\n}\r\n\r\nexport function isMobile (width: number): boolean {\r\n return width < Breakpoints.large;\r\n}","import React from 'react';\r\n\r\nimport { ICoreContext, Image } from '@msdyn365-commerce/core';\r\nimport { IGridSettings } from '@msdyn365-commerce/core-internal';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getFallbackImageUrl, getProductUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nexport interface IProductCardProps {\r\n context: ICoreContext;\r\n gridSettings: IGridSettings;\r\n product: SimpleProduct;\r\n hasExpired: boolean;\r\n isRegistered: boolean;\r\n unavailableText: string;\r\n registeredText: string;\r\n}\r\n\r\n/**\r\n *\r\n * ProductCard component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ProductCard extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const style = this.props.hasExpired ? 'ecomm-product-card not-available' : 'ecomm-product-card';\r\n\r\n return (\r\n
  • \r\n
    \r\n {this.props.hasExpired &&

    {this.props.unavailableText}

    }\r\n \r\n {this.props.isRegistered &&
    {this.props.registeredText}
    }\r\n
    \r\n
    \r\n

    {this.props.product.Name}

    \r\n

    {this.props.product.Price == 0 ? '' : '$' + this.props.product.Price}

    \r\n
    \r\n
  • \r\n );\r\n }\r\n\r\n private _handleOnClick = () => {\r\n if (!this.props.hasExpired) {\r\n window.location.assign(getProductUrlSync(this.props.product, this.props.context.actionContext, undefined));\r\n }\r\n }\r\n}\r\n\r\nexport default ProductCard;","import React from 'react';\r\n\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nimport { ProductSearchCriteria, Product, SimpleProduct, ProductWarehouseInventoryInformation, ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchAsync, getByIdsAsync, getEstimatedAvailabilityAsync, getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nimport { ICartDataSet, IProductLayoutProps } from './components-interfaces-definition';\r\n\r\nimport { isMobile } from '../../../components/breakpoints';\r\n\r\nimport { ProductCard } from '../../../components/ecomm-product-card';\r\n\r\nimport { IEcommProductListData } from '../ecomm-product-list.data';\r\nimport { IEcommProductListProps } from '../ecomm-product-list.props.autogenerated';\r\n\r\nexport async function getProductListFromCategory(props: IEcommProductListProps, categories: string[]): Promise {\r\n const { context } = props;\r\n\r\n const projectDomain = { ChannelId: + context.actionContext.requestContext.apiSettings.channelId, CatalogId: + context.actionContext.requestContext.apiSettings.catalogId };\r\n\r\n let categoriesNum: number[] = [];\r\n let productSearchCriterias: ProductSearchCriteria = { Context: projectDomain, IncludeAttributes: true };\r\n let products: Product[];\r\n let simpleProductsResults: SimpleProduct[] = [];\r\n let activePricesResult: ProductPrice[] = [];\r\n let productsAvailabilityResults: ProductWarehouseInventoryInformation = {};\r\n let productIds: number[] = [];\r\n let resultObject: ICartDataSet = {};\r\n\r\n if (categories) {\r\n categoriesNum = categories.map(element => parseInt(element, 10));\r\n\r\n if (categoriesNum.length > 0) {\r\n productSearchCriterias.CategoryIds = categoriesNum;\r\n }\r\n }\r\n\r\n products = await searchAsync({ callerContext: context.actionContext }, productSearchCriterias).catch(error => {\r\n console.log('[getProductListFromCategory]searchAsync error: ', error);\r\n\r\n return [];\r\n });\r\n\r\n if (products.length > 0) {\r\n products.map(product => productIds.push(product.RecordId));\r\n simpleProductsResults = await getByIdsAsync({ callerContext: context.actionContext }, context.request.apiSettings.channelId, productIds);\r\n productsAvailabilityResults = await getEstimatedAvailabilityAsync({ callerContext: context.actionContext }, { ProductIds: productIds, DefaultWarehouseOnly: true });\r\n activePricesResult = await getActivePricesAsync({ callerContext: context.actionContext, queryResultSettings: {} }, projectDomain,productIds, new Date(), null, [], true);\r\n }\r\n\r\n resultObject = {\r\n productIds: productIds,\r\n selectedProducts: products,\r\n productsSimpleDetails: simpleProductsResults,\r\n productsAvailability: productsAvailabilityResults,\r\n activePrices: activePricesResult,\r\n categoryIds: categoriesNum\r\n };\r\n\r\n return resultObject;\r\n}\r\n\r\n/**\r\n *\r\n * BuildProductLayout component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class BuildProductLayout extends React.PureComponent {\r\n public state: any = { products: [], width: 0, activePage: 0, pageSize: 9 };\r\n\r\n public componentDidMount(): void {\r\n if (window !== undefined) {\r\n window.addEventListener('resize', this._updateDimensions);\r\n\r\n this.setState({ products: this.props.simpleProductList, width: window.innerWidth });\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (isMobile(this.state.width) && this.state.pageSize % 2 !== 0) {\r\n this.setState({ pageSize: 12 });\r\n }\r\n\r\n const { context, gridSettings, simpleProductList }: any = this.props;\r\n\r\n let offset = this.state.activePage * Number(this.state.pageSize);\r\n\r\n if (JSON.stringify(this.state.products) !== JSON.stringify(simpleProductList)) {\r\n offset = 0;\r\n\r\n this.setState({ products: simpleProductList, activePage: 0 });\r\n }\r\n\r\n const currentPageData = simpleProductList.slice(offset, offset + Number(this.state.pageSize)).map((item: SimpleProduct) => );\r\n\r\n const pageCount = Math.ceil(simpleProductList.length / this.state.pageSize);\r\n\r\n return (\r\n
    \r\n
      {currentPageData}
    \r\n '}\r\n breakLabel={'...'}\r\n breakClassName={'break-me'}\r\n pageCount={pageCount}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n onPageChange={this._handlePageClick}\r\n containerClassName={'ecomm-pagination'}\r\n activeClassName={'active'}\r\n forcePage={this.state.activePage}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n public componentWillUnmount() {\r\n window.removeEventListener('resize', this._updateDimensions);\r\n }\r\n\r\n private _handlePageClick = (data: any) => {\r\n if (window) {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\r\n }\r\n\r\n this.setState({ activePage: data.selected });\r\n }\r\n\r\n private _updateDimensions = () => {\r\n this.setState({ width: window.innerWidth });\r\n }; \r\n}\r\n\r\nexport default BuildProductLayout;","/*---------------------------------------------------------------------------------------------\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 { ProductSearchResult, Product, ProductWarehouseInventoryInformation, ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { searchByCategoryAsync, getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nimport { getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport classnames from 'classnames';\r\nimport { getProductListFromCategory } from './component/ecomm-product-list.component';\r\nimport { ICartDataSet, IProductListMainComponentState } from './component/components-interfaces-definition';\r\n\r\nimport { IEcommProductListData } from './ecomm-product-list.data';\r\nimport { IEcommProductListProps } from './ecomm-product-list.props.autogenerated';\r\nimport { config } from '@fullcalendar/react';\r\n\r\n/**\r\n *\r\n * EcommProductList component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass EcommProductList extends React.PureComponent, IProductListMainComponentState> {\r\n private telemetryContent: ITelemetryContent;\r\n\r\n constructor(props: IEcommProductListProps) {\r\n super(props);\r\n\r\n this.state = {\r\n errorState: {\r\n configureErrors: {}\r\n },\r\n productResult: [],\r\n simpleProductResult: [],\r\n productsAvailability: {},\r\n productsIds: [],\r\n productPriceArr: [],\r\n categoryIds: []\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { slots: { mediaGallery }, data: { filteredCategories, hierarchy, cart }, config: { className = '' }, context } = this.props;\r\n \r\n const categories: string[] = filteredCategories.result ? filteredCategories.result.filteredCategories : [];\r\n\r\n getProductListFromCategory(this.props, categories)\r\n .then((resultObj: ICartDataSet) => {\r\n let productList: Product[] = [];\r\n let productsAvailability: ProductWarehouseInventoryInformation | undefined = {};\r\n let productsIds: number[] | undefined = [];\r\n let productPriceList: ProductPrice[] | undefined = [];\r\n\r\n if (resultObj.selectedProducts) {\r\n productList = resultObj.selectedProducts;\r\n productsAvailability = resultObj.productsAvailability;\r\n productPriceList = resultObj.activePrices;\r\n productsIds = resultObj.productIds;\r\n }\r\n\r\n if (JSON.stringify(productList) !== JSON.stringify(this.state['productResult'])) {\r\n this.setState({ productResult: productList, productsAvailability: productsAvailability, productsIds: productsIds, productPriceArr: productPriceList, categoryIds: resultObj.categoryIds });\r\n }\r\n }).catch(error => {\r\n console.log('[product-list] error', error);\r\n \r\n this.setState({ productResult: [], simpleProductResult: [], productsAvailability: {}, productsIds: [], productPriceArr: [] });\r\n });\r\n\r\n if (this.state.categoryIds && this.state.categoryIds.length > 0) {\r\n this.state.categoryIds.map(id => {\r\n searchByCategoryAsync({ callerContext: context.actionContext }, context.request.apiSettings.channelId, context.request.apiSettings.catalogId, id).then(result => {\r\n if (result && result.length > 0) {\r\n result.sort((a: ProductSearchResult, b: ProductSearchResult) => ((a.DisplayOrder!) < (b.DisplayOrder!) ? -1 : 1));\r\n\r\n const productIds: number[] = [];\r\n \r\n result.map(item => productIds.push(item.RecordId));\r\n \r\n getByIdsAsync({ callerContext: context.actionContext }, context.request.apiSettings.channelId, productIds)\r\n .then(ret => this.setState({ simpleProductResult: ret }) );\r\n }\r\n });\r\n });\r\n }\r\n\r\n let ProductListViewProps = {\r\n ...this.props,\r\n filteredCategories: filteredCategories,\r\n hierarchy: hierarchy,\r\n cart: cart,\r\n telemetryContent: this.telemetryContent,\r\n productsList: this.state['productResult'],\r\n simpleProductList: this.state['simpleProductResult'],\r\n productsAvailability: this.state['productsAvailability'],\r\n productsIds: this.state['productsIds'],\r\n productPriceList: this.state['productPriceArr'],\r\n categoryIds: this.state.categoryIds,\r\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\r\n ModuleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ms-buybox', className)\r\n },\r\n ProductInfoContainerProps: {\r\n className: 'ms-buybox__content'\r\n },\r\n MediaGalleryContainerProps: {\r\n className: 'ms-buybox__media-gallery'\r\n },\r\n unavailableText: config.unavailableText ? config.unavailableText : ''\r\n };\r\n\r\n return this.props.renderView(ProductListViewProps);\r\n }\r\n}\r\n\r\nexport default EcommProductList;","/*!\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 { BuildProductLayout } from './component/ecomm-product-list.component';\r\n\r\nimport { IEcommProductListViewProps } from './component/components-interfaces-definition';\r\n\r\n/**\r\n *\r\n * ProductListView component\r\n * @extends {React.PureComponent}\r\n */\r\n export class EcommProductListView extends React.PureComponent {\r\n public state: any = { hasMounted: false };\r\n\r\n public componentDidMount(): void {\r\n if (!this.state.hasMounted) {\r\n this.setState({ hasMounted: true });\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.state.hasMounted) {\r\n return null;\r\n }\r\n \r\n const { resources, context, config, productsAvailability, productsList, productPriceList, simpleProductList, cart, telemetryContent, ModuleProps, ProductInfoContainerProps, MediaGalleryContainerProps, gridSettings } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EcommProductListView;","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['ecomm-product-list'] = {\n c: () => require('partner/modules/ecomm-product-list/ecomm-product-list.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'filteredCategories', path:'actions/eCommSelectedFilter/ecomm-get-selected-filter-criterias', runOn: 0},{name:'hierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'ecomm-product-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/ecomm-product-list'\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/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'actions/eCommSelectedFilter/ecomm-get-selected-filter-criterias';\n let dataAction = require('partner/actions/eCommSelectedFilter/ecomm-get-selected-filter-criterias');\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|ecomm-product-list|ecomm-product-list'] = {\n c: () => require('partner/modules/ecomm-product-list/ecomm-product-list.view.tsx'),\n cn: '__local__-__local__-ecomm-product-list'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["GetCategoryFilterValuesInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","async","input","ctx","filteredCategories","id","args","Breakpoints","isMobile","width","large","ProductCard","React","_handleOnClick","this","props","hasExpired","window","location","assign","getProductUrlSync","product","context","actionContext","undefined","render","style","className","onClick","role","unavailableText","Image","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","requestContext","apiSettings","altText","Name","gridSettings","loadFailureBehavior","isRegistered","registeredText","Price","getProductListFromCategory","categories","projectDomain","ChannelId","channelId","CatalogId","catalogId","products","categoriesNum","productSearchCriterias","Context","IncludeAttributes","simpleProductsResults","activePricesResult","productsAvailabilityResults","productIds","resultObject","map","element","parseInt","length","CategoryIds","searchAsync","callerContext","catch","error","console","log","push","RecordId","getByIdsAsync","request","getEstimatedAvailabilityAsync","ProductIds","DefaultWarehouseOnly","getActivePricesAsync","queryResultSettings","Date","selectedProducts","productsSimpleDetails","productsAvailability","activePrices","categoryIds","BuildProductLayout","state","activePage","pageSize","_handlePageClick","data","scrollTo","top","left","behavior","setState","selected","_updateDimensions","innerWidth","componentDidMount","addEventListener","simpleProductList","offset","Number","JSON","stringify","currentPageData","slice","item","key","pageCount","Math","ceil","ReactPaginate","previousLabel","nextLabel","breakLabel","breakClassName","marginPagesDisplayed","pageRangeDisplayed","onPageChange","containerClassName","activeClassName","forcePage","componentWillUnmount","removeEventListener","EcommProductList","super","errorState","configureErrors","productResult","simpleProductResult","productsIds","productPriceArr","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","slots","mediaGallery","hierarchy","cart","config","result","then","resultObj","productList","productPriceList","searchByCategoryAsync","sort","a","b","DisplayOrder","ret","ProductListViewProps","_objectSpread","productsList","ModuleProps","moduleProps","classnames","ProductInfoContainerProps","MediaGalleryContainerProps","renderView","EcommProductListView","hasMounted","resources","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":""}