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