{"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/src/header.js","webpack://[name]/node_modules/browser-pack/_prelude.js","webpack://[name]/index.js","webpack://[name]/src/Eventable.js","webpack://[name]/src/InteractEvent.js","webpack://[name]/src/Interactable.js","webpack://[name]/src/Interaction.js","webpack://[name]/src/actions/base.js","webpack://[name]/src/actions/drag.js","webpack://[name]/src/actions/drop.js","webpack://[name]/src/actions/gesture.js","webpack://[name]/src/actions/resize.js","webpack://[name]/src/autoScroll.js","webpack://[name]/src/autoStart/InteractableMethods.js","webpack://[name]/src/autoStart/base.js","webpack://[name]/src/autoStart/drag.js","webpack://[name]/src/autoStart/gesture.js","webpack://[name]/src/autoStart/hold.js","webpack://[name]/src/autoStart/resize.js","webpack://[name]/src/defaultOptions.js","webpack://[name]/src/index.js","webpack://[name]/src/inertia.js","webpack://[name]/src/interact.js","webpack://[name]/src/interactablePreventDefault.js","webpack://[name]/src/modifiers/base.js","webpack://[name]/src/modifiers/restrict.js","webpack://[name]/src/modifiers/restrictEdges.js","webpack://[name]/src/modifiers/restrictSize.js","webpack://[name]/src/modifiers/snap.js","webpack://[name]/src/modifiers/snapSize.js","webpack://[name]/src/pointerEvents/PointerEvent.js","webpack://[name]/src/pointerEvents/base.js","webpack://[name]/src/pointerEvents/holdRepeat.js","webpack://[name]/src/pointerEvents/interactableTargets.js","webpack://[name]/src/scope.js","webpack://[name]/src/utils/Signals.js","webpack://[name]/src/utils/arr.js","webpack://[name]/src/utils/browser.js","webpack://[name]/src/utils/clone.js","webpack://[name]/src/utils/domObjects.js","webpack://[name]/src/utils/domUtils.js","webpack://[name]/src/utils/events.js","webpack://[name]/src/utils/extend.js","webpack://[name]/src/utils/getOriginXY.js","webpack://[name]/src/utils/hypot.js","webpack://[name]/src/utils/index.js","webpack://[name]/src/utils/interactionFinder.js","webpack://[name]/src/utils/is.js","webpack://[name]/src/utils/isWindow.js","webpack://[name]/src/utils/pointerExtend.js","webpack://[name]/src/utils/pointerUtils.js","webpack://[name]/src/utils/raf.js","webpack://[name]/src/utils/rect.js","webpack://[name]/src/utils/window.js","webpack://[name]/./node_modules/mithril/stream.js","webpack://[name]/./node_modules/mithril/stream/stream.mjs","webpack://[name]/./node_modules/text-mask-core/dist/textMaskCore.js","webpack://[name]/./src/js/search/components/form/textfield.js","webpack://[name]/./src/js/search/components/form/textbox.js","webpack://[name]/./src/js/search/components/form/dropdown.js","webpack://[name]/./src/js/search/components/form/textarea.js","webpack://[name]/./src/js/search/components/form/maskfield.js","webpack://[name]/./src/js/search/components/form/index.js","webpack://[name]/./src/js/search/components/form/range-slider.js","webpack://[name]/./src/js/search/lib/detect-mobile.js","webpack://[name]/./src/js/search/models/search.js","webpack://[name]/./src/js/search/models/conditions.js","webpack://[name]/./src/js/search/models/liker.js","webpack://[name]/./src/js/search/models/index.js","webpack://[name]/./src/js/search/form/index.js","webpack://[name]/./src/js/search/form/map.js","webpack://[name]/./src/js/search/form/mrt.js","webpack://[name]/./src/js/search/form/list.js","webpack://[name]/./src/js/search/claim/index.js","webpack://[name]/./src/js/search/form/liker.js","webpack://[name]/./src/js/search/entry.js"],"names":["module","exports","require","e","r","define","n","t","o","id","loaded","call","m","c","p","__esModule","Object","defineProperty","value","enumerable","get","i","a","placeholderChar","strFunction","previousConformedValue","previousPlaceholder","u","currentCaretPosition","l","s","conformedValue","f","rawValue","d","placeholder","indexesOfPipedChars","v","h","caretTrapIndexes","length","y","g","b","C","P","k","x","O","T","w","M","S","j","toLowerCase","_","V","substr","split","A","filter","indexOf","N","E","F","R","I","map","J","W","q","L","z","B","D","G","H","K","Q","arguments","isArray","Error","processCaretTraps","maskWithoutCaretTraps","guide","convertMaskToPlaceholder","keepCharPositions","Math","abs","slice","isNew","splice","shift","test","meta","someCharsRejected","Symbol","iterator","constructor","prototype","JSON","stringify","RegExp","join","Array","String","isNaN","push","indexes","isString","isNumber","isNil","state","update","inputElement","mask","pipe","showMask","selectionEnd","rejected","document","activeElement","setSelectionRange","assign","hasOwnProperty","navigator","userAgent","requestAnimationFrame","setTimeout","TextField","model","field","attrs","object","type","getValue","oninput","_value","target","events","setValue","error","valid","onchange","toString","_defaultOptions","label","classes","validate","suffix","TextBox","vnode","defaultOptions","options","active","errors","append","prepend","undefined","helper","_options","dom","textMaskInputElement","createTextMaskInputElement","event","querySelector","initTextMask","classNames","handleOptions","hasError","onTextMaskInput","DropDown","onclick","TextArea","resizeHandle","scrollHeight","overflows","getParentOverflows","heightOffset","cachedHeight","docTop","documentElement","scrollTop","style","height","clientWidth","forEach","el","node","styleHeight","round","parseFloat","computed","window","getComputedStyle","actualHeight","boxSizing","offsetHeight","overflowY","ta","arr","parentNode","Element","minHeight","disabled","readonly","resize","MaskField","conformToMask","result","RangeSlider","left","right","rangeWidth","min","max","start","end","_range","_left","_right","offsetWidth","self","interact","draggable","axis","onmove","old","dx","getRangeWidth","redraw","webkitTransform","transform","init","_start","_end","width","direction","toLocaleString","money","check","vendor","opera","Search","request","method","url","BASE_URL","constraints","Conditions","args","houseId","claimValues","claim","query","toUpperCase","filterItems","item","filterIndex","findIndex","data","_data","Liker","SearchForm","show","search","categories","districts","houseStyles","houseTypes","pains","conditions","keyword","range","chosen_distrcts","chosen_categories","chosen_houseStyles","chosen_houseTypes","chosen_pains","chosen_conditions","chosen_item","search_item","stream","fetch","then","responsive","district","category","houseStyle","houseType","pain","console","log","action","name","checked","districtName","display","flex","condition","key","preventDefault","categoriy","$","val","submit","MobileSearchForm","zIndex","background","opacity","padding","isMobile","SearchFormMap","fetchMap","post","trigger","MobileSearchFormMap","css","addClass","removeClass","SearchFormMrt","fetchMrt","MobileSearchFormMrt","fetchList","collapse","RentType","SearchFormList","rentType","chosen_rentType","string","getUrlString","location","href","URL","searchParams","replace","array","string2","array2","index","fontSize","MobileSearchFormList","CliamForm","house","house_id","load","save","alert","backgroundColor","minWidth","selected","houseName","dateCreated","checkAuth","toggleAuth","bind","LikersForm","parseInt","IsAuthenticated","includes","loginUrl","LoginModal","likers","querySelectorAll","root","getElementById","mobile_root","root_map","mobile_root_map","root_mrt","mobile_root_mrt","root_list","mobile_root_list","mount"],"mappings":"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","file":"js/search.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"search\"] = factory();\n\telse\n\t\troot[\"search\"] = factory();\n})(window, function() {\nreturn ","/**\n * interact.js v1.3.4\n *\n * Copyright (c) 2012-2018 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 150) {\n return null;\n }\n\n let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n const overlap = 22.5;\n\n if (angle < 0) {\n angle += 360;\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap;\n const up = 225 - overlap <= angle && angle < 315 + overlap;\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n };\n }\n\n preventDefault () {}\n\n /** */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n\n /** */\n stopPropagation () {\n this.propagationStopped = true;\n }\n}\n\nsignals.on('set-delta', function ({ iEvent, interaction, starting, deltaSource }) {\n const prevEvent = starting? iEvent : interaction.prevEvent;\n\n if (deltaSource === 'client') {\n iEvent.dx = iEvent.clientX - prevEvent.clientX;\n iEvent.dy = iEvent.clientY - prevEvent.clientY;\n }\n else {\n iEvent.dx = iEvent.pageX - prevEvent.pageX;\n iEvent.dy = iEvent.pageY - prevEvent.pageY;\n }\n});\n\nInteractEvent.signals = signals;\n\nmodule.exports = InteractEvent;\n","const clone = require('./utils/clone');\nconst is = require('./utils/is');\nconst events = require('./utils/events');\nconst extend = require('./utils/extend');\nconst actions = require('./actions/base');\nconst scope = require('./scope');\nconst Eventable = require('./Eventable');\nconst defaults = require('./defaultOptions');\nconst signals = require('./utils/Signals').new();\n\nconst {\n getElementRect,\n nodeContains,\n trySelector,\n matchesSelector,\n} = require('./utils/domUtils');\nconst { getWindow } = require('./utils/window');\nconst { contains } = require('./utils/arr');\nconst { wheelEvent } = require('./utils/browser');\n\n// all set interactables\nscope.interactables = [];\n\nclass Interactable {\n /** */\n constructor (target, options) {\n options = options || {};\n\n this.target = target;\n this.events = new Eventable();\n this._context = options.context || scope.document;\n this._win = getWindow(trySelector(target)? this._context : target);\n this._doc = this._win.document;\n\n signals.fire('new', {\n target,\n options,\n interactable: this,\n win: this._win,\n });\n\n scope.addDocument( this._doc, this._win );\n\n scope.interactables.push(this);\n\n this.set(options);\n }\n\n setOnEvents (action, phases) {\n const onAction = 'on' + action;\n\n if (is.function(phases.onstart) ) { this.events[onAction + 'start' ] = phases.onstart ; }\n if (is.function(phases.onmove) ) { this.events[onAction + 'move' ] = phases.onmove ; }\n if (is.function(phases.onend) ) { this.events[onAction + 'end' ] = phases.onend ; }\n if (is.function(phases.oninertiastart)) { this.events[onAction + 'inertiastart' ] = phases.oninertiastart ; }\n\n return this;\n }\n\n setPerAction (action, options) {\n // for all the default per-action options\n for (const option in options) {\n // if this option exists for this action\n if (option in defaults[action]) {\n // if the option in the options arg is an object value\n if (is.object(options[option])) {\n // duplicate the object and merge\n this.options[action][option] = clone(this.options[action][option] || {});\n extend(this.options[action][option], options[option]);\n\n if (is.object(defaults.perAction[option]) && 'enabled' in defaults.perAction[option]) {\n this.options[action][option].enabled = options[option].enabled === false? false : true;\n }\n }\n else if (is.bool(options[option]) && is.object(defaults.perAction[option])) {\n this.options[action][option].enabled = options[option];\n }\n else if (options[option] !== undefined) {\n // or if it's not undefined, do a plain assignment\n this.options[action][option] = options[option];\n }\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */\n getRect (element) {\n element = element || this.target;\n\n if (is.string(this.target) && !(is.element(element))) {\n element = this._context.querySelector(this.target);\n }\n\n return getElementRect(element);\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker (checker) {\n if (is.function(checker)) {\n this.getRect = checker;\n\n return this;\n }\n\n if (checker === null) {\n delete this.options.getRect;\n\n return this;\n }\n\n return this.getRect;\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue;\n\n for (const action of actions.names) {\n this.options[action][optionName] = newValue;\n }\n\n return this;\n }\n\n return this.options[optionName];\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue) {\n return this._backCompatOption('origin', newValue);\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource (newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue;\n\n return this;\n }\n\n return this.options.deltaSource;\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context;\n }\n\n inContext (element) {\n return (this._context === element.ownerDocument\n || nodeContains(this._context, element));\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire (iEvent) {\n this.events.fire(iEvent);\n\n return this;\n }\n\n _onOffMultiple (method, eventType, listener, options) {\n if (is.string(eventType) && eventType.search(' ') !== -1) {\n eventType = eventType.trim().split(/ +/);\n }\n\n if (is.array(eventType)) {\n for (const type of eventType) {\n this[method](type, listener, options);\n }\n\n return true;\n }\n\n if (is.object(eventType)) {\n for (const prop in eventType) {\n this[method](prop, eventType[prop], listener);\n }\n\n return true;\n }\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} eventType The types of events to listen\n * for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] options object or useCapture flag\n * for addEventListener\n * @return {object} This Interactable\n */\n on (eventType, listener, options) {\n if (this._onOffMultiple('on', eventType, listener, options)) {\n return this;\n }\n\n if (eventType === 'wheel') { eventType = wheelEvent; }\n\n if (contains(Interactable.eventTypes, eventType)) {\n this.events.on(eventType, listener);\n }\n // delegated event for selector\n else if (is.string(this.target)) {\n events.addDelegate(this.target, this._context, eventType, listener, options);\n }\n else {\n events.add(this.target, eventType, listener, options);\n }\n\n return this;\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener\n *\n * @param {string | array | object} eventType The types of events that were\n * listened for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {object} This Interactable\n */\n off (eventType, listener, options) {\n if (this._onOffMultiple('off', eventType, listener, options)) {\n return this;\n }\n\n if (eventType === 'wheel') { eventType = wheelEvent; }\n\n // if it is an action event type\n if (contains(Interactable.eventTypes, eventType)) {\n this.events.off(eventType, listener);\n }\n // delegated event\n else if (is.string(this.target)) {\n events.removeDelegate(this.target, this._context, eventType, listener, options);\n }\n // remove listener from this Interatable's element\n else {\n events.remove(this.target, eventType, listener, options);\n }\n\n return this;\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options) {\n if (!is.object(options)) {\n options = {};\n }\n\n this.options = clone(defaults.base);\n\n const perActions = clone(defaults.perAction);\n\n for (const actionName in actions.methodDict) {\n const methodName = actions.methodDict[actionName];\n\n this.options[actionName] = clone(defaults[actionName]);\n\n this.setPerAction(actionName, perActions);\n\n this[methodName](options[actionName]);\n }\n\n for (const setting of Interactable.settingsMethods) {\n this.options[setting] = defaults.base[setting];\n\n if (setting in options) {\n this[setting](options[setting]);\n }\n }\n\n signals.fire('set', {\n options,\n interactable: this,\n });\n\n return this;\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */\n unset () {\n events.remove(this.target, 'all');\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type];\n\n if (delegated.selectors[0] === this.target\n && delegated.contexts[0] === this._context) {\n\n delegated.selectors.splice(0, 1);\n delegated.contexts .splice(0, 1);\n delegated.listeners.splice(0, 1);\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null;\n }\n }\n\n events.remove(this._context, type, events.delegateListener);\n events.remove(this._context, type, events.delegateUseCapture, true);\n }\n }\n else {\n events.remove(this, 'all');\n }\n\n signals.fire('unset', { interactable: this });\n\n scope.interactables.splice(scope.interactables.indexOf(this), 1);\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions || []) {\n if (interaction.target === this && interaction.interacting() && !interaction._ending) {\n interaction.stop();\n }\n }\n\n return scope.interact;\n }\n}\n\nscope.interactables.indexOfElement = function indexOfElement (target, context) {\n context = context || scope.document;\n\n for (let i = 0; i < this.length; i++) {\n const interactable = this[i];\n\n if (interactable.target === target && interactable._context === context) {\n return i;\n }\n }\n return -1;\n};\n\nscope.interactables.get = function interactableGet (element, options, dontCheckInContext) {\n const ret = this[this.indexOfElement(element, options && options.context)];\n\n return ret && (is.string(element) || dontCheckInContext || ret.inContext(element))? ret : null;\n};\n\nscope.interactables.forEachMatch = function (element, callback) {\n for (const interactable of this) {\n let ret;\n\n if ((is.string(interactable.target)\n // target is a selector and the element matches\n ? (is.element(element) && matchesSelector(element, interactable.target))\n // target is the element\n : element === interactable.target)\n // the element is in context\n && (interactable.inContext(element))) {\n ret = callback(interactable);\n }\n\n if (ret !== undefined) {\n return ret;\n }\n }\n};\n\n// all interact.js eventTypes\nInteractable.eventTypes = scope.eventTypes = [];\n\nInteractable.signals = signals;\n\nInteractable.settingsMethods = [ 'deltaSource', 'origin', 'preventDefault', 'rectChecker' ];\n\nmodule.exports = Interactable;\n","const scope = require('./scope');\nconst utils = require('./utils');\nconst events = require('./utils/events');\nconst browser = require('./utils/browser');\nconst domObjects = require('./utils/domObjects');\nconst finder = require('./utils/interactionFinder');\nconst signals = require('./utils/Signals').new();\n\nconst listeners = {};\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer',\n];\n\n// for ignoring browser's simulated mouse events\nlet prevTouchTime = 0;\n\n// all active and idle interactions\nscope.interactions = [];\n\nclass Interaction {\n /** */\n constructor ({ pointerType }) {\n this.target = null; // current interactable being interacted with\n this.element = null; // the target element of the interactable\n\n this.prepared = { // action that's ready to be fired on next move event\n name : null,\n axis : null,\n edges: null,\n };\n\n // keep track of added pointers\n this.pointers = [];\n this.pointerIds = [];\n this.downTargets = [];\n this.downTimes = [];\n\n // Previous native pointer move event coordinates\n this.prevCoords = {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n };\n // current native pointer move event coordinates\n this.curCoords = {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n };\n\n // Starting InteractEvent pointer coordinates\n this.startCoords = {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n };\n\n // Change in coordinates and time of the pointer\n this.pointerDelta = {\n page : { x: 0, y: 0, vx: 0, vy: 0, speed: 0 },\n client : { x: 0, y: 0, vx: 0, vy: 0, speed: 0 },\n timeStamp: 0,\n };\n\n this.downEvent = null; // pointerdown/mousedown/touchstart event\n this.downPointer = {};\n\n this._eventTarget = null;\n this._curEventTarget = null;\n\n this.prevEvent = null; // previous action event\n\n this.pointerIsDown = false;\n this.pointerWasMoved = false;\n this._interacting = false;\n this._ending = false;\n\n this.pointerType = pointerType;\n\n signals.fire('new', this);\n\n scope.interactions.push(this);\n }\n\n pointerDown (pointer, event, eventTarget) {\n const pointerIndex = this.updatePointer(pointer, event, true);\n\n signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\n });\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction;\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget);\n * }\n * });\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n start (action, target, element) {\n if (this.interacting()\n || !this.pointerIsDown\n || this.pointerIds.length < (action.name === 'gesture'? 2 : 1)) {\n return;\n }\n\n // if this interaction had been removed after stopping\n // add it back\n if (scope.interactions.indexOf(this) === -1) {\n scope.interactions.push(this);\n }\n\n utils.copyAction(this.prepared, action);\n this.target = target;\n this.element = element;\n\n signals.fire('action-start', {\n interaction: this,\n event: this.downEvent,\n });\n }\n\n pointerMove (pointer, event, eventTarget) {\n if (!this.simulation) {\n this.updatePointer(pointer);\n utils.setCoords(this.curCoords, this.pointers);\n }\n\n const duplicateMove = (this.curCoords.page.x === this.prevCoords.page.x\n && this.curCoords.page.y === this.prevCoords.page.y\n && this.curCoords.client.x === this.prevCoords.client.x\n && this.curCoords.client.y === this.prevCoords.client.y);\n\n let dx;\n let dy;\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.curCoords.client.x - this.startCoords.client.x;\n dy = this.curCoords.client.y - this.startCoords.client.y;\n\n this.pointerWasMoved = utils.hypot(dx, dy) > Interaction.pointerMoveTolerance;\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n interactingBeforeMove: this.interacting(),\n };\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and speeds\n utils.setCoordDeltas(this.pointerDelta, this.prevCoords, this.curCoords);\n }\n\n signals.fire('move', signalArg);\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.doMove(signalArg);\n }\n\n if (this.pointerWasMoved) {\n utils.copyCoords(this.prevCoords, this.curCoords);\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }});\n * // fire another move event with re-calculated snap\n * event.interaction.doMove();\n * }\n * });\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n doMove (signalArg) {\n signalArg = utils.extend({\n pointer: this.pointers[0],\n event: this.prevEvent,\n eventTarget: this._eventTarget,\n interaction: this,\n }, signalArg || {});\n\n signals.fire('before-action-move', signalArg);\n\n if (!this._dontFireMove) {\n signals.fire('action-move', signalArg);\n }\n\n this._dontFireMove = false;\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer, event, eventTarget, curEventTarget) {\n const pointerIndex = this.getPointerIndex(pointer);\n\n signals.fire(/cancel$/i.test(event.type)? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n });\n\n if (!this.simulation) {\n this.end(event);\n }\n\n this.pointerIsDown = false;\n this.removePointer(pointer, event);\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end();\n * // stop all further listeners from being called\n * event.stopImmediatePropagation();\n * }\n * });\n * ```\n *\n * Stop the current action and fire an end event. Inertial movement does\n * not happen.\n *\n * @param {PointerEvent} [event]\n */\n end (event) {\n this._ending = true;\n\n event = event || this.prevEvent;\n\n if (this.interacting()) {\n signals.fire('action-end', {\n event,\n interaction: this,\n });\n }\n\n this.stop();\n this._ending = false;\n }\n\n currentAction () {\n return this._interacting? this.prepared.name: null;\n }\n\n interacting () {\n return this._interacting;\n }\n\n /** */\n stop () {\n signals.fire('stop', { interaction: this });\n\n if (this._interacting) {\n signals.fire('stop-active', { interaction: this });\n signals.fire('stop-' + this.prepared.name, { interaction: this });\n }\n\n this.target = this.element = null;\n\n this._interacting = false;\n this.prepared.name = this.prevEvent = null;\n }\n\n getPointerIndex (pointer) {\n // mouse and pen interactions may have only one pointer\n if (this.pointerType === 'mouse' || this.pointerType === 'pen') {\n return 0;\n }\n\n return this.pointerIds.indexOf(utils.getPointerId(pointer));\n }\n\n updatePointer (pointer, event, down = event && /(down|start)$/i.test(event.type)) {\n const id = utils.getPointerId(pointer);\n let index = this.getPointerIndex(pointer);\n\n if (index === -1) {\n index = this.pointerIds.length;\n this.pointerIds[index] = id;\n }\n\n if (down) {\n signals.fire('update-pointer-down', {\n pointer,\n event,\n down,\n pointerId: id,\n pointerIndex: index,\n interaction: this,\n });\n }\n\n this.pointers[index] = pointer;\n\n return index;\n }\n\n removePointer (pointer, event) {\n const index = this.getPointerIndex(pointer);\n\n if (index === -1) { return; }\n\n signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex: index,\n interaction: this,\n });\n\n this.pointers .splice(index, 1);\n this.pointerIds .splice(index, 1);\n this.downTargets.splice(index, 1);\n this.downTimes .splice(index, 1);\n }\n\n _updateEventTargets (target, currentTarget) {\n this._eventTarget = target;\n this._curEventTarget = currentTarget;\n }\n}\n\nfor (const method of methodNames) {\n listeners[method] = doOnInteractions(method);\n}\n\nfunction doOnInteractions (method) {\n return (function (event) {\n const pointerType = utils.getPointerType(event);\n const [eventTarget, curEventTarget] = utils.getEventTargets(event);\n const matches = []; // [ [pointer, interaction], ...]\n\n if (browser.supportsTouch && /touch/.test(event.type)) {\n prevTouchTime = new Date().getTime();\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch;\n const interaction = finder.search(pointer, event.type, eventTarget);\n\n matches.push([pointer, interaction || new Interaction({ pointerType })]);\n }\n }\n else {\n let invalidPointer = false;\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < scope.interactions.length && !invalidPointer; i++) {\n invalidPointer = scope.interactions[i].pointerType !== 'mouse' && scope.interactions[i].pointerIsDown;\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer = invalidPointer\n || (new Date().getTime() - prevTouchTime < 500)\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n || event.timeStamp === 0;\n }\n\n if (!invalidPointer) {\n let interaction = finder.search(event, event.type, eventTarget);\n\n if (!interaction) {\n interaction = new Interaction({ pointerType });\n }\n\n matches.push([event, interaction]);\n }\n }\n\n for (const [pointer, interaction] of matches) {\n interaction._updateEventTargets(eventTarget, curEventTarget);\n interaction[method](pointer, event, eventTarget, curEventTarget);\n }\n });\n}\n\nfunction endAll (event) {\n for (const interaction of scope.interactions) {\n interaction.end(event);\n signals.fire('endall', { event, interaction });\n }\n}\n\nconst docEvents = { /* 'eventType': listenerFunc */ };\nconst pEventTypes = browser.pEventTypes;\n\nif (domObjects.PointerEvent) {\n docEvents[pEventTypes.down ] = listeners.pointerDown;\n docEvents[pEventTypes.move ] = listeners.pointerMove;\n docEvents[pEventTypes.up ] = listeners.pointerUp;\n docEvents[pEventTypes.cancel] = listeners.pointerUp;\n}\nelse {\n docEvents.mousedown = listeners.pointerDown;\n docEvents.mousemove = listeners.pointerMove;\n docEvents.mouseup = listeners.pointerUp;\n\n docEvents.touchstart = listeners.pointerDown;\n docEvents.touchmove = listeners.pointerMove;\n docEvents.touchend = listeners.pointerUp;\n docEvents.touchcancel = listeners.pointerUp;\n}\n\ndocEvents.blur = endAll;\n\nfunction onDocSignal ({ doc }, signalName) {\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove;\n\n // delegate event listener\n for (const eventType in scope.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener);\n eventMethod(doc, eventType, events.delegateUseCapture, true);\n }\n\n for (const eventType in docEvents) {\n eventMethod(doc, eventType, docEvents[eventType], browser.isIOS ? { passive: false } : undefined);\n }\n}\n\nsignals.on('update-pointer-down', ({ interaction, pointer, pointerId, pointerIndex, event, eventTarget, down }) => {\n interaction.pointerIds[pointerIndex] = pointerId;\n interaction.pointers[pointerIndex] = pointer;\n\n if (down) {\n interaction.pointerIsDown = true;\n }\n\n if (!interaction.interacting()) {\n utils.setCoords(interaction.startCoords, interaction.pointers);\n\n utils.copyCoords(interaction.curCoords , interaction.startCoords);\n utils.copyCoords(interaction.prevCoords, interaction.startCoords);\n\n interaction.downEvent = event;\n interaction.downTimes[pointerIndex] = interaction.curCoords.timeStamp;\n interaction.downTargets[pointerIndex] = eventTarget || event && utils.getEventTargets(event)[0];\n interaction.pointerWasMoved = false;\n\n utils.pointerExtend(interaction.downPointer, pointer);\n }\n});\n\nscope.signals.on('add-document' , onDocSignal);\nscope.signals.on('remove-document', onDocSignal);\n\nInteraction.pointerMoveTolerance = 1;\nInteraction.doOnInteractions = doOnInteractions;\nInteraction.endAll = endAll;\nInteraction.signals = signals;\nInteraction.docEvents = docEvents;\n\nscope.endAllInteractions = endAll;\n\nmodule.exports = Interaction;\n","const Interaction = require('../Interaction');\nconst InteractEvent = require('../InteractEvent');\n\nconst actions = {\n firePrepared,\n names: [],\n methodDict: {},\n};\n\nInteraction.signals.on('action-start', function ({ interaction, event }) {\n interaction._interacting = true;\n firePrepared(interaction, event, 'start');\n});\n\nInteraction.signals.on('action-move', function ({ interaction, event, preEnd }) {\n firePrepared(interaction, event, 'move', preEnd);\n\n // if the action was ended in a listener\n if (!interaction.interacting()) { return false; }\n});\n\nInteraction.signals.on('action-end', function ({ interaction, event }) {\n firePrepared(interaction, event, 'end');\n});\n\nfunction firePrepared (interaction, event, phase, preEnd) {\n const actionName = interaction.prepared.name;\n\n const newEvent = new InteractEvent(interaction, event, actionName, phase, interaction.element, null, preEnd);\n\n interaction.target.fire(newEvent);\n interaction.prevEvent = newEvent;\n}\n\nmodule.exports = actions;\n","const actions = require('./base');\nconst utils = require('../utils');\nconst InteractEvent = require('../InteractEvent');\n/** @lends Interactable */\nconst Interactable = require('../Interactable');\nconst Interaction = require('../Interaction');\nconst defaultOptions = require('../defaultOptions');\n\nconst drag = {\n defaults: {\n enabled : false,\n mouseButtons: null,\n\n origin : null,\n snap : null,\n restrict : null,\n inertia : null,\n autoScroll: null,\n\n startAxis : 'xy',\n lockAxis : 'xy',\n },\n\n checker: function (pointer, event, interactable) {\n const dragOptions = interactable.options.drag;\n\n return dragOptions.enabled\n ? { name: 'drag', axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis)}\n : null;\n },\n\n getCursor: function () {\n return 'move';\n },\n};\n\nInteraction.signals.on('before-action-move', function ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return; }\n\n const axis = interaction.prepared.axis;\n\n if (axis === 'x') {\n interaction.curCoords.page.y = interaction.startCoords.page.y;\n interaction.curCoords.client.y = interaction.startCoords.client.y;\n\n interaction.pointerDelta.page.speed = Math.abs(interaction.pointerDelta.page.vx);\n interaction.pointerDelta.client.speed = Math.abs(interaction.pointerDelta.client.vx);\n interaction.pointerDelta.client.vy = 0;\n interaction.pointerDelta.page.vy = 0;\n }\n else if (axis === 'y') {\n interaction.curCoords.page.x = interaction.startCoords.page.x;\n interaction.curCoords.client.x = interaction.startCoords.client.x;\n\n interaction.pointerDelta.page.speed = Math.abs(interaction.pointerDelta.page.vy);\n interaction.pointerDelta.client.speed = Math.abs(interaction.pointerDelta.client.vy);\n interaction.pointerDelta.client.vx = 0;\n interaction.pointerDelta.page.vx = 0;\n }\n});\n\n// dragmove\nInteractEvent.signals.on('new', function ({ iEvent, interaction }) {\n if (iEvent.type !== 'dragmove') { return; }\n\n const axis = interaction.prepared.axis;\n\n if (axis === 'x') {\n iEvent.pageY = interaction.startCoords.page.y;\n iEvent.clientY = interaction.startCoords.client.y;\n iEvent.dy = 0;\n }\n else if (axis === 'y') {\n iEvent.pageX = interaction.startCoords.page.x;\n iEvent.clientX = interaction.startCoords.client.x;\n iEvent.dx = 0;\n }\n});\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * });\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nInteractable.prototype.draggable = function (options) {\n if (utils.is.object(options)) {\n this.options.drag.enabled = options.enabled === false? false: true;\n this.setPerAction('drag', options);\n this.setOnEvents('drag', options);\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis;\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis;\n }\n\n return this;\n }\n\n if (utils.is.bool(options)) {\n this.options.drag.enabled = options;\n\n if (!options) {\n this.ondragstart = this.ondragstart = this.ondragend = null;\n }\n\n return this;\n }\n\n return this.options.drag;\n};\n\nactions.drag = drag;\nactions.names.push('drag');\nutils.merge(Interactable.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'draginertiaresume',\n 'dragend',\n]);\nactions.methodDict.drag = 'draggable';\n\ndefaultOptions.drag = drag.defaults;\n\nmodule.exports = drag;\n","const actions = require('./base');\nconst utils = require('../utils');\nconst scope = require('../scope');\n/** @lends module:interact */\nconst interact = require('../interact');\nconst InteractEvent = require('../InteractEvent');\n/** @lends Interactable */\nconst Interactable = require('../Interactable');\nconst Interaction = require('../Interaction');\nconst defaultOptions = require('../defaultOptions');\n\nconst drop = {\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n },\n};\n\nlet dynamicDrop = false;\n\nInteraction.signals.on('action-start', function ({ interaction, event }) {\n if (interaction.prepared.name !== 'drag') { return; }\n\n // reset active dropzones\n interaction.activeDrops.dropzones = [];\n interaction.activeDrops.elements = [];\n interaction.activeDrops.rects = [];\n\n interaction.dropEvents = null;\n\n if (!interaction.dynamicDrop) {\n setActiveDrops(interaction.activeDrops, interaction.element);\n }\n\n const dragEvent = interaction.prevEvent;\n const dropEvents = getDropEvents(interaction, event, dragEvent);\n\n if (dropEvents.activate) {\n fireActiveDrops(interaction.activeDrops, dropEvents.activate);\n }\n});\n\nInteractEvent.signals.on('new', function ({ interaction, iEvent, event }) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return; }\n\n const draggableElement = interaction.element;\n const dragEvent = iEvent;\n const dropResult = getDrop(dragEvent, event, draggableElement);\n\n interaction.dropTarget = dropResult.dropzone;\n interaction.dropElement = dropResult.element;\n\n interaction.dropEvents = getDropEvents(interaction, event, dragEvent);\n});\n\nInteraction.signals.on('action-move', function ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return; }\n\n fireDropEvents(interaction, interaction.dropEvents);\n});\n\nInteraction.signals.on('action-end', function ({ interaction }) {\n if (interaction.prepared.name === 'drag') {\n fireDropEvents(interaction, interaction.dropEvents);\n }\n});\n\nInteraction.signals.on('stop-drag', function ({ interaction }) {\n interaction.activeDrops = {\n dropzones: null,\n elements: null,\n rects: null,\n };\n\n interaction.dropEvents = null;\n});\n\nfunction collectDrops (activeDrops, element) {\n const drops = [];\n const elements = [];\n\n // collect all dropzones and their elements which qualify for a drop\n for (const current of scope.interactables) {\n if (!current.options.drop.enabled) { continue; }\n\n const accept = current.options.drop.accept;\n\n // test the draggable element against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== element)\n || (utils.is.string(accept)\n && !utils.matchesSelector(element, accept))) {\n\n continue;\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(current.target)\n ? current._context.querySelectorAll(current.target)\n : [current.target];\n\n for (const currentElement of dropElements) {\n if (currentElement !== element) {\n drops.push(current);\n elements.push(currentElement);\n }\n }\n }\n\n return {\n elements,\n dropzones: drops,\n };\n}\n\nfunction fireActiveDrops (activeDrops, event) {\n let prevElement;\n\n // loop through all active dropzones and trigger event\n for (let i = 0; i < activeDrops.dropzones.length; i++) {\n const current = activeDrops.dropzones[i];\n const currentElement = activeDrops.elements [i];\n\n // prevent trigger of duplicate events on same element\n if (currentElement !== prevElement) {\n // set current element as event target\n event.target = currentElement;\n current.fire(event);\n }\n prevElement = currentElement;\n }\n}\n\n// Collect a new set of possible drops and save them in activeDrops.\n// setActiveDrops should always be called when a drag has just started or a\n// drag event happens while dynamicDrop is true\nfunction setActiveDrops (activeDrops, dragElement) {\n // get dropzones and their elements that could receive the draggable\n const possibleDrops = collectDrops(activeDrops, dragElement);\n\n activeDrops.dropzones = possibleDrops.dropzones;\n activeDrops.elements = possibleDrops.elements;\n activeDrops.rects = [];\n\n for (let i = 0; i < activeDrops.dropzones.length; i++) {\n activeDrops.rects[i] = activeDrops.dropzones[i].getRect(activeDrops.elements[i]);\n }\n}\n\nfunction getDrop (dragEvent, event, dragElement) {\n const interaction = dragEvent.interaction;\n const validDrops = [];\n\n if (dynamicDrop) {\n setActiveDrops(interaction.activeDrops, dragElement);\n }\n\n // collect all dropzones and their elements which qualify for a drop\n for (let j = 0; j < interaction.activeDrops.dropzones.length; j++) {\n const current = interaction.activeDrops.dropzones[j];\n const currentElement = interaction.activeDrops.elements [j];\n const rect = interaction.activeDrops.rects [j];\n\n validDrops.push(current.dropCheck(dragEvent, event, interaction.target, dragElement, currentElement, rect)\n ? currentElement\n : null);\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.indexOfDeepestElement(validDrops);\n\n return {\n dropzone: interaction.activeDrops.dropzones[dropIndex] || null,\n element : interaction.activeDrops.elements [dropIndex] || null,\n };\n}\n\nfunction getDropEvents (interaction, pointerEvent, dragEvent) {\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n };\n\n const tmpl = {\n dragEvent,\n interaction,\n target : interaction.dropElement,\n dropzone : interaction.dropTarget,\n relatedTarget: dragEvent.target,\n draggable : dragEvent.interactable,\n timeStamp : dragEvent.timeStamp,\n };\n\n if (interaction.dropElement !== interaction.prevDropElement) {\n // if there was a prevDropTarget, create a dragleave event\n if (interaction.prevDropTarget) {\n dropEvents.leave = utils.extend({ type: 'dragleave' }, tmpl);\n\n dragEvent.dragLeave = dropEvents.leave.target = interaction.prevDropElement;\n dragEvent.prevDropzone = dropEvents.leave.dropzone = interaction.prevDropTarget;\n }\n // if the dropTarget is not null, create a dragenter event\n if (interaction.dropTarget) {\n dropEvents.enter = {\n dragEvent,\n interaction,\n target : interaction.dropElement,\n dropzone : interaction.dropTarget,\n relatedTarget: dragEvent.target,\n draggable : dragEvent.interactable,\n timeStamp : dragEvent.timeStamp,\n type : 'dragenter',\n };\n\n dragEvent.dragEnter = interaction.dropElement;\n dragEvent.dropzone = interaction.dropTarget;\n }\n }\n\n if (dragEvent.type === 'dragend' && interaction.dropTarget) {\n dropEvents.drop = utils.extend({ type: 'drop' }, tmpl);\n\n dragEvent.dropzone = interaction.dropTarget;\n dragEvent.relatedTarget = interaction.dropElement;\n }\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = utils.extend({ type: 'dropactivate' }, tmpl);\n\n dropEvents.activate.target = null;\n dropEvents.activate.dropzone = null;\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = utils.extend({ type: 'dropdeactivate' }, tmpl);\n\n dropEvents.deactivate.target = null;\n dropEvents.deactivate.dropzone = null;\n }\n if (dragEvent.type === 'dragmove' && interaction.dropTarget) {\n dropEvents.move = utils.extend({\n dragmove : dragEvent,\n type : 'dropmove',\n }, tmpl);\n\n dragEvent.dropzone = interaction.dropTarget;\n }\n\n return dropEvents;\n}\n\nfunction fireDropEvents (interaction, dropEvents) {\n const {\n activeDrops,\n prevDropTarget,\n dropTarget,\n dropElement,\n } = interaction;\n\n if (dropEvents.leave) { prevDropTarget.fire(dropEvents.leave); }\n if (dropEvents.move ) { dropTarget.fire(dropEvents.move ); }\n if (dropEvents.enter) { dropTarget.fire(dropEvents.enter); }\n if (dropEvents.drop ) { dropTarget.fire(dropEvents.drop ); }\n if (dropEvents.deactivate) {\n fireActiveDrops(activeDrops, dropEvents.deactivate);\n }\n\n interaction.prevDropTarget = dropTarget;\n interaction.prevDropElement = dropElement;\n}\n\n/**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop');\n * }\n * ```\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\nInteractable.prototype.dropzone = function (options) {\n if (utils.is.object(options)) {\n this.options.drop.enabled = options.enabled === false? false: true;\n\n if (utils.is.function(options.ondrop) ) { this.events.ondrop = options.ondrop ; }\n if (utils.is.function(options.ondropactivate) ) { this.events.ondropactivate = options.ondropactivate ; }\n if (utils.is.function(options.ondropdeactivate)) { this.events.ondropdeactivate = options.ondropdeactivate; }\n if (utils.is.function(options.ondragenter) ) { this.events.ondragenter = options.ondragenter ; }\n if (utils.is.function(options.ondragleave) ) { this.events.ondragleave = options.ondragleave ; }\n if (utils.is.function(options.ondropmove) ) { this.events.ondropmove = options.ondropmove ; }\n\n if (/^(pointer|center)$/.test(options.overlap)) {\n this.options.drop.overlap = options.overlap;\n }\n else if (utils.is.number(options.overlap)) {\n this.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0);\n }\n if ('accept' in options) {\n this.options.drop.accept = options.accept;\n }\n if ('checker' in options) {\n this.options.drop.checker = options.checker;\n }\n\n\n return this;\n }\n\n if (utils.is.bool(options)) {\n this.options.drop.enabled = options;\n\n if (!options) {\n this.ondragenter = this.ondragleave = this.ondrop\n = this.ondropactivate = this.ondropdeactivate = null;\n }\n\n return this;\n }\n\n return this.options.drop;\n};\n\nInteractable.prototype.dropCheck = function (dragEvent, event, draggable, draggableElement, dropElement, rect) {\n let dropped = false;\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || this.getRect(dropElement))) {\n return (this.options.drop.checker\n ? this.options.drop.checker(dragEvent, event, dropped, this, dropElement, draggable, draggableElement)\n : false);\n }\n\n const dropOverlap = this.options.drop.overlap;\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag');\n const page = utils.getPageXY(dragEvent);\n\n page.x += origin.x;\n page.y += origin.y;\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right);\n const vertical = (page.y > rect.top ) && (page.y < rect.bottom);\n\n dropped = horizontal && vertical;\n }\n\n const dragRect = draggable.getRect(draggableElement);\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2;\n const cy = dragRect.top + dragRect.height / 2;\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom;\n }\n\n if (dragRect && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right , dragRect.right ) - Math.max(rect.left, dragRect.left))\n * Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top , dragRect.top )));\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height);\n\n dropped = overlapRatio >= dropOverlap;\n }\n\n if (this.options.drop.checker) {\n dropped = this.options.drop.checker(dragEvent, event, dropped, this, dropElement, draggable, draggableElement);\n }\n\n return dropped;\n};\n\nInteractable.signals.on('unset', function ({ interactable }) {\n interactable.dropzone(false);\n});\n\nInteractable.settingsMethods.push('dropChecker');\n\nInteraction.signals.on('new', function (interaction) {\n interaction.dropTarget = null; // the dropzone a drag target might be dropped into\n interaction.dropElement = null; // the element at the time of checking\n interaction.prevDropTarget = null; // the dropzone that was recently dragged away from\n interaction.prevDropElement = null; // the element at the time of checking\n interaction.dropEvents = null; // the dropEvents related to the current drag event\n\n interaction.activeDrops = {\n dropzones: [], // the dropzones that are mentioned below\n elements : [], // elements of dropzones that accept the target draggable\n rects : [], // the rects of the elements mentioned above\n };\n\n});\n\nInteraction.signals.on('stop', function ({ interaction }) {\n interaction.dropTarget = interaction.dropElement =\n interaction.prevDropTarget = interaction.prevDropElement = null;\n});\n\n/**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\ninteract.dynamicDrop = function (newValue) {\n if (utils.is.bool(newValue)) {\n //if (dragging && dynamicDrop !== newValue && !newValue) {\n //calcRects(dropzones);\n //}\n\n dynamicDrop = newValue;\n\n return interact;\n }\n return dynamicDrop;\n};\n\nutils.merge(Interactable.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n]);\nactions.methodDict.drop = 'dropzone';\n\ndefaultOptions.drop = drop.defaults;\n\nmodule.exports = drop;\n","const actions = require('./base');\nconst utils = require('../utils');\nconst InteractEvent = require('../InteractEvent');\nconst Interactable = require('../Interactable');\nconst Interaction = require('../Interaction');\nconst defaultOptions = require('../defaultOptions');\n\nconst gesture = {\n defaults: {\n enabled : false,\n origin : null,\n restrict: null,\n },\n\n checker: function (pointer, event, interactable, element, interaction) {\n if (interaction.pointerIds.length >= 2) {\n return { name: 'gesture' };\n }\n\n return null;\n },\n\n getCursor: function () {\n return '';\n },\n};\n\nInteractEvent.signals.on('new', function ({ iEvent, interaction }) {\n if (iEvent.type !== 'gesturestart') { return; }\n iEvent.ds = 0;\n\n interaction.gesture.startDistance = interaction.gesture.prevDistance = iEvent.distance;\n interaction.gesture.startAngle = interaction.gesture.prevAngle = iEvent.angle;\n interaction.gesture.scale = 1;\n});\n\nInteractEvent.signals.on('new', function ({ iEvent, interaction }) {\n if (iEvent.type !== 'gesturemove') { return; }\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale;\n\n interaction.target.fire(iEvent);\n\n interaction.gesture.prevAngle = iEvent.angle;\n interaction.gesture.prevDistance = iEvent.distance;\n\n if (iEvent.scale !== Infinity\n && iEvent.scale !== null\n && iEvent.scale !== undefined\n && !isNaN(iEvent.scale)) {\n\n interaction.gesture.scale = iEvent.scale;\n }\n});\n\n/**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * });\n *\n * var isGestureable = interact(element).gesturable();\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\nInteractable.prototype.gesturable = function (options) {\n if (utils.is.object(options)) {\n this.options.gesture.enabled = options.enabled === false? false: true;\n this.setPerAction('gesture', options);\n this.setOnEvents('gesture', options);\n\n return this;\n }\n\n if (utils.is.bool(options)) {\n this.options.gesture.enabled = options;\n\n if (!options) {\n this.ongesturestart = this.ongesturestart = this.ongestureend = null;\n }\n\n return this;\n }\n\n return this.options.gesture;\n};\n\nInteractEvent.signals.on('set-delta', function ({ interaction, iEvent, action, event, starting, ending, deltaSource }) {\n if (action !== 'gesture') { return; }\n\n const pointers = interaction.pointers;\n\n iEvent.touches = [pointers[0], pointers[1]];\n\n if (starting) {\n iEvent.distance = utils.touchDistance(pointers, deltaSource);\n iEvent.box = utils.touchBBox(pointers);\n iEvent.scale = 1;\n iEvent.ds = 0;\n iEvent.angle = utils.touchAngle(pointers, undefined, deltaSource);\n iEvent.da = 0;\n }\n else if (ending || event instanceof InteractEvent) {\n iEvent.distance = interaction.prevEvent.distance;\n iEvent.box = interaction.prevEvent.box;\n iEvent.scale = interaction.prevEvent.scale;\n iEvent.ds = iEvent.scale - 1;\n iEvent.angle = interaction.prevEvent.angle;\n iEvent.da = iEvent.angle - interaction.gesture.startAngle;\n }\n else {\n iEvent.distance = utils.touchDistance(pointers, deltaSource);\n iEvent.box = utils.touchBBox(pointers);\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance;\n iEvent.angle = utils.touchAngle(pointers, interaction.gesture.prevAngle, deltaSource);\n\n iEvent.ds = iEvent.scale - interaction.gesture.prevScale;\n iEvent.da = iEvent.angle - interaction.gesture.prevAngle;\n }\n});\n\nInteraction.signals.on('new', function (interaction) {\n interaction.gesture = {\n start: { x: 0, y: 0 },\n\n startDistance: 0, // distance between two touches of touchStart\n prevDistance : 0,\n distance : 0,\n\n scale: 1, // gesture.distance / gesture.startDistance\n\n startAngle: 0, // angle of line joining two touches\n prevAngle : 0, // angle of the previous gesture event\n };\n});\n\nactions.gesture = gesture;\nactions.names.push('gesture');\nutils.merge(Interactable.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n]);\nactions.methodDict.gesture = 'gesturable';\n\ndefaultOptions.gesture = gesture.defaults;\n\nmodule.exports = gesture;\n","const actions = require('./base');\nconst utils = require('../utils');\nconst browser = require('../utils/browser');\nconst InteractEvent = require('../InteractEvent');\n/** @lends Interactable */\nconst Interactable = require('../Interactable');\nconst Interaction = require('../Interaction');\nconst defaultOptions = require('../defaultOptions');\n\n// Less Precision with touch input\nconst defaultMargin = browser.supportsTouch || browser.supportsPointerEvent? 20: 10;\n\nconst resize = {\n defaults: {\n enabled : false,\n mouseButtons: null,\n\n origin : null,\n snap : null,\n restrict : null,\n inertia : null,\n autoScroll: null,\n\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n },\n\n checker: function (pointer, event, interactable, element, interaction, rect) {\n if (!rect) { return null; }\n\n const page = utils.extend({}, interaction.curCoords.page);\n const options = interactable.options;\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize;\n const resizeEdges = { left: false, right: false, top: false, bottom: false };\n\n // if using resize.edges\n if (utils.is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._eventTarget,\n element,\n rect,\n resizeOptions.margin || defaultMargin);\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n return {\n name: 'resize',\n edges: resizeEdges,\n };\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - defaultMargin);\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - defaultMargin);\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right? 'x' : '') + (bottom? 'y' : ''),\n };\n }\n }\n }\n\n return null;\n },\n\n cursors: (browser.isIe9 ? {\n x : 'e-resize',\n y : 's-resize',\n xy: 'se-resize',\n\n top : 'n-resize',\n left : 'w-resize',\n bottom : 's-resize',\n right : 'e-resize',\n topleft : 'se-resize',\n bottomright: 'se-resize',\n topright : 'ne-resize',\n bottomleft : 'ne-resize',\n } : {\n x : 'ew-resize',\n y : 'ns-resize',\n xy: 'nwse-resize',\n\n top : 'ns-resize',\n left : 'ew-resize',\n bottom : 'ns-resize',\n right : 'ew-resize',\n topleft : 'nwse-resize',\n bottomright: 'nwse-resize',\n topright : 'nesw-resize',\n bottomleft : 'nesw-resize',\n }),\n\n getCursor: function (action) {\n if (action.axis) {\n return resize.cursors[action.name + action.axis];\n }\n else if (action.edges) {\n let cursorKey = '';\n const edgeNames = ['top', 'bottom', 'left', 'right'];\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i];\n }\n }\n\n return resize.cursors[cursorKey];\n }\n },\n};\n\n// resizestart\nInteractEvent.signals.on('new', function ({ iEvent, interaction }) {\n if (iEvent.type !== 'resizestart' || !interaction.prepared.edges) {\n return;\n }\n\n const startRect = interaction.target.getRect(interaction.element);\n const resizeOptions = interaction.target.options.resize;\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = utils.extend({}, interaction.prepared.edges);\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom);\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right );\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top );\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left );\n\n interaction.prepared._linkedEdges = linkedEdges;\n }\n else {\n interaction.prepared._linkedEdges = null;\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height;\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : utils.extend({}, startRect),\n inverted : utils.extend({}, startRect),\n previous : utils.extend({}, startRect),\n delta : {\n left: 0, right : 0, width : 0,\n top : 0, bottom: 0, height: 0,\n },\n };\n\n iEvent.rect = interaction.resizeRects.inverted;\n iEvent.deltaRect = interaction.resizeRects.delta;\n});\n\n// resizemove\nInteractEvent.signals.on('new', function ({ iEvent, phase, interaction }) {\n if (phase !== 'move' || !interaction.prepared.edges) { return; }\n\n const resizeOptions = interaction.target.options.resize;\n const invert = resizeOptions.invert;\n const invertible = invert === 'reposition' || invert === 'negate';\n\n let edges = interaction.prepared.edges;\n\n const start = interaction.resizeRects.start;\n const current = interaction.resizeRects.current;\n const inverted = interaction.resizeRects.inverted;\n const delta = interaction.resizeRects.delta;\n const previous = utils.extend(interaction.resizeRects.previous, inverted);\n const originalEdges = edges;\n\n let dx = iEvent.dx;\n let dy = iEvent.dy;\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1;\n\n edges = interaction.prepared._linkedEdges;\n\n if ((originalEdges.left && originalEdges.bottom)\n || (originalEdges.right && originalEdges.top)) {\n dy = -dx / startAspectRatio;\n }\n else if (originalEdges.left || originalEdges.right ) { dy = dx / startAspectRatio; }\n else if (originalEdges.top || originalEdges.bottom) { dx = dy * startAspectRatio; }\n }\n\n // update the 'current' rect without modifications\n if (edges.top ) { current.top += dy; }\n if (edges.bottom) { current.bottom += dy; }\n if (edges.left ) { current.left += dx; }\n if (edges.right ) { current.right += dx; }\n\n if (invertible) {\n // if invertible, copy the current rect\n utils.extend(inverted, current);\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap;\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top;\n\n inverted.top = inverted.bottom;\n inverted.bottom = swap;\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left;\n\n inverted.left = inverted.right;\n inverted.right = swap;\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom);\n inverted.bottom = Math.max(current.bottom, start.top);\n inverted.left = Math.min(current.left, start.right);\n inverted.right = Math.max(current.right, start.left);\n }\n\n inverted.width = inverted.right - inverted.left;\n inverted.height = inverted.bottom - inverted.top ;\n\n for (const edge in inverted) {\n delta[edge] = inverted[edge] - previous[edge];\n }\n\n iEvent.edges = interaction.prepared.edges;\n iEvent.rect = inverted;\n iEvent.deltaRect = delta;\n});\n\n/**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * });\n *\n * var isResizeable = interact(element).resizable();\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\nInteractable.prototype.resizable = function (options) {\n if (utils.is.object(options)) {\n this.options.resize.enabled = options.enabled === false? false: true;\n this.setPerAction('resize', options);\n this.setOnEvents('resize', options);\n\n if (/^x$|^y$|^xy$/.test(options.axis)) {\n this.options.resize.axis = options.axis;\n }\n else if (options.axis === null) {\n this.options.resize.axis = defaultOptions.resize.axis;\n }\n\n if (utils.is.bool(options.preserveAspectRatio)) {\n this.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n }\n else if (utils.is.bool(options.square)) {\n this.options.resize.square = options.square;\n }\n\n return this;\n }\n if (utils.is.bool(options)) {\n this.options.resize.enabled = options;\n\n if (!options) {\n this.onresizestart = this.onresizestart = this.onresizeend = null;\n }\n\n return this;\n }\n return this.options.resize;\n};\n\nfunction checkResizeEdge (name, value, page, element, interactableElement, rect, margin) {\n // false, '', undefined, null\n if (!value) { return false; }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = utils.is.number(rect.width )? rect.width : rect.right - rect.left;\n const height = utils.is.number(rect.height)? rect.height : rect.bottom - rect.top ;\n\n if (width < 0) {\n if (name === 'left' ) { name = 'right'; }\n else if (name === 'right') { name = 'left' ; }\n }\n if (height < 0) {\n if (name === 'top' ) { name = 'bottom'; }\n else if (name === 'bottom') { name = 'top' ; }\n }\n\n if (name === 'left' ) { return page.x < ((width >= 0? rect.left: rect.right ) + margin); }\n if (name === 'top' ) { return page.y < ((height >= 0? rect.top : rect.bottom) + margin); }\n\n if (name === 'right' ) { return page.x > ((width >= 0? rect.right : rect.left) - margin); }\n if (name === 'bottom') { return page.y > ((height >= 0? rect.bottom: rect.top ) - margin); }\n }\n\n // the remaining checks require an element\n if (!utils.is.element(element)) { return false; }\n\n return utils.is.element(value)\n // the value is an element to use as a resize handle\n ? value === element\n // otherwise check if element matches value as selector\n : utils.matchesUpTo(element, value, interactableElement);\n}\n\nInteraction.signals.on('new', function (interaction) {\n interaction.resizeAxes = 'xy';\n});\n\nInteractEvent.signals.on('set-delta', function ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return; }\n\n const options = interaction.target.options;\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.dx = iEvent.dy;\n }\n else {\n iEvent.dy = iEvent.dx;\n }\n iEvent.axes = 'xy';\n }\n else {\n iEvent.axes = interaction.resizeAxes;\n\n if (interaction.resizeAxes === 'x') {\n iEvent.dy = 0;\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.dx = 0;\n }\n }\n});\n\nactions.resize = resize;\nactions.names.push('resize');\nutils.merge(Interactable.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeinertiaresume',\n 'resizeend',\n]);\nactions.methodDict.resize = 'resizable';\n\ndefaultOptions.resize = resize.defaults;\n\nmodule.exports = resize;\n","const raf = require('./utils/raf');\nconst getWindow = require('./utils/window').getWindow;\nconst is = require('./utils/is');\nconst domUtils = require('./utils/domUtils');\nconst Interaction = require('./Interaction');\nconst defaultOptions = require('./defaultOptions');\n\nconst autoScroll = {\n defaults: {\n enabled : false,\n container: null, // the item that is scrolled (Window or HTMLElement)\n margin : 60,\n speed : 300, // the scroll speed in pixels per second\n },\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0, y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n\n start: function (interaction) {\n autoScroll.isScrolling = true;\n raf.cancel(autoScroll.i);\n\n autoScroll.interaction = interaction;\n autoScroll.prevTime = new Date().getTime();\n autoScroll.i = raf.request(autoScroll.scroll);\n },\n\n stop: function () {\n autoScroll.isScrolling = false;\n raf.cancel(autoScroll.i);\n },\n\n // scroll the window by the values in scroll.x/y\n scroll: function () {\n const options = autoScroll.interaction.target.options[autoScroll.interaction.prepared.name].autoScroll;\n const container = options.container || getWindow(autoScroll.interaction.element);\n const now = new Date().getTime();\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000;\n // displacement\n const s = options.speed * dt;\n\n if (s >= 1) {\n if (is.window(container)) {\n container.scrollBy(autoScroll.x * s, autoScroll.y * s);\n }\n else if (container) {\n container.scrollLeft += autoScroll.x * s;\n container.scrollTop += autoScroll.y * s;\n }\n\n autoScroll.prevTime = now;\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i);\n autoScroll.i = raf.request(autoScroll.scroll);\n }\n },\n check: function (interactable, actionName) {\n const options = interactable.options;\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled;\n },\n onInteractionMove: function ({ interaction, pointer }) {\n if (!(interaction.interacting()\n && autoScroll.check(interaction.target, interaction.prepared.name))) {\n return;\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0;\n return;\n }\n\n let top;\n let right;\n let bottom;\n let left;\n\n const options = interaction.target.options[interaction.prepared.name].autoScroll;\n const container = options.container || getWindow(interaction.element);\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin;\n top = pointer.clientY < autoScroll.margin;\n right = pointer.clientX > container.innerWidth - autoScroll.margin;\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin;\n }\n else {\n const rect = domUtils.getElementClientRect(container);\n\n left = pointer.clientX < rect.left + autoScroll.margin;\n top = pointer.clientY < rect.top + autoScroll.margin;\n right = pointer.clientX > rect.right - autoScroll.margin;\n bottom = pointer.clientY > rect.bottom - autoScroll.margin;\n }\n\n autoScroll.x = (right ? 1: left? -1: 0);\n autoScroll.y = (bottom? 1: top? -1: 0);\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin;\n autoScroll.speed = options.speed;\n\n autoScroll.start(interaction);\n }\n },\n};\n\nInteraction.signals.on('stop-active', function () {\n autoScroll.stop();\n});\n\nInteraction.signals.on('action-move', autoScroll.onInteractionMove);\n\ndefaultOptions.perAction.autoScroll = autoScroll.defaults;\n\nmodule.exports = autoScroll;\n","/** @lends Interactable */\nconst Interactable = require('../Interactable');\nconst actions = require('../actions/base');\nconst is = require('../utils/is');\nconst domUtils = require('../utils/domUtils');\n\nconst { warnOnce } = require('../utils');\n\nInteractable.prototype.getAction = function (pointer, event, interaction, element) {\n const action = this.defaultActionChecker(pointer, event, interaction, element);\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction);\n }\n\n return action;\n};\n\n/**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') });\n * // or\n * interact(element).ignoreFrom('input, textarea, a');\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * });\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\nInteractable.prototype.ignoreFrom = warnOnce(function (newValue) {\n return this._backCompatOption('ignoreFrom', newValue);\n}, 'Interactable.ignoreForm() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n\n/**\n * ```js\n *\n * @deprecated\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * });\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\nInteractable.prototype.allowFrom = warnOnce(function (newValue) {\n return this._backCompatOption('allowFrom', newValue);\n}, 'Interactable.allowForm() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n\nInteractable.prototype.testIgnore = function (ignoreFrom, interactableElement, element) {\n if (!ignoreFrom || !is.element(element)) { return false; }\n\n if (is.string(ignoreFrom)) {\n return domUtils.matchesUpTo(element, ignoreFrom, interactableElement);\n }\n else if (is.element(ignoreFrom)) {\n return domUtils.nodeContains(ignoreFrom, element);\n }\n\n return false;\n};\n\nInteractable.prototype.testAllow = function (allowFrom, interactableElement, element) {\n if (!allowFrom) { return true; }\n\n if (!is.element(element)) { return false; }\n\n if (is.string(allowFrom)) {\n return domUtils.matchesUpTo(element, allowFrom, interactableElement);\n }\n else if (is.element(allowFrom)) {\n return domUtils.nodeContains(allowFrom, element);\n }\n\n return false;\n};\n\nInteractable.prototype.testIgnoreAllow = function (options, interactableElement, eventTarget) {\n return (!this.testIgnore(options.ignoreFrom, interactableElement, eventTarget)\n && this.testAllow(options.allowFrom, interactableElement, eventTarget));\n};\n\n/**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle') {\n * // force drag with handle target\n * action.name = drag;\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize';\n * action.edges = { top: true, right: true };\n * }\n *\n * return action;\n * });\n * ```\n *\n * Gets or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\nInteractable.prototype.actionChecker = function (checker) {\n if (is.function(checker)) {\n this.options.actionChecker = checker;\n\n return this;\n }\n\n if (checker === null) {\n delete this.options.actionChecker;\n\n return this;\n }\n\n return this.options.actionChecker;\n};\n\n/**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\nInteractable.prototype.styleCursor = function (newValue) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue;\n\n return this;\n }\n\n if (newValue === null) {\n delete this.options.styleCursor;\n\n return this;\n }\n\n return this.options.styleCursor;\n};\n\nInteractable.prototype.defaultActionChecker = function (pointer, event, interaction, element) {\n const rect = this.getRect(element);\n const buttons = event.buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[event.button];\n let action = null;\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown\n && /mouse|pointer/.test(interaction.pointerType)\n && (buttons & this.options[actionName].mouseButtons) === 0) {\n continue;\n }\n\n action = actions[actionName].checker(pointer, event, this, element, interaction, rect);\n\n if (action) {\n return action;\n }\n }\n};\n\n","const interact = require('../interact');\nconst Interactable = require('../Interactable');\nconst Interaction = require('../Interaction');\nconst actions = require('../actions/base');\nconst defaultOptions = require('../defaultOptions');\nconst scope = require('../scope');\nconst utils = require('../utils');\nconst signals = require('../utils/Signals').new();\n\nrequire('./InteractableMethods');\n\nconst autoStart = {\n signals,\n withinInteractionLimit,\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n defaults: {\n perAction: {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n },\n },\n setActionDefaults: function (action) {\n utils.extend(action.defaults, autoStart.defaults.perAction);\n },\n validateAction,\n};\n\n// set cursor style on mousedown\nInteraction.signals.on('down', function ({ interaction, pointer, event, eventTarget }) {\n if (interaction.interacting()) { return; }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget);\n prepare(interaction, actionInfo);\n});\n\n// set cursor style on mousemove\nInteraction.signals.on('move', function ({ interaction, pointer, event, eventTarget }) {\n if (interaction.pointerType !== 'mouse'\n || interaction.pointerIsDown\n || interaction.interacting()) { return; }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget);\n prepare(interaction, actionInfo);\n});\n\nInteraction.signals.on('move', function (arg) {\n const { interaction, event } = arg;\n\n if (!interaction.pointerIsDown\n || interaction.interacting()\n || !interaction.pointerWasMoved\n || !interaction.prepared.name) {\n return;\n }\n\n signals.fire('before-start', arg);\n\n const target = interaction.target;\n\n if (interaction.prepared.name && target) {\n // check manualStart and interaction limit\n if (target.options[interaction.prepared.name].manualStart\n || !withinInteractionLimit(target, interaction.element, interaction.prepared)) {\n interaction.stop(event);\n }\n else {\n interaction.start(interaction.prepared, target, interaction.element);\n }\n }\n});\n\n// Check if the current target supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget) {\n if (utils.is.object(action)\n && interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget)\n && interactable.options[action.name].enabled\n && withinInteractionLimit(interactable, element, action)) {\n return action;\n }\n\n return null;\n}\n\nfunction validateSelector (interaction, pointer, event, matches, matchElements, eventTarget) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i];\n const matchElement = matchElements[i];\n const action = validateAction(match.getAction(pointer, event, interaction, matchElement),\n match,\n matchElement,\n eventTarget);\n\n if (action) {\n return {\n action,\n target: match,\n element: matchElement,\n };\n }\n }\n\n return {};\n}\n\nfunction getActionInfo (interaction, pointer, event, eventTarget) {\n let matches = [];\n let matchElements = [];\n\n let element = eventTarget;\n\n function pushMatches (interactable) {\n matches.push(interactable);\n matchElements.push(element);\n }\n\n while (utils.is.element(element)) {\n matches = [];\n matchElements = [];\n\n scope.interactables.forEachMatch(element, pushMatches);\n\n const actionInfo = validateSelector(interaction, pointer, event, matches, matchElements, eventTarget);\n\n if (actionInfo.action\n && !actionInfo.target.options[actionInfo.action.name].manualStart) {\n return actionInfo;\n }\n\n element = utils.parentNode(element);\n }\n\n return {};\n}\n\nfunction prepare (interaction, { action, target, element }) {\n action = action || {};\n\n if (interaction.target && interaction.target.options.styleCursor) {\n interaction.target._doc.documentElement.style.cursor = '';\n }\n\n interaction.target = target;\n interaction.element = element;\n utils.copyAction(interaction.prepared, action);\n\n if (target && target.options.styleCursor) {\n const cursor = action? actions[action.name].getCursor(action) : '';\n interaction.target._doc.documentElement.style.cursor = cursor;\n }\n\n signals.fire('prepared', { interaction: interaction });\n}\n\nInteraction.signals.on('stop', function ({ interaction }) {\n const target = interaction.target;\n\n if (target && target.options.styleCursor) {\n target._doc.documentElement.style.cursor = '';\n }\n});\n\nfunction withinInteractionLimit (interactable, element, action) {\n const options = interactable.options;\n const maxActions = options[action.name].max;\n const maxPerElement = options[action.name].maxPerElement;\n let activeInteractions = 0;\n let targetCount = 0;\n let targetElementCount = 0;\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStart.maxInteractions)) { return; }\n\n for (const interaction of scope.interactions) {\n const otherAction = interaction.prepared.name;\n\n if (!interaction.interacting()) { continue; }\n\n activeInteractions++;\n\n if (activeInteractions >= autoStart.maxInteractions) {\n return false;\n }\n\n if (interaction.target !== interactable) { continue; }\n\n targetCount += (otherAction === action.name)|0;\n\n if (targetCount >= maxActions) {\n return false;\n }\n\n if (interaction.element === element) {\n targetElementCount++;\n\n if (otherAction !== action.name || targetElementCount >= maxPerElement) {\n return false;\n }\n }\n }\n\n return autoStart.maxInteractions > 0;\n}\n\n/**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\ninteract.maxInteractions = function (newValue) {\n if (utils.is.number(newValue)) {\n autoStart.maxInteractions = newValue;\n\n return interact;\n }\n\n return autoStart.maxInteractions;\n};\n\nInteractable.settingsMethods.push('styleCursor');\nInteractable.settingsMethods.push('actionChecker');\nInteractable.settingsMethods.push('ignoreFrom');\nInteractable.settingsMethods.push('allowFrom');\n\ndefaultOptions.base.actionChecker = null;\ndefaultOptions.base.styleCursor = true;\n\nutils.extend(defaultOptions.perAction, autoStart.defaults.perAction);\n\nmodule.exports = autoStart;\n","const autoStart = require('./base');\nconst scope = require('../scope');\nconst is = require('../utils/is');\n\nconst { parentNode } = require('../utils/domUtils');\n\nautoStart.setActionDefaults(require('../actions/drag'));\n\nautoStart.signals.on('before-start', function ({ interaction, eventTarget, dx, dy }) {\n if (interaction.prepared.name !== 'drag') { return; }\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx);\n const absY = Math.abs(dy);\n const targetOptions = interaction.target.options.drag;\n const startAxis = targetOptions.startAxis;\n const currentAxis = (absX > absY ? 'x' : absX < absY ? 'y' : 'xy');\n\n interaction.prepared.axis = targetOptions.lockAxis === 'start'\n ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis;\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n interaction.prepared.name = null;\n\n // then try to get a drag from another ineractable\n let element = eventTarget;\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.target) { return; }\n\n const options = interaction.target.options.drag;\n\n if (!options.manualStart\n && interactable.testIgnoreAllow(options, element, eventTarget)) {\n\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element);\n\n if (action\n && action.name === 'drag'\n && checkStartAxis(currentAxis, interactable)\n && autoStart.validateAction(action, interactable, element, eventTarget)) {\n\n return interactable;\n }\n }\n };\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n if (interactable) {\n interaction.prepared.name = 'drag';\n interaction.target = interactable;\n interaction.element = element;\n break;\n }\n\n element = parentNode(element);\n }\n }\n});\n\nfunction checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false; }\n\n const thisAxis = interactable.options.drag.startAxis;\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis);\n}\n","require('./base').setActionDefaults(require('../actions/gesture'));\n","const autoStart = require('./base');\nconst Interaction = require('../Interaction');\n\nautoStart.defaults.perAction.hold = 0;\nautoStart.defaults.perAction.delay = 0;\n\nInteraction.signals.on('new', function (interaction) {\n interaction.autoStartHoldTimer = null;\n});\n\nautoStart.signals.on('prepared', function ({ interaction }) {\n const hold = getHoldDuration(interaction);\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.target, interaction.element);\n }, hold);\n }\n});\n\nInteraction.signals.on('move', function ({ interaction, duplicate }) {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer);\n }\n});\n\n// prevent regular down->move autoStart\nautoStart.signals.on('before-start', function ({ interaction }) {\n const hold = getHoldDuration(interaction);\n\n if (hold > 0) {\n interaction.prepared.name = null;\n }\n});\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name;\n\n if (!actionName) { return null; }\n\n const options = interaction.target.options;\n\n return options[actionName].hold || options[actionName].delay;\n}\n\nmodule.exports = {\n getHoldDuration,\n};\n","require('./base').setActionDefaults(require('../actions/resize'));\n","module.exports = {\n base: {\n accept : null,\n preventDefault: 'auto',\n deltaSource : 'page',\n },\n\n perAction: {\n origin: { x: 0, y: 0 },\n\n inertia: {\n enabled : false,\n resistance : 10, // the lambda in exponential decay\n minSpeed : 100, // target speed must be above this for inertia to start\n endSpeed : 10, // the speed at which inertia is slow enough to stop\n allowResume : true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n },\n },\n};\n","/* browser entry point */\n\n// inertia\nrequire('./inertia');\n\n// modifiers\nrequire('./modifiers/snap');\nrequire('./modifiers/restrict');\n\n// pointerEvents\nrequire('./pointerEvents/base');\nrequire('./pointerEvents/holdRepeat');\nrequire('./pointerEvents/interactableTargets');\n\n// autoStart hold\nrequire('./autoStart/hold');\n\n// actions\nrequire('./actions/gesture');\nrequire('./actions/resize');\nrequire('./actions/drag');\nrequire('./actions/drop');\n\n// load these modifiers after resize is loaded\nrequire('./modifiers/snapSize');\nrequire('./modifiers/restrictEdges');\nrequire('./modifiers/restrictSize');\n\n// autoStart actions\nrequire('./autoStart/gesture');\nrequire('./autoStart/resize');\nrequire('./autoStart/drag');\n\n// Interactable preventDefault setting\nrequire('./interactablePreventDefault.js');\n\n// autoScroll\nrequire('./autoScroll');\n\n// export interact\nmodule.exports = require('./interact');\n","const InteractEvent = require('./InteractEvent');\nconst Interaction = require('./Interaction');\nconst modifiers = require('./modifiers/base');\nconst utils = require('./utils');\nconst animationFrame = require('./utils/raf');\n\nInteraction.signals.on('new', function (interaction) {\n interaction.inertiaStatus = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n\n startEvent: null,\n upCoords : {},\n\n xe: 0, ye: 0,\n sx: 0, sy: 0,\n\n t0: 0,\n vx0: 0, vys: 0,\n duration: 0,\n\n lambda_v0: 0,\n one_ve_v0: 0,\n i : null,\n };\n\n interaction.boundInertiaFrame = () => inertiaFrame .apply(interaction);\n interaction.boundSmoothEndFrame = () => smoothEndFrame.apply(interaction);\n});\n\nInteraction.signals.on('down', function ({ interaction, event, pointer, eventTarget }) {\n const status = interaction.inertiaStatus;\n\n // Check if the down event hits the current inertia target\n if (status.active) {\n let element = eventTarget;\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n animationFrame.cancel(status.i);\n status.active = false;\n interaction.simulation = null;\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer);\n utils.setCoords(interaction.curCoords, interaction.pointers);\n\n // fire appropriate signals\n const signalArg = { interaction };\n Interaction.signals.fire('before-action-move', signalArg);\n Interaction.signals.fire('action-resume' , signalArg);\n\n // fire a reume event\n const resumeEvent = new InteractEvent(interaction,\n event,\n interaction.prepared.name,\n 'inertiaresume',\n interaction.element);\n\n interaction.target.fire(resumeEvent);\n interaction.prevEvent = resumeEvent;\n modifiers.resetStatuses(interaction.modifierStatuses);\n\n utils.copyCoords(interaction.prevCoords, interaction.curCoords);\n break;\n }\n\n element = utils.parentNode(element);\n }\n }\n});\n\nInteraction.signals.on('up', function ({ interaction, event }) {\n const status = interaction.inertiaStatus;\n\n if (!interaction.interacting() || status.active) { return; }\n\n const target = interaction.target;\n const options = target && target.options;\n const inertiaOptions = options && interaction.prepared.name && options[interaction.prepared.name].inertia;\n\n const now = new Date().getTime();\n const statuses = {};\n const page = utils.extend({}, interaction.curCoords.page);\n const pointerSpeed = interaction.pointerDelta.client.speed;\n\n let smoothEnd = false;\n let modifierResult;\n\n // check if inertia should be started\n const inertiaPossible = (inertiaOptions && inertiaOptions.enabled\n && interaction.prepared.name !== 'gesture'\n && event !== status.startEvent);\n\n const inertia = (inertiaPossible\n && (now - interaction.curCoords.timeStamp) < 50\n && pointerSpeed > inertiaOptions.minSpeed\n && pointerSpeed > inertiaOptions.endSpeed);\n\n const modifierArg = {\n interaction,\n pageCoords: page,\n statuses,\n preEnd: true,\n requireEndOnly: true,\n };\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifiers.resetStatuses(statuses);\n\n modifierResult = modifiers.setAll(modifierArg);\n\n if (modifierResult.shouldMove && modifierResult.locked) {\n smoothEnd = true;\n }\n }\n\n if (!(inertia || smoothEnd)) { return; }\n\n utils.copyCoords(status.upCoords, interaction.curCoords);\n\n interaction.pointers[0] = status.startEvent =\n new InteractEvent(interaction, event, interaction.prepared.name, 'inertiastart', interaction.element);\n\n status.t0 = now;\n\n status.active = true;\n status.allowResume = inertiaOptions.allowResume;\n interaction.simulation = status;\n\n target.fire(status.startEvent);\n\n if (inertia) {\n status.vx0 = interaction.pointerDelta.client.vx;\n status.vy0 = interaction.pointerDelta.client.vy;\n status.v0 = pointerSpeed;\n\n calcInertia(interaction, status);\n\n utils.extend(page, interaction.curCoords.page);\n\n page.x += status.xe;\n page.y += status.ye;\n\n modifiers.resetStatuses(statuses);\n\n modifierResult = modifiers.setAll(modifierArg);\n\n status.modifiedXe += modifierResult.dx;\n status.modifiedYe += modifierResult.dy;\n\n status.i = animationFrame.request(interaction.boundInertiaFrame);\n }\n else {\n status.smoothEnd = true;\n status.xe = modifierResult.dx;\n status.ye = modifierResult.dy;\n\n status.sx = status.sy = 0;\n\n status.i = animationFrame.request(interaction.boundSmoothEndFrame);\n }\n});\n\nInteraction.signals.on('stop-active', function ({ interaction }) {\n const status = interaction.inertiaStatus;\n\n if (status.active) {\n animationFrame.cancel(status.i);\n status.active = false;\n interaction.simulation = null;\n }\n});\n\nfunction calcInertia (interaction, status) {\n const inertiaOptions = interaction.target.options[interaction.prepared.name].inertia;\n const lambda = inertiaOptions.resistance;\n const inertiaDur = -Math.log(inertiaOptions.endSpeed / status.v0) / lambda;\n\n status.x0 = interaction.prevEvent.pageX;\n status.y0 = interaction.prevEvent.pageY;\n status.t0 = status.startEvent.timeStamp / 1000;\n status.sx = status.sy = 0;\n\n status.modifiedXe = status.xe = (status.vx0 - inertiaDur) / lambda;\n status.modifiedYe = status.ye = (status.vy0 - inertiaDur) / lambda;\n status.te = inertiaDur;\n\n status.lambda_v0 = lambda / status.v0;\n status.one_ve_v0 = 1 - inertiaOptions.endSpeed / status.v0;\n}\n\nfunction inertiaFrame () {\n updateInertiaCoords(this);\n utils.setCoordDeltas(this.pointerDelta, this.prevCoords, this.curCoords);\n\n const status = this.inertiaStatus;\n const options = this.target.options[this.prepared.name].inertia;\n const lambda = options.resistance;\n const t = new Date().getTime() / 1000 - status.t0;\n\n if (t < status.te) {\n\n const progress = 1 - (Math.exp(-lambda * t) - status.lambda_v0) / status.one_ve_v0;\n\n if (status.modifiedXe === status.xe && status.modifiedYe === status.ye) {\n status.sx = status.xe * progress;\n status.sy = status.ye * progress;\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(0, 0,\n status.xe,\n status.ye,\n status.modifiedXe,\n status.modifiedYe,\n progress);\n\n status.sx = quadPoint.x;\n status.sy = quadPoint.y;\n }\n\n this.doMove();\n\n status.i = animationFrame.request(this.boundInertiaFrame);\n }\n else {\n status.sx = status.modifiedXe;\n status.sy = status.modifiedYe;\n\n this.doMove();\n this.end(status.startEvent);\n status.active = false;\n this.simulation = null;\n }\n\n utils.copyCoords(this.prevCoords, this.curCoords);\n}\n\nfunction smoothEndFrame () {\n updateInertiaCoords(this);\n\n const status = this.inertiaStatus;\n const t = new Date().getTime() - status.t0;\n const duration = this.target.options[this.prepared.name].inertia.smoothEndDuration;\n\n if (t < duration) {\n status.sx = utils.easeOutQuad(t, 0, status.xe, duration);\n status.sy = utils.easeOutQuad(t, 0, status.ye, duration);\n\n this.pointerMove(status.startEvent, status.startEvent);\n\n status.i = animationFrame.request(this.boundSmoothEndFrame);\n }\n else {\n status.sx = status.xe;\n status.sy = status.ye;\n\n this.pointerMove(status.startEvent, status.startEvent);\n this.end(status.startEvent);\n\n status.smoothEnd =\n status.active = false;\n this.simulation = null;\n }\n}\n\nfunction updateInertiaCoords (interaction) {\n const status = interaction.inertiaStatus;\n\n // return if inertia isn't running\n if (!status.active) { return; }\n\n const pageUp = status.upCoords.page;\n const clientUp = status.upCoords.client;\n\n utils.setCoords(interaction.curCoords, [ {\n pageX : pageUp.x + status.sx,\n pageY : pageUp.y + status.sy,\n clientX: clientUp.x + status.sx,\n clientY: clientUp.y + status.sy,\n } ]);\n}\n","/** @module interact */\n\nconst browser = require('./utils/browser');\nconst events = require('./utils/events');\nconst utils = require('./utils');\nconst scope = require('./scope');\nconst Interactable = require('./Interactable');\nconst Interaction = require('./Interaction');\n\nconst globalEvents = {};\n\n/**\n * ```js\n * interact('#draggable').draggable(true);\n *\n * var rectables = interact('rect');\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * });\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} element The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nfunction interact (element, options) {\n let interactable = scope.interactables.get(element, options);\n\n if (!interactable) {\n interactable = new Interactable(element, options);\n interactable.events.global = globalEvents;\n }\n\n return interactable;\n}\n\n/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n*/\ninteract.isSet = function (element, options) {\n return scope.interactables.indexOfElement(element, options && options.context) !== -1;\n};\n\n/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\ninteract.on = function (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.on(eventType, listener, options);\n }\n\n return interact;\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, type[prop], listener);\n }\n\n return interact;\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.contains(Interactable.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener];\n }\n else {\n globalEvents[type].push(listener);\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener, { options });\n }\n\n return interact;\n};\n\n/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\ninteract.off = function (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options);\n }\n\n return interact;\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener);\n }\n\n return interact;\n }\n\n if (!utils.contains(Interactable.eventTypes, type)) {\n events.remove(scope.document, type, listener, options);\n }\n else {\n let index;\n\n if (type in globalEvents\n && (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1);\n }\n }\n\n return interact;\n};\n\n/**\n * Returns an object which exposes internal data\n\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = function () {\n return scope;\n};\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointerAverage;\ninteract.getTouchBBox = utils.touchBBox;\ninteract.getTouchDistance = utils.touchDistance;\ninteract.getTouchAngle = utils.touchAngle;\n\ninteract.getElementRect = utils.getElementRect;\ninteract.getElementClientRect = utils.getElementClientRect;\ninteract.matchesSelector = utils.matchesSelector;\ninteract.closest = utils.closest;\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = function () {\n return browser.supportsTouch;\n};\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = function () {\n return browser.supportsPointerEvent;\n};\n\n/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @param {Event} event An event on which to call preventDefault()\n * @return {object} interact\n */\ninteract.stop = function (event) {\n for (let i = scope.interactions.length - 1; i >= 0; i--) {\n scope.interactions[i].stop(event);\n }\n\n return interact;\n};\n\n/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\ninteract.pointerMoveTolerance = function (newValue) {\n if (utils.is.number(newValue)) {\n Interaction.pointerMoveTolerance = newValue;\n\n return interact;\n }\n\n return Interaction.pointerMoveTolerance;\n};\n\ninteract.addDocument = scope.addDocument;\ninteract.removeDocument = scope.removeDocument;\n\nscope.interact = interact;\n\nmodule.exports = interact;\n","const Interactable = require('./Interactable');\nconst Interaction = require('./Interaction');\nconst scope = require('./scope');\nconst is = require('./utils/is');\nconst events = require('./utils/events');\nconst browser = require('./utils/browser');\n\nconst { nodeContains, matchesSelector } = require('./utils/domUtils');\n\n/**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `true`, `false` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\nInteractable.prototype.preventDefault = function (newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue;\n return this;\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue? 'always' : 'never';\n return this;\n }\n\n return this.options.preventDefault;\n};\n\nInteractable.prototype.checkAndPreventDefault = function (event) {\n const setting = this.options.preventDefault;\n\n if (setting === 'never') { return; }\n\n if (setting === 'always') {\n event.preventDefault();\n return;\n }\n\n // setting === 'auto'\n\n // don't preventDefault of touch{start,move} events if the browser supports passive\n // events listeners. CSS touch-action and user-selecct should be used instead\n if (events.supportsPassive\n && /^touch(start|move)$/.test(event.type)\n && !browser.isIOS) {\n return;\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return;\n }\n\n // don't preventDefault on editable elements\n if (is.element(event.target)\n && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return;\n }\n\n event.preventDefault();\n};\n\nfunction onInteractionEvent ({ interaction, event }) {\n if (interaction.target) {\n interaction.target.checkAndPreventDefault(event);\n }\n}\n\nfor (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n Interaction.signals.on(eventSignal, onInteractionEvent);\n}\n\n// prevent native HTML5 drag on interact.js target elements\nInteraction.docEvents.dragstart = function preventNativeDrag (event) {\n for (const interaction of scope.interactions) {\n\n if (interaction.element\n && (interaction.element === event.target\n || nodeContains(interaction.element, event.target))) {\n\n interaction.target.checkAndPreventDefault(event);\n return;\n }\n }\n};\n","const InteractEvent = require('../InteractEvent');\nconst Interaction = require('../Interaction');\nconst extend = require('../utils/extend');\n\nconst modifiers = {\n names: [],\n\n setOffsets: function (arg) {\n const { interaction, pageCoords: page } = arg;\n const { target, element, startOffset } = interaction;\n const rect = target.getRect(element);\n\n if (rect) {\n startOffset.left = page.x - rect.left;\n startOffset.top = page.y - rect.top;\n\n startOffset.right = rect.right - page.x;\n startOffset.bottom = rect.bottom - page.y;\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left; }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top ; }\n }\n else {\n startOffset.left = startOffset.top = startOffset.right = startOffset.bottom = 0;\n }\n\n arg.rect = rect;\n arg.interactable = target;\n arg.element = element;\n\n for (const modifierName of modifiers.names) {\n arg.options = target.options[interaction.prepared.name][modifierName];\n\n if (!arg.options) {\n continue;\n }\n\n interaction.modifierOffsets[modifierName] = modifiers[modifierName].setOffset(arg);\n }\n },\n\n setAll: function (arg) {\n const { interaction, statuses, preEnd, requireEndOnly } = arg;\n const result = {\n dx: 0,\n dy: 0,\n changed: false,\n locked: false,\n shouldMove: true,\n };\n\n arg.modifiedCoords = extend({}, arg.pageCoords);\n\n for (const modifierName of modifiers.names) {\n const modifier = modifiers[modifierName];\n const options = interaction.target.options[interaction.prepared.name][modifierName];\n\n if (!shouldDo(options, preEnd, requireEndOnly)) { continue; }\n\n arg.status = arg.status = statuses[modifierName];\n arg.options = options;\n arg.offset = arg.interaction.modifierOffsets[modifierName];\n\n modifier.set(arg);\n\n if (arg.status.locked) {\n arg.modifiedCoords.x += arg.status.dx;\n arg.modifiedCoords.y += arg.status.dy;\n\n result.dx += arg.status.dx;\n result.dy += arg.status.dy;\n\n result.locked = true;\n }\n }\n\n // a move should be fired if:\n // - there are no modifiers enabled,\n // - no modifiers are \"locked\" i.e. have changed the pointer's coordinates, or\n // - the locked coords have changed since the last pointer move\n result.shouldMove = !arg.status || !result.locked || arg.status.changed;\n\n return result;\n },\n\n resetStatuses: function (statuses) {\n for (const modifierName of modifiers.names) {\n const status = statuses[modifierName] || {};\n\n status.dx = status.dy = 0;\n status.modifiedX = status.modifiedY = NaN;\n status.locked = false;\n status.changed = true;\n\n statuses[modifierName] = status;\n }\n\n return statuses;\n },\n\n start: function ({ interaction }, signalName) {\n const arg = {\n interaction,\n pageCoords: (signalName === 'action-resume' ?\n interaction.curCoords : interaction.startCoords).page,\n startOffset: interaction.startOffset,\n statuses: interaction.modifierStatuses,\n preEnd: false,\n requireEndOnly: false,\n };\n\n modifiers.setOffsets(arg);\n modifiers.resetStatuses(arg.statuses);\n\n arg.pageCoords = extend({}, interaction.startCoords.page);\n interaction.modifierResult = modifiers.setAll(arg);\n },\n\n beforeMove: function ({ interaction, preEnd, interactingBeforeMove }) {\n const modifierResult = modifiers.setAll({\n interaction,\n preEnd,\n pageCoords: interaction.curCoords.page,\n statuses: interaction.modifierStatuses,\n requireEndOnly: false,\n });\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.shouldMove && interactingBeforeMove) {\n interaction._dontFireMove = true;\n }\n\n interaction.modifierResult = modifierResult;\n },\n\n end: function ({ interaction, event }) {\n for (const modifierName of modifiers.names) {\n const options = interaction.target.options[interaction.prepared.name][modifierName];\n\n // if the endOnly option is true for any modifier\n if (shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.doMove({ event, preEnd: true });\n break;\n }\n }\n },\n\n setXY: function (arg) {\n const { iEvent, interaction } = arg;\n const modifierArg = extend({}, arg);\n\n for (let i = 0; i < modifiers.names.length; i++) {\n const modifierName = modifiers.names[i];\n modifierArg.options = interaction.target.options[interaction.prepared.name][modifierName];\n\n if (!modifierArg.options) {\n continue;\n }\n\n const modifier = modifiers[modifierName];\n\n modifierArg.status = interaction.modifierStatuses[modifierName];\n\n iEvent[modifierName] = modifier.modifyCoords(modifierArg);\n }\n },\n};\n\nInteraction.signals.on('new', function (interaction) {\n interaction.startOffset = { left: 0, right: 0, top: 0, bottom: 0 };\n interaction.modifierOffsets = {};\n interaction.modifierStatuses = modifiers.resetStatuses({});\n interaction.modifierResult = null;\n});\n\nInteraction.signals.on('action-start' , modifiers.start);\nInteraction.signals.on('action-resume', modifiers.start);\nInteraction.signals.on('before-action-move', modifiers.beforeMove);\nInteraction.signals.on('action-end', modifiers.end);\n\nInteractEvent.signals.on('set-xy', modifiers.setXY);\n\nfunction shouldDo (options, preEnd, requireEndOnly) {\n return (options && options.enabled\n && (preEnd || !options.endOnly)\n && (!requireEndOnly || options.endOnly));\n}\n\nmodule.exports = modifiers;\n","const modifiers = require('./base');\nconst utils = require('../utils');\nconst defaultOptions = require('../defaultOptions');\n\nconst restrict = {\n defaults: {\n enabled : false,\n endOnly : false,\n restriction: null,\n elementRect: null,\n },\n\n setOffset: function ({ rect, startOffset, options }) {\n const elementRect = options && options.elementRect;\n const offset = {};\n\n if (rect && elementRect) {\n offset.left = startOffset.left - (rect.width * elementRect.left);\n offset.top = startOffset.top - (rect.height * elementRect.top);\n\n offset.right = startOffset.right - (rect.width * (1 - elementRect.right));\n offset.bottom = startOffset.bottom - (rect.height * (1 - elementRect.bottom));\n }\n else {\n offset.left = offset.top = offset.right = offset.bottom = 0;\n }\n\n return offset;\n },\n\n set: function ({ modifiedCoords, interaction, status, options }) {\n if (!options) { return status; }\n\n const page = status.useStatusXY\n ? { x: status.x, y: status.y }\n : utils.extend({}, modifiedCoords);\n\n const restriction = getRestrictionRect(options.restriction, interaction, page);\n\n if (!restriction) { return status; }\n\n status.dx = 0;\n status.dy = 0;\n status.locked = false;\n\n const rect = restriction;\n let modifiedX = page.x;\n let modifiedY = page.y;\n\n const offset = interaction.modifierOffsets.restrict;\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n modifiedX = Math.max(Math.min(rect.x + rect.width - offset.right , page.x), rect.x + offset.left);\n modifiedY = Math.max(Math.min(rect.y + rect.height - offset.bottom, page.y), rect.y + offset.top );\n }\n else {\n modifiedX = Math.max(Math.min(rect.right - offset.right , page.x), rect.left + offset.left);\n modifiedY = Math.max(Math.min(rect.bottom - offset.bottom, page.y), rect.top + offset.top );\n }\n\n status.dx = modifiedX - page.x;\n status.dy = modifiedY - page.y;\n\n status.changed = status.modifiedX !== modifiedX || status.modifiedY !== modifiedY;\n status.locked = !!(status.dx || status.dy);\n\n status.modifiedX = modifiedX;\n status.modifiedY = modifiedY;\n },\n\n modifyCoords: function ({ page, client, status, phase, options }) {\n const elementRect = options && options.elementRect;\n\n if (options && options.enabled\n && !(phase === 'start' && elementRect && status.locked)) {\n\n if (status.locked) {\n page.x += status.dx;\n page.y += status.dy;\n client.x += status.dx;\n client.y += status.dy;\n\n return {\n dx: status.dx,\n dy: status.dy,\n };\n }\n }\n },\n\n getRestrictionRect,\n};\n\nfunction getRestrictionRect (value, interaction, page) {\n if (utils.is.function(value)) {\n return utils.resolveRectLike(value, interaction.target, interaction.element, [page.x, page.y, interaction]);\n } else {\n return utils.resolveRectLike(value, interaction.target, interaction.element);\n }\n}\n\nmodifiers.restrict = restrict;\nmodifiers.names.push('restrict');\n\ndefaultOptions.perAction.restrict = restrict.defaults;\n\nmodule.exports = restrict;\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// });\n\nconst modifiers = require('./base');\nconst utils = require('../utils');\nconst rectUtils = require('../utils/rect');\nconst defaultOptions = require('../defaultOptions');\nconst resize = require('../actions/resize');\n\nconst { getRestrictionRect } = require('./restrict');\n\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity };\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity };\n\nconst restrictEdges = {\n defaults: {\n enabled: false,\n endOnly: false,\n min: null,\n max: null,\n offset: null,\n },\n\n setOffset: function ({ interaction, startOffset, options }) {\n if (!options) {\n return utils.extend({}, startOffset);\n }\n\n const offset = getRestrictionRect(options.offset, interaction, interaction.startCoords.page);\n\n if (offset) {\n return {\n top: startOffset.top + offset.y,\n left: startOffset.left + offset.x,\n bottom: startOffset.bottom + offset.y,\n right: startOffset.right + offset.x,\n };\n }\n\n return startOffset;\n },\n\n set: function ({ modifiedCoords, interaction, status, offset, options }) {\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges;\n\n if (!interaction.interacting() || !edges) {\n return;\n }\n\n const page = status.useStatusXY\n ? { x: status.x, y: status.y }\n : utils.extend({}, modifiedCoords);\n const inner = rectUtils.xywhToTlbr(getRestrictionRect(options.inner, interaction, page)) || noInner;\n const outer = rectUtils.xywhToTlbr(getRestrictionRect(options.outer, interaction, page)) || noOuter;\n\n let modifiedX = page.x;\n let modifiedY = page.y;\n\n status.dx = 0;\n status.dy = 0;\n status.locked = false;\n\n if (edges.top) {\n modifiedY = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n }\n else if (edges.bottom) {\n modifiedY = Math.max(Math.min(outer.bottom - offset.bottom, page.y), inner.bottom - offset.bottom);\n }\n if (edges.left) {\n modifiedX = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n }\n else if (edges.right) {\n modifiedX = Math.max(Math.min(outer.right - offset.right, page.x), inner.right - offset.right);\n }\n\n status.dx = modifiedX - page.x;\n status.dy = modifiedY - page.y;\n\n status.changed = status.modifiedX !== modifiedX || status.modifiedY !== modifiedY;\n status.locked = !!(status.dx || status.dy);\n\n status.modifiedX = modifiedX;\n status.modifiedY = modifiedY;\n },\n\n modifyCoords: function ({ page, client, status, phase, options }) {\n if (options && options.enabled\n && !(phase === 'start' && status.locked)) {\n\n if (status.locked) {\n page.x += status.dx;\n page.y += status.dy;\n client.x += status.dx;\n client.y += status.dy;\n\n return {\n dx: status.dx,\n dy: status.dy,\n };\n }\n }\n },\n\n noInner,\n noOuter,\n getRestrictionRect,\n};\n\nmodifiers.restrictEdges = restrictEdges;\nmodifiers.names.push('restrictEdges');\n\ndefaultOptions.perAction.restrictEdges = restrictEdges.defaults;\nresize.defaults.restrictEdges = restrictEdges.defaults;\n\nmodule.exports = restrictEdges;\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// });\n\nconst modifiers = require('./base');\nconst restrictEdges = require('./restrictEdges');\nconst utils = require('../utils');\nconst rectUtils = require('../utils/rect');\nconst defaultOptions = require('../defaultOptions');\nconst resize = require('../actions/resize');\n\nconst noMin = { width: -Infinity, height: -Infinity };\nconst noMax = { width: +Infinity, height: +Infinity };\n\nconst restrictSize = {\n defaults: {\n enabled: false,\n endOnly: false,\n min: null,\n max: null,\n },\n\n setOffset: function ({ interaction }) {\n return interaction.startOffset;\n },\n\n set: function (arg) {\n const { interaction, options } = arg;\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges;\n\n if (!interaction.interacting() || !edges) {\n return;\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted);\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin;\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax;\n\n arg.options = {\n enabled: options.enabled,\n endOnly: options.endOnly,\n inner: utils.extend({}, restrictEdges.noInner),\n outer: utils.extend({}, restrictEdges.noOuter),\n };\n\n if (edges.top) {\n arg.options.inner.top = rect.bottom - minSize.height;\n arg.options.outer.top = rect.bottom - maxSize.height;\n }\n else if (edges.bottom) {\n arg.options.inner.bottom = rect.top + minSize.height;\n arg.options.outer.bottom = rect.top + maxSize.height;\n }\n if (edges.left) {\n arg.options.inner.left = rect.right - minSize.width;\n arg.options.outer.left = rect.right - maxSize.width;\n }\n else if (edges.right) {\n arg.options.inner.right = rect.left + minSize.width;\n arg.options.outer.right = rect.left + maxSize.width;\n }\n\n restrictEdges.set(arg);\n },\n\n modifyCoords: restrictEdges.modifyCoords,\n};\n\nmodifiers.restrictSize = restrictSize;\nmodifiers.names.push('restrictSize');\n\ndefaultOptions.perAction.restrictSize = restrictSize.defaults;\nresize.defaults.restrictSize = restrictSize.defaults;\n\nmodule.exports = restrictSize;\n","const modifiers = require('./base');\nconst interact = require('../interact');\nconst utils = require('../utils');\nconst defaultOptions = require('../defaultOptions');\n\nconst snap = {\n defaults: {\n enabled: false,\n endOnly: false,\n range : Infinity,\n targets: null,\n offsets: null,\n\n relativePoints: null,\n },\n\n setOffset: function ({ interaction, interactable, element, rect, startOffset, options }) {\n const offsets = [];\n const optionsOrigin = utils.rectToXY(utils.resolveRectLike(options.origin));\n const origin = optionsOrigin || utils.getOriginXY(interactable, element, interaction.prepared.name);\n options = options || interactable.options[interaction.prepared.name].snap || {};\n\n let snapOffset;\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.startCoords.page.x - origin.x,\n y: interaction.startCoords.page.y - origin.y,\n };\n }\n else {\n const offsetRect = utils.resolveRectLike(options.offset, interactable, element, [interaction]);\n\n snapOffset = utils.rectToXY(offsetRect) || { x: 0, y: 0 };\n }\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (const { x: relativeX, y: relativeY } of options.relativePoints) {\n offsets.push({\n x: startOffset.left - (rect.width * relativeX) + snapOffset.x,\n y: startOffset.top - (rect.height * relativeY) + snapOffset.y,\n });\n }\n }\n else {\n offsets.push(snapOffset);\n }\n\n return offsets;\n },\n\n set: function ({ interaction, modifiedCoords, status, options, offset: offsets }) {\n const targets = [];\n let target;\n let page;\n let i;\n\n if (status.useStatusXY) {\n page = { x: status.x, y: status.y };\n }\n else {\n const origin = utils.getOriginXY(interaction.target, interaction.element, interaction.prepared.name);\n\n page = utils.extend({}, modifiedCoords);\n\n page.x -= origin.x;\n page.y -= origin.y;\n }\n\n status.realX = page.x;\n status.realY = page.y;\n\n let len = options.targets? options.targets.length : 0;\n\n for (const { x: offsetX, y: offsetY } of offsets) {\n const relativeX = page.x - offsetX;\n const relativeY = page.y - offsetY;\n\n for (const snapTarget of (options.targets || [])) {\n if (utils.is.function(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction);\n }\n else {\n target = snapTarget;\n }\n\n if (!target) { continue; }\n\n targets.push({\n x: utils.is.number(target.x) ? (target.x + offsetX) : relativeX,\n y: utils.is.number(target.y) ? (target.y + offsetY) : relativeY,\n\n range: utils.is.number(target.range)? target.range: options.range,\n });\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n };\n\n for (i = 0, len = targets.length; i < len; i++) {\n target = targets[i];\n\n const range = target.range;\n const dx = target.x - page.x;\n const dy = target.y - page.y;\n const distance = utils.hypot(dx, dy);\n let inRange = distance <= range;\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false;\n }\n\n if (!closest.target || (inRange\n // is the closest target in range?\n ? (closest.inRange && range !== Infinity\n // the pointer is relatively deeper in this target\n ? distance / range < closest.distance / closest.range\n // this target has Infinite range and the closest doesn't\n : (range === Infinity && closest.range !== Infinity)\n // OR this target is closer that the previous closest\n || distance < closest.distance)\n // The other is not in range and the pointer is closer to this target\n : (!closest.inRange && distance < closest.distance))) {\n\n closest.target = target;\n closest.distance = distance;\n closest.range = range;\n closest.inRange = inRange;\n closest.dx = dx;\n closest.dy = dy;\n\n status.range = range;\n }\n }\n\n let snapChanged;\n\n if (closest.target) {\n snapChanged = (status.modifiedX !== closest.target.x || status.modifiedY !== closest.target.y);\n\n status.modifiedX = closest.target.x;\n status.modifiedY = closest.target.y;\n }\n else {\n snapChanged = true;\n\n status.modifiedX = NaN;\n status.modifiedY = NaN;\n }\n\n status.dx = closest.dx;\n status.dy = closest.dy;\n\n status.changed = (snapChanged || (closest.inRange && !status.locked));\n status.locked = closest.inRange;\n },\n\n modifyCoords: function ({ page, client, status, phase, options }) {\n const relativePoints = options && options.relativePoints;\n\n if (options && options.enabled\n && !(phase === 'start' && relativePoints && relativePoints.length)) {\n\n if (status.locked) {\n page.x += status.dx;\n page.y += status.dy;\n client.x += status.dx;\n client.y += status.dy;\n }\n\n return {\n range : status.range,\n locked : status.locked,\n x : status.modifiedX,\n y : status.modifiedY,\n realX : status.realX,\n realY : status.realY,\n dx : status.dx,\n dy : status.dy,\n };\n }\n },\n};\n\ninteract.createSnapGrid = function (grid) {\n return function (x, y) {\n const limits = grid.limits || {\n left : -Infinity,\n right : Infinity,\n top : -Infinity,\n bottom: Infinity,\n };\n let offsetX = 0;\n let offsetY = 0;\n\n if (utils.is.object(grid.offset)) {\n offsetX = grid.offset.x;\n offsetY = grid.offset.y;\n }\n\n const gridx = Math.round((x - offsetX) / grid.x);\n const gridy = Math.round((y - offsetY) / grid.y);\n\n const newX = Math.max(limits.left, Math.min(limits.right , gridx * grid.x + offsetX));\n const newY = Math.max(limits.top , Math.min(limits.bottom, gridy * grid.y + offsetY));\n\n return {\n x: newX,\n y: newY,\n range: grid.range,\n };\n };\n};\n\nmodifiers.snap = snap;\nmodifiers.names.push('snap');\n\ndefaultOptions.perAction.snap = snap.defaults;\n\nmodule.exports = snap;\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nconst modifiers = require('./base');\nconst snap = require('./snap');\nconst defaultOptions = require('../defaultOptions');\nconst resize = require('../actions/resize');\nconst utils = require('../utils/');\n\nconst snapSize = {\n defaults: {\n enabled: false,\n endOnly: false,\n range : Infinity,\n targets: null,\n offsets: null,\n },\n\n setOffset: function (arg) {\n const { interaction, options } = arg;\n const edges = interaction.prepared.edges;\n\n if (!edges) { return; }\n\n arg.options = {\n relativePoints: [{\n x: edges.left? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: 'self',\n range: options.range,\n };\n\n const offsets = snap.setOffset(arg);\n arg.options = options;\n\n return offsets;\n },\n\n set: function (arg) {\n const { interaction, options, offset, modifiedCoords } = arg;\n const page = utils.extend({}, modifiedCoords);\n const relativeX = page.x - offset[0].x;\n const relativeY = page.y - offset[0].y;\n\n arg.options = utils.extend({}, options);\n arg.options.targets = [];\n\n for (const snapTarget of (options.targets || [])) {\n let target;\n\n if (utils.is.function(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction);\n }\n else {\n target = snapTarget;\n }\n\n if (!target) { continue; }\n\n if ('width' in target && 'height' in target) {\n target.x = target.width;\n target.y = target.height;\n }\n\n arg.options.targets.push(target);\n }\n\n snap.set(arg);\n },\n\n modifyCoords: function (arg) {\n const { options } = arg;\n\n arg.options = utils.extend({}, options);\n arg.options.enabled = options.enabled;\n arg.options.relativePoints = [null];\n\n snap.modifyCoords(arg);\n },\n};\n\nmodifiers.snapSize = snapSize;\nmodifiers.names.push('snapSize');\n\ndefaultOptions.perAction.snapSize = snapSize.defaults;\nresize.defaults.snapSize = snapSize.defaults;\n\nmodule.exports = snapSize;\n","const pointerUtils = require('../utils/pointerUtils');\n\nmodule.exports = class PointerEvent {\n /** */\n constructor (type, pointer, event, eventTarget, interaction) {\n pointerUtils.pointerExtend(this, event);\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer);\n }\n\n this.interaction = interaction;\n\n this.timeStamp = new Date().getTime();\n this.originalEvent = event;\n this.type = type;\n this.pointerId = pointerUtils.getPointerId(pointer);\n this.pointerType = pointerUtils.getPointerType(pointer);\n this.target = eventTarget;\n this.currentTarget = null;\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer);\n this.dt = this.timeStamp - interaction.downTimes[pointerIndex];\n\n const interval = this.timeStamp - interaction.tapTime;\n\n this.double = !!(interaction.prevTap\n && interaction.prevTap.type !== 'doubletap'\n && interaction.prevTap.target === this.target\n && interval < 500);\n }\n else if (type === 'doubletap') {\n this.dt = pointer.timeStamp - interaction.tapTime;\n }\n }\n\n subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX;\n this.pageY -= originY;\n this.clientX -= originX;\n this.clientY -= originY;\n\n return this;\n }\n\n addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX;\n this.pageY += originY;\n this.clientX += originX;\n this.clientY += originY;\n\n return this;\n }\n\n /** */\n preventDefault () {\n this.originalEvent.preventDefault();\n }\n\n /** */\n stopPropagation () {\n this.propagationStopped = true;\n }\n\n /** */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n};\n","const PointerEvent = require('./PointerEvent');\nconst Interaction = require('../Interaction');\nconst utils = require('../utils');\nconst defaults = require('../defaultOptions');\nconst signals = require('../utils/Signals').new();\n\nconst simpleSignals = [ 'down', 'up', 'cancel' ];\nconst simpleEvents = [ 'down', 'up', 'cancel' ];\n\nconst pointerEvents = {\n PointerEvent,\n fire,\n collectEventTargets,\n signals,\n defaults: {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n },\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n};\n\nfunction fire (arg) {\n const {\n interaction, pointer, event, eventTarget,\n type = arg.pointerEvent.type,\n targets = collectEventTargets(arg),\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction),\n } = arg;\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n };\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i];\n\n for (const prop in target.props || {}) {\n pointerEvent[prop] = target.props[prop];\n }\n\n const origin = utils.getOriginXY(target.eventable, target.element);\n\n pointerEvent.subtractOrigin(origin);\n pointerEvent.eventable = target.eventable;\n pointerEvent.currentTarget = target.element;\n\n target.eventable.fire(pointerEvent);\n\n pointerEvent.addOrigin(origin);\n\n if (pointerEvent.immediatePropagationStopped\n || (pointerEvent.propagationStopped\n && (i + 1) < targets.length && targets[i + 1].element !== pointerEvent.currentTarget)) {\n break;\n }\n }\n\n signals.fire('fired', signalArg);\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction, pointer, event, eventTarget,\n type: 'doubletap',\n })\n : pointerEvent;\n\n interaction.prevTap = prevTap;\n interaction.tapTime = prevTap.timeStamp;\n }\n\n return pointerEvent;\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }) {\n const pointerIndex = interaction.getPointerIndex(pointer);\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved\n // or if the pointerup target is different to the pointerdown target\n || !(interaction.downTargets[pointerIndex] && interaction.downTargets[pointerIndex] === eventTarget))) {\n return [];\n }\n\n const path = utils.getPath(eventTarget);\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [],\n element: null,\n };\n\n for (const element of path) {\n signalArg.element = element;\n\n signals.fire('collect-targets', signalArg);\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter(target =>\n target.eventable.options.holdDuration === interaction.holdTimers[pointerIndex].duration);\n }\n\n return signalArg.targets;\n}\n\nInteraction.signals.on('update-pointer-down', function ({ interaction, pointerIndex }) {\n interaction.holdTimers[pointerIndex] = { duration: Infinity, timeout: null };\n});\n\nInteraction.signals.on('remove-pointer', function ({ interaction, pointerIndex }) {\n interaction.holdTimers.splice(pointerIndex, 1);\n});\n\nInteraction.signals.on('move', function ({ interaction, pointer, event, eventTarget, duplicateMove }) {\n const pointerIndex = interaction.getPointerIndex(pointer);\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.holdTimers[pointerIndex].timeout);\n }\n\n fire({\n interaction, pointer, event, eventTarget,\n type: 'move',\n });\n }\n});\n\nInteraction.signals.on('down', function ({ interaction, pointer, event, eventTarget, pointerIndex }) {\n const timer = interaction.holdTimers[pointerIndex];\n const path = utils.getPath(eventTarget);\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [],\n path,\n element: null,\n };\n\n for (const element of path) {\n signalArg.element = element;\n\n signals.fire('collect-targets', signalArg);\n }\n\n if (!signalArg.targets.length) { return; }\n\n let minDuration = Infinity;\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration;\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration;\n }\n }\n\n timer.duration = minDuration;\n timer.timeout = setTimeout(function () {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n });\n }, minDuration);\n});\n\nInteraction.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' });\n }\n});\n\nfor (const signalName of ['up', 'cancel']) {\n Interaction.signals.on(signalName, function ({ interaction, pointerIndex }) {\n if (interaction.holdTimers[pointerIndex]) {\n clearTimeout(interaction.holdTimers[pointerIndex].timeout);\n }\n });\n}\n\nfunction createSignalListener (type) {\n return function ({ interaction, pointer, event, eventTarget }) {\n fire({ interaction, eventTarget, pointer, event, type });\n };\n}\n\nfor (let i = 0; i < simpleSignals.length; i++) {\n Interaction.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i]));\n}\n\nInteraction.signals.on('new', function (interaction) {\n interaction.prevTap = null; // the most recent tap event on this interaction\n interaction.tapTime = 0; // time of the most recent tap event\n interaction.holdTimers = []; // [{ duration, timeout }]\n});\n\ndefaults.pointerEvents = pointerEvents.defaults;\nmodule.exports = pointerEvents;\n","const pointerEvents = require('./base');\nconst Interaction = require('../Interaction');\n\npointerEvents.signals.on('new', onNew);\npointerEvents.signals.on('fired', onFired);\n\nfor (const signal of ['move', 'up', 'cancel', 'endall']) {\n Interaction.signals.on(signal, endHoldRepeat);\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return; }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1;\n}\n\nfunction onFired ({ interaction, pointerEvent, eventTarget, targets }) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return; }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval;\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return; }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(function () {\n pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n });\n }, interval);\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle);\n interaction.holdIntervalHandle = null;\n }\n}\n\n// don't repeat by default\npointerEvents.defaults.holdRepeatInterval = 0;\npointerEvents.types.push('holdrepeat');\n\nmodule.exports = {\n onNew,\n onFired,\n endHoldRepeat,\n};\n","const pointerEvents = require('./base');\nconst Interactable = require('../Interactable');\nconst is = require('../utils/is');\nconst scope = require('../scope');\nconst extend = require('../utils/extend');\nconst { merge } = require('../utils/arr');\n\npointerEvents.signals.on('collect-targets', function ({ targets, element, type, eventTarget }) {\n scope.interactables.forEachMatch(element, interactable => {\n const eventable = interactable.events;\n const options = eventable.options;\n\n if (eventable[type]\n && is.element(element)\n && interactable.testIgnoreAllow(options, element, eventTarget)) {\n\n targets.push({\n element,\n eventable,\n props: { interactable },\n });\n }\n });\n});\n\nInteractable.signals.on('new', function ({ interactable }) {\n interactable.events.getRect = function (element) {\n return interactable.getRect(element);\n };\n});\n\nInteractable.signals.on('set', function ({ interactable, options }) {\n extend(interactable.events.options, pointerEvents.defaults);\n extend(interactable.events.options, options);\n});\n\nmerge(Interactable.eventTypes, pointerEvents.types);\n\nInteractable.prototype.pointerEvents = function (options) {\n extend(this.events.options, options);\n\n return this;\n};\n\nconst __backCompatOption = Interactable.prototype._backCompatOption;\n\nInteractable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue);\n\n if (ret === this) {\n this.events.options[optionName] = newValue;\n }\n\n return ret;\n};\n\nInteractable.settingsMethods.push('pointerEvents');\n","const utils = require('./utils');\nconst events = require('./utils/events');\nconst signals = require('./utils/Signals').new();\n\nconst { getWindow } = require('./utils/window');\n\nconst scope = {\n signals,\n events,\n utils,\n\n // main document\n document: require('./utils/domObjects').document,\n // all documents being listened to\n documents: [],\n\n addDocument: function (doc, win) {\n // do nothing if document is already known\n if (utils.contains(scope.documents, doc)) { return false; }\n\n win = win || getWindow(doc);\n\n scope.documents.push(doc);\n events.documents.push(doc);\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== scope.document) {\n events.add(win, 'unload', scope.onWindowUnload);\n }\n\n signals.fire('add-document', { doc, win });\n },\n\n removeDocument: function (doc, win) {\n const index = scope.documents.indexOf(doc);\n\n win = win || getWindow(doc);\n\n events.remove(win, 'unload', scope.onWindowUnload);\n\n scope.documents.splice(index, 1);\n events.documents.splice(index, 1);\n\n signals.fire('remove-document', { win, doc });\n },\n\n onWindowUnload: function () {\n scope.removeDocument(this.document, this);\n },\n};\n\nmodule.exports = scope;\n","class Signals {\n constructor () {\n this.listeners = {\n // signalName: [listeners],\n };\n }\n\n on (name, listener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener];\n return;\n }\n\n this.listeners[name].push(listener);\n }\n\n off (name, listener) {\n if (!this.listeners[name]) { return; }\n\n const index = this.listeners[name].indexOf(listener);\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1);\n }\n }\n\n fire (name, arg) {\n const targetListeners = this.listeners[name];\n\n if (!targetListeners) { return; }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return;\n }\n }\n }\n}\n\nSignals.new = function () {\n return new Signals();\n};\n\nmodule.exports = Signals;\n","function contains (array, target) {\n return array.indexOf(target) !== -1;\n}\n\nfunction merge (target, source) {\n for (const item of source) {\n target.push(item);\n }\n\n return target;\n}\n\nmodule.exports = {\n contains,\n merge,\n};\n","const { window } = require('./window');\nconst is = require('./is');\nconst domObjects = require('./domObjects');\n\nconst Element = domObjects.Element;\nconst navigator = window.navigator;\n\nconst browser = {\n // Does the browser support touch input?\n supportsTouch: !!(('ontouchstart' in window) || is.function(window.DocumentTouch)\n && domObjects.document instanceof window.DocumentTouch),\n\n // Does the browser support PointerEvents\n supportsPointerEvent: !!domObjects.PointerEvent,\n\n isIOS: (/iP(hone|od|ad)/.test(navigator.platform)),\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n isIOS7: (/iP(hone|od|ad)/.test(navigator.platform)\n && /OS 7[^\\d]/.test(navigator.appVersion)),\n\n isIe9: /MSIE 9/.test(navigator.userAgent),\n\n // prefix matchesSelector\n prefixedMatchesSelector: 'matches' in Element.prototype\n ? 'matches': 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector': 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector': 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector': 'msMatchesSelector',\n\n pEventTypes: (domObjects.PointerEvent\n ? (domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n })\n : null),\n\n // because Webkit and Opera still use 'mousewheel' event type\n wheelEvent: 'onmousewheel' in domObjects.document? 'mousewheel': 'wheel',\n\n};\n\n// Opera Mobile must be handled differently\nbrowser.isOperaMobile = (navigator.appName === 'Opera'\n && browser.supportsTouch\n && navigator.userAgent.match('Presto'));\n\nmodule.exports = browser;\n","const is = require('./is');\n\nmodule.exports = function clone (source) {\n const dest = {};\n for (const prop in source) {\n if (is.plainObject(source[prop])) {\n dest[prop] = clone(source[prop]);\n } else {\n dest[prop] = source[prop];\n }\n }\n return dest;\n};\n","const domObjects = {};\nconst win = require('./window').window;\n\nfunction blank () {}\n\ndomObjects.document = win.document;\ndomObjects.DocumentFragment = win.DocumentFragment || blank;\ndomObjects.SVGElement = win.SVGElement || blank;\ndomObjects.SVGSVGElement = win.SVGSVGElement || blank;\ndomObjects.SVGElementInstance = win.SVGElementInstance || blank;\ndomObjects.Element = win.Element || blank;\ndomObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n\ndomObjects.Event = win.Event;\ndomObjects.Touch = win.Touch || blank;\ndomObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent);\n\nmodule.exports = domObjects;\n","const win = require('./window');\nconst browser = require('./browser');\nconst is = require('./is');\nconst domObjects = require('./domObjects');\n\nconst domUtils = {\n nodeContains: function (parent, child) {\n while (child) {\n if (child === parent) {\n return true;\n }\n\n child = child.parentNode;\n }\n\n return false;\n },\n\n closest: function (element, selector) {\n while (is.element(element)) {\n if (domUtils.matchesSelector(element, selector)) { return element; }\n\n element = domUtils.parentNode(element);\n }\n\n return null;\n },\n\n parentNode: function (node) {\n let parent = node.parentNode;\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n while ((parent = parent.host) && is.docFrag(parent)) {\n continue;\n }\n\n return parent;\n }\n\n return parent;\n },\n\n matchesSelector: function (element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ');\n }\n\n return element[browser.prefixedMatchesSelector](selector);\n },\n\n // Test for the element that's \"above\" all other qualifiers\n indexOfDeepestElement: function (elements) {\n let deepestZoneParents = [];\n let dropzoneParents = [];\n let dropzone;\n let deepestZone = elements[0];\n let index = deepestZone? 0: -1;\n let parent;\n let child;\n let i;\n let n;\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i];\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue;\n }\n\n if (!deepestZone) {\n deepestZone = dropzone;\n index = i;\n continue;\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue;\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone;\n index = i;\n continue;\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone;\n while (parent.parentNode && parent.parentNode !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent);\n parent = parent.parentNode;\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement\n && dropzone instanceof domObjects.SVGElement\n && !(dropzone instanceof domObjects.SVGSVGElement)) {\n\n if (dropzone === deepestZone.parentNode) {\n continue;\n }\n\n parent = dropzone.ownerSVGElement;\n }\n else {\n parent = dropzone;\n }\n\n dropzoneParents = [];\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent);\n parent = parent.parentNode;\n }\n\n n = 0;\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++;\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ];\n\n child = parents[0].lastChild;\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone;\n index = i;\n deepestZoneParents = [];\n\n break;\n }\n else if (child === parents[2]) {\n break;\n }\n\n child = child.previousSibling;\n }\n }\n\n return index;\n },\n\n matchesUpTo: function (element, selector, limit) {\n while (is.element(element)) {\n if (domUtils.matchesSelector(element, selector)) {\n return true;\n }\n\n element = domUtils.parentNode(element);\n\n if (element === limit) {\n return domUtils.matchesSelector(element, selector);\n }\n }\n\n return false;\n },\n\n getActualElement: function (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element);\n },\n\n getScrollXY: function (relevantWindow) {\n relevantWindow = relevantWindow || win.window;\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n };\n },\n\n getElementClientRect: function (element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0]);\n\n return clientRect && {\n left : clientRect.left,\n right : clientRect.right,\n top : clientRect.top,\n bottom: clientRect.bottom,\n width : clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n };\n },\n\n getElementRect: function (element) {\n const clientRect = domUtils.getElementClientRect(element);\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = domUtils.getScrollXY(win.getWindow(element));\n\n clientRect.left += scroll.x;\n clientRect.right += scroll.x;\n clientRect.top += scroll.y;\n clientRect.bottom += scroll.y;\n }\n\n return clientRect;\n },\n\n getPath: function (element) {\n const path = [];\n\n while (element) {\n path.push(element);\n element = domUtils.parentNode(element);\n }\n\n return path;\n },\n\n trySelector: value => {\n if (!is.string(value)) { return false; }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value);\n return true;\n },\n};\n\nmodule.exports = domUtils;\n","const is = require('./is');\nconst domUtils = require('./domUtils');\nconst pointerUtils = require('./pointerUtils');\nconst pExtend = require('./pointerExtend');\n\nconst { window } = require('./window');\nconst { contains } = require('./arr');\n\nconst elements = [];\nconst targets = [];\n\n// {\n// type: {\n// selectors: ['selector', ...],\n// contexts : [document, ...],\n// listeners: [[listener, capture, passive], ...]\n// }\n// }\nconst delegatedEvents = {};\nconst documents = [];\n\nconst supportsOptions = (() => {\n let supported = false;\n\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { supported = true; },\n });\n\n return supported;\n})();\n\nfunction add (element, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n let elementIndex = elements.indexOf(element);\n let target = targets[elementIndex];\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n };\n\n elementIndex = elements.push(element) - 1;\n targets.push(target);\n }\n\n if (!target.events[type]) {\n target.events[type] = [];\n target.typeCount++;\n }\n\n if (!contains(target.events[type], listener)) {\n element.addEventListener(type, listener, supportsOptions? options : !!options.capture);\n target.events[type].push(listener);\n }\n}\n\nfunction remove (element, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n const elementIndex = elements.indexOf(element);\n const target = targets[elementIndex];\n\n if (!target || !target.events) {\n return;\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(element, type, 'all');\n }\n }\n return;\n }\n\n if (target.events[type]) {\n const len = target.events[type].length;\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options);\n }\n return;\n }\n else {\n for (let i = 0; i < len; i++) {\n if (target.events[type][i] === listener) {\n element.removeEventListener(`on${type}`, listener, supportsOptions? options : !!options.capture);\n target.events[type].splice(i, 1);\n\n break;\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n target.events[type] = null;\n target.typeCount--;\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1);\n elements.splice(elementIndex, 1);\n }\n}\n\nfunction addDelegate (selector, context, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n selectors: [],\n contexts : [],\n listeners: [],\n };\n\n // add delegate listener functions\n for (const doc of documents) {\n add(doc, type, delegateListener);\n add(doc, type, delegateUseCapture, true);\n }\n }\n\n const delegated = delegatedEvents[type];\n let index;\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector\n && delegated.contexts[index] === context) {\n break;\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length;\n\n delegated.selectors.push(selector);\n delegated.contexts .push(context);\n delegated.listeners.push([]);\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive]);\n}\n\nfunction removeDelegate (selector, context, type, listener, optionalArg) {\n const options = getOptions(optionalArg);\n const delegated = delegatedEvents[type];\n let matchFound = false;\n let index;\n\n if (!delegated) { return; }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector\n && delegated.contexts[index] === context) {\n\n const listeners = delegated.listeners[index];\n\n // each item of the listeners array is an array: [function, capture, passive]\n for (let i = listeners.length - 1; i >= 0; i--) {\n const [fn, capture, passive] = listeners[i];\n\n // check if the listener functions and capture and passive flags match\n if (fn === listener && capture === !!options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1);\n\n // if all listeners for this interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1);\n delegated.contexts .splice(index, 1);\n delegated.listeners.splice(index, 1);\n\n // remove delegate function from context\n remove(context, type, delegateListener);\n remove(context, type, delegateUseCapture, true);\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null;\n }\n }\n\n // only remove one listener\n matchFound = true;\n break;\n }\n }\n\n if (matchFound) { break; }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event, optionalArg) {\n const options = getOptions(optionalArg);\n const fakeEvent = {};\n const delegated = delegatedEvents[event.type];\n const [eventTarget] = (pointerUtils.getEventTargets(event));\n let element = eventTarget;\n\n // duplicate the event so that currentTarget can be changed\n pExtend(fakeEvent, event);\n\n fakeEvent.originalEvent = event;\n fakeEvent.preventDefault = preventOriginalDefault;\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i];\n const context = delegated.contexts[i];\n\n if (domUtils.matchesSelector(element, selector)\n && domUtils.nodeContains(context, eventTarget)\n && domUtils.nodeContains(context, element)) {\n\n const listeners = delegated.listeners[i];\n\n fakeEvent.currentTarget = element;\n\n for (let j = 0; j < listeners.length; j++) {\n const [fn, capture, passive] = listeners[j];\n\n if (capture === !!options.capture && passive === options.passive) {\n fn(fakeEvent);\n }\n }\n }\n }\n\n element = domUtils.parentNode(element);\n }\n}\n\nfunction delegateUseCapture (event) {\n return delegateListener.call(this, event, true);\n}\n\nfunction preventOriginalDefault () {\n this.originalEvent.preventDefault();\n}\n\nfunction getOptions (param) {\n return is.object(param)? param : { capture: param };\n}\n\nmodule.exports = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions,\n\n _elements: elements,\n _targets: targets,\n};\n","module.exports = function extend (dest, source) {\n for (const prop in source) {\n dest[prop] = source[prop];\n }\n return dest;\n};\n","const {\n resolveRectLike,\n rectToXY,\n} = require('./rect');\n\nmodule.exports = function (target, element, action) {\n const actionOptions = target.options[action];\n const actionOrigin = actionOptions && actionOptions.origin;\n const origin = actionOrigin || target.options.origin;\n\n const originRect = resolveRectLike(origin, target, element, [target && element]);\n\n return rectToXY(originRect) || { x: 0, y: 0 };\n};\n","module.exports = (x, y) => Math.sqrt(x * x + y * y);\n","const extend = require('./extend');\nconst win = require('./window');\n\nconst utils = {\n warnOnce: function (method, message) {\n let warned = false;\n\n return function () {\n if (!warned) {\n win.window.console.warn(message);\n warned = true;\n }\n\n return method.apply(this, arguments);\n };\n },\n\n // http://stackoverflow.com/a/5634528/2280888\n _getQBezierValue: function (t, p1, p2, p3) {\n const iT = 1 - t;\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3;\n },\n\n getQuadraticCurvePoint: function (startX, startY, cpX, cpY, endX, endY, position) {\n return {\n x: utils._getQBezierValue(position, startX, cpX, endX),\n y: utils._getQBezierValue(position, startY, cpY, endY),\n };\n },\n\n // http://gizma.com/easing/\n easeOutQuad: function (t, b, c, d) {\n t /= d;\n return -c * t*(t-2) + b;\n },\n\n copyAction: function (dest, src) {\n dest.name = src.name;\n dest.axis = src.axis;\n dest.edges = src.edges;\n\n return dest;\n },\n\n is : require('./is'),\n extend : extend,\n hypot : require('./hypot'),\n getOriginXY: require('./getOriginXY'),\n};\n\nextend(utils, require('./arr'));\nextend(utils, require('./domUtils'));\nextend(utils, require('./pointerUtils'));\nextend(utils, require('./rect'));\n\nmodule.exports = utils;\n","const scope = require('../scope');\nconst utils = require('./index');\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search: function (pointer, eventType, eventTarget) {\n const pointerType = utils.getPointerType(pointer);\n const pointerId = utils.getPointerId(pointer);\n const details = { pointer, pointerId, pointerType, eventType, eventTarget };\n\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details);\n\n if (interaction) {\n return interaction;\n }\n }\n },\n\n // try to resume simulation with a new pointer\n simulationResume: function ({ pointerType, eventType, eventTarget }) {\n if (!/down|start/i.test(eventType)) {\n return null;\n }\n\n for (const interaction of scope.interactions) {\n let element = eventTarget;\n\n if (interaction.simulation && interaction.simulation.allowResume\n && (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction;\n }\n element = utils.parentNode(element);\n }\n }\n }\n\n return null;\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen: function ({ pointerId, pointerType, eventType }) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null;\n }\n\n let firstNonActive;\n\n for (const interaction of scope.interactions) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !utils.contains(interaction.pointerIds, pointerId)) { continue; }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction;\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction;\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive;\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction;\n }\n }\n\n return null;\n },\n\n // get interaction that has this pointer\n hasPointer: function ({ pointerId }) {\n for (const interaction of scope.interactions) {\n if (utils.contains(interaction.pointerIds, pointerId)) {\n return interaction;\n }\n }\n },\n\n // get first idle interaction with a matching pointerType\n idle: function ({ pointerType }) {\n for (const interaction of scope.interactions) {\n // if there's already a pointer held down\n if (interaction.pointerIds.length === 1) {\n const target = interaction.target;\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !target.options.gesture.enabled) {\n continue;\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointerIds.length >= 2) {\n continue;\n }\n\n if (!interaction.interacting() && (pointerType === interaction.pointerType)) {\n return interaction;\n }\n }\n\n return null;\n },\n};\n\nmodule.exports = finder;\n","const win = require('./window');\nconst isWindow = require('./isWindow');\n\nconst is = {\n array : () => {},\n\n window : thing => thing === win.window || isWindow(thing),\n\n docFrag : thing => is.object(thing) && thing.nodeType === 11,\n\n object : thing => !!thing && (typeof thing === 'object'),\n\n function: thing => typeof thing === 'function',\n\n number : thing => typeof thing === 'number' ,\n\n bool : thing => typeof thing === 'boolean' ,\n\n string : thing => typeof thing === 'string' ,\n\n element: thing => {\n if (!thing || (typeof thing !== 'object')) { return false; }\n\n const _window = win.getWindow(thing) || win.window;\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element //DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string');\n },\n\n plainObject: thing => is.object(thing) && thing.constructor.name === 'Object',\n};\n\nis.array = thing => (is.object(thing)\n && (typeof thing.length !== 'undefined')\n && is.function(thing.splice));\n\nmodule.exports = is;\n","module.exports = (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window);\n","function pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = module.exports.prefixedPropREs;\n let deprecated = false;\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true;\n break;\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop];\n }\n }\n return dest;\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n};\n\nmodule.exports = pointerExtend;\n","const hypot = require('./hypot');\nconst browser = require('./browser');\nconst dom = require('./domObjects');\nconst domUtils = require('./domUtils');\nconst domObjects = require('./domObjects');\nconst is = require('./is');\nconst pointerExtend = require('./pointerExtend');\n\nconst pointerUtils = {\n copyCoords: function (dest, src) {\n dest.page = dest.page || {};\n dest.page.x = src.page.x;\n dest.page.y = src.page.y;\n\n dest.client = dest.client || {};\n dest.client.x = src.client.x;\n dest.client.y = src.client.y;\n\n dest.timeStamp = src.timeStamp;\n },\n\n setCoordDeltas: function (targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x;\n targetObj.page.y = cur.page.y - prev.page.y;\n targetObj.client.x = cur.client.x - prev.client.x;\n targetObj.client.y = cur.client.y - prev.client.y;\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n\n // set pointer velocity\n const dt = Math.max(targetObj.timeStamp / 1000, 0.001);\n\n targetObj.page.speed = hypot(targetObj.page.x, targetObj.page.y) / dt;\n targetObj.page.vx = targetObj.page.x / dt;\n targetObj.page.vy = targetObj.page.y / dt;\n\n targetObj.client.speed = hypot(targetObj.client.x, targetObj.page.y) / dt;\n targetObj.client.vx = targetObj.client.x / dt;\n targetObj.client.vy = targetObj.client.y / dt;\n },\n\n isNativePointer: function (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch);\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY: function (type, pointer, xy) {\n xy = xy || {};\n type = type || 'page';\n\n xy.x = pointer[type + 'X'];\n xy.y = pointer[type + 'Y'];\n\n return xy;\n },\n\n getPageXY: function (pointer, page) {\n page = page || {};\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page);\n\n page.x += window.scrollX;\n page.y += window.scrollY;\n }\n else {\n pointerUtils.getXY('page', pointer, page);\n }\n\n return page;\n },\n\n getClientXY: function (pointer, client) {\n client = client || {};\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client);\n }\n else {\n pointerUtils.getXY('client', pointer, client);\n }\n\n return client;\n },\n\n getPointerId: function (pointer) {\n return is.number(pointer.pointerId)? pointer.pointerId : pointer.identifier;\n },\n\n setCoords: function (targetObj, pointers, timeStamp) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0]);\n\n const tmpXY = {};\n\n pointerUtils.getPageXY(pointer, tmpXY);\n targetObj.page.x = tmpXY.x;\n targetObj.page.y = tmpXY.y;\n\n pointerUtils.getClientXY(pointer, tmpXY);\n targetObj.client.x = tmpXY.x;\n targetObj.client.y = tmpXY.y;\n\n targetObj.timeStamp = is.number(timeStamp) ? timeStamp :new Date().getTime();\n },\n\n pointerExtend: pointerExtend,\n\n getTouchPair: function (event) {\n const touches = [];\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0];\n touches[1] = event[1];\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0];\n touches[1] = event.changedTouches[0];\n }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0];\n touches[1] = event.changedTouches[1];\n }\n }\n else {\n touches[0] = event.touches[0];\n touches[1] = event.touches[1];\n }\n }\n\n return touches;\n },\n\n pointerAverage: function (pointers) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n };\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop];\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length;\n }\n\n return average;\n },\n\n touchBBox: function (event) {\n if (!event.length && !(event.touches && event.touches.length > 1)) {\n return;\n }\n\n const touches = pointerUtils.getTouchPair(event);\n const minX = Math.min(touches[0].pageX, touches[1].pageX);\n const minY = Math.min(touches[0].pageY, touches[1].pageY);\n const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n\n touchDistance: function (event, deltaSource) {\n const sourceX = deltaSource + 'X';\n const sourceY = deltaSource + 'Y';\n const touches = pointerUtils.getTouchPair(event);\n\n\n const dx = touches[0][sourceX] - touches[1][sourceX];\n const dy = touches[0][sourceY] - touches[1][sourceY];\n\n return hypot(dx, dy);\n },\n\n touchAngle: function (event, prevAngle, deltaSource) {\n const sourceX = deltaSource + 'X';\n const sourceY = deltaSource + 'Y';\n const touches = pointerUtils.getTouchPair(event);\n const dx = touches[1][sourceX] - touches[0][sourceX];\n const dy = touches[1][sourceY] - touches[0][sourceY];\n const angle = 180 * Math.atan2(dy , dx) / Math.PI;\n\n return angle;\n },\n\n getPointerType: function (pointer) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined,'touch', 'pen', 'mouse'][pointer.pointerType]\n // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof domObjects.Touch\n ? 'touch'\n : 'mouse';\n },\n\n // [ event.target, event.currentTarget ]\n getEventTargets: function (event) {\n const path = is.function(event.composedPath) ? event.composedPath() : event.path;\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ];\n },\n};\n\nmodule.exports = pointerUtils;\n","const { window } = require('./window');\n\nconst vendors = ['ms', 'moz', 'webkit', 'o'];\nlet lastTime = 0;\nlet request;\nlet cancel;\n\nfor (let x = 0; x < vendors.length && !window.requestAnimationFrame; x++) {\n request = window[vendors[x] + 'RequestAnimationFrame'];\n cancel = window[vendors[x] +'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n}\n\nif (!request) {\n request = function (callback) {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = setTimeout(function () { callback(currTime + timeToCall); },\n timeToCall);\n\n lastTime = currTime + timeToCall;\n return id;\n };\n}\n\nif (!cancel) {\n cancel = function (id) {\n clearTimeout(id);\n };\n}\n\nmodule.exports = {\n request,\n cancel,\n};\n","const extend = require('./extend');\nconst is = require('./is');\nconst {\n closest,\n parentNode,\n getElementRect,\n} = require('./domUtils');\n\nconst rectUtils = {\n getStringOptionResult: function (value, interactable, element) {\n if (!is.string(value)) {\n return null;\n }\n\n if (value === 'parent') {\n value = parentNode(element);\n }\n else if (value === 'self') {\n value = interactable.getRect(element);\n }\n else {\n value = closest(element, value);\n }\n\n return value;\n },\n\n resolveRectLike: function (value, interactable, element, functionArgs) {\n value = rectUtils.getStringOptionResult(value, interactable, element) || value;\n\n if (is.function(value)) {\n value = value.apply(null, functionArgs);\n }\n\n if (is.element(value)) {\n value = getElementRect(value);\n }\n\n return value;\n },\n\n rectToXY: function (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n };\n },\n\n xywhToTlbr: function (rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect);\n\n rect.left = rect.x || 0;\n rect.top = rect.y || 0;\n rect.right = rect.right || (rect.left + rect.width);\n rect.bottom = rect.bottom || (rect.top + rect.height);\n }\n\n return rect;\n },\n\n tlbrToXywh: function (rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect);\n\n rect.x = rect.left || 0;\n rect.top = rect.top || 0;\n rect.width = rect.width || (rect.right - rect.x);\n rect.height = rect.height || (rect.bottom - rect.y);\n }\n\n return rect;\n },\n};\n\nmodule.exports = rectUtils;\n","const win = module.exports;\nconst isWindow = require('./isWindow');\n\nfunction init (window) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.realWindow = window;\n\n // create a TextNode\n const el = window.document.createTextNode('');\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document\n && typeof window.wrap === 'function'\n && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window);\n }\n\n win.window = window;\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined;\n win.realWindow = undefined;\n}\nelse {\n init(window);\n}\n\nwin.getWindow = function getWindow (node) {\n if (isWindow(node)) {\n return node;\n }\n\n const rootNode = (node.ownerDocument || node);\n\n return rootNode.defaultView || rootNode.parentWindow || win.window;\n};\n\nwin.init = init;\n","\"use strict\"\n\nmodule.exports = require(\"./stream/stream\")\n","/* eslint-enable */\nStream.SKIP = {}\nStream.lift = lift\nStream.scan = scan\nStream.merge = merge\nStream.combine = combine\nStream.scanMerge = scanMerge\nStream[\"fantasy-land/of\"] = Stream\n\nlet warnedHalt = false\nObject.defineProperty(Stream, \"HALT\", {\n\tget: function() {\n\t\twarnedHalt && console.log(\"HALT is deprecated and has been renamed to SKIP\");\n\t\twarnedHalt = true\n\t\treturn Stream.SKIP\n\t}\n})\n\nfunction Stream(value) {\n\tvar dependentStreams = []\n\tvar dependentFns = []\n\n\tfunction stream(v) {\n\t\tif (arguments.length && v !== Stream.SKIP && open(stream)) {\n\t\t\tvalue = v\n\t\t\tstream.changing()\n\t\t\tstream.state = \"active\"\n\t\t\tdependentStreams.forEach(function(s, i) { s(dependentFns[i](value)) })\n\t\t}\n\n\t\treturn value\n\t}\n\n\tstream.constructor = Stream\n\tstream.state = arguments.length && value !== Stream.SKIP ? \"active\" : \"pending\"\n\n\tstream.changing = function() {\n\t\topen(stream) && (stream.state = \"changing\")\n\t\tdependentStreams.forEach(function(s) {\n\t\t\ts.dependent && s.dependent.changing()\n\t\t\ts.changing()\n\t\t})\n\t}\n\n\tstream.map = function(fn, ignoreInitial) {\n\t\tvar target = stream.state === \"active\" && ignoreInitial !== Stream.SKIP\n\t\t\t? Stream(fn(value))\n\t\t\t: Stream()\n\n\t\tdependentStreams.push(target)\n\t\tdependentFns.push(fn)\n\t\treturn target\n\t}\n\n\tlet end\n\tfunction createEnd() {\n\t\tend = Stream()\n\t\tend.map(function(value) {\n\t\t\tif (value === true) {\n\t\t\t\tstream.state = \"ended\"\n\t\t\t\tdependentStreams.length = dependentFns.length = 0\n\t\t\t}\n\t\t\treturn value\n\t\t})\n\t\treturn end\n\t}\n\n\tstream.toJSON = function() { return value != null && typeof value.toJSON === \"function\" ? value.toJSON() : value }\n\n\tstream[\"fantasy-land/map\"] = stream.map\n\tstream[\"fantasy-land/ap\"] = function(x) { return combine(function(s1, s2) { return s1()(s2()) }, [x, stream]) }\n\n\tObject.defineProperty(stream, \"end\", {\n\t\tget: function() { return end || createEnd() }\n\t})\n\n\treturn stream\n}\n\nfunction combine(fn, streams) {\n\tvar ready = streams.every(function(s) {\n\t\tif (s.constructor !== Stream)\n\t\t\tthrow new Error(\"Ensure that each item passed to stream.combine/stream.merge/lift is a stream\")\n\t\treturn s.state === \"active\"\n\t})\n\tvar stream = ready\n\t\t? Stream(fn.apply(null, streams.concat([streams])))\n\t\t: Stream()\n\n\tlet changed = []\n\n\tstreams.forEach(function(s) {\n\t\ts.map(function(value) {\n\t\t\tchanged.push(s)\n\t\t\tif (ready || streams.every(function(s) { return s.state !== \"pending\" })) {\n\t\t\t\tready = true\n\t\t\t\tstream(fn.apply(null, streams.concat([changed])))\n\t\t\t\tchanged = []\n\t\t\t}\n\t\t\treturn value\n\t\t}, Stream.SKIP).parent = stream\n\t})\n\n\treturn stream\n}\n\nfunction merge(streams) {\n\treturn combine(function() { return streams.map(function(s) { return s() }) }, streams)\n}\n\nfunction scan(fn, acc, origin) {\n\tvar stream = origin.map(function(v) {\n\t\tacc = fn(acc, v)\n\t\treturn acc\n\t})\n\tstream(acc)\n\treturn stream\n}\n\nfunction scanMerge(tuples, seed) {\n\tvar streams = tuples.map(function(tuple) { return tuple[0] })\n\n\tvar stream = combine(function() {\n\t\tvar changed = arguments[arguments.length - 1]\n\t\tstreams.forEach(function(stream, i) {\n\t\t\tif (changed.indexOf(stream) > -1)\n\t\t\t\tseed = tuples[i][1](seed, stream())\n\t\t})\n\n\t\treturn seed\n\t}, streams)\n\n\tstream(seed)\n\n\treturn stream\n}\n\nfunction lift() {\n\tvar fn = arguments[0]\n\tvar streams = Array.prototype.slice.call(arguments, 1)\n\treturn merge(streams).map(function(streams) {\n\t\treturn fn.apply(undefined, streams)\n\t})\n}\n\nfunction open(s) {\n\treturn s.state === \"pending\" || s.state === \"active\" || s.state === \"changing\"\n}\n\n\nexport default Stream","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define([],r):\"object\"==typeof exports?exports.textMaskCore=r():e.textMaskCore=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var t={};return r.m=e,r.c=t,r.p=\"\",r(0)}([function(e,r,t){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,\"__esModule\",{value:!0});var o=t(3);Object.defineProperty(r,\"conformToMask\",{enumerable:!0,get:function(){return n(o).default}});var i=t(2);Object.defineProperty(r,\"adjustCaretPosition\",{enumerable:!0,get:function(){return n(i).default}});var a=t(5);Object.defineProperty(r,\"createTextMaskInputElement\",{enumerable:!0,get:function(){return n(a).default}})},function(e,r){\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0}),r.placeholderChar=\"_\",r.strFunction=\"function\"},function(e,r){\"use strict\";function t(e){var r=e.previousConformedValue,t=void 0===r?o:r,i=e.previousPlaceholder,a=void 0===i?o:i,u=e.currentCaretPosition,l=void 0===u?0:u,s=e.conformedValue,f=e.rawValue,d=e.placeholderChar,c=e.placeholder,p=e.indexesOfPipedChars,v=void 0===p?n:p,h=e.caretTrapIndexes,m=void 0===h?n:h;if(0===l||!f.length)return 0;var y=f.length,g=t.length,b=c.length,C=s.length,P=y-g,k=P>0,x=0===g,O=P>1&&!k&&!x;if(O)return l;var T=k&&(t===s||s===c),w=0,M=void 0,S=void 0;if(T)w=l-P;else{var j=s.toLowerCase(),_=f.toLowerCase(),V=_.substr(0,l).split(o),A=V.filter(function(e){return j.indexOf(e)!==-1});S=A[A.length-1];var N=a.substr(0,A.length).split(o).filter(function(e){return e!==d}).length,E=c.substr(0,A.length).split(o).filter(function(e){return e!==d}).length,F=E!==N,R=void 0!==a[A.length-1]&&void 0!==c[A.length-2]&&a[A.length-1]!==d&&a[A.length-1]!==c[A.length-1]&&a[A.length-1]===c[A.length-2];!k&&(F||R)&&N>0&&c.indexOf(S)>-1&&void 0!==f[l]&&(M=!0,S=f[l]);for(var I=v.map(function(e){return j[e]}),J=I.filter(function(e){return e===S}).length,W=A.filter(function(e){return e===S}).length,q=c.substr(0,c.indexOf(d)).split(o).filter(function(e,r){return e===S&&f[r]!==e}).length,L=q+W+J+(M?1:0),z=0,B=0;B=L)break}}if(k){for(var G=w,H=w;H<=b;H++)if(c[H]===d&&(G=H),c[H]===d||m.indexOf(H)!==-1||H===b)return G}else if(M){for(var K=w-1;K>=0;K--)if(s[K]===S||m.indexOf(K)!==-1||0===K)return K}else for(var Q=w;Q>=0;Q--)if(c[Q-1]===d||m.indexOf(Q)!==-1||0===Q)return Q}Object.defineProperty(r,\"__esModule\",{value:!0}),r.default=t;var n=[],o=\"\"},function(e,r,t){\"use strict\";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(0,i.isArray)(r)){if((\"undefined\"==typeof r?\"undefined\":o(r))!==a.strFunction)throw new Error(\"Text-mask:conformToMask; The mask property must be an array.\");r=r(e,t),r=(0,i.processCaretTraps)(r).maskWithoutCaretTraps}var n=t.guide,s=void 0===n||n,f=t.previousConformedValue,d=void 0===f?l:f,c=t.placeholderChar,p=void 0===c?a.placeholderChar:c,v=t.placeholder,h=void 0===v?(0,i.convertMaskToPlaceholder)(r,p):v,m=t.currentCaretPosition,y=t.keepCharPositions,g=s===!1&&void 0!==d,b=e.length,C=d.length,P=h.length,k=r.length,x=b-C,O=x>0,T=m+(O?-x:0),w=T+Math.abs(x);if(y===!0&&!O){for(var M=l,S=T;S=T&&r=0;_--){var V=j[_].char;if(V!==p){var A=_>=T&&C===k;V===h[A?_-x:_]&&j.splice(_,1)}}var N=l,E=!1;e:for(var F=0;F0)for(;j.length>0;){var I=j.shift(),J=I.char,W=I.isNew;if(J===p&&g!==!0){N+=p;continue e}if(r[F].test(J)){if(y===!0&&W!==!1&&d!==l&&s!==!1&&O){for(var q=j.length,L=null,z=0;z0&&void 0!==arguments[0]?arguments[0]:f,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.placeholderChar;if(!o(e))throw new Error(\"Text-mask:convertMaskToPlaceholder; The mask property must be an array.\");if(e.indexOf(r)!==-1)throw new Error(\"Placeholder character must not be used as part of the mask. Please specify a character that is not present in your mask as your placeholder character.\\n\\n\"+(\"The placeholder character that was received is: \"+JSON.stringify(r)+\"\\n\\n\")+(\"The mask that was received is: \"+JSON.stringify(e)));return e.map(function(e){return e instanceof RegExp?r:e}).join(\"\")}function o(e){return Array.isArray&&Array.isArray(e)||e instanceof Array}function i(e){return\"string\"==typeof e||e instanceof String}function a(e){return\"number\"==typeof e&&void 0===e.length&&!isNaN(e)}function u(e){return\"undefined\"==typeof e||null===e}function l(e){for(var r=[],t=void 0;t=e.indexOf(d),t!==-1;)r.push(t),e.splice(t,1);return{maskWithoutCaretTraps:e,indexes:r}}Object.defineProperty(r,\"__esModule\",{value:!0}),r.convertMaskToPlaceholder=n,r.isArray=o,r.isString=i,r.isNumber=a,r.isNil=u,r.processCaretTraps=l;var s=t(1),f=[],d=\"[]\"},function(e,r,t){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var r={previousConformedValue:void 0,previousPlaceholder:void 0};return{state:r,update:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,o=n.inputElement,s=n.mask,d=n.guide,m=n.pipe,g=n.placeholderChar,b=void 0===g?v.placeholderChar:g,C=n.keepCharPositions,P=void 0!==C&&C,k=n.showMask,x=void 0!==k&&k;if(\"undefined\"==typeof t&&(t=o.value),t!==r.previousConformedValue){(\"undefined\"==typeof s?\"undefined\":l(s))===y&&void 0!==s.pipe&&void 0!==s.mask&&(m=s.pipe,s=s.mask);var O=void 0,T=void 0;if(s instanceof Array&&(O=(0,p.convertMaskToPlaceholder)(s,b)),s!==!1){var w=a(t),M=o.selectionEnd,S=r.previousConformedValue,j=r.previousPlaceholder,_=void 0;if((\"undefined\"==typeof s?\"undefined\":l(s))===v.strFunction){if(T=s(w,{currentCaretPosition:M,previousConformedValue:S,placeholderChar:b}),T===!1)return;var V=(0,p.processCaretTraps)(T),A=V.maskWithoutCaretTraps,N=V.indexes;T=A,_=N,O=(0,p.convertMaskToPlaceholder)(T,b)}else T=s;var E={previousConformedValue:S,guide:d,placeholderChar:b,pipe:m,placeholder:O,currentCaretPosition:M,keepCharPositions:P},F=(0,c.default)(w,T,E),R=F.conformedValue,I=(\"undefined\"==typeof m?\"undefined\":l(m))===v.strFunction,J={};I&&(J=m(R,u({rawValue:w},E)),J===!1?J={value:S,rejected:!0}:(0,p.isString)(J)&&(J={value:J}));var W=I?J.value:R,q=(0,f.default)({previousConformedValue:S,previousPlaceholder:j,conformedValue:W,placeholder:O,rawValue:w,currentCaretPosition:M,placeholderChar:b,indexesOfPipedChars:J.indexesOfPipedChars,caretTrapIndexes:_}),L=W===O&&0===q,z=x?O:h,B=L?z:W;r.previousConformedValue=B,r.previousPlaceholder=O,o.value!==B&&(o.value=B,i(o,q))}}}}}function i(e,r){document.activeElement===e&&(g?b(function(){return e.setSelectionRange(r,r,m)},0):e.setSelectionRange(r,r,m))}function a(e){if((0,p.isString)(e))return e;if((0,p.isNumber)(e))return String(e);if(void 0===e||null===e)return h;throw new Error(\"The 'value' provided to Text Mask needs to be a string or a number. The value received was:\\n\\n \"+JSON.stringify(e))}Object.defineProperty(r,\"__esModule\",{value:!0});var u=Object.assign||function(e){for(var r=1;r {\r\n let _value = e.target.value\r\n if (attrs.oninput) {\r\n _value = this.events.oninput(e)\r\n }\r\n attrs.setValue(_value)\r\n if (attrs.error) {\r\n attrs.error = this.model.valid(this.field)\r\n }\r\n },\r\n onchange: (e) => {\r\n this.error = this.model.valid(this.field)\r\n }\r\n })),\r\n (this.error) ?\r\n m('.invalid-feedback', [\r\n this.error.toString()\r\n ]) : ''\r\n }\r\n}\r\n\r\nexport default TextField","import m from 'mithril'\r\nimport classNames from 'classnames'\r\nimport {\r\n createTextMaskInputElement\r\n} from 'text-mask-core'\r\n\r\n\r\nconst _defaultOptions = {\r\n type: 'text',\r\n label: false,\r\n classes: {},\r\n validate: () => {},\r\n mask: false,\r\n suffix: false\r\n}\r\n\r\n//輸入框\r\n/**\r\n * params: {\r\n * attrs,\r\n * mask: {}, https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#readme\r\n * suffix: mithril component 後置工具適用於刪除或新增\r\n * append: mithril component 前置icon\r\n * }\r\n */\r\nclass TextBox {\r\n constructor(vnode) {\r\n const defaultOptions = {\r\n type: 'text'\r\n }\r\n this.options = vnode.attrs\r\n this.label = false\r\n this.active = false\r\n this.errors = []\r\n this.classes = {}\r\n\r\n //驗證\r\n this.validate = () => {}\r\n //遮罩\r\n this.mask = false\r\n //icon\r\n this.suffix = false\r\n\r\n this.append = false\r\n this.prepend = false\r\n\r\n\r\n if (vnode.attrs.hasOwnProperty('label')) {\r\n this.label = vnode.attrs.label\r\n // vnode.attrs.label = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('placeholder')) {\r\n this.active = true\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('validate')) {\r\n this.validate = vnode.attrs.validate\r\n vnode.attrs.validate = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('helper')) {\r\n vnode.attrs.helper = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('class')) {\r\n this.classes = vnode.attrs.class\r\n vnode.attrs.class = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('mask')) {\r\n this.mask = vnode.attrs.mask\r\n vnode.attrs.mask = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('suffix')) {\r\n this.suffix = vnode.attrs.suffix\r\n vnode.attrs.suffix = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('append')) {\r\n this.append = vnode.attrs.append\r\n vnode.attrs.append = undefined\r\n }\r\n\r\n if (vnode.attrs.hasOwnProperty('prepend')) {\r\n this.prepend = vnode.attrs.prepend\r\n vnode.attrs.prepend = undefined\r\n }\r\n\r\n this.options = Object.assign(defaultOptions, vnode.attrs)\r\n }\r\n handleOptions(attrs) {\r\n\r\n const _options = Object.assign({}, attrs, {\r\n label: undefined,\r\n validate: undefined,\r\n helper: undefined,\r\n class: undefined,\r\n mask: undefined,\r\n suffix: undefined,\r\n append: undefined,\r\n prepend: undefined,\r\n error: undefined\r\n })\r\n\r\n return _options\r\n }\r\n hasError(error) {\r\n if (this.errors && this.errors.length > 0) {\r\n return this.errors\r\n }\r\n if (error) {\r\n return Array.isArray(error) ? error[0] : error\r\n }\r\n return false\r\n }\r\n initTextMask(dom) {\r\n this.textMaskInputElement = createTextMaskInputElement(Object.assign({}, {\r\n inputElement: dom\r\n }, this.mask))\r\n }\r\n onTextMaskInput(event) {\r\n this.textMaskInputElement.update(event.target.value)\r\n }\r\n oncreate(vnode) {\r\n if (this.mask) {\r\n const dom = vnode.dom.querySelector('input')\r\n this.initTextMask(dom)\r\n }\r\n }\r\n view(vnode) {\r\n return m('.md-input-field.md-form-control', {\r\n class: classNames({\r\n 'md-input-append': this.append,\r\n 'md-input-suffix': this.suffix\r\n })\r\n }, [\r\n m('input', Object.assign({}, this.options, this.handleOptions(vnode.attrs), {\r\n class: classNames(this.classes, {\r\n 'invalid': this.hasError(vnode.attrs.error)\r\n }),\r\n oninput: (e) => {\r\n if (this.mask) {\r\n this.onTextMaskInput(e)\r\n }\r\n vnode.attrs.oninput(e)\r\n const errors = this.validate(e.target.value)\r\n if (errors) {\r\n this.errors = errors\r\n } else {\r\n this.errors = []\r\n }\r\n },\r\n value: vnode.attrs.value\r\n })),\r\n (this.append) ? [\r\n m('.d-inline.append', [\r\n this.append\r\n ])\r\n ] : '',\r\n (this.suffix) ? [\r\n m('.suffix', [\r\n this.suffix\r\n ])\r\n ] : '',\r\n (this.label) ? [\r\n m('label', {\r\n class: classNames({\r\n 'active': vnode.attrs.value || this.active\r\n }),\r\n }, this.label)\r\n ] : '',\r\n (vnode.attrs.helper || this.hasError(vnode.attrs.error)) ? [\r\n m('.helper-text', {\r\n 'data-error': this.hasError(vnode.attrs.error)\r\n }, [\r\n vnode.attrs.helper\r\n ])\r\n ] : ''\r\n ])\r\n }\r\n}\r\n\r\nexport default TextBox","import m from 'mithril'\r\n\r\nclass DropDown {\r\n view() {\r\n return m('button.btn.btn-outline-primary.btn-block', {\r\n //disabled: true,\r\n onclick: (e) => {\r\n\r\n }\r\n }, 'DropDown')\r\n }\r\n}\r\n\r\nexport default DropDown","import m from 'mithril'\r\nimport classNames from 'classnames'\r\n\r\nclass TextArea {\r\n constructor(vnode) {\r\n this.label = false\r\n this.active = false\r\n if (vnode.attrs.hasOwnProperty('label')) {\r\n this.label = vnode.attrs.label\r\n }\r\n }\r\n oncreate(vnode) {\r\n const target = vnode.dom.querySelector('textarea')\r\n this.resizeHandle(target)\r\n }\r\n onupdate(vnode) {\r\n\r\n }\r\n resizeHandle(target) {\r\n\r\n if (target.scrollHeight == 0) {\r\n return\r\n }\r\n const overflows = this.getParentOverflows(target)\r\n\r\n let heightOffset = null;\r\n let cachedHeight = null;\r\n\r\n const docTop = document.documentElement && document.documentElement.scrollTop;\r\n target.style.height = '';\r\n target.style.height = (target.scrollHeight) + 'px';\r\n\r\n // used to check if an update is actually necessary on window.resize\r\n let clientWidth = target.clientWidth;\r\n\r\n // prevents scroll-position jumping\r\n overflows.forEach(el => {\r\n el.node.scrollTop = el.scrollTop\r\n });\r\n\r\n if (docTop) {\r\n document.documentElement.scrollTop = docTop;\r\n }\r\n const styleHeight = Math.round(parseFloat(target.style.height));\r\n const computed = window.getComputedStyle(target, null);\r\n\r\n // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box\r\n var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : target.offsetHeight;\r\n\r\n // The actual height not matching the style height (set via the resize method) indicates that \r\n // the max-height has been exceeded, in which case the overflow should be allowed.\r\n\r\n if (actualHeight < styleHeight) {\r\n if (computed.overflowY === 'hidden') {\r\n target.style.overflowY = 'scroll'\r\n // this.changeOverflow('scroll');\r\n this.resizeHandle(target)\r\n actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : target.offsetHeight;\r\n }\r\n } else {\r\n // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.\r\n if (computed.overflowY !== 'hidden') {\r\n target.style.overflowY = 'hidden'\r\n // this.changeOverflow('hidden');\r\n this.resizeHandle(target)\r\n actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : target.offsetHeight;\r\n }\r\n }\r\n\r\n if (cachedHeight !== actualHeight) {\r\n cachedHeight = actualHeight;\r\n }\r\n }\r\n getParentOverflows(el) {\r\n const arr = [];\r\n\r\n while (el && el.parentNode && el.parentNode instanceof Element) {\r\n if (el.parentNode.scrollTop) {\r\n arr.push({\r\n node: el.parentNode,\r\n scrollTop: el.parentNode.scrollTop,\r\n })\r\n }\r\n el = el.parentNode;\r\n }\r\n\r\n return arr;\r\n }\r\n resize(e) {\r\n this.resizeHandle(e.target)\r\n }\r\n view(vnode) {\r\n return m('.md-input-field.md-form-control', [\r\n m('textarea.materialize-textarea', {\r\n style: {\r\n minHeight: '3rem'\r\n },\r\n disabled: vnode.attrs.disabled,\r\n readonly: vnode.attrs.readonly,\r\n oninput: (e) => {\r\n vnode.attrs.oninput(e)\r\n this.resize(e)\r\n }\r\n }, vnode.attrs.value),\r\n (this.label) ? [\r\n m('label', {\r\n class: classNames({\r\n 'active': vnode.attrs.value || this.active\r\n }),\r\n }, this.label)\r\n ] : '',\r\n ])\r\n }\r\n}\r\n\r\nexport default TextArea","import m from 'mithril'\r\nimport stream from 'mithril/stream'\r\nimport {\r\n createTextMaskInputElement,\r\n conformToMask\r\n} from 'text-mask-core'\r\n\r\nclass MaskField {\r\n constructor(vnode) {\r\n\r\n this.mask = false\r\n this.value = vnode.attrs.value\r\n if (vnode.attrs.hasOwnProperty('mask')) {\r\n this.mask = vnode.attrs.mask\r\n vnode.attrs.mask = undefined\r\n }\r\n }\r\n\r\n initTextMask(dom, value) {\r\n\r\n this.textMaskInputElement = createTextMaskInputElement({\r\n inputElement: dom,\r\n mask: [/[0-1]/, /\\d/, /\\d/, '年', /[0-1]/, /\\d/, '月', /[0-9]/, /\\d/, '日'],\r\n keepCharPositions: false,\r\n showMask: false\r\n })\r\n\r\n const {\r\n conformedValue\r\n } = conformToMask(value, [/[0-1]/, /\\d/, /\\d/, '年', /[0-1]/, /\\d/, '月', /[0-9]/, /\\d/, '日'])\r\n this.textMaskInputElement.update(conformedValue)\r\n }\r\n onTextMaskInput(event) {\r\n this.textMaskInputElement.update(event.target.value)\r\n }\r\n oncreate(vnode) {\r\n if (this.mask) {\r\n const dom = vnode.dom.querySelector('input')\r\n this.initTextMask(dom, vnode.attrs.value)\r\n }\r\n }\r\n maskValue(value) {\r\n const result = conformToMask(value, this.mask.mask, this.mask)\r\n return result.conformedValue\r\n }\r\n view(vnode) {\r\n return m('div', [\r\n m('input[type=\"text\"].form-control', {\r\n oninput: (e) => {\r\n this.onTextMaskInput(e)\r\n vnode.attrs.oninput(e)\r\n },\r\n value: vnode.attrs.value\r\n })\r\n ])\r\n }\r\n}\r\n\r\nexport default MaskField","export {\r\n default as TextField\r\n}\r\nfrom './textfield'\r\n\r\nexport {\r\n default as TextBox\r\n}\r\nfrom './textbox'\r\n\r\nexport {\r\n default as DropDown\r\n}\r\nfrom './dropdown'\r\n\r\nexport {\r\n default as TextArea\r\n}\r\nfrom './textarea'\r\n\r\nexport {\r\n default as MaskField\r\n}\r\nfrom './maskfield'","import interact from 'interactjs'\r\nimport m from 'mithril'\r\n\r\nclass RangeSlider {\r\n constructor(vnode) {\r\n this.left = 0\r\n this.right = 0\r\n this.rangeWidth = 200\r\n //租金最大最小範圍\r\n this.min = vnode.attrs.min\r\n this.max = vnode.attrs.max\r\n //租金設定範圍\r\n this.start = vnode.attrs.start\r\n this.end = vnode.attrs.end\r\n\r\n }\r\n oncreate(vnode) {\r\n const _range = vnode.dom.querySelector('.ui-slider-range')\r\n const _left = vnode.dom.querySelector('.slider-left')\r\n const _right = vnode.dom.querySelector('.slider-right')\r\n\r\n this.rangeWidth = _range.offsetWidth\r\n let self = this\r\n interact(_left).draggable({\r\n axis: 'x',\r\n onmove: (event) => {\r\n const target = event.target\r\n let old = self.left\r\n self.left = (parseFloat(self.left) || 0) + event.dx\r\n if (self.getRangeWidth() < 2) {\r\n self.left = old\r\n return m.redraw()\r\n }\r\n if (self.left < 0) {\r\n self.left = 0\r\n return m.redraw()\r\n }\r\n target.style.webkitTransform = target.style.transform = `translate(${self.left}px,0px)`\r\n m.redraw()\r\n }\r\n })\r\n\r\n interact(_right).draggable({\r\n axis: 'x',\r\n onmove(event) {\r\n const target = event.target\r\n let old = self.right\r\n self.right = (parseFloat(self.right) || 0) + event.dx\r\n if (self.getRangeWidth() < 2) {\r\n self.right = old\r\n return m.redraw()\r\n }\r\n\r\n if (self.right > 0) {\r\n self.right = 0\r\n return m.redraw()\r\n }\r\n target.style.webkitTransform = target.style.transform = `translate(${self.right}px,0px)`\r\n m.redraw()\r\n }\r\n })\r\n\r\n this.init(_range, _left, _right)\r\n }\r\n ///初始值\r\n init(_range, _left, _right) {\r\n\r\n const _start = Math.round(this.start() / 175)\r\n _left.style.webkitTransform = _left.style.transform = `translate(${_start}px,0px)`\r\n this.left = _start\r\n\r\n const _end = Math.round((this.end() - 35100) / 175)\r\n _right.style.webkitTransform = _right.style.transform = `translate(${_end}px,0px)`\r\n this.right = _end\r\n\r\n }\r\n getRangeWidth() {\r\n const width = 100 - ((this.left / this.rangeWidth) * 100) + ((this.right / this.rangeWidth) * 100)\r\n return width\r\n }\r\n money(value, direction) {\r\n if (direction == 'left') {\r\n this.min(Math.round(value * 175))\r\n return Math.round(value * 175).toLocaleString(\"zh-TW\")\r\n }\r\n\r\n const money = 35100 + Math.round(value * 175)\r\n this.max(money)\r\n return money.toLocaleString(\"zh-TW\")\r\n }\r\n view() {\r\n\r\n return m(\"#search-price-range\", [\r\n m('.ui-slider-range', {\r\n style: {\r\n left: `${(this.left / this.rangeWidth) * 100}%`,\r\n width: `${this.getRangeWidth()}%`\r\n }\r\n }),\r\n m('span.ui-slider-handle.slider-left', {\r\n style: {\r\n left: '-15px'\r\n }\r\n }, [\r\n m('span', `$${this.money(this.left, 'left')}`)\r\n ]),\r\n m('span.ui-slider-handle.slider-right', {\r\n style: {\r\n left: '100%'\r\n }\r\n }, [\r\n m('span', `$${this.money(this.right, 'right')}`)\r\n ]),\r\n ])\r\n }\r\n}\r\n\r\nexport default RangeSlider","export default function () {\r\n var check = false;\r\n (function (a) {\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\r\n })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n};","import m from 'mithril'\r\n\r\nclass Search {\r\n constructor() {}\r\n static fetch() {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/Get/searchItem`\r\n })\r\n }\r\n static fetchMap() {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/Get/searchItem`\r\n })\r\n }\r\n static fetchMrt() {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/Get/searchItem`\r\n })\r\n }\r\n static fetchList() {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/Get/searchItem`\r\n })\r\n }\r\n}\r\n\r\nexport default Search","import m from 'mithril'\r\n\r\nconst constraints = {}\r\n\r\nclass Conditions {\r\n constructor(args) {\r\n args = (args) ? args : {};\r\n this.id = args.id || '';\r\n this.houseId = args.houseId || 0\r\n this.claimValues = args.claimValues || []\r\n }\r\n\r\n static get data() {\r\n return _data\r\n }\r\n\r\n static get() {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/cliam/`,\r\n })\r\n }\r\n\r\n static load(id) {\r\n return m.request({\r\n method: 'GET',\r\n url: `${window.BASE_URL}/RentHouse/Get/conditions/${id}`,\r\n })\r\n }\r\n\r\n static remove(id) {\r\n return m.request({\r\n method: 'DELETE',\r\n url: `${window.BASE_URL}/api/roles/${id}`\r\n })\r\n }\r\n\r\n checkAuth(claim) {\r\n let query = claim.toUpperCase();\r\n const filterItems = this.claimValues.filter(item => item.toUpperCase().indexOf(query) >= 0);\r\n return filterItems.length > 0\r\n }\r\n\r\n toggleAuth(claim) {\r\n let query = claim.toUpperCase();\r\n const filterIndex = this.claimValues.findIndex((item) => {\r\n return item == query\r\n })\r\n if (~filterIndex) {\r\n return this.claimValues.splice(filterIndex, 1)\r\n }\r\n\r\n this.claimValues.push(query)\r\n }\r\n\r\n save() {\r\n return m.request({\r\n method: 'PUT',\r\n url: `${window.BASE_URL}/RentHouse/Save/conditions/${this.houseId}`,\r\n data: this.claimValues\r\n })\r\n }\r\n}\r\n\r\nexport default Conditions","import m from 'mithril'\r\n\r\nclass Liker {\r\n constructor() {}\r\n //static fetch() {\r\n // return m.request({\r\n // method: 'GET',\r\n // url: `${window.BASE_URL}/Citizen/GetLikerItems`\r\n // })\r\n //}\r\n\r\n static save(data) {\r\n return m.request({\r\n method: 'POST',\r\n url: `${window.BASE_URL}/Citizen/saveLikerItems`,\r\n data: data\r\n })\r\n }\r\n}\r\n\r\nexport default Liker","export {\r\n default as Search\r\n}\r\nfrom './search'\r\n\r\nexport {\r\n default as Conditions\r\n}\r\nfrom './conditions'\r\n\r\nexport {\r\n default as LikerForm\r\n}\r\nfrom './liker'\r\n\r\n","import m from \"mithril\";\r\nimport stream from \"mithril/stream\";\r\nimport { TextBox } from \"../components\";\r\nimport RangeSlider from \"../components/form/range-slider\";\r\nimport isMobile from \"../lib/detect-mobile\";\r\nimport { Search } from \"../models\";\r\n\r\nclass SearchForm {\r\n constructor() {\r\n var i = 0;\r\n this.show = false;\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n };\r\n this.keyword = \"\";\r\n this.chosen_distrcts = [];\r\n this.chosen_categories = [];\r\n this.chosen_houseStyles = [];\r\n this.chosen_houseTypes = [];\r\n this.chosen_pains = [];\r\n this.chosen_conditions = [];\r\n this.chosen_item = [];\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n };\r\n\r\n this.min = stream(0);\r\n this.max = stream(50000);\r\n this.start = stream(0);\r\n this.end = stream(50000);\r\n\r\n Search.fetch().then((responsive) => {\r\n this.search = responsive;\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id);\r\n });\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id);\r\n });\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id);\r\n });\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id);\r\n });\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id);\r\n });\r\n });\r\n\r\n this.item = [];\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = [];\r\n }\r\n }\r\n\r\n view(vnode) {\r\n console.log(\"hello\");\r\n return m(\r\n \"form[id='search_form'][method='post']\",\r\n {\r\n action:\r\n \"/RentHouse/List?item=\" +\r\n JSON.stringify(this.chosen_item) +\r\n \"&range=\" +\r\n this.min() +\r\n \",\" +\r\n this.max(),\r\n },\r\n m(\"input[id='json_value']\", {\r\n name: \"search\",\r\n type: \"hidden\",\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n [\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"行政區域\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", [\r\n m(\".h6.pt-20.pl-20\", \"行政區域\"),\r\n m(\r\n \"ul.other-features.pl-20.pb-2\",\r\n m(\"li\", [\r\n m(\"input[id='taipeiArea0'][type='checkbox']\", {\r\n checked: this.chosen_distrcts.length == this.search.districts.length,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.length == this.search.districts.length) {\r\n this.chosen_distrcts = [];\r\n\r\n this.search.districts.map((district) => {\r\n if (this.chosen_item.indexOf(district.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(district.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(this.chosen_item.indexOf(\"行政區 不限\"), 1);\r\n } else {\r\n this.chosen_distrcts = [];\r\n this.search.districts.map((item) => {\r\n this.chosen_distrcts.push(item.id);\r\n if (this.chosen_item.indexOf(item.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"行政區 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='taipeiArea0']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features.justify-content-center.pb-10\", [\r\n this.search.districts.map((district) => {\r\n return m(\"li\", [\r\n m(`input[id=\"taipeiArea-${district.id}\"][type = 'checkbox']`, {\r\n checked: this.chosen_distrcts.indexOf(district.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.indexOf(district.id) > -1) {\r\n this.chosen_distrcts.splice(\r\n this.chosen_distrcts.indexOf(district.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(district.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(district.districtName),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_distrcts.push(district.id);\r\n }\r\n\r\n this.search.districts.map((district) => {\r\n if (\r\n this.chosen_distrcts.indexOf(district.id) > -1 &&\r\n this.chosen_item.indexOf(district.districtName) == -1\r\n ) {\r\n this.chosen_item.push(district.districtName);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_distrcts.length != this.search.districts.length &&\r\n this.chosen_item.indexOf(\"行政區 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(this.chosen_item.indexOf(\"行政區 不限\"), 1);\r\n }\r\n if (\r\n this.chosen_distrcts.length == this.search.districts.length &&\r\n this.chosen_item.indexOf(\"行政區 不限\") == -1\r\n ) {\r\n this.search.districts.map((item) => {\r\n if (this.chosen_item.indexOf(item.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"行政區 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='taipeiArea-${district.id}']`, district.districtName),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ]),\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"房屋選項\"\r\n ),\r\n m(\r\n \".dropdown-menu[aria-labelledby='dropdownMenuButton']\",\r\n {\r\n style: {\r\n width: \"700px\",\r\n },\r\n },\r\n m(\".row.no-gutters.py-3\", [\r\n m(\".col.pl-20\", [\r\n m(\".h5.pt-20\", \"依物件類型\"),\r\n m(\r\n \"ul.other-features\",\r\n m(\"li\", [\r\n m(\"input[id='ol-1'][type='checkbox']\", {\r\n checked: this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (this.chosen_categories.length == this.search.categories.length) {\r\n this.chosen_categories = [];\r\n\r\n this.search.categories.map((category) => {\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n });\r\n\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_categories = [];\r\n this.search.categories.map((item) => {\r\n this.chosen_categories.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-1']\", \"不限\"),\r\n ])\r\n ),\r\n m(\".h6.pt-20\", \"社會住宅\"),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n if (category.item == 1) {\r\n return m(\"li\", [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n\r\n this.search.categories.map((category) => {\r\n if (\r\n this.chosen_categories.indexOf(category.id) > -1 &&\r\n this.chosen_item.indexOf(category.name) == -1\r\n ) {\r\n this.chosen_item.push(category.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_categories.length !=\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_categories.length ==\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") == -1\r\n ) {\r\n this.search.categories.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='al-${category.id}']`, category.name),\r\n ]);\r\n }\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"一般出租住宅\"),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n if (category.item == 2) {\r\n return m(\"li\", [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n this.search.categories.map((category) => {\r\n if (\r\n this.chosen_categories.indexOf(category.id) > -1 &&\r\n this.chosen_item.indexOf(category.name) == -1\r\n ) {\r\n this.chosen_item.push(category.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_categories.length !=\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_categories.length ==\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") == -1\r\n ) {\r\n this.search.categories.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='al-${category.id}']`, category.name),\r\n ]);\r\n }\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依房數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked: this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.length == this.search.houseStyles.length) {\r\n this.chosen_houseStyles = [];\r\n\r\n this.search.houseStyles.map((houseStyle) => {\r\n if (this.chosen_item.indexOf(houseStyle.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(houseStyle.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(this.chosen_item.indexOf(\"房數 不限\"), 1);\r\n } else {\r\n this.chosen_houseStyles = [];\r\n this.search.houseStyles.map((item) => {\r\n this.chosen_houseStyles.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房數 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\", \"不限\"),\r\n ]),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li\", [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(\r\n this.chosen_houseStyles.indexOf(style.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(style.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(style.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_houseStyles.push(style.id);\r\n }\r\n this.search.houseStyles.map((style) => {\r\n if (\r\n this.chosen_houseStyles.indexOf(style.id) > -1 &&\r\n this.chosen_item.indexOf(style.name) == -1\r\n ) {\r\n this.chosen_item.push(style.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_houseStyles.length !=\r\n this.search.houseStyles.length &&\r\n this.chosen_item.indexOf(\"房數 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房數 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length &&\r\n this.chosen_item.indexOf(\"房數 不限\") == -1\r\n ) {\r\n this.search.houseStyles.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房數 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='bl-${style.id}']`, style.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依房屋類型\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='ol-14'][type='checkbox']\", {\r\n checked: this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.length == this.search.houseTypes.length) {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((type) => {\r\n if (this.chosen_item.indexOf(type.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(type.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房屋類型 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((item) => {\r\n this.chosen_houseTypes.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房屋類型 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-14']\", \"不限\"),\r\n ]),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li\", [\r\n m(`input[id='cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(\r\n this.chosen_houseTypes.indexOf(type.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(type.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(type.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_houseTypes.push(type.id);\r\n }\r\n this.search.houseTypes.map((type) => {\r\n if (\r\n this.chosen_houseTypes.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_houseTypes.length !=\r\n this.search.houseTypes.length &&\r\n this.chosen_item.indexOf(\"房屋類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房屋類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_houseTypes.length ==\r\n this.search.houseTypes.length &&\r\n this.chosen_item.indexOf(\"房屋類型 不限\") == -1\r\n ) {\r\n this.search.houseTypes.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房屋類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='cl-${type.id}']`, type.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依坪數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = [];\r\n this.search.pains.map((pain) => {\r\n if (this.chosen_item.indexOf(pain.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(pain.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(this.chosen_item.indexOf(\"坪數 不限\"), 1);\r\n } else {\r\n this.chosen_pains = [];\r\n this.search.pains.map((item) => {\r\n this.chosen_pains.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"坪數 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-21']\", \"不限\"),\r\n ]),\r\n this.search.pains.map((pain) => {\r\n return m(\"li\", [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(\r\n this.chosen_pains.indexOf(pain.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(pain.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(pain.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_pains.push(pain.id);\r\n }\r\n\r\n this.search.pains.map((type) => {\r\n if (\r\n this.chosen_pains.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_pains.length != this.search.pains.length &&\r\n this.chosen_item.indexOf(\"坪數 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"坪數 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_pains.length == this.search.pains.length &&\r\n this.chosen_item.indexOf(\"坪數 不限\") == -1\r\n ) {\r\n this.search.pains.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"坪數 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='dl-${pain.id}']`, pain.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\r\n \".pl-40 pr-40\",\r\n m(RangeSlider, {\r\n min: this.min,\r\n max: this.max,\r\n start: this.start,\r\n end: this.end,\r\n })\r\n ),\r\n m(\r\n \"div\",\r\n m(\"span\", \"搜尋2\"),\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.keyword = e.target.value;\r\n },\r\n class: \"mt-0\",\r\n value: this.keyword,\r\n type: \"text\",\r\n placeholder: \"關鍵字搜尋(社區、路名)\",\r\n })\r\n ),\r\n m(\r\n \".pb-0.ml-sm-0.ml-lg-2.position-relative.w-100.mb-0\",\r\n {\r\n style: {\r\n display: \"block\",\r\n flex: \"unset\",\r\n \"margin-bottom\": \"-44px\",\r\n },\r\n },\r\n [\r\n m(\r\n \"a[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#']\",\r\n m(\"span.px-1\", \"+ 更多條件設定\")\r\n ),\r\n m(\r\n \".dropdown-menu.px-3[aria-labelledby='dropdownMenuButton']\",\r\n {\r\n style: {\r\n \"max-width\": \"600px\",\r\n },\r\n },\r\n [\r\n m(\".h6.pt-20.pl-20\", \"其他條件\"),\r\n m(\"ul.other-features.pl-10.pb-10\", [\r\n this.search.conditions.map((condition) => {\r\n return [\r\n m(\r\n \"li.mr-1\",\r\n {\r\n style: {\r\n width: \"30%\",\r\n },\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n key: condition.name,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(\r\n this.chosen_conditions.indexOf(condition.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_conditions.push(condition.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='el-${condition.id}']`, condition.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]),\r\n ]\r\n ),\r\n ]\r\n ),\r\n m(\r\n \".text-right.text-lg-center.pb-15\",\r\n {\r\n style: {\r\n \"margin-top\": \"-15px\",\r\n },\r\n },\r\n m(\r\n \"button.rounded-pill\",\r\n m(\r\n \"a.w-100.h-100\",\r\n {\r\n onclick: (e) => {\r\n e.preventDefault();\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: [],\r\n };\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district,\r\n });\r\n });\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy,\r\n });\r\n });\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle,\r\n });\r\n });\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType,\r\n });\r\n });\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain,\r\n });\r\n });\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition,\r\n });\r\n });\r\n this.search_item.range[0] = this.min();\r\n this.search_item.range[1] = this.max();\r\n\r\n $(\"#json_value\").val(JSON.stringify(this.search_item));\r\n $(\"#search_form\").submit();\r\n },\r\n },\r\n \"搜尋\"\r\n )\r\n )\r\n ),\r\n ]\r\n );\r\n }\r\n}\r\n\r\nclass MobileSearchForm {\r\n constructor() {\r\n var i = 0;\r\n this.show = false;\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n };\r\n this.keyword = \"\";\r\n this.chosen_distrcts = [];\r\n this.chosen_categories = [];\r\n this.chosen_houseStyles = [];\r\n this.chosen_houseTypes = [];\r\n this.chosen_pains = [];\r\n this.chosen_conditions = [];\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n };\r\n\r\n this.min = 0;\r\n this.max = 50000;\r\n\r\n Search.fetch().then((responsive) => {\r\n this.search = responsive;\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id);\r\n });\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id);\r\n });\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id);\r\n });\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id);\r\n });\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id);\r\n });\r\n });\r\n\r\n this.item = [];\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = [];\r\n }\r\n }\r\n\r\n view(vnode) {\r\n return m(\"form[action='/RentHouse/List'][id='mobileSearch'][method='post']\", [\r\n m(\"input[id='json_value']\", {\r\n name: \"search\",\r\n type: \"hidden\",\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n\r\n m(\".row.no-gutters\", [\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseDistrict'][role='button'][aria-expanded='false'][aria-controls='collapseDistrict']\",\r\n \"行政區域\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseDistrict\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"0px\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"行政區域\"),\r\n m(\r\n \"ul.other-features.pl-2.pb-2\",\r\n m(\"li\", [\r\n m(\"input[id='taipeiArea0'][type='checkbox']\", {\r\n checked: this.chosen_distrcts.length == this.search.districts.length,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.length == this.search.districts.length) {\r\n this.chosen_distrcts = [];\r\n } else {\r\n this.chosen_distrcts = [];\r\n this.search.districts.map((item) => {\r\n this.chosen_distrcts.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='taipeiArea0']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features.pl-2\", [\r\n this.search.districts.map((district) => {\r\n return m(\"li.mr-25\", [\r\n m(`input[id=\"taipeiArea-${district.id}\"][type = 'checkbox']`, {\r\n checked: this.chosen_distrcts.indexOf(district.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.indexOf(district.id) > -1) {\r\n this.chosen_distrcts.splice(\r\n this.chosen_distrcts.indexOf(district.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_distrcts.push(district.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='taipeiArea-${district.id}']`, district.districtName),\r\n ]);\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseHouse'][role='button'][aria-expanded='false'][aria-controls='collapseHouse']\",\r\n \"房屋選項\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseHouse\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-25vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".row.no-gutters\", [\r\n m(\".col\", [\r\n m(\".h6\", \"依物件類型\"),\r\n m(\r\n \"ul.other-features.d-inline\",\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-1'][type='checkbox']\", {\r\n checked:\r\n this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_categories.length == this.search.categories.length\r\n ) {\r\n this.chosen_categories = [];\r\n } else {\r\n this.chosen_categories = [];\r\n this.search.categories.map((item) => {\r\n this.chosen_categories.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-1']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='al-${category.id}']`, category.name),\r\n ]);\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"依房屋類型\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-14'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseTypes.length == this.search.houseTypes.length\r\n ) {\r\n this.chosen_houseTypes = [];\r\n } else {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((item) => {\r\n this.chosen_houseTypes.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-14']\", \"不限\"),\r\n ]),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(\r\n this.chosen_houseTypes.indexOf(type.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseTypes.push(type.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='cl-${type.id}']`, type.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6\", \"依房數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length\r\n ) {\r\n this.chosen_houseStyles = [];\r\n } else {\r\n this.chosen_houseStyles = [];\r\n this.search.houseStyles.map((item) => {\r\n this.chosen_houseStyles.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\", \"不限\"),\r\n ]),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(\r\n this.chosen_houseStyles.indexOf(style.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseStyles.push(style.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='bl-${style.id}']`, style.name),\r\n ]);\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"依坪數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = [];\r\n } else {\r\n this.chosen_pains = [];\r\n this.search.pains.map((item) => {\r\n this.chosen_pains.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-21']\", \"不限\"),\r\n ]),\r\n this.search.pains.map((pain) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(\r\n this.chosen_pains.indexOf(pain.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_pains.push(pain.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='dl-${pain.id}']`, pain.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapsePrice'][role='button'][aria-expanded='false'][aria-controls='collapsePrice']\",\r\n \"租金範圍\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapsePrice\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-50vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"租金範圍\"),\r\n m(\".row.no-gutters\", [\r\n m(\r\n \".col-4\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.min = e.target.value;\r\n },\r\n class: \"mt-0 p-2 text-center\",\r\n value: this.min,\r\n type: \"number\",\r\n placeholder: \"最小金額\",\r\n })\r\n ),\r\n m(\r\n \".col-4.d-flex.align-items-center.px-2\",\r\n m(\"span.w-100.rounded-pill\", {\r\n style: {\r\n background: \"#4bbed9\",\r\n opacity: \"0.8\",\r\n padding: \"3px 0\",\r\n },\r\n })\r\n ),\r\n m(\r\n \".col-4\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.max = e.target.value;\r\n },\r\n class: \"mt-0 p-2 text-center\",\r\n value: this.max,\r\n type: \"number\",\r\n placeholder: \"最大金額\",\r\n })\r\n ),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseOther'][role='button'][aria-expanded='false'][aria-controls='collapseOther']\",\r\n \"其他條件\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseOther\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-75vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"其他條件\"),\r\n m(\"ul.other-features.pl-2\", [\r\n this.search.conditions.map((condition) => {\r\n return [\r\n m(\r\n \"li.mr-0\",\r\n {\r\n style: {\r\n width: \"50%\",\r\n },\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(\r\n this.chosen_conditions.indexOf(condition.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_conditions.push(condition.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='el-${condition.id}']`, condition.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\r\n \".col-12.white.d-flex.justify-content-center.py-2\",\r\n {\r\n style: {\r\n zIndex: \"0\",\r\n },\r\n },\r\n m(\r\n \"button.rounded-pill.mobileButton\",\r\n m(\r\n \"a.w-100.h-100\",\r\n {\r\n onclick: (e) => {\r\n e.preventDefault();\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: [],\r\n };\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district,\r\n });\r\n });\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy,\r\n });\r\n });\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle,\r\n });\r\n });\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType,\r\n });\r\n });\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain,\r\n });\r\n });\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition,\r\n });\r\n });\r\n this.search_item.range[0] = this.min;\r\n this.search_item.range[1] = this.max;\r\n\r\n $(\"#json_value\").val(JSON.stringify(this.search_item));\r\n $(\"#mobileSearch\").submit();\r\n },\r\n },\r\n \"搜尋\"\r\n )\r\n )\r\n ),\r\n ]),\r\n ]);\r\n }\r\n}\r\nwindow.isMobile = isMobile();\r\nexport default window.isMobile ? MobileSearchForm : SearchForm;\r\n","import m from 'mithril'\r\nimport stream from 'mithril/stream'\r\nimport classNames from 'classnames'\r\nimport {\r\n Search\r\n} from '../models'\r\nimport {\r\n TextBox,\r\n RangeSilder\r\n} from '../components'\r\nimport RangeSlider from '../components/form/range-slider'\r\nimport isMobile from '../lib/detect-mobile'\r\n\r\nclass SearchFormMap {\r\n constructor() {\r\n var i = 0\r\n this.show = false\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n this.keyword = \"\"\r\n this.chosen_distrcts = []\r\n this.chosen_categories = []\r\n this.chosen_houseStyles = []\r\n this.chosen_houseTypes = []\r\n this.chosen_pains = []\r\n this.chosen_conditions = []\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n\r\n this.min = stream(0)\r\n this.max = stream(50000)\r\n\r\n Search.fetchMap().then((responsive) => {\r\n this.search = responsive\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id)\r\n })\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id)\r\n })\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id)\r\n })\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id)\r\n })\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id)\r\n })\r\n })\r\n\r\n this.item = []\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = []\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n view(vnode) {\r\n\r\n return m(\"form[id='search_form'][method='post']\",\r\n m(\"input[id='json_value']\", {\r\n name: 'search',\r\n type: 'hidden',\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n m(\"input[id='result']\", {\r\n name: 'result',\r\n type: 'hidden',\r\n value: \"\",\r\n }),\r\n [\r\n m(\".dropdown\",\r\n [\r\n m(\"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"房屋選項\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", {\r\n style: {\r\n \"width\": \"700px\"\r\n }\r\n },\r\n m(\".row.no-gutters.py-3\",\r\n [\r\n m(\".col.pl-20\",\r\n [\r\n m(\".h5.pt-20\",\r\n \"依物件類型\"\r\n ),\r\n m(\"ul.other-features\",\r\n m(\"li\",\r\n [\r\n m(\"input[id='ol-1'][type='checkbox']\", {\r\n checked: this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (this.chosen_categories.length == this.search.categories.length) {\r\n this.chosen_categories = []\r\n } else {\r\n this.chosen_categories = []\r\n this.search.categories.map(item => {\r\n this.chosen_categories.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-1']\",\r\n \"不限\"\r\n )\r\n ]\r\n )\r\n ),\r\n m(\".h6.pt-20\",\r\n \"社會住宅\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n this.search.categories.map((category) => {\r\n if (category.item == 1) {\r\n return m(\"li\",\r\n [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='al-${category.id}']`,\r\n category.name\r\n )\r\n ]\r\n )\r\n }\r\n })\r\n ]\r\n ),\r\n m(\".h6.pt-20\",\r\n \"一般出租住宅\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n this.search.categories.map((category) => {\r\n if (category.item == 2) {\r\n return m(\"li\",\r\n [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='al-${category.id}']`,\r\n category.name\r\n )\r\n ]\r\n )\r\n }\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依房數\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked: this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.length == this.search.houseStyles.length) {\r\n this.chosen_houseStyles = []\r\n } else {\r\n this.chosen_houseStyles = []\r\n this.search.houseStyles.map(item => {\r\n this.chosen_houseStyles.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(this.chosen_houseStyles.indexOf(style.id), 1)\r\n } else {\r\n this.chosen_houseStyles.push(style.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='bl-${style.id}']`,\r\n style.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依房屋類型\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='ol-14'][type='checkbox']\", {\r\n checked: this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.length == this.search.houseTypes.length) {\r\n this.chosen_houseTypes = []\r\n } else {\r\n this.chosen_houseTypes = []\r\n this.search.houseTypes.map(item => {\r\n this.chosen_houseTypes.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-14']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(this.chosen_houseTypes.indexOf(type.id), 1)\r\n } else {\r\n this.chosen_houseTypes.push(type.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='cl-${type.id}']`,\r\n type.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依坪數\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = []\r\n } else {\r\n this.chosen_pains = []\r\n this.search.pains.map(item => {\r\n this.chosen_pains.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-21']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.pains.map((pain) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(this.chosen_pains.indexOf(pain.id), 1)\r\n } else {\r\n this.chosen_pains.push(pain.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='dl-${pain.id}']`,\r\n pain.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n )\r\n ]\r\n )\r\n )\r\n ]\r\n ),\r\n m(\".dropdown\",\r\n [\r\n m(\"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"其他條件\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\",\r\n [\r\n m(\".h6.pt-20.pl-20\",\r\n \"其他條件\"\r\n ),\r\n m(\"ul.other-features.pl-20.pb-15\", {\r\n style: {\r\n width: '540px'\r\n }\r\n },\r\n [\r\n this.search.conditions.map((condition) => {\r\n return [m(\"li.mr-1\", {\r\n style: {\r\n \"width\": \"30%\"\r\n }\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(this.chosen_conditions.indexOf(condition.id), 1)\r\n } else {\r\n this.chosen_conditions.push(condition.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='el-${condition.id}']`,\r\n condition.name\r\n )\r\n ]\r\n )]\r\n })\r\n ]\r\n )\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".pl-40 pr-40\",\r\n m(RangeSlider, {\r\n min: this.min,\r\n max: this.max,\r\n start: this.min,\r\n end: this.max,\r\n })\r\n ),\r\n m(\"div\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.keyword = e.target.value\r\n },\r\n class: 'mt-0',\r\n value: this.keyword,\r\n type: 'text',\r\n placeholder: '關鍵字搜尋(社區、路名)'\r\n }),\r\n ),\r\n m(\".text-right.text-lg-center.pb-15\", {\r\n style: {\r\n \"margin-top\": \"-15px\"\r\n }\r\n },\r\n m(\"button.rounded-pill.p-0[id='serach_button']\",\r\n m(\"a.w-100.h-100.py-2\", {\r\n onclick: (e) => {\r\n e.preventDefault()\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: []\r\n }\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district\r\n })\r\n })\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy\r\n })\r\n })\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle\r\n })\r\n })\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType\r\n })\r\n })\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain\r\n })\r\n })\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition\r\n })\r\n })\r\n this.search_item.range[0] = this.min()\r\n this.search_item.range[1] = this.max()\r\n\r\n $('#json_value').val(JSON.stringify(this.search_item))\r\n $.post('/RentHouse/Map', {\r\n search: JSON.stringify(this.search_item)\r\n }, function (result) {\r\n window.result = result\r\n $('#result').val(JSON.stringify(result)).trigger('change')\r\n })\r\n\r\n }\r\n },\r\n \"搜尋\",\r\n ))\r\n\r\n )\r\n ]\r\n )\r\n\r\n }\r\n}\r\n\r\nclass MobileSearchFormMap {\r\n constructor() {\r\n var i = 0\r\n this.show = false\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n this.keyword = \"\"\r\n this.chosen_distrcts = []\r\n this.chosen_categories = []\r\n this.chosen_houseStyles = []\r\n this.chosen_houseTypes = []\r\n this.chosen_pains = []\r\n this.chosen_conditions = []\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n\r\n Search.fetchMap().then((responsive) => {\r\n this.search = responsive\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id)\r\n })\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id)\r\n })\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id)\r\n })\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id)\r\n })\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id)\r\n })\r\n })\r\n\r\n this.item = []\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = []\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n view(vnode) {\r\n\r\n return m(\"form[id='mobileSearch'][method='post']\",\r\n m(\"input[id='json_value']\", {\r\n name: 'search',\r\n type: 'hidden',\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n m(\"input[id='result']\", {\r\n name: 'result',\r\n type: 'hidden',\r\n value: \"\",\r\n }),\r\n [\r\n m('ul.collapsible.mt-0.z-depth-0', [\r\n m('li.d-block.m-0.w-100', [\r\n m('.collapsible-header.d-block.w-100.pt-15', [\r\n m(\"i.material-icons.align-middle\", \"line_style\"),\r\n m(\"span.align-middle\", \"物件類型\"),\r\n m(\"i.material-icons.align-middle.ml-auto\", \"arrow_drop_down\")\r\n ]),\r\n m('.collapsible-body.p-3', [\r\n m('.ck-button.d-inline-flex',\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(\"input[type='checkbox'][value='0']\", {\r\n checked: this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (this.chosen_categories.length == this.search.categories.length) {\r\n this.chosen_categories = []\r\n } else {\r\n this.chosen_categories = []\r\n this.search.categories.map(item => {\r\n this.chosen_categories.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"span.px-2\", { style: { 'fontSize': '0.95rem' } },\r\n \"不限\"\r\n )\r\n ]\r\n )\r\n ),\r\n\r\n this.search.categories.map((category) => {\r\n return m(\".ck-button.d-inline-flex\",\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(`input[type='checkbox'][value='${category.id}']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m('span.px-2', { style: { 'fontSize': '0.95rem' } },\r\n category.name\r\n )\r\n ]\r\n ))\r\n })\r\n\r\n ])\r\n ]),\r\n m('li.d-block.m-0.w-100', [\r\n m('.collapsible-header.d-block.w-100.pt-15', [\r\n m(\"i.material-icons.align-middle\", \"border_clear\"),\r\n m(\"span.align-middle\", \"房數\"),\r\n m(\"i.material-icons.align-middle.ml-auto\", \"arrow_drop_down\")\r\n ]),\r\n m('.collapsible-body.p-3', [\r\n m('.ck-button.d-inline-flex',\r\n m(\"label.mb-0.d-inline.pl-0\", [\r\n m(\"input[type='checkbox'][value='0']\", {\r\n checked: this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.length == this.search.houseStyles.length) {\r\n this.chosen_houseStyles = []\r\n } else {\r\n this.chosen_houseStyles = []\r\n this.search.houseStyles.map(item => {\r\n this.chosen_houseStyles.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"span.px-2\", {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n \"不限\"\r\n )\r\n ]\r\n )\r\n ),\r\n this.search.houseStyles.map((style) => {\r\n return m(\".ck-button.d-inline-flex\",\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(`input[type='checkbox'][value='${style.id}']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(this.chosen_houseStyles.indexOf(style.id), 1)\r\n } else {\r\n this.chosen_houseStyles.push(style.id)\r\n }\r\n }\r\n }),\r\n m('span.px-2', {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n style.name\r\n )\r\n ]\r\n ))\r\n })\r\n ])\r\n ]),\r\n m('li.d-block.m-0.w-100', [\r\n m('.collapsible-header.d-block.w-100.pt-15', [\r\n m(\"i.material-icons.align-middle\", \"format_list_bulleted\"),\r\n m(\"span.align-middle\", \"房屋類型\"),\r\n m(\"i.material-icons.align-middle.ml-auto\", \"arrow_drop_down\")\r\n ]),\r\n m('.collapsible-body.p-3', [\r\n m('.ck-button.d-inline-flex',\r\n m(\"label.mb-0.d-inline.pl-0\", [\r\n m(\"input[type='checkbox'][value='0']\", {\r\n checked: this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.length == this.search.houseTypes.length) {\r\n this.chosen_houseTypes = []\r\n } else {\r\n this.chosen_houseTypes = []\r\n this.search.houseTypes.map(item => {\r\n this.chosen_houseTypes.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"span.px-2\", {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n \"不限\"\r\n )\r\n ])\r\n ),\r\n this.search.houseTypes.map((type) => {\r\n return m(\".ck-button.d-inline-flex\",\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(`input[type='checkbox'][value='${type.id}']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(this.chosen_houseTypes.indexOf(type.id), 1)\r\n } else {\r\n this.chosen_houseTypes.push(type.id)\r\n }\r\n }\r\n }),\r\n m('span.px-2', {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n type.name\r\n )\r\n ]\r\n )\r\n )\r\n })\r\n ])\r\n ]),\r\n m('li.d-block.m-0.w-100', [\r\n m('.collapsible-header.d-block.w-100.pt-15', [\r\n m(\"i.material-icons.align-middle\", \"dialpad\"),\r\n m(\"span.align-middle\", \"坪數\"),\r\n m(\"i.material-icons.align-middle.ml-auto\", \"arrow_drop_down\")\r\n ]),\r\n m('.collapsible-body.p-3', [\r\n m('.ck-button.d-inline-flex',\r\n m(\"label.mb-0.d-inline.pl-0\", [\r\n m(\"input[type='checkbox'][value='0']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = []\r\n } else {\r\n this.chosen_pains = []\r\n this.search.pains.map(item => {\r\n this.chosen_pains.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"span.px-2\", {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n \"不限\"\r\n )\r\n ])\r\n ),\r\n this.search.pains.map((pain) => {\r\n return m(\".ck-button.d-inline-flex\",\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(`input[type='checkbox'][value='${pain.id}']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(this.chosen_pains.indexOf(pain.id), 1)\r\n } else {\r\n this.chosen_pains.push(pain.id)\r\n }\r\n }\r\n }),\r\n m('span.px-2', {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n pain.name\r\n )\r\n ]\r\n )\r\n )\r\n })\r\n ])\r\n ]),\r\n m('li.d-block.m-0.w-100', [\r\n m('.collapsible-header.d-block.w-100.pt-15', [\r\n m(\"i.material-icons.align-middle\", \"blur_on\"),\r\n m(\"span.align-middle\", \"其他條件\"),\r\n m(\"i.material-icons.align-middle.ml-auto\", \"arrow_drop_down\")\r\n ]),\r\n m('.collapsible-body.p-3', [\r\n this.search.conditions.map((condition) => {\r\n return m(\".ck-button.d-inline-flex\",\r\n m(\"label.mb-0.d-inline.pl-0\",\r\n [\r\n m(`input[type='checkbox'][value='${condition.id}']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(this.chosen_conditions.indexOf(condition.id), 1)\r\n } else {\r\n this.chosen_conditions.push(condition.id)\r\n }\r\n }\r\n }),\r\n m('span.px-2', {\r\n style: {\r\n 'fontSize': '0.95rem'\r\n }\r\n },\r\n condition.name\r\n )\r\n ]\r\n ))\r\n })\r\n ])\r\n ]),\r\n ]),\r\n m('.d-flex.justify-content-center.mt-25.mb-25',\r\n m('a.btn.btn-theme.w-50.rounded-pill.text-white', {\r\n onclick: (e) => {\r\n e.preventDefault()\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: []\r\n }\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district\r\n })\r\n })\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy\r\n })\r\n })\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle\r\n })\r\n })\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType\r\n })\r\n })\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain\r\n })\r\n })\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition\r\n })\r\n })\r\n this.search_item.range[0] = 0\r\n this.search_item.range[1] = 50000\r\n\r\n $('#json_value').val(JSON.stringify(this.search_item))\r\n $.post('/RentHouse/Map', {\r\n search: JSON.stringify(this.search_item)\r\n }, function (result) {\r\n window.result = result\r\n $('#result').val(JSON.stringify(result)).trigger('change')\r\n })\r\n // $('.mobileSearchBar').css(\"transition\", \"all 0.5s\");\r\n $('.mobileSearchBar').css(\"width\", \"0%\");\r\n $('.mobileTop').addClass('d-none');\r\n $('.mobileTop').removeClass('d-flex');\r\n $('.mobileBottom').removeClass('d-none');\r\n $('.mobileBottom').addClass('d-flex');\r\n\r\n }\r\n }, '搜尋')\r\n )\r\n ]\r\n )\r\n\r\n }\r\n}\r\nwindow.isMobile = isMobile()\r\nexport default (window.isMobile) ? MobileSearchFormMap : SearchFormMap","import m from 'mithril'\r\nimport stream from 'mithril/stream'\r\nimport classNames from 'classnames'\r\nimport {\r\n Search\r\n} from '../models'\r\nimport {\r\n TextBox,\r\n RangeSilder\r\n} from '../components'\r\nimport RangeSlider from '../components/form/range-slider'\r\nimport isMobile from '../lib/detect-mobile'\r\n\r\nclass SearchFormMrt {\r\n constructor() {\r\n var i = 0\r\n this.show = false\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n this.keyword = \"\"\r\n this.chosen_distrcts = []\r\n this.chosen_categories = []\r\n this.chosen_houseStyles = []\r\n this.chosen_houseTypes = []\r\n this.chosen_pains = []\r\n this.chosen_conditions = []\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n\r\n this.min = stream(0)\r\n this.max = stream(50000)\r\n this.start = stream(0)\r\n this.end = stream(50000)\r\n\r\n Search.fetchMrt().then((responsive) => {\r\n this.search = responsive\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id)\r\n })\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id)\r\n })\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id)\r\n })\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id)\r\n })\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id)\r\n })\r\n })\r\n\r\n this.item = []\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = []\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n view(vnode) {\r\n\r\n return m(\"form[id='search_form'][method='post']\",\r\n m(\"input[id='json_value']\", {\r\n name: 'search',\r\n type: 'hidden',\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n m(\"input[id='result']\", {\r\n name: 'result',\r\n type: 'hidden',\r\n value: \"\",\r\n }),\r\n [\r\n m(\".dropdown\",\r\n [\r\n m(\"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"房屋選項\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", {\r\n style: {\r\n \"width\": \"700px\"\r\n }\r\n },\r\n m(\".row.no-gutters.py-3\",\r\n [\r\n m(\".col.pl-20\",\r\n [\r\n m(\".h5.pt-20\",\r\n \"依物件類型\"\r\n ),\r\n m(\"ul.other-features\",\r\n m(\"li\",\r\n [\r\n m(\"input[id='Al-1'][type='checkbox']\", {\r\n checked: this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (this.chosen_categories.length == this.search.categories.length) {\r\n this.chosen_categories = []\r\n } else {\r\n this.chosen_categories = []\r\n this.search.categories.map(item => {\r\n this.chosen_categories.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='Al-1']\",\r\n \"不限\"\r\n )\r\n ]\r\n )\r\n ),\r\n m(\".h6.pt-20\",\r\n \"社會住宅\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n this.search.categories.map((category) => {\r\n if (category.item == 1) {\r\n return m(\"li\",\r\n [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='al-${category.id}']`,\r\n category.name\r\n )\r\n ]\r\n )\r\n }\r\n })\r\n ]\r\n ),\r\n m(\".h6.pt-20\",\r\n \"一般出租住宅\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n this.search.categories.map((category) => {\r\n if (category.item == 2) {\r\n return m(\"li\",\r\n [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='al-${category.id}']`,\r\n category.name\r\n )\r\n ]\r\n )\r\n }\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依房數\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked: this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.length == this.search.houseStyles.length) {\r\n this.chosen_houseStyles = []\r\n } else {\r\n this.chosen_houseStyles = []\r\n this.search.houseStyles.map(item => {\r\n this.chosen_houseStyles.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(this.chosen_houseStyles.indexOf(style.id), 1)\r\n } else {\r\n this.chosen_houseStyles.push(style.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='bl-${style.id}']`,\r\n style.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依房屋類型\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='Ol-14'][type='checkbox']\", {\r\n checked: this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.length == this.search.houseTypes.length) {\r\n this.chosen_houseTypes = []\r\n } else {\r\n this.chosen_houseTypes = []\r\n this.search.houseTypes.map(item => {\r\n this.chosen_houseTypes.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='Ol-14']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='Ol-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(this.chosen_houseTypes.indexOf(type.id), 1)\r\n } else {\r\n this.chosen_houseTypes.push(type.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='Ol-${type.id}']`,\r\n type.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".col\",\r\n [\r\n m(\".h6.pt-20\",\r\n \"依坪數\"\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li\",\r\n [\r\n m(\"input[id='Ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = []\r\n } else {\r\n this.chosen_pains = []\r\n this.search.pains.map(item => {\r\n this.chosen_pains.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='Ol-21']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.pains.map((pain) => {\r\n return m(\"li\",\r\n [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(this.chosen_pains.indexOf(pain.id), 1)\r\n } else {\r\n this.chosen_pains.push(pain.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='dl-${pain.id}']`,\r\n pain.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ]\r\n )\r\n ]\r\n )\r\n )\r\n ]\r\n ),\r\n m(\".dropdown\",\r\n [\r\n m(\"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"其他條件\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\",\r\n [\r\n m(\".h6.pt-20.pl-20\",\r\n \"其他條件\"\r\n ),\r\n m(\"ul.other-features.pl-20.pb-15\", {\r\n style: {\r\n width: '540px'\r\n }\r\n },\r\n [\r\n this.search.conditions.map((condition) => {\r\n return [m(\"li.mr-1\", {\r\n style: {\r\n \"width\": \"30%\"\r\n }\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(this.chosen_conditions.indexOf(condition.id), 1)\r\n } else {\r\n this.chosen_conditions.push(condition.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='el-${condition.id}']`,\r\n condition.name\r\n )\r\n ]\r\n )]\r\n })\r\n ]\r\n )\r\n ]\r\n )\r\n ]\r\n ),\r\n m(\".pl-40 pr-40\",\r\n m(RangeSlider, {\r\n min: this.min,\r\n max: this.max,\r\n start: this.start,\r\n end: this.end\r\n })\r\n ),\r\n m('div', [\r\n m('button.rounded-pill.w-75.mx-4.p-0', m('a.w-100.h-100.py-2', {\r\n onclick: (e) => {\r\n e.preventDefault()\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: []\r\n }\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district\r\n })\r\n })\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy\r\n })\r\n })\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle\r\n })\r\n })\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType\r\n })\r\n })\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain\r\n })\r\n })\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition\r\n })\r\n })\r\n this.search_item.range[0] = this.min()\r\n this.search_item.range[1] = this.max()\r\n\r\n\r\n $('#json_value').val(JSON.stringify(this.search_item))\r\n $.post('/RentHouse/mrt', {\r\n search: JSON.stringify(this.search_item)\r\n }, function (result) {\r\n window.result = result\r\n $('#result').val(JSON.stringify(result)).trigger('change')\r\n })\r\n }\r\n }\r\n , '搜尋'))\r\n ]),\r\n ]\r\n )\r\n\r\n }\r\n}\r\n\r\nclass MobileSearchFormMrt {\r\n constructor() {\r\n var i = 0\r\n this.show = false\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n this.keyword = \"\"\r\n this.chosen_distrcts = []\r\n this.chosen_categories = []\r\n this.chosen_houseStyles = []\r\n this.chosen_houseTypes = []\r\n this.chosen_pains = []\r\n this.chosen_conditions = []\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: []\r\n }\r\n\r\n this.min = 0\r\n this.max = 50000\r\n\r\n Search.fetchList().then((responsive) => {\r\n this.search = responsive\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id)\r\n })\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id)\r\n })\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id)\r\n })\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id)\r\n })\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id)\r\n })\r\n })\r\n\r\n this.item = []\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = []\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n view(vnode) {\r\n\r\n return m(\"form[action='/RentHouse/List'][id='mobileSearch'][method='post']\", [\r\n m(\"input[id='json_value']\", {\r\n name: 'search',\r\n type: 'hidden',\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n m(\"input[id='result']\", {\r\n name: 'result',\r\n type: 'hidden',\r\n value: \"\",\r\n }),\r\n m('.row.no-gutters', [\r\n m('.col-3.white', [\r\n m('.dropdown', m(\"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseHouse'][role='button'][aria-expanded='false'][aria-controls='collapseHouse']\", \"房屋選項\")),\r\n m('.collapse.position-absolute[id=\"collapseHouse\"][data-parent=\"#mobileSearch\"]', {\r\n style: {\r\n \"width\": \"100vw\",\r\n \"left\": \"0vw\",\r\n \"zIndex\": \"1\",\r\n }\r\n }, m('.card.card-body.m-0', [\r\n m('.row.no-gutters', [\r\n m('.col', [\r\n m('.h6', '依物件類型'),\r\n m(\"ul.other-features.d-inline\",\r\n m(\"li.mr-1.w-100\",\r\n [\r\n m(\"input[id='ol-1'][type='checkbox']\", {\r\n checked: this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (this.chosen_categories.length == this.search.categories.length) {\r\n this.chosen_categories = []\r\n } else {\r\n this.chosen_categories = []\r\n this.search.categories.map(item => {\r\n this.chosen_categories.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-1']\",\r\n \"不限\"\r\n )\r\n ]\r\n )\r\n ),\r\n m(\"ul.other-features\",\r\n [\r\n this.search.categories.map((category) => {\r\n return m(\"li.mr-1.w-100\",\r\n [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(this.chosen_categories.indexOf(category.id), 1)\r\n } else {\r\n this.chosen_categories.push(category.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='al-${category.id}']`,\r\n category.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n ),\r\n m('.h6.pt-20', '依房屋類型'),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li.mr-1.w-100\",\r\n [\r\n m(\"input[id='ol-14'][type='checkbox']\", {\r\n checked: this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.length == this.search.houseTypes.length) {\r\n this.chosen_houseTypes = []\r\n } else {\r\n this.chosen_houseTypes = []\r\n this.search.houseTypes.map(item => {\r\n this.chosen_houseTypes.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-14']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li.mr-1.w-100\",\r\n [\r\n m(`input[id='cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(this.chosen_houseTypes.indexOf(type.id), 1)\r\n } else {\r\n this.chosen_houseTypes.push(type.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='cl-${type.id}']`,\r\n type.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n ),\r\n ]),\r\n m('.col', [\r\n m('.h6', '依房數'),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li.mr-1.w-100\",\r\n [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked: this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.length == this.search.houseStyles.length) {\r\n this.chosen_houseStyles = []\r\n } else {\r\n this.chosen_houseStyles = []\r\n this.search.houseStyles.map(item => {\r\n this.chosen_houseStyles.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li.mr-1.w-100\",\r\n [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(this.chosen_houseStyles.indexOf(style.id), 1)\r\n } else {\r\n this.chosen_houseStyles.push(style.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='bl-${style.id}']`,\r\n style.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n ),\r\n m('.h6.pt-20', '依坪數'),\r\n m(\"ul.other-features\",\r\n [\r\n m(\"li.mr-1.w-100\",\r\n [\r\n m(\"input[id='ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = []\r\n } else {\r\n this.chosen_pains = []\r\n this.search.pains.map(item => {\r\n this.chosen_pains.push(item.id)\r\n\r\n })\r\n }\r\n }\r\n }),\r\n m(\"label.font-weight-bold[for='ol-21']\",\r\n \"不限\"\r\n )\r\n ]\r\n ),\r\n this.search.pains.map((pain) => {\r\n return m(\"li.mr-1.w-100\",\r\n [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(this.chosen_pains.indexOf(pain.id), 1)\r\n } else {\r\n this.chosen_pains.push(pain.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='dl-${pain.id}']`,\r\n pain.name\r\n )\r\n ]\r\n )\r\n })\r\n ]\r\n )\r\n ])\r\n ])\r\n ])),\r\n ]),\r\n m('.col-3.white', [\r\n m('.dropdown', m(\"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapsePrice'][role='button'][aria-expanded='false'][aria-controls='collapsePrice']\", \"租金範圍\")),\r\n m('.collapse.position-absolute[id=\"collapsePrice\"][data-parent=\"#mobileSearch\"]', {\r\n style: {\r\n \"width\": \"100vw\",\r\n \"left\": \"-25vw\",\r\n \"zIndex\": \"1\",\r\n }\r\n }, m('.card.card-body.m-0', [\r\n m('.h6.mb-3', '租金範圍'),\r\n m('.row.no-gutters', [\r\n m('.col-4',\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.min = e.target.value\r\n },\r\n class: 'mt-0 p-2 text-center',\r\n value: this.min,\r\n type: 'number',\r\n placeholder: '最小金額'\r\n }),\r\n ),\r\n m('.col-4.d-flex.align-items-center.px-2', m('span.w-100.rounded-pill', {\r\n style: {\r\n 'background': \"#4bbed9\",\r\n 'opacity': '0.8',\r\n 'padding': '3px 0'\r\n }\r\n })),\r\n m('.col-4',\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.max = e.target.value\r\n },\r\n class: 'mt-0 p-2 text-center',\r\n value: this.max,\r\n type: 'number',\r\n placeholder: '最大金額'\r\n }),\r\n )\r\n ]),\r\n ])),\r\n ]),\r\n m('.col-3.white', [\r\n m('.dropdown', m(\"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseOther'][role='button'][aria-expanded='false'][aria-controls='collapseOther']\", \"其他條件\")),\r\n m('.collapse.position-absolute[id=\"collapseOther\"][data-parent=\"#mobileSearch\"]', {\r\n style: {\r\n \"width\": \"100vw\",\r\n \"left\": \"-50vw\",\r\n \"zIndex\": \"1\",\r\n }\r\n }, m('.card.card-body.m-0', [\r\n m('.h6.mb-3', '其他條件'),\r\n m(\"ul.other-features.pl-2\",\r\n [\r\n this.search.conditions.map((condition) => {\r\n return [m(\"li.mr-0\", {\r\n style: {\r\n \"width\": \"50%\"\r\n }\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(this.chosen_conditions.indexOf(condition.id), 1)\r\n } else {\r\n this.chosen_conditions.push(condition.id)\r\n }\r\n }\r\n }),\r\n m(`label[for='el-${condition.id}']`,\r\n condition.name\r\n )\r\n ]\r\n )]\r\n })\r\n ]\r\n )\r\n ])),\r\n ]),\r\n m('.col-3.white',\r\n m(\"div\",\r\n m(\"a.btn.btn-info.px-1.text-center.btn-block.template-select[role='button']\", {\r\n onclick: (e) => {\r\n e.preventDefault()\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: []\r\n }\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district\r\n })\r\n })\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy\r\n })\r\n })\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle\r\n })\r\n })\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType\r\n })\r\n })\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain\r\n })\r\n })\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition\r\n })\r\n })\r\n this.search_item.range[0] = this.min\r\n this.search_item.range[1] = this.max\r\n\r\n $('#json_value').val(JSON.stringify(this.search_item))\r\n $.post('/RentHouse/mrt', {\r\n search: JSON.stringify(this.search_item)\r\n }, function (result) {\r\n window.result = result\r\n $('#result').val(JSON.stringify(result)).trigger('change')\r\n })\r\n\r\n $('.collapse').collapse('hide')\r\n }\r\n },\r\n m(\".h6.mb-0.text-white\", {\r\n style: {\r\n \"line-height\": \"1.35\"\r\n }\r\n },\r\n \"搜尋\"\r\n ),\r\n )\r\n )\r\n )\r\n ])\r\n ])\r\n }\r\n}\r\nwindow.isMobile = isMobile()\r\nexport default (window.isMobile) ? MobileSearchFormMrt : SearchFormMrt","import m from \"mithril\";\r\nimport stream from \"mithril/stream\";\r\nimport { TextBox } from \"../components\";\r\nimport RangeSlider from \"../components/form/range-slider\";\r\nimport isMobile from \"../lib/detect-mobile\";\r\nimport { Search } from \"../models\";\r\n\r\nvar RentType = [\r\n {\r\n id: 0,\r\n name: \"招租中\",\r\n },\r\n // {\r\n // id: 1,\r\n // name: '預備出租'\r\n // },\r\n // {\r\n // id: 2,\r\n // name: '已出租'\r\n // },\r\n {\r\n id: 3,\r\n name: \"簽約中\",\r\n },\r\n {\r\n id: 4,\r\n name: \"審查中\",\r\n },\r\n];\r\n\r\nclass SearchFormList {\r\n constructor() {\r\n var i = 0;\r\n this.show = false;\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n rentType: [],\r\n };\r\n this.keyword = \"\";\r\n this.chosen_distrcts = [];\r\n this.chosen_categories = [];\r\n this.chosen_houseStyles = [];\r\n this.chosen_houseTypes = [];\r\n this.chosen_pains = [];\r\n this.chosen_conditions = [];\r\n this.chosen_rentType = [];\r\n\r\n this.chosen_item = [];\r\n //this.chosen_item.push('預設條件')\r\n // this.chosen_item.push('行政區 不限')\r\n // this.chosen_item.push('物件類型 不限')\r\n // this.chosen_item.push('房數 不限')\r\n // this.chosen_item.push('房屋類型 不限')\r\n // this.chosen_item.push('坪數 不限')\r\n this.string = \"\";\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n rentType: [],\r\n };\r\n\r\n this.min = stream(0);\r\n this.max = stream(35100);\r\n this.start = stream(0);\r\n this.end = stream(35100);\r\n\r\n Search.fetchList().then((responsive) => {\r\n this.search = responsive;\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id);\r\n });\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id);\r\n });\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id);\r\n });\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id);\r\n });\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id);\r\n });\r\n this.search.rentType = [];\r\n });\r\n\r\n this.item = [];\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = [];\r\n }\r\n var getUrlString = location.href;\r\n var url = new URL(getUrlString);\r\n if (\r\n url.searchParams.get(\"item\") != null &&\r\n url.searchParams.get(\"item\") != \"undefined\" &&\r\n url.searchParams.get(\"item\") != \"\"\r\n ) {\r\n var string = url.searchParams.get(\"item\");\r\n string = string.replace(\"[\", \"\");\r\n string = string.replace(\"]\", \"\");\r\n string = string.replace(/\"/g, \"\");\r\n var array = string.split(\",\");\r\n this.chosen_item = array;\r\n }\r\n if (\r\n url.searchParams.get(\"range\") != null &&\r\n url.searchParams.get(\"range\") != \"undefined\" &&\r\n url.searchParams.get(\"range\") != \"\"\r\n ) {\r\n var string2 = url.searchParams.get(\"range\");\r\n string2 = string2.replace(\"[\", \"\");\r\n string2 = string2.replace(\"]\", \"\");\r\n string2 = string2.replace(/\"/g, \"\");\r\n var array2 = string2.split(\",\");\r\n this.start = stream(array2[0]);\r\n this.end = stream(array2[1]);\r\n }\r\n }\r\n\r\n view(vnode) {\r\n return [\r\n m(\r\n `form[id='search_form'][method='post']`,\r\n {\r\n action:\r\n \"/RentHouse/List?item=\" +\r\n JSON.stringify(this.chosen_item) +\r\n \"&range=\" +\r\n this.min() +\r\n \",\" +\r\n this.max(),\r\n },\r\n m(\"input[id='json_value']\", {\r\n name: \"search\",\r\n type: \"hidden\",\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n [\r\n m(\r\n \"div\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.keyword = e.target.value;\r\n },\r\n class: \"mt-0\",\r\n value: this.keyword,\r\n type: \"text\",\r\n placeholder: \"關鍵字搜尋(社區、路名)\",\r\n })\r\n ),\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"行政區域\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", [\r\n m(\".h6.pt-20.pl-20\", \"行政區域\"),\r\n m(\r\n \"ul.other-features.pb-2.justify-content-start.pl-25\",\r\n m(\"li\", [\r\n m(\"input[id='TaipeiArea0'][type='checkbox']\", {\r\n checked: this.chosen_distrcts.length == this.search.districts.length,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.length == this.search.districts.length) {\r\n this.chosen_distrcts = [];\r\n\r\n this.search.districts.map((district) => {\r\n if (this.chosen_item.indexOf(district.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(district.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(this.chosen_item.indexOf(\"行政區 不限\"), 1);\r\n } else {\r\n this.chosen_distrcts = [];\r\n this.search.districts.map((item) => {\r\n this.chosen_distrcts.push(item.id);\r\n if (this.chosen_item.indexOf(item.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"行政區 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='TaipeiArea0']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features.justify-content-start.pl-25.pb-10\", [\r\n this.search.districts.map((district) => {\r\n return m(\"li\", [\r\n m(`input[id=\"TaipeiArea-${district.id}\"][type = 'checkbox']`, {\r\n checked: this.chosen_distrcts.indexOf(district.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.indexOf(district.id) > -1) {\r\n this.chosen_distrcts.splice(\r\n this.chosen_distrcts.indexOf(district.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(district.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(district.districtName),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_distrcts.push(district.id);\r\n }\r\n\r\n this.search.districts.map((district) => {\r\n if (\r\n this.chosen_distrcts.indexOf(district.id) > -1 &&\r\n this.chosen_item.indexOf(district.districtName) == -1\r\n ) {\r\n this.chosen_item.push(district.districtName);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_distrcts.length != this.search.districts.length &&\r\n this.chosen_item.indexOf(\"行政區 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"行政區 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_distrcts.length == this.search.districts.length &&\r\n this.chosen_item.indexOf(\"行政區 不限\") == -1\r\n ) {\r\n this.search.districts.map((item) => {\r\n if (this.chosen_item.indexOf(item.districtName) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.districtName),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"行政區 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='TaipeiArea-${district.id}']`, district.districtName),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ]),\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"房屋選項\"\r\n ),\r\n m(\r\n \".dropdown-menu[aria-labelledby='dropdownMenuButton']\",\r\n {\r\n style: {\r\n width: \"700px\",\r\n },\r\n },\r\n m(\".row.no-gutters.py-3\", [\r\n m(\".col.pl-20\", [\r\n m(\".h5.pt-20\", \"依物件類型\"),\r\n m(\r\n \"ul.other-features\",\r\n m(\"li\", [\r\n m(\"input[id='Al-0'][type='checkbox']\", {\r\n checked:\r\n this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_categories.length == this.search.categories.length\r\n ) {\r\n this.chosen_categories = [];\r\n\r\n this.search.categories.map((category) => {\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n });\r\n\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_categories = [];\r\n this.search.categories.map((item) => {\r\n this.chosen_categories.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='Al-0']\", \"不限\"),\r\n ])\r\n ),\r\n m(\".h6.pt-20\", \"社會住宅\"),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n if (category.item == 1) {\r\n return m(\"li\", [\r\n m(`input[id='Al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n\r\n this.search.categories.map((category) => {\r\n if (\r\n this.chosen_categories.indexOf(category.id) > -1 &&\r\n this.chosen_item.indexOf(category.name) == -1\r\n ) {\r\n this.chosen_item.push(category.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_categories.length !=\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_categories.length ==\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") == -1\r\n ) {\r\n this.search.categories.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='Al-${category.id}']`, category.name),\r\n ]);\r\n }\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"一般出租住宅\"),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n if (category.item == 2) {\r\n return m(\"li\", [\r\n m(`input[id='Al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(category.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(category.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n this.search.categories.map((category) => {\r\n if (\r\n this.chosen_categories.indexOf(category.id) > -1 &&\r\n this.chosen_item.indexOf(category.name) == -1\r\n ) {\r\n this.chosen_item.push(category.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_categories.length !=\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"物件類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_categories.length ==\r\n this.search.categories.length &&\r\n this.chosen_item.indexOf(\"物件類型 不限\") == -1\r\n ) {\r\n this.search.categories.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"物件類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='Al-${category.id}']`, category.name),\r\n ]);\r\n }\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依房數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='Bl-11'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseStyles.length == this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length\r\n ) {\r\n this.chosen_houseStyles = [];\r\n\r\n this.search.houseStyles.map((houseStyle) => {\r\n if (this.chosen_item.indexOf(houseStyle.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(houseStyle.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房數 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseStyles = [];\r\n this.search.houseStyles.map((item) => {\r\n this.chosen_houseStyles.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房數 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='Bl-11']\", \"不限\"),\r\n ]),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li\", [\r\n m(`input[id='Bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(\r\n this.chosen_houseStyles.indexOf(style.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(style.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(style.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_houseStyles.push(style.id);\r\n }\r\n this.search.houseStyles.map((style) => {\r\n if (\r\n this.chosen_houseStyles.indexOf(style.id) > -1 &&\r\n this.chosen_item.indexOf(style.name) == -1\r\n ) {\r\n this.chosen_item.push(style.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_houseStyles.length !=\r\n this.search.houseStyles.length &&\r\n this.chosen_item.indexOf(\"房數 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房數 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length &&\r\n this.chosen_item.indexOf(\"房數 不限\") == -1\r\n ) {\r\n this.search.houseStyles.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房數 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='Bl-${style.id}']`, style.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依房屋類型\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='Cl-14'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseTypes.length == this.search.houseTypes.length\r\n ) {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((type) => {\r\n if (this.chosen_item.indexOf(type.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(type.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房屋類型 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((item) => {\r\n this.chosen_houseTypes.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房屋類型 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='Cl-14']\", \"不限\"),\r\n ]),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li\", [\r\n m(`input[id='Cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(\r\n this.chosen_houseTypes.indexOf(type.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(type.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(type.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_houseTypes.push(type.id);\r\n }\r\n this.search.houseTypes.map((type) => {\r\n if (\r\n this.chosen_houseTypes.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_houseTypes.length !=\r\n this.search.houseTypes.length &&\r\n this.chosen_item.indexOf(\"房屋類型 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"房屋類型 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_houseTypes.length ==\r\n this.search.houseTypes.length &&\r\n this.chosen_item.indexOf(\"房屋類型 不限\") == -1\r\n ) {\r\n this.search.houseTypes.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"房屋類型 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='Cl-${type.id}']`, type.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6.pt-20\", \"依坪數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li\", [\r\n m(\"input[id='Dl-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = [];\r\n this.search.pains.map((pain) => {\r\n if (this.chosen_item.indexOf(pain.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(pain.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"坪數 不限\"),\r\n 1\r\n );\r\n } else {\r\n this.chosen_pains = [];\r\n this.search.pains.map((item) => {\r\n this.chosen_pains.push(item.id);\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"坪數 不限\");\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='Dl-21']\", \"不限\"),\r\n ]),\r\n this.search.pains.map((pain) => {\r\n return m(\"li\", [\r\n m(`input[id='Dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(\r\n this.chosen_pains.indexOf(pain.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(pain.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(pain.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_pains.push(pain.id);\r\n }\r\n\r\n this.search.pains.map((type) => {\r\n if (\r\n this.chosen_pains.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n if (\r\n this.chosen_pains.length != this.search.pains.length &&\r\n this.chosen_item.indexOf(\"坪數 不限\") > -1\r\n ) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(\"坪數 不限\"),\r\n 1\r\n );\r\n }\r\n if (\r\n this.chosen_pains.length == this.search.pains.length &&\r\n this.chosen_item.indexOf(\"坪數 不限\") == -1\r\n ) {\r\n this.search.pains.map((item) => {\r\n if (this.chosen_item.indexOf(item.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(item.name),\r\n 1\r\n );\r\n }\r\n });\r\n this.chosen_item.push(\"坪數 不限\");\r\n }\r\n },\r\n }),\r\n m(`label[for='Dl-${pain.id}']`, pain.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"房屋狀態\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", [\r\n m(\".h6.pt-20.pl-20\", \"房屋狀態\"),\r\n m(\r\n \"ul.pl-20.pb-15\",\r\n {\r\n style: {\r\n width: \"540px\",\r\n },\r\n },\r\n [\r\n RentType.map((type) => {\r\n return [\r\n m(\r\n \"li.mr-1\",\r\n {\r\n style: {\r\n width: \"30%\",\r\n },\r\n key: type.name,\r\n },\r\n [\r\n m(`input[id='type-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_rentType.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_rentType.indexOf(type.id) > -1) {\r\n this.chosen_rentType.splice(\r\n this.chosen_rentType.indexOf(type.id),\r\n 1\r\n );\r\n\r\n // console.log(\"移除\", this.chosen_rentType);\r\n\r\n this.search.rentType.map((type) => {\r\n if (\r\n this.chosen_item.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n // console.log(\"內添加\");\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n return;\r\n }\r\n if (this.chosen_rentType.indexOf(type.id) == -1) {\r\n this.chosen_rentType.push(type.id);\r\n // console.log(\"添加\", this.chosen_rentType);\r\n }\r\n this.search.rentType.map((type) => {\r\n if (\r\n this.chosen_item.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n // console.log(\"內添加\");\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n },\r\n }),\r\n m(`label[for='type-${type.id}']`, type.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]\r\n ),\r\n ]),\r\n ]),\r\n m(\".dropdown\", [\r\n m(\r\n \"a.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[aria-expanded='false'][aria-haspopup='true'][data-toggle='dropdown'][href='#'][id='dropdownMenuButton']\",\r\n \"其他條件\"\r\n ),\r\n m(\".dropdown-menu[aria-labelledby='dropdownMenuButton']\", [\r\n m(\".h6.pt-20.pl-20\", \"其他條件\"),\r\n m(\r\n \"ul.other-features.pl-20.pb-15\",\r\n {\r\n style: {\r\n width: \"540px\",\r\n },\r\n },\r\n [\r\n this.search.conditions.map((condition) => {\r\n return [\r\n m(\r\n \"li.mr-1\",\r\n {\r\n style: {\r\n width: \"30%\",\r\n },\r\n },\r\n [\r\n m(`input[id='condition-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(\r\n this.chosen_conditions.indexOf(condition.id),\r\n 1\r\n );\r\n if (this.chosen_item.indexOf(condition.name) > -1) {\r\n this.chosen_item.splice(\r\n this.chosen_item.indexOf(condition.name),\r\n 1\r\n );\r\n }\r\n } else {\r\n this.chosen_conditions.push(condition.id);\r\n }\r\n this.search.conditions.map((type) => {\r\n if (\r\n this.chosen_conditions.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n },\r\n }),\r\n m(`label[for='condition-${condition.id}']`, condition.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]\r\n ),\r\n ]),\r\n ]),\r\n m(\r\n \".pl-40 pr-40\",\r\n m(RangeSlider, {\r\n min: this.min,\r\n max: this.max,\r\n start: this.start,\r\n end: this.end,\r\n })\r\n ),\r\n m(\".row.w-100\", [\r\n m(\r\n \"div.col-12\",\r\n m(\r\n \"button\",\r\n m(\r\n \"a.w-100.h-100\",\r\n {\r\n onclick: (e) => {\r\n // console.log(\"開始搜尋2\");\r\n e.preventDefault();\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: [],\r\n rentType: [],\r\n };\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district,\r\n });\r\n });\r\n this.chosen_categories.map((categoriy) => {\r\n this.search_item.categories.push({\r\n id: categoriy,\r\n });\r\n });\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle,\r\n });\r\n });\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType,\r\n });\r\n });\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain,\r\n });\r\n });\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition,\r\n });\r\n });\r\n\r\n this.chosen_rentType.map((type) => {\r\n this.search_item.rentType.push(type);\r\n });\r\n\r\n this.search_item.range[0] = this.min();\r\n this.search_item.range[1] = this.max();\r\n\r\n // console.log(this.search_item.rentType);\r\n\r\n this.chosen_item.map((item, index) => {\r\n if (index == 0) {\r\n this.string = item;\r\n } else {\r\n this.string = this.string + \",\" + item;\r\n }\r\n });\r\n\r\n $(\"#json_value\").val(JSON.stringify(this.search_item));\r\n $(\"#search_form\").submit();\r\n },\r\n },\r\n \"搜尋\"\r\n )\r\n )\r\n ),\r\n ]),\r\n ]\r\n ),\r\n m(\r\n \"section.sidebar\",\r\n m(\"div.mt-40\", [\r\n m(\"h4.sidebar-title\", [\r\n m(\"span.text\", { style: { fontSize: \"1.075rem\" } }, \"您已搜尋\"),\r\n m(\"span.shape\"),\r\n ]),\r\n m(\"div.sidebar-tags\", [\r\n this.chosen_item.map((item) => {\r\n if (item != null && item != \"\") {\r\n return [m(\"span.badge.grey.lighten-3.py-1.px-2.mb-15.rounded-0.d-table\", item)];\r\n }\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ];\r\n }\r\n}\r\n\r\nclass MobileSearchFormList {\r\n constructor() {\r\n var i = 0;\r\n this.show = false;\r\n this.search = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n };\r\n this.keyword = \"\";\r\n this.chosen_distrcts = [];\r\n this.chosen_categories = [];\r\n this.chosen_houseStyles = [];\r\n this.chosen_houseTypes = [];\r\n this.chosen_pains = [];\r\n this.chosen_conditions = [];\r\n this.chosen_rentType = [];\r\n\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: \"\",\r\n range: [],\r\n rentType: [],\r\n };\r\n\r\n this.min = 0;\r\n this.max = 35100;\r\n\r\n Search.fetchList().then((responsive) => {\r\n this.search = responsive;\r\n this.search.districts.map((district) => {\r\n this.chosen_distrcts.push(district.id);\r\n });\r\n this.search.categories.map((category) => {\r\n this.chosen_categories.push(category.id);\r\n });\r\n this.search.houseStyles.map((houseStyle) => {\r\n this.chosen_houseStyles.push(houseStyle.id);\r\n });\r\n this.search.houseTypes.map((houseType) => {\r\n this.chosen_houseTypes.push(houseType.id);\r\n });\r\n this.search.pains.map((pain) => {\r\n this.chosen_pains.push(pain.id);\r\n });\r\n });\r\n\r\n this.item = [];\r\n for (i = 0; i < 10; i++) {\r\n this.item[i] = [];\r\n }\r\n }\r\n\r\n view(vnode) {\r\n return m(\r\n `form[action='/RentHouse/List?item=${JSON.stringify(this.search_item)}'][id='mobileSearch'][method='post']`,\r\n [\r\n m(\"input[id='json_value']\", {\r\n name: \"search\",\r\n type: \"hidden\",\r\n value: JSON.stringify(this.search_item),\r\n }),\r\n m(\".row.no-gutters\", [\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseDistrict'][role='button'][aria-expanded='false'][aria-controls='collapseDistrict']\",\r\n \"行政區域\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseDistrict\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"0px\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"行政區域\"),\r\n m(\r\n \"ul.other-features.pl-2.pb-2\",\r\n m(\"li\", [\r\n m(\"input[id='taipeiArea0'][type='checkbox']\", {\r\n checked: this.chosen_distrcts.length == this.search.districts.length,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.length == this.search.districts.length) {\r\n this.chosen_distrcts = [];\r\n } else {\r\n this.chosen_distrcts = [];\r\n this.search.districts.map((item) => {\r\n this.chosen_distrcts.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='taipeiArea0']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features.pl-2\", [\r\n this.search.districts.map((district) => {\r\n return m(\"li.mr-25\", [\r\n m(`input[id=\"taipeiArea-${district.id}\"][type = 'checkbox']`, {\r\n checked: this.chosen_distrcts.indexOf(district.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_distrcts.indexOf(district.id) > -1) {\r\n this.chosen_distrcts.splice(\r\n this.chosen_distrcts.indexOf(district.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_distrcts.push(district.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='taipeiArea-${district.id}']`, district.districtName),\r\n ]);\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseHouse'][role='button'][aria-expanded='false'][aria-controls='collapseHouse']\",\r\n \"房屋選項\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseHouse\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-25vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".row.no-gutters\", [\r\n m(\".col\", [\r\n m(\".h6\", \"依物件類型\"),\r\n m(\r\n \"ul.other-features.d-inline\",\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-1'][type='checkbox']\", {\r\n checked:\r\n this.chosen_categories.length == this.search.categories.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_categories.length ==\r\n this.search.categories.length\r\n ) {\r\n this.chosen_categories = [];\r\n } else {\r\n this.chosen_categories = [];\r\n this.search.categories.map((item) => {\r\n this.chosen_categories.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-1']\", \"不限\"),\r\n ])\r\n ),\r\n m(\"ul.other-features\", [\r\n this.search.categories.map((category) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='al-${category.id}'][type='checkbox']`, {\r\n checked: this.chosen_categories.indexOf(category.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_categories.indexOf(category.id) > -1) {\r\n this.chosen_categories.splice(\r\n this.chosen_categories.indexOf(category.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_categories.push(category.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='al-${category.id}']`, category.name),\r\n ]);\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"依房屋類型\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-14'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseTypes.length == this.search.houseTypes.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseTypes.length ==\r\n this.search.houseTypes.length\r\n ) {\r\n this.chosen_houseTypes = [];\r\n } else {\r\n this.chosen_houseTypes = [];\r\n this.search.houseTypes.map((item) => {\r\n this.chosen_houseTypes.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-14']\", \"不限\"),\r\n ]),\r\n this.search.houseTypes.map((type) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='cl-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseTypes.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseTypes.indexOf(type.id) > -1) {\r\n this.chosen_houseTypes.splice(\r\n this.chosen_houseTypes.indexOf(type.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseTypes.push(type.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='cl-${type.id}']`, type.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n m(\".col\", [\r\n m(\".h6\", \"依房數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='bl-11'][type='checkbox']\", {\r\n checked:\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length,\r\n onclick: (e) => {\r\n if (\r\n this.chosen_houseStyles.length ==\r\n this.search.houseStyles.length\r\n ) {\r\n this.chosen_houseStyles = [];\r\n } else {\r\n this.chosen_houseStyles = [];\r\n this.search.houseStyles.map((item) => {\r\n this.chosen_houseStyles.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='bl-11']\", \"不限\"),\r\n ]),\r\n this.search.houseStyles.map((style) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='bl-${style.id}'][type='checkbox']`, {\r\n checked: this.chosen_houseStyles.indexOf(style.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_houseStyles.indexOf(style.id) > -1) {\r\n this.chosen_houseStyles.splice(\r\n this.chosen_houseStyles.indexOf(style.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_houseStyles.push(style.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='bl-${style.id}']`, style.name),\r\n ]);\r\n }),\r\n ]),\r\n m(\".h6.pt-20\", \"依坪數\"),\r\n m(\"ul.other-features\", [\r\n m(\"li.mr-1.w-100\", [\r\n m(\"input[id='ol-21'][type='checkbox']\", {\r\n checked: this.chosen_pains.length == this.search.pains.length,\r\n onclick: (e) => {\r\n if (this.chosen_pains.length == this.search.pains.length) {\r\n this.chosen_pains = [];\r\n } else {\r\n this.chosen_pains = [];\r\n this.search.pains.map((item) => {\r\n this.chosen_pains.push(item.id);\r\n });\r\n }\r\n },\r\n }),\r\n m(\"label.font-weight-bold[for='ol-21']\", \"不限\"),\r\n ]),\r\n this.search.pains.map((pain) => {\r\n return m(\"li.mr-1.w-100\", [\r\n m(`input[id='dl-${pain.id}'][type='checkbox']`, {\r\n checked: this.chosen_pains.indexOf(pain.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_pains.indexOf(pain.id) > -1) {\r\n this.chosen_pains.splice(\r\n this.chosen_pains.indexOf(pain.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_pains.push(pain.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='dl-${pain.id}']`, pain.name),\r\n ]);\r\n }),\r\n ]),\r\n ]),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseRentType'][role='button'][aria-expanded='false'][aria-controls='collapseRentType']\",\r\n \"房屋狀態\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseRentType\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-50vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"房屋狀態\"),\r\n m(\"ul.other-features.pl-2\", [\r\n RentType.map((type) => {\r\n return [\r\n m(\r\n \"li.mr-1\",\r\n {\r\n style: {\r\n width: \"30%\",\r\n },\r\n key: type.name,\r\n },\r\n [\r\n m(`input[id='type-${type.id}'][type='checkbox']`, {\r\n checked: this.chosen_rentType.indexOf(type.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_rentType.indexOf(type.id) > -1) {\r\n this.chosen_rentType.splice(\r\n this.chosen_rentType.indexOf(type.id),\r\n 1\r\n );\r\n\r\n // console.log(\"移除\", this.chosen_rentType);\r\n\r\n this.search.rentType.map((type) => {\r\n if (\r\n this.chosen_item.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n // console.log(\"內添加\");\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n\r\n return;\r\n }\r\n if (this.chosen_rentType.indexOf(type.id) == -1) {\r\n this.chosen_rentType.push(type.id);\r\n // console.log(\"添加\", this.chosen_rentType);\r\n }\r\n this.search.rentType.map((type) => {\r\n if (\r\n this.chosen_item.indexOf(type.id) > -1 &&\r\n this.chosen_item.indexOf(type.name) == -1\r\n ) {\r\n // console.log(\"內添加\");\r\n this.chosen_item.push(type.name);\r\n }\r\n });\r\n },\r\n }),\r\n m(`label[for='type-${type.id}']`, type.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-3.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapseOther'][role='button'][aria-expanded='false'][aria-controls='collapseOther']\",\r\n \"其他條件\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapseOther\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n left: \"-75vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.m-0\", [\r\n m(\".h6.mb-3\", \"其他條件\"),\r\n m(\"ul.other-features.pl-2\", [\r\n this.search.conditions.map((condition) => {\r\n return [\r\n m(\r\n \"li.mr-0\",\r\n {\r\n style: {\r\n width: \"50%\",\r\n },\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n checked: this.chosen_conditions.indexOf(condition.id) > -1,\r\n onclick: (e) => {\r\n if (this.chosen_conditions.indexOf(condition.id) > -1) {\r\n this.chosen_conditions.splice(\r\n this.chosen_conditions.indexOf(condition.id),\r\n 1\r\n );\r\n } else {\r\n this.chosen_conditions.push(condition.id);\r\n }\r\n },\r\n }),\r\n m(`label[for='el-${condition.id}']`, condition.name),\r\n ]\r\n ),\r\n ];\r\n }),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\".col-12.white\", [\r\n m(\r\n \".dropdown\",\r\n m(\r\n \"a.text-center.btn.btn-outline-secondary.dropdown-toggle.btn-block.template-select[data-toggle='collapse'][href='#collapsePrice'][role='button'][aria-expanded='false'][aria-controls='collapsePrice']\",\r\n \"租金範圍\"\r\n )\r\n ),\r\n m(\r\n '.collapse.position-absolute[id=\"collapsePrice\"][data-parent=\"#mobileSearch\"]',\r\n {\r\n style: {\r\n width: \"100vw\",\r\n zIndex: \"1\",\r\n },\r\n },\r\n m(\".card.card-body.d-block.m-0\", [\r\n m(\".h6.mb-3\", \"租金範圍\"),\r\n m(\".row.no-gutters\", [\r\n m(\r\n \".col-4\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.min = e.target.value;\r\n // console.log(this.min);\r\n },\r\n class: \"mt-0 p-2 text-center\",\r\n value: this.min,\r\n type: \"number\",\r\n placeholder: \"最小金額\",\r\n })\r\n ),\r\n m(\r\n \".col-4.d-flex.align-items-center.px-2\",\r\n m(\"span.w-100.rounded-pill\", {\r\n style: {\r\n background: \"#4bbed9\",\r\n opacity: \"0.8\",\r\n padding: \"3px 0\",\r\n },\r\n })\r\n ),\r\n m(\r\n \".col-4\",\r\n m(TextBox, {\r\n oninput: (e) => {\r\n this.max = e.target.value;\r\n // console.log(this.max);\r\n },\r\n class: \"mt-0 p-2 text-center\",\r\n value: this.max,\r\n type: \"number\",\r\n placeholder: \"最大金額\",\r\n })\r\n ),\r\n ]),\r\n ])\r\n ),\r\n ]),\r\n m(\r\n \".col-12.white.d-flex.justify-content-center.py-2\",\r\n {\r\n style: {\r\n zIndex: \"0\",\r\n },\r\n },\r\n m(\r\n \"button.rounded-pill.mobileButton\",\r\n m(\r\n \"a.w-100.h-100\",\r\n {\r\n onclick: (e) => {\r\n e.preventDefault();\r\n this.search_item = {\r\n categories: [],\r\n districts: [],\r\n houseStyles: [],\r\n houseTypes: [],\r\n pains: [],\r\n conditions: [],\r\n keyword: this.keyword,\r\n range: [],\r\n rentType: [],\r\n };\r\n this.chosen_distrcts.map((district) => {\r\n this.search_item.districts.push({\r\n id: district,\r\n });\r\n });\r\n this.chosen_categories.map((category) => {\r\n this.search_item.categories.push({\r\n id: category,\r\n });\r\n });\r\n this.chosen_houseStyles.map((houseStyle) => {\r\n this.search_item.houseStyles.push({\r\n id: houseStyle,\r\n });\r\n });\r\n this.chosen_houseTypes.map((houseType) => {\r\n this.search_item.houseTypes.push({\r\n id: houseType,\r\n });\r\n });\r\n this.chosen_pains.map((pain) => {\r\n this.search_item.pains.push({\r\n id: pain,\r\n });\r\n });\r\n this.chosen_conditions.map((condition) => {\r\n this.search_item.conditions.push({\r\n id: condition,\r\n });\r\n });\r\n this.chosen_rentType.map((type) => {\r\n this.search_item.rentType.push(type);\r\n });\r\n this.search_item.range[0] = this.min;\r\n this.search_item.range[1] = this.max;\r\n\r\n $(\"#json_value\").val(JSON.stringify(this.search_item));\r\n $(\"#mobileSearch\").submit();\r\n },\r\n },\r\n \"搜尋\"\r\n )\r\n )\r\n ),\r\n ]),\r\n ]\r\n );\r\n }\r\n}\r\nwindow.isMobile = isMobile();\r\nexport default window.isMobile ? MobileSearchFormList : SearchFormList;\r\n","import m from 'mithril'\r\nimport classNames from 'classnames'\r\nimport {\r\n Search,\r\n Conditions\r\n} from '../models'\r\nimport {\r\n TextBox\r\n} from '../components'\r\n\r\nclass CliamForm {\r\n constructor() {\r\n var i = 0\r\n this.show = false\r\n this.search = {\r\n conditions: []\r\n }\r\n\r\n this.chosen_conditions = []\r\n\r\n this.search_item = {\r\n conditions: []\r\n }\r\n\r\n this.house = []\r\n\r\n this.house_id = 51\r\n\r\n this.conditions = new Conditions\r\n this.conditions.houseId = 51\r\n\r\n\r\n Search.fetch().then((responsive) => {\r\n this.search.conditions = responsive.conditions\r\n })\r\n\r\n Conditions.get().then((responsive) => {\r\n this.house = responsive\r\n })\r\n\r\n Conditions.load(this.house_id).then((responsive) => {\r\n // this.conditions.internet = responsive.internet\r\n // this.conditions.aircondition = responsive.aircondition\r\n // this.conditions.gas = responsive.gas\r\n // this.conditions.sofa = responsive.sofa\r\n // this.conditions.balcony = responsive.balcony //陽台\r\n // this.conditions.furniture = responsive.furniture //家具\r\n // this.conditions.tv = responsive.tv\r\n // this.conditions.waterHeater = responsive.waterHeater\r\n // this.conditions.bed = responsive.bed //床\r\n // this.conditions.cable = responsive.cable //有線電視\r\n // this.conditions.cook = responsive.cook\r\n // this.conditions.furniturePlus = responsive.furniturePlus //傢俱選配加值服務\r\n // this.conditions.refrigerator = responsive.refrigerator //冰箱\r\n // this.conditions.washMachine = responsive.washMachine //洗衣機\r\n // this.conditions.wardrobe = responsive.wardrobe //衣櫃\r\n // this.conditions.accessControl = responsive.accessControl //門禁管理\r\n // this.conditions.barrier = responsive.barrier //無障礙空間\r\n this.conditions.claimValues = responsive\r\n })\r\n\r\n }\r\n\r\n save(event, value) {\r\n this.conditions.save().then(() => {\r\n alert('checked')\r\n Conditions.get().then((responsive) => {\r\n this.house = responsive\r\n })\r\n })\r\n }\r\n\r\n\r\n view() {\r\n\r\n return [m(\".pt-195\"),\r\n [m(\"ul.other-features\",\r\n [\r\n m(\"select.form-control.mb-3\", {\r\n style: {\r\n backgroundColor: '#eee',\r\n minWidth: '90px'\r\n },\r\n onchange: (e) => {\r\n this.house_id = e.target.value\r\n this.conditions.houseId = e.target.value\r\n Conditions.load(this.house_id).then((responsive) => {\r\n this.conditions.claimValues = responsive\r\n })\r\n Search.fetch().then((responsive) => {\r\n this.search.conditions = responsive.conditions\r\n })\r\n }\r\n }, [\r\n this.house.map((item, index) => {\r\n return m('option', {\r\n selected: this.house_id == item.id,\r\n value: item.id\r\n }, item.id + item.houseName + '----' + item.dateCreated)\r\n })\r\n ]),\r\n this.search.conditions.map((condition) => {\r\n return [m(\"li\", {\r\n style: {\r\n \"width\": \"50%\"\r\n }\r\n },\r\n [\r\n m(`input[id='el-${condition.id}'][type='checkbox']`, {\r\n style: {\r\n height: '25px',\r\n width: '25px',\r\n },\r\n checked: this.conditions.checkAuth(condition.name),\r\n onclick: (e) => {\r\n this.conditions.toggleAuth(condition.name)\r\n }\r\n }),\r\n m(`label.w-75[for='el-${condition.id}']`, {\r\n style: {\r\n fontSize: '1.8rem',\r\n }\r\n },\r\n condition.name\r\n )\r\n ]\r\n )]\r\n })\r\n ]\r\n ),\r\n m(\".text-right.text-lg-center.pb-15\", {\r\n style: {\r\n \"margin-top\": \"-15px\"\r\n }\r\n },\r\n m(\"Button\", {\r\n class: 'btn-primary',\r\n onclick: this.save.bind(this)\r\n }, '儲存'),\r\n )\r\n ]\r\n ]\r\n\r\n }\r\n}\r\n\r\nexport default CliamForm","import m from 'mithril'\r\nimport stream from 'mithril/stream'\r\nimport classNames from 'classnames'\r\nimport Liker from '../models/liker'\r\n\r\n\r\nclass LikersForm {\r\n constructor(vnode) {\r\n // window.house = (localStorage.getItem(\"liker\") != null) ? JSON.parse(localStorage.getItem(\"liker\")) : []\r\n this.houseId = parseInt(vnode.attrs.id)\r\n }\r\n view(vnode) {\r\n return (window.IsAuthenticated == \"True\") ? [m(\"a.heart-icon\", {\r\n \"id\": \"house-\" + this.houseId,\r\n \"data-bind\": this.houseId,\r\n \"tabindex\": \"0\",\r\n class: classNames({\r\n \"loved\": window.house.includes(this.houseId)\r\n }),\r\n onclick: (e) => {\r\n if (window.house.indexOf(this.houseId) > -1) {\r\n window.house.splice(window.house.indexOf(this.houseId), 1)\r\n } else {\r\n window.house.push(this.houseId)\r\n }\r\n Liker.save(window.house)\r\n // localStorage.setItem(\"liker\", JSON.stringify(window.house))\r\n }\r\n },\r\n )]: [m(\"a.heart-icon\", {\r\n \"id\": \"house-\" + this.houseId,\r\n \"data-bind\": this.houseId,\r\n \"tabindex\": \"0\",\r\n \"data-target\": \"#logonModal\",\r\n \"data-url\": window.loginUrl,\r\n onclick: (e) => {\r\n window.LoginModal()\r\n }\r\n },\r\n m(\"span\",\r\n \"liker\"\r\n )\r\n )\r\n\r\n ]\r\n\r\n }\r\n}\r\n\r\n\r\nexport default LikersForm","import m from \"mithril\";\r\nimport SearchForm from \"./form\";\r\nimport SearchFormMap from \"./form/map\";\r\nimport SearchFormMrt from \"./form/mrt\";\r\nimport SearchFormList from \"./form/list\";\r\nimport MobileSearchForm from \"./form\";\r\nimport MobileSearchFormList from \"./form/list\";\r\nimport MobileSearchFormMrt from \"./form/mrt\";\r\nimport MobileSearchFormMap from \"./form/map\";\r\n\r\nimport CliamForm from \"./claim\";\r\nimport isMobile from \"./lib/detect-mobile\";\r\nimport LikersForm from \"./form/liker\";\r\n\r\nimport Liker from \"./models/liker\";\r\n\r\nwindow.isMobile = isMobile();\r\n\r\nconst likers = document.querySelectorAll(\".collection-button\");\r\n\r\nconst root = document.getElementById(\"search_bar\");\r\nconst mobile_root = document.getElementById(\"mobile_search_bar\");\r\nconst root_map = document.getElementById(\"search_bar_map\");\r\nconst mobile_root_map = document.getElementById(\"mobile_search_bar_map\");\r\nconst root_mrt = document.getElementById(\"search_bar_mrt\");\r\nconst mobile_root_mrt = document.getElementById(\"mobile_search_bar_mrt\");\r\nconst root_list = document.getElementById(\"search_bar_list\");\r\nconst mobile_root_list = document.getElementById(\"mobile_search_bar_list\");\r\nconst claim = document.getElementById(\"jjjjjjjjjjj\");\r\n// const liker = document.querySelector('.lifer_icon')\r\n\r\nif (root != null && !window.isMobile) {\r\n m.mount(root, SearchForm);\r\n}\r\nif (mobile_root != null && window.isMobile) {\r\n m.mount(mobile_root, MobileSearchForm);\r\n}\r\nif (root_map != null && !window.isMobile) {\r\n m.mount(root_map, SearchFormMap);\r\n}\r\nif (mobile_root_map != null && window.isMobile) {\r\n m.mount(mobile_root_map, MobileSearchFormMap);\r\n}\r\nif (root_mrt != null && !window.isMobile) {\r\n m.mount(root_mrt, SearchFormMrt);\r\n}\r\nif (mobile_root_mrt != null && window.isMobile) {\r\n m.mount(mobile_root_mrt, MobileSearchFormMrt);\r\n}\r\nif (root_list != null && !window.isMobile) {\r\n m.mount(root_list, SearchFormList);\r\n}\r\nif (mobile_root_list != null && window.isMobile) {\r\n m.mount(mobile_root_list, MobileSearchFormList);\r\n}\r\nif (claim != null) {\r\n m.mount(claim, CliamForm);\r\n}\r\n\r\n// console.log(window.IsAuthenticated) 認證狀況\r\n// window.house = (localStorage.getItem(\"liker\") != null) ? JSON.parse(localStorage.getItem(\"liker\")) : []\r\n//Liker.fetch().then((response) => {\r\n// window.house = response\r\n// if (LikersForm != null) {\r\n// likers.forEach(liker => {\r\n// m.mount(liker, {\r\n// view: () => {\r\n// return m(LikersForm, {\r\n// id: liker.attributes.getNamedItem('data-bind').nodeValue,\r\n// })\r\n// }\r\n// })\r\n// });\r\n// }\r\n//})\r\n\r\n// m.mount(claim, CliamForm)\r\n// m.mount(liker, LikerForm)\r\n"],"sourceRoot":""}