eyjs 6.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eye.umd.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\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\", \"submit\", \"input\", \"change\", \"keydown\", \"keyup\", \"keypress\", \"focusin\", \"focusout\", \"mouseover\", \"mouseout\"];\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 {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 {\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 if (this.#raw.length == 0) return null; // we stop everything here\r\n if (this.length == 1 || s) this.#raw = this.#raw.item(0);\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, elm); // 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\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 instanceof NodeList ? this.#raw.length : 1;\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 let _this = this;\r\n (this.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]]).forEach(([idx, elm]) => {\r\n cb(elm, idx, this);\r\n })\r\n return this;\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 [v1, v2] = action.split(\"/\");\r\n elm.classList.replace(v1, v2);\r\n } else {\r\n elm.classList.add(action.substring(1, action.length));\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\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 let nodes = [];\r\n (Array.isArray(elm) ? elm : [elm]).forEach(item => {\r\n if (item instanceof EyeElement) nodes.push(item.#raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n if (this.#raw instanceof NodeList) {\r\n console.warn(`[EyeJS] beware while using .append with multi selected elements`);\r\n this.#raw.forEach((itm, idx) => {\r\n if (!nodes[idx]) return;\r\n itm.append(nodes[idx]);\r\n })\r\n return this;\r\n }\r\n if (!pos) this.#raw.append(...nodes);\r\n else\r\n switch (pos) {\r\n case \"next\":\r\n case \"after\":\r\n this.#raw.after(...nodes);\r\n break;\r\n case \"previous\":\r\n case \"before\":\r\n this.#raw.before(...nodes);\r\n break;\r\n case \"afterbegin\":\r\n case \"first\":\r\n this.#raw.prepend(...nodes);\r\n break;\r\n case \"beforeend\":\r\n case \"last\":\r\n this.#raw.append(...nodes);\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 instanceof NodeList ? this.#raw.item(0) : this.#raw).after(elm instanceof EyeElement ? elm.raw : 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 instanceof NodeList ? this.#raw.item(0) : this.#raw).before(elm instanceof EyeElement ? elm.raw : 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.push(item.#raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n if (this.#raw instanceof NodeList) {\r\n [...this.#raw.entries()].forEach(([idx, elm]) => {\r\n if (!nodes[idx]) return;\r\n elm.replaceWith(nodes[idx]);\r\n })\r\n } else {\r\n this.#raw.replaceWith(...nodes);\r\n }\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} par\r\n * @returns {EyeElement}\r\n */\r\n parent(par) {\r\n if (par) {\r\n if (!(par instanceof HTMLElement) && !(par 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, idx) => {\r\n par.append(elm);\r\n })\r\n return this;\r\n }\r\n return e(this.#raw instanceof NodeList ? this.#raw.item(0).parentElement : this.#raw.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 : node;\r\n if (this.#raw instanceof NodeList) {\r\n console.warn(`[EyeJS] .is is not functional with multi selected elements`);\r\n return this;\r\n }\r\n if (node === \"connected\") return this.#raw.isConnected;\r\n switch (check) {\r\n case \"same\":\r\n return this.#raw.isSameNode(node);\r\n case \"equal\":\r\n return this.#raw.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 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] mission 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 elms = (this.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]])\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 elms.forEach(([idx, 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 */\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>|EyeElement}\r\n */\r\n clone(parent) {\r\n if (this.#raw instanceof NodeList) {\r\n let list = [];\r\n this.#raw.forEach(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 } else {\r\n let clone = this.#raw.cloneNode(true);\r\n if (parent instanceof HTMLElement || parent instanceof EyeElement) parent.append(clone);\r\n return clone;\r\n }\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 instanceof NodeList ? this.#raw.item(0) : this.#raw).getBoundingClientRect();\r\n else if (type == \"style\")\r\n return getComputedStyle(this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw)\r\n console.error(`[EyeJS] unkown 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 instanceof NodeList ? this.#raw.item(0) : this.#raw)[`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 instanceof NodeList ? this.#raw.item(0) : this.#raw)?.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 let it = (this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw);\r\n if (index === undefined) return it.children.length;\r\n if (it.children[index]) return e(it.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.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]]).forEach(([idx, a]) => a.value = this.#customSet.value(\"set\", value, a));\r\n else {\r\n let it = (this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw);\r\n return this.#customSet.value(\"get\", it.value, it);\r\n }\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 if (this.#raw instanceof HTMLElement) {\r\n let out = {\r\n json: {},\r\n url: \"\",\r\n fd: new FormData()\r\n };\r\n this.#raw.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 } else console.warn(`[EyeJS] this is a multi selection, it's not serializable!`);\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/**\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 return new EyeElement(tag, attrs, css);\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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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).eye={})}(this,(function(e){"use strict";const t=["click","dblclick","mousedown","mouseup","mousemove","mouseenter","mouseleave","mouseover","mouseout","contextmenu","keydown","keypress","keyup","focus","blur","focusin","focusout","submit","change","input","reset","select","touchstart","touchend","touchmove","touchcancel","pointerdown","pointerup","pointermove","pointerenter","pointerleave","pointercancel","dragstart","dragend","dragenter","dragover","dragleave","drop","resize","scroll","load","beforeunload","unload","play","pause","ended","volumechange","timeupdate","copy","cut","paste","animationstart","animationend","animationiteration","transitionstart","transitionend","DOMSubtreeModified","DOMNodeInserted","DOMNodeRemoved","error","hashchange","popstate"],n=["<base>","<head>","<link>","<meta>","<style>","<title>","<body>","<address>","<article>","<aside>","<footer>","<header>","<h1>","<h2>","<h3>","<h4>","<h5>","<h6>","<main>","<nav>","<section>","<blockquote>","<dd>","<div>","<dl>","<dt>","<figcaption>","<figure>","<hr>","<li>","<ol>","<p>","<pre>","<ul>","<a>","<abbr>","<b>","<bdi>","<bdo>","<br>","<cite>","<code>","<data>","<dfn>","<em>","<i>","<kbd>","<mark>","<q>","<rp>","<rt>","<ruby>","<s>","<samp>","<small>","<span>","<strong>","<sub>","<sup>","<time>","<u>","<var>","<wbr>","<area>","<audio>","<img>","<map>","<track>","<video>","<embed>","<iframe>","<object>","<picture>","<portal>","<source>","<canvas>","<noscript>","<script>","<del>","<ins>","<caption>","<col>","<colgroup>","<table>","<tbody>","<td>","<tfoot>","<th>","<thead>","<tr>","<button>","<datalist>","<fieldset>","<form>","<input>","<label>","<legend>","<meter>","<optgroup>","<option>","<output>","<progress>","<select>","<textarea>","<details>","<dialog>","<summary>","<slot>","<template>"];function s(e){let t="";for(let n=0;n<e.length;n++){const s=e[n];s===s.toUpperCase()&&s!==s.toLowerCase()?t+="-"+s:t+=s}return t.toLowerCase()}const r=new WeakMap;function i(e,t){let n=[];for(const s in t){const r=t[s],[a,o]=s.split(":"),[l,...u]=a.split(".");let[h=null,f=null]=(o||"").split("-").map((e=>e.trim())),d=c(l.trim(),{class:u,parent:e,data:o?{value:h}:void 0});o&&h&&n.push({name:h,set(e,t){e.find(`[data-value="${h}"]`).textContent=t??f}}),!r||"object"!=typeof r||r instanceof Array||(n=n.concat(i(d,r)))}return n}let a=["click","submit","input","change","keydown","keyup","keypress","focusin","focusout","mouseover","mouseout"],o=(e,t,n)=>t;class l{#e=null;#t=new Map;#n={value:o,text:o};constructor(e,r,i){let o=this;if(e instanceof HTMLElement)this.#e=e;else if(n.includes(e))this.#e=document.createElement(e.substring(1,e.length-1));else{let t="!"===e.slice(-1);if(this.#e=document.querySelectorAll(t?e.slice(0,-1):e),0==this.#e.length)return null;(1==this.length||t)&&(this.#e=this.#e.item(0))}function c(e){let t=e.type,n=o.#t,s=e.target,r=this;if(n.has(t)){let i=n.get(t);i?.forEach((({callback:t,target:n})=>{s.closest(n)&&t(e,r)}))}}return this.each(((e,t)=>{let n=null;if(r)for(const t in r){const s=r[t];if("class"==t)e.classList.add.apply(e.classList,(s instanceof Array?s:s.split(" ")).filter((e=>""!=e)));else if("text"==t)e.textContent=s;else if("html"==t)e.innerHTML=s;else if("data"==t)for(const t in s)e.dataset[t]=s[t];else"parent"==t?n=s:t in e?e[t]=s:"_"!=t[0]&&e.setAttribute(t,e)}if(i)for(const t in i)-1!=t.indexOf("-")?e.style[t]=i[t]:e.style[s(t)]=i[t];(n instanceof l||n instanceof HTMLElement)&&n.append(e),a.forEach((t=>{e.addEventListener(t,c)}))})),t.forEach((e=>{o[e]=function(t){return t?"function"==typeof t&&o.on(e,t):o.trigger(e),o}})),this}get length(){return this.#e instanceof NodeList?this.#e.length:1}get raw(){return this.#e}each(e){return(this.#e instanceof NodeList?[...this.#e.entries()]:[[0,this.#e]]).forEach((([t,n])=>{e(n,t,this)})),this}html(e){let t;return this.each(((n,s)=>{if(void 0===e)return t=n.innerHTML;n.innerHTML=e})),null!=t?t:this}text(e){let t;return this.each(((n,s)=>{if(void 0===e)return t=this.#n.text("get",n.textContent,n);n.textContent=this.#n.text("set",e,n)})),null!=t?t:this}data(e,t){if(r.has(this)||r.set(this,{}),e){if(null==t)return r.get(this)[e];r.get(this)[e]=t}return this}attr(e,t){let n="";return this.each(((s,r)=>{if(0===e.indexOf("data-")){let[r,i]=e.split("-").map((e=>e.trim()));if(null==t)return n=s.dataset[i];s.dataset[i]=t}else if(e in s){if(null==t)return n=s[e];s[e]=t}else if("_"!=e[0]){if(null==t)return n=s.getAttribute(e);s.setAttribute(e,t)}})),n||this}rAttr(e){return e&&this.each(((t,n)=>{t.removeAttribute(e)})),this}class(e){let t;return this.each(((n,s)=>{if("number"==typeof e)return t=n.classList.item(e);e.split(" ").forEach((e=>{"-"==e[0]?n.classList.remove(e.substring(1,e.length)):"%"==e[0]?n.classList.toggle(e.substring(1,e.length)):"?"==e[0]?t=n.classList.contains(e.substring(1,e.length)):-1!=e.indexOf("/")?([v1,v2]=e.split("/"),n.classList.replace(v1,v2)):n.classList.add(e.substring(1,e.length))}))})),null!=t?t:this}show(e){return this.each(((t,n)=>{t.style.display=e??"inline-block"})),this}hide(e){return this.each(((t,n)=>{e?t.style.opacity=0:t.style.display="none"})),this}append(e,t){let n=[];if((Array.isArray(e)?e:[e]).forEach((e=>{e instanceof l?n.push(e.#e):e instanceof HTMLElement&&n.push(e)})),this.#e instanceof NodeList)return console.warn("[EyeJS] beware while using .append with multi selected elements"),this.#e.forEach(((e,t)=>{n[t]&&e.append(n[t])})),this;if(t)switch(t){case"next":case"after":this.#e.after(...n);break;case"previous":case"before":this.#e.before(...n);break;case"afterbegin":case"first":this.#e.prepend(...n);break;case"beforeend":case"last":this.#e.append(...n)}else this.#e.append(...n);return this}after(e){return(this.#e instanceof NodeList?this.#e.item(0):this.#e).after(e instanceof l?e.raw:e),this}before(e){return(this.#e instanceof NodeList?this.#e.item(0):this.#e).before(e instanceof l?e.raw:e),this}replaceWith(...e){let t=[];return(Array.isArray(e)?e:[e]).forEach((e=>{e instanceof l?t.push(e.#e):e instanceof HTMLElement&&t.push(e)})),this.#e instanceof NodeList?[...this.#e.entries()].forEach((([e,n])=>{t[e]&&n.replaceWith(t[e])})):this.#e.replaceWith(...t),this}parent(e){if(e){if(!(e instanceof HTMLElement||e instanceof l))throw new Error("[EyeJS] Unable to append current element to parent because it's not HTMLElement");return this.each(((t,n)=>{e.append(t)})),this}return c(this.#e instanceof NodeList?this.#e.item(0).parentElement:this.#e.parentElement)}is(e,t){if(e=e instanceof l?e.#e:e,this.#e instanceof NodeList)return console.warn("[EyeJS] .is is not functional with multi selected elements"),this;if("connected"===e)return this.#e.isConnected;switch(t){case"same":return this.#e.isSameNode(e);case"equal":return this.#e.isEqualNode(e);default:return console.error(`[EyeJS] Unknown check "${t}", possible values are ["same","equal","connected"]`),!1}}css(e,t){if(e){let n;return e=s(e),this.each(((s,r)=>{if(void 0===t)return n=s.style[e];s.style[e]=t})),null!=n?n:this}return console.error('[EyeJS] mission argument "attr" in function .css')}remove(){return this.each(((e,t)=>{e.remove()})),this}on(e,t,n){e=e.split(" ");let s="string"==typeof t?t:null,r="function"==typeof t?t:n,i=this;if("function"!=typeof r)return console.error("[EyeJS] .on method is missing the actuall callback `cb` or not of type function");let o=this.#e instanceof NodeList?[...this.#e.entries()]:[[0,this.#e]],l=null;return e.forEach((e=>{if(s){if(!a.includes(e))return l=e;i.#t.has(e)||i.#t.set(e,new Set),i.#t.get(e).add({callback:r,target:s})}else o.forEach((([t,n])=>{n.addEventListener(e,r)}))})),null!==l?console.error(`[EyeJS] trying to use delegation for an inappropriate event "${l}"`):this}off(e,t){let n=this.#t;if("function"!=typeof t)return console.error("[EyeJS] .off method is missing the actuall callback `cb` or not of type function");e=e.split(" "),this.each(((n,s)=>{e.forEach((e=>n.removeEventListener(e,t)))})),e.forEach((e=>{if(n.has(e)){let s=n.get(e);for(const e of s)t===e.callback&&s.delete(e)}}))}trigger(e){return this.each(((t,n)=>{t.dispatchEvent(function(e,t={}){switch(e){case"click":case"dblclick":case"mousedown":case"mouseup":case"mousemove":case"mouseenter":case"mouseleave":case"mouseover":case"mouseout":return new MouseEvent(e,t);case"pointerdown":case"pointerup":case"pointermove":case"pointerenter":case"pointerleave":case"pointerover":case"pointerout":return new PointerEvent(e,t);case"keydown":case"keyup":case"keypress":return new KeyboardEvent(e,t);case"focus":case"blur":case"focusin":case"focusout":return new FocusEvent(e,t);case"input":case"change":case"submit":case"reset":return new Event(e,t);case"wheel":return new WheelEvent(e,t);case"copy":case"cut":case"paste":return new ClipboardEvent(e,t);case"scroll":case"resize":return new UIEvent(e,t);default:return new CustomEvent(e,t)}}(e))})),this}find(e){let t=[];return this.each(((n,s)=>{n.querySelectorAll(e).forEach((e=>t.push(e)))})),1==t.length?t[0]:t}clone(e){if(this.#e instanceof NodeList){let t=[];return this.#e.forEach((e=>{t.push(e.cloneNode(!0))})),(e instanceof HTMLElement||e instanceof l)&&t.forEach((t=>e.append(t))),t}{let t=this.#e.cloneNode(!0);return(e instanceof HTMLElement||e instanceof l)&&e.append(t),t}}compute(e){return"bounds"===(e=e||"bounds")?(this.#e instanceof NodeList?this.#e.item(0):this.#e).getBoundingClientRect():"style"==e?getComputedStyle(this.#e instanceof NodeList?this.#e.item(0):this.#e):void console.error(`[EyeJS] unkown type "${e}" in function .compute, possible values are "bounds" "style"`)}client(e){return["width","height","left","top"].includes(e)?(this.#e instanceof NodeList?this.#e.item(0):this.#e)[`client${e[0].toUpperCase()}${e.substring(1,e.length)}`]:(console.error(`[EyeJS] Unknown client* attribute "${e}" in .client(attr)`),this)}pointer(e,t,n){return this.each(((s,r)=>{"capture"===e?!0===t?s.setPointerCapture(n):s.releasePointerCapture(n):"lock"===e&&(!0===t?s.requestPointerLock():document.exitPointerLock())})),this}get childlen(){return(this.#e instanceof NodeList?this.#e.item(0):this.#e)?.children.length}child(e){let t=this.#e instanceof NodeList?this.#e.item(0):this.#e;return void 0===e?t.children.length:t.children[e]?c(t.children[e]):null}val(e){if(null==e){let e=this.#e instanceof NodeList?this.#e.item(0):this.#e;return this.#n.value("get",e.value,e)}return(this.#e instanceof NodeList?[...this.#e.entries()]:[[0,this.#e]]).forEach((([t,n])=>n.value=this.#n.value("set",e,n))),this}serialize(e){e=e||{};let{inputs:t=["input","textarea","select"]}=e;if(this.#e instanceof HTMLElement){let n={json:{},url:"",fd:new FormData};return this.#e.querySelectorAll(t.join(",")).forEach(((t,s)=>{let r=t.name||t.dataset.name,i=t.value||t.textContent;"function"==typeof e[r]&&(i=e[r](t)),"file"==t.type?t.files.forEach((e=>{n.fd.append(r,e)})):(n.json[r]=i,n.fd.append(r,i))})),n.url=new URLSearchParams(n.json).toString(),n}console.warn("[EyeJS] this is a multi selection, it's not serializable!")}redefine(e,t){return["text","value"].includes(e)&&"function"==typeof t&&(this.#n[e]=t),this}animate(e,t){let n=[];return t.duration=t.duration||1e3,this.each(((s,r)=>{n.push(s.animate(e,t))})),1==n.length?n[0]:n}}function c(e,t,n){if("string"==typeof e&&0===e.indexOf("model:")||"model"===e){if(!t)return console.error("[EyeJS] Model creation requires parameter 'attr' as prototype, none delivered!");let n=["eye-model"];(e=e.split(":"))[1]&&(n=n.concat(e[1].split(" ").filter((e=>""!=e))));let s=c("<div>",{class:n.join(" ")}),r=i(s,t);return e=>{let t=c(s.clone(e?.parent));return t.refresh=function(e={}){let n=!1!==e.default;return r.forEach((s=>{(!0===n||!n&&e.hasOwnProperty(s.name))&&s.set(t,e[s.name])})),this},t.refresh(e)}}return new l(e,t,n)}window.e=c,window.EyeElement=l,e.EyeElement=l,e.default=c,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=eye.umd.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eye.umd.min.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\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\", \"submit\", \"input\", \"change\", \"keydown\", \"keyup\", \"keypress\", \"focusin\", \"focusout\", \"mouseover\", \"mouseout\"];\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 {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 {\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 if (this.#raw.length == 0) return null; // we stop everything here\r\n if (this.length == 1 || s) this.#raw = this.#raw.item(0);\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, elm); // 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\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 instanceof NodeList ? this.#raw.length : 1;\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 let _this = this;\r\n (this.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]]).forEach(([idx, elm]) => {\r\n cb(elm, idx, this);\r\n })\r\n return this;\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 [v1, v2] = action.split(\"/\");\r\n elm.classList.replace(v1, v2);\r\n } else {\r\n elm.classList.add(action.substring(1, action.length));\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\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 let nodes = [];\r\n (Array.isArray(elm) ? elm : [elm]).forEach(item => {\r\n if (item instanceof EyeElement) nodes.push(item.#raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n if (this.#raw instanceof NodeList) {\r\n console.warn(`[EyeJS] beware while using .append with multi selected elements`);\r\n this.#raw.forEach((itm, idx) => {\r\n if (!nodes[idx]) return;\r\n itm.append(nodes[idx]);\r\n })\r\n return this;\r\n }\r\n if (!pos) this.#raw.append(...nodes);\r\n else\r\n switch (pos) {\r\n case \"next\":\r\n case \"after\":\r\n this.#raw.after(...nodes);\r\n break;\r\n case \"previous\":\r\n case \"before\":\r\n this.#raw.before(...nodes);\r\n break;\r\n case \"afterbegin\":\r\n case \"first\":\r\n this.#raw.prepend(...nodes);\r\n break;\r\n case \"beforeend\":\r\n case \"last\":\r\n this.#raw.append(...nodes);\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 instanceof NodeList ? this.#raw.item(0) : this.#raw).after(elm instanceof EyeElement ? elm.raw : 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 instanceof NodeList ? this.#raw.item(0) : this.#raw).before(elm instanceof EyeElement ? elm.raw : 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.push(item.#raw);\r\n else if (item instanceof HTMLElement) nodes.push(item)\r\n })\r\n if (this.#raw instanceof NodeList) {\r\n [...this.#raw.entries()].forEach(([idx, elm]) => {\r\n if (!nodes[idx]) return;\r\n elm.replaceWith(nodes[idx]);\r\n })\r\n } else {\r\n this.#raw.replaceWith(...nodes);\r\n }\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} par\r\n * @returns {EyeElement}\r\n */\r\n parent(par) {\r\n if (par) {\r\n if (!(par instanceof HTMLElement) && !(par 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, idx) => {\r\n par.append(elm);\r\n })\r\n return this;\r\n }\r\n return e(this.#raw instanceof NodeList ? this.#raw.item(0).parentElement : this.#raw.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 : node;\r\n if (this.#raw instanceof NodeList) {\r\n console.warn(`[EyeJS] .is is not functional with multi selected elements`);\r\n return this;\r\n }\r\n if (node === \"connected\") return this.#raw.isConnected;\r\n switch (check) {\r\n case \"same\":\r\n return this.#raw.isSameNode(node);\r\n case \"equal\":\r\n return this.#raw.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 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] mission 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 elms = (this.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]])\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 elms.forEach(([idx, 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 */\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>|EyeElement}\r\n */\r\n clone(parent) {\r\n if (this.#raw instanceof NodeList) {\r\n let list = [];\r\n this.#raw.forEach(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 } else {\r\n let clone = this.#raw.cloneNode(true);\r\n if (parent instanceof HTMLElement || parent instanceof EyeElement) parent.append(clone);\r\n return clone;\r\n }\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 instanceof NodeList ? this.#raw.item(0) : this.#raw).getBoundingClientRect();\r\n else if (type == \"style\")\r\n return getComputedStyle(this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw)\r\n console.error(`[EyeJS] unkown 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 instanceof NodeList ? this.#raw.item(0) : this.#raw)[`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 instanceof NodeList ? this.#raw.item(0) : this.#raw)?.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 let it = (this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw);\r\n if (index === undefined) return it.children.length;\r\n if (it.children[index]) return e(it.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.#raw instanceof NodeList ? [...this.#raw.entries()] : [[0, this.#raw]]).forEach(([idx, a]) => a.value = this.#customSet.value(\"set\", value, a));\r\n else {\r\n let it = (this.#raw instanceof NodeList ? this.#raw.item(0) : this.#raw);\r\n return this.#customSet.value(\"get\", it.value, it);\r\n }\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 if (this.#raw instanceof HTMLElement) {\r\n let out = {\r\n json: {},\r\n url: \"\",\r\n fd: new FormData()\r\n };\r\n this.#raw.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 } else console.warn(`[EyeJS] this is a multi selection, it's not serializable!`);\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/**\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 return new EyeElement(tag, attrs, css);\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":["events","htmlElements","flat","word","n","i","length","t","toUpperCase","toLowerCase","localdata","WeakMap","cmcl","parent","layer","obj","key","subcontent","def","_set","split","tagName","cls","_set_name","_set_default","map","a","trim","elm","e","class","data","value","undefined","push","name","set","find","textContent","Array","concat","delegationEvents","normalSetterGetter","action","v","EyeElement","raw","dlgListeners","Map","customSet","text","constructor","selector","attrs","css","_this","this","HTMLElement","includes","document","createElement","substring","s","slice","querySelectorAll","item","handler","type","listeners","_etarget","target","me","has","cbs","get","forEach","callback","closest","each","idx","parentElm","classList","add","apply","filter","innerHTML","k","dataset","setAttribute","indexOf","style","append","ev","addEventListener","cb","on","trigger","NodeList","entries","html","out","attr","val","getAttribute","rAttr","attrName","removeAttribute","actions","remove","toggle","contains","v1","v2","replace","show","display","hide","opacity","pos","nodes","isArray","console","warn","itm","after","before","prepend","replaceWith","elms","par","Error","parentElement","is","node","check","isConnected","isSameNode","isEqualNode","error","arg2","arg3","outsider","evt","Set","off","removeEventListener","delete","dispatchEvent","options","MouseEvent","PointerEvent","KeyboardEvent","FocusEvent","Event","WheelEvent","ClipboardEvent","UIEvent","CustomEvent","getEvent","found","res","clone","list","nd","cloneNode","el","compute","getBoundingClientRect","getComputedStyle","client","pointer","status","pid","setPointerCapture","releasePointerCapture","requestPointerLock","exitPointerLock","childlen","children","child","index","it","serialize","opts","inputs","json","url","fd","FormData","join","inp","files","file","URLSearchParams","toString","redefine","process","animate","keyframes","anmts","duration","tag","model","sets","copy","refresh","default","hasOwnProperty","window"],"mappings":"2OAsFA,MAAMA,EAAS,CAEb,QACA,WACA,YACA,UACA,YACA,aACA,aACA,YACA,WACA,cAGA,UACA,WACA,QAGA,QACA,OACA,UACA,WAGA,SACA,SACA,QACA,QACA,SAGA,aACA,WACA,YACA,cAGA,cACA,YACA,cACA,eACA,eACA,gBAGA,YACA,UACA,YACA,WACA,YACA,OAGA,SACA,SACA,OACA,eACA,SAGA,OACA,QACA,QACA,eACA,aAGA,OACA,MACA,QAGA,iBACA,eACA,qBACA,kBACA,gBAGA,qBACA,kBACA,iBAGA,QACA,aACA,YAGIC,EAAe,CAEnB,SACA,SACA,SACA,SACA,UACA,UAGA,SACA,YACA,YACA,UACA,WACA,WACA,OACA,OACA,OACA,OACA,OACA,OACA,SACA,QACA,YAGA,eACA,OACA,QACA,OACA,OACA,eACA,WACA,OACA,OACA,OACA,MACA,QACA,OAGA,MACA,SACA,MACA,QACA,QACA,OACA,SACA,SACA,SACA,QACA,OACA,MACA,QACA,SACA,MACA,OACA,OACA,SACA,MACA,SACA,UACA,SACA,WACA,QACA,QACA,SACA,MACA,QACA,QAGA,SACA,UACA,QACA,QACA,UACA,UAGA,UACA,WACA,WACA,YACA,WACA,WAGA,WACA,aACA,WAGA,QACA,QAGA,YACA,QACA,aACA,UACA,UACA,OACA,UACA,OACA,UACA,OAGA,WACA,aACA,aACA,SACA,UACA,UACA,WACA,UACA,aACA,WACA,WACA,aACA,WACA,aAGA,YACA,WACA,YAGA,SACA,cAGF,SAASC,EAAKC,GACZ,IAAIC,EAAI,GACR,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAAK,CACpC,MAAME,EAAIJ,EAAKE,GACXE,IAAMA,EAAEC,eAAiBD,IAAMA,EAAEE,cAAeL,GAAK,IAAMG,EAC1DH,GAAKG,CACX,CACD,OAAOH,EAAEK,aACX,CAEA,MAAMC,EAAY,IAAIC,QAQtB,SAASC,EAAKC,EAAQC,GACpB,IAAIC,EAAM,GACV,IAAK,MAAMC,KAAOF,EAAO,CACvB,MAAMG,EAAa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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "eyjs",
3
+ "version": "6.0.0",
4
+ "description": "Library that make document manipulation a lot easier",
5
+ "main": "./src/eye.js",
6
+ "module": "dist/eye.esm.js",
7
+ "browser": "dist/eye.umd.min.js",
8
+ "exports": {
9
+ "import": "./dist/eye.esm.js",
10
+ "require": "./dist/eye.cjs.js"
11
+ },
12
+ "scripts": {
13
+ "build": "rollup -c"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/yousef312/eyejs.git"
18
+ },
19
+ "keywords": [
20
+ "selector",
21
+ "elements",
22
+ "html",
23
+ "div",
24
+ "span",
25
+ "p",
26
+ "br",
27
+ "section",
28
+ "article",
29
+ "remove",
30
+ "append"
31
+ ],
32
+ "bugs": {
33
+ "url": "https://github.com/yousef312/eyejs/issues"
34
+ },
35
+ "homepage": "https://github.com/yousef312/eyejs#readme",
36
+ "author": "Yousef Neji",
37
+ "license": "MIT",
38
+ "devDependencies": {
39
+ "@rollup/plugin-commonjs": "^28.0.5",
40
+ "@rollup/plugin-node-resolve": "^16.0.1",
41
+ "@rollup/plugin-terser": "^0.4.4",
42
+ "jcall": "^1.0.0",
43
+ "rollup": "^4.43.0"
44
+ },
45
+ "dependencies": {
46
+ "eyeejs": "^2.0.1"
47
+ }
48
+ }
package/readme.md ADDED
@@ -0,0 +1,212 @@
1
+ # Eye.js
2
+ Fasten your production and unleash the power of `eye` or `e`, manipulate DOM elements with ease while keeping your code organized and well readable.
3
+
4
+ yeap that's me! [@yousef_neji](https://github.com/yousef312)
5
+
6
+ ## CHANGELOG
7
+
8
+ Check changelog for more informations
9
+ [check](/changelog.md)
10
+
11
+ ## How to?
12
+ Import first
13
+
14
+ ```JavaScript
15
+ // commonjs
16
+ var e = require('eyjs');
17
+
18
+ // ESM
19
+ import e from "eyjs";
20
+ ```
21
+
22
+ Selecting an element
23
+ ```JavaScript
24
+ // div id="bar"
25
+ let bar = e("div#bar");
26
+ // all spans with class="list-item"
27
+ let listItem = e("span.list-item");
28
+ // all elements with class ".fools"
29
+ let fools = e(".fools");
30
+ // using ! only return the first occurence
31
+ let firstButton = e(".btns!");
32
+ ```
33
+
34
+ Creating elements
35
+ ```JavaScript
36
+ let baron = e("<div>",{
37
+ text: "leave",
38
+ parent: bar,
39
+ class: "btn button_dark", // also accepts array for multiple class setting at once or string concatenation of them with spaces between
40
+ data: { // setting dataset values
41
+ index: 12,
42
+ manMap: "off"
43
+ }
44
+ },{
45
+ backgroundColor: "red",
46
+ color: "white"
47
+ })
48
+ ```
49
+
50
+ Extra functionalities
51
+ ```JavaScript
52
+ // the most amazing functionalities is that u can chain calls
53
+ baron
54
+ .hide() // display: none
55
+ .show(customStyle); // display: inline-block or custom style
56
+
57
+ baron
58
+ .data("name","yousef neji"), // more powerfull than dataset, using WeakMaps!
59
+ .data("name"); // deleting a key
60
+
61
+ baron.attr("contentEditable","true"); // manipulating atributes
62
+ baron.attr("style",false); // `false` will remove the attribute `style`
63
+ baron.rAttr("style"); // or you could simply use rAttr
64
+ baron.attr("data-index"); // setting or getting dataset values
65
+
66
+ baron.on("click",cb); // events handling
67
+ baron.click(cb); // triggering or handling events
68
+
69
+ baron.child(0); // getting child number 0
70
+ baron.childlen // getting children length
71
+
72
+ baron.client("width") // get client specific informations "width" "height" "left" or "top"
73
+ ```
74
+
75
+ ## Redefine set/get features of .text and .val
76
+
77
+ You can modify the way you use `.text` and `.val` using `.redefine`
78
+
79
+ ```JavaScript
80
+ let customInp = e('div',{ class: "custom-inp", parent: form });
81
+
82
+ customInp.redefine("text",(action, value, elm)=>{
83
+ if(action == "set"){
84
+ return value.join(" || ");
85
+ } else if(action === "get") {
86
+ return value.split(" || ");
87
+ }
88
+ })
89
+ ```
90
+
91
+ ## Serializing form elements fn `.serialize`( param : opts )
92
+
93
+ Serializing is transcoding form inputs data into an appropriate string format that you can send over the network to the server.
94
+
95
+ The function will select all sub inputs, select, textarea elements and return their values, in order to narrow the selection you can pre-define the inputs you want to select in `opts.inputs`, which also offers `custom-input` & `custom-getter` as follow:
96
+ - `custom-inputs`: When your form contains custom inputs(div with special input features for example), you define them in the `opts.inputs` by a selector like `.special-input`, `#specialinp`... etc.
97
+ - `custom-getters`: the naming convention is only for explainatory purpose, this feature basically nameless, It's the ability to provide a custom way to subtract the data of certain input/custom, by defining a function with the name of that input/custom, here's how u do it:
98
+ - `opts.[fieldname]`: (inp) => inp.child(0).val();
99
+
100
+ ```html
101
+ <form class="createUser">
102
+ <input type="text" name="username">
103
+ <input type="password" name="password">
104
+ <div data-name="hooby" class="custom-input" contentEditable>
105
+ user hobbies:
106
+ <div class="list">
107
+ <span>singing</span>
108
+ <span>dancing</span>
109
+ <span>writing</span>
110
+ </div>
111
+ </div>
112
+ <button>submit</button>
113
+ </form>
114
+ ```
115
+ ```javascript
116
+ let form = e('form.createUser');
117
+
118
+ let opts = {
119
+ // optionally identify the inputs to serialize adding custom inputs
120
+ inputs: ['input','select','.custom-input'],
121
+ hobby: (inp)=>{
122
+ let v = [];
123
+ // this will select the custom-input .list>span spans
124
+ // get their values and push it into `v` array.
125
+ inp.find(".list>span",true).each(span => v.push(span.textContext));
126
+ // then return the value as string by joining it using ','
127
+ return v.join(',');
128
+ }
129
+ }
130
+
131
+ let data = form.serialize(opts);
132
+ // send data over network using jcall/fetch/axios ...
133
+ ```
134
+
135
+ ## `~Models~`
136
+
137
+ - **description**: models used to create elements similar to react components except easier to manager, you can create basic blueprint using `e("model:youModelName", blueprint)`, later on, you use the returned constructor over and over when ever the need calls!
138
+ - **how it works**:
139
+ - include the "model:\_model_name\_".
140
+ - define your `blueprint`:
141
+ - a `blueprint` is an object containing nested objects that defines each component of your model,
142
+ - a `blueprint` element is formed by
143
+
144
+ [`tagname`.`classname1`.`classname2`: `_index - default_value`],
145
+
146
+ where `_index`(must contain the `_`) represent a datacell to display data later, and `default_value` will be set if no data passed.
147
+ - **Usuage**:
148
+ ```javascript
149
+ let failMessage = e("model:FailMessage", {
150
+ "div.head": {
151
+ "div.title: _title - Big Fancy Title": {},
152
+ "div.close": {}
153
+ },
154
+ "div.body": {
155
+ "p.message: _message - no message": {},
156
+ "div.details: _details - no details": {},
157
+ "div.actions": {
158
+ "button.ok: _ok - OK": {},
159
+ "button.cancel: _cancel - Cancel": {}
160
+ }
161
+ }
162
+ })
163
+
164
+ // do ajax stuff
165
+ fetch()
166
+ .then()
167
+ .catch((e)=>{
168
+ // create a new instance
169
+ let error = failMessage({
170
+ parent: document.body // append using parent attribute
171
+ _title: "Backend error - " + e.name,
172
+ _message: e.message,
173
+
174
+ // try to avoid using this attribute unless
175
+ // you want to mess up with your model
176
+ // text: "some text",
177
+ // html: "some html",
178
+ });
179
+ // or append later
180
+ error.appendTo(document.body);
181
+ // you may pre-create the error in earlier stage! before the fetch()
182
+ // and refresh it content using .refresh function
183
+ error.refresh({
184
+ _title: "Backend error - " + e.name,
185
+ _message: e.message
186
+ })
187
+ // refresh also accepts an attribute `default`(set true by default)
188
+ // which adjut whether to update all datacells of the model
189
+ // or only update the one passed through the function
190
+ // EXAMPLE:
191
+ error.refresh({
192
+ _title: "Other Error - " + e.name
193
+ })
194
+ // this will update _title to the new value and also update
195
+ // the other datacells like `_message` `_details` ...
196
+ // but since they're not passed they will display the default values
197
+ // from the constructor up at the top!
198
+ // `_message` => no message
199
+ // `_details` => no details
200
+ // ...
201
+ // unless you passed (default: false)
202
+ error.refresh({
203
+ _title: "Other error - " + e.name,
204
+ default: true
205
+ })
206
+ // in this case only _title will be changed!
207
+ })
208
+ ```
209
+
210
+
211
+ ## Copyrights
212
+ Reserved under MIT license
@@ -0,0 +1,38 @@
1
+ import resolve from '@rollup/plugin-node-resolve';
2
+ import commonjs from '@rollup/plugin-commonjs';
3
+ import terser from '@rollup/plugin-terser';
4
+
5
+ export default [
6
+ {
7
+ input: 'src/eye.js',
8
+ output: [
9
+ {
10
+ file: 'dist/eye.umd.js',
11
+ format: 'umd',
12
+ name: 'eye',
13
+ sourcemap: true,
14
+ },
15
+ {
16
+ file: 'dist/eye.umd.min.js',
17
+ format: 'umd',
18
+ name: 'eye',
19
+ plugins: [terser()],
20
+ sourcemap: true,
21
+ },
22
+ {
23
+ file: 'dist/eye.esm.js',
24
+ format: 'es',
25
+ sourcemap: true,
26
+ },
27
+ {
28
+ file: 'dist/eye.cjs.js',
29
+ format: 'cjs',
30
+ sourcemap: true,
31
+ }
32
+ ],
33
+ plugins: [
34
+ resolve(),
35
+ commonjs()
36
+ ]
37
+ }
38
+ ];