From 3257c7e7ecf9529ae596c79573f4347d6b4023ec Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Sat, 11 Jan 2025 20:55:31 +0700 Subject: [PATCH] reminified + from mjs.min to min.mjs --- hotline.min.mjs | 20 ++++++++++++++++++++ hotline.mjs.min | 19 ------------------- 2 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 hotline.min.mjs delete mode 100644 hotline.mjs.min diff --git a/hotline.min.mjs b/hotline.min.mjs new file mode 100644 index 0000000..0659e89 --- /dev/null +++ b/hotline.min.mjs @@ -0,0 +1,20 @@ +"use strict";/** + * @name hotline.mjs + * + * @description + * Module for creating "hot lines" + * + * @class + * @public + * + * @example + * сonst instance = new hotline(shell); + * instance.step = '-5'; + * instance.start(); + * + * {@link https://git.mirzaev.sexy/mirzaev/hotline.mjs} + * + * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License + * @author Arsen Mirzaev Tatyano-Muradovich + */ +export default class hotline{#e;#t={};#s={};#n=null;#i=null;interval=10;alive=!0;#l=!1;#r="false";get moving(){return this.#r}movable=!0;wheel=!1;delta=30;button=0;hover=!0;step=1;transfer=!0;#o=!0;sticky=!1;#a=Object.freeze({beginning:Symbol("beginning"),center:Symbol("center"),end:Symbol("end")});get magnetism(){return this.#a}magnetic=null;magnet=1;vertical=!1;observe=!1;#h=null;events=new Map([["ready",!1],["started",!1],["stopped",!1],["configured",!1],["move",!1],["move.mouse",!1],["move.touch",!1],["move.freezed",!1],["move.unfreezed",!1],["moved.forward",!1],["moved.backward",!1],["offset",!1],["transfer.beginning",!0],["transfer.end",!0],["observer.started",!1],["observer.stopped",!1]]);#m=new Set(["events"]);#v=new Map;constructor(e,t=!1){e instanceof HTMLElement&&(this.#e=e,t&&(this.#e.hotline=this),this.#e.childElementCount>1&&(this.#n="ready",this.events.get("ready")&&this.#e.dispatchEvent(new CustomEvent("hotline.ready"))))}start(){if(null===this.#i){const e=this;this.#i=setInterval((()=>{e.#t.element=e.#e.firstElementChild,e.#t.rectangle=e.#t.element.getBoundingClientRect(),e.vertical?(e.#t.position=parseFloat(e.#t.element.style.marginTop)||0,e.#t.offset=parseFloat(getComputedStyle(e.#t.element).marginBottom)||0,e.#t.end=e.#t.rectangle.y+e.#t.rectangle.height+e.#t.offset):(e.#t.position=parseFloat(e.#t.element.style.marginLeft)||0,e.#t.offset=parseFloat(getComputedStyle(e.#t.element).marginRight)||0,e.#t.end=e.#t.rectangle.x+e.#t.rectangle.width+e.#t.offset),e.vertical&&Math.round(e.#t.end)e.#e.offsetTop||!e.vertical&&Math.round(e.#t.rectangle.x)>e.#e.offsetLeft?!0===e.transfer&&e.#o&&(e.#s.element=e.#e.lastElementChild,e.#s.rectangle=e.#s.element.getBoundingClientRect(),e.#e.insertBefore(e.#s.element,e.#t.element),e.vertical?(e.#s.offset=parseFloat(getComputedStyle(e.#s.element).marginBottom)||e.#t.offset||0,e.events.get("transfer.beginning")&&e.#e.dispatchEvent(new CustomEvent("hotline.transfer.beginning",{detail:{element:e.#s.element,offset:e.#s.rectangle.height+e.#s.offset}})),e.#s.element.style.marginTop=-e.#s.rectangle.height-e.#s.offset+"px",e.#t.element.style.marginTop=null,e.#t={}):(e.#s.offset=parseFloat(getComputedStyle(e.#s.element).marginRight)||e.#t.offset||0,e.events.get("transfer.beginning")&&e.#e.dispatchEvent(new CustomEvent("hotline.transfer.beginning",{detail:{element:e.#s.element,offset:e.#s.rectangle.width+e.#s.offset}})),e.#s.element.style.marginLeft=-e.#s.rectangle.width-e.#s.offset+"px",e.#t.element.style.marginLeft=null,e.#t={})):!0===this.alive&&!1===this.#l&&e.move()}),e.interval),this.hover?(this.#v.set("hover",(t=>{e.#l=!0,e.events.get("moving.freezed")&&e.#e.dispatchEvent(new CustomEvent("hotline.moving.freezed",{detail:{event:t}}))})),this.#e.addEventListener("mouseover",this.#v.get("hover"))):(this.#e.removeEventListener("mouseover",this.#v.get("hover")),this.#v.delete("hover")),this.wheel?(this.#v.set("wheel",(t=>{"started"===e.#n&&e.position((parseFloat(e.#e.firstElementChild.style[e.vertical?"marginTop":"marginLeft"])||0)+(null===e.delta?t.wheelDelta:t.wheelDelta>0?e.delta:-e.delta))})),this.#e.addEventListener("wheel",this.#v.get("wheel"))):(this.#e.removeEventListener("wheel",this.#v.get("wheel")),this.#v.delete("wheel"));let t=0;const s=function(e){t+=e.detail.offset??0};e.movable?(e.#v.set("move.start",(n=>{if("touchstart"===n.type||n.button===e.button){e.#l=!0,e.events.get("moving.freezed")&&e.#e.dispatchEvent(new CustomEvent("hotline.moving.freezed",{detail:{event:n}}));const i=n.pageX||n.touches&&n.touches[0]?.pageX||0,l=n.pageY||n.touches&&n.touches[0]?.pageY||0;e.#e.addEventListener("hotline.transfer.beginning",s),e.#e.addEventListener("hotline.transfer.end",s);const r=e.#t.position;e.#v.set("moving",(s=>{if("started"===e.#n){if(e.#r=!0,e.vertical){const n=s.pageY||s.touches&&s.touches[0].pageY||0;e.position(n-(l+t-r))}else{const n=s.pageX||s.touches&&s.touches[0].pageX||0;e.position(n-(i+t-r))}"mousemove"===s.type?e.events.get("move.mouse")&&e.#e.dispatchEvent(new CustomEvent("hotline.move.mouse",{detail:{from:r,to:e.#t.position}})):"touchmove"===s.type&&e.events.get("move.touch")&&e.#e.dispatchEvent(new CustomEvent("hotline.move.touch",{detail:{from:r,to:e.#t.position}}))}})),document.addEventListener("mousemove",e.#v.get("moving")),document.addEventListener("touchmove",e.#v.get("moving"))}})),e.#e.addEventListener("mousedown",e.#v.get("move.start")),e.#e.addEventListener("touchstart",e.#v.get("move.start")),e.#v.set("move.leaved",(()=>{document.removeEventListener("mousemove",e.#v.get("moving")),e.#v.delete("moving"),document.removeEventListener("mouseleave",e.#v.get("move.leaved"))})),document.addEventListener("mouseleave",e.#v.get("move.leaved")),e.#v.set("move.end",(n=>{if(e.#r=!1,document.removeEventListener("mousemove",e.#v.get("moving")),document.removeEventListener("touchmove",e.#v.get("moving")),e.#v.delete("moving"),t=0,e.#e.removeEventListener("hotline.transfer.beginning",s),e.#e.removeEventListener("hotline.transfer.end",s),!1===e.hover&&e.#e.contains(n.target)||(e.#l=!1,e.events.get("move.unfreezed")&&e.#e.dispatchEvent(new CustomEvent("hotline.move.unfreezed"))),null!==e.magnetic)if(n.target===e.#e);else{let t=n.target,s=100;for(;t.parentElement!==e.#e&&0!=--s;)t=t.parentElement;t instanceof HTMLElement&&t.parentElement===e.#e&&e.magnetize(t,e.magnetic)}})),e.#e.addEventListener("mouseup",e.#v.get("move.end")),e.#e.addEventListener("touchend",e.#v.get("move.end")),e.#v.set("move.leave",(n=>{t=0,!1===e.sticky&&(e.#r=!1,document.removeEventListener("mousemove",e.#v.get("moving")),document.removeEventListener("touchmove",e.#v.get("moving")),e.#v.delete("moving"),e.#e.removeEventListener("hotline.transfer.beginning",s),e.#e.removeEventListener("hotline.transfer.end",s)),e.#l=!1,e.events.get("move.unfreezed")&&e.#e.dispatchEvent(new CustomEvent("hotline.move.unfreezed"))})),e.#e.addEventListener("mouseleave",e.#v.get("move.leave"))):(e.#e.removeEventListener("mousedown",e.#v.get("move.start")),e.#e.removeEventListener("touchstart",e.#v.get("move.start")),e.#v.delete("move.start"),e.#r=!1,document.removeEventListener("mousemove",e.#v.get("moving")),document.removeEventListener("touchmove",e.#v.get("moving")),e.#v.delete("moving"),t=0,e.#e.removeEventListener("mouseup",e.#v.get("move.end")),e.#e.removeEventListener("touchend",e.#v.get("move.end")),e.#v.delete("move.end"),e.#e.addEventListener("mouseleave",e.#v.get("move.leave")),e.#v.delete("move.leave")),this.#n="started",e.events.get("started")&&this.#e.dispatchEvent(new CustomEvent("hotline.started"))}this.observe?null===this.#h&&(this.#h=new MutationObserver((function(e){for(const t of e)"attributes"===t.type&&this.configure(t.attributeName);this.restart()})),this.#h.observe(this.#e,{attributes:!0}),this.events.get("observer.started")&&this.#e.dispatchEvent(new CustomEvent("hotline.observer.started",{detail:{instance:this.#h}}))):this.#h instanceof MutationObserver&&(this.#h.disconnect(),this.#h=null,this.events.get("observer.stopped")&&this.#e.dispatchEvent(new CustomEvent("hotline.observer.stopped")))}stop(){clearInterval(this.#i),this.#i=null,this.#n="stopped",this.events.get("stopped")&&this.#e.dispatchEvent(new CustomEvent("hotline.stopped"))}restart(){this.stop(),this.start()}configure(e){const t=(/^data-hotline-(\w+)$/.exec(e)??[,null])[1];if("string"==typeof t){if(this.#m.has(t))return;const s=this.#e.getAttribute(e);"magnetic"===t&&"symbol"==typeof this.magnetism[s]?this.magnetic=this.magnetism[s]:"string"==typeof s&&(this[t]="true"===s||"on"===s||"yes"===s||"false"!==s&&"off"!==s&&"no"!==s&&(parseFloat(s)||s),this.events.get("configured")&&this.#e.dispatchEvent(new CustomEvent("hotline.configured",{detail:{name:t,value:this[t]}})))}}position(e){const t=this.#t.position||void 0;return void 0===this.#t.element&&(this.#t.element=this.#e.firstElementChild),this.#t.element instanceof HTMLElement?(this.#t.position=e,this.#t.element.style[this.vertical?"marginTop":"marginLeft"]=this.#t.position+"px",this.events.get("position")&&this.#e.dispatchEvent(new CustomEvent("hotline.position",{detail:{from:t,to:e}})),e-(t||0)):null}move(e){const t=this.#t.position,s=this.#t.position+(e||this.step),n=this.position(s);return this.events.get("moving")&&document.dispatchEvent(new CustomEvent("hotline.moving",{detail:{from:t,to:s}})),n}forward(){return new Promise(((e,t)=>{let s,n=Math.abs(this.step)||1;const i=setInterval((()=>{++n,this.move(n)}),this.interval),l=()=>{n>10&&(clearInterval(i),clearTimeout(s),this.events.get("moved.forward")&&this.#e.dispatchEvent(new CustomEvent("hotline.moved.forward")),this.#e.removeEventListener("hotline.transfer.beginning",l),e())};this.#e.addEventListener("hotline.transfer.beginning",l,!1),s=setTimeout((()=>{clearTimeout(i),t()}),5e3)}))}backward(){return new Promise(((e,t)=>{let s,n=-Math.abs(this.step)||-1;const i=setInterval((()=>{--n,this.move(n)}),this.interval),l=()=>{n<-10&&(clearInterval(i),clearTimeout(s),this.events.get("moved.backward")&&this.#e.dispatchEvent(new CustomEvent("hotline.moved.backward")),this.#e.removeEventListener("hotline.transfer.end",l),e())};this.#e.addEventListener("hotline.transfer.end",l,!1),s=setTimeout((()=>{clearTimeout(i),t()}),5e3)}))}magnetize(e,t){return new Promise(((s,n)=>{if(e instanceof HTMLElement){const i=e.getBoundingClientRect(),l=this.#e.getBoundingClientRect();let r;switch(t){case this.#a.beginning:break;case this.#a.center:r=i.x+i.width/2-(l.x+l.width/2);break;case this.#a.end:break;default:return}if(r>0){let e,i=-Math.abs(this.magnet)||-Math.abs(this.step)||0;const l=setInterval((()=>{--i;r+i<=0&&(i=-r),r+=this.move(i)||0,0===r&&(clearInterval(l),clearTimeout(e),this.events.get("magnetized")&&this.#e.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t))}),this.interval);e=setTimeout((()=>{clearTimeout(l),n()}),5e3)}else if(r<0){let e,i=Math.abs(this.magnet)||Math.abs(this.step)||0;const l=setInterval((()=>{++i;r+i>=0&&(i=-r),r+=this.move(i)||0,0===r&&(clearInterval(l),clearTimeout(e),this.events.get("magnetized")&&this.#e.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t))}),this.interval);e=setTimeout((()=>{clearTimeout(l),n()}),5e3)}else this.events.get("magnetized")&&this.#e.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t)}}))}static preprocessing(e=!1,t=!1){const s=new Set;for(const e of document.querySelectorAll('*[data-hotline="true"]')){const n=new this(e,t);for(const t of e.getAttributeNames())n.configure(t);n.start(),s.add(n)}return e&&document.dispatchEvent(new CustomEvent("hotline.preprocessed"),{detail:{generated:s}}),s}} \ No newline at end of file diff --git a/hotline.mjs.min b/hotline.mjs.min deleted file mode 100644 index 1a8ddf8..0000000 --- a/hotline.mjs.min +++ /dev/null @@ -1,19 +0,0 @@ -"use strict";/** - * @name hotline.mjs - * - * @description - * Module for creating "hot lines" - * - * @class - * @public - * - * @example - * сonst instance = new hotline(shell); - * instance.step = '-5'; - * instance.start(); - * - * {@link https://git.mirzaev.sexy/mirzaev/hotline.mjs} - * - * @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License - * @author Arsen Mirzaev Tatyano-Muradovich - */ export default class e{#a;#b={};#c={};#d=null;#e=null;interval=10;alive=!0;#f=!1;#g="false";get moving(){return this.#g}movable=!0;wheel=!1;delta=30;button=0;hover=!0;step=1;transfer=!0;#h=!0;sticky=!1;#i=Object.freeze({beginning:Symbol("beginning"),center:Symbol("center"),end:Symbol("end")});get magnetism(){return this.#i}magnetic=null;magnet=1;vertical=!1;observe=!1;#j=null;events=new Map([["ready",!1],["started",!1],["stopped",!1],["configured",!1],["move",!1],["move.mouse",!1],["move.touch",!1],["move.freezed",!1],["move.unfreezed",!1],["moved.forward",!1],["moved.backward",!1],["offset",!1],["transfer.beginning",!0],["transfer.end",!0],["observer.started",!1],["observer.stopped",!1]]);#k=new Set(["events"]);#l=new Map;constructor(e,t=!1){e instanceof HTMLElement&&(this.#a=e,t&&(this.#a.hotline=this),this.#a.childElementCount>1&&(this.#d="ready",this.events.get("ready")&&this.#a.dispatchEvent(new CustomEvent("hotline.ready"))))}start(){if(null===this.#e){let e=this;this.#e=setInterval(()=>{e.#b.element=e.#a.firstElementChild,e.#b.rectangle=e.#b.element.getBoundingClientRect(),e.vertical?(e.#b.position=parseFloat(e.#b.element.style.marginTop)||0,e.#b.offset=parseFloat(getComputedStyle(e.#b.element).marginBottom)||0,e.#b.end=e.#b.rectangle.y+e.#b.rectangle.height+e.#b.offset):(e.#b.position=parseFloat(e.#b.element.style.marginLeft)||0,e.#b.offset=parseFloat(getComputedStyle(e.#b.element).marginRight)||0,e.#b.end=e.#b.rectangle.x+e.#b.rectangle.width+e.#b.offset),e.vertical&&Math.round(e.#b.end)e.#a.offsetTop||!e.vertical&&Math.round(e.#b.rectangle.x)>e.#a.offsetLeft?!0===e.transfer&&e.#h&&(e.#c.element=e.#a.lastElementChild,e.#c.rectangle=e.#c.element.getBoundingClientRect(),e.#a.insertBefore(e.#c.element,e.#b.element),e.vertical?(e.#c.offset=parseFloat(getComputedStyle(e.#c.element).marginBottom)||e.#b.offset||0,e.events.get("transfer.beginning")&&e.#a.dispatchEvent(new CustomEvent("hotline.transfer.beginning",{detail:{element:e.#c.element,offset:e.#c.rectangle.height+e.#c.offset}})),e.#c.element.style.marginTop=-e.#c.rectangle.height-e.#c.offset+"px",e.#b.element.style.marginTop=null,e.#b={}):(e.#c.offset=parseFloat(getComputedStyle(e.#c.element).marginRight)||e.#b.offset||0,e.events.get("transfer.beginning")&&e.#a.dispatchEvent(new CustomEvent("hotline.transfer.beginning",{detail:{element:e.#c.element,offset:e.#c.rectangle.width+e.#c.offset}})),e.#c.element.style.marginLeft=-e.#c.rectangle.width-e.#c.offset+"px",e.#b.element.style.marginLeft=null,e.#b={})):!0===this.alive&&!1===this.#f&&e.move()},e.interval),this.hover?(this.#l.set("hover",t=>{e.#f=!0,e.events.get("moving.freezed")&&e.#a.dispatchEvent(new CustomEvent("hotline.moving.freezed",{detail:{event:t}}))}),this.#a.addEventListener("mouseover",this.#l.get("hover"))):(this.#a.removeEventListener("mouseover",this.#l.get("hover")),this.#l.delete("hover")),this.wheel?(this.#l.set("wheel",t=>{"started"===e.#d&&e.position((parseFloat(e.#a.firstElementChild.style[e.vertical?"marginTop":"marginLeft"])||0)+(null===e.delta?t.wheelDelta:t.wheelDelta>0?e.delta:-e.delta))}),this.#a.addEventListener("wheel",this.#l.get("wheel"))):(this.#a.removeEventListener("wheel",this.#l.get("wheel")),this.#l.delete("wheel"));let t=0,s=function(e){t+=e.detail.offset??0};e.movable?(e.#l.set("move.start",n=>{if("touchstart"===n.type||n.button===e.button){e.#f=!0,e.events.get("moving.freezed")&&e.#a.dispatchEvent(new CustomEvent("hotline.moving.freezed",{detail:{event:n}}));let i=n.pageX||n.touches&&n.touches[0]?.pageX||0,l=n.pageY||n.touches&&n.touches[0]?.pageY||0;e.#a.addEventListener("hotline.transfer.beginning",s),e.#a.addEventListener("hotline.transfer.end",s);let r=e.#b.position;e.#l.set("moving",s=>{if("started"===e.#d){if(e.#g=!0,e.vertical){let n=s.pageY||s.touches&&s.touches[0].pageY||0;e.position(n-(l+t-r))}else{let o=s.pageX||s.touches&&s.touches[0].pageX||0;e.position(o-(i+t-r))}"mousemove"===s.type?e.events.get("move.mouse")&&e.#a.dispatchEvent(new CustomEvent("hotline.move.mouse",{detail:{from:r,to:e.#b.position}})):"touchmove"===s.type&&e.events.get("move.touch")&&e.#a.dispatchEvent(new CustomEvent("hotline.move.touch",{detail:{from:r,to:e.#b.position}}))}}),document.addEventListener("mousemove",e.#l.get("moving")),document.addEventListener("touchmove",e.#l.get("moving"))}}),e.#a.addEventListener("mousedown",e.#l.get("move.start")),e.#a.addEventListener("touchstart",e.#l.get("move.start")),e.#l.set("move.leaved",()=>{document.removeEventListener("mousemove",e.#l.get("moving")),e.#l.delete("moving"),document.removeEventListener("mouseleave",e.#l.get("move.leaved"))}),document.addEventListener("mouseleave",e.#l.get("move.leaved")),e.#l.set("move.end",n=>{if(e.#g=!1,document.removeEventListener("mousemove",e.#l.get("moving")),document.removeEventListener("touchmove",e.#l.get("moving")),e.#l.delete("moving"),t=0,e.#a.removeEventListener("hotline.transfer.beginning",s),e.#a.removeEventListener("hotline.transfer.end",s),(!1!==e.hover||!e.#a.contains(n.target))&&(e.#f=!1,e.events.get("move.unfreezed")&&e.#a.dispatchEvent(new CustomEvent("hotline.move.unfreezed"))),null!==e.magnetic){if(n.target===e.#a);else{let i=n.target,l=100;for(;i.parentElement!==e.#a&&0!=--l;)i=i.parentElement;i instanceof HTMLElement&&i.parentElement===e.#a&&e.magnetize(i,e.magnetic)}}}),e.#a.addEventListener("mouseup",e.#l.get("move.end")),e.#a.addEventListener("touchend",e.#l.get("move.end")),e.#l.set("move.leave",n=>{t=0,!1===e.sticky&&(e.#g=!1,document.removeEventListener("mousemove",e.#l.get("moving")),document.removeEventListener("touchmove",e.#l.get("moving")),e.#l.delete("moving"),e.#a.removeEventListener("hotline.transfer.beginning",s),e.#a.removeEventListener("hotline.transfer.end",s)),e.#f=!1,e.events.get("move.unfreezed")&&e.#a.dispatchEvent(new CustomEvent("hotline.move.unfreezed"))}),e.#a.addEventListener("mouseleave",e.#l.get("move.leave"))):(e.#a.removeEventListener("mousedown",e.#l.get("move.start")),e.#a.removeEventListener("touchstart",e.#l.get("move.start")),e.#l.delete("move.start"),e.#g=!1,document.removeEventListener("mousemove",e.#l.get("moving")),document.removeEventListener("touchmove",e.#l.get("moving")),e.#l.delete("moving"),t=0,e.#a.removeEventListener("mouseup",e.#l.get("move.end")),e.#a.removeEventListener("touchend",e.#l.get("move.end")),e.#l.delete("move.end"),e.#a.addEventListener("mouseleave",e.#l.get("move.leave")),e.#l.delete("move.leave")),this.#d="started",e.events.get("started")&&this.#a.dispatchEvent(new CustomEvent("hotline.started"))}this.observe?null===this.#j&&(this.#j=new MutationObserver(function(e){for(let t of e)"attributes"===t.type&&this.configure(t.attributeName);this.restart()}),this.#j.observe(this.#a,{attributes:!0}),this.events.get("observer.started")&&this.#a.dispatchEvent(new CustomEvent("hotline.observer.started",{detail:{instance:this.#j}}))):this.#j instanceof MutationObserver&&(this.#j.disconnect(),this.#j=null,this.events.get("observer.stopped")&&this.#a.dispatchEvent(new CustomEvent("hotline.observer.stopped")))}stop(){clearInterval(this.#e),this.#e=null,this.#d="stopped",this.events.get("stopped")&&this.#a.dispatchEvent(new CustomEvent("hotline.stopped"))}restart(){this.stop(),this.start()}configure(e){let t=(/^data-hotline-(\w+)$/.exec(e)??[,null])[1];if("string"==typeof t){if(this.#k.has(t))return;let s=this.#a.getAttribute(e);"magnetic"===t&&"symbol"==typeof this.magnetism[s]?this.magnetic=this.magnetism[s]:"string"==typeof s&&("true"===s||"on"===s||"yes"===s?this[t]=!0:"false"===s||"off"===s||"no"===s?this[t]=!1:this[t]=parseFloat(s)||s,this.events.get("configured")&&this.#a.dispatchEvent(new CustomEvent("hotline.configured",{detail:{name:t,value:this[t]}})))}}position(e){let t=this.#b.position||void 0;return(void 0===this.#b.element&&(this.#b.element=this.#a.firstElementChild),this.#b.element instanceof HTMLElement)?(this.#b.position=e,this.#b.element.style[this.vertical?"marginTop":"marginLeft"]=this.#b.position+"px",this.events.get("position")&&this.#a.dispatchEvent(new CustomEvent("hotline.position",{detail:{from:t,to:e}})),e-(t||0)):null}move(e){let t=this.#b.position,s=this.#b.position+(e||this.step),n=this.position(s);return this.events.get("moving")&&document.dispatchEvent(new CustomEvent("hotline.moving",{detail:{from:t,to:s}})),n}forward(){return new Promise((e,t)=>{let s,n=Math.abs(this.step)||1,i=setInterval(()=>{++n,this.move(n)},this.interval),l=()=>{n>10&&(clearInterval(i),clearTimeout(s),this.events.get("moved.forward")&&this.#a.dispatchEvent(new CustomEvent("hotline.moved.forward")),this.#a.removeEventListener("hotline.transfer.beginning",l),e())};this.#a.addEventListener("hotline.transfer.beginning",l,!1),s=setTimeout(()=>{clearTimeout(i),t()},5e3)})}backward(){return new Promise((e,t)=>{let s,n=-Math.abs(this.step)||-1,i=setInterval(()=>{--n,this.move(n)},this.interval),l=()=>{n<-10&&(clearInterval(i),clearTimeout(s),this.events.get("moved.backward")&&this.#a.dispatchEvent(new CustomEvent("hotline.moved.backward")),this.#a.removeEventListener("hotline.transfer.end",l),e())};this.#a.addEventListener("hotline.transfer.end",l,!1),s=setTimeout(()=>{clearTimeout(i),t()},5e3)})}magnetize(e,t){return new Promise((s,n)=>{if(e instanceof HTMLElement){let i=e.getBoundingClientRect(),l=this.#a.getBoundingClientRect(),r;switch(t){case this.#i.beginning:break;case this.#i.center:r=i.x+i.width/2-(l.x+l.width/2);break;case this.#i.end:break;default:return}if(r>0){let o,h=-Math.abs(this.magnet)||-Math.abs(this.step)||0,a=setInterval(()=>{--h;let e=r+h;e<=0&&(h=-r),0===(r+=this.move(h)||0)&&(clearInterval(a),clearTimeout(o),this.events.get("magnetized")&&this.#a.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t))},this.interval);o=setTimeout(()=>{clearTimeout(a),n()},5e3)}else if(r<0){let v,m=Math.abs(this.magnet)||Math.abs(this.step)||0,d=setInterval(()=>{++m;let e=r+m;e>=0&&(m=-r),0===(r+=this.move(m)||0)&&(clearInterval(d),clearTimeout(v),this.events.get("magnetized")&&this.#a.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t))},this.interval);v=setTimeout(()=>{clearTimeout(d),n()},5e3)}else this.events.get("magnetized")&&this.#a.dispatchEvent(new CustomEvent("hotline.magnetized",{detail:{magnetism:t}})),s(t)}})}static preprocessing(e=!1,t=!1){let s=new Set;for(let n of document.querySelectorAll('*[data-hotline="true"]')){let i=new this(n,t);for(let l of n.getAttributeNames())i.configure(l);i.start(),s.add(i)}return e&&document.dispatchEvent(new CustomEvent("hotline.preprocessed"),{detail:{generated:s}}),s}}; \ No newline at end of file