{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/core/utils/array/orderBy.ts","webpack:///../jarvis/app/assets/javascripts/core/components/UI/Button.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/UrlPlugin.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/ItemsPlugin.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/List.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/MultipleRange.ts","webpack:///../jarvis/app/assets/javascripts/core/utils/array/flatten.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/commits/setFilters.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/commits/resetFields.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/commits/changeField.js","webpack:///../jarvis/app/assets/javascripts/core/utils/calcLastShowingElIndex.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/List.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/Range.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/Select.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/Checkbox.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/Checkboxes.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/index.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/MultipleRange.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/QuickFilterSize.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/fields/QuickFilterColors.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/Field.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/components/FieldsList.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/ChoiceList/index.jsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/commits.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/utils/hasChanges.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/InlineFilter/commits/setCount.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/InlineFilter/commits/openField.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/InlineFilter/commits/closeFields.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/commits/setFields.ts","webpack:///../jarvis/app/assets/javascripts/core/utils/compose.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/commits/reset.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/InlineFilter/index.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/setFields.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/openModal.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/setCount.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/apply.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/closeModal.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/index.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/MainFilter/utils/getInlineFields.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/MainFilter/commits/mergeFields.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/index.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/MainFilter/index.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/index.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Checkboxes.ts","webpack:///../jarvis/app/assets/javascripts/site/VDOMComponents/CurrentLocation.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/components/Counter.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/components/Modal.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/index.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Range.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/createList.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/Loader.ts","webpack:///../jarvis/app/assets/javascripts/core/utils/throttle.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/PluginsMediator.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Checkbox.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/commits/changeField.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Select.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Color.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Colors.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/Segment.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/fields/TextLine.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/Field.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/ModalFilter/commits/toggleField.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ProductList/constants.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/List.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/RangeInput.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Colors.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Checkboxes.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/MultipleRange.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/InlineList.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/QuickFilterColors.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/QuickFilterSize.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/index.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Range.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Color.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Segment.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/TextLine.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/FiltersPlugin/filters/common/components/fields/Checkbox.tsx"],"names":["items","key","reduce","resultItems","item","_objectSpread","_defineProperty","Button","_ref","onClick","text","badge","className","classes","htmlClassNames","h","type","lastTimestamp","mediator","deps","markState","state","timestamp","Date","now","_timestamp","_type","handlePush","_ref2","url","Env","abTesting","experiment3Test","history","pushState","handleReplace","_ref3","replaceState","handleChangeUrl","_ref4","newState","dispatch","connect","window","addEventListener","subscribe","disconnect","removeEventListener","unsubscribe","config","getSlotsForItems","handleAppend","afterEvent","map","$slot","requestAnimationFrame","insertAdjacentHTML","join","documentDispatch","innerHTML","COMMIT_TOGGLE_ITEM","field","value","COMMIT_RESET","hasValue","serialize","name","COMMIT_CHANGE","rangeName","rangeValues","ranges","range","Range","COMMIT_RESET_SINGLE","some","filter","flatten","acc","concat","COMMIT_SET_FILTERS","filters","COMMIT_RESET_FIELDS","Object","entries","forEach","_slicedToArray","fields","resetField","COMMIT_CHANGE_FIELD","filterName","commitFn","payload","COMMIT_CHANGE_SYNC_FIELD","_commitFn","commitPayload","_objectWithoutProperties","filterField","calcElWidth","el","width","getBoundingClientRect","_window$getComputedSt","getComputedStyle","marginLeft","marginRight","parseInt","createVDOMComponent","$self","getHumanValue","getProps","collection","find","title","handleReset","onChangeField","render","_onChangeField","cssScope","class","minValue","min","maxValue","max","getActiveItem","getActiveItems","values","includes","FIELD_MAP","List","InlineList","Colors","Checkboxes","Select","Checkbox","MultipleRange","_field","QuickFilterSize","QuickFilterColors","Field","Component","getFieldComponent","createScope","FieldsList","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","rootRef","createRef","resetRef","showMoreRef","lastShowingIndex","shouldShowMore","shouldShowMoreControl","props","handleShowMore","setState","_this2","this","container","hiddingEls","excludedEls","undefined","dynamicEls","containerWidth","filteredHiddingEls","dynamicElsWidth","sum","currentWidthSum","index","newWidthSum","calcLastShowingElIndex","_toConsumableArray","children","recalcShowingEls","prevProps","JSON","stringify","_this3","onResetFields","ref","filteredFields","get","_this$state","_","ChoiceList","_ref$props","_ref$props$filterName","filterNames","_ref$props$syncFields","syncFields","_ref$callbacks","callbacks","_ref$callbacks$CALLBA","CALLBACK_CHANGE","_ref$callbacks$CALLBA2","CALLBACK_RESET","store","Store","initialState","CALLBACK_AFTER_COMMIT","renderer","cond","when","to","getFilters","getState","commit","createVDOMRenderer","_ref5","filterFields","_ref6","_ref7","hasFieldValue","_ref8","list","findIndex","_ref10","getFields","setFilters","COMMIT_CHANGE_FILTER","COMMIT_CHANGE_COUNT_URL","loadCountUrl","COMMIT_CHANGE_SYNC_FIELDS","triggerFilter","fieldKey","previousFilters","updatedFilters","keys","filterKey","hasChanges","fieldsSnapshot","COMMIT_SET_COUNT","COMMIT_OPEN_FIELD","openedFieldName","COMMIT_CLOSE_FIELDS","COMMIT_SET_FIELDS","compose","fn1","fns","prevFn","nextFn","COMMIT_RESET_FIELD","COMMIT_RESET_CHANGED_FIELD_LIST","changedFieldList","scrollDelay","ms","Promise","res","setTimeout","InlineFilter","$el","_ref$props$size","size","CALLBACK_FIELD_CHANGE","_fields","_ref$callbacks$CALLBA3","CALLBACK_SYNC_FIELD","_payload","appliedFilters","count","_when","_to","dispatchChangeEvent","classList","remove","add","updatedField","handleScrollInToView","_regeneratorRuntime","mark","_callee","toggleEl","scrollContainer","_toggleEl$getBounding","left","_scrollContainer$getB","diff","step","mod","stepDiff","wrap","_context","prev","next","version","abrupt","closest","scrollTo","top","scrollLeft","stop","_x","handleApply","onToggleField","e","isFieldOpened","target","onOverlay","$","contains","preventDefault","stopPropagation","console","log","_a","onApply","isOpened","isInline","setFields","setCount","document","destroy","COMMIT_MODAL_SET_FIELDS","COMMIT_INIT_TOGGLE_FIELDS","COMMIT_OPEN_MODAL","isModalOpened","COMMIT_APPLY","isCounterVisible","lastAppliedField","COMMIT_MOBILE_APPLY","COMMIT_CLOSE_MODAL","openedFieldNames","ModalFilter","AsyncModal","_ref$props$isModalOpe","containerElement","querySelector","body","handleOpen","loadComponentsStyles","asyncComponent","sent","handleClose","handleToggle","handleApplyMobile","active","classNames","filterEvent","CustomEvent","detail","isOpen","dispatchEvent","onReset","onMobileApply","onClose","handleModalToggle","event","on","off","ALWAYS_VISIBLE_FIELDS","getFieldWidth","getInlineFields","availableWidth","isFieldVisible","result","totalWidth","fieldWidth","push","COMMIT_MERGE_FIELDS","fieldsByName","orderBy","FILTER_MODULE_MAP","MainFilter","_state","inlineFilter","handleChangeFilter","modalFilter","handleResize","throttle","allFields","inlineFields","trigger","FiltersPlugin","filterInstances","choiceListInstance","_yield$Http$get","_commitPayload","_filters","V1","serializeFilters","Http","params","format","data","sendItemsCount","handleUpdateCount","instance","FILTER_PLUGIN_SYNC_EVENT","updateFilters","createFilter","moduleName","getFilterModule","fieldPayload","_ref9","_ref13","_ref14","handleUpdateUrl","itemsQuantity","handleUpdate","handleFilterChange","instances","choiceList","slotEl","_ref11","collectChoices","_ref12","connectChoiceList","serializeField","isChecked","CurrentLocation","currentCity","_ref$className","_ref$scope","scope","_ref$type","Counter","visible","style","withClickChangeEvent","BaseField","V2","Modal","self","filtersContainer","slot","dataset","getClasses","setFiltersContainer","handleToggleField","calcCounterPosition","COMMIT_TOGGLE_FIELD","handleChangeField","_asyncToGenerator","_x2","handleApplyField","_callee2","_b","_c","_d","_context2","_x3","_x4","handleToggleShowingFields","fieldsAreHidden","_callee3","parent","boundTop","targetPageY","middleTargetPosition","offsetTop","counterPosition","_context3","resolve","clientWidth","pageYOffset","clientHeight","_x5","componentWillMount","_ref5$fieldsAreHidden","firstFields","isInlineField","isFirstField","isFieldHidden","fieldIndex","handleClickCurrentLocation","isHidden","componentWillUnmount","componentWillUpdate","nextProps","prevState","nextState","prevField","prevFields","nextField","nextFields","selfState","Color","Segment","TextLine","getFieldSpec","createList","Dispatcher","loadUrl","plugins","onScrollToTop","onBeforeLoad","onAfterLoad","PluginsMediator","dispatcher","pluginInstances","Boolean","plugin","Loader","load","_args","delay","callback","eventEmitter","EventEmitter","eventName","setImmediate","emit","COMMIT_TOGGLE","checked","_ref$field","linkedFieldName","linked_field_name","_ref$payload","p","Any","COMMIT_ADD_CHANGED_FIELD_ITEM","_ref$onFieldClick","onFieldClick","assign","fieldElement","parentElement","element","onRef","isArray","currentState","defaultOpen","isLastPartShown","isItemActive","getItemClasses","isBold","handleToggleItem","handleClick","currentTarget","showChoice","handleToggleShownItems","buildFieldsParts","viewOptions","viewType","firstPart","lastPart","buildSelectInput","SelectInput","SelectTypes","radio","label","onChange","icon","_this$props","_this$buildFieldsPart","choice","_this$props$field","activeItem","_this$props2","RangeInput","calcValues","Number","handleInputChangeMin","onChangeMinEnd","handleInputChangeMax","onChangeMaxEnd","handleChangeMin","handleChange","calcPriceFromPercent","handleChangeMax","handleChangeMinEnd","_objectDestructuringEmpty","handleChangeMaxEnd","_this$props$range","percent","Math","ceil","rangeStep","rangeProgress","priceRangeDiff","round","price","targetIndex","i","priceProgress","_ref6$range","prevMin","prevMax","_this$props$range2","TextComponent","color","placeholder","toString","isLabelFixed","calcPercentFromPrice","onMinChange","onMaxChange","onMinChangeEnd","onMaxChangeEnd","CurrencyText","Text","buildInput","backgroundColor","hex","checkbox","tooltip","Tooltip","_List","INLINE_FIELD_MAP","isRangeActive","onToggleRange","currentRangeIndex","previousCheckedRange","nextCheckedRange","uncheckRange","firstRange","lastRange","checkRange","handleCheckClick","inputType","choiceTitle","handleApplyCkick","pushToDataLayer","isActive","getClassNames","__isActive","quickRanges","quickDimension","src"],"mappings":"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","file":"chunk.1.0ad03c95d254c9dbbbfa.382b0635.js","sourcesContent":["export default function (items, key) {\n return items.reduce((resultItems, item) => {\n return { ...resultItems,\n [item[key]]: item\n };\n }, {});\n}\n","import { h } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nexport const Button = ({ onClick, text, badge, className }) => {\n const classes = htmlClassNames('ui-BadgeButton', className);\n return (h(\"button\", { type: 'button', className: classes, \"data-badge\": badge, onClick: onClick }, text));\n};\n","/**\n * Url plugin listens to \"popstate\" event and dispatches it to a mediator\n * Also pushes or replaces history state when receives appropriate event from a mediator\n */\nexport default function () {\n return function UrlPlugin({ deps: { mediator } }) {\n let lastTimestamp;\n const markState = (state) => {\n const timestamp = lastTimestamp = Date.now();\n return {\n ...state,\n _timestamp: timestamp,\n _type: 'UrlPlugin'\n };\n };\n const handlePush = ({ state, url }) => {\n if (Env.abTesting.experiment3Test)\n return;\n history.pushState(markState(state), '', url);\n };\n const handleReplace = ({ state, url }) => {\n if (Env.abTesting.experiment3Test)\n return;\n history.replaceState(markState(state), '', url);\n };\n const handleChangeUrl = ({ state: newState }) => {\n if (Env.abTesting.experiment3Test)\n return;\n if (!newState || lastTimestamp === newState._timestamp)\n return;\n if (newState._type === 'UrlPlugin') {\n mediator.dispatch('UrlPlugin ~> changed', newState);\n lastTimestamp = newState._timestamp;\n }\n };\n return {\n connect() {\n window.addEventListener('popstate', handleChangeUrl);\n mediator.subscribe('UrlPlugin <~ push', handlePush);\n mediator.subscribe('UrlPlugin <~ replace', handleReplace);\n },\n disconnect() {\n window.removeEventListener('popstate', handleChangeUrl);\n mediator.unsubscribe('UrlPlugin <~ push', handlePush);\n mediator.unsubscribe('UrlPlugin <~ replace', handleReplace);\n }\n };\n };\n}\n","import { connect, disconnect } from 'core/services/Controller';\n/**\n * Items plugin replaces or appends items in $slot\n * when receives appropriate event from a mediator\n */\nimport { documentDispatch } from 'core/utils/events';\nexport default function (config) {\n return function ItemsPlugin({ deps: { mediator } }) {\n const { getSlotsForItems } = config;\n const handleAppend = (items, afterEvent) => {\n getSlotsForItems(items).map(({ $slot, items }) => {\n requestAnimationFrame(() => {\n $slot[0].insertAdjacentHTML('beforeend', items.join(''));\n connect($slot[0]);\n afterEvent && documentDispatch(afterEvent);\n });\n });\n };\n const handleReplace = (items, afterEvent) => {\n getSlotsForItems(items).map(({ $slot, items }) => {\n disconnect($slot[0]);\n requestAnimationFrame(() => {\n $slot[0].innerHTML = items.join('');\n connect($slot[0]);\n afterEvent && documentDispatch(afterEvent);\n });\n });\n };\n return {\n connect() {\n mediator.subscribe('ItemsPlugin <~ replace', handleReplace);\n mediator.subscribe('ItemsPlugin <~ append', handleAppend);\n },\n disconnect() {\n mediator.unsubscribe('ItemsPlugin <~ replace', handleReplace);\n mediator.unsubscribe('ItemsPlugin <~ append', handleAppend);\n }\n };\n };\n}\n","export const COMMIT_TOGGLE_ITEM = (field, { item }) => {\n return {\n ...field,\n value: field.value !== item.value\n ? item.value\n : null\n };\n};\nexport const COMMIT_RESET = (field) => {\n return {\n ...field,\n value: null\n };\n};\nexport const hasValue = (field) => {\n return !!field.value;\n};\nexport const serialize = (field) => {\n return {\n [field.name]: field.value\n };\n};\n","// @TODO надо будет пересмотреть данное решение\nimport * as Range from './Range';\nexport const COMMIT_CHANGE = (field, { rangeName, rangeValues }) => {\n return {\n ...field,\n ranges: field.ranges.map(range => range.name === rangeName\n ? Range.COMMIT_CHANGE(range, rangeValues)\n : range)\n };\n};\nexport const COMMIT_RESET = (field) => {\n return {\n ...field,\n ranges: field.ranges.map(range => Range.COMMIT_RESET(range))\n };\n};\nexport const COMMIT_RESET_SINGLE = (field, { rangeName }) => {\n return {\n ...field,\n ranges: field.ranges.map(range => range.name === rangeName\n ? Range.COMMIT_RESET(range)\n : range)\n };\n};\nexport const hasValue = (field) => {\n return field.ranges.some(range => Range.hasValue(range));\n};\nexport const serialize = (field) => {\n return field.ranges\n .filter(range => Range.hasValue(range))\n .reduce((ranges, range) => ({ ...ranges, ...Range.serialize(range) }), {});\n};\n","export function flatten(items) {\n return items.reduce((acc, item) => acc.concat(item), []);\n}\nexport default flatten;\n","export default function COMMIT_SET_FILTERS(state, filters) {\n return { ...state, filters }\n}\n","import { resetField } from '../../fields'\n\nexport default function COMMIT_RESET_FIELDS(state) {\n const filters = {}\n Object.entries(state.filters).forEach(([filter, fields]) => {\n filters[filter] = fields.map(resetField)\n })\n\n return { ...state, filters }\n}\n","export default function COMMIT_CHANGE_FIELD(state, {\n filterName,\n\n field: {\n name\n },\n\n commitFn,\n\n payload\n}) {\n let fields = state.filters[filterName]\n\n return { ...state,\n filters: { ...state.filters,\n [filterName]: fields.map(field => {\n if (field.name === name) {\n return commitFn(field, payload)\n } else {\n return field\n }\n })\n }\n }\n}\n\nexport function COMMIT_CHANGE_SYNC_FIELD(state, { field, commitFn, payload }) {\n const { type: _type, ...commitPayload } = commitFn(field, payload)\n const filters = {}\n Object.entries(state.filters).forEach(([filter, fields]) => {\n filters[filter] = fields.map(filterField => {\n if (filterField.key !== field.key) return filterField\n\n return { ...filterField, ...commitPayload }\n })\n })\n return { ...state, filters }\n}\n","function calcElWidth(el) {\n const { width } = el.getBoundingClientRect();\n const { marginLeft, marginRight } = window.getComputedStyle(el);\n return width + parseInt(marginLeft) + parseInt(marginRight);\n}\nexport function calcLastShowingElIndex(container, hiddingEls, excludedEls = [], dynamicEls = []) {\n const containerWidth = container.getBoundingClientRect().width;\n const filteredHiddingEls = hiddingEls.filter(el => !excludedEls.includes(el));\n const dynamicElsWidth = dynamicEls.reduce((sum, el) => sum + calcElWidth(el), 0);\n let currentWidthSum = excludedEls.reduce((sum, el) => sum + calcElWidth(el), 0);\n let lastShowingIndex = null;\n filteredHiddingEls.some((item, index) => {\n const newWidthSum = currentWidthSum + calcElWidth(item);\n if (newWidthSum < containerWidth) {\n lastShowingIndex = index;\n currentWidthSum = newWidthSum;\n return false;\n }\n if (index === filteredHiddingEls.length - 1 && ((newWidthSum - dynamicElsWidth) < containerWidth)) {\n lastShowingIndex = index;\n }\n return true;\n });\n return lastShowingIndex;\n}\n","import { createVDOMComponent, cssScope } from 'core/services/VDOM'\n\nimport { COMMIT_RESET } from '../../../fields/List'\n\nexport default createVDOMComponent($self => {\n let getActiveItem = () => {\n let { field } = $self.getProps()\n\n return field.collection.find(item => item.value === field.value)\n }\n\n let getHumanValue = () => {\n let item = getActiveItem()\n\n return item ? item.title : ''\n }\n\n let handleReset = () => {\n let { onChangeField } = $self.getProps()\n\n onChangeField(COMMIT_RESET)\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
{getHumanValue()}
\n
\n
\n )\n )\n }\n})\n","import { createVDOMComponent, cssScope } from 'core/services/VDOM';\n\nimport { COMMIT_RESET } from '../../../fields/Range';\n\nexport default createVDOMComponent($self => {\n let getHumanValue = () => {\n let { field } = $self.getProps();\n\n let min = field.minValue || field.min;\n let max = field.maxValue || field.max;\n\n return [min, max].join(' – ');\n }\n\n let handleReset = () => {\n let { onChangeField } = $self.getProps();\n\n onChangeField(COMMIT_RESET);\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
{getHumanValue()}
\n
\n
\n )\n )\n }\n})\n","import { cssScope, createVDOMComponent } from 'core/services/VDOM';\n\nimport { COMMIT_RESET } from '../../../fields/Select';\n\nexport default createVDOMComponent($self => {\n let getActiveItem = () => {\n let { field } = $self.getProps();\n\n return field.collection.find(item => item.value === field.value);\n }\n\n let getHumanValue = () => {\n let { field } = $self.getProps();\n\n let item = getActiveItem(field);\n\n return item.title;\n }\n\n let handleReset = () => {\n let { onChangeField } = $self.getProps();\n\n onChangeField(COMMIT_RESET);\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
{getHumanValue()}
\n
\n
\n )\n )\n }\n})\n","import { cssScope, createVDOMComponent } from 'core/services/VDOM';\n\nimport { COMMIT_RESET } from '../../../fields/Checkbox';\n\nexport default createVDOMComponent($self => {\n let handleReset = () => {\n let { onChangeField } = $self.getProps();\n\n onChangeField(COMMIT_RESET);\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
\n
\n )\n )\n }\n})\n","import { cssScope, createVDOMComponent } from 'core/services/VDOM';\n\nimport { COMMIT_RESET } from '../../../fields/Checkboxes';\n\nexport default createVDOMComponent($self => {\n let getHumanValue = () => {\n let activeItems = getActiveItems();\n\n return activeItems\n .map(item => item.title)\n .join(', ');\n }\n\n let getActiveItems = () => {\n let { field } = $self.getProps();\n\n return field.collection.filter(item => field.values.includes(item.value));\n }\n\n let handleReset = () => {\n let { onChangeField } = $self.getProps();\n\n onChangeField(COMMIT_RESET)\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
{getHumanValue()}
\n
\n
\n )\n )\n }\n})\n","import List from './List'\nimport Range from './Range'\nimport Select from './Select'\nimport Checkbox from './Checkbox'\nimport Checkboxes from './Checkboxes'\nimport MultipleRange from './MultipleRange'\nimport QuickFilterSize from './QuickFilterSize'\nimport QuickFilterColors from './QuickFilterColors'\n\nconst FIELD_MAP = {\n List,\n InlineList: List,\n Range,\n Colors: Checkboxes,\n Select,\n Checkbox,\n Checkboxes,\n MultipleRange,\n QuickFilterSize,\n QuickFilterColors\n}\n\nexport let getFieldComponent = field => {\n return FIELD_MAP[field.type]\n}\n","import { createVDOMComponent, cssScope } from 'core/services/VDOM'\n\nimport { COMMIT_RESET_SINGLE } from '../../../fields/MultipleRange'\nimport { hasValue } from '../../../fields/Range'\n\nexport default createVDOMComponent($self => {\n let getHumanValue = range => {\n let min = range.minValue || range.min\n let max = range.maxValue || range.max\n\n return [min, max].join(' – ')\n }\n\n let handleReset = range => () => {\n let { onChangeField } = $self.getProps()\n\n onChangeField(COMMIT_RESET_SINGLE, { rangeName: range.name })\n }\n\n let getRanges = () => {\n let { field } = $self.getProps()\n\n return field.ranges.filter(range => hasValue(range))\n }\n\n return {\n render: ({ _field }) => (\n cssScope('ListFilterChoices', h => (\n \n {getRanges().map(range => (\n
\n
{range.title}
\n
{getHumanValue(range)}
\n
\n
\n ))}\n
\n ))\n )\n }\n})\n","import { createVDOMComponent, cssScope } from 'core/services/VDOM'\n\nimport { COMMIT_RESET_SINGLE } from '../../../fields/MultipleRange'\nimport { hasValue } from '../../../fields/Range'\n\nexport default createVDOMComponent($self => {\n let getHumanValue = range => {\n let min = range.minValue || range.min\n let max = range.maxValue || range.max\n\n return [min, max].join(' – ')\n }\n\n let handleReset = range => () => {\n let { onChangeField } = $self.getProps()\n\n onChangeField(COMMIT_RESET_SINGLE, { rangeName: range.name })\n }\n\n let getRanges = () => {\n let { field } = $self.getProps()\n\n return field.ranges.filter(range => hasValue(range))\n }\n\n return {\n render: ({ _field }) => (\n cssScope('ListFilterChoices', h => (\n \n {getRanges().map(range => (\n
\n
{range.title}
\n
{getHumanValue(range)}
\n
\n
\n ))}\n
\n ))\n )\n }\n})\n","import { createVDOMComponent, cssScope } from 'core/services/VDOM'\n\nimport { COMMIT_RESET } from '../../../fields/List'\n\nexport default createVDOMComponent($self => {\n let getActiveItem = () => {\n let { field } = $self.getProps()\n\n return field.collection.find(item => item.value === field.value)\n }\n\n let getHumanValue = () => {\n let item = getActiveItem()\n\n return item ? item.title : ''\n }\n\n let handleReset = () => {\n let { onChangeField } = $self.getProps()\n\n onChangeField(COMMIT_RESET)\n }\n\n return {\n render: ({ field, _onChangeField }) => (\n cssScope('ListFilterChoices', h =>\n
\n
{field.title}
\n
{getHumanValue()}
\n
\n
\n )\n )\n }\n})\n","import { h } from 'core/services/VDOM'\n\nimport { getFieldComponent } from './fields'\n\nfunction Field({\n field,\n onChangeField,\n}) {\n let Component = getFieldComponent(field)\n\n return \n}\n\nexport default Field\n","import { Component, createRef } from 'preact'\nimport { createScope } from 'core/services/VDOM'\nimport htmlClassNames from 'core/utils/htmlClassNames'\nimport { calcLastShowingElIndex } from 'core/utils/calcLastShowingElIndex'\nimport Field from './Field'\n\nconst h = createScope('ListFilterChoices')\n\nexport class FieldsList extends Component {\n rootRef = createRef()\n resetRef = createRef()\n showMoreRef = createRef()\n state = {\n lastShowingIndex: this.fields.length - 1,\n shouldShowMore: false,\n shouldShowMoreControl: false\n }\n \n get fields() {\n return this.props.fields.filter(([filterName, field]) => {\n if (!field.collection) return true\n const matches = field.collection.filter(item => {\n if (field.value) {\n return item.value === field.value\n } else if (field.values) {\n return field.values.includes(item.value)\n }\n return true\n })\n return matches.length > 0\n })\n }\n\n get filteredFields() {\n const { lastShowingIndex, shouldShowMore } = this.state\n\n if (lastShowingIndex === null || shouldShowMore) return this.fields\n\n return this.fields.filter((_, index) => index <= lastShowingIndex)\n }\n\n recalcShowingEls() {\n if (this.state.shouldShowMore) return\n\n // We have to show all elements before calculating\n this.setState({ lastShowingIndex: null }, () => {\n // We have to wait updating of the real DOM to get real sizes\n requestAnimationFrame(() => {\n const lastShowingIndex = calcLastShowingElIndex(\n this.rootRef,\n [...this.rootRef.children],\n [this.resetRef, this.showMoreRef],\n [this.showMoreRef]\n )\n\n this.setState({\n lastShowingIndex,\n shouldShowMoreControl: lastShowingIndex !== null && lastShowingIndex !== this.fields.length - 1\n })\n })\n })\n }\n\n componentDidMount() {\n this.recalcShowingEls()\n }\n\n componentDidUpdate(prevProps) {\n if (JSON.stringify(this.props.fields) !== JSON.stringify(prevProps.fields)) {\n this.recalcShowingEls()\n }\n }\n\n onChangeField = (filterName, field) => (commitFn, payload) => {\n this.props.onChangeField(commitFn, filterName, field, payload)\n }\n\n handleShowMore = () => {\n this.setState({\n lastShowingIndex: null,\n shouldShowMore: true,\n shouldShowMoreControl: false\n })\n }\n\n render() {\n const { shouldShowMoreControl } = this.state\n const { onResetFields } = this.props\n\n return (\n
this.rootRef = el}>\n {this.filteredFields.length > 0 && (\n this.resetRef = el}\n onClick={onResetFields}\n />\n )}\n\n {this.filteredFields.map(([filterName, field]) =>\n \n )}\n\n this.showMoreRef = el}\n onClick={this.handleShowMore}\n >\n
\n \n
\n )\n }\n}\n","import { cssScope, createVDOMRenderer } from 'core/services/VDOM'\nimport Store from 'core/services/Store'\n\nimport cond from 'core/utils/cond'\n\nimport COMMIT_SET_FILTERS from './commits/setFilters'\nimport COMMIT_RESET_FIELDS from './commits/resetFields'\nimport COMMIT_CHANGE_FIELD, { COMMIT_CHANGE_SYNC_FIELD } from './commits/changeField'\n\nimport { FieldsList } from './components/FieldsList'\n\nimport { hasFieldValue } from '../fields'\n\nexport default function ChoiceList(el, {\n props: {\n filterNames = [],\n syncFields = []\n },\n\n callbacks: {\n CALLBACK_CHANGE = () => {},\n CALLBACK_RESET = () => {}\n }\n}) {\n let store = Store({\n props: {\n initialState: {\n filters: {}\n }\n },\n\n callbacks: {\n CALLBACK_AFTER_COMMIT: (state, commitFn) => {\n renderer.render(state)\n\n cond(\n when => commitFn === COMMIT_CHANGE_FIELD,\n to => CALLBACK_CHANGE(getFilters()),\n\n when => commitFn === COMMIT_CHANGE_SYNC_FIELD,\n to => CALLBACK_CHANGE(getFilters()),\n\n when => commitFn === COMMIT_RESET_FIELDS,\n to => {\n CALLBACK_CHANGE(getFilters())\n CALLBACK_RESET()\n }\n )\n }\n }\n })\n\n let setFilters = filters => {\n store.commit(COMMIT_SET_FILTERS, filters)\n }\n\n let getFilters = () => {\n return store.getState().filters\n }\n\n let onChangeField = (commitFn, filterName, field, payload) => {\n if (syncFields && syncFields.includes(field.key)) {\n return store.commit(COMMIT_CHANGE_SYNC_FIELD, { field, commitFn, payload })\n } else {\n store.commit(COMMIT_CHANGE_FIELD, { filterName, field, commitFn, payload })\n }\n }\n\n let onResetFields = () => {\n store.commit(COMMIT_RESET_FIELDS)\n }\n\n let getFields = state => {\n return Object.entries(state.filters)\n .filter(([filterName, _fields]) =>\n filterNames.includes(filterName)\n )\n .map(([filterName, fields]) =>\n fields.map(field => [filterName, field])\n )\n .reduce((fields, filterFields) =>\n [...fields, ...filterFields]\n , [])\n .filter(([_filterName, field]) =>\n hasFieldValue(field)\n )\n // Can't be used with the filter by an empty value because first an existing value can be empty\n .filter(([, field], index, list) =>\n list.findIndex(([, findingField]) => findingField.key === field.key) === index\n )\n }\n\n let renderer = createVDOMRenderer(el, state => {\n let fields = getFields(state)\n\n if (fields.length <= 0) return null\n\n return cssScope('ListFilterChoices', h =>\n \n )\n })\n\n return { setFilters }\n}\n","import { resetField } from './fields';\nexport function COMMIT_SET_FILTERS(state, filters) {\n return { ...state, filters };\n}\nexport function COMMIT_CHANGE_FILTER(state, filter, fields) {\n return { ...state, filters: { ...state.filters, [filter]: fields } };\n}\nexport function COMMIT_CHANGE_COUNT_URL(state, loadCountUrl) {\n return { ...state, loadCountUrl };\n}\nexport function COMMIT_CHANGE_SYNC_FIELDS(state, triggerFilter, fieldKey, payload) {\n const filters = { ...state.filters };\n Object.entries(filters).forEach(([filter, fields]) => {\n if (filter !== triggerFilter) {\n filters[filter] = fields.map(field => {\n if (field.key !== fieldKey)\n return field;\n return { ...field, ...payload };\n });\n }\n });\n return COMMIT_SET_FILTERS(state, filters);\n}\nexport function COMMIT_RESET(state) {\n const { filters: previousFilters } = state;\n const updatedFilters = Object.keys(previousFilters).reduce((filters, filterKey) => {\n filters[filterKey] = previousFilters[filterKey].map(resetField);\n return filters;\n }, {});\n return {\n ...state,\n filters: updatedFilters\n };\n}\n","/*\n @TODO\n Возможно стоит выделить работу со snapshots в какую-то отдельную сущность\n*/\nexport default function hasChanges(state) {\n return state.fieldsSnapshot !== JSON.stringify(state.fields);\n}\n","export function COMMIT_SET_COUNT(state, payload) {\n return { ...state, ...payload };\n}\n","export function COMMIT_OPEN_FIELD(state, { field: { name } }) {\n return { ...state, openedFieldName: name };\n}\n","export function COMMIT_CLOSE_FIELDS(state) {\n return { ...state, openedFieldName: null };\n}\n","export function COMMIT_SET_FIELDS(state, fields) {\n return { ...state,\n fieldsSnapshot: JSON.stringify(fields),\n fields\n };\n}\n","export function compose(fn1, ...fns) {\n return fns.reduce((prevFn, nextFn) => value => prevFn(nextFn(value)), fn1);\n}\nexport default compose;\n","import { compose } from 'core/utils/compose';\nimport { resetField } from '../../../fields';\nexport function COMMIT_RESET_FIELD(state, { fieldKey }) {\n return {\n ...state,\n fields: state.fields.map((field) => field.key === fieldKey ? resetField(field) : field)\n };\n}\nfunction COMMIT_RESET_FIELDS(state) {\n return {\n ...state,\n fields: state.fields.map(resetField)\n };\n}\nexport function COMMIT_RESET_CHANGED_FIELD_LIST(state) {\n return { ...state, changedFieldList: [] };\n}\nexport function COMMIT_RESET(state) {\n return compose(COMMIT_RESET_FIELDS, COMMIT_RESET_CHANGED_FIELD_LIST)(state);\n}\n","import { createVDOMRenderer, cssScope } from 'core/services/VDOM';\nimport Store from 'core/services/Store';\nimport cond from 'core/utils/cond';\nimport hasChanges from '../common/utils/hasChanges';\nimport { dispatchChangeEvent } from '..';\nimport { COMMIT_SET_COUNT } from './commits/setCount';\nimport { COMMIT_OPEN_FIELD } from './commits/openField';\nimport { COMMIT_CLOSE_FIELDS } from './commits/closeFields';\nimport { COMMIT_SET_FIELDS } from '../common/commits/setFields';\nimport { COMMIT_CHANGE_FIELD } from '../common/commits/changeField';\nimport { COMMIT_RESET_CHANGED_FIELD_LIST, COMMIT_RESET_FIELD } from '../common/commits/reset';\nimport Field from '../common/components/Field';\nconst OPEN_DROP_CLASS = '__openDrops';\nconst MOBILE_MARGIN = 20;\nfunction scrollDelay(ms) {\n return new Promise(res => setTimeout(res, ms));\n}\nexport function InlineFilter($el, { props: { size = 'small' } = {}, callbacks: { CALLBACK_FIELD_CHANGE = (_fields) => { }, CALLBACK_CHANGE = (_fields) => { }, CALLBACK_SYNC_FIELD = (_key, _payload) => { } } }) {\n let store = Store({\n props: {\n initialState: {\n fields: [],\n fieldsSnapshot: null,\n openedFieldName: null,\n changedFieldList: [],\n appliedFilters: 0,\n count: null\n }\n },\n callbacks: {\n CALLBACK_AFTER_COMMIT: (state, commitFn, commitPayload) => {\n if (commitFn === COMMIT_RESET_CHANGED_FIELD_LIST)\n return;\n renderer.render(state);\n cond(_when => commitFn === COMMIT_CLOSE_FIELDS, _to => {\n dispatchChangeEvent($el, store.getState());\n store.commit(COMMIT_RESET_CHANGED_FIELD_LIST);\n $el[0].classList.remove(OPEN_DROP_CLASS);\n if (hasChanges(state)) {\n CALLBACK_CHANGE(getFields());\n }\n }, _when => commitFn === COMMIT_OPEN_FIELD, _to => {\n $el[0].classList.add(OPEN_DROP_CLASS);\n }, _when => commitFn === COMMIT_CHANGE_FIELD, _to => {\n const [{ field: { key } }] = commitPayload;\n const fields = getFields();\n const updatedField = fields.find(field => field.key === key);\n if (updatedField)\n CALLBACK_SYNC_FIELD(key, updatedField);\n CALLBACK_FIELD_CHANGE(fields);\n }, _when => commitFn === COMMIT_RESET_FIELD, _to => {\n const [{ fieldKey }] = commitPayload;\n const fields = getFields();\n const updatedField = fields.find(field => field.key === fieldKey);\n if (updatedField)\n CALLBACK_SYNC_FIELD(fieldKey, updatedField);\n });\n }\n }\n });\n const onChangeField = (field) => (commitFn, payload) => {\n store.commit(COMMIT_CHANGE_FIELD, { field, commitFn, payload });\n };\n const handleScrollInToView = async (el) => {\n if (!(el && Env.version === 'mobile'))\n return;\n const toggleEl = el.closest('.s-ListFilter_b-Section_toggle');\n const scrollContainer = el.closest('.b-Filter_content');\n if (!(toggleEl && scrollContainer))\n return;\n const { width, left } = toggleEl.getBoundingClientRect();\n const { width: containerWidth } = scrollContainer.getBoundingClientRect();\n let diff = (width + MOBILE_MARGIN) - (containerWidth - left);\n const step = 10;\n const mod = diff > 0 ? 1 : -1;\n do {\n const stepDiff = diff * mod < step ? diff : step * mod;\n scrollContainer.scrollTo({ top: 0, left: scrollContainer.scrollLeft + stepDiff });\n diff -= stepDiff;\n await scrollDelay(5);\n } while (diff !== 0);\n };\n const handleApply = () => {\n store.commit(COMMIT_CLOSE_FIELDS);\n };\n const onToggleField = (field) => (e) => {\n if (isFieldOpened(field)) {\n store.commit(COMMIT_CLOSE_FIELDS);\n return;\n }\n handleScrollInToView(e.target);\n store.commit(COMMIT_OPEN_FIELD, { field });\n };\n const hasOpenedField = () => {\n const { openedFieldName } = store.getState();\n return !!openedFieldName;\n };\n const onOverlay = (e) => {\n const target = e.target;\n if ((!$.contains($el[0], target) || target.classList.contains('s-ListFilter')) && hasOpenedField()) {\n store.commit(COMMIT_CLOSE_FIELDS);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n const isFieldOpened = (field) => {\n const { openedFieldName } = store.getState();\n return openedFieldName === field.name;\n };\n const setFields = (fields) => {\n store.commit(COMMIT_SET_FIELDS, fields);\n };\n const getFields = () => {\n return store.getState().fields;\n };\n const setCount = (count, appliedFilters) => {\n store.commit(COMMIT_SET_COUNT, { count, appliedFilters });\n };\n const renderer = createVDOMRenderer($el[0], (state) => {\n console.log('render InlineFilter', state);\n return cssScope('ListFilter', h => {\n var _a;\n return (h(\"div\", { class: `ScopeRoot __inline __size_${size}` }, (_a = state.fields) === null || _a === void 0 ? void 0 : _a.map(field => (h(Field, { field: field, onApply: handleApply, isOpened: isFieldOpened(field), onToggleField: onToggleField(field), onChangeField: onChangeField(field), isInline: true })))));\n });\n });\n return {\n setFields,\n getFields,\n setCount,\n connect: () => {\n // @TODO переделать на overlay service\n document.addEventListener('click', onOverlay, true);\n },\n disconnect: () => {\n renderer.destroy();\n document.removeEventListener('click', onOverlay, true);\n store = null;\n }\n };\n}\n","import { COMMIT_SET_FIELDS } from '../../common/commits/setFields';\nimport { COMMIT_INIT_TOGGLE_FIELDS } from './toggleField';\nexport function COMMIT_MODAL_SET_FIELDS(state, fields) {\n return COMMIT_INIT_TOGGLE_FIELDS(COMMIT_SET_FIELDS(state, fields), fields);\n}\n","export function COMMIT_OPEN_MODAL(state) {\n return { ...state, isModalOpened: true };\n}\n","export function COMMIT_SET_COUNT(state, payload) {\n return { ...state, ...payload };\n}\n","export function COMMIT_APPLY(state) {\n return {\n ...state,\n count: null,\n isCounterVisible: false,\n lastAppliedField: null\n };\n}\nexport function COMMIT_MOBILE_APPLY(state) {\n return COMMIT_APPLY(state);\n}\n","export function COMMIT_CLOSE_MODAL(state) {\n return {\n ...state,\n count: null,\n openedFieldNames: {},\n isCounterVisible: false,\n lastAppliedField: null,\n isModalOpened: false\n };\n}\n","import { createVDOMRenderer, cssScope } from 'core/services/VDOM';\nimport Store from 'core/services/Store';\nimport cond from 'core/utils/cond';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { asyncComponent } from 'core/components/Hoc/asyncComponent';\nimport { loadComponentsStyles } from 'core/utils/asyncLoadAssets';\nimport hasChanges from '../common/utils/hasChanges';\nimport { dispatchChangeEvent } from '..';\nimport { COMMIT_MODAL_SET_FIELDS } from './commits/setFields';\nimport { COMMIT_CHANGE_FIELD } from '../common/commits/changeField';\nimport { COMMIT_RESET, COMMIT_RESET_CHANGED_FIELD_LIST } from '../common/commits/reset';\nimport { COMMIT_OPEN_MODAL } from './commits/openModal';\nimport { COMMIT_SET_COUNT } from './commits/setCount';\nimport { COMMIT_APPLY, COMMIT_MOBILE_APPLY } from './commits/apply';\nimport { COMMIT_CLOSE_MODAL } from './commits/closeModal';\nexport function ModalFilter($el, { props: { isModalOpened = false }, callbacks: { CALLBACK_FIELD_CHANGE = () => { }, CALLBACK_CHANGE = () => { }, CALLBACK_SYNC_FIELD = () => { } } }) {\n const containerElement = document.querySelector('[data-el=\"ProductList/featuresFilter\"]');\n let store = Store({\n props: {\n initialState: {\n fields: [],\n isModalOpened,\n fieldsSnapshot: null,\n openedFieldNames: {},\n changedFieldList: [],\n isCounterVisible: false,\n lastAppliedField: null,\n appliedFilters: 0,\n count: null\n }\n },\n callbacks: {\n CALLBACK_AFTER_COMMIT: (state, commitFn, commitPayload) => {\n if (commitFn === COMMIT_RESET_CHANGED_FIELD_LIST)\n return;\n renderer.render(state);\n cond(_when => commitFn === COMMIT_OPEN_MODAL, _to => {\n containerElement\n ? containerElement.classList.add('__opened') //desktop\n : document.body.classList.add('has-modal-open'); //mobile\n }, _when => commitFn === COMMIT_CHANGE_FIELD, _to => {\n const [{ field: { key } }] = commitPayload;\n const fields = getFields();\n const updatedField = fields.find(field => field.key === key);\n if (updatedField)\n CALLBACK_SYNC_FIELD(key, updatedField);\n CALLBACK_FIELD_CHANGE(fields);\n }, _when => commitFn === COMMIT_CLOSE_MODAL, _to => {\n containerElement\n ? containerElement.classList.remove('__opened') //desktop\n : document.body.classList.remove('has-modal-open'); //mobile\n }, _when => commitFn === COMMIT_APPLY || commitFn === COMMIT_MOBILE_APPLY, _to => {\n if (hasChanges(state)) {\n dispatchChangeEvent($el, state);\n store.commit(COMMIT_RESET_CHANGED_FIELD_LIST);\n CALLBACK_CHANGE(getFields());\n }\n });\n }\n }\n });\n const setIsModalOpened = (isOpened) => {\n if (store.getState().isModalOpened !== isOpened) {\n store.commit(isOpened ? COMMIT_OPEN_MODAL : COMMIT_CLOSE_MODAL);\n }\n };\n let AsyncModal;\n const handleOpen = async () => {\n // Disable old mobile filter component\n await loadComponentsStyles('ListFilterModal');\n AsyncModal = await asyncComponent(() => import(/* webpackChunkName: \"site_c-ListFilterModal\" */ './components/Modal'));\n store.commit(COMMIT_OPEN_MODAL);\n };\n const handleClose = () => {\n store.commit(COMMIT_CLOSE_MODAL);\n };\n const handleToggle = () => {\n const { isModalOpened } = store.getState();\n isModalOpened ? handleClose() : handleOpen();\n };\n const handleReset = () => {\n store.commit(COMMIT_RESET);\n };\n const handleApply = () => {\n store.commit(COMMIT_APPLY);\n };\n const handleApplyMobile = () => {\n store.commit(COMMIT_CLOSE_MODAL);\n store.commit(COMMIT_MOBILE_APPLY);\n };\n const setFields = (fields) => {\n store.commit(COMMIT_MODAL_SET_FIELDS, fields);\n };\n const getFields = () => {\n return store.getState().fields;\n };\n const setCount = (count, appliedFilters) => {\n store.commit(COMMIT_SET_COUNT, { count, appliedFilters });\n };\n const buttonOpenClasses = (active) => {\n const classNames = htmlClassNames('sb-flat-Open', false && '__active');\n const filterEvent = new CustomEvent('filterToggle', {\n detail: { isOpen: active }\n });\n document.dispatchEvent(filterEvent);\n return classNames;\n };\n const renderer = createVDOMRenderer($el[0], (state) => {\n return cssScope('ListFilter', h => (h(\"div\", { class: 'ScopeRoot __inline' },\n h(\"div\", { class: buttonOpenClasses(state.isModalOpened), onClick: handleToggle, \"data-filters\": state.appliedFilters }, \"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440\"),\n state.isModalOpened && (h(AsyncModal, { store: store, state: state, onReset: handleReset, onApply: handleApply, onMobileApply: handleApplyMobile, onClose: handleClose })))));\n });\n const handleModalToggle = (event) => {\n const { isOpen } = event.detail;\n setIsModalOpened(isOpen);\n };\n return {\n setFields,\n getFields,\n setCount,\n connect() {\n if (Env.version === 'desktop' && isModalOpened)\n handleOpen();\n $(document).on('FloatActions:showFilter', handleOpen);\n document.addEventListener('ModalToggleEvent', handleModalToggle);\n },\n disconnect() {\n document.removeEventListener('ModalToggleEvent', handleModalToggle);\n $(document).off('FloatActions:showFilter');\n renderer.destroy();\n store = null;\n }\n };\n}\n","import { hasFieldValue } from '../../../fields';\nconst ALWAYS_VISIBLE_FIELDS = ['MultipleRange'];\nconst getFieldWidth = (field) => {\n /*\n x=9 y=210\n x=4 y=150\n */\n return (60 * field.title.length + 510) / 5;\n};\nconst isFieldVisible = (field) => {\n return ALWAYS_VISIBLE_FIELDS.includes(field.type) || !hasFieldValue(field);\n};\nexport default function getInlineFields(fields, { availableWidth }) {\n return fields\n .filter(field => isFieldVisible(field))\n .map(field => [getFieldWidth(field), field])\n .reduce(({ result, totalWidth }, [fieldWidth, field]) => {\n if (totalWidth + fieldWidth < availableWidth) {\n result.push(field);\n }\n return { result, totalWidth: totalWidth + fieldWidth };\n }, { result: [], totalWidth: 0 })\n .result;\n}\n","import orderBy from 'core/utils/array/orderBy';\nexport function COMMIT_MERGE_FIELDS(state, fields) {\n let fieldsByName = orderBy(fields, 'name');\n return { ...state,\n fields: state.fields.map(field => {\n return field.name in fieldsByName\n ? { ...field, ...fieldsByName[field.name] }\n : { ...field };\n })\n };\n}\n","import { InlineFilter } from './InlineFilter';\nimport { ModalFilter } from './ModalFilter';\nimport { MainFilter } from './MainFilter';\nconst FILTER_MODULE_MAP = {\n InlineFilter,\n ModalFilter,\n MainFilter\n};\nexport const getFilterModule = (moduleName) => {\n return FILTER_MODULE_MAP[moduleName];\n};\nexport function dispatchChangeEvent($el, payload) {\n $el.trigger('Filter:changed', payload);\n}\nexport { InlineFilter, ModalFilter, MainFilter };\n","import Store from 'core/services/Store';\nimport throttle from 'core/utils/throttle';\nimport getInlineFields from './utils/getInlineFields';\nimport { COMMIT_SET_FIELDS } from '../common/commits/setFields';\nimport { COMMIT_MERGE_FIELDS } from './commits/mergeFields';\nimport { ModalFilter, InlineFilter } from '../../filters';\nexport function MainFilter($el, { props, callbacks: { CALLBACK_CHANGE = () => { }, CALLBACK_FIELD_CHANGE = () => { } } }) {\n let store = Store({\n props: {\n initialState: {\n fields: [],\n fieldsSnapshot: null\n }\n },\n callbacks: {\n CALLBACK_AFTER_COMMIT: (_state, commitFn) => {\n render();\n if (commitFn === COMMIT_MERGE_FIELDS) {\n CALLBACK_CHANGE(getFields());\n }\n }\n }\n });\n let inlineFilter = InlineFilter($el, {\n props: {\n size: 'big'\n },\n callbacks: {\n CALLBACK_CHANGE(fields) {\n handleChangeFilter(fields);\n }\n }\n });\n let modalFilter = ModalFilter($el, {\n props,\n callbacks: {\n CALLBACK_FIELD_CHANGE,\n CALLBACK_CHANGE(fields) {\n handleChangeFilter(fields);\n }\n }\n });\n const handleChangeFilter = (fields) => {\n store.commit(COMMIT_MERGE_FIELDS, fields);\n };\n const handleResize = throttle(800, () => {\n render();\n });\n const render = () => requestAnimationFrame(() => {\n const allFields = getFields();\n const inlineFields = getInlineFields(allFields, {\n availableWidth: $el.width() - 208 // all params width\n });\n inlineFilter.setFields(inlineFields);\n modalFilter.setFields(allFields);\n });\n const setFields = (fields) => {\n store.commit(COMMIT_SET_FIELDS, fields);\n };\n const getFields = () => {\n return store.getState().fields;\n };\n const setCount = (count, appliedFilters) => {\n inlineFilter.setCount(count, appliedFilters);\n modalFilter.setCount(count, appliedFilters);\n };\n return {\n setFields,\n getFields,\n setCount,\n connect: () => {\n window.addEventListener('resize', handleResize);\n inlineFilter.connect();\n modalFilter.connect();\n },\n disconnect: () => {\n inlineFilter = (inlineFilter === null || inlineFilter === void 0 ? void 0 : inlineFilter.disconnect(), null);\n modalFilter = (modalFilter === null || modalFilter === void 0 ? void 0 : modalFilter.disconnect(), null);\n store = null;\n window.removeEventListener('resize', handleResize);\n }\n };\n}\n","import { flatten } from 'core/utils/array/flatten';\nimport Store from 'core/services/Store';\nimport { Http } from 'core/services/HttpClient';\n//@ts-ignore\t\nimport ChoiceList from './ChoiceList';\nimport { COMMIT_CHANGE_FILTER, COMMIT_SET_FILTERS, COMMIT_CHANGE_COUNT_URL, COMMIT_CHANGE_SYNC_FIELDS, COMMIT_RESET } from './commits';\nimport { getFilterModule } from './filters';\nimport { hasFieldValue, serializeField } from './fields';\nimport { FILTER_PLUGIN_SYNC_EVENT } from '../../lists/ProductList/constants';\n// import { loadComponentsStyles } from 'core/utils/asyncLoadAssets'\nimport { V1 } from './filters/ModalFilter/components/Modal';\nimport { loadComponentsStyles } from 'core/utils/asyncLoadAssets';\n/**\n * @TODO write plugin description\n */\nexport default function FiltersPlugin(config) {\n return ({ deps: { mediator } }) => {\n let filterInstances;\n let choiceListInstance;\n const store = Store({\n props: {\n initialState: {\n filters: {},\n loadCountUrl: ''\n }\n },\n callbacks: {\n async CALLBACK_AFTER_COMMIT(state, commitFn, commitPayload) {\n if (V1 && config.loadCountUrl && commitFn === COMMIT_CHANGE_FILTER) {\n const filters = serializeFilters(state.filters);\n const { data: { data: { count } } } = await Http.get(state.loadCountUrl, {\n params: { format: 'json', ...filters }\n });\n sendItemsCount(count);\n handleUpdateCount(count, Object.keys(filters).length);\n }\n if (commitFn === COMMIT_CHANGE_SYNC_FIELDS) {\n const [filterName] = commitPayload;\n Object.entries(filterInstances).forEach(([name, instance]) => {\n if (filterName !== name) {\n const fields = state.filters[name];\n instance.setFields(fields);\n mediator.dispatch(FILTER_PLUGIN_SYNC_EVENT, name, fields);\n }\n });\n }\n if (commitFn === COMMIT_RESET) {\n const { filters } = state;\n updateFilters(filters);\n mediator.dispatch('FiltersPlugin ~> changed', filters);\n }\n }\n }\n });\n const connectFilters = (filters) => {\n filterInstances = filters\n .map(({ name, moduleName, $slot }) => {\n const instance = createFilter({ name, moduleName, $slot });\n instance.connect();\n return [name, instance];\n })\n .reduce((instances, [name, instance]) => ({ ...instances, [name]: instance }), {});\n };\n const createFilter = ({ name, moduleName, $slot }) => {\n return getFilterModule(moduleName)($slot, {\n props: {\n isModalOpened: config.isModalOpened\n },\n callbacks: {\n CALLBACK_FIELD_CHANGE(fields) {\n store.commit(COMMIT_CHANGE_FILTER, name, fields);\n },\n CALLBACK_CHANGE(fields) {\n store.commit(COMMIT_CHANGE_FILTER, name, fields);\n mediator.dispatch('FiltersPlugin ~> changed', { [name]: fields });\n },\n CALLBACK_SYNC_FIELD(key, field) {\n var _a;\n if ((_a = config.syncFields) === null || _a === void 0 ? void 0 : _a.includes(key)) {\n const { type, ...fieldPayload } = field;\n store.commit(COMMIT_CHANGE_SYNC_FIELDS, name, key, fieldPayload);\n }\n }\n }\n });\n };\n const updateFilters = (filters) => {\n Object.entries(filterInstances).forEach(([name, instance]) => {\n instance.setFields(filters[name]);\n });\n if (choiceListInstance)\n choiceListInstance.setFilters(filters);\n };\n const connectChoiceList = (filters, { slotEl }) => {\n loadComponentsStyles('ListFilterChoices');\n const filterNames = filters\n .filter(({ collectChoices }) => collectChoices)\n .map(({ name }) => name);\n // The `ChoiceList` widget has to import sync because `choiceListInstance` has to exist before initial updating of the filter\n // Async/await brokes that flow\n choiceListInstance = ChoiceList(slotEl, {\n props: {\n filterNames,\n syncFields: config.syncFields\n },\n callbacks: {\n CALLBACK_CHANGE(filters) {\n mediator.dispatch('FiltersPlugin ~> changed', filters);\n },\n CALLBACK_RESET() {\n handleUpdateCount(null, 0);\n }\n }\n });\n };\n const handleUpdateCount = (count, appliedFilters) => {\n Object.entries(filterInstances).forEach(([_name, instance]) => {\n var _a;\n (_a = instance.setCount) === null || _a === void 0 ? void 0 : _a.call(instance, count, appliedFilters);\n });\n };\n const handleUpdateUrl = (url) => {\n store.commit(COMMIT_CHANGE_COUNT_URL, url);\n };\n const sendItemsCount = (itemsQuantity) => {\n const event = new CustomEvent('updatedFilteredItemsCount', { detail: itemsQuantity });\n document.dispatchEvent(event);\n };\n const handleUpdate = (filters) => {\n store.commit(COMMIT_SET_FILTERS, filters);\n const event = new CustomEvent('updatedFiltersData', {\n detail: { store: store.getState(), serializeFilters }\n });\n document.dispatchEvent(event);\n updateFilters(filters);\n };\n const handleFilterChange = (event) => {\n mediator.dispatch('FiltersPlugin ~> changed', event.detail);\n };\n return {\n connect() {\n connectFilters(config.filters);\n if (config.choiceList) {\n connectChoiceList(config.filters, config.choiceList);\n }\n mediator.subscribe('FiltersPlugin <~ update', handleUpdate);\n mediator.subscribe('FiltersPlugin <~ updateUrl', handleUpdateUrl);\n document.addEventListener('filterChangeEvent', handleFilterChange);\n },\n disconnect() {\n mediator.unsubscribe('FiltersPlugin <~ update', handleUpdate);\n mediator.unsubscribe('FiltersPlugin <~ updateUrl', handleUpdateUrl);\n document.removeEventListener('filterChangeEvent', handleFilterChange);\n }\n };\n };\n}\nexport const serializeFilters = (filters) => {\n const fields = flatten(Object.values(filters));\n return fields\n .filter((field) => hasFieldValue(field))\n .reduce((fields, field) => ({ ...fields, ...serializeField(field) }), {});\n};\n","export const COMMIT_TOGGLE_ITEM = (field, { item, isChecked }) => {\n let values = field.values.filter(value => value !== item.value);\n if (isChecked)\n values = [...values, item.value];\n return { ...field, values };\n};\nexport const COMMIT_RESET = (field, { item } = {}) => {\n return {\n ...field,\n values: field.values.filter(value => {\n return item\n ? value !== item.value // Удаляем только определенное значение\n : false; // Удаляем все значения\n })\n };\n};\nexport const hasValue = (field) => {\n return field.values.length > 0;\n};\nexport const serialize = (field) => ({ [field.name]: field.values });\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nexport function CurrentLocation({ currentCity, className = 'sb-CurrentLocation', scope = '', type = 'default', onClick }) {\n const classes = htmlClassNames('b-CurrentLocation', `__${type}`, {\n [className]: !!scope\n });\n return cssScope(scope, h => {\n return (h(\"div\", { className: classes },\n h(\"div\", { className: 'b-CurrentLocation_info' },\n h(\"span\", { className: 'b-CurrentLocation_title' }, \"\\u0412\\u0430\\u0448 \\u0433\\u043E\\u0440\\u043E\\u0434\"),\n h(\"span\", { className: 'b-CurrentLocation_city' }, currentCity)),\n h(\"button\", { type: 'button', className: 'b-CurrentLocation_button', \"data-open-city-select\": true, onClick: onClick }, \"\\u0421\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\")));\n });\n}\nexport default CurrentLocation;\n","import { cssScope } from 'core/services/VDOM';\nimport { Button } from 'core/components/UI/Button';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nexport const Counter = ({ top, count, onApply, badge, visible }) => {\n const classes = htmlClassNames('sb-Features_counter', 'sb-Counter', { '__hidden': !visible || count === null });\n return cssScope('ListFilter', h => (h(\"div\", { className: classes, style: { top } },\n h(\"div\", { className: 'sb-Counter_content' },\n h(\"div\", { className: 'sb-Counter_found' },\n \"\\u041D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E - \", count !== null && count !== void 0 ? count : ''),\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', badge: badge, onClick: onApply })))));\n};\n","import { createVDOMRenderer, createVDOMComponent, cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { CurrentLocation } from 'site/VDOMComponents/CurrentLocation';\nimport { Button } from 'core/components/UI/Button';\nimport BaseField, { withClickChangeEvent } from '../../common/components/Field';\nimport { COMMIT_CHANGE_FIELD } from '../../common/commits/changeField';\nimport { COMMIT_TOGGLE_FIELD } from '../commits/toggleField';\nimport { isInlineField } from '../../common/components/fields';\nimport { Counter } from './Counter';\nconst Field = withClickChangeEvent(BaseField);\nconst SHOWN_FIELDS_COUNT = 7;\nexport const V1 = Env.version === 'mobile';\nexport const V2 = Env.version === 'desktop';\nconst Modal = createVDOMComponent((self) => {\n var _a;\n const slot = (_a = document.querySelector('[data-el=\"ProductList/featuresFilter/aside\"]')) !== null && _a !== void 0 ? _a : document.body;\n const currentCity = slot.dataset.currentCity;\n let filtersContainer;\n let renderer;\n //props for getClasses state: IStoreState\n const getClasses = (state) => {\n return htmlClassNames('ScopeRoot __modal', { '__v2': V2 }, \n // { '__opened': state.isModalOpened },\n // Disabled old mobile filter\n { '__opened': state });\n };\n const setFiltersContainer = (el) => {\n filtersContainer = el;\n };\n const handleToggleField = (store, field) => () => {\n calcCounterPosition(self.getState().lastAppliedField);\n store.commit(COMMIT_TOGGLE_FIELD, { field });\n };\n const handleChangeField = (store, field) => async (commitFn, payload) => {\n store.commit(COMMIT_CHANGE_FIELD, { field, commitFn, payload });\n };\n const handleApplyField = (store, field) => async (commitFn, payload) => {\n var _a, _b, _c, _d;\n store.commit(COMMIT_CHANGE_FIELD, { field, commitFn, payload });\n Env.version === 'mobile' ? (_b = (_a = self.getProps()).onMobileApply) === null || _b === void 0 ? void 0 : _b.call(_a) : (_d = (_c = self.getProps()).onApply) === null || _d === void 0 ? void 0 : _d.call(_c);\n };\n const handleToggleShowingFields = (fieldsAreHidden) => () => {\n self.setState({ fieldsAreHidden: !fieldsAreHidden });\n };\n const calcCounterPosition = async (lastAppliedField) => {\n await Promise.resolve();\n if (!lastAppliedField)\n return;\n const { parent, field } = lastAppliedField;\n // clientWidth 0 means field is hidden\n const target = field.clientWidth !== 0 ? field : parent;\n const boundTop = target.getBoundingClientRect().top;\n const targetPageY = boundTop + pageYOffset;\n const middleTargetPosition = targetPageY + (target.clientHeight / 2);\n const offsetTop = filtersContainer.getBoundingClientRect().top + pageYOffset;\n const counterPosition = middleTargetPosition - offsetTop;\n self.setState({ counterPosition });\n };\n const isFieldOpened = (state, field) => {\n return state.openedFieldNames[field.name];\n };\n const isFirstField = (field) => {\n const firstFileldsKeys = ['sort', 'delivery'];\n return firstFileldsKeys.includes(field.key);\n };\n const componentWillMount = () => {\n renderer = createVDOMRenderer(slot, ({ store, state, onClose, onApply, onMobileApply }, { counterPosition, fieldsAreHidden = state.fields.length > SHOWN_FIELDS_COUNT }) => {\n const firstFields = [];\n const inlineFields = [];\n const fields = [];\n state.fields.forEach(field => {\n isInlineField(field) ? inlineFields.push(field) : isFirstField(field) ? firstFields.push(field) : fields.push(field);\n });\n const isFieldHidden = (fieldIndex) => {\n return fieldsAreHidden && fieldIndex + 1 > SHOWN_FIELDS_COUNT;\n };\n const handleClickCurrentLocation = () => {\n if (Env.version === 'mobile')\n onClose();\n };\n return cssScope('ListFilter', h => (h(\"div\", { className: getClasses(false) },\n h(\"div\", { className: 'sb-Features' },\n h(\"div\", { class: 'sb-Features_content' },\n h(\"div\", { class: 'sb-Features_wrapper' },\n h(\"div\", { className: 'sb-Features_title' }, \"\\u041F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B\"),\n V1 && (h(CurrentLocation, { type: 'small', scope: 'ListFilter', className: 'sb-Section sb-CurrentLocation', currentCity: currentCity, onClick: handleClickCurrentLocation })),\n inlineFields.map(field => (h(BaseField, { field: field, isOpened: isFieldOpened(state, field), onChangeField: handleApplyField(store, field), onToggleField: () => { } }))),\n h(\"div\", { className: 'sb-Features_fields', ref: setFiltersContainer },\n firstFields.map((field, index) => (h(Field, { field: field, isOpened: isFieldOpened(state, field), isHidden: isFieldHidden(index), onChangeField: V2 ? handleApplyField(store, field) : handleChangeField(store, field), onToggleField: handleToggleField(store, field) }))),\n fields.map((field, index) => (h(Field, { field: field, isOpened: isFieldOpened(state, field), isHidden: isFieldHidden(index), onChangeField: V2 ? handleApplyField(store, field) : handleChangeField(store, field), onToggleField: handleToggleField(store, field) }))),\n V1 && (h(Counter, { visible: !!counterPosition && state.isCounterVisible, top: counterPosition || 0, badge: state.appliedFilters, count: state.count, onApply: onApply })),\n V1 && fieldsAreHidden && (h(\"button\", { className: 'sb-Features_showingFields', type: 'button', onClick: handleToggleShowingFields(fieldsAreHidden) },\n h(\"span\", null, \"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u044B\"),\n h(\"span\", { className: 'sb-Features_showingFieldsIcon' }))),\n V2 && fields.length !== SHOWN_FIELDS_COUNT && (h(\"button\", { className: 'sb-Features_showingFields', type: 'button', onClick: handleToggleShowingFields(fieldsAreHidden) },\n h(\"span\", null, fieldsAreHidden ? 'Показать все фильтры' : 'Скрыть')))),\n h(\"div\", { class: 'sb-Features_actions' },\n h(Button, { className: 's-ListFilter_b-Features_action', onClick: onMobileApply, badge: state.appliedFilters, text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C' })))),\n h(\"div\", { class: 'sb-Features_overlay overlay', onClick: onClose })))));\n });\n };\n const componentWillUnmount = () => {\n renderer = (renderer.destroy(), null);\n };\n const render = (props, selfState) => {\n renderer.render(props, selfState);\n };\n const needCalcUpdate = (prevState, nextState) => {\n const { lastAppliedField: prevField, openedFieldNames: prevFields } = prevState;\n const { lastAppliedField: nextField, openedFieldNames: nextFields } = nextState;\n if (!nextField)\n return false;\n if (prevFields !== nextFields)\n return true;\n if (prevField !== nextField)\n return true;\n return false;\n };\n const componentWillUpdate = (nextProps) => {\n const { lastAppliedField } = nextProps.state;\n if (needCalcUpdate(self.getProps().state, nextProps.state)) {\n calcCounterPosition(lastAppliedField);\n }\n };\n return {\n componentWillMount,\n componentWillUnmount,\n componentWillUpdate,\n render\n };\n});\nexport default Modal;\n","// *TODO: надо это все переписать на классы | Created at: 12.Nov.2019\nimport * as List from './List';\nimport * as Range from './Range';\nimport * as Select from './Select';\nimport * as Color from './Color';\nimport * as Colors from './Colors';\nimport * as Segment from './Segment';\nimport * as TextLine from './TextLine';\nimport * as Checkbox from './Checkbox';\nimport * as Checkboxes from './Checkboxes';\nimport * as MultipleRange from './MultipleRange';\nimport * as QuickFilterSize from './QuickFilterSize';\nimport * as QuickFilterColors from './QuickFilterColors';\nconst FIELD_MAP = {\n List,\n InlineList: List,\n Range,\n Select,\n Color,\n Colors,\n Segment,\n TextLine,\n Checkbox,\n Checkboxes,\n MultipleRange,\n QuickFilterSize,\n QuickFilterColors\n};\nexport const getFieldSpec = (field) => {\n return FIELD_MAP[field.type];\n};\nexport const hasFieldValue = (field) => {\n const { hasValue } = getFieldSpec(field);\n return hasValue(field);\n};\nexport const serializeField = (field) => {\n const { serialize } = getFieldSpec(field);\n return serialize(field);\n};\nexport const resetField = (field, payload) => {\n const { COMMIT_RESET } = getFieldSpec(field);\n return COMMIT_RESET(field, payload);\n};\n","export const COMMIT_CHANGE = (field, { minValue, maxValue }) => {\n return { ...field, minValue, maxValue };\n};\nexport const COMMIT_RESET = (field) => {\n return {\n ...field,\n minValue: null,\n maxValue: null\n };\n};\nexport const hasValue = (field) => {\n return field.minValue || field.maxValue;\n};\nexport const serialize = (field) => {\n return {\n [field.name]: `${field.minValue}_${field.maxValue}`\n };\n};\n","import PluginsMediator from './PluginsMediator';\nexport default function createList(Dispatcher) {\n return ({ loadUrl, plugins, initialState, callbacks: { onScrollToTop, onBeforeLoad, onAfterLoad } }) => {\n const mediator = PluginsMediator();\n const dispatcher = Dispatcher({\n loadUrl,\n initialState,\n deps: {\n mediator\n },\n callbacks: {\n onScrollToTop,\n onBeforeLoad,\n onAfterLoad\n }\n });\n const pluginInstances = plugins.filter(Boolean).map((plugin) => {\n return plugin({\n deps: {\n mediator\n }\n });\n });\n return {\n connect() {\n pluginInstances.forEach(plugin => plugin.connect());\n dispatcher.connect();\n },\n disconnect() {\n pluginInstances.forEach(plugin => plugin.disconnect && plugin.disconnect());\n dispatcher.disconnect && dispatcher.disconnect();\n }\n };\n };\n}\n","import Http from 'core/services/Http';\nexport default function Loader({ callbacks: { onBeforeLoad, onAfterLoad } }) {\n const load = async (loadUrl, params = {}) => {\n onBeforeLoad();\n console.log('%c%s', 'background: blue; color: white', 'Start request...', loadUrl, params);\n const result = await Http.get(loadUrl, { params });\n console.log('%c%s', 'background: blue; color: white', 'End request');\n onAfterLoad(result);\n return result;\n };\n return { load };\n}\n","import { throttle } from 'throttle-debounce';\nexport default function (delay, callback) {\n return throttle(delay, false, callback);\n}\n","import EventEmitter from 'eventemitter3';\nfunction PluginsMediator() {\n const eventEmitter = new EventEmitter();\n const subscribe = (eventName, callback) => {\n eventEmitter.on(eventName, callback);\n };\n const dispatch = (eventName, ...args) => setImmediate(() => {\n console.log('%c%s', 'color: white; background: green', eventName, args);\n eventEmitter.emit(eventName, ...args);\n });\n const unsubscribe = (eventName, callback) => {\n eventEmitter.off(eventName, callback);\n };\n return { subscribe, dispatch, unsubscribe };\n}\nexport default PluginsMediator;\n","export const COMMIT_TOGGLE = (field) => {\n return { ...field, checked: !field.checked };\n};\nexport const COMMIT_RESET = (field) => {\n return { ...field, checked: false };\n};\nexport const hasValue = (field) => {\n return field.checked;\n};\nexport const serialize = (field) => {\n return {\n [field.name]: field.value\n };\n};\n","import { resetField } from '../../../fields';\nimport cond from 'core/utils/cond';\nexport function COMMIT_CHANGE_FIELD(state, { field: { name, linked_field_name: linkedFieldName }, commitFn, payload: { lastAppliedField, ...p } }) {\n var _a;\n const fields = state.fields.map((field) => cond(_when => field.name === name, _to => commitFn(field, p), _when => field.name === linkedFieldName, _to => resetField(field), _when => cond.Any, _to => field));\n // lastAppliedField и isCounterVisible не должны тут быть\n return COMMIT_ADD_CHANGED_FIELD_ITEM({ ...state, lastAppliedField, fields, isCounterVisible: true }, { name, value: (_a = p === null || p === void 0 ? void 0 : p.item) === null || _a === void 0 ? void 0 : _a.value });\n}\nexport function COMMIT_ADD_CHANGED_FIELD_ITEM(state, { name, value }) {\n const changedFieldList = [...state.changedFieldList];\n if (!changedFieldList.some(item => item.name === name)) {\n changedFieldList.push({ name, value });\n }\n return { ...state, changedFieldList };\n}\n","export const COMMIT_RESET = (field) => {\n return { ...field, value: null };\n};\n","export const COMMIT_TOGGLE_ITEM = (field, { item }) => {\n return { ...field, value: item.value };\n};\nexport const COMMIT_RESET = (field) => {\n return { ...field, value: null };\n};\nexport const hasValue = (field) => {\n return !!field.value;\n};\nexport const serialize = (field) => {\n return {\n [field.name]: field.value\n };\n};\n","import { COMMIT_RESET, COMMIT_TOGGLE_ITEM, hasValue, serialize } from './Checkboxes';\nexport { COMMIT_RESET, COMMIT_TOGGLE_ITEM, hasValue, serialize };\n","export function COMMIT_CHANGE(field, { item }) {\n return {\n ...field,\n value: item.value\n };\n}\nexport const hasValue = (field) => !!field.value;\nexport const serialize = (field) => ({ [field.name]: field.value });\n","export const COMMIT_CHANGE = (field, payload) => {\n return { ...field, value: payload.value };\n};\nexport const COMMIT_RESET = (field) => {\n return { ...field, value: null };\n};\nexport const hasValue = (field) => {\n return !!field.value;\n};\nexport const serialize = (field) => {\n return {\n [field.name]: field.value\n };\n};\n","import { h } from 'preact';\nimport { getFieldComponent } from './fields';\nexport default function Field({ field, onFieldClick = () => { }, ...props }) {\n const Component = getFieldComponent(field);\n return (h(Component, Object.assign({ field: field, onFieldClick: onFieldClick }, props)));\n}\nexport function withClickChangeEvent(Component) {\n return ({ field, onChangeField, onFieldClick = () => { }, ...props }) => {\n let fieldElement;\n let parentElement;\n const handleClick = (element) => fieldElement = element;\n // type described in IFieldProps['onChangeField']; can't use Parameters type because function if generic\n const handleChangeField = (...args) => {\n const [commitFn, payload] = args;\n onChangeField(commitFn, {\n ...payload,\n lastAppliedField: {\n field: fieldElement,\n parent: parentElement\n }\n });\n };\n const handleRef = (el) => { parentElement = el; };\n return (h(Component, Object.assign({ field: field, onFieldClick: handleClick, onChangeField: handleChangeField, onRef: handleRef }, props)));\n };\n}\n","export function COMMIT_TOGGLE_FIELD(state, { field: { name } }) {\n return { ...state,\n openedFieldNames: { ...state.openedFieldNames,\n [name]: !state.openedFieldNames[name]\n }\n };\n}\nexport function COMMIT_INIT_TOGGLE_FIELDS(state, fields) {\n if (!Array.isArray(fields)) {\n fields = [fields];\n }\n const currentState = state.openedFieldNames;\n const newState = fields.reduce((res, { name, defaultOpen }) => {\n res[name] = currentState[name] || defaultOpen;\n return res;\n }, {});\n return {\n ...state,\n openedFieldNames: newState\n };\n}\n","export const FILTER_PLUGIN_SYNC_EVENT = 'FiltersPlugin ~> syncChanged';\n","import { cssScope, h } from 'core/services/VDOM';\nimport { Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { COMMIT_TOGGLE_ITEM } from '../../../../fields/List';\nimport { SelectInput, SelectTypes } from 'core/components/UI/Inputs';\nimport { Button } from 'core/components/UI/Button';\nimport { V1 } from '../../../../filters/ModalFilter/components/Modal';\nexport default class List extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n isLastPartShown: false\n };\n this.isItemActive = (field, item) => {\n return field.value === item.value;\n };\n this.getItemClasses = (field, item) => htmlClassNames({\n 'is-active': this.isItemActive(field, item),\n 'is_highlighted': item.isBold\n });\n this.handleToggleItem = (item) => () => {\n const { onChangeField } = this.props;\n onChangeField(COMMIT_TOGGLE_ITEM, { item });\n };\n this.handleClick = (e) => {\n const { onFieldClick } = this.props;\n onFieldClick(e.currentTarget);\n };\n this.showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n this.handleToggleShownItems = () => {\n this.setState(prevState => ({ isLastPartShown: !prevState.isLastPartShown }));\n };\n this.buildFieldsParts = () => {\n const { field } = this.props;\n return field.collection.reduce((result, item, index) => {\n var _a;\n if ((_a = field.viewOptions) === null || _a === void 0 ? void 0 : _a.viewType) {\n index < 3 * 2 ? result.firstPart.push(item) : result.lastPart.push(item);\n return result;\n }\n result.firstPart.push(item);\n return result;\n }, { firstPart: [], lastPart: [] });\n };\n this.buildSelectInput = (item) => {\n const { field } = this.props;\n return (h(SelectInput, { type: SelectTypes.radio, label: item.title, checked: this.isItemActive(field, item), onClick: this.handleClick, onChange: this.handleToggleItem(item), icon: item.icon }));\n };\n }\n get choice() {\n const { field: { collection, value } } = this.props;\n const activeItem = collection.find(item => item.value === value);\n return activeItem === null || activeItem === void 0 ? void 0 : activeItem.title;\n }\n get classes() {\n var _a, _b;\n const { isOpened, isHidden, field } = this.props;\n return htmlClassNames(['sb-Section', 'sb-Field', '__list', `__${field.key}`], { 'is-opened': isOpened }, { '__isHidden': isHidden }, { [`__${(_a = field.viewOptions) === null || _a === void 0 ? void 0 : _a.viewType}`]: (_b = field.viewOptions) === null || _b === void 0 ? void 0 : _b.viewType });\n }\n render() {\n const { field, isOpened, onRef, onToggleField, onApply, isInline } = this.props;\n const { isLastPartShown } = this.state;\n const { firstPart, lastPart } = this.buildFieldsParts();\n return cssScope('ListFilter', h => (h(\"div\", { class: this.classes, ref: onRef },\n h(\"div\", { class: 'sb-Section_toggle __isActive', onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title),\n this.showChoice() && (h(\"div\", { class: '_choice' }, this.choice))),\n isOpened && (h(\"div\", null,\n h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n firstPart.map(this.buildSelectInput),\n isLastPartShown && lastPart.map(this.buildSelectInput),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply })))),\n lastPart.length > 0 && (h(\"button\", { className: 'sb-Field_toggleShownItemsButton', type: 'button', onClick: this.handleToggleShownItems }, isLastPartShown ? 'Скрыть' : 'Показать все')))))));\n }\n}\n","import { Component } from 'preact';\nimport { cssScope } from 'core/services/VDOM';\nimport { Text, MultipleRange, CurrencyText } from 'core/components/UI/Inputs';\nimport { V1 } from '../../ModalFilter/components/Modal';\nconst MAX_PERCENT_VALUE = 10000;\nexport class RangeInput extends Component {\n constructor(props) {\n super(props);\n this.calcValues = (range) => {\n const { range: field } = this.props;\n let minValue = Number(range[0]) || field.min;\n let maxValue = Number(range[1]) || field.max;\n if (minValue > maxValue)\n minValue = field.min;\n if (maxValue < minValue)\n maxValue = field.max;\n if (minValue < field.min)\n minValue = field.min;\n if (maxValue > field.max)\n maxValue = field.max;\n if (minValue === field.min && maxValue === field.max) {\n minValue = maxValue = null;\n }\n return { minValue, maxValue };\n };\n this.handleInputChangeMin = (e, value) => {\n const target = e.currentTarget;\n value = value !== null && value !== void 0 ? value : +target.value;\n const values = this.calcValues([value, this.props.range.maxValue]);\n this.props.onChangeMinEnd(values, target);\n };\n this.handleInputChangeMax = (e, value) => {\n const target = e.currentTarget;\n value = value !== null && value !== void 0 ? value : +target.value;\n const values = this.calcValues([this.props.range.minValue, value]);\n this.props.onChangeMaxEnd(values, target);\n };\n this.handleChangeMin = (value) => {\n this.handleChange([this.calcPriceFromPercent(value), this.props.range.maxValue]);\n };\n this.handleChangeMax = (value) => {\n this.handleChange([this.props.range.minValue, this.calcPriceFromPercent(value)]);\n };\n this.handleChange = (range) => {\n this.setState(this.calcValues(range));\n };\n this.handleChangeMinEnd = ({}, element) => {\n this.props.onChangeMinEnd(this.state, element);\n };\n this.handleChangeMaxEnd = ({}, element) => {\n this.props.onChangeMaxEnd(this.state, element);\n };\n const { range: { minValue, maxValue } } = this.props;\n this.setState({ minValue, maxValue });\n }\n get TextComponent() {\n return this.props.type === 'currency' ? CurrencyText : Text;\n }\n get rangeStep() {\n return MAX_PERCENT_VALUE / (this.props.range.ranges.length || 1);\n }\n // calculation uses simple math ratio between percent progress inside specific range and price frames\n // rangeProgress / rangeStep = priceProgress / priceRangeDiff\n calcPriceFromPercent(percent) {\n const { ranges } = this.props.range;\n let index = Math.ceil(percent / this.rangeStep) - 1; // define range index \n if (index < 0)\n index = 0;\n const { min, max } = ranges[index] || this.props.range;\n const rangeProgress = percent - index * this.rangeStep;\n const priceRangeDiff = max - min;\n return Math.round(min + (rangeProgress * priceRangeDiff) / this.rangeStep);\n }\n calcPercentFromPrice(price) {\n const { ranges } = this.props.range;\n let targetIndex = 0; // store range index\n const { min, max } = ranges.find(({ min, max }, i) => {\n targetIndex = i;\n return price >= min && price <= max;\n }) || this.props.range;\n const priceProgress = price - min;\n const priceRangeDiff = max - min;\n return Math.round((targetIndex + priceProgress / priceRangeDiff) * this.rangeStep);\n }\n componentDidUpdate({ range: { minValue: prevMin, maxValue: prevMax } }) {\n const { range: { minValue, maxValue } } = this.props;\n if (prevMin !== minValue || prevMax !== maxValue) {\n this.setState({ minValue, maxValue });\n }\n }\n render({ range, type }) {\n const minValue = this.state.minValue || undefined;\n const maxValue = this.state.maxValue || undefined;\n return cssScope('ListFilter', h => {\n var _a, _b;\n return (h(\"div\", { class: 'sb-RangeInput' },\n h(\"div\", { className: 'sb-RangeInput_textFields' },\n h(\"div\", { className: 'sb-RangeInput_text' },\n type === 'inline' && h(\"span\", null, \"\\u043E\\u0442\"),\n h(this.TextComponent, { label: '\\u041E\\u0442', type: 'number', color: 'white', min: range.min, max: range.max, value: minValue, placeholder: (_a = range.min) === null || _a === void 0 ? void 0 : _a.toString(), onChange: this.handleInputChangeMin, isLabelFixed: true })),\n h(\"div\", { className: 'sb-RangeInput_text' },\n type === 'inline' && h(\"span\", null, \"\\u0434\\u043E\"),\n h(this.TextComponent, { label: '\\u0414\\u043E', type: 'number', color: 'white', min: range.min, max: range.max, value: maxValue, placeholder: (_b = range.max) === null || _b === void 0 ? void 0 : _b.toString(), onChange: this.handleInputChangeMax, isLabelFixed: true }),\n type === 'inline' && h(\"span\", null, \"\\u0441\\u043C\"))),\n V1 && (h(\"div\", { className: 'sb-RangeInput_range' },\n h(MultipleRange, { min: 0, max: MAX_PERCENT_VALUE, minValue: minValue ? this.calcPercentFromPrice(minValue) : minValue, maxValue: maxValue ? this.calcPercentFromPrice(maxValue) : maxValue, onMinChange: this.handleChangeMin, onMaxChange: this.handleChangeMax, onMinChangeEnd: this.handleChangeMinEnd, onMaxChangeEnd: this.handleChangeMaxEnd })))));\n });\n }\n}\n","import { cssScope } from 'core/services/VDOM';\nimport { Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { Button } from 'core/components/UI/Button';\nimport { COMMIT_TOGGLE_ITEM, COMMIT_RESET } from '../../../../fields/Colors';\nimport { V1 } from '../../../ModalFilter/components/Modal';\nexport default class Colors extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n isLastPartShown: false\n };\n this.isItemActive = (item) => this.props.field.values.includes(item.value);\n this.getItemClasses = (item) => htmlClassNames('sb-Field_value', {\n '__isActive': this.isItemActive(item),\n '__isHighlighted': item.isBold\n });\n this.showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n this.handleToggleItem = (item) => (e) => {\n this.props.onFieldClick(e.currentTarget);\n this.props.onChangeField(COMMIT_TOGGLE_ITEM, {\n item: { ...item },\n isChecked: e.target.checked\n });\n };\n this.handleReset = (e) => {\n this.props.onFieldClick(e.currentTarget);\n this.props.onChangeField(COMMIT_RESET);\n };\n this.buildFieldsParts = () => {\n return this.props.field.collection.reduce((result, item, index) => {\n if (V1) {\n result.firstPart.push(item);\n return result;\n }\n index < 7 ? result.firstPart.push(item) : result.lastPart.push(item);\n return result;\n }, { firstPart: [], lastPart: [] });\n };\n this.buildInput = (item) => {\n return cssScope('ListFilter', h => (h(\"label\", { className: this.getItemClasses(item) },\n h(\"input\", { className: 'sb-Field_valueInput', type: 'checkbox', onChange: this.handleToggleItem(item), checked: this.isItemActive(item) }),\n h(\"span\", { className: 'sb-Field_valueBg', style: { backgroundColor: `#${item.hex}` }, \"data-color\": item.value }),\n h(\"span\", null, item.title))));\n };\n this.handleToggleShownItems = () => {\n this.setState(prevState => ({ isLastPartShown: !prevState.isLastPartShown }));\n };\n }\n get classes() {\n const { isOpened, isHidden } = this.props;\n return htmlClassNames('sb-Section sb-Field __colors', { 'is-opened': isOpened, '__isHidden': isHidden });\n }\n get choice() {\n const { field } = this.props;\n if (field.values.length > 0) {\n return field.collection\n .filter(item => field.values.includes(item.value))\n .map(({ title }) => title)\n .join(', ');\n }\n }\n render() {\n const { field, onToggleField, isOpened, onRef, onApply, isInline } = this.props;\n const { isLastPartShown } = this.state;\n const { firstPart, lastPart } = this.buildFieldsParts();\n return cssScope('ListFilter', h => (h(\"div\", { className: this.classes, ref: onRef },\n h(\"div\", { className: htmlClassNames('sb-Section_toggle', { '__isActive': field.values.length > 0 }), onClick: onToggleField },\n h(\"div\", { className: '_title' }, field.title),\n this.showChoice() && (h(\"div\", { class: '_choice' }, this.choice))),\n isOpened && (h(\"div\", null,\n h(\"div\", { className: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n h(\"button\", { type: 'button', className: 'sb-Field_reset', onClick: this.handleReset }, \"\\u0412\\u0441\\u0435 \\u0446\\u0432\\u0435\\u0442\\u0430\"),\n firstPart.map(this.buildInput),\n isLastPartShown && lastPart.map(this.buildInput),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply })))),\n lastPart.length > 0 && (h(\"button\", { className: 'sb-Field_toggleShownItemsButton', type: 'button', onClick: this.handleToggleShownItems }, isLastPartShown ? 'Скрыть' : 'Показать все')))))));\n }\n}\n","import { cssScope, h } from 'core/services/VDOM';\nimport { Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { COMMIT_TOGGLE_ITEM } from '../../../../fields/Checkboxes';\nimport { SelectInput, SelectTypes } from 'core/components/UI/Inputs';\nimport Tooltip from 'core/components/UI/Tooltip';\nimport { Button } from 'core/components/UI/Button';\nimport { V1 } from '../../../../filters/ModalFilter/components/Modal';\n// Based on current width set by desktop's styles\nconst FIELD_TITLE_MAX_LENGTH = 23;\nexport default class Checkboxes extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n isLastPartShown: false\n };\n this.isItemActive = (item) => this.props.field.values.includes(item.value);\n this.handleToggleItem = (item) => (e) => {\n this.props.onChangeField(COMMIT_TOGGLE_ITEM, {\n item: { ...item },\n isChecked: e.target.checked\n });\n };\n this.handleClick = (e) => {\n this.props.onFieldClick(e.currentTarget);\n };\n this.showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n this.handleToggleShownItems = () => {\n this.setState(prevState => ({ isLastPartShown: !prevState.isLastPartShown }));\n };\n this.buildFieldsParts = () => {\n const { field } = this.props;\n return field.collection.reduce((result, item, index) => {\n var _a;\n if (V1) {\n result.firstPart.push(item);\n return result;\n }\n if ((_a = field.viewOptions) === null || _a === void 0 ? void 0 : _a.viewType) {\n index < 3 * 2 ? result.firstPart.push(item) : result.lastPart.push(item);\n return result;\n }\n index < 7 ? result.firstPart.push(item) : result.lastPart.push(item);\n return result;\n }, { firstPart: [], lastPart: [] });\n };\n this.buildSelectInput = (item) => {\n return (h(SelectInput, { type: SelectTypes.checkbox, label: item.title, onClick: this.handleClick, checked: this.isItemActive(item), onChange: this.handleToggleItem(item), title: (item.title && item.title.length > FIELD_TITLE_MAX_LENGTH) ? item.title : undefined, icon: item.icon }));\n };\n }\n get choice() {\n const { field } = this.props;\n if (field.values.length > 0) {\n return field.collection\n .filter(item => field.values.includes(item.value))\n .map(({ title }) => title)\n .join(', ');\n }\n }\n get classes() {\n var _a, _b;\n const { field, isOpened, isHidden } = this.props;\n return htmlClassNames(['sb-Section', 'sb-Field', '__checkboxes', `__${field.key}`], { 'is-opened': isOpened, '__isHidden': isHidden }, { [`__${(_a = field.viewOptions) === null || _a === void 0 ? void 0 : _a.viewType}`]: (_b = field.viewOptions) === null || _b === void 0 ? void 0 : _b.viewType });\n }\n render() {\n const { field, isOpened, onRef, onToggleField, onApply, isInline } = this.props;\n const { isLastPartShown } = this.state;\n const { firstPart, lastPart } = this.buildFieldsParts();\n return cssScope('ListFilter', h => (h(\"div\", { class: this.classes, ref: onRef },\n h(\"div\", { class: htmlClassNames('sb-Section_toggle', { '__isActive': field.values.length > 0 }), onClick: onToggleField },\n h(\"div\", { class: '_title' },\n field.title,\n field.tooltip && (h(\"span\", { className: 'sb-Section_tooltipWrapper' },\n h(\"div\", { className: 'sb-Section_tooltip' },\n \"?\",\n h(Tooltip, { label: field.tooltip }))))),\n this.showChoice() && (h(\"div\", { class: '_choice' }, this.choice))),\n isOpened && (h(\"div\", null,\n h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n firstPart.map(this.buildSelectInput),\n isLastPartShown && lastPart.map(this.buildSelectInput),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply })))),\n lastPart.length > 0 && (h(\"button\", { className: 'sb-Field_toggleShownItemsButton', type: 'button', onClick: this.handleToggleShownItems }, isLastPartShown ? 'Скрыть' : 'Показать все')))))));\n }\n}\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { Button } from 'core/components/UI/Button';\nimport { COMMIT_CHANGE } from '../../../../fields/MultipleRange';\nimport { RangeInput } from '../RangeInput';\nvoid RangeInput, COMMIT_CHANGE;\nexport default function MultipleRange({ field, isOpened, isHidden, onToggleField, onChangeField, onFieldClick, onRef, onApply, isInline }) {\n const classes = htmlClassNames(['sb-Section', 'sb-Field', '__multipleRange'], { 'is-opened': isOpened, '__isHidden': isHidden });\n const onChangeMinEnd = (range) => (rangeValues, element) => {\n const payload = {\n rangeName: range.name,\n rangeValues\n };\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, payload);\n };\n const onChangeMaxEnd = (range) => (rangeValues, element) => {\n const payload = {\n rangeName: range.name,\n rangeValues\n };\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, payload);\n };\n return cssScope('ListFilter', h => (h(\"div\", { class: classes, ref: onRef },\n h(\"div\", { class: 'sb-Section_toggle', onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title)),\n isOpened && (h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n field.ranges.map(range => (h(\"div\", null,\n h(\"div\", { className: 'sb-Field_title' }, range.title),\n h(RangeInput, { range: range, onChangeMaxEnd: onChangeMaxEnd(range), onChangeMinEnd: onChangeMinEnd(range) })))),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply }))))))));\n}\n","import { cssScope } from 'core/services/VDOM';\nimport { SelectInput, SelectTypes } from 'core/components/UI/Inputs';\nimport List from './List';\nexport default class InlineList extends List {\n render() {\n const { field, onRef } = this.props;\n return cssScope('ListFilter', h => (h(\"div\", { class: 'sb-Section __inline sb-Field __inlineList is-opened', ref: onRef },\n h(\"div\", { class: 'sb-Section_title' }, field.title),\n h(\"div\", { class: 'sb-Section_content sb-Field_content' }, field.collection.map(item => (h(SelectInput, { type: SelectTypes.radio, label: item.title, checked: this.isItemActive(field, item), onClick: this.handleClick, onChange: this.handleToggleItem(item) })))))));\n }\n}\n","import { cssScope, h } from 'core/services/VDOM';\nimport { Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { COMMIT_TOGGLE_ITEM } from '../../../../fields/List';\nimport { SelectInput, SelectTypes } from 'core/components/UI/Inputs';\nimport { Button } from 'core/components/UI/Button';\nimport { V1 } from '../../../ModalFilter/components/Modal';\nexport default class QuickFilterColors extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n isLastPartShown: false\n };\n this.isItemActive = (field, item) => {\n return field.value === item.value;\n };\n this.getItemClasses = (field, item) => htmlClassNames({\n 'is-active': this.isItemActive(field, item),\n 'is_highlighted': item.isBold\n });\n this.handleToggleItem = (item) => () => {\n const { onChangeField } = this.props;\n onChangeField(COMMIT_TOGGLE_ITEM, { item });\n };\n this.handleToggleShownItems = () => {\n this.setState(prevState => ({ isLastPartShown: !prevState.isLastPartShown }));\n };\n this.handleClick = (e) => {\n const { onFieldClick } = this.props;\n onFieldClick(e.currentTarget);\n };\n this.showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n this.buildFieldsParts = () => {\n const { field } = this.props;\n return field.collection.reduce((result, item, index) => {\n index < 4 * 2 ? result.firstPart.push(item) : result.lastPart.push(item);\n return result;\n }, { firstPart: [], lastPart: [] });\n };\n this.buildSelectInput = (item) => {\n const { field } = this.props;\n return (h(SelectInput, { type: SelectTypes.radio, label: item.title, checked: this.isItemActive(field, item), onClick: this.handleClick, onChange: this.handleToggleItem(item), icon: item.icon }));\n };\n }\n get choice() {\n const { field: { collection, value } } = this.props;\n const activeItem = collection.find(item => item.value === value);\n return activeItem === null || activeItem === void 0 ? void 0 : activeItem.title;\n }\n get classes() {\n const { isOpened, isHidden, field } = this.props;\n return htmlClassNames(['sb-Section', 'sb-Field', '__list', `__${field.key}`, `__${field.type}`], { 'is-opened': isOpened }, { '__isHidden': isHidden });\n }\n render() {\n const { field, isOpened, onRef, onToggleField, onApply, isInline } = this.props;\n const { isLastPartShown } = this.state;\n const { firstPart, lastPart } = this.buildFieldsParts();\n return cssScope('ListFilter', h => (h(\"div\", { class: this.classes, ref: onRef, style: '--columns: 4;' },\n h(\"div\", { class: 'sb-Section_toggle __isActive', onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title),\n this.showChoice() && (h(\"div\", { class: '_choice' }, this.choice))),\n isOpened && (h(\"div\", null,\n h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n firstPart.map(this.buildSelectInput),\n isLastPartShown && lastPart.map(this.buildSelectInput),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply })))),\n lastPart.length > 0 && (h(\"button\", { className: 'sb-Field_toggleShownItemsButton', type: 'button', onClick: this.handleToggleShownItems }, isLastPartShown ? 'Скрыть' : 'Показать все')))))));\n }\n}\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { Button } from 'core/components/UI/Button';\nimport { COMMIT_CHANGE } from '../../../../fields/MultipleRange';\nimport { RangeInput } from '../RangeInput';\nvoid RangeInput, COMMIT_CHANGE;\nexport default function QuickFilterSize({ field, isOpened, isHidden, onToggleField, onChangeField, onFieldClick, onRef, onApply, isInline }) {\n const classes = htmlClassNames(['sb-Section', 'sb-Field', '__multipleRange', `__${field.type}`], { 'is-opened': isOpened, '__isHidden': isHidden });\n const onChangeMinEnd = (range) => (rangeValues, element) => {\n const payload = {\n rangeName: range.name,\n rangeValues\n };\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, payload);\n };\n const onChangeMaxEnd = (range) => (rangeValues, element) => {\n const payload = {\n rangeName: range.name,\n rangeValues\n };\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, payload);\n };\n const handleQuickRangeChange = ({ min, max }) => () => {\n const payload = {\n rangeName: field.quickDimension,\n rangeValues: {\n minValue: min,\n maxValue: max\n }\n };\n onChangeField(COMMIT_CHANGE, payload);\n };\n return cssScope('ListFilter', h => (h(\"div\", { class: classes, ref: onRef },\n h(\"div\", { class: 'sb-Section_toggle', onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title)),\n isOpened && (h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n h(\"div\", { className: 'sb-Field_quickRanges' }, field.quickRanges.map(range => (h(\"button\", { className: htmlClassNames('sb-Field_quickRange', { '__isActive': range.isActive }), type: 'button', onClick: handleQuickRangeChange(range) },\n h(\"img\", { className: 'sb-Field_quickRangeImg', src: range.url }),\n h(\"p\", { className: 'sb-Field_quickRangeTitle' }, range.title))))),\n field.ranges.map(range => (h(\"div\", { className: 'sb-Field_inlineRange' },\n h(\"div\", { className: 'sb-Field_title' }, range.title),\n h(RangeInput, { range: range, type: 'inline', onChangeMaxEnd: onChangeMaxEnd(range), onChangeMinEnd: onChangeMinEnd(range) })))),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply }))))))));\n}\n","import List from './List';\nimport Range from './Range';\n// import Select from './Select'\nimport Color from './Color';\nimport Colors from './Colors';\nimport Segment from './Segment';\nimport TextLine from './TextLine';\nimport Checkbox from './Checkbox';\nimport Checkboxes from './Checkboxes';\nimport MultipleRange from './MultipleRange';\nimport InlineList from './InlineList';\nimport QuickFilterColors from './QuickFilterColors';\nimport QuickFilterSize from './QuickFilterSize';\nconst INLINE_FIELD_MAP = {\n InlineList\n};\nconst FIELD_MAP = {\n ...INLINE_FIELD_MAP,\n List,\n Range,\n Color,\n Colors,\n // Select,\n Segment,\n TextLine,\n Checkbox,\n Checkboxes,\n MultipleRange,\n QuickFilterColors,\n QuickFilterSize\n};\nexport const getFieldComponent = (field) => {\n return FIELD_MAP[field.type];\n};\nexport function isInlineField(field) {\n return !!INLINE_FIELD_MAP[field.type];\n}\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { SelectInput, SelectTypes } from 'core/components/UI/Inputs';\nimport { Button } from 'core/components/UI/Button';\nimport { COMMIT_CHANGE } from '../../../../fields/Range';\nimport { RangeInput } from '../RangeInput';\nimport { V1 } from '../../../ModalFilter/components/Modal';\nimport { pushToDataLayer } from 'core/services/GTM';\nexport default function Range({ field, isOpened, isHidden, onChangeField, onToggleField, onFieldClick, onRef, onApply, isInline }) {\n const classes = htmlClassNames(['sb-Section', 'sb-Field', '__range'], { 'is-opened': isOpened, '__isHidden': isHidden });\n const isRangeActive = (range) => {\n return Boolean((field.minValue && range.min >= field.minValue) &&\n (field.maxValue && range.max <= field.maxValue));\n };\n const onChangeMinEnd = (values, element) => {\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, values);\n };\n const onChangeMaxEnd = (values, element) => {\n onFieldClick(element);\n onChangeField(COMMIT_CHANGE, values);\n };\n const checkRange = (range) => {\n let values = { minValue: null, maxValue: null };\n const firstRange = field.ranges[0];\n const lastRange = field.ranges[field.ranges.length - 1];\n const allRangeActive = (range === firstRange || isRangeActive(firstRange))\n && (range === lastRange || isRangeActive(lastRange));\n if (!allRangeActive) {\n values = {\n minValue: !field.minValue || range.min < field.minValue ? range.min : field.minValue,\n maxValue: !field.maxValue || range.max > field.maxValue ? range.max : field.maxValue\n };\n }\n onChangeField(COMMIT_CHANGE, values);\n };\n const uncheckRange = (range) => {\n const currentRangeIndex = field.ranges.findIndex(item => item.title === range.title);\n const previousCheckedRange = currentRangeIndex > 0 && isRangeActive(field.ranges[currentRangeIndex - 1])\n ? field.ranges[currentRangeIndex - 1]\n : null;\n const nextCheckedRange = currentRangeIndex < field.ranges.length - 1 && isRangeActive(field.ranges[currentRangeIndex + 1])\n ? field.ranges[currentRangeIndex + 1]\n : null;\n // An unsupported case\n if (nextCheckedRange && previousCheckedRange)\n return;\n const values = {\n minValue: field.minValue,\n maxValue: field.maxValue\n };\n if (nextCheckedRange) {\n values.minValue = nextCheckedRange.min;\n }\n else if (previousCheckedRange) {\n values.maxValue = previousCheckedRange.max;\n }\n else {\n values.minValue = null;\n values.maxValue = null;\n }\n onChangeField(COMMIT_CHANGE, values);\n };\n const onToggleRange = (range) => () => {\n const isChecked = isRangeActive(range);\n if (isChecked)\n return uncheckRange(range);\n checkRange(range);\n };\n const handleCheckClick = (e) => {\n onFieldClick(e.currentTarget);\n };\n const inputType = field.key === 'price' ? 'currency' : 'default';\n const choiceTitle = field.minValue && field.maxValue ? `${field.minValue} – ${field.maxValue}` : '';\n const showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n const handleApplyCkick = () => {\n onApply && onApply();\n pushToDataLayer({ event: 'PriceFilter' });\n };\n return cssScope('ListFilter', h => (h(\"div\", Object.assign({ class: classes, ref: onRef }, (field.key === 'price' && { 'data-gtm-products-filter': '' })),\n h(\"div\", { class: htmlClassNames('sb-Section_toggle', { '__isActive': choiceTitle }), onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title),\n showChoice() && (h(\"div\", { class: '_choice' }, choiceTitle))),\n isOpened && (h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title sb-Field_title' }, field.title),\n h(RangeInput, { type: inputType, range: field, onChangeMinEnd: onChangeMinEnd, onChangeMaxEnd: onChangeMaxEnd }),\n field.ranges.length > 0 && (h(\"div\", { class: 'sb-Field_ranges' }, field.ranges.map(range => (h(SelectInput, { type: SelectTypes.checkbox, label: range.title, onClick: handleCheckClick, checked: isRangeActive(range), onChange: onToggleRange(range) }))))),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: handleApplyCkick }))))))));\n}\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { Button } from 'core/components/UI/Button';\nimport { COMMIT_TOGGLE_ITEM, COMMIT_RESET } from '../../../../fields/Color';\nimport { V1 } from '../../../ModalFilter/components/Modal';\nexport default function Colors({ field, onChangeField, onToggleField, onFieldClick, isOpened, isHidden, onRef, onApply, isInline }) {\n const isActive = (item) => {\n return field.value === item.value;\n };\n const getChoice = () => {\n const activeItem = field.collection.find(item => item.value === field.value);\n return activeItem === null || activeItem === void 0 ? void 0 : activeItem.title;\n };\n const classes = htmlClassNames('sb-Section sb-Field __colors', { 'is-opened': isOpened, '__isHidden': isHidden });\n const getItemClasses = (item) => htmlClassNames('sb-Field_value', {\n '__isActive': isActive(item),\n '__isHighlighted': item.isBold\n });\n const handleToggle = (item) => (e) => {\n onFieldClick(e.currentTarget);\n onChangeField(COMMIT_TOGGLE_ITEM, { item });\n };\n const handleReset = (e) => {\n onFieldClick(e.currentTarget);\n onChangeField(COMMIT_RESET);\n };\n const showChoice = () => {\n if (V1)\n return true;\n if (this.props.isInline)\n return true;\n return false;\n };\n return cssScope('ListFilter', h => (h(\"div\", { class: classes, ref: onRef },\n h(\"div\", { class: 'sb-Section_toggle', onClick: onToggleField },\n h(\"div\", { class: '_title' }, field.title),\n showChoice() && (h(\"div\", { class: '_choice' }, getChoice()))),\n isOpened && (h(\"div\", { class: 'sb-Section_content sb-Field_content' },\n isInline && h(\"h4\", { className: 'sb-Section_title' }, field.title),\n h(\"a\", { class: 'sb-Field_reset', onClick: handleReset }, \"\\u0412\\u0441\\u0435 \\u0446\\u0432\\u0435\\u0442\\u0430\"),\n field.collection.map(item => (h(\"a\", { class: getItemClasses(item), onClick: handleToggle(item) },\n h(\"span\", { class: 'sb-Field_valueBg', style: `background: #${item.hex}`, \"data-color\": item.value }),\n h(\"span\", { class: 'sb-Field_valueTitle' }, item.title)))),\n isInline && (h(\"div\", { className: 'sb-Section_actions' },\n h(Button, { text: '\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C', onClick: onApply }))))))));\n}\n","import { cssScope } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { COMMIT_CHANGE } from '../../../../fields/Segment';\nexport default function Segment({ field, onChangeField, onRef }) {\n const getClassNames = (item) => {\n return htmlClassNames(['sb-Field_item', `__${item.value}`], { __isActive: item.value === field.value });\n };\n const handleClick = (item) => () => {\n onChangeField(COMMIT_CHANGE, { item });\n };\n return cssScope('ListFilter', h => (h(\"div\", { className: 'sb-Section sb-Field __segment', ref: onRef },\n h(\"div\", { className: 'sb-Field_content' }, field.collection.map(item => (h(\"div\", { onClick: handleClick(item), className: getClassNames(item) },\n h(\"span\", null, item.title))))))));\n}\n","import { cssScope } from 'core/services/VDOM';\nimport { COMMIT_CHANGE } from '../../../../fields/TextLine';\nexport default function TextLine({ field, onChangeField, onRef }) {\n const handleChange = (e) => {\n onChangeField(COMMIT_CHANGE, { value: e.target.value });\n };\n return cssScope('ListFilter', h => (h(\"div\", { class: 'sb-Field __textline', ref: onRef },\n h(\"div\", { class: 'sb-Field_content' },\n h(\"input\", { type: 'text', value: field.value, placeholder: ' ', onChange: handleChange }),\n h(\"div\", { class: 'sb-Field_placeholder' }, field.placeholder)))));\n}\n","import { cssScope } from 'core/services/VDOM';\nimport { COMMIT_TOGGLE } from '../../../../fields/Checkbox';\nexport default function ({ field, onChangeField }) {\n const handleToggle = () => {\n onChangeField(COMMIT_TOGGLE);\n };\n return cssScope('ListFilter', h => (h(\"div\", { class: 'sb-Field __checkbox' },\n h(\"div\", { class: 'sb-Field_content' },\n h(\"label\", null,\n h(\"input\", { type: 'checkbox', checked: field.checked, onChange: handleToggle }),\n h(\"span\", null, field.title))))));\n}\n"],"sourceRoot":""}