eyjs 8.4.0 → 8.5.0

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,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [8.5.0] - 2026-03-22
4
+
5
+ ### Added
6
+
7
+ - New `domReady` function to attach a callback once DOMContentLoaded event is triggered!
8
+ - New `eDelegate` function to attach document level events listeners!
9
+ - New `tdata` function to Set/Get dataset values of elements
10
+
11
+ ### Fixed
12
+
13
+ - `e` doesn't works with SVG elements and document object, fixed!
14
+
3
15
  ## [8.4.0] - 2026-02-09
4
16
 
5
17
  ### Added
package/dist/eye.cjs.js CHANGED
@@ -416,7 +416,7 @@ class EyeElement {
416
416
  */
417
417
  constructor(selector, attrs, css) {
418
418
  let _this = this;
419
- if (selector instanceof HTMLElement) {
419
+ if (selector instanceof HTMLElement || selector instanceof SVGAElement || selector instanceof Document) {
420
420
  this.#raw = [selector];
421
421
  } else if (htmlElements.includes(selector)) {
422
422
  // creating a new element
@@ -509,7 +509,7 @@ class EyeElement {
509
509
 
510
510
  /**
511
511
  * Raw html element
512
- * @type {HTMLElement}
512
+ * @type {[HTMLElement]}
513
513
  */
514
514
  get raw() {
515
515
  return this.#raw;
@@ -588,6 +588,19 @@ class EyeElement {
588
588
  }
589
589
  return this;
590
590
  }
591
+ /**
592
+ * Set or get element's dataset values, this function similar to vanillaJS `element.dataset.[key] = [value]`
593
+ * @param {string} key
594
+ * @param {string|any} value
595
+ * @returns {EyeElement|string}
596
+ */
597
+ tdata(key, value) {
598
+ if (value === undefined) return this.raw[0].dataset[key]
599
+ this.each((elm) => {
600
+ elm.dataset[key] = value;
601
+ });
602
+ return this
603
+ }
591
604
 
592
605
  /**
593
606
  * Set or get an attribute value
@@ -1015,7 +1028,7 @@ class EyeElement {
1015
1028
  return this;
1016
1029
  }
1017
1030
  /**
1018
- * Activate/disactive different pointer features such as PointerLock, pointerCapture...
1031
+ * Activate/disactive different pointer features such as PointerLock, pointerCapture..
1019
1032
  * @method EyeElement#pointer
1020
1033
  * @param {"capture" | "lock"} action
1021
1034
  * @param {boolean} status
@@ -1064,7 +1077,7 @@ class EyeElement {
1064
1077
  return this;
1065
1078
  }
1066
1079
  /**
1067
- * Serialize this element to send it over network, returns 3 formats `json`, `url` & `fd`(formData)
1080
+ * Serialize form element(or any other element) to send it data over the network
1068
1081
  * @method EyeElement#serialize
1069
1082
  * @param {{inputs: Array<string>}} opts
1070
1083
  * @returns {{json: Object, url: String, fd: FormData}}
@@ -1081,8 +1094,8 @@ class EyeElement {
1081
1094
  };
1082
1095
  this.#raw[0].querySelectorAll(inputs.join(','))
1083
1096
  .forEach((inp, i) => {
1084
- let name = inp.name || inp.dataset.name;
1085
- let value = inp.value || inp.textContent;
1097
+ let name = "name" in inp ? inp.name : inp.dataset.name;
1098
+ let value = "value" in inp ? inp.value : inp.textContent;
1086
1099
  if (typeof opts[name] === "function") value = opts[name](inp);
1087
1100
 
1088
1101
  if (inp.type == "file")
@@ -1218,6 +1231,33 @@ function _ife(selector, callback) {
1218
1231
  } else return false
1219
1232
  }
1220
1233
 
1234
+ /**
1235
+ * Execute callback once DOMContentLoaded event is triggered, similar
1236
+ * to `document.addEventListener('DOMContentLoaded')`
1237
+ * @param {(ev: Event)=>void} cb
1238
+ */
1239
+ function domReady(cb) {
1240
+ document.addEventListener('DOMContentLoaded', function (ev) {
1241
+ cb(ev);
1242
+ });
1243
+ }
1244
+
1245
+ /**
1246
+ * Attach document level delegated event listener, this is usefull to attach callbacks
1247
+ * for dynamic content where elements changes like table content, refreshable cards list...
1248
+ * @param {string} event
1249
+ * @param {string} selector
1250
+ * @param {(ev: Event)=>void} callback
1251
+ */
1252
+ function eDelegate(event, selector, callback) {
1253
+ document.addEventListener(event, function (ev) {
1254
+ const t = ev.target.closest(selector);
1255
+ if (t) {
1256
+ callback(ev, e(t));
1257
+ }
1258
+ });
1259
+ }
1260
+
1221
1261
  // gloablly exposed
1222
1262
  window.e = e;
1223
1263
  window.EyeElement = EyeElement;
@@ -1225,4 +1265,6 @@ window.EyeElement = EyeElement;
1225
1265
  exports.EyeElement = EyeElement;
1226
1266
  exports._ife = _ife;
1227
1267
  exports.default = e;
1268
+ exports.domReady = domReady;
1269
+ exports.eDelegate = eDelegate;
1228
1270
  //# sourceMappingURL=eye.cjs.js.map
@@ -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\nconst quickexec = [\"click\", \"focus\", \"blur\", \"select\", \"submit\", \"reset\"];\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 if (elm) elm[0].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} ev\r\n */\r\n function handler(ev) {\r\n let name = ev.type,\r\n listeners = _this.#dlgListeners,\r\n _etarget = ev.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 const targetElement = e(_etarget.closest(target));\r\n // we hitting the target\r\n callback.call(_etarget.closest(target), ev, targetElement, 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 if (quickexec.includes(ev))\r\n _this.each(elm => elm[ev]());\r\n else _this.trigger(ev);\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 = \"\";\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 html == 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 = \"\";\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 text == 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 = null;\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 value == undefined ? out : this;\r\n }\r\n /**\r\n * Removes attribute/s of this element\r\n * @param {string|string[]} attrName\r\n * @returns {EyeElement}\r\n */\r\n rAttr(attrName) {\r\n if (attrName) {\r\n if (!Array.isArray(attrName)) attrName = [attrName];\r\n this.each(elm => {\r\n attrName.forEach(attr => {\r\n elm.removeAttribute(attr);\r\n })\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|AttrMap} elm \r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n after(elm) {\r\n if (elm instanceof HTMLElement || elm instanceof EyeElement || elm instanceof Node)\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, elm) : 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|AttrMap} elm \r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n before(elm) {\r\n if (elm instanceof HTMLElement || elm instanceof EyeElement || elm instanceof Node)\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, elm) : 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 * Cheap check for previous/next/child elements by selector\r\n * @param {\"next\"|\"previous\"|string} desc \r\n * @returns {boolean}\r\n */\r\n has(selector) {\r\n if (typeof selector === \"string\")\r\n switch (selector) {\r\n case \"next\": return this.#raw[0].nextElementSibling != null\r\n case \"previous\": return this.#raw[0].previousElementSibling != null\r\n default: return this.#raw[0].querySelector(selector) != null\r\n }\r\n else false\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 = null;\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 value == 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, or find and remove a sub element of it\r\n * @method EyeElement#remove\r\n * @param {string?} selector\r\n * @param {()=>void?} cb optionally execute something before removing the selected element\r\n * @returns {EyeElement}\r\n */\r\n remove(selector, cb) {\r\n this.each((elm, idx) => {\r\n if (typeof selector === \"string\")\r\n elm.querySelectorAll(selector).forEach(item => {\r\n if (typeof cb === \"function\") cb(e(item));\r\n item.remove();\r\n });\r\n else elm.remove();\r\n })\r\n return this;\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 {()=>} cb \r\n * @param {{ passive: boolean, capture: boolean, once: boolean, signal: AbortSignal }} opts\r\n * @returns {EyeElement|void}\r\n */\r\n on(ev, cb, opts) {\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 ev.split(\" \")\r\n .forEach(evt => {\r\n this.each((elm) => {\r\n elm.addEventListener(evt, cb, opts);\r\n })\r\n })\r\n\r\n return this;\r\n }\r\n /**\r\n * Attach a delegatable event listener to the subelement of this one\r\n * @param {string} ev\r\n * @param {string} target\r\n * @param {(ev: Event, target: EyeElement, self: EyeElement)=>} cb\r\n */\r\n delegate(ev, target, cb) {\r\n let outsider = null;\r\n ev.split(\" \")\r\n .forEach(evt => {\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 })\r\n\r\n if (outsider !== null)\r\n return console.warn(`[EyeJS] trying to use delegation with an inappropriate event \"${outsider}\"`);\r\n }\r\n /**\r\n * Attach a single time handler, that get auto-removed after first call\r\n * @param {string} ev \r\n * @param {()=>} cb \r\n */\r\n once(ev, cb) {\r\n this.on(ev, cb, { once: true }); // simply\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(ev instanceof Event ? ev : getEvent(ev));\r\n })\r\n return this;\r\n }\r\n /**\r\n * Find one or multiple child elements by `selector`, \r\n * and optionally execute a callback on the fly! \r\n * @method EyeElement#find\r\n * @param {string} selector \r\n * @param {(elm: EyeElement, parent: EyeElement) => void} [cb] \r\n * @returns {Array<HTMLElement>}\r\n */\r\n find(selector, cb) {\r\n let found = [];\r\n this.each((elm, idx) => {\r\n elm.querySelectorAll(selector).forEach(res => {\r\n if (typeof cb === \"function\") cb(e(res), e(elm))\r\n found.push(res)\r\n });\r\n })\r\n return found.length == 0 ? null : 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 * Get drawing context for canvas\r\n * @param {\"2d\"|\"webgl\"|\"webgl2\"|\"bitmaprenderer\"} contextId \r\n * @param {*} contextSettings \r\n * @returns {EyeElement|CanvasRenderingContext2D}\r\n */\r\n getctx(contextId, contextSettings) {\r\n if (typeof this.#raw[0].getContext === \"function\")\r\n return this.#raw[0].getContext(contextId, contextSettings);\r\n return this;\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 if (tag != null) {\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/**\r\n * Similar to `e` yet more condition based, the callback will only execute\r\n * if selector was found within the DOM.\r\n * @param {string} selector\r\n * @param {(elm: EyeElement)=>void} callback\r\n * @return {boolean} whether selector found and callback execute successfuly or not\r\n */\r\nexport function _ife(selector, callback) {\r\n const elm = e(selector);\r\n if (elm) {\r\n callback.call(elm, elm);\r\n return true;\r\n } else return false\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\nconst quickexec = [\"click\", \"focus\", \"blur\", \"select\", \"submit\", \"reset\"];\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 if (elm) elm[0].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 || selector instanceof SVGAElement || selector instanceof Document) {\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} ev\r\n */\r\n function handler(ev) {\r\n let name = ev.type,\r\n listeners = _this.#dlgListeners,\r\n _etarget = ev.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 const targetElement = e(_etarget.closest(target));\r\n // we hitting the target\r\n callback.call(_etarget.closest(target), ev, targetElement, 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 if (quickexec.includes(ev))\r\n _this.each(elm => elm[ev]());\r\n else _this.trigger(ev);\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 = \"\";\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 html == 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 = \"\";\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 text == 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 * Set or get element's dataset values, this function similar to vanillaJS `element.dataset.[key] = [value]`\r\n * @param {string} key \r\n * @param {string|any} value \r\n * @returns {EyeElement|string}\r\n */\r\n tdata(key, value) {\r\n if (value === undefined) return this.raw[0].dataset[key]\r\n this.each((elm) => {\r\n elm.dataset[key] = value\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 = null;\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 value == undefined ? out : this;\r\n }\r\n /**\r\n * Removes attribute/s of this element\r\n * @param {string|string[]} attrName\r\n * @returns {EyeElement}\r\n */\r\n rAttr(attrName) {\r\n if (attrName) {\r\n if (!Array.isArray(attrName)) attrName = [attrName];\r\n this.each(elm => {\r\n attrName.forEach(attr => {\r\n elm.removeAttribute(attr);\r\n })\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|AttrMap} elm \r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n after(elm) {\r\n if (elm instanceof HTMLElement || elm instanceof EyeElement || elm instanceof Node)\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, elm) : 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|AttrMap} elm \r\n * @returns {EyeElement|HTMLElement}\r\n */\r\n before(elm) {\r\n if (elm instanceof HTMLElement || elm instanceof EyeElement || elm instanceof Node)\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, elm) : 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 * Cheap check for previous/next/child elements by selector\r\n * @param {\"next\"|\"previous\"|string} desc \r\n * @returns {boolean}\r\n */\r\n has(selector) {\r\n if (typeof selector === \"string\")\r\n switch (selector) {\r\n case \"next\": return this.#raw[0].nextElementSibling != null\r\n case \"previous\": return this.#raw[0].previousElementSibling != null\r\n default: return this.#raw[0].querySelector(selector) != null\r\n }\r\n else false\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 = null;\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 value == 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, or find and remove a sub element of it\r\n * @method EyeElement#remove\r\n * @param {string?} selector\r\n * @param {()=>void?} cb optionally execute something before removing the selected element\r\n * @returns {EyeElement}\r\n */\r\n remove(selector, cb) {\r\n this.each((elm, idx) => {\r\n if (typeof selector === \"string\")\r\n elm.querySelectorAll(selector).forEach(item => {\r\n if (typeof cb === \"function\") cb(e(item));\r\n item.remove();\r\n });\r\n else elm.remove();\r\n })\r\n return this;\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 {()=>} cb \r\n * @param {{ passive: boolean, capture: boolean, once: boolean, signal: AbortSignal }} opts\r\n * @returns {EyeElement|void}\r\n */\r\n on(ev, cb, opts) {\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 ev.split(\" \")\r\n .forEach(evt => {\r\n this.each((elm) => {\r\n elm.addEventListener(evt, cb, opts);\r\n })\r\n })\r\n\r\n return this;\r\n }\r\n /**\r\n * Attach a delegatable event listener to the subelement of this one\r\n * @param {string} ev\r\n * @param {string} target\r\n * @param {(ev: Event, target: EyeElement, self: EyeElement)=>} cb\r\n */\r\n delegate(ev, target, cb) {\r\n let outsider = null;\r\n ev.split(\" \")\r\n .forEach(evt => {\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 })\r\n\r\n if (outsider !== null)\r\n return console.warn(`[EyeJS] trying to use delegation with an inappropriate event \"${outsider}\"`);\r\n }\r\n /**\r\n * Attach a single time handler, that get auto-removed after first call\r\n * @param {string} ev \r\n * @param {()=>} cb \r\n */\r\n once(ev, cb) {\r\n this.on(ev, cb, { once: true }); // simply\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(ev instanceof Event ? ev : getEvent(ev));\r\n })\r\n return this;\r\n }\r\n /**\r\n * Find one or multiple child elements by `selector`, \r\n * and optionally execute a callback on the fly! \r\n * @method EyeElement#find\r\n * @param {string} selector \r\n * @param {(elm: EyeElement, parent: EyeElement) => void} [cb] \r\n * @returns {Array<HTMLElement>}\r\n */\r\n find(selector, cb) {\r\n let found = [];\r\n this.each((elm, idx) => {\r\n elm.querySelectorAll(selector).forEach(res => {\r\n if (typeof cb === \"function\") cb(e(res), e(elm))\r\n found.push(res)\r\n });\r\n })\r\n return found.length == 0 ? null : 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 form element(or any other element) to send it data over the network\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 = \"name\" in inp ? inp.name : inp.dataset.name;\r\n let value = \"value\" in inp ? 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 * Get drawing context for canvas\r\n * @param {\"2d\"|\"webgl\"|\"webgl2\"|\"bitmaprenderer\"} contextId \r\n * @param {*} contextSettings \r\n * @returns {EyeElement|CanvasRenderingContext2D}\r\n */\r\n getctx(contextId, contextSettings) {\r\n if (typeof this.#raw[0].getContext === \"function\")\r\n return this.#raw[0].getContext(contextId, contextSettings);\r\n return this;\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 if (tag != null) {\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/**\r\n * Similar to `e` yet more condition based, the callback will only execute\r\n * if selector was found within the DOM.\r\n * @param {string} selector\r\n * @param {(elm: EyeElement)=>void} callback\r\n * @return {boolean} whether selector found and callback execute successfuly or not\r\n */\r\nexport function _ife(selector, callback) {\r\n const elm = e(selector);\r\n if (elm) {\r\n callback.call(elm, elm);\r\n return true;\r\n } else return false\r\n}\r\n\r\n/**\r\n * Execute callback once DOMContentLoaded event is triggered, similar \r\n * to `document.addEventListener('DOMContentLoaded')`\r\n * @param {(ev: Event)=>void} cb \r\n */\r\nexport function domReady(cb) {\r\n document.addEventListener('DOMContentLoaded', function (ev) {\r\n cb(ev)\r\n })\r\n}\r\n\r\n/**\r\n * Attach document level delegated event listener, this is usefull to attach callbacks\r\n * for dynamic content where elements changes like table content, refreshable cards list... \r\n * @param {string} event \r\n * @param {string} selector \r\n * @param {(ev: Event)=>void} callback \r\n */\r\nexport function eDelegate(event, selector, callback) {\r\n document.addEventListener(event, function (ev) {\r\n const t = ev.target.closest(selector)\r\n if (t) {\r\n callback(ev, e(t))\r\n }\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
@@ -412,7 +412,7 @@ class EyeElement {
412
412
  */
413
413
  constructor(selector, attrs, css) {
414
414
  let _this = this;
415
- if (selector instanceof HTMLElement) {
415
+ if (selector instanceof HTMLElement || selector instanceof SVGAElement || selector instanceof Document) {
416
416
  this.#raw = [selector];
417
417
  } else if (htmlElements.includes(selector)) {
418
418
  // creating a new element
@@ -505,7 +505,7 @@ class EyeElement {
505
505
 
506
506
  /**
507
507
  * Raw html element
508
- * @type {HTMLElement}
508
+ * @type {[HTMLElement]}
509
509
  */
510
510
  get raw() {
511
511
  return this.#raw;
@@ -584,6 +584,19 @@ class EyeElement {
584
584
  }
585
585
  return this;
586
586
  }
587
+ /**
588
+ * Set or get element's dataset values, this function similar to vanillaJS `element.dataset.[key] = [value]`
589
+ * @param {string} key
590
+ * @param {string|any} value
591
+ * @returns {EyeElement|string}
592
+ */
593
+ tdata(key, value) {
594
+ if (value === undefined) return this.raw[0].dataset[key]
595
+ this.each((elm) => {
596
+ elm.dataset[key] = value;
597
+ });
598
+ return this
599
+ }
587
600
 
588
601
  /**
589
602
  * Set or get an attribute value
@@ -1011,7 +1024,7 @@ class EyeElement {
1011
1024
  return this;
1012
1025
  }
1013
1026
  /**
1014
- * Activate/disactive different pointer features such as PointerLock, pointerCapture...
1027
+ * Activate/disactive different pointer features such as PointerLock, pointerCapture..
1015
1028
  * @method EyeElement#pointer
1016
1029
  * @param {"capture" | "lock"} action
1017
1030
  * @param {boolean} status
@@ -1060,7 +1073,7 @@ class EyeElement {
1060
1073
  return this;
1061
1074
  }
1062
1075
  /**
1063
- * Serialize this element to send it over network, returns 3 formats `json`, `url` & `fd`(formData)
1076
+ * Serialize form element(or any other element) to send it data over the network
1064
1077
  * @method EyeElement#serialize
1065
1078
  * @param {{inputs: Array<string>}} opts
1066
1079
  * @returns {{json: Object, url: String, fd: FormData}}
@@ -1077,8 +1090,8 @@ class EyeElement {
1077
1090
  };
1078
1091
  this.#raw[0].querySelectorAll(inputs.join(','))
1079
1092
  .forEach((inp, i) => {
1080
- let name = inp.name || inp.dataset.name;
1081
- let value = inp.value || inp.textContent;
1093
+ let name = "name" in inp ? inp.name : inp.dataset.name;
1094
+ let value = "value" in inp ? inp.value : inp.textContent;
1082
1095
  if (typeof opts[name] === "function") value = opts[name](inp);
1083
1096
 
1084
1097
  if (inp.type == "file")
@@ -1214,9 +1227,36 @@ function _ife(selector, callback) {
1214
1227
  } else return false
1215
1228
  }
1216
1229
 
1230
+ /**
1231
+ * Execute callback once DOMContentLoaded event is triggered, similar
1232
+ * to `document.addEventListener('DOMContentLoaded')`
1233
+ * @param {(ev: Event)=>void} cb
1234
+ */
1235
+ function domReady(cb) {
1236
+ document.addEventListener('DOMContentLoaded', function (ev) {
1237
+ cb(ev);
1238
+ });
1239
+ }
1240
+
1241
+ /**
1242
+ * Attach document level delegated event listener, this is usefull to attach callbacks
1243
+ * for dynamic content where elements changes like table content, refreshable cards list...
1244
+ * @param {string} event
1245
+ * @param {string} selector
1246
+ * @param {(ev: Event)=>void} callback
1247
+ */
1248
+ function eDelegate(event, selector, callback) {
1249
+ document.addEventListener(event, function (ev) {
1250
+ const t = ev.target.closest(selector);
1251
+ if (t) {
1252
+ callback(ev, e(t));
1253
+ }
1254
+ });
1255
+ }
1256
+
1217
1257
  // gloablly exposed
1218
1258
  window.e = e;
1219
1259
  window.EyeElement = EyeElement;
1220
1260
 
1221
- export { EyeElement, _ife, e as default };
1261
+ export { EyeElement, _ife, e as default, domReady, eDelegate };
1222
1262
  //# sourceMappingURL=eye.esm.js.map