{"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","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","isFlat","body","handleOpen","loadComponentsStyles","asyncComponent","sent","handleClose","handleToggle","handleApplyMobile","active","onReset","onMobileApply","onClose","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","handleUpdateCount","instance","FILTER_PLUGIN_SYNC_EVENT","updateFilters","createFilter","moduleName","getFilterModule","_a","fieldPayload","_ref9","_ref13","_ref14","handleUpdateUrl","handleUpdate","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","console","log","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","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","event","isActive","getClassNames","__isActive","quickRanges","quickDimension","src"],"mappings":"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","file":"chunk.1.06bf7a353b813d31214b.9961fd6c.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 <div class='sb-Choice __list'>\n <div class='sb-Choice_title'>{field.title}</div>\n <div class='sb-Choice_value'>{getHumanValue()}</div>\n <div class='sb-Choice_remove' onClick={handleReset}></div>\n </div>\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 <div class='sb-Choice __list'>\n <div class='sb-Choice_title'>{field.title}</div>\n <div class='sb-Choice_value'>{getHumanValue()}</div>\n <div class='sb-Choice_remove' onClick={handleReset}></div>\n </div>\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 <div class='sb-Choice __checkbox'>\n <div class='sb-Choice_title'>{field.title}</div>\n <div class='sb-Choice_value'>{getHumanValue()}</div>\n <div class='sb-Choice_remove' onClick={handleReset}></div>\n </div>\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 <div class=\"sb-Choice __checkbox\">\n <div class=\"sb-Choice_value\">{field.title}</div>\n <div class=\"sb-Choice_remove\" onClick={handleReset}></div>\n </div>\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 <div class='sb-Choice __checkboxes'>\n <div class='sb-Choice_title'>{field.title}</div>\n <div class='sb-Choice_value'>{getHumanValue()}</div>\n <div class='sb-Choice_remove' onClick={handleReset}></div>\n </div>\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 <span>\n {getRanges().map(range => (\n <div class='sb-Choice __multipleRange'>\n <div class='sb-Choice_title'>{range.title}</div>\n <div class='sb-Choice_value'>{getHumanValue(range)}</div>\n <div class='sb-Choice_remove' onClick={handleReset(range)}></div>\n </div>\n ))}\n </span>\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 <span>\n {getRanges().map(range => (\n <div class='sb-Choice __multipleRange'>\n <div class='sb-Choice_title'>{range.title}</div>\n <div class='sb-Choice_value'>{getHumanValue(range)}</div>\n <div class='sb-Choice_remove' onClick={handleReset(range)}></div>\n </div>\n ))}\n </span>\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 <div class='sb-Choice __list'>\n <div class='sb-Choice_title'>{field.title}</div>\n <div class='sb-Choice_value'>{getHumanValue()}</div>\n <div class='sb-Choice_remove' onClick={handleReset}></div>\n </div>\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 <Component field={field} onChangeField={onChangeField} />\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 <div class='ScopeRoot' ref={el => this.rootRef = el}>\n {this.filteredFields.length > 0 && (\n <div\n class='sb-Reset'\n ref={el => this.resetRef = el}\n onClick={onResetFields}\n />\n )}\n\n {this.filteredFields.map(([filterName, field]) =>\n <Field\n field={field}\n onChangeField={this.onChangeField(filterName, field)}\n />\n )}\n\n <button\n type='button'\n class={htmlClassNames('sb-ShowMore', { '__hidden': !shouldShowMoreControl })}\n ref={el => this.showMoreRef = el}\n onClick={this.handleShowMore}\n >\n <div class='sb-ShowMore_icon' />\n </button>\n </div>\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 <FieldsList\n fields={fields}\n onChangeField={onChangeField}\n onResetFields={onResetFields}\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 return cssScope('ListFilter', h => (h(\"div\", { class: `ScopeRoot __inline __size_${size}` }, state.fields.map(field => (h(Field, { field: field, onApply: handleApply, isOpened: isFieldOpened(field), onToggleField: onToggleField(field), onChangeField: onChangeField(field), isInline: true }))))));\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 const isFlat = document.querySelector('.b-flat-Breadcrumbs');\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 let AsyncModal;\n const handleOpen = async () => {\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 return htmlClassNames(isFlat ? 'sb-flat-Open' : 'sb-Open', active && '__active');\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 }, state.isModalOpened ? 'Скрыть' : 'Фильтр'),\n state.isModalOpened && (h(AsyncModal, { store: store, state: state, onReset: handleReset, onApply: handleApply, onMobileApply: handleApplyMobile, onClose: handleClose })))));\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 },\n disconnect() {\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';\nimport { loadComponentsStyles } from 'core/utils/asyncLoadAssets';\nimport { V1 } from './filters/ModalFilter/components/Modal';\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 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 handleUpdate = (filters) => {\n store.commit(COMMIT_SET_FILTERS, filters);\n updateFilters(filters);\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 },\n disconnect() {\n mediator.unsubscribe('FiltersPlugin <~ update', handleUpdate);\n mediator.unsubscribe('FiltersPlugin <~ updateUrl', handleUpdateUrl);\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 const getClasses = (state) => {\n return htmlClassNames('ScopeRoot __modal', { '__v2': V2 }, { '__opened': state.isModalOpened });\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(state) },\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 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":""}