@kizmann/pico-js 1.0.13 → 2.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.
Files changed (125) hide show
  1. package/README.md +27 -7
  2. package/dist/pico-js.browser.js +2 -0
  3. package/dist/pico-js.browser.js.map +1 -0
  4. package/dist/pico-js.esm.js +2 -0
  5. package/dist/pico-js.esm.js.map +1 -0
  6. package/package.json +20 -7
  7. package/src/dom/DomAttribute.js +374 -0
  8. package/src/dom/DomBuilder.js +152 -0
  9. package/src/dom/DomEvent.js +253 -0
  10. package/src/dom/DomFinder.js +669 -0
  11. package/src/dom/DomForm.js +57 -0
  12. package/src/dom/DomGlobal.js +193 -0
  13. package/src/dom/DomInview.js +332 -0
  14. package/src/dom/DomMeta.js +66 -0
  15. package/src/dom/DomObserver.js +57 -0
  16. package/src/dom/DomRectangle.js +657 -0
  17. package/src/format/FormatFile.js +54 -0
  18. package/src/format/FormatOption.js +108 -0
  19. package/src/format/FormatParam.js +107 -0
  20. package/src/format/FormatParser.js +156 -0
  21. package/src/format/FormatUrl.js +75 -0
  22. package/src/index.browser.js +10 -0
  23. package/src/index.esm.js +138 -0
  24. package/src/now/NowDefault.js +533 -0
  25. package/src/now/NowFormat.js +196 -0
  26. package/src/now/NowGrid.js +251 -0
  27. package/src/now/NowHuman.js +118 -0
  28. package/src/now/NowMatch.js +175 -0
  29. package/src/now/NowRange.js +70 -0
  30. package/src/now/NowWalker.js +544 -0
  31. package/src/tool/scope.js +103 -0
  32. package/src/utils/Array.js +986 -0
  33. package/src/utils/Cookie.js +184 -0
  34. package/src/utils/Data.js +200 -0
  35. package/src/utils/Dom.js +208 -0
  36. package/src/utils/Event.js +140 -0
  37. package/src/utils/Format.js +62 -0
  38. package/src/utils/Hash.js +164 -0
  39. package/src/utils/Locale.js +229 -0
  40. package/src/utils/Mixed.js +887 -0
  41. package/src/utils/Now.js +234 -0
  42. package/src/utils/Number.js +238 -0
  43. package/src/utils/Object.js +655 -0
  44. package/src/utils/Route.js +67 -0
  45. package/src/utils/Runner.js +327 -0
  46. package/src/utils/String.js +618 -0
  47. package/src/{library/element.js → wip/Element.js} +90 -16
  48. package/src/{library/map.js → wip/Map.js} +256 -40
  49. package/types/dom/DomAttribute.d.ts +137 -0
  50. package/types/dom/DomBuilder.d.ts +67 -0
  51. package/types/dom/DomEvent.d.ts +103 -0
  52. package/types/dom/DomFinder.d.ts +321 -0
  53. package/types/dom/DomForm.d.ts +21 -0
  54. package/types/dom/DomGlobal.d.ts +79 -0
  55. package/types/dom/DomInview.d.ts +114 -0
  56. package/types/dom/DomMeta.d.ts +29 -0
  57. package/types/dom/DomObserver.d.ts +21 -0
  58. package/types/dom/DomRectangle.d.ts +270 -0
  59. package/types/format/FormatFile.d.ts +18 -0
  60. package/types/format/FormatOption.d.ts +40 -0
  61. package/types/format/FormatParam.d.ts +39 -0
  62. package/types/format/FormatParser.d.ts +46 -0
  63. package/types/format/FormatUrl.d.ts +17 -0
  64. package/types/index.browser.d.ts +1 -0
  65. package/types/index.esm.d.ts +52 -0
  66. package/types/now/NowDefault.d.ts +183 -0
  67. package/types/now/NowFormat.d.ts +70 -0
  68. package/types/now/NowGrid.d.ts +107 -0
  69. package/types/now/NowHuman.d.ts +37 -0
  70. package/types/now/NowMatch.d.ts +108 -0
  71. package/types/now/NowRange.d.ts +21 -0
  72. package/types/now/NowWalker.d.ts +301 -0
  73. package/types/tool/scope.d.ts +24 -0
  74. package/types/utils/Array.d.ts +480 -0
  75. package/types/utils/Cookie.d.ts +60 -0
  76. package/types/utils/Data.d.ts +91 -0
  77. package/types/utils/Dom.d.ts +138 -0
  78. package/types/utils/Event.d.ts +58 -0
  79. package/types/utils/Format.d.ts +37 -0
  80. package/types/utils/Hash.d.ts +81 -0
  81. package/types/utils/Locale.d.ts +115 -0
  82. package/types/utils/Mixed.d.ts +469 -0
  83. package/types/utils/Now.d.ts +125 -0
  84. package/types/utils/Number.d.ts +127 -0
  85. package/types/utils/Object.d.ts +255 -0
  86. package/types/utils/Route.d.ts +37 -0
  87. package/types/utils/Runner.d.ts +139 -0
  88. package/types/utils/String.d.ts +330 -0
  89. package/types/wip/Element.d.ts +119 -0
  90. package/types/wip/Map.d.ts +254 -0
  91. package/dist/.ignore.js +0 -0
  92. package/dist/pico-js.js +0 -2
  93. package/dist/pico-js.js.map +0 -1
  94. package/src/element/default.js +0 -46
  95. package/src/element/example.js +0 -58
  96. package/src/index.js +0 -90
  97. package/src/library/cookie.js +0 -123
  98. package/src/library/data.js +0 -111
  99. package/src/library/event.js +0 -91
  100. package/src/library/locale.js +0 -84
  101. package/src/library/queue.js +0 -64
  102. package/src/library/route.js +0 -28
  103. package/src/utility/any.js +0 -369
  104. package/src/utility/array.js +0 -410
  105. package/src/utility/dom.js +0 -1425
  106. package/src/utility/now.js +0 -544
  107. package/src/utility/number.js +0 -128
  108. package/src/utility/object.js +0 -429
  109. package/src/utility/string.js +0 -328
  110. package/types/index.d.ts +0 -77
  111. package/types/library/cookie.d.ts +0 -10
  112. package/types/library/data.d.ts +0 -15
  113. package/types/library/element.d.ts +0 -22
  114. package/types/library/event.d.ts +0 -13
  115. package/types/library/locale.d.ts +0 -14
  116. package/types/library/map.d.ts +0 -43
  117. package/types/library/queue.d.ts +0 -18
  118. package/types/library/route.d.ts +0 -11
  119. package/types/utility/any.d.ts +0 -35
  120. package/types/utility/array.d.ts +0 -46
  121. package/types/utility/dom.d.ts +0 -101
  122. package/types/utility/now.d.ts +0 -79
  123. package/types/utility/number.d.ts +0 -17
  124. package/types/utility/object.d.ts +0 -29
  125. package/types/utility/string.d.ts +0 -26
@@ -0,0 +1,193 @@
1
+ import { Run, Mix, Obj, Dom } from "#src/index.esm.js";
2
+
3
+ /**
4
+ * @memberof PicoDom
5
+ */
6
+ export class PicoDomGlobalStatic
7
+ {
8
+ /**
9
+ * Get document ready state
10
+ *
11
+ * @example Dom.getDomState() // => "complete"
12
+ *
13
+ * @returns {string} State string
14
+ */
15
+ static getDomState()
16
+ {
17
+ return document.readyState;
18
+ }
19
+
20
+ /**
21
+ * Check if DOM is ready
22
+ *
23
+ * @example Dom.isDomReady() // => true
24
+ *
25
+ * @returns {boolean} True if ready
26
+ */
27
+ static isDomReady()
28
+ {
29
+ return Dom.getDomState() === 'complete';
30
+ }
31
+
32
+ /**
33
+ * Check if DOM is complete
34
+ *
35
+ * @example Dom.isDomComplete() // => true
36
+ *
37
+ * @returns {boolean} True if complete
38
+ */
39
+ static isDomComplete()
40
+ {
41
+ let state = Dom.getDomState();
42
+
43
+ if ( state === 'complete' ) {
44
+ return true;
45
+ }
46
+
47
+ return state === 'interactive';
48
+ }
49
+
50
+ /**
51
+ * Run callback when ready
52
+ *
53
+ * @example Dom.ready(cb)
54
+ *
55
+ * @param {function} cb Callback fn
56
+ * @param {number} [delay] Execution delay
57
+ * @param {number} [limit] Wait limit
58
+ * @returns {this} Static class
59
+ */
60
+ static ready(cb, delay = 0, limit = 6000)
61
+ {
62
+ let fn = () => {
63
+ Run.delay(cb, delay);
64
+ };
65
+
66
+ let [el, event] = [
67
+ Dom.find(document), 'DOMContentLoaded'
68
+ ];
69
+
70
+ let ready = Dom.isDomReady;
71
+
72
+ if ( ! ready() ) {
73
+ return (el.on(event, fn), this);
74
+ }
75
+
76
+ Run.wait(() => {
77
+ if ( ready() ) return (fn(), true);
78
+ }, 10, limit);
79
+
80
+ return this;
81
+ }
82
+
83
+ /**
84
+ * Run callback when complete
85
+ *
86
+ * @example Dom.complete(cb)
87
+ *
88
+ * @param {function} cb Callback fn
89
+ * @param {number} [delay] Execution delay
90
+ * @param {number} [limit] Wait limit
91
+ * @returns {this} Static class
92
+ */
93
+ static complete(cb, delay = 0, limit = 6000)
94
+ {
95
+ let fn = () => {
96
+ Run.delay(cb, delay);
97
+ };
98
+
99
+ let [el, event] = [
100
+ Dom.find(document), 'load'
101
+ ];
102
+
103
+ let ready = Dom.isDomComplete;
104
+
105
+ if ( ! ready() ) {
106
+ return (el.on(event, fn), this);
107
+ }
108
+
109
+ Run.wait(() => {
110
+ if ( ready() ) return (fn(), true);
111
+ }, 10, limit);
112
+
113
+ return this;
114
+ }
115
+
116
+ }
117
+
118
+ PicoDomGlobalStatic.required = () => {
119
+ console.error('Dom.required() is not implemented anymore.');
120
+ }
121
+
122
+ /**
123
+ * @memberof PicoDom
124
+ * @extends {PicoDom}
125
+ */
126
+ export class PicoDomGlobalInstance
127
+ {
128
+ /**
129
+ * Check if node is complete
130
+ *
131
+ * @example Dom.find("img").isNodeComplete() // => true
132
+ *
133
+ * @returns {boolean} True if complete
134
+ */
135
+ isNodeComplete()
136
+ {
137
+ if ( this.el == null ) {
138
+ return false;
139
+ }
140
+
141
+ if ( this.el.naturalWidth ) {
142
+ return true;
143
+ }
144
+
145
+ if ( this.el.naturalHeight ) {
146
+ return true;
147
+ }
148
+
149
+ return !! this.el.complete;
150
+ }
151
+
152
+ /**
153
+ * Run callback when loaded
154
+ *
155
+ * @example Dom.find("img").loaded(cb)
156
+ *
157
+ * @param {function} cb Callback fn
158
+ * @param {number} [limit] Wait limit
159
+ * @returns {this} Current instance
160
+ */
161
+ loaded(cb, limit = 6000)
162
+ {
163
+ if ( ! this.el ) {
164
+ return this;
165
+ }
166
+
167
+ let ready = this.isNodeComplete;
168
+
169
+ Run.wait(() => {
170
+ if ( ready.call(this) ) return (cb(), true);
171
+ }, 10, limit);
172
+
173
+ return this;
174
+ }
175
+ }
176
+
177
+ /**
178
+ * @returns {typeof import('#src/utils/Dom.js').PicoDom}
179
+ */
180
+ export const PicoDomGlobalPlugin = function (self) {
181
+
182
+ Obj.each(Mix.class(PicoDomGlobalStatic), (fn, id) => {
183
+ self[id] = fn;
184
+ });
185
+
186
+ Obj.each(Mix.proto(PicoDomGlobalInstance), (fn, id) => {
187
+ self.prototype[id] = fn;
188
+ });
189
+
190
+ // self.init.push(PicoDomGlobalInstance.constructor);
191
+
192
+ return self;
193
+ }
@@ -0,0 +1,332 @@
1
+ import { Arr, Dom, Mix, Obj } from "#src/index.esm.js";
2
+
3
+ /**
4
+ * @memberof PicoDom
5
+ */
6
+ export class PicoDomInviewStatic
7
+ {
8
+
9
+ /**
10
+ * Get first inview element Y
11
+ *
12
+ * @example Dom.inviewMaxY(".item")
13
+ *
14
+ * @param {any} options Find options
15
+ * @param {function} [cb] Success callback
16
+ * @returns {any} Found element
17
+ */
18
+ static inviewMaxY(options, cb = null)
19
+ {
20
+ let defaults = {
21
+ boundry: null, multiple: false, threshold: 0, mode: 'ratio'
22
+ };
23
+
24
+ if ( Mix.isString(options) ) {
25
+ options = { el: options };
26
+ }
27
+
28
+ options = {
29
+ ...defaults, ...options
30
+ };
31
+
32
+ if ( ! options.el ) {
33
+ throw new Error('Dom.inviewY() requires an element.');
34
+ }
35
+
36
+ let args = [
37
+ options.threshold, options.mode, options.boundry
38
+ ];
39
+
40
+ let fn = (el) => {
41
+ return Dom.find(el).isInviewY(...args);
42
+ };
43
+
44
+ let els = [];
45
+
46
+ Dom.find(options.el).each((el) => {
47
+ if ( fn(el) ) (cb ? cb(el) : null, els.push(el));
48
+ });
49
+
50
+ if ( options.multiple ) {
51
+ return els;
52
+ }
53
+
54
+ return Arr.first(els);
55
+ }
56
+
57
+ /**
58
+ * Get first inview element X
59
+ *
60
+ * @example Dom.inviewMaxX(".item")
61
+ *
62
+ * @param {any} options Find options
63
+ * @param {function} [cb] Success callback
64
+ * @returns {any} Found element
65
+ */
66
+ static inviewMaxX(options, cb = null)
67
+ {
68
+ let defaults = {
69
+ boundry: null, multiple: false, threshold: 0, mode: 'ratio'
70
+ };
71
+
72
+ if ( Mix.isString(options) ) {
73
+ options = { el: options };
74
+ }
75
+
76
+ options = {
77
+ ...defaults, ...options
78
+ };
79
+
80
+ if ( ! options.el ) {
81
+ throw new Error('Dom.inviewX() requires an element.');
82
+ }
83
+
84
+ let args = [
85
+ options.threshold, options.mode, options.boundry
86
+ ];
87
+
88
+ let fn = (el) => {
89
+ return Dom.find(el).isInviewX(...args);
90
+ };
91
+
92
+ let els = [];
93
+
94
+ Dom.find(options.el).each((el) => {
95
+ if ( fn(el) ) (cb ? cb(el) : null, els.push(el));
96
+ });
97
+
98
+ if ( options.multiple ) {
99
+ return els;
100
+ }
101
+
102
+ return Arr.first(els);
103
+ }
104
+
105
+ }
106
+
107
+ /**
108
+ * @memberof PicoDom
109
+ * @extends {PicoDom}
110
+ */
111
+ export class PicoDomInviewInstance
112
+ {
113
+ /**
114
+ * Get X view offset
115
+ *
116
+ * @example Dom.find("div").viewoffX()
117
+ *
118
+ * @returns {any} Offset object
119
+ */
120
+ viewoffX()
121
+ {
122
+ if ( this.el == null ) {
123
+ return { top: 0, bot: 0 };
124
+ }
125
+
126
+ let [viewport, width] = [
127
+ Dom.win().innerWidth, this.width()
128
+ ];
129
+
130
+ let [offset, scroll] = [
131
+ this.offset('left'), this.parent().scroll('left')
132
+ ];
133
+
134
+ let left = Math.max(...[
135
+ 0, offset - scroll
136
+ ]);
137
+
138
+ let right = Math.max(...[
139
+ 0, viewport - (offset + width - scroll)
140
+ ]);
141
+
142
+ return { left, right };
143
+ }
144
+
145
+ /**
146
+ * Get X inview pixels
147
+ *
148
+ * @example Dom.find("div").inviewX()
149
+ *
150
+ * @param {any} [boundry] View boundry
151
+ * @returns {number} Inview pixels
152
+ */
153
+ inviewX(boundry = null)
154
+ {
155
+ let { left, right } = Dom.find(boundry).viewoffY();
156
+
157
+ let [viewport, height] = [
158
+ Dom.win().innerHeight - right - left, this.height()
159
+ ];
160
+
161
+ let [offset, scroll] = [
162
+ this.offset('left') + left, this.scroll('left') + left
163
+ ];
164
+
165
+ let inview = Math.max(0, scroll + viewport - offset + left);
166
+
167
+ if ( inview > height ) {
168
+ inview = Math.min(height, viewport + height - inview);
169
+ }
170
+
171
+ return Math.max(0, inview);
172
+ }
173
+
174
+ /**
175
+ * Get X inview ratio
176
+ *
177
+ * @example Dom.find("div").inratioX()
178
+ *
179
+ * @param {any} [boundry] View boundry
180
+ * @returns {number} Inview ratio
181
+ */
182
+ inratioX(boundry = null)
183
+ {
184
+ return 1 / this.width() * this.inviewX(boundry);
185
+ }
186
+
187
+ /**
188
+ * Check if is inview X
189
+ *
190
+ * @example Dom.find("div").isInviewX(0.5)
191
+ *
192
+ * @param {number} [threshold] View threshold
193
+ * @param {string} [mode] View mode
194
+ * @param {any} [boundry] View boundry
195
+ * @returns {boolean} True if inview
196
+ */
197
+ isInviewX(threshold = 0.1, mode = 'ratio', boundry = null)
198
+ {
199
+ if ( mode === 'pixel' ) {
200
+ return this.inviewX(boundry) > threshold;
201
+ }
202
+
203
+ return this.inratioX(boundry) > threshold;
204
+ }
205
+
206
+ /**
207
+ * Get Y view offset
208
+ *
209
+ * @example Dom.find("div").viewoffY()
210
+ *
211
+ * @returns {any} Offset object
212
+ */
213
+ viewoffY()
214
+ {
215
+ if ( this.el == null ) {
216
+ return { top: 0, bottom: 0 };
217
+ }
218
+
219
+ let [viewport, height] = [
220
+ Dom.win().innerHeight, this.height()
221
+ ];
222
+
223
+ let [offset, scroll] = [
224
+ this.offset('top'), this.parent().scroll('top')
225
+ ];
226
+
227
+ let top = Math.max(...[
228
+ 0, offset - scroll
229
+ ]);
230
+
231
+ let bottom = Math.max(...[
232
+ 0, viewport - (offset + height - scroll)
233
+ ]);
234
+
235
+ return { top, bottom };
236
+ }
237
+
238
+ /**
239
+ * Get Y inview pixels
240
+ *
241
+ * @example Dom.find("div").inviewY()
242
+ *
243
+ * @param {any} [boundry] View boundry
244
+ * @returns {number} Inview pixels
245
+ */
246
+ inviewY(boundry = null)
247
+ {
248
+ let { top, bottom } = Dom.find(boundry).viewoffY();
249
+
250
+ let [viewport, height] = [
251
+ Dom.win().innerHeight - bottom - top, this.height()
252
+ ];
253
+
254
+ let [offset, scroll] = [
255
+ this.offset('top') + top, this.scroll('top') + top
256
+ ];
257
+
258
+ let inview = Math.max(0, scroll + viewport - offset + top);
259
+
260
+ if ( inview > height ) {
261
+ inview = Math.min(height, viewport + height - inview);
262
+ }
263
+
264
+ return Math.min(Math.max(0, inview), viewport);
265
+ }
266
+
267
+ /**
268
+ * Get Y inview ratio
269
+ *
270
+ * @example Dom.find("div").inratioY()
271
+ *
272
+ * @param {any} [boundry] View boundry
273
+ * @returns {number} Inview ratio
274
+ */
275
+ inratioY(boundry = null)
276
+ {
277
+ return 1 / this.height() * this.inviewY(boundry);
278
+ }
279
+
280
+ /**
281
+ * Check if is inview Y
282
+ *
283
+ * @example Dom.find("div").isInviewY(0.5)
284
+ *
285
+ * @param {number} [threshold] View threshold
286
+ * @param {string} [mode] View mode
287
+ * @param {any} [boundry] View boundry
288
+ * @returns {boolean} True if inview
289
+ */
290
+ isInviewY(threshold = 0.1, mode = 'ratio', boundry = null)
291
+ {
292
+ if ( mode === 'pixel' ) {
293
+ return this.inviewY(boundry) > threshold;
294
+ }
295
+
296
+ return this.inratioY(boundry) > threshold;
297
+ }
298
+ }
299
+
300
+ /**
301
+ * @see PicoDom.inviewY
302
+ */
303
+ PicoDomInviewInstance.prototype.inviewHeight = function (...args) {
304
+ console.warn('Dom.inviewHeight() is deprecated, use Dom.inviewY() instead.');
305
+ return this.inviewY(...args);
306
+ }
307
+
308
+ /**
309
+ * @see PicoDom.inviewX
310
+ */
311
+ PicoDomInviewInstance.prototype.inviewWidth = function (...args) {
312
+ console.warn('Dom.inviewWidth() is deprecated, use Dom.inviewX() instead.');
313
+ return this.inviewX(...args);
314
+ }
315
+
316
+ /**
317
+ * @returns {typeof import('#src/utils/Dom.js').PicoDom}
318
+ */
319
+ export const PicoDomInviewPlugin = function (self) {
320
+
321
+ Obj.each(Mix.class(PicoDomInviewStatic), (fn, id) => {
322
+ self[id] = fn;
323
+ });
324
+
325
+ Obj.each(Mix.proto(PicoDomInviewInstance), (fn, id) => {
326
+ self.prototype[id] = fn;
327
+ });
328
+
329
+ // self.init.push(PicoDomInviewInstance.constructor);
330
+
331
+ return self;
332
+ }
@@ -0,0 +1,66 @@
1
+ import { Arr, Mix, Obj, Dom, Locale } from "#src/index.esm.js";
2
+
3
+ /**
4
+ * @memberof PicoDom
5
+ */
6
+ export class PicoDomMetaStatic
7
+ {
8
+ static $meta = {};
9
+
10
+ /**
11
+ * Set document title
12
+ *
13
+ * @example Dom.setMetaTitle("Home")
14
+ *
15
+ * @param {string} value New title
16
+ * @param {string} [glue] Title glue
17
+ * @returns {this} Static class
18
+ */
19
+ static setMetaTitle(value, glue = ':value - :title')
20
+ {
21
+ if ( ! this.$meta.title ) {
22
+ this.$meta.title = Dom.doc().title;
23
+ }
24
+
25
+ document.title = Locale.replace(glue, {
26
+ value, title: this.$meta.title
27
+ });
28
+
29
+ return this;
30
+ }
31
+ }
32
+
33
+ /**
34
+ * @see PicoDom.setMetaTitle
35
+ */
36
+ PicoDomMetaStatic.title = (value) => {
37
+ console.warn('Dom.title() is deprecated, use Dom.setMetaTitle() instead.');
38
+ return Dom.setMetaTitle(value);
39
+ };
40
+
41
+ /**
42
+ * @memberof PicoDom
43
+ * @extends {PicoDom}
44
+ */
45
+ export class PicoDomMetaInstance
46
+ {
47
+
48
+ }
49
+
50
+ /**
51
+ * @returns {typeof import('#src/utils/Dom.js').PicoDom}
52
+ */
53
+ export const PicoDomMetaPlugin = function (self) {
54
+
55
+ Obj.each(Mix.class(PicoDomMetaStatic), (fn, id) => {
56
+ self[id] = fn;
57
+ });
58
+
59
+ Obj.each(Mix.proto(PicoDomMetaInstance), (fn, id) => {
60
+ self.prototype[id] = fn;
61
+ });
62
+
63
+ // self.init.push(PicoDomMetaInstance.constructor);
64
+
65
+ return self;
66
+ }
@@ -0,0 +1,57 @@
1
+ import { Arr, Mix, Obj, Dom } from "#src/index.esm.js";
2
+
3
+ /**
4
+ * @memberof PicoDom
5
+ */
6
+ export class PicoDomObserverStatic
7
+ {
8
+
9
+ }
10
+
11
+ /**
12
+ * @memberof PicoDom
13
+ * @extends {PicoDom}
14
+ */
15
+ export class PicoDomObserverInstance
16
+ {
17
+
18
+ /**
19
+ * Get or set element value
20
+ *
21
+ * @example Dom.find("input").value("hello")
22
+ *
23
+ * @param {any} [value] New value
24
+ * @returns {any|this} Value or instance
25
+ */
26
+ value(value = undefined)
27
+ {
28
+ if ( value === undefined ) {
29
+ return this.el.value;
30
+ }
31
+
32
+ this.each((el) => {
33
+ el.value = value;
34
+ });
35
+
36
+ return this;
37
+ }
38
+
39
+ }
40
+
41
+ /**
42
+ * @returns {typeof import('#src/utils/Dom.js').PicoDom}
43
+ */
44
+ export const PicoDomObserverPlugin = function (self) {
45
+
46
+ Obj.each(Mix.class(PicoDomObserverStatic), (fn, id) => {
47
+ self[id] = fn;
48
+ });
49
+
50
+ Obj.each(Mix.proto(PicoDomObserverInstance), (fn, id) => {
51
+ self.prototype[id] = fn;
52
+ });
53
+
54
+ // self.init.push(PicoDomObserverInstance.constructor);
55
+
56
+ return self;
57
+ }