@domql/qsql 0.1.0 → 3.3.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,205 @@
1
+ var DomqlQsql = (() => {
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // index.js
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ REGISTRY: () => REGISTRY,
24
+ default: () => index_default,
25
+ define: () => define,
26
+ find: () => find,
27
+ methods: () => methods,
28
+ query: () => query,
29
+ setMethod: () => setMethod
30
+ });
31
+
32
+ // registry.js
33
+ var REGISTRY = {};
34
+
35
+ // params.js
36
+ var isObject = (v) => v !== null && typeof v === "object" && v.constructor === Object;
37
+ var applyStyle = (params2, element, node) => {
38
+ if (params2 && isObject(params2)) {
39
+ for (const prop in params2) {
40
+ node.style[prop] = params2[prop];
41
+ }
42
+ }
43
+ };
44
+ var applyAttr = (params2, element, node) => {
45
+ if (params2 && isObject(params2)) {
46
+ for (const attr in params2) {
47
+ const val = params2[attr];
48
+ if (val !== false && val !== void 0 && val !== null) {
49
+ node.setAttribute(attr, val);
50
+ } else {
51
+ node.removeAttribute(attr);
52
+ }
53
+ }
54
+ }
55
+ };
56
+ var applyClassList = (params2, element, node) => {
57
+ if (!params2) return;
58
+ if (typeof params2 === "string") {
59
+ node.className = params2;
60
+ } else if (isObject(params2)) {
61
+ let className = "";
62
+ for (const item in params2) {
63
+ const val = params2[item];
64
+ if (val === true) className += ` ${item}`;
65
+ else if (typeof val === "string") className += ` ${val}`;
66
+ }
67
+ node.className = className.trim();
68
+ }
69
+ };
70
+ var applyData = (params2, element, node) => {
71
+ if (params2 && isObject(params2)) {
72
+ for (const key in params2) {
73
+ node.dataset[key] = params2[key];
74
+ }
75
+ }
76
+ };
77
+ var applyText = (param, element, node) => {
78
+ node.textContent = param;
79
+ };
80
+ var applyHtml = (param, element, node) => {
81
+ node.innerHTML = param;
82
+ };
83
+ var params = {
84
+ attr: applyAttr,
85
+ class: applyClassList,
86
+ data: applyData,
87
+ style: applyStyle,
88
+ text: applyText,
89
+ html: applyHtml
90
+ };
91
+
92
+ // on.js
93
+ var isFunction = (v) => typeof v === "function";
94
+ var applyEvents = (element, node) => {
95
+ for (const param in element.on) {
96
+ if (param === "init" || param === "render") continue;
97
+ const appliedFunction = element.on[param];
98
+ if (isFunction(appliedFunction)) {
99
+ node.addEventListener(param, (event) => {
100
+ appliedFunction.call(element, event, element, node);
101
+ }, true);
102
+ }
103
+ }
104
+ };
105
+
106
+ // apply.js
107
+ var isObject2 = (v) => v !== null && typeof v === "object" && v.constructor === Object;
108
+ var isFunction2 = (v) => typeof v === "function";
109
+ var apply = (element) => {
110
+ element.nodes.forEach((node) => {
111
+ if (isObject2(element.on)) applyEvents(element, node);
112
+ for (const key in element) {
113
+ const elemParam = element[key];
114
+ const param = params[key];
115
+ if (param) param(elemParam, element, node);
116
+ }
117
+ if (element.on && isFunction2(element.on.init)) {
118
+ element.on.init.call(element, element, node);
119
+ }
120
+ });
121
+ };
122
+
123
+ // update.js
124
+ var isObject3 = (v) => v !== null && typeof v === "object" && v.constructor === Object;
125
+ var isFunction3 = (v) => typeof v === "function";
126
+ var update = function(newParams) {
127
+ const element = this;
128
+ element.nodes.forEach((node) => {
129
+ if (isObject3(newParams.on)) applyEvents(element, node);
130
+ for (const param in newParams) {
131
+ const newParam = newParams[param];
132
+ const hasParam = params[param];
133
+ if (hasParam) hasParam(newParam, element, node);
134
+ }
135
+ });
136
+ if (element.on && isFunction3(element.on.update)) {
137
+ element.on.update.call(element, element);
138
+ }
139
+ };
140
+
141
+ // methods.js
142
+ var methods = {};
143
+ var setMethod = (newMethods) => {
144
+ for (const param in newMethods) {
145
+ methods[param] = newMethods[param];
146
+ }
147
+ return methods;
148
+ };
149
+
150
+ // query.js
151
+ var isNode = (obj) => obj instanceof Node;
152
+ var query = (config) => {
153
+ for (const key in config) {
154
+ const element = config[key];
155
+ const { query: selector, node } = element;
156
+ const nodesArr = [];
157
+ if (node && isNode(node)) {
158
+ nodesArr.push(node);
159
+ } else if (selector) {
160
+ const nodes = document.querySelectorAll(selector);
161
+ if (nodes.length === 0) console.warn(`Could not find element "${key}"`);
162
+ nodes.forEach((n) => nodesArr.push(n));
163
+ }
164
+ element.nodes = nodesArr;
165
+ element.key = key;
166
+ element.update = update;
167
+ for (const name in methods) {
168
+ if (key !== name) element[name] = methods[name];
169
+ }
170
+ REGISTRY[key] = element;
171
+ apply(element);
172
+ }
173
+ return REGISTRY;
174
+ };
175
+
176
+ // define.js
177
+ var define = (newParams, options = {}) => {
178
+ const { overwrite } = options;
179
+ for (const param in newParams) {
180
+ if (params[param] && !overwrite) {
181
+ console.warn("Can't overwrite default params. Use { overwrite: true } to force update");
182
+ } else {
183
+ params[param] = newParams[param];
184
+ }
185
+ }
186
+ };
187
+
188
+ // find.js
189
+ var find = (key) => {
190
+ const element = REGISTRY[key];
191
+ if (!element) console.warn(`Can't find element "${key}"`);
192
+ return element;
193
+ };
194
+
195
+ // index.js
196
+ var index_default = {
197
+ REGISTRY,
198
+ query,
199
+ define,
200
+ find,
201
+ methods,
202
+ setMethod
203
+ };
204
+ return __toCommonJS(index_exports);
205
+ })();
package/find.js ADDED
@@ -0,0 +1,7 @@
1
+ import { REGISTRY } from './registry.js'
2
+
3
+ export const find = (key) => {
4
+ const element = REGISTRY[key]
5
+ if (!element) console.warn(`Can't find element "${key}"`)
6
+ return element
7
+ }
package/index.js ADDED
@@ -0,0 +1,23 @@
1
+ import { REGISTRY } from './registry.js'
2
+ import { query } from './query.js'
3
+ import { define } from './define.js'
4
+ import { find } from './find.js'
5
+ import { methods, setMethod } from './methods.js'
6
+
7
+ export {
8
+ REGISTRY,
9
+ query,
10
+ define,
11
+ find,
12
+ methods,
13
+ setMethod
14
+ }
15
+
16
+ export default {
17
+ REGISTRY,
18
+ query,
19
+ define,
20
+ find,
21
+ methods,
22
+ setMethod
23
+ }
@@ -1,8 +1,6 @@
1
- 'use strict'
2
-
3
1
  export const methods = {}
4
2
 
5
- export const setMethod = newMethods => {
3
+ export const setMethod = (newMethods) => {
6
4
  for (const param in newMethods) {
7
5
  methods[param] = newMethods[param]
8
6
  }
package/on.js ADDED
@@ -0,0 +1,14 @@
1
+ const isFunction = (v) => typeof v === 'function'
2
+
3
+ export const applyEvents = (element, node) => {
4
+ for (const param in element.on) {
5
+ if (param === 'init' || param === 'render') continue
6
+
7
+ const appliedFunction = element.on[param]
8
+ if (isFunction(appliedFunction)) {
9
+ node.addEventListener(param, event => {
10
+ appliedFunction.call(element, event, element, node)
11
+ }, true)
12
+ }
13
+ }
14
+ }
package/package.json CHANGED
@@ -1,11 +1,37 @@
1
1
  {
2
2
  "name": "@domql/qsql",
3
- "version": "0.1.0",
4
- "main": "src/index.js",
5
- "author": "symbo.ls",
3
+ "version": "3.3.0",
6
4
  "license": "MIT",
7
- "private": false,
8
- "dependencies": {
9
- "domql": "latest"
10
- }
5
+ "type": "module",
6
+ "module": "./dist/esm/index.js",
7
+ "unpkg": "./dist/iife/index.js",
8
+ "jsdelivr": "./dist/iife/index.js",
9
+ "main": "./dist/cjs/index.js",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/esm/index.js",
13
+ "require": "./dist/cjs/index.js",
14
+ "browser": "./dist/iife/index.js",
15
+ "default": "./dist/esm/index.js"
16
+ }
17
+ },
18
+ "source": "index.js",
19
+ "files": [
20
+ "dist",
21
+ "*.js"
22
+ ],
23
+ "scripts": {
24
+ "copy:package:cjs": "cp ../../build/package-cjs.json dist/cjs/package.json",
25
+ "build:esm": "cross-env NODE_ENV=$NODE_ENV esbuild *.js --target=es2020 --format=esm --outdir=dist/esm --define:process.env.NODE_ENV=process.env.NODE_ENV",
26
+ "build:cjs": "cross-env NODE_ENV=$NODE_ENV esbuild *.js --target=node18 --format=cjs --outdir=dist/cjs --define:process.env.NODE_ENV=process.env.NODE_ENV",
27
+ "build:iife": "cross-env NODE_ENV=$NODE_ENV esbuild index.js --bundle --target=es2020 --format=iife --global-name=DomqlQsql --outfile=dist/iife/index.js --define:process.env.NODE_ENV=process.env.NODE_ENV",
28
+ "build": "node ../../build/build.js",
29
+ "prepublish": "npm run build && npm run copy:package:cjs"
30
+ },
31
+ "dependencies": {},
32
+ "devDependencies": {
33
+ "@babel/core": "^7.26.0"
34
+ },
35
+ "browser": "./dist/iife/index.js",
36
+ "sideEffects": false
11
37
  }
package/params.js ADDED
@@ -0,0 +1,62 @@
1
+ const isObject = (v) => v !== null && typeof v === 'object' && v.constructor === Object
2
+
3
+ const applyStyle = (params, element, node) => {
4
+ if (params && isObject(params)) {
5
+ for (const prop in params) {
6
+ node.style[prop] = params[prop]
7
+ }
8
+ }
9
+ }
10
+
11
+ const applyAttr = (params, element, node) => {
12
+ if (params && isObject(params)) {
13
+ for (const attr in params) {
14
+ const val = params[attr]
15
+ if (val !== false && val !== undefined && val !== null) {
16
+ node.setAttribute(attr, val)
17
+ } else {
18
+ node.removeAttribute(attr)
19
+ }
20
+ }
21
+ }
22
+ }
23
+
24
+ const applyClassList = (params, element, node) => {
25
+ if (!params) return
26
+ if (typeof params === 'string') {
27
+ node.className = params
28
+ } else if (isObject(params)) {
29
+ let className = ''
30
+ for (const item in params) {
31
+ const val = params[item]
32
+ if (val === true) className += ` ${item}`
33
+ else if (typeof val === 'string') className += ` ${val}`
34
+ }
35
+ node.className = className.trim()
36
+ }
37
+ }
38
+
39
+ const applyData = (params, element, node) => {
40
+ if (params && isObject(params)) {
41
+ for (const key in params) {
42
+ node.dataset[key] = params[key]
43
+ }
44
+ }
45
+ }
46
+
47
+ const applyText = (param, element, node) => {
48
+ node.textContent = param
49
+ }
50
+
51
+ const applyHtml = (param, element, node) => {
52
+ node.innerHTML = param
53
+ }
54
+
55
+ export const params = {
56
+ attr: applyAttr,
57
+ class: applyClassList,
58
+ data: applyData,
59
+ style: applyStyle,
60
+ text: applyText,
61
+ html: applyHtml
62
+ }
package/query.js ADDED
@@ -0,0 +1,35 @@
1
+ import { REGISTRY } from './registry.js'
2
+ import { apply } from './apply.js'
3
+ import { update } from './update.js'
4
+ import { methods } from './methods.js'
5
+
6
+ const isNode = (obj) => obj instanceof Node
7
+
8
+ export const query = (config) => {
9
+ for (const key in config) {
10
+ const element = config[key]
11
+ const { query: selector, node } = element
12
+ const nodesArr = []
13
+
14
+ if (node && isNode(node)) {
15
+ nodesArr.push(node)
16
+ } else if (selector) {
17
+ const nodes = document.querySelectorAll(selector)
18
+ if (nodes.length === 0) console.warn(`Could not find element "${key}"`)
19
+ nodes.forEach((n) => nodesArr.push(n))
20
+ }
21
+
22
+ element.nodes = nodesArr
23
+ element.key = key
24
+ element.update = update
25
+
26
+ for (const name in methods) {
27
+ if (key !== name) element[name] = methods[name]
28
+ }
29
+
30
+ REGISTRY[key] = element
31
+ apply(element)
32
+ }
33
+
34
+ return REGISTRY
35
+ }
package/registry.js ADDED
@@ -0,0 +1 @@
1
+ export const REGISTRY = {}
package/update.js ADDED
@@ -0,0 +1,22 @@
1
+ import { params } from './params.js'
2
+ import { applyEvents } from './on.js'
3
+
4
+ const isObject = (v) => v !== null && typeof v === 'object' && v.constructor === Object
5
+ const isFunction = (v) => typeof v === 'function'
6
+
7
+ export const update = function (newParams) {
8
+ const element = this
9
+ element.nodes.forEach(node => {
10
+ if (isObject(newParams.on)) applyEvents(element, node)
11
+
12
+ for (const param in newParams) {
13
+ const newParam = newParams[param]
14
+ const hasParam = params[param]
15
+ if (hasParam) hasParam(newParam, element, node)
16
+ }
17
+ })
18
+
19
+ if (element.on && isFunction(element.on.update)) {
20
+ element.on.update.call(element, element)
21
+ }
22
+ }
package/README.md DELETED
@@ -1,45 +0,0 @@
1
- # qsql
2
- DOM manipulation using document queries. Uses [DOMQL](https://github.com/domql/domql) API.
3
-
4
- ### Installation
5
- ```
6
- yarn add classql
7
- ```
8
-
9
- ### Examples
10
-
11
- Initialization:
12
-
13
- ```javascript
14
- import DOM from 'qsql'
15
-
16
- DOM.query({
17
- logo: { query: '.logo' }
18
- })
19
- ```
20
-
21
- Attributes:
22
- ```javascript
23
- DOM.query({
24
- modal: {
25
- query: '.modal',
26
- style: { display: 'none' }
27
- }
28
- })
29
- ```
30
-
31
- Events and update:
32
- ```javascript
33
- DOM.query({
34
- CTA: {
35
- query: '.button',
36
- on: {
37
- click: (event, element, node) => {
38
- DOM.find('modal').update({
39
- style: { display: 'block' }
40
- })
41
- }
42
- }
43
- }
44
- })
45
- ```
package/src/apply.js DELETED
@@ -1,22 +0,0 @@
1
- 'use strict'
2
-
3
- import { init } from '@rackai/domql/src/event/on'
4
- import { exec, isObject } from '@rackai/domql/src/utils/object'
5
-
6
- import params from './params'
7
- import on from './on'
8
-
9
- export default element => {
10
- element.nodes.forEach(node => {
11
- if (isObject(element.on)) on(element, node)
12
-
13
- for (let key in element) {
14
- var elemParam = element[key]
15
- var param = params[key]
16
- if (param) param(elemParam, element, node)
17
- }
18
-
19
- if (element.on && typeof element.on.init === 'function')
20
- init(element.on.init, element, node)
21
- })
22
- }
package/src/define.js DELETED
@@ -1,12 +0,0 @@
1
- 'use strict'
2
-
3
- import params from './params'
4
-
5
- export default (newParams, options = {}) => {
6
- var { overwrite } = options
7
- for (const param in newParams) {
8
- if (params[param] && !overwrite) {
9
- console.log(`Can't overwrite to default params. Use { overwrite: true } to force update`)
10
- } else params[param] = newParams[param]
11
- }
12
- }
package/src/find.js DELETED
@@ -1,5 +0,0 @@
1
- 'use strict'
2
-
3
- import registry from './registry'
4
-
5
- export default query => registry[query] || console.warn(`Can't find element "${query}"`)
package/src/index.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict'
2
-
3
- import '@rackai/domql'
4
-
5
- import query from './query'
6
- import registry from './registry'
7
- import define from './define'
8
- import find from './find'
9
- import { methods, setMethod } from './methods'
10
-
11
- export default {
12
- registry,
13
- query,
14
- define,
15
- find,
16
- methods,
17
- setMethod
18
- }
package/src/on.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict'
2
-
3
- import * as events from '@rackai/domql/src/event/on'
4
-
5
- events.init = (param, element, node) => {
6
- param.call(element, element, node)
7
- }
8
-
9
- export default (element, node) => {
10
- for (const param in element.on) {
11
- if (param === 'init' || param === 'render') continue
12
-
13
- var appliedFunction = element.on[param]
14
- if (typeof appliedFunction === 'function') {
15
- node.addEventListener(param, event => appliedFunction(event, element), true)
16
- }
17
- }
18
- }
package/src/params.js DELETED
@@ -1,20 +0,0 @@
1
- 'use strict'
2
-
3
- import {
4
- attr,
5
- classList,
6
- data,
7
- style,
8
- html
9
- } from '@rackai/domql/src/element/params'
10
-
11
- export default {
12
- attr,
13
- class: classList,
14
- data,
15
- style,
16
- text: (param, element, node) => {
17
- node.innerText = param
18
- },
19
- html
20
- }
package/src/query.js DELETED
@@ -1,37 +0,0 @@
1
- 'use strict'
2
-
3
- import registry from './registry'
4
- import apply from './apply'
5
- import update from './update'
6
- import { methods } from './methods'
7
- import { is } from '@rackai/domql/src/event'
8
-
9
- var query = params => {
10
- for (let key in params) {
11
- var element = params[key]
12
- var { query, node } = element
13
- var nodesArr = []
14
-
15
- if (is.node(node)) nodesArr = [node]
16
- else {
17
- var nodes = document.querySelectorAll(query)
18
- var { length } = nodes
19
- if (length === 0) console.warn(`Could not find element "${key}"`)
20
- nodes.forEach((node, key) => nodesArr[key] = node)
21
- }
22
-
23
- element.nodes = nodesArr
24
- element.key = key
25
- element.update = update
26
-
27
- for (var one in methods) if (key !== one) element[one] = methods[one]
28
-
29
- registry[key] = params[key]
30
-
31
- apply(element)
32
- }
33
-
34
- return registry
35
- }
36
-
37
- export default query
package/src/registry.js DELETED
@@ -1,3 +0,0 @@
1
- 'use strict'
2
-
3
- export default {}
package/src/update.js DELETED
@@ -1,24 +0,0 @@
1
- 'use strict'
2
-
3
- import params from './params'
4
- import on from './on'
5
- import { exec, isObject } from '@rackai/domql/src/utils/object'
6
-
7
- const update = function (newParams) {
8
- var element = this
9
- element.nodes.forEach(node => {
10
- if (isObject(newParams.on)) on(element, node)
11
- for (let param in newParams) {
12
- var newParam = newParams[param]
13
- var hasParam = params[param]
14
- if (hasParam) hasParam(newParam, element, node)
15
- }
16
- })
17
-
18
- // run onUpdate
19
- if (element.on && typeof element.on.update === 'function') {
20
- on.update(element.on.update, element, node)
21
- }
22
- }
23
-
24
- export default update