eyjs 7.1.4 → 7.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,110 +1,89 @@
1
1
  # Changelog
2
2
 
3
+ ## [7.1.6] - 2025-11-06
4
+ ### Added
5
+ - `.after` and `.before` now either append or return the element lies after/next or before/previous.
6
+
3
7
  ## [7.1.4] - 2025-10-14
4
8
 
5
9
  ### Fixed
6
-
7
10
  - some properties inside `attr` are not being applied.
8
11
 
9
12
  ## [7.1.3] - 2025-10-07
10
13
 
11
14
  ### Fixed
12
-
13
15
  - `.childlen` attribute not working, fixed.
14
16
  - `.after` `.before` functions don't work with EyeElement, fixed.
15
17
 
16
18
  ## [7.1.1] - 2025-10-01
17
19
 
18
20
  ### Changed
19
-
20
21
  - `.append` function only affect first selected element, also fixed to accept multiple selected element using `e` function.
21
22
  - functions now only affect first selected element in general.
22
23
  - library had been re-structured better.
23
24
 
24
25
  ### Added
25
-
26
26
  - `e` our dear library now accepts arrays of elements like `e([HTMLDivElement, HTMLSpanElement, HTMLInputElement...])`
27
27
  - `.css` function may accept only numbers for properties such as `width` `height` `left` `top`...
28
28
 
29
29
  ## [7.0.0] - 2025-09-01
30
-
31
30
  ### Changed
32
-
33
31
  - the function now may return null for not found selectors, instead of empty eye element.
34
32
 
35
33
  ### Added
36
-
37
34
  - new param `clone` in `.parent` function that allows you to append a clone of the element!
38
35
 
39
36
  ## [6.2.0] - 2025-08-25
40
37
 
41
38
  ### Changed
42
-
43
39
  - `.each` function can be interrupted from inside by returning false in the function.
44
40
 
45
41
  ### Added
46
-
47
42
  - new `.eachChild` function to loop through selected elements children, also can be interupted by returning false.
48
43
 
49
44
  ## [6.1.2] - 2025-08-17
50
-
51
45
  ### Changed
52
-
53
46
  - added more delegation events `dblclick`, `pointerevents` & more `mouseevents`...
54
47
 
55
48
  ### Added
56
-
57
49
  - new `position` function, to find element position within parent element
58
50
 
59
51
  ## [6.0.2] - 2025-08-01
60
-
61
52
  ### Changed
62
-
63
53
  - Better documentation for `.find` function
64
54
 
65
55
  ### Fixed
66
-
67
56
  - when using `.class` to add simple classes the first character of each class get trimmed, Fixed.
68
57
 
69
58
  ## [6.0.1] - 2025-07-30
70
-
71
59
  ### Changed
72
-
73
60
  - `EyeElement` is also exported to help you better document your code using VSDocs
74
61
 
75
62
  ### Fixed
76
-
77
63
  - using `.class("class1/class2")` shows error undefined variable v1 or v2, Fixed!
78
64
 
79
65
  ## [6.0.0] - 2025-07-30
80
-
81
66
  ### Changed
82
-
83
67
  - Library name changed to `eyjs`
84
68
  - main function name changed to `e` instead of `eye`
85
69
  - `after` `before` function now accepts both HTMLElement & EyeElement
86
70
 
87
71
  ### Added
88
-
89
72
  - new `childlen` attribute to get children length
90
73
  - new `rAttr` function to remove attribute of an element
91
74
  - new `client` function to access client attributes such as "clientWidth" "clientLeft" ..
92
75
  - `.append` now also accepts new possible `pos` options `first`|`afterbegin` `last`|`beforeend`
93
76
 
94
77
  ### Fixed
95
-
96
78
  - fixed error when using `.animate` function
97
79
 
98
80
  ## [5.0.0] - 2025-07-21
99
-
100
81
  ### Changed
101
-
102
82
  - library now uses ES6 class definition.
103
83
  - `.find` function `multiple` parameter is removed, also it return an HTMLElement instead of EyeElement, and an array if many selectors were found.
104
84
  - cloning a new model will return EyeElement instead of HTMLDivElement.
105
85
 
106
86
  ## [4.0.4] - 2025-07-18
107
-
108
87
  ### Changed
109
88
 
110
89
  - the libarary behavior changed now, instead of created element by directly puting them as `eye("div")`, now you do `eye("<div>")` instead for all elements ofc.
@@ -112,69 +91,51 @@
112
91
  - `.animate` function now can return a direct animation object if selection is single.
113
92
 
114
93
  ## [3.4.1] - 2025-07-16
115
-
116
94
  ### Changed
117
-
118
95
  - `.pointer` function only effect the first element of a collection
119
96
  - better commentation and params definition
120
97
 
121
98
  ## [3.4.0] - 2025-07-16
122
-
123
99
  ### Added
124
-
125
100
  - new `.after` function
126
101
  - new `.before` function
127
102
  - new `.animate` function
128
103
 
129
104
  ## [3.3.4] - 2025-07-11
130
-
131
105
  ### Fixed
132
-
133
106
  - error when using `.data`, fixed!
134
107
 
135
108
  ## [3.3.2] - 2025-07-10
136
-
137
109
  ### Fixed
138
110
 
139
111
  - fixed `.html` `.text` and `.val` to accept empty strings two!
140
112
 
141
113
  ## [3.3.0] - 2025-07-009
142
-
143
114
  ### Added
144
-
145
115
  - new `.redefine` function that redefine how to set/get or use `.text` and `.val` in general
146
116
 
147
117
  ### Fixed
148
-
149
118
  - Accessing children length is now possible using empty/parameterless call of `.child`
150
119
 
151
120
  ## [3.2.0] - 2025-07-08
152
-
153
121
  ### Added
154
-
155
122
  - new `.serialize` function for form elements, check out [READM.md](./readme.md) for tutorial
156
123
 
157
124
  ### Fixed
158
-
159
125
  - PROBLEM: `.append` function not accepting EyeElement as parameter(only accept pure HTMLElements), now accepts both.
160
126
  - PROBLEM: `.replaceWith` also accepts HTMLElements only, fixed to accept Eye elements too.
161
127
  - PROBLEM: `.is` only accepts HTMLElement, fixed to accept EyeElement too.
162
128
 
163
129
  ## [3.1.1] - 2025-07-07
164
-
165
130
  ### Added
166
-
167
131
  - function `val` added for supporting inputs manipulation
168
132
  - function `child` added for child selection
169
133
 
170
134
  ### Fixed
171
-
172
135
  - function `css` now accept empty string value to remove style!
173
136
 
174
137
  ## [3.0.1] - 2025-07-04
175
-
176
138
  ### Added
177
-
178
139
  - new `.append` function with flexible `pos` to expand wide range of opportunities
179
140
  - new `.replaceWith` function
180
141
  - new `.parent` set/get function
@@ -188,7 +149,6 @@
188
149
  - new `.pointer` function to unleash the PointerLock API and pointerCapture features
189
150
 
190
151
  ### Changed
191
-
192
152
  - a better modern core wrapper.
193
153
  - library now support processing multiple selection at once.
194
154
  - `.on` function now support targeted callbacks for event delegation.
@@ -197,13 +157,11 @@
197
157
  - main function `eye` now support multi selection with [optional] "!" at the end of the selector to perform first occurence only.
198
158
 
199
159
  ## [2.1.1] - 2025-07-01
200
-
201
160
  **Breaking News!**
202
161
 
203
162
  we've added a new feature in our little library!
204
163
 
205
164
  ### Added
206
-
207
165
  - introducing a new feature `model`, where you can create models and use them multiple times around your code, without having to create the whole shit over and over, similar to react components but with less muli-files headache(check out readme.md to more tutorial of how to use).
208
166
 
209
167
  - `class` attribute now can accept a string concatenation of classes beside an array of them, so instead of `eye("div",{ class: ["class1","class2"]})` you can do `eye("div",{ class: "class1 class2" })`.
package/dist/eye.cjs.js CHANGED
@@ -722,23 +722,29 @@ class EyeElement {
722
722
  return this;
723
723
  }
724
724
  /**
725
- * Insert element after this one
725
+ * Insert element after this one, or return the one lies there
726
726
  * @method EyeElement#after
727
727
  * @param {EyeElement|HTMLElement} elm
728
- * @returns {EyeElement}
728
+ * @param {AttrMap} attr
729
+ * @returns {EyeElement|HTMLElement}
729
730
  */
730
- after(elm) {
731
- this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);
731
+ after(elm, attr) {
732
+ if (elm)
733
+ this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);
734
+ else return this.#raw[0].nextElementSibling ? e(this.#raw[0].nextElementSibling, attr) : null;
732
735
  return this;
733
736
  }
734
737
  /**
735
- * Insert element before this one
738
+ * Insert element before this one, or return the one lies there
736
739
  * @method EyeElement#before
737
740
  * @param {EyeElement|HTMLElement} elm
738
- * @returns {EyeElement}
741
+ * @param {AttrMap} attr
742
+ * @returns {EyeElement|HTMLElement}
739
743
  */
740
- before(elm) {
741
- this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);
744
+ before(elm, attr) {
745
+ if (elm)
746
+ this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);
747
+ else return this.#raw[0].previousElementSibling ? e(this.#raw[0].previousElementSibling, attr) : null
742
748
  return this;
743
749
  }
744
750
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"eye.cjs.js","sources":["../src/eye.js"],"sourcesContent":["/**\r\n * @typedef {Object} AttrMap\r\n * @property {HTMLDivElement} parent - append newly created element to a parent\r\n * @property {Array<String>|String} class - class or array of classes to set\r\n * @property {String} id - set element ID\r\n * @property {Object} data - dataset values to set\r\n * @property {String} text - set element text\r\n * @property {String} html - set element html\r\n */\r\n\r\nconst unitlessProps = new Set([\r\n \"opacity\", \"zIndex\", \"fontWeight\", \"lineHeight\",\r\n \"flex\", \"flexGrow\", \"flexShrink\", \"order\"\r\n]);\r\n\r\n/**\r\n * Returns the associated class event of that event\r\n * example: for click event it returns new MouseEvent(\"click\")\r\n * @param {string} ev \r\n */\r\nfunction getEvent(type, options = {}) {\r\n switch (type) {\r\n // Mouse Events\r\n case 'click':\r\n case 'dblclick':\r\n case 'mousedown':\r\n case 'mouseup':\r\n case 'mousemove':\r\n case 'mouseenter':\r\n case 'mouseleave':\r\n case 'mouseover':\r\n case 'mouseout':\r\n return new MouseEvent(type, options);\r\n\r\n // Pointer Events\r\n case 'pointerdown':\r\n case 'pointerup':\r\n case 'pointermove':\r\n case 'pointerenter':\r\n case 'pointerleave':\r\n case 'pointerover':\r\n case 'pointerout':\r\n return new PointerEvent(type, options);\r\n\r\n // Keyboard Events\r\n case 'keydown':\r\n case 'keyup':\r\n case 'keypress':\r\n return new KeyboardEvent(type, options);\r\n\r\n // Focus Events\r\n case 'focus':\r\n case 'blur':\r\n case 'focusin':\r\n case 'focusout':\r\n return new FocusEvent(type, options);\r\n\r\n // Input & Form Events\r\n case 'input':\r\n case 'change':\r\n case 'submit':\r\n case 'reset':\r\n return new Event(type, options);\r\n\r\n // Wheel\r\n case 'wheel':\r\n return new WheelEvent(type, options);\r\n\r\n // Clipboard\r\n case 'copy':\r\n case 'cut':\r\n case 'paste':\r\n return new ClipboardEvent(type, options);\r\n\r\n // UI\r\n case 'scroll':\r\n case 'resize':\r\n return new UIEvent(type, options);\r\n\r\n // Default: fallback to generic Event\r\n default:\r\n return new CustomEvent(type, options);\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {EyeElement & {\r\n * refresh: (attrs: AttrMap) => ModelEyeElement\r\n * }} ModelEyeElement eye element definition for model elements\r\n */\r\n\r\nconst events = [\r\n // Mouse Events\r\n \"click\",\r\n \"dblclick\",\r\n \"mousedown\",\r\n \"mouseup\",\r\n \"mousemove\",\r\n \"mouseenter\",\r\n \"mouseleave\",\r\n \"mouseover\",\r\n \"mouseout\",\r\n \"contextmenu\",\r\n\r\n // Keyboard Events\r\n \"keydown\",\r\n \"keypress\", // Deprecated\r\n \"keyup\",\r\n\r\n // Focus Events\r\n \"focus\",\r\n \"blur\",\r\n \"focusin\",\r\n \"focusout\",\r\n\r\n // Form Events\r\n \"submit\",\r\n \"change\",\r\n \"input\",\r\n \"reset\",\r\n \"select\",\r\n\r\n // Touch Events (for mobile)\r\n \"touchstart\",\r\n \"touchend\",\r\n \"touchmove\",\r\n \"touchcancel\",\r\n\r\n // Pointer Events\r\n \"pointerdown\",\r\n \"pointerup\",\r\n \"pointermove\",\r\n \"pointerenter\",\r\n \"pointerleave\",\r\n \"pointercancel\",\r\n\r\n // Drag and Drop Events\r\n \"dragstart\",\r\n \"dragend\",\r\n \"dragenter\",\r\n \"dragover\",\r\n \"dragleave\",\r\n \"drop\",\r\n\r\n // Window/Document Events\r\n \"resize\",\r\n \"scroll\",\r\n \"load\",\r\n \"beforeunload\",\r\n \"unload\",\r\n\r\n // Media Events\r\n \"play\",\r\n \"pause\",\r\n \"ended\",\r\n \"volumechange\",\r\n \"timeupdate\",\r\n\r\n // Clipboard Events\r\n \"copy\",\r\n \"cut\",\r\n \"paste\",\r\n\r\n // Animation and Transition Events\r\n \"animationstart\",\r\n \"animationend\",\r\n \"animationiteration\",\r\n \"transitionstart\",\r\n \"transitionend\",\r\n\r\n // Mutation Events\r\n \"DOMSubtreeModified\",\r\n \"DOMNodeInserted\",\r\n \"DOMNodeRemoved\",\r\n\r\n // Other Events\r\n \"error\",\r\n \"hashchange\",\r\n \"popstate\",\r\n];\r\n\r\nconst htmlElements = [\r\n // Metadata\r\n \"<base>\",\r\n \"<head>\",\r\n \"<link>\",\r\n \"<meta>\",\r\n \"<style>\",\r\n \"<title>\",\r\n\r\n // Sections\r\n \"<body>\",\r\n \"<address>\",\r\n \"<article>\",\r\n \"<aside>\",\r\n \"<footer>\",\r\n \"<header>\",\r\n \"<h1>\",\r\n \"<h2>\",\r\n \"<h3>\",\r\n \"<h4>\",\r\n \"<h5>\",\r\n \"<h6>\",\r\n \"<main>\",\r\n \"<nav>\",\r\n \"<section>\",\r\n\r\n // Text content\r\n \"<blockquote>\",\r\n \"<dd>\",\r\n \"<div>\",\r\n \"<dl>\",\r\n \"<dt>\",\r\n \"<figcaption>\",\r\n \"<figure>\",\r\n \"<hr>\",\r\n \"<li>\",\r\n \"<ol>\",\r\n \"<p>\",\r\n \"<pre>\",\r\n \"<ul>\",\r\n\r\n // Inline text semantics\r\n \"<a>\",\r\n \"<abbr>\",\r\n \"<b>\",\r\n \"<bdi>\",\r\n \"<bdo>\",\r\n \"<br>\",\r\n \"<cite>\",\r\n \"<code>\",\r\n \"<data>\",\r\n \"<dfn>\",\r\n \"<em>\",\r\n \"<i>\",\r\n \"<kbd>\",\r\n \"<mark>\",\r\n \"<q>\",\r\n \"<rp>\",\r\n \"<rt>\",\r\n \"<ruby>\",\r\n \"<s>\",\r\n \"<samp>\",\r\n \"<small>\",\r\n \"<span>\",\r\n \"<strong>\",\r\n \"<sub>\",\r\n \"<sup>\",\r\n \"<time>\",\r\n \"<u>\",\r\n \"<var>\",\r\n \"<wbr>\",\r\n\r\n // Image and multimedia\r\n \"<area>\",\r\n \"<audio>\",\r\n \"<img>\",\r\n \"<map>\",\r\n \"<track>\",\r\n \"<video>\",\r\n\r\n // Embedded content\r\n \"<embed>\",\r\n \"<iframe>\",\r\n \"<object>\",\r\n \"<picture>\",\r\n \"<portal>\",\r\n \"<source>\",\r\n\r\n // Scripting\r\n \"<canvas>\",\r\n \"<noscript>\",\r\n \"<script>\",\r\n\r\n // Demarcating edits\r\n \"<del>\",\r\n \"<ins>\",\r\n\r\n // Table content\r\n \"<caption>\",\r\n \"<col>\",\r\n \"<colgroup>\",\r\n \"<table>\",\r\n \"<tbody>\",\r\n \"<td>\",\r\n \"<tfoot>\",\r\n \"<th>\",\r\n \"<thead>\",\r\n \"<tr>\",\r\n\r\n // Forms\r\n \"<button>\",\r\n \"<datalist>\",\r\n \"<fieldset>\",\r\n \"<form>\",\r\n \"<input>\",\r\n \"<label>\",\r\n \"<legend>\",\r\n \"<meter>\",\r\n \"<optgroup>\",\r\n \"<option>\",\r\n \"<output>\",\r\n \"<progress>\",\r\n \"<select>\",\r\n \"<textarea>\",\r\n\r\n // Interactive elements\r\n \"<details>\",\r\n \"<dialog>\",\r\n \"<summary>\",\r\n\r\n // Web components / scripting base\r\n \"<slot>\",\r\n \"<template>\",\r\n];\r\n\r\nfunction flat(word) {\r\n let n = \"\";\r\n for (let i = 0; i < word.length; i++) {\r\n const t = word[i];\r\n if (t === t.toUpperCase() && t !== t.toLowerCase()) n += \"-\" + t;\r\n else n += t;\r\n }\r\n return n.toLowerCase();\r\n}\r\n\r\nconst localdata = new WeakMap();\r\n\r\n/**\r\n * cmcl stands for Create Model Children Layers, recursively creates model layers one by one\r\n * @param {EyeElement} parent\r\n * @param {Object} layer\r\n * @returns {Array<{name: string,set: (parent: EyeElement, value: String) =>}>}\r\n */\r\nfunction cmcl(parent, layer) {\r\n let obj = [];\r\n for (const key in layer) {\r\n const subcontent = layer[key];\r\n const [def, _set] = key.split(\":\");\r\n const [tagName, ...cls] = def.split(\".\");\r\n let [_set_name = null, _set_default = null] = (_set || \"\")\r\n .split(\"-\")\r\n .map((a) => a.trim());\r\n\r\n let elm = e(tagName.trim(), {\r\n class: cls,\r\n parent,\r\n data: _set ? { value: _set_name } : undefined,\r\n });\r\n\r\n if (_set && _set_name) {\r\n obj.push({\r\n name: _set_name,\r\n set(parent, value) {\r\n let elm = parent.find(`[data-value=\"${_set_name}\"]`);\r\n elm.textContent = value ?? _set_default;\r\n }\r\n });\r\n }\r\n\r\n // recursive\r\n if (\r\n subcontent &&\r\n typeof subcontent === \"object\" &&\r\n !(subcontent instanceof Array)\r\n )\r\n obj = obj.concat(cmcl(elm, subcontent));\r\n }\r\n return obj;\r\n}\r\n\r\nlet delegationEvents = [\"click\", \"dblclick\", \"submit\", \"input\", \"change\", \"keydown\", \"keyup\", \"keypress\", \"focusin\", \"focusout\", \"mousedown\", \"mouseup\", \"mousemove\", \"contextmenu\", \"auxclick\", \"wheel\", \"mouseover\", \"mouseout\", \"pointerdown\", \"pointerup\", \"pointermove\", \"pointerover\", \"pointerout\", \"gotpointercapture\", \"lostpointercapture\", \"pointercancel\"];\r\nlet normalSetterGetter = (action, v, elm) => v;\r\n\r\n/**\r\n * Eye wrapper offers a subset of functions that ease DOM minipulation! Power of JQuery with \r\n * some a modern design and a bunch of new functions.\r\n * @author Yousef Neji\r\n */\r\nexport class EyeElement {\r\n /**\r\n * Raw html element\r\n * @type {Array<HTMLElement>}\r\n */\r\n #raw = null;\r\n\r\n /**\r\n * Used to store delegated events listeners\r\n * @type {Map<String,Set<{callback, target: string}>>}\r\n */\r\n #dlgListeners = new Map();\r\n\r\n /**\r\n * Custom way or modifier that redefine the way you set/get\r\n * this element `textContent` or `value`:\r\n * - access this feature from `.redefine` method.\r\n */\r\n #customSet = {\r\n value: normalSetterGetter,\r\n text: normalSetterGetter\r\n };\r\n\r\n /**\r\n * Called internally to initiate the main EyeElement functionalities\r\n * @method EyeElement#init\r\n * @param {string|HTMLElement} selector\r\n * @param {AttrMap} attrs\r\n * @param {Object} css\r\n * @returns {EyeElement}\r\n */\r\n constructor(selector, attrs, css) {\r\n let _this = this;\r\n if (selector instanceof HTMLElement) {\r\n this.#raw = [selector];\r\n } else if (htmlElements.includes(selector)) {\r\n // creating a new element\r\n this.#raw = [document.createElement(selector.substring(1, selector.length - 1))];\r\n } else if (Array.isArray(selector)) {\r\n this.#raw = [];\r\n selector.forEach((a) => {\r\n if (a instanceof EyeElement) _this.#raw = _this.#raw.concat(...a.raw);\r\n else if (a instanceof HTMLElement) _this.#raw.push(a);\r\n })\r\n } else {\r\n // selecting\r\n let s = selector.slice(-1) === \"!\";\r\n this.#raw = [...document.querySelectorAll(s ? selector.slice(0, -1) : selector)];\r\n }\r\n\r\n /**\r\n * Handler used to integrate delegation concept/algorithme\r\n * @param {Event} e \r\n */\r\n function handler(e) {\r\n let name = e.type,\r\n listeners = _this.#dlgListeners,\r\n _etarget = e.target,\r\n me = this; // refers to the element being listening to the event\r\n\r\n if (listeners.has(name)) {\r\n let cbs = listeners.get(name);\r\n cbs?.forEach(({ callback, target }) => {\r\n if (_etarget.closest(target)) {\r\n // we hitting the target\r\n callback(e, me);\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.each((elm, idx) => {\r\n let parentElm = null;\r\n if (attrs)\r\n for (const key in attrs) {\r\n const value = attrs[key];\r\n if (key == \"class\")\r\n elm.classList.add.apply(\r\n elm.classList,\r\n (value instanceof Array ? value : value.split(\" \")).filter(a => a != \"\")\r\n );\r\n else if (key == \"text\") elm.textContent = value;\r\n else if (key == \"html\") elm.innerHTML = value;\r\n else if (key == \"data\") for (const k in value) elm.dataset[k] = value[k];\r\n else if (key == \"parent\") parentElm = value;\r\n else if (key in elm) elm[key] = value;\r\n else if (key[0] != \"_\") elm.setAttribute(key, value); // we must ignore _ started keys 'cause they are used by models\r\n }\r\n if (css)\r\n for (const key in css)\r\n if (key.indexOf(\"-\") != -1) elm.style[key] = css[key];\r\n else elm.style[flat(key)] = css[key];\r\n if (parentElm instanceof EyeElement || parentElm instanceof HTMLElement) parentElm.append(elm);\r\n\r\n // creating the delegation handling model\r\n delegationEvents.forEach(ev => {\r\n elm.addEventListener(ev, handler);\r\n })\r\n })\r\n\r\n // creating/initiating events functions\r\n events.forEach(ev => {\r\n _this[ev] = function (cb) {\r\n if (cb) {\r\n if (typeof cb == \"function\") _this.on(ev, cb);\r\n } else _this.trigger(ev);\r\n\r\n return _this;\r\n }\r\n })\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Length of current selection\r\n * @type {Number}\r\n */\r\n get length() {\r\n return this.#raw.length;\r\n }\r\n\r\n /**\r\n * Raw html element\r\n * @type {HTMLElement}\r\n */\r\n get raw() {\r\n return this.#raw;\r\n }\r\n\r\n /**\r\n * Run(loop) through selected NodeList, or run a single call for one single element\r\n * @method EyeElement#each\r\n * @param {(elm: HTMLElement, index: number, current: EyeElement)=>} cb \r\n * @returns {EyeElement}\r\n */\r\n each(cb) {\r\n for (let i = 0; i < this.#raw.length; i++) {\r\n const elm = this.#raw[i];\r\n let exit = cb(elm, i, this);\r\n if (exit === false) break;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Run(loop) through selected NodeList's children.\r\n * @param {(elm: HTMLElement, index: number, parent: HTMLElement, Object: EyeElement)=>{}} cb \r\n * @returns {EyeElement}\r\n */\r\n eachChild(cb) {\r\n let _this = this;\r\n return this.each(function (elm, i, parent) {\r\n let exit = true;\r\n for (let j = 0; j < elm.children.length; j++) {\r\n exit = cb(elm.children[j], j, elm, _this);\r\n if (exit === false) break;\r\n }\r\n if (exit === false) return;\r\n })\r\n }\r\n /**\r\n * Set or get element html\r\n * @method EyeElement#html\r\n * @param {string} [html]\r\n * @returns {EyeElement|string}\r\n */\r\n html(html) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (html === undefined) return out = elm.innerHTML;// getting the first one and exiting\r\n elm.innerHTML = html;\r\n })\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Set or get element text\r\n * @method EyeElement#text\r\n * @param {string} [text]\r\n * @returns {EyeElement|string}\r\n */\r\n text(text) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (text === undefined) return out = this.#customSet.text(\"get\", elm.textContent, elm);\r\n elm.textContent = this.#customSet.text(\"set\", text, elm);\r\n })\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Set or get element's data values\r\n * @method EyeElement#data\r\n * @param {string} key\r\n * @param {*} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n data(key, value) {\r\n if (!localdata.has(this)) localdata.set(this, {});\r\n if (key) {\r\n if (value != undefined) localdata.get(this)[key] = value;\r\n else return localdata.get(this)[key];\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Set or get an attribute value\r\n * @method EyeElement#attr\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n attr(name, value) {\r\n let out = \"\";\r\n this.each((elm, idx) => {\r\n if (name.indexOf(\"data-\") === 0) {\r\n let [key, val] = name.split(\"-\").map((a) => a.trim());\r\n // modify data\r\n if (value == undefined) return out = elm.dataset[val];\r\n elm.dataset[val] = value;\r\n } else {\r\n if (name in elm) {\r\n if (value == undefined) return out = elm[name];\r\n elm[name] = value;\r\n } else if (name[0] != \"_\") {\r\n if (value == undefined) return out = elm.getAttribute(name)\r\n elm.setAttribute(name, value);\r\n }\r\n }\r\n })\r\n return out ? out : this;\r\n }\r\n /**\r\n * Removing attribute of this element\r\n * @type {string} attrName\r\n * @returns {EyeElement}\r\n */\r\n rAttr(attrName) {\r\n if (attrName) {\r\n this.each((elm, idx) => {\r\n elm.removeAttribute(attrName);\r\n })\r\n }\r\n return this;\r\n }\r\n /**\r\n * Super fancy class function that allows to modify class with different methods in one as follow:\r\n * - `\"classname\"`: add classname to the element.\r\n * - `\"-classname\"`: remove classname from class list.\r\n * - `\"%classname\"`: toggle classname existing.\r\n * - `\"?classname\"`: check classname existing in class list.\r\n * - `\"classnameA/classnameB\"`: replace classnameA by classnameB\r\n * @method EyeElement#class\r\n * @param {string} actions\r\n * @returns {EyeElement|string}\r\n */\r\n class(actions) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (typeof actions === \"number\") return out = elm.classList.item(actions);\r\n\r\n actions.split(\" \").forEach((action) => {\r\n if (action[0] == \"-\") {\r\n elm.classList.remove(action.substring(1, action.length));\r\n } else if (action[0] == \"%\") {\r\n elm.classList.toggle(action.substring(1, action.length));\r\n } else if (action[0] == \"?\") {\r\n out = elm.classList.contains(action.substring(1, action.length));\r\n } else if (action.indexOf(\"/\") != -1) {\r\n let [v1, v2] = action.split(\"/\");\r\n elm.classList.replace(v1, v2);\r\n } else {\r\n elm.classList.add(action);\r\n }\r\n });\r\n if (out) return;\r\n })\r\n\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Show/display the element\r\n * @method EyeElement#show\r\n * @param {string} cls\r\n * @returns {EyeElement}\r\n */\r\n show(cls) {\r\n this.each((elm, idx) => {\r\n elm.style.display = cls ?? \"inline-block\";\r\n })\r\n return this;\r\n }\r\n /**\r\n * Hide the element\r\n * @method EyeElement#hide\r\n * @param {boolean} opacity whether to hide by making invisible?\r\n * @returns {EyeElement}\r\n */\r\n hide(opacity) {\r\n this.each((elm, idx) => {\r\n if (opacity) elm.style.opacity = 0;\r\n else elm.style.display = \"none\";\r\n })\r\n return this;\r\n }\r\n /**\r\n * Append one or more elements to the current element, only effect the first element in the selected list\r\n * @method EyeElement#append\r\n * @param {HTMLElement|Array<Node|EyeElement>} elm\r\n * @param {\"next\" | \"after\" | \"previous\" | \"before\" | \"first\" | \"afterbegin\" | \"last\" | \"beforeend\"} [pos] [optional]\r\n * @returns {EyeElement}\r\n */\r\n append(elm, pos) {\r\n (Array.isArray(elm) ? elm : [elm]).forEach(item => {\r\n let nodes = [];\r\n if (item instanceof EyeElement) nodes = [...item.raw];\r\n else if (item instanceof HTMLElement) nodes = [item];\r\n\r\n nodes.forEach(node => {\r\n switch (pos) {\r\n case \"next\":\r\n case \"after\":\r\n this.#raw[0].after(node);\r\n break;\r\n case \"previous\":\r\n case \"before\":\r\n this.#raw[0].before(node);\r\n break;\r\n case \"afterbegin\":\r\n case \"first\":\r\n this.#raw[0].prepend(node);\r\n break;\r\n case \"beforeend\":\r\n case \"last\":\r\n default:\r\n this.#raw[0].append(node);\r\n }\r\n })\r\n })\r\n return this;\r\n }\r\n /**\r\n * Insert element after this one\r\n * @method EyeElement#after\r\n * @param {EyeElement|HTMLElement} elm \r\n * @returns {EyeElement}\r\n */\r\n after(elm) {\r\n this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);\r\n return this;\r\n }\r\n /**\r\n * Insert element before this one\r\n * @method EyeElement#before\r\n * @param {EyeElement|HTMLElement} elm \r\n * @returns {EyeElement}\r\n */\r\n before(elm) {\r\n this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);\r\n return this;\r\n }\r\n /**\r\n * Replace current element with the new element, or multiple elements with multiple selected elements\r\n * @method EyeElement#replaceWith\r\n * @param {...HTMLElement|EyeElement} elms\r\n * @param {string} [pos] [optional]\r\n * @returns {EyeElement}\r\n */\r\n replaceWith(...elms) {\r\n let nodes = [];\r\n (Array.isArray(elms) ? elms : [elms]).forEach(item => {\r\n if (item instanceof EyeElement) nodes = nodes.concat(...item.raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n this.#raw[0].replaceWith(...nodes);\r\n return this;\r\n }\r\n /**\r\n * Get current element parent or append it to one\r\n * @method EyeElement#parent\r\n * @param {HTMLElement|EyeElement} parent\r\n * @param {boolean} clone [true] append clones of the elements\r\n * @returns {EyeElement}\r\n */\r\n parent(parent, clone) {\r\n if (parent) {\r\n if (!(parent instanceof HTMLElement) && !(parent instanceof EyeElement))\r\n throw new Error(\r\n \"[EyeJS] Unable to append current element to parent because it's not HTMLElement\"\r\n );\r\n this.each(elm => {\r\n parent.append(clone === true ? elm.cloneNode(true) : elm);\r\n })\r\n return this;\r\n }\r\n return e(this.#raw[0].parentElement);\r\n }\r\n /**\r\n * Returns whether current node is the same/equal (depending on `check`) as the passed node or not\r\n * @method EyeElement#is\r\n * @param {HTMLElement|EyeElement} node\r\n * @param {\"connected\" | \"same\" | \"equal\"} [check] check type `same`, `equal`\r\n * @returns {boolean}\r\n */\r\n is(node, check) {\r\n node = node instanceof EyeElement ? node.#raw[0] : node;\r\n if (node === \"connected\") return this.#raw[0].isConnected;\r\n switch (check) {\r\n case \"same\":\r\n return this.#raw[0].isSameNode(node);\r\n case \"equal\":\r\n return this.#raw[0].isEqualNode(node);\r\n default:\r\n console.error(\r\n `[EyeJS] Unknown check \"${check}\", possible values are [\"same\",\"equal\",\"connected\"]`\r\n );\r\n return false;\r\n }\r\n }\r\n /**\r\n * Set or get a css attribute\r\n * @method EyeElement#css\r\n * @param {string} attr\r\n * @param {string|number} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n css(attr, value) {\r\n if (attr) {\r\n if (!unitlessProps.has(attr) && typeof value === \"number\" && value != 0) value = `${value}px`;\r\n let out = undefined;\r\n attr = flat(attr);\r\n this.each((elm, idx) => {\r\n if (value === undefined) return out = elm.style[attr];\r\n elm.style[attr] = value;\r\n })\r\n return out != undefined ? out : this;\r\n } else return console.error(`[EyeJS] missing argument \"attr\" in function .css`);\r\n }\r\n /**\r\n * Remove current element\r\n * @method EyeElement#remove\r\n * @returns {EyeElement}\r\n */\r\n remove() {\r\n this.each((elm, idx) => {\r\n elm.remove();\r\n })\r\n return this;\r\n }\r\n /**\r\n * @overload\r\n * @param {string} ev\r\n * @param {function} cb\r\n */\r\n /**\r\n * @overload\r\n * @param {string} ev\r\n * @param {string} trg optionally define a target element for the event\r\n * @param {function} cb\r\n *\r\n */\r\n /**\r\n * Attach an listener/handler to specific event or events\r\n * @method EyeElement#on\r\n * @param {string} ev may contain multiple events separated by \" \"(space)\r\n * @param {string|function} arg2 \r\n * @param {function} [arg3]\r\n * @returns {EyeElement|void}\r\n */\r\n on(ev, arg2, arg3) {\r\n ev = ev.split(\" \");\r\n let target = typeof arg2 === \"string\" ? arg2 : null;\r\n let cb = typeof arg2 === \"function\" ? arg2 : arg3;\r\n let _this = this;\r\n if (typeof cb !== \"function\")\r\n return console.error(\r\n \"[EyeJS] .on method is missing the actuall callback `cb` or not of type function\"\r\n );\r\n\r\n let outsider = null;\r\n ev.forEach(evt => {\r\n if (target) {\r\n if (!delegationEvents.includes(evt))\r\n return outsider = evt; // outsider events \r\n\r\n if (!_this.#dlgListeners.has(evt))\r\n _this.#dlgListeners.set(evt, new Set());\r\n _this.#dlgListeners.get(evt).add({ callback: cb, target });\r\n } else {\r\n _this.each((elm) => {\r\n elm.addEventListener(evt, cb);\r\n })\r\n }\r\n })\r\n\r\n if (outsider !== null)\r\n return console.error(`[EyeJS] trying to use delegation for an inappropriate event \"${outsider}\"`);\r\n\r\n return this;\r\n }\r\n /**\r\n * Remove event listener of a specific event\r\n * @method EyeElement#off\r\n * @param {string} ev \r\n * @param {function} cb \r\n * @returns {EyeElement|void}\r\n */\r\n off(ev, cb) {\r\n let _this = this,\r\n listeners = _this.#dlgListeners;\r\n if (typeof cb != \"function\")\r\n return console.error(\r\n \"[EyeJS] .off method is missing the actuall callback `cb` or not of type function\"\r\n );\r\n ev = ev.split(\" \");\r\n\r\n this.each((elm, idx) => {\r\n ev.forEach(evt => elm.removeEventListener(evt, cb));\r\n })\r\n // now delegated events\r\n ev.forEach(evt => {\r\n if (listeners.has(evt)) {\r\n let set = listeners.get(evt);\r\n for (const item of set) {\r\n if (cb === item.callback) {\r\n // found it & remove it\r\n set.delete(item);\r\n }\r\n }\r\n }\r\n })\r\n }\r\n /**\r\n * Trigger specific event for this element\r\n * @method EyeElement#trigger\r\n * @param {string} ev \r\n * @returns {EyeElement}\r\n */\r\n trigger(ev) {\r\n this.each((elm, idx) => {\r\n elm.dispatchEvent(getEvent(ev));\r\n })\r\n return this;\r\n }\r\n /**\r\n * Find one or multiple child elements by `selector`\r\n * @method EyeElement#find\r\n * @param {string} selector \r\n * @returns {HTMLElement|Array<HTMLElement>}\r\n */\r\n find(selector) {\r\n let found = [];\r\n this.each((elm, idx) => {\r\n elm.querySelectorAll(selector).forEach(res => found.push(res));\r\n })\r\n return found.length == 1 ? found[0] : found;\r\n }\r\n /**\r\n * Returns a clone of current selected element/s\r\n * @method EyeElement#clone\r\n * @param {HTMLElement} [parent] optionally append new clone to a parent\r\n * @returns {Array<EyeElement>}\r\n */\r\n clone(parent) {\r\n let list = [];\r\n this.each((nd) => {\r\n list.push(nd.cloneNode(true));\r\n })\r\n if (parent instanceof HTMLElement || parent instanceof EyeElement) list.forEach(el => parent.append(el));\r\n return list;\r\n }\r\n /**\r\n * Compute DOMRect or style declaration of current element\r\n * @method EyeElement#compute\r\n * @param {\"bounds\" | \"style\"} type \r\n * @returns {DOMRect|CSSStyleDeclaration}\r\n */\r\n compute(type) {\r\n type = type || \"bounds\";\r\n if (type === \"bounds\")\r\n return (this.#raw[0]).getBoundingClientRect();\r\n else if (type == \"style\")\r\n return getComputedStyle(this.#raw[0])\r\n console.error(`[EyeJS] unknown type \"${type}\" in function .compute, possible values are \"bounds\" \"style\"`);\r\n }\r\n\r\n /**\r\n * Get specific client informations.\r\n * @param {\"width\" | \"height\" | \"left\" | \"top\"} attr \r\n * @returns {EyeElement}\r\n */\r\n client(attr) {\r\n if (['width', 'height', 'left', 'top'].includes(attr))\r\n return this.#raw[0][`client${attr[0].toUpperCase()}${attr.substring(1, attr.length)}`];\r\n else console.error(`[EyeJS] Unknown client* attribute \"${attr}\" in .client(attr)`);\r\n return this;\r\n }\r\n /**\r\n * Activate/disactive different pointer features such as PointerLock, pointerCapture...\r\n * @method EyeElement#pointer\r\n * @param {\"capture\" | \"lock\"} action \r\n * @param {boolean} status \r\n * @param {string} [pid] \r\n * @returns {EyeElement}\r\n */\r\n pointer(action, status, pid) {\r\n this.each((elm, idx) => {\r\n if (action === \"capture\") {\r\n if (status === true) elm.setPointerCapture(pid);\r\n else elm.releasePointerCapture(pid);\r\n } else if (action === \"lock\") {\r\n if (status === true) elm.requestPointerLock();\r\n else document.exitPointerLock();\r\n }\r\n });\r\n return this;\r\n }\r\n /**\r\n * Returns the count of children for this element\r\n * @type {number}\r\n */\r\n get childlen() {\r\n return this.#raw[0].children.length;\r\n }\r\n /**\r\n * Select a child of this element\r\n * @method EyeElement#child\r\n * @param {number} index \r\n * @returns {EyeElement|null}\r\n */\r\n child(index) {\r\n if (index === undefined) return this.#raw[0].children.length;\r\n if (this.#raw[0].children[index]) return e(this.#raw[0].children[index]);\r\n return null;\r\n }\r\n /**\r\n * Set/get the value of the current element\r\n * @method EyeElement#val\r\n * @param {*} value \r\n * @returns \r\n */\r\n val(value) {\r\n if (value != undefined) this.each((a) => a.value = this.#customSet.value(\"set\", value, a));\r\n else return this.#customSet.value(\"get\", this.#raw[0].value, this.#raw[0]);\r\n return this;\r\n }\r\n /**\r\n * Serialize this element to send it over network, returns 3 formats `json`, `url` & `fd`(formData) \r\n * @method EyeElement#serialize\r\n * @param {{inputs: Array<string>}} opts\r\n * @returns {{json: Object, url: String, fd: FormData}}\r\n */\r\n serialize(opts) {\r\n opts = opts || {};\r\n let {\r\n inputs = [\"input\", \"textarea\", \"select\"],\r\n } = opts;\r\n let out = {\r\n json: {},\r\n url: \"\",\r\n fd: new FormData()\r\n };\r\n this.#raw[0].querySelectorAll(inputs.join(','))\r\n .forEach((inp, i) => {\r\n let name = inp.name || inp.dataset.name;\r\n let value = inp.value || inp.textContent;\r\n if (typeof opts[name] === \"function\") value = opts[name](inp);\r\n\r\n if (inp.type == \"file\")\r\n inp.files.forEach(file => {\r\n out.fd.append(name, file);\r\n })\r\n else {\r\n out.json[name] = value;\r\n out.fd.append(name, value);\r\n }\r\n })\r\n\r\n out.url = new URLSearchParams(out.json).toString();\r\n return out;\r\n }\r\n /**\r\n * Redefine the way `.text` or `.val` set or get data to and from this element.\r\n * @method EyeElement#redefine\r\n * @param {\"text\" | \"value\"} type \r\n * @param {(action: \"set\" | \"get\", value: *, elm: EyeElement) => *} process \r\n * @returns {EyeElement}\r\n */\r\n redefine(type, process) {\r\n if ([\"text\", \"value\"].includes(type) && typeof process == \"function\")\r\n this.#customSet[type] = process;\r\n return this;\r\n }\r\n /**\r\n * Animate current object \r\n * @method EyeElement#animate\r\n * @param {Array<Keyframe>} keyframes \r\n * @param {KeyframeAnimationOptions} opts \r\n * @returns {Array<Animation>|Animation}\r\n */\r\n animate(keyframes, opts) {\r\n /**\r\n * @type {Array<Animation>}\r\n */\r\n let anmts = [];\r\n opts.duration = opts.duration || 1000;\r\n this.each((elm, i) => {\r\n anmts.push(elm.animate(keyframes, opts));\r\n })\r\n return anmts.length == 1 ? anmts[0] : anmts;\r\n }\r\n\r\n /**\r\n * Find first element position within parent element\r\n * @method EyeElement#position\r\n * @returns {number}\r\n */\r\n position() {\r\n let pos = -1;\r\n for (let i = 0; i < this.#raw[0].parentNode.children.length; i++) {\r\n const child = this.#raw[0].parentNode.children[i];\r\n if (this.#raw[0].isSameNode(child)) {\r\n pos = i;\r\n break;\r\n }\r\n }\r\n return pos;\r\n }\r\n};\r\n\r\n/**\r\n * Creates or select nodes using css selectors, offering a pack of useful functions to use around your code!\r\n * @param {String} tag\r\n * @param {AttrMap} attrs\r\n * @param {Object} css CSS styles to be applied to the element.\r\n * @returns {EyeElement}\r\n */\r\nfunction e(tag, attrs, css) {\r\n if (typeof tag === \"string\" && tag.indexOf(\"model:\") === 0 || tag === \"model\") {\r\n if (!attrs) return console.error(\"[EyeJS] Model creation requires parameter 'attr' as prototype, none delivered!\");\r\n\r\n tag = tag.split(\":\");\r\n let cls = [\"eye-model\"];\r\n if (tag[1])\r\n cls = cls.concat(tag[1].split(\" \").filter(a => a != \"\"));\r\n // creating a model\r\n let model = e(\"<div>\", {\r\n class: cls.join(\" \"),\r\n });\r\n\r\n let sets = cmcl(model, attrs);\r\n\r\n /**\r\n * @param {string} attrs\r\n * @returns {ModelEyeElement}\r\n */\r\n return (attrs) => {\r\n let copy = e(model.clone(attrs?.parent));\r\n // define & attach the refresh function\r\n copy.refresh = function (attrs = {}) {\r\n let def = attrs.default === false ? false : true;\r\n sets.forEach((item) => {\r\n if (def === true || (!def && attrs.hasOwnProperty(item.name)))\r\n item.set(copy, attrs[item.name]);\r\n });\r\n return this;\r\n };\r\n return copy.refresh(attrs);\r\n };\r\n } else {\r\n let ne = new EyeElement(tag, attrs, css);\r\n return ne.length === 0 ? null : ne;\r\n }\r\n}\r\n\r\n// gloablly exposed\r\nwindow.e = e;\r\nwindow.EyeElement = EyeElement;\r\nexport default e;\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eye.cjs.js","sources":["../src/eye.js"],"sourcesContent":["/**\r\n * @typedef {Object} AttrMap\r\n * @property {HTMLDivElement} parent - append newly created element to a parent\r\n * @property {Array<String>|String} class - class or array of classes to set\r\n * @property {String} id - set element ID\r\n * @property {Object} data - dataset values to set\r\n * @property {String} text - set element text\r\n * @property {String} html - set element html\r\n */\r\n\r\nconst unitlessProps = new Set([\r\n \"opacity\", \"zIndex\", \"fontWeight\", \"lineHeight\",\r\n \"flex\", \"flexGrow\", \"flexShrink\", \"order\"\r\n]);\r\n\r\n/**\r\n * Returns the associated class event of that event\r\n * example: for click event it returns new MouseEvent(\"click\")\r\n * @param {string} ev \r\n */\r\nfunction getEvent(type, options = {}) {\r\n switch (type) {\r\n // Mouse Events\r\n case 'click':\r\n case 'dblclick':\r\n case 'mousedown':\r\n case 'mouseup':\r\n case 'mousemove':\r\n case 'mouseenter':\r\n case 'mouseleave':\r\n case 'mouseover':\r\n case 'mouseout':\r\n return new MouseEvent(type, options);\r\n\r\n // Pointer Events\r\n case 'pointerdown':\r\n case 'pointerup':\r\n case 'pointermove':\r\n case 'pointerenter':\r\n case 'pointerleave':\r\n case 'pointerover':\r\n case 'pointerout':\r\n return new PointerEvent(type, options);\r\n\r\n // Keyboard Events\r\n case 'keydown':\r\n case 'keyup':\r\n case 'keypress':\r\n return new KeyboardEvent(type, options);\r\n\r\n // Focus Events\r\n case 'focus':\r\n case 'blur':\r\n case 'focusin':\r\n case 'focusout':\r\n return new FocusEvent(type, options);\r\n\r\n // Input & Form Events\r\n case 'input':\r\n case 'change':\r\n case 'submit':\r\n case 'reset':\r\n return new Event(type, options);\r\n\r\n // Wheel\r\n case 'wheel':\r\n return new WheelEvent(type, options);\r\n\r\n // Clipboard\r\n case 'copy':\r\n case 'cut':\r\n case 'paste':\r\n return new ClipboardEvent(type, options);\r\n\r\n // UI\r\n case 'scroll':\r\n case 'resize':\r\n return new UIEvent(type, options);\r\n\r\n // Default: fallback to generic Event\r\n default:\r\n return new CustomEvent(type, options);\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {EyeElement & {\r\n * refresh: (attrs: AttrMap) => ModelEyeElement\r\n * }} ModelEyeElement eye element definition for model elements\r\n */\r\n\r\nconst events = [\r\n // Mouse Events\r\n \"click\",\r\n \"dblclick\",\r\n \"mousedown\",\r\n \"mouseup\",\r\n \"mousemove\",\r\n \"mouseenter\",\r\n \"mouseleave\",\r\n \"mouseover\",\r\n \"mouseout\",\r\n \"contextmenu\",\r\n\r\n // Keyboard Events\r\n \"keydown\",\r\n \"keypress\", // Deprecated\r\n \"keyup\",\r\n\r\n // Focus Events\r\n \"focus\",\r\n \"blur\",\r\n \"focusin\",\r\n \"focusout\",\r\n\r\n // Form Events\r\n \"submit\",\r\n \"change\",\r\n \"input\",\r\n \"reset\",\r\n \"select\",\r\n\r\n // Touch Events (for mobile)\r\n \"touchstart\",\r\n \"touchend\",\r\n \"touchmove\",\r\n \"touchcancel\",\r\n\r\n // Pointer Events\r\n \"pointerdown\",\r\n \"pointerup\",\r\n \"pointermove\",\r\n \"pointerenter\",\r\n \"pointerleave\",\r\n \"pointercancel\",\r\n\r\n // Drag and Drop Events\r\n \"dragstart\",\r\n \"dragend\",\r\n \"dragenter\",\r\n \"dragover\",\r\n \"dragleave\",\r\n \"drop\",\r\n\r\n // Window/Document Events\r\n \"resize\",\r\n \"scroll\",\r\n \"load\",\r\n \"beforeunload\",\r\n \"unload\",\r\n\r\n // Media Events\r\n \"play\",\r\n \"pause\",\r\n \"ended\",\r\n \"volumechange\",\r\n \"timeupdate\",\r\n\r\n // Clipboard Events\r\n \"copy\",\r\n \"cut\",\r\n \"paste\",\r\n\r\n // Animation and Transition Events\r\n \"animationstart\",\r\n \"animationend\",\r\n \"animationiteration\",\r\n \"transitionstart\",\r\n \"transitionend\",\r\n\r\n // Mutation Events\r\n \"DOMSubtreeModified\",\r\n \"DOMNodeInserted\",\r\n \"DOMNodeRemoved\",\r\n\r\n // Other Events\r\n \"error\",\r\n \"hashchange\",\r\n \"popstate\",\r\n];\r\n\r\nconst htmlElements = [\r\n // Metadata\r\n \"<base>\",\r\n \"<head>\",\r\n \"<link>\",\r\n \"<meta>\",\r\n \"<style>\",\r\n \"<title>\",\r\n\r\n // Sections\r\n \"<body>\",\r\n \"<address>\",\r\n \"<article>\",\r\n \"<aside>\",\r\n \"<footer>\",\r\n \"<header>\",\r\n \"<h1>\",\r\n \"<h2>\",\r\n \"<h3>\",\r\n \"<h4>\",\r\n \"<h5>\",\r\n \"<h6>\",\r\n \"<main>\",\r\n \"<nav>\",\r\n \"<section>\",\r\n\r\n // Text content\r\n \"<blockquote>\",\r\n \"<dd>\",\r\n \"<div>\",\r\n \"<dl>\",\r\n \"<dt>\",\r\n \"<figcaption>\",\r\n \"<figure>\",\r\n \"<hr>\",\r\n \"<li>\",\r\n \"<ol>\",\r\n \"<p>\",\r\n \"<pre>\",\r\n \"<ul>\",\r\n\r\n // Inline text semantics\r\n \"<a>\",\r\n \"<abbr>\",\r\n \"<b>\",\r\n \"<bdi>\",\r\n \"<bdo>\",\r\n \"<br>\",\r\n \"<cite>\",\r\n \"<code>\",\r\n \"<data>\",\r\n \"<dfn>\",\r\n \"<em>\",\r\n \"<i>\",\r\n \"<kbd>\",\r\n \"<mark>\",\r\n \"<q>\",\r\n \"<rp>\",\r\n \"<rt>\",\r\n \"<ruby>\",\r\n \"<s>\",\r\n \"<samp>\",\r\n \"<small>\",\r\n \"<span>\",\r\n \"<strong>\",\r\n \"<sub>\",\r\n \"<sup>\",\r\n \"<time>\",\r\n \"<u>\",\r\n \"<var>\",\r\n \"<wbr>\",\r\n\r\n // Image and multimedia\r\n \"<area>\",\r\n \"<audio>\",\r\n \"<img>\",\r\n \"<map>\",\r\n \"<track>\",\r\n \"<video>\",\r\n\r\n // Embedded content\r\n \"<embed>\",\r\n \"<iframe>\",\r\n \"<object>\",\r\n \"<picture>\",\r\n \"<portal>\",\r\n \"<source>\",\r\n\r\n // Scripting\r\n \"<canvas>\",\r\n \"<noscript>\",\r\n \"<script>\",\r\n\r\n // Demarcating edits\r\n \"<del>\",\r\n \"<ins>\",\r\n\r\n // Table content\r\n \"<caption>\",\r\n \"<col>\",\r\n \"<colgroup>\",\r\n \"<table>\",\r\n \"<tbody>\",\r\n \"<td>\",\r\n \"<tfoot>\",\r\n \"<th>\",\r\n \"<thead>\",\r\n \"<tr>\",\r\n\r\n // Forms\r\n \"<button>\",\r\n \"<datalist>\",\r\n \"<fieldset>\",\r\n \"<form>\",\r\n \"<input>\",\r\n \"<label>\",\r\n \"<legend>\",\r\n \"<meter>\",\r\n \"<optgroup>\",\r\n \"<option>\",\r\n \"<output>\",\r\n \"<progress>\",\r\n \"<select>\",\r\n \"<textarea>\",\r\n\r\n // Interactive elements\r\n \"<details>\",\r\n \"<dialog>\",\r\n \"<summary>\",\r\n\r\n // Web components / scripting base\r\n \"<slot>\",\r\n \"<template>\",\r\n];\r\n\r\nfunction flat(word) {\r\n let n = \"\";\r\n for (let i = 0; i < word.length; i++) {\r\n const t = word[i];\r\n if (t === t.toUpperCase() && t !== t.toLowerCase()) n += \"-\" + t;\r\n else n += t;\r\n }\r\n return n.toLowerCase();\r\n}\r\n\r\nconst localdata = new WeakMap();\r\n\r\n/**\r\n * cmcl stands for Create Model Children Layers, recursively creates model layers one by one\r\n * @param {EyeElement} parent\r\n * @param {Object} layer\r\n * @returns {Array<{name: string,set: (parent: EyeElement, value: String) =>}>}\r\n */\r\nfunction cmcl(parent, layer) {\r\n let obj = [];\r\n for (const key in layer) {\r\n const subcontent = layer[key];\r\n const [def, _set] = key.split(\":\");\r\n const [tagName, ...cls] = def.split(\".\");\r\n let [_set_name = null, _set_default = null] = (_set || \"\")\r\n .split(\"-\")\r\n .map((a) => a.trim());\r\n\r\n let elm = e(tagName.trim(), {\r\n class: cls,\r\n parent,\r\n data: _set ? { value: _set_name } : undefined,\r\n });\r\n\r\n if (_set && _set_name) {\r\n obj.push({\r\n name: _set_name,\r\n set(parent, value) {\r\n let elm = parent.find(`[data-value=\"${_set_name}\"]`);\r\n elm.textContent = value ?? _set_default;\r\n }\r\n });\r\n }\r\n\r\n // recursive\r\n if (\r\n subcontent &&\r\n typeof subcontent === \"object\" &&\r\n !(subcontent instanceof Array)\r\n )\r\n obj = obj.concat(cmcl(elm, subcontent));\r\n }\r\n return obj;\r\n}\r\n\r\nlet delegationEvents = [\"click\", \"dblclick\", \"submit\", \"input\", \"change\", \"keydown\", \"keyup\", \"keypress\", \"focusin\", \"focusout\", \"mousedown\", \"mouseup\", \"mousemove\", \"contextmenu\", \"auxclick\", \"wheel\", \"mouseover\", \"mouseout\", \"pointerdown\", \"pointerup\", \"pointermove\", \"pointerover\", \"pointerout\", \"gotpointercapture\", \"lostpointercapture\", \"pointercancel\"];\r\nlet normalSetterGetter = (action, v, elm) => v;\r\n\r\n/**\r\n * Eye wrapper offers a subset of functions that ease DOM minipulation! Power of JQuery with \r\n * some a modern design and a bunch of new functions.\r\n * @author Yousef Neji\r\n */\r\nexport class EyeElement {\r\n /**\r\n * Raw html element\r\n * @type {Array<HTMLElement>}\r\n */\r\n #raw = null;\r\n\r\n /**\r\n * Used to store delegated events listeners\r\n * @type {Map<String,Set<{callback, target: string}>>}\r\n */\r\n #dlgListeners = new Map();\r\n\r\n /**\r\n * Custom way or modifier that redefine the way you set/get\r\n * this element `textContent` or `value`:\r\n * - access this feature from `.redefine` method.\r\n */\r\n #customSet = {\r\n value: normalSetterGetter,\r\n text: normalSetterGetter\r\n };\r\n\r\n /**\r\n * Called internally to initiate the main EyeElement functionalities\r\n * @method EyeElement#init\r\n * @param {string|HTMLElement} selector\r\n * @param {AttrMap} attrs\r\n * @param {Object} css\r\n * @returns {EyeElement}\r\n */\r\n constructor(selector, attrs, css) {\r\n let _this = this;\r\n if (selector instanceof HTMLElement) {\r\n this.#raw = [selector];\r\n } else if (htmlElements.includes(selector)) {\r\n // creating a new element\r\n this.#raw = [document.createElement(selector.substring(1, selector.length - 1))];\r\n } else if (Array.isArray(selector)) {\r\n this.#raw = [];\r\n selector.forEach((a) => {\r\n if (a instanceof EyeElement) _this.#raw = _this.#raw.concat(...a.raw);\r\n else if (a instanceof HTMLElement) _this.#raw.push(a);\r\n })\r\n } else {\r\n // selecting\r\n let s = selector.slice(-1) === \"!\";\r\n this.#raw = [...document.querySelectorAll(s ? selector.slice(0, -1) : selector)];\r\n }\r\n\r\n /**\r\n * Handler used to integrate delegation concept/algorithme\r\n * @param {Event} e \r\n */\r\n function handler(e) {\r\n let name = e.type,\r\n listeners = _this.#dlgListeners,\r\n _etarget = e.target,\r\n me = this; // refers to the element being listening to the event\r\n\r\n if (listeners.has(name)) {\r\n let cbs = listeners.get(name);\r\n cbs?.forEach(({ callback, target }) => {\r\n if (_etarget.closest(target)) {\r\n // we hitting the target\r\n callback(e, me);\r\n }\r\n })\r\n }\r\n }\r\n\r\n this.each((elm, idx) => {\r\n let parentElm = null;\r\n if (attrs)\r\n for (const key in attrs) {\r\n const value = attrs[key];\r\n if (key == \"class\")\r\n elm.classList.add.apply(\r\n elm.classList,\r\n (value instanceof Array ? value : value.split(\" \")).filter(a => a != \"\")\r\n );\r\n else if (key == \"text\") elm.textContent = value;\r\n else if (key == \"html\") elm.innerHTML = value;\r\n else if (key == \"data\") for (const k in value) elm.dataset[k] = value[k];\r\n else if (key == \"parent\") parentElm = value;\r\n else if (key in elm) elm[key] = value;\r\n else if (key[0] != \"_\") elm.setAttribute(key, value); // we must ignore _ started keys 'cause they are used by models\r\n }\r\n if (css)\r\n for (const key in css)\r\n if (key.indexOf(\"-\") != -1) elm.style[key] = css[key];\r\n else elm.style[flat(key)] = css[key];\r\n if (parentElm instanceof EyeElement || parentElm instanceof HTMLElement) parentElm.append(elm);\r\n\r\n // creating the delegation handling model\r\n delegationEvents.forEach(ev => {\r\n elm.addEventListener(ev, handler);\r\n })\r\n })\r\n\r\n // creating/initiating events functions\r\n events.forEach(ev => {\r\n _this[ev] = function (cb) {\r\n if (cb) {\r\n if (typeof cb == \"function\") _this.on(ev, cb);\r\n } else _this.trigger(ev);\r\n\r\n return _this;\r\n }\r\n })\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Length of current selection\r\n * @type {Number}\r\n */\r\n get length() {\r\n return this.#raw.length;\r\n }\r\n\r\n /**\r\n * Raw html element\r\n * @type {HTMLElement}\r\n */\r\n get raw() {\r\n return this.#raw;\r\n }\r\n\r\n /**\r\n * Run(loop) through selected NodeList, or run a single call for one single element\r\n * @method EyeElement#each\r\n * @param {(elm: HTMLElement, index: number, current: EyeElement)=>} cb \r\n * @returns {EyeElement}\r\n */\r\n each(cb) {\r\n for (let i = 0; i < this.#raw.length; i++) {\r\n const elm = this.#raw[i];\r\n let exit = cb(elm, i, this);\r\n if (exit === false) break;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Run(loop) through selected NodeList's children.\r\n * @param {(elm: HTMLElement, index: number, parent: HTMLElement, Object: EyeElement)=>{}} cb \r\n * @returns {EyeElement}\r\n */\r\n eachChild(cb) {\r\n let _this = this;\r\n return this.each(function (elm, i, parent) {\r\n let exit = true;\r\n for (let j = 0; j < elm.children.length; j++) {\r\n exit = cb(elm.children[j], j, elm, _this);\r\n if (exit === false) break;\r\n }\r\n if (exit === false) return;\r\n })\r\n }\r\n /**\r\n * Set or get element html\r\n * @method EyeElement#html\r\n * @param {string} [html]\r\n * @returns {EyeElement|string}\r\n */\r\n html(html) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (html === undefined) return out = elm.innerHTML;// getting the first one and exiting\r\n elm.innerHTML = html;\r\n })\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Set or get element text\r\n * @method EyeElement#text\r\n * @param {string} [text]\r\n * @returns {EyeElement|string}\r\n */\r\n text(text) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (text === undefined) return out = this.#customSet.text(\"get\", elm.textContent, elm);\r\n elm.textContent = this.#customSet.text(\"set\", text, elm);\r\n })\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Set or get element's data values\r\n * @method EyeElement#data\r\n * @param {string} key\r\n * @param {*} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n data(key, value) {\r\n if (!localdata.has(this)) localdata.set(this, {});\r\n if (key) {\r\n if (value != undefined) localdata.get(this)[key] = value;\r\n else return localdata.get(this)[key];\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Set or get an attribute value\r\n * @method EyeElement#attr\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n attr(name, value) {\r\n let out = \"\";\r\n this.each((elm, idx) => {\r\n if (name.indexOf(\"data-\") === 0) {\r\n let [key, val] = name.split(\"-\").map((a) => a.trim());\r\n // modify data\r\n if (value == undefined) return out = elm.dataset[val];\r\n elm.dataset[val] = value;\r\n } else {\r\n if (name in elm) {\r\n if (value == undefined) return out = elm[name];\r\n elm[name] = value;\r\n } else if (name[0] != \"_\") {\r\n if (value == undefined) return out = elm.getAttribute(name)\r\n elm.setAttribute(name, value);\r\n }\r\n }\r\n })\r\n return out ? out : this;\r\n }\r\n /**\r\n * Removing attribute of this element\r\n * @type {string} attrName\r\n * @returns {EyeElement}\r\n */\r\n rAttr(attrName) {\r\n if (attrName) {\r\n this.each((elm, idx) => {\r\n elm.removeAttribute(attrName);\r\n })\r\n }\r\n return this;\r\n }\r\n /**\r\n * Super fancy class function that allows to modify class with different methods in one as follow:\r\n * - `\"classname\"`: add classname to the element.\r\n * - `\"-classname\"`: remove classname from class list.\r\n * - `\"%classname\"`: toggle classname existing.\r\n * - `\"?classname\"`: check classname existing in class list.\r\n * - `\"classnameA/classnameB\"`: replace classnameA by classnameB\r\n * @method EyeElement#class\r\n * @param {string} actions\r\n * @returns {EyeElement|string}\r\n */\r\n class(actions) {\r\n let out = undefined;\r\n this.each((elm, idx) => {\r\n if (typeof actions === \"number\") return out = elm.classList.item(actions);\r\n\r\n actions.split(\" \").forEach((action) => {\r\n if (action[0] == \"-\") {\r\n elm.classList.remove(action.substring(1, action.length));\r\n } else if (action[0] == \"%\") {\r\n elm.classList.toggle(action.substring(1, action.length));\r\n } else if (action[0] == \"?\") {\r\n out = elm.classList.contains(action.substring(1, action.length));\r\n } else if (action.indexOf(\"/\") != -1) {\r\n let [v1, v2] = action.split(\"/\");\r\n elm.classList.replace(v1, v2);\r\n } else {\r\n elm.classList.add(action);\r\n }\r\n });\r\n if (out) return;\r\n })\r\n\r\n return out != undefined ? out : this;\r\n }\r\n /**\r\n * Show/display the element\r\n * @method EyeElement#show\r\n * @param {string} cls\r\n * @returns {EyeElement}\r\n */\r\n show(cls) {\r\n this.each((elm, idx) => {\r\n elm.style.display = cls ?? \"inline-block\";\r\n })\r\n return this;\r\n }\r\n /**\r\n * Hide the element\r\n * @method EyeElement#hide\r\n * @param {boolean} opacity whether to hide by making invisible?\r\n * @returns {EyeElement}\r\n */\r\n hide(opacity) {\r\n this.each((elm, idx) => {\r\n if (opacity) elm.style.opacity = 0;\r\n else elm.style.display = \"none\";\r\n })\r\n return this;\r\n }\r\n /**\r\n * Append one or more elements to the current element, only effect the first element in the selected list\r\n * @method EyeElement#append\r\n * @param {HTMLElement|Array<Node|EyeElement>} elm\r\n * @param {\"next\" | \"after\" | \"previous\" | \"before\" | \"first\" | \"afterbegin\" | \"last\" | \"beforeend\"} [pos] [optional]\r\n * @returns {EyeElement}\r\n */\r\n append(elm, pos) {\r\n (Array.isArray(elm) ? elm : [elm]).forEach(item => {\r\n let nodes = [];\r\n if (item instanceof EyeElement) nodes = [...item.raw];\r\n else if (item instanceof HTMLElement) nodes = [item];\r\n\r\n nodes.forEach(node => {\r\n switch (pos) {\r\n case \"next\":\r\n case \"after\":\r\n this.#raw[0].after(node);\r\n break;\r\n case \"previous\":\r\n case \"before\":\r\n this.#raw[0].before(node);\r\n break;\r\n case \"afterbegin\":\r\n case \"first\":\r\n this.#raw[0].prepend(node);\r\n break;\r\n case \"beforeend\":\r\n case \"last\":\r\n default:\r\n this.#raw[0].append(node);\r\n }\r\n })\r\n })\r\n return this;\r\n }\r\n /**\r\n * Insert element after this one, or return the one lies there\r\n * @method EyeElement#after\r\n * @param {EyeElement|HTMLElement} elm \r\n * @param {AttrMap} attr\r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n after(elm, attr) {\r\n if (elm)\r\n this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);\r\n else return this.#raw[0].nextElementSibling ? e(this.#raw[0].nextElementSibling, attr) : null;\r\n return this;\r\n }\r\n /**\r\n * Insert element before this one, or return the one lies there\r\n * @method EyeElement#before\r\n * @param {EyeElement|HTMLElement} elm \r\n * @param {AttrMap} attr\r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n before(elm, attr) {\r\n if (elm)\r\n this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);\r\n else return this.#raw[0].previousElementSibling ? e(this.#raw[0].previousElementSibling, attr) : null\r\n return this;\r\n }\r\n /**\r\n * Replace current element with the new element, or multiple elements with multiple selected elements\r\n * @method EyeElement#replaceWith\r\n * @param {...HTMLElement|EyeElement} elms\r\n * @param {string} [pos] [optional]\r\n * @returns {EyeElement}\r\n */\r\n replaceWith(...elms) {\r\n let nodes = [];\r\n (Array.isArray(elms) ? elms : [elms]).forEach(item => {\r\n if (item instanceof EyeElement) nodes = nodes.concat(...item.raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n this.#raw[0].replaceWith(...nodes);\r\n return this;\r\n }\r\n /**\r\n * Get current element parent or append it to one\r\n * @method EyeElement#parent\r\n * @param {HTMLElement|EyeElement} parent\r\n * @param {boolean} clone [true] append clones of the elements\r\n * @returns {EyeElement}\r\n */\r\n parent(parent, clone) {\r\n if (parent) {\r\n if (!(parent instanceof HTMLElement) && !(parent instanceof EyeElement))\r\n throw new Error(\r\n \"[EyeJS] Unable to append current element to parent because it's not HTMLElement\"\r\n );\r\n this.each(elm => {\r\n parent.append(clone === true ? elm.cloneNode(true) : elm);\r\n })\r\n return this;\r\n }\r\n return e(this.#raw[0].parentElement);\r\n }\r\n /**\r\n * Returns whether current node is the same/equal (depending on `check`) as the passed node or not\r\n * @method EyeElement#is\r\n * @param {HTMLElement|EyeElement} node\r\n * @param {\"connected\" | \"same\" | \"equal\"} [check] check type `same`, `equal`\r\n * @returns {boolean}\r\n */\r\n is(node, check) {\r\n node = node instanceof EyeElement ? node.#raw[0] : node;\r\n if (node === \"connected\") return this.#raw[0].isConnected;\r\n switch (check) {\r\n case \"same\":\r\n return this.#raw[0].isSameNode(node);\r\n case \"equal\":\r\n return this.#raw[0].isEqualNode(node);\r\n default:\r\n console.error(\r\n `[EyeJS] Unknown check \"${check}\", possible values are [\"same\",\"equal\",\"connected\"]`\r\n );\r\n return false;\r\n }\r\n }\r\n /**\r\n * Set or get a css attribute\r\n * @method EyeElement#css\r\n * @param {string} attr\r\n * @param {string|number} [value]\r\n * @returns {EyeElement|string}\r\n */\r\n css(attr, value) {\r\n if (attr) {\r\n if (!unitlessProps.has(attr) && typeof value === \"number\" && value != 0) value = `${value}px`;\r\n let out = undefined;\r\n attr = flat(attr);\r\n this.each((elm, idx) => {\r\n if (value === undefined) return out = elm.style[attr];\r\n elm.style[attr] = value;\r\n })\r\n return out != undefined ? out : this;\r\n } else return console.error(`[EyeJS] missing argument \"attr\" in function .css`);\r\n }\r\n /**\r\n * Remove current element\r\n * @method EyeElement#remove\r\n * @returns {EyeElement}\r\n */\r\n remove() {\r\n this.each((elm, idx) => {\r\n elm.remove();\r\n })\r\n return this;\r\n }\r\n /**\r\n * @overload\r\n * @param {string} ev\r\n * @param {function} cb\r\n */\r\n /**\r\n * @overload\r\n * @param {string} ev\r\n * @param {string} trg optionally define a target element for the event\r\n * @param {function} cb\r\n *\r\n */\r\n /**\r\n * Attach an listener/handler to specific event or events\r\n * @method EyeElement#on\r\n * @param {string} ev may contain multiple events separated by \" \"(space)\r\n * @param {string|function} arg2 \r\n * @param {function} [arg3]\r\n * @returns {EyeElement|void}\r\n */\r\n on(ev, arg2, arg3) {\r\n ev = ev.split(\" \");\r\n let target = typeof arg2 === \"string\" ? arg2 : null;\r\n let cb = typeof arg2 === \"function\" ? arg2 : arg3;\r\n let _this = this;\r\n if (typeof cb !== \"function\")\r\n return console.error(\r\n \"[EyeJS] .on method is missing the actuall callback `cb` or not of type function\"\r\n );\r\n\r\n let outsider = null;\r\n ev.forEach(evt => {\r\n if (target) {\r\n if (!delegationEvents.includes(evt))\r\n return outsider = evt; // outsider events \r\n\r\n if (!_this.#dlgListeners.has(evt))\r\n _this.#dlgListeners.set(evt, new Set());\r\n _this.#dlgListeners.get(evt).add({ callback: cb, target });\r\n } else {\r\n _this.each((elm) => {\r\n elm.addEventListener(evt, cb);\r\n })\r\n }\r\n })\r\n\r\n if (outsider !== null)\r\n return console.error(`[EyeJS] trying to use delegation for an inappropriate event \"${outsider}\"`);\r\n\r\n return this;\r\n }\r\n /**\r\n * Remove event listener of a specific event\r\n * @method EyeElement#off\r\n * @param {string} ev \r\n * @param {function} cb \r\n * @returns {EyeElement|void}\r\n */\r\n off(ev, cb) {\r\n let _this = this,\r\n listeners = _this.#dlgListeners;\r\n if (typeof cb != \"function\")\r\n return console.error(\r\n \"[EyeJS] .off method is missing the actuall callback `cb` or not of type function\"\r\n );\r\n ev = ev.split(\" \");\r\n\r\n this.each((elm, idx) => {\r\n ev.forEach(evt => elm.removeEventListener(evt, cb));\r\n })\r\n // now delegated events\r\n ev.forEach(evt => {\r\n if (listeners.has(evt)) {\r\n let set = listeners.get(evt);\r\n for (const item of set) {\r\n if (cb === item.callback) {\r\n // found it & remove it\r\n set.delete(item);\r\n }\r\n }\r\n }\r\n })\r\n }\r\n /**\r\n * Trigger specific event for this element\r\n * @method EyeElement#trigger\r\n * @param {string} ev \r\n * @returns {EyeElement}\r\n */\r\n trigger(ev) {\r\n this.each((elm, idx) => {\r\n elm.dispatchEvent(getEvent(ev));\r\n })\r\n return this;\r\n }\r\n /**\r\n * Find one or multiple child elements by `selector`\r\n * @method EyeElement#find\r\n * @param {string} selector \r\n * @returns {HTMLElement|Array<HTMLElement>}\r\n */\r\n find(selector) {\r\n let found = [];\r\n this.each((elm, idx) => {\r\n elm.querySelectorAll(selector).forEach(res => found.push(res));\r\n })\r\n return found.length == 1 ? found[0] : found;\r\n }\r\n /**\r\n * Returns a clone of current selected element/s\r\n * @method EyeElement#clone\r\n * @param {HTMLElement} [parent] optionally append new clone to a parent\r\n * @returns {Array<EyeElement>}\r\n */\r\n clone(parent) {\r\n let list = [];\r\n this.each((nd) => {\r\n list.push(nd.cloneNode(true));\r\n })\r\n if (parent instanceof HTMLElement || parent instanceof EyeElement) list.forEach(el => parent.append(el));\r\n return list;\r\n }\r\n /**\r\n * Compute DOMRect or style declaration of current element\r\n * @method EyeElement#compute\r\n * @param {\"bounds\" | \"style\"} type \r\n * @returns {DOMRect|CSSStyleDeclaration}\r\n */\r\n compute(type) {\r\n type = type || \"bounds\";\r\n if (type === \"bounds\")\r\n return (this.#raw[0]).getBoundingClientRect();\r\n else if (type == \"style\")\r\n return getComputedStyle(this.#raw[0])\r\n console.error(`[EyeJS] unknown type \"${type}\" in function .compute, possible values are \"bounds\" \"style\"`);\r\n }\r\n\r\n /**\r\n * Get specific client informations.\r\n * @param {\"width\" | \"height\" | \"left\" | \"top\"} attr \r\n * @returns {EyeElement}\r\n */\r\n client(attr) {\r\n if (['width', 'height', 'left', 'top'].includes(attr))\r\n return this.#raw[0][`client${attr[0].toUpperCase()}${attr.substring(1, attr.length)}`];\r\n else console.error(`[EyeJS] Unknown client* attribute \"${attr}\" in .client(attr)`);\r\n return this;\r\n }\r\n /**\r\n * Activate/disactive different pointer features such as PointerLock, pointerCapture...\r\n * @method EyeElement#pointer\r\n * @param {\"capture\" | \"lock\"} action \r\n * @param {boolean} status \r\n * @param {string} [pid] \r\n * @returns {EyeElement}\r\n */\r\n pointer(action, status, pid) {\r\n this.each((elm, idx) => {\r\n if (action === \"capture\") {\r\n if (status === true) elm.setPointerCapture(pid);\r\n else elm.releasePointerCapture(pid);\r\n } else if (action === \"lock\") {\r\n if (status === true) elm.requestPointerLock();\r\n else document.exitPointerLock();\r\n }\r\n });\r\n return this;\r\n }\r\n /**\r\n * Returns the count of children for this element\r\n * @type {number}\r\n */\r\n get childlen() {\r\n return this.#raw[0].children.length;\r\n }\r\n /**\r\n * Select a child of this element\r\n * @method EyeElement#child\r\n * @param {number} index \r\n * @returns {EyeElement|null}\r\n */\r\n child(index) {\r\n if (index === undefined) return this.#raw[0].children.length;\r\n if (this.#raw[0].children[index]) return e(this.#raw[0].children[index]);\r\n return null;\r\n }\r\n /**\r\n * Set/get the value of the current element\r\n * @method EyeElement#val\r\n * @param {*} value \r\n * @returns \r\n */\r\n val(value) {\r\n if (value != undefined) this.each((a) => a.value = this.#customSet.value(\"set\", value, a));\r\n else return this.#customSet.value(\"get\", this.#raw[0].value, this.#raw[0]);\r\n return this;\r\n }\r\n /**\r\n * Serialize this element to send it over network, returns 3 formats `json`, `url` & `fd`(formData) \r\n * @method EyeElement#serialize\r\n * @param {{inputs: Array<string>}} opts\r\n * @returns {{json: Object, url: String, fd: FormData}}\r\n */\r\n serialize(opts) {\r\n opts = opts || {};\r\n let {\r\n inputs = [\"input\", \"textarea\", \"select\"],\r\n } = opts;\r\n let out = {\r\n json: {},\r\n url: \"\",\r\n fd: new FormData()\r\n };\r\n this.#raw[0].querySelectorAll(inputs.join(','))\r\n .forEach((inp, i) => {\r\n let name = inp.name || inp.dataset.name;\r\n let value = inp.value || inp.textContent;\r\n if (typeof opts[name] === \"function\") value = opts[name](inp);\r\n\r\n if (inp.type == \"file\")\r\n inp.files.forEach(file => {\r\n out.fd.append(name, file);\r\n })\r\n else {\r\n out.json[name] = value;\r\n out.fd.append(name, value);\r\n }\r\n })\r\n\r\n out.url = new URLSearchParams(out.json).toString();\r\n return out;\r\n }\r\n /**\r\n * Redefine the way `.text` or `.val` set or get data to and from this element.\r\n * @method EyeElement#redefine\r\n * @param {\"text\" | \"value\"} type \r\n * @param {(action: \"set\" | \"get\", value: *, elm: EyeElement) => *} process \r\n * @returns {EyeElement}\r\n */\r\n redefine(type, process) {\r\n if ([\"text\", \"value\"].includes(type) && typeof process == \"function\")\r\n this.#customSet[type] = process;\r\n return this;\r\n }\r\n /**\r\n * Animate current object \r\n * @method EyeElement#animate\r\n * @param {Array<Keyframe>} keyframes \r\n * @param {KeyframeAnimationOptions} opts \r\n * @returns {Array<Animation>|Animation}\r\n */\r\n animate(keyframes, opts) {\r\n /**\r\n * @type {Array<Animation>}\r\n */\r\n let anmts = [];\r\n opts.duration = opts.duration || 1000;\r\n this.each((elm, i) => {\r\n anmts.push(elm.animate(keyframes, opts));\r\n })\r\n return anmts.length == 1 ? anmts[0] : anmts;\r\n }\r\n\r\n /**\r\n * Find first element position within parent element\r\n * @method EyeElement#position\r\n * @returns {number}\r\n */\r\n position() {\r\n let pos = -1;\r\n for (let i = 0; i < this.#raw[0].parentNode.children.length; i++) {\r\n const child = this.#raw[0].parentNode.children[i];\r\n if (this.#raw[0].isSameNode(child)) {\r\n pos = i;\r\n break;\r\n }\r\n }\r\n return pos;\r\n }\r\n};\r\n\r\n/**\r\n * Creates or select nodes using css selectors, offering a pack of useful functions to use around your code!\r\n * @param {String} tag\r\n * @param {AttrMap} attrs\r\n * @param {Object} css CSS styles to be applied to the element.\r\n * @returns {EyeElement}\r\n */\r\nfunction e(tag, attrs, css) {\r\n if (typeof tag === \"string\" && tag.indexOf(\"model:\") === 0 || tag === \"model\") {\r\n if (!attrs) return console.error(\"[EyeJS] Model creation requires parameter 'attr' as prototype, none delivered!\");\r\n\r\n tag = tag.split(\":\");\r\n let cls = [\"eye-model\"];\r\n if (tag[1])\r\n cls = cls.concat(tag[1].split(\" \").filter(a => a != \"\"));\r\n // creating a model\r\n let model = e(\"<div>\", {\r\n class: cls.join(\" \"),\r\n });\r\n\r\n let sets = cmcl(model, attrs);\r\n\r\n /**\r\n * @param {string} attrs\r\n * @returns {ModelEyeElement}\r\n */\r\n return (attrs) => {\r\n let copy = e(model.clone(attrs?.parent));\r\n // define & attach the refresh function\r\n copy.refresh = function (attrs = {}) {\r\n let def = attrs.default === false ? false : true;\r\n sets.forEach((item) => {\r\n if (def === true || (!def && attrs.hasOwnProperty(item.name)))\r\n item.set(copy, attrs[item.name]);\r\n });\r\n return this;\r\n };\r\n return copy.refresh(attrs);\r\n };\r\n } else {\r\n let ne = new EyeElement(tag, attrs, css);\r\n return ne.length === 0 ? null : ne;\r\n }\r\n}\r\n\r\n// gloablly exposed\r\nwindow.e = e;\r\nwindow.EyeElement = EyeElement;\r\nexport default e;\r\n"],"names":[],"mappings":"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"}
package/dist/eye.esm.js CHANGED
@@ -718,23 +718,29 @@ class EyeElement {
718
718
  return this;
719
719
  }
720
720
  /**
721
- * Insert element after this one
721
+ * Insert element after this one, or return the one lies there
722
722
  * @method EyeElement#after
723
723
  * @param {EyeElement|HTMLElement} elm
724
- * @returns {EyeElement}
724
+ * @param {AttrMap} attr
725
+ * @returns {EyeElement|HTMLElement}
725
726
  */
726
- after(elm) {
727
- this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);
727
+ after(elm, attr) {
728
+ if (elm)
729
+ this.#raw[0].after(elm instanceof EyeElement ? elm.raw[0] : elm);
730
+ else return this.#raw[0].nextElementSibling ? e(this.#raw[0].nextElementSibling, attr) : null;
728
731
  return this;
729
732
  }
730
733
  /**
731
- * Insert element before this one
734
+ * Insert element before this one, or return the one lies there
732
735
  * @method EyeElement#before
733
736
  * @param {EyeElement|HTMLElement} elm
734
- * @returns {EyeElement}
737
+ * @param {AttrMap} attr
738
+ * @returns {EyeElement|HTMLElement}
735
739
  */
736
- before(elm) {
737
- this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);
740
+ before(elm, attr) {
741
+ if (elm)
742
+ this.#raw[0].before(elm instanceof EyeElement ? elm.raw[0] : elm);
743
+ else return this.#raw[0].previousElementSibling ? e(this.#raw[0].previousElementSibling, attr) : null
738
744
  return this;
739
745
  }
740
746
  /**