@kizmann/pico-js 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pico-js.browser.js +1 -1
- package/dist/pico-js.browser.js.map +1 -1
- package/dist/pico-js.esm.js +1 -1
- package/dist/pico-js.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/dom/DomAttribute.js +22 -0
- package/src/dom/DomEvent.js +14 -7
- package/src/dom/DomFinder.js +8 -1
- package/src/dom/DomObserver.js +1 -22
- package/src/dom/DomPopover.js +264 -0
- package/src/dom/DomRectangle.js +11 -0
- package/src/format/FormatOption.js +3 -3
- package/src/index.browser.js +7 -1
- package/src/index.esm.js +12 -2
- package/src/now/NowFormat.js +5 -2
- package/src/utils/Array.js +62 -31
- package/src/utils/Dom.js +6 -0
- package/src/utils/Mixed.js +8 -0
- package/src/utils/Runner.js +21 -11
- package/src/utils/{Event.js → Signal.js} +8 -7
- package/types/dom/DomEvent.d.ts +2 -1
- package/types/dom/DomFinder.d.ts +1 -0
- package/types/dom/DomObserver.d.ts +0 -9
- package/types/dom/DomPopover.d.ts +17 -0
- package/types/dom/DomRectangle.d.ts +1 -0
- package/types/index.esm.d.ts +6 -2
- package/types/now/NowFormat.d.ts +3 -0
- package/types/utils/Array.d.ts +20 -2
- package/types/utils/Dom.d.ts +6 -0
- package/types/utils/Runner.d.ts +2 -2
- package/types/utils/{Event.d.ts → Signal.d.ts} +12 -12
package/package.json
CHANGED
package/src/dom/DomAttribute.js
CHANGED
|
@@ -130,6 +130,28 @@ export class PicoDomAttributeInstance
|
|
|
130
130
|
value = { ...styles, ...value };
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
if ( value.translate ) {
|
|
134
|
+
value.transform = `translate3d(${value.translate.join(',')}, 0)`;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
delete value.translate;
|
|
138
|
+
|
|
139
|
+
if ( Mix.isNum(value.top) ) {
|
|
140
|
+
value.top += 'px';
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if ( Mix.isNum(value.left) ) {
|
|
144
|
+
value.left += 'px';
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if ( Mix.isNum(value.width) ) {
|
|
148
|
+
value.width += 'px';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if ( Mix.isNum(value.height) ) {
|
|
152
|
+
value.height += 'px';
|
|
153
|
+
}
|
|
154
|
+
|
|
133
155
|
this.attr('style', value);
|
|
134
156
|
|
|
135
157
|
return this;
|
package/src/dom/DomEvent.js
CHANGED
|
@@ -100,9 +100,10 @@ export class PicoDomEventInstance
|
|
|
100
100
|
options = { id: options };
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
// geht so nicht
|
|
104
|
+
// if ( Mix.isArr(event) ) {
|
|
105
|
+
// return (Arr.each(event, (e) => this.on(e, cb, options, pause, selector)), this);
|
|
106
|
+
// }
|
|
106
107
|
|
|
107
108
|
let fn = (e) => {
|
|
108
109
|
cb.call(e.target, e, e.target);
|
|
@@ -127,10 +128,15 @@ export class PicoDomEventInstance
|
|
|
127
128
|
*/
|
|
128
129
|
off(event, selector = null, options = {})
|
|
129
130
|
{
|
|
130
|
-
if ( Mix.
|
|
131
|
-
|
|
131
|
+
if ( Mix.isPrim(options) ) {
|
|
132
|
+
options = { id: options };
|
|
132
133
|
}
|
|
133
134
|
|
|
135
|
+
// geht so nicht
|
|
136
|
+
// if ( Mix.isArr(event) ) {
|
|
137
|
+
// return (Arr.each(event, (e) => this.off(e, ...arguments)), this);
|
|
138
|
+
// }
|
|
139
|
+
|
|
134
140
|
if ( Mix.isObj(selector) ) {
|
|
135
141
|
(options = selector, selector = null);
|
|
136
142
|
}
|
|
@@ -220,11 +226,12 @@ export class PicoDomEventInstance
|
|
|
220
226
|
* @example Dom.find("div").fire("click")
|
|
221
227
|
*
|
|
222
228
|
* @param {string} event Event name
|
|
229
|
+
* @param {object} [detail] Event detail
|
|
223
230
|
* @returns {PicoDom} Current instance
|
|
224
231
|
*/
|
|
225
|
-
fire(event)
|
|
232
|
+
fire(event, detail = {})
|
|
226
233
|
{
|
|
227
|
-
let callback = new
|
|
234
|
+
let callback = new CustomEvent(event, { detail });
|
|
228
235
|
|
|
229
236
|
this.each((el) => {
|
|
230
237
|
el.dispatchEvent(callback);
|
package/src/dom/DomFinder.js
CHANGED
|
@@ -443,6 +443,13 @@ export class PicoDomFinderInstance
|
|
|
443
443
|
return null;
|
|
444
444
|
}
|
|
445
445
|
|
|
446
|
+
upnode(selector)
|
|
447
|
+
{
|
|
448
|
+
return Dom.find(...[
|
|
449
|
+
this.closest(selector)
|
|
450
|
+
]);
|
|
451
|
+
}
|
|
452
|
+
|
|
446
453
|
/**
|
|
447
454
|
* Get previous element
|
|
448
455
|
*
|
|
@@ -610,7 +617,7 @@ export class PicoDomFinderInstance
|
|
|
610
617
|
contains(selector)
|
|
611
618
|
{
|
|
612
619
|
// Has child of selector
|
|
613
|
-
return this.
|
|
620
|
+
return this.el.contains(selector);
|
|
614
621
|
}
|
|
615
622
|
|
|
616
623
|
}
|
package/src/dom/DomObserver.js
CHANGED
|
@@ -15,28 +15,7 @@ export class PicoDomObserverStatic
|
|
|
15
15
|
*/
|
|
16
16
|
export class PicoDomObserverInstance
|
|
17
17
|
{
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Get or set element value
|
|
21
|
-
*
|
|
22
|
-
* @example Dom.find("input").value("hello")
|
|
23
|
-
*
|
|
24
|
-
* @param {any} [value] New value
|
|
25
|
-
* @returns {any|PicoDom} Value or instance
|
|
26
|
-
*/
|
|
27
|
-
value(value = undefined)
|
|
28
|
-
{
|
|
29
|
-
if ( value === undefined ) {
|
|
30
|
-
return this.el.value;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
this.each((el) => {
|
|
34
|
-
el.value = value;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
|
|
18
|
+
//
|
|
40
19
|
}
|
|
41
20
|
|
|
42
21
|
/**
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Arr, Mix, Obj, Dom } from "../index.esm.js";
|
|
2
|
+
import { PicoDom } from "../utils/Dom.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @memberof PicoDom
|
|
6
|
+
*/
|
|
7
|
+
export class PicoDomPopoverStatic
|
|
8
|
+
{
|
|
9
|
+
//
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @memberof PicoDom
|
|
14
|
+
* @extends {PicoDom}
|
|
15
|
+
*/
|
|
16
|
+
export class PicoDomPopoverInstance
|
|
17
|
+
{
|
|
18
|
+
|
|
19
|
+
popover(target, position = 'botttom-center', options = {})
|
|
20
|
+
{
|
|
21
|
+
if ( /^(top|bottom)-/.test(position) ) {
|
|
22
|
+
return this.popoverY(target, position, options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if ( /^(left|right)-/.test(position) ) {
|
|
26
|
+
return this.popoverX(target, position, options);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
popoverY(target, position = 'bottom-center', options = {})
|
|
31
|
+
{
|
|
32
|
+
target = Dom.find(target);
|
|
33
|
+
|
|
34
|
+
let [rect, self] = [
|
|
35
|
+
target.rect(), this.rect()
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
if ( options.x ) {
|
|
39
|
+
rect = {...rect, left: options.x, width: 1 };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if ( options.y ) {
|
|
43
|
+
rect = {...rect, top: options.y, height: 1 };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if ( ! options.width ) {
|
|
47
|
+
// self.width = rect.width;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let [offset, recto] = [
|
|
51
|
+
{ x: 0, y: 0 }, rect.width - self.width
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
if ( /^top-/.test(position) ) {
|
|
55
|
+
offset.y = rect.top - self.height;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if ( /^bottom-/.test(position) ) {
|
|
59
|
+
offset.y = rect.top + rect.height;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if ( /-start$/.test(position) ) {
|
|
63
|
+
offset.x = rect.left;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if ( /-center$/.test(position) ) {
|
|
67
|
+
offset.x = rect.left + (recto * 0.5);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if ( /-end$/.test(position) ) {
|
|
71
|
+
offset.x = rect.left + recto;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let inverse = position;
|
|
75
|
+
|
|
76
|
+
if ( /^top-/.test(position) ) {
|
|
77
|
+
inverse = inverse.replace(/^top-/, 'bottom-');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if ( /^bottom-/.test(position) ) {
|
|
81
|
+
inverse = inverse.replace(/^bottom-/, 'top-');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let win = {
|
|
85
|
+
x: window.innerWidth, y: window.innerHeight
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
let broken = offset.y + self.height > win.y || offset.y < 0;
|
|
89
|
+
|
|
90
|
+
if ( offset.y < 0 ) {
|
|
91
|
+
broken = true;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const rebound = {
|
|
95
|
+
...options, offset
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
if ( broken && ! options.offset ) {
|
|
99
|
+
return this.popoverY(target, inverse, rebound);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if ( broken && options.offset ) {
|
|
103
|
+
offset = options.offset;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if ( offset.y < 0 ) {
|
|
107
|
+
offset.y = 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if ( offset.y + self.height > win.height ) {
|
|
111
|
+
offset.y = win.height - self.height;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let result = this.popoverNormalize(...[
|
|
115
|
+
offset, self, rect, win
|
|
116
|
+
]);
|
|
117
|
+
|
|
118
|
+
if ( broken ) {
|
|
119
|
+
position = 'auto';
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return { ...result, position };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
popoverX(target, position = 'left-center', options = {})
|
|
126
|
+
{
|
|
127
|
+
target = Dom.find(target);
|
|
128
|
+
|
|
129
|
+
let [rect, self] = [
|
|
130
|
+
target.rect(), this.rect()
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
if ( ! options.height ) {
|
|
134
|
+
// self.height = rect.height;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
let [offset, recto] = [
|
|
138
|
+
{ x: 0, y: 0 }, rect.height - self.height
|
|
139
|
+
];
|
|
140
|
+
|
|
141
|
+
if ( /^left-/.test(position) ) {
|
|
142
|
+
offset.x = rect.left - self.width;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if ( /^right-/.test(position) ) {
|
|
146
|
+
offset.x = rect.left + rect.width;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if ( /-start$/.test(position) ) {
|
|
150
|
+
offset.y = rect.top;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if ( /-center/.test(position) ) {
|
|
154
|
+
offset.y = rect.top + (recto * 0.5);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if ( /-end/.test(position) ) {
|
|
158
|
+
offset.y = rect.top + recto;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
let inverse = position;
|
|
162
|
+
|
|
163
|
+
if ( /^left-/.test(position) ) {
|
|
164
|
+
inverse = inverse.replace(/^left-/, 'right-');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if ( /^right-/.test(position) ) {
|
|
168
|
+
inverse = inverse.replace(/^right-/, 'left-');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
let win = {
|
|
172
|
+
x: window.innerWidth, y: window.innerHeight
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
let broken = offset.y + self.height > win.y;
|
|
176
|
+
|
|
177
|
+
if ( offset.y < 0 ) {
|
|
178
|
+
broken = true;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const rebound = {
|
|
182
|
+
...options, offset
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
if ( broken && ! options.offset ) {
|
|
186
|
+
return this.popoverX(target, inverse, rebound);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if ( broken && options.offset ) {
|
|
190
|
+
offset = options.offset;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
let result = this.popoverNormalize(...[
|
|
194
|
+
offset, self, rect, win
|
|
195
|
+
]);
|
|
196
|
+
|
|
197
|
+
if ( broken ) {
|
|
198
|
+
position = 'auto';
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return { ...result, position };
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
popoverNormalize(offset, self, rect, win)
|
|
205
|
+
{
|
|
206
|
+
const scroll = Dom.find(document.body).scroll();
|
|
207
|
+
|
|
208
|
+
if ( offset.y < 0 ) {
|
|
209
|
+
offset.y = 0;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if ( offset.y + self.height > win.y ) {
|
|
213
|
+
offset.y = win.y - self.height;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if ( offset.x < 0 ) {
|
|
217
|
+
offset.x = 0;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const dw = document.body.clientWidth;
|
|
221
|
+
|
|
222
|
+
if ( offset.x + self.width > win.x ) {
|
|
223
|
+
offset.x = win.x - self.width - (win.x - dw);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
offset = {
|
|
227
|
+
x: offset.x + scroll.left, y: offset.y + scroll.top
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
Obj.each(offset, (v, k) => {
|
|
231
|
+
offset[k] = Math.round(v);
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
offset.self = {
|
|
235
|
+
width: self.width, height: self.height
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
offset.rect = {
|
|
239
|
+
width: rect.width, height: rect.height
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
return offset;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @param {typeof PicoDom} self
|
|
249
|
+
* @returns {typeof PicoDom}
|
|
250
|
+
*/
|
|
251
|
+
export const PicoDomPopoverPlugin = function (self) {
|
|
252
|
+
|
|
253
|
+
Obj.each(Mix.class(PicoDomPopoverStatic), (fn, id) => {
|
|
254
|
+
self[id] = fn;
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
Obj.each(Mix.proto(PicoDomPopoverInstance), (fn, id) => {
|
|
258
|
+
self.prototype[id] = fn;
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// self.init.push(PicoDomPopoverInstance.constructor);
|
|
262
|
+
|
|
263
|
+
return self;
|
|
264
|
+
}
|
package/src/dom/DomRectangle.js
CHANGED
|
@@ -30,6 +30,17 @@ export class PicoDomRectangleStatic
|
|
|
30
30
|
*/
|
|
31
31
|
export class PicoDomRectangleInstance
|
|
32
32
|
{
|
|
33
|
+
rect(fallback = {})
|
|
34
|
+
{
|
|
35
|
+
const rect = this.el.getBoundingClientRect();
|
|
36
|
+
|
|
37
|
+
if ( rect == null ) {
|
|
38
|
+
return fallback;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return rect.toJSON();
|
|
42
|
+
}
|
|
43
|
+
|
|
33
44
|
/**
|
|
34
45
|
* Get margin values
|
|
35
46
|
*
|
|
@@ -30,7 +30,7 @@ export class PicoFormatOptionStatic
|
|
|
30
30
|
return this.castOption(key, val, null, space);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
return result.join(';') + ';';
|
|
33
|
+
return result.join(space ? '; ' : ';') + ';';
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/**
|
|
@@ -57,10 +57,10 @@ export class PicoFormatOptionStatic
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
let result = Arr.map(value, (v, k) => {
|
|
60
|
-
return this.castOption(k, v, key);
|
|
60
|
+
return this.castOption(k, v, key, space);
|
|
61
61
|
});
|
|
62
62
|
|
|
63
|
-
return result.join(';');
|
|
63
|
+
return result.join(space ? '; ' : ';');
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/**
|
package/src/index.browser.js
CHANGED
|
@@ -27,4 +27,10 @@ import * as pi from "./index.esm.js";
|
|
|
27
27
|
/**
|
|
28
28
|
* @type {PicoLibrary}
|
|
29
29
|
*/
|
|
30
|
-
globalThis.pi = pi;
|
|
30
|
+
globalThis.pi = pi;
|
|
31
|
+
|
|
32
|
+
globalThis.addEventListener && globalThis.addEventListener('beforeunload', (e) => {
|
|
33
|
+
pi.Arr.map(pi.Dom.$events, ({ el, cb, event }) => {
|
|
34
|
+
return (el.removeEventListener(event, cb), null);
|
|
35
|
+
});
|
|
36
|
+
});
|
package/src/index.esm.js
CHANGED
|
@@ -5,7 +5,7 @@ import { PicoArray, default as Arr } from "./utils/Array.js";
|
|
|
5
5
|
import { PicoObject, default as Obj } from "./utils/Object.js";
|
|
6
6
|
import { PicoMixed, default as Mix } from "./utils/Mixed.js";
|
|
7
7
|
import { PicoHash, default as Hash } from "./utils/Hash.js";
|
|
8
|
-
import {
|
|
8
|
+
import { PicoSignal, default as Signal } from "./utils/Signal.js";
|
|
9
9
|
import { PicoLocale, default as Locale } from "./utils/Locale.js";
|
|
10
10
|
import { PicoCookie, default as Cookie } from "./utils/Cookie.js";
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@ const Now = NowBuilder();
|
|
|
25
25
|
const For = ForBuilder();
|
|
26
26
|
|
|
27
27
|
export {
|
|
28
|
-
Dom, Now, For, Run, Str, Num, Arr, Obj, Mix, Hash,
|
|
28
|
+
Dom, Now, For, Run, Str, Num, Arr, Obj, Mix, Hash, Signal, Locale, Cookie
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
import { PicoDom, default as DomBuilder } from "./utils/Dom.js";
|
|
@@ -61,6 +61,16 @@ export const Any = new Proxy({}, {
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @type {typeof PicoMixed}
|
|
66
|
+
*/
|
|
67
|
+
export const Event = new Proxy({}, {
|
|
68
|
+
get: function (target, prop) {
|
|
69
|
+
console.warn(`Event.${prop} is deprecated, use Signal.${prop}() instead.`);
|
|
70
|
+
return (...args) => Signal[prop](...args);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
64
74
|
/**
|
|
65
75
|
* @returns {string}
|
|
66
76
|
*/
|
package/src/now/NowFormat.js
CHANGED
|
@@ -5,7 +5,10 @@ export const NOW_FORMAT = {
|
|
|
5
5
|
'L': 'DD/MM/YYYY',
|
|
6
6
|
'LL': 'MMMM DD, YYYY',
|
|
7
7
|
'LLL': 'MMMM DD, YYYY HH:mm',
|
|
8
|
-
'LLLL': 'dddd, MMMM DD, YYYY HH:mm'
|
|
8
|
+
'LLLL': 'dddd, MMMM DD, YYYY HH:mm',
|
|
9
|
+
'LT': 'HH:mm',
|
|
10
|
+
'LTS': 'HH:mm:ss',
|
|
11
|
+
'LTSD': 'DD/MM/YYYY HH:mm:ss',
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
export const NOW_PARSE = {
|
|
@@ -107,7 +110,7 @@ export class PicoNowFormatInstance
|
|
|
107
110
|
format(format = 'YYYY-MM-DD HH:mm:ss')
|
|
108
111
|
{
|
|
109
112
|
if ( Obj.has(NOW_FORMAT, format) ) {
|
|
110
|
-
format = Locale
|
|
113
|
+
format = Locale.$text[format] ?? NOW_FORMAT[format];
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
format = format.replace('dddd', () => {
|