@pacem/pacem-core 1.0.0-abel
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/LICENSE +191 -0
- package/NOTICE +4 -0
- package/dist/browser/pacem-core.js +9099 -0
- package/dist/browser/pacem-core.js.map +1 -0
- package/dist/browser/pacem-core.min.js +2 -0
- package/dist/browser/pacem-core.min.js.map +1 -0
- package/dist/bundle/pacem-core.min.mjs +3 -0
- package/dist/bundle/pacem-core.mjs +8479 -0
- package/dist/bundle/pacem-core.mjs.map +7 -0
- package/dist/esm/adapter.js +7 -0
- package/dist/esm/command.js +10 -0
- package/dist/esm/comparers.js +8 -0
- package/dist/esm/converters.js +70 -0
- package/dist/esm/decorators-next.js +783 -0
- package/dist/esm/decorators.js +736 -0
- package/dist/esm/defaults.js +5 -0
- package/dist/esm/events.js +89 -0
- package/dist/esm/eventtarget.js +131 -0
- package/dist/esm/expression.js +228 -0
- package/dist/esm/index-animations.js +1 -0
- package/dist/esm/index-behaviors.js +1 -0
- package/dist/esm/index-components.js +1 -0
- package/dist/esm/index-iife.js +3 -0
- package/dist/esm/index-logging.js +1 -0
- package/dist/esm/index-net.js +1 -0
- package/dist/esm/index-root.js +20 -0
- package/dist/esm/index-ui.js +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/logger.js +11 -0
- package/dist/esm/prefix.js +6 -0
- package/dist/esm/promise.js +34 -0
- package/dist/esm/regex.js +22 -0
- package/dist/esm/storage.js +56 -0
- package/dist/esm/template.js +4 -0
- package/dist/esm/transforms.js +248 -0
- package/dist/esm/types.js +10 -0
- package/dist/esm/utils-customelement.js +524 -0
- package/dist/esm/utils-customevent.js +60 -0
- package/dist/esm/utils.js +1073 -0
- package/package.json +37 -0
- package/typings/index.d.ts +2521 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/// <reference path="decorators.ts" />
|
|
2
|
+
//namespace Pacem {
|
|
3
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
4
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
5
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
6
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
7
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8
|
+
};
|
|
9
|
+
import { PCSS } from './prefix';
|
|
10
|
+
import { Utils } from './utils';
|
|
11
|
+
import { CustomElementUtils } from './utils-customelement';
|
|
12
|
+
import { Transformer } from './decorators';
|
|
13
|
+
function escapeRegExp(string) {
|
|
14
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
15
|
+
}
|
|
16
|
+
function buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {
|
|
17
|
+
let mode = 'char';
|
|
18
|
+
let output = 'full';
|
|
19
|
+
let cssAdd;
|
|
20
|
+
let cssRemove;
|
|
21
|
+
if (['line', 'word', 'char'].includes(modeOrOutput)) {
|
|
22
|
+
mode = modeOrOutput;
|
|
23
|
+
output = outputOrCssAdd;
|
|
24
|
+
cssAdd = cssAddOrRemove;
|
|
25
|
+
cssRemove = cssRemoveIfAny;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
output = modeOrOutput;
|
|
29
|
+
cssAdd = outputOrCssAdd;
|
|
30
|
+
cssRemove = cssAddOrRemove;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
mode,
|
|
34
|
+
output,
|
|
35
|
+
cssAdd: cssAdd ?? 'fill-green-container',
|
|
36
|
+
cssRemove: cssRemove ?? 'fill-red-container',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
class Transforms {
|
|
40
|
+
static highlight(src, query, css = PCSS + '-highlight') {
|
|
41
|
+
if (!query || !src)
|
|
42
|
+
return src;
|
|
43
|
+
let output = src.substring(0);
|
|
44
|
+
const trunks = query.substring(0).split(' ');
|
|
45
|
+
for (var j = 0; j < trunks.length; j++) {
|
|
46
|
+
const trunk = escapeRegExp(trunks[j]);
|
|
47
|
+
const regex = new RegExp('(?![^<>]*>)' + trunk, 'gi');
|
|
48
|
+
output = output.replace(regex, function (piece, index, whole) {
|
|
49
|
+
var startTagNdx, endTagIndex;
|
|
50
|
+
if ((startTagNdx = whole.indexOf('<', index)) != (endTagIndex = whole.indexOf('</', index)) || startTagNdx == -1)
|
|
51
|
+
return '<span class="' + css + '">' + piece + '</span>';
|
|
52
|
+
return piece;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return output;
|
|
56
|
+
}
|
|
57
|
+
static diff(a, b, modeOrOutput = 'full', outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny) {
|
|
58
|
+
const { mode, output, cssAdd, cssRemove } = buildDiffOptions(modeOrOutput, outputOrCssAdd, cssAddOrRemove, cssRemoveIfAny);
|
|
59
|
+
const tokens = Utils.diff(a, b, mode);
|
|
60
|
+
return tokens.reduce((acc, token) => {
|
|
61
|
+
const t = token.type;
|
|
62
|
+
if (t === '=') {
|
|
63
|
+
acc += token.value;
|
|
64
|
+
}
|
|
65
|
+
else if (t === '+' && output !== 'left' || t === '-' && output !== 'right') {
|
|
66
|
+
const lines = token.value.split(/\r?\n/);
|
|
67
|
+
const lUpperBound = lines.length - 1;
|
|
68
|
+
for (let l = 0; l <= lUpperBound; l++) {
|
|
69
|
+
const line = lines[l];
|
|
70
|
+
if (!Utils.isNullOrEmpty(line) || l < lUpperBound) {
|
|
71
|
+
const css = t === '-' ? cssRemove : cssAdd;
|
|
72
|
+
acc += `<span class="${PCSS}-token ${css} text-prewrap">${line || ' '}</span>`;
|
|
73
|
+
}
|
|
74
|
+
if (l < lUpperBound) {
|
|
75
|
+
acc += '\n';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return acc;
|
|
80
|
+
}, '');
|
|
81
|
+
}
|
|
82
|
+
static padleft(src, length, pad) {
|
|
83
|
+
return Utils.leftPad('' + src, length, pad);
|
|
84
|
+
}
|
|
85
|
+
static size(src) {
|
|
86
|
+
// TODO: use logarithms
|
|
87
|
+
if (!(src > 0))
|
|
88
|
+
return '-';
|
|
89
|
+
if (src < 1024 /* 1kB */)
|
|
90
|
+
return src + ' B';
|
|
91
|
+
if (src < 1_048_576 /* 1MB */)
|
|
92
|
+
return (src / 1024).toFixed(2) + ' kB';
|
|
93
|
+
if (src < 1_073_741_824 /* 1GB */)
|
|
94
|
+
return (src / 1_048_576).toFixed(2) + ' MB';
|
|
95
|
+
return (src / 1_073_741_824).toFixed(2) + ' GB';
|
|
96
|
+
}
|
|
97
|
+
static decToDeg(src, degSeparator = '° ', minSeparator = '\' ', secSeparator = '"') {
|
|
98
|
+
const sign = Math.sign(src);
|
|
99
|
+
src = Math.abs(src);
|
|
100
|
+
const deg = Math.floor(src), min0 = (src - deg) * 60, min = Math.floor(min0), sec0 = (min0 - min) * 60, sec = Math.floor(sec0);
|
|
101
|
+
return (sign < 0 ? '-' : '') + deg + degSeparator + min + minSeparator + sec + secSeparator;
|
|
102
|
+
}
|
|
103
|
+
static date(src, format, culture) {
|
|
104
|
+
var date = Utils.parseDate(src), lang = culture || navigator.language;
|
|
105
|
+
if (Utils.isNull(format) || typeof format === 'string') {
|
|
106
|
+
switch (format) {
|
|
107
|
+
case 'iso':
|
|
108
|
+
return date.toISOString();
|
|
109
|
+
case 'isodate':
|
|
110
|
+
return date.toISOString().substring(0, 10);
|
|
111
|
+
case 'localdate':
|
|
112
|
+
return `${date.getFullYear()}-${Utils.leftPad(date.getMonth() + 1, 2, '0')}-${Utils.leftPad(date.getDate(), 2, '0')}`;
|
|
113
|
+
case 'time':
|
|
114
|
+
case 'localtime':
|
|
115
|
+
return date.toLocaleTimeString(lang, { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false });
|
|
116
|
+
case 'full':
|
|
117
|
+
const offset = -(date.getTimezoneOffset() / 60);
|
|
118
|
+
var utc = '';
|
|
119
|
+
if (offset != 0)
|
|
120
|
+
utc = ' (UTC' + ((offset > 0 ? '+' : '-') + Math.abs(offset).toLocaleString()) + ')';
|
|
121
|
+
return date.toLocaleString(lang) + utc;
|
|
122
|
+
default:
|
|
123
|
+
return date.toLocaleDateString(lang);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
return date.toLocaleString(culture, format);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
static timespan(start, end, format, culture) {
|
|
131
|
+
const startDate = Utils.parseDate(start), endDate = Utils.parseDate(end), span = endDate.valueOf() - startDate.valueOf(), sign = span < 0 ? '-' : '', elapsed = Math.abs(span);
|
|
132
|
+
if (typeof format === 'object') {
|
|
133
|
+
const adj = { timeZone: 'UTC', hour12: false }, tweakedFormat = Utils.extend(adj, format);
|
|
134
|
+
return (sign || (format.sign ? '+' : '')) + Intl.DateTimeFormat(culture ?? navigator.language, tweakedFormat).format(elapsed);
|
|
135
|
+
}
|
|
136
|
+
// legacy output
|
|
137
|
+
const msecsPerDay = 86400000, msecsPerHr = 3600000, msecsPerMin = 60000, days = Math.floor(elapsed / msecsPerDay), hrs = Math.floor((elapsed % msecsPerDay) / msecsPerHr), mins = Math.floor((elapsed % msecsPerHr) / msecsPerMin), secs = Math.floor((elapsed % msecsPerMin) / 1000), msecs = Math.floor(elapsed % 1000);
|
|
138
|
+
return `${sign}${days}d ${hrs}h ${mins}m ${secs}s ${msecs}ms`;
|
|
139
|
+
}
|
|
140
|
+
static currency(src, currency, culture) {
|
|
141
|
+
return new Intl.NumberFormat(culture ?? navigator.language, { style: 'currency', currency: currency }).format(src);
|
|
142
|
+
}
|
|
143
|
+
static number(src, formatOrCulture, culture) {
|
|
144
|
+
if (typeof formatOrCulture === 'string') {
|
|
145
|
+
return new Intl.NumberFormat(formatOrCulture || navigator.language).format(src);
|
|
146
|
+
}
|
|
147
|
+
return new Intl.NumberFormat(culture ?? navigator.language, formatOrCulture).format(src);
|
|
148
|
+
}
|
|
149
|
+
static filter(src, filter) {
|
|
150
|
+
return src.filter(filter);
|
|
151
|
+
}
|
|
152
|
+
static orderby(src, prop) {
|
|
153
|
+
return src.sort((a, b) => {
|
|
154
|
+
if (!Utils.isNullOrEmpty(prop)) {
|
|
155
|
+
a = a[prop];
|
|
156
|
+
b = b[prop];
|
|
157
|
+
}
|
|
158
|
+
return a > b ? 1 : (a < b ? -1 : 0);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// #region RegExp
|
|
162
|
+
static isMatch(input, pattern, flags) {
|
|
163
|
+
return new RegExp(pattern, flags).test(input);
|
|
164
|
+
}
|
|
165
|
+
// #endregion
|
|
166
|
+
// #region shortcuts from 'Utils'
|
|
167
|
+
static isEmpty(obj) {
|
|
168
|
+
return Utils.isEmpty(obj);
|
|
169
|
+
}
|
|
170
|
+
static isNull(obj) {
|
|
171
|
+
return Utils.isNull(obj);
|
|
172
|
+
}
|
|
173
|
+
static isNullOrEmpty(obj) {
|
|
174
|
+
return Utils.isNullOrEmpty(obj);
|
|
175
|
+
}
|
|
176
|
+
static getCssVariable(name) {
|
|
177
|
+
return Utils.Css.getVariableValue(name);
|
|
178
|
+
}
|
|
179
|
+
static getQuerystring(name) {
|
|
180
|
+
return Utils.URIs.parseQuery()[name];
|
|
181
|
+
}
|
|
182
|
+
// #endregion
|
|
183
|
+
// #region shortcuts from 'CustomElementUtils'
|
|
184
|
+
static importThemeWebFonts() {
|
|
185
|
+
return CustomElementUtils.Theme.importWebFonts();
|
|
186
|
+
}
|
|
187
|
+
static findHostContext(element) {
|
|
188
|
+
return CustomElementUtils.findHostContext(element);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
__decorate([
|
|
192
|
+
Transformer()
|
|
193
|
+
], Transforms, "highlight", null);
|
|
194
|
+
__decorate([
|
|
195
|
+
Transformer()
|
|
196
|
+
], Transforms, "diff", null);
|
|
197
|
+
__decorate([
|
|
198
|
+
Transformer()
|
|
199
|
+
], Transforms, "padleft", null);
|
|
200
|
+
__decorate([
|
|
201
|
+
Transformer()
|
|
202
|
+
], Transforms, "size", null);
|
|
203
|
+
__decorate([
|
|
204
|
+
Transformer()
|
|
205
|
+
], Transforms, "decToDeg", null);
|
|
206
|
+
__decorate([
|
|
207
|
+
Transformer()
|
|
208
|
+
], Transforms, "date", null);
|
|
209
|
+
__decorate([
|
|
210
|
+
Transformer()
|
|
211
|
+
], Transforms, "timespan", null);
|
|
212
|
+
__decorate([
|
|
213
|
+
Transformer()
|
|
214
|
+
], Transforms, "currency", null);
|
|
215
|
+
__decorate([
|
|
216
|
+
Transformer()
|
|
217
|
+
], Transforms, "number", null);
|
|
218
|
+
__decorate([
|
|
219
|
+
Transformer()
|
|
220
|
+
], Transforms, "filter", null);
|
|
221
|
+
__decorate([
|
|
222
|
+
Transformer()
|
|
223
|
+
], Transforms, "orderby", null);
|
|
224
|
+
__decorate([
|
|
225
|
+
Transformer('regex.')
|
|
226
|
+
], Transforms, "isMatch", null);
|
|
227
|
+
__decorate([
|
|
228
|
+
Transformer()
|
|
229
|
+
], Transforms, "isEmpty", null);
|
|
230
|
+
__decorate([
|
|
231
|
+
Transformer()
|
|
232
|
+
], Transforms, "isNull", null);
|
|
233
|
+
__decorate([
|
|
234
|
+
Transformer()
|
|
235
|
+
], Transforms, "isNullOrEmpty", null);
|
|
236
|
+
__decorate([
|
|
237
|
+
Transformer('cssvar')
|
|
238
|
+
], Transforms, "getCssVariable", null);
|
|
239
|
+
__decorate([
|
|
240
|
+
Transformer('querystring')
|
|
241
|
+
], Transforms, "getQuerystring", null);
|
|
242
|
+
__decorate([
|
|
243
|
+
Transformer()
|
|
244
|
+
], Transforms, "importThemeWebFonts", null);
|
|
245
|
+
__decorate([
|
|
246
|
+
Transformer('host')
|
|
247
|
+
], Transforms, "findHostContext", null);
|
|
248
|
+
//}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="events.ts" />
|
|
2
|
+
export const Type = Function;
|
|
3
|
+
;
|
|
4
|
+
// #region CONSTS
|
|
5
|
+
export const WATCH_PROPS_VAR = 'pacem:properties';
|
|
6
|
+
export const INSTANCE_BINDINGS_VAR = 'pacem:custom-element:bindings';
|
|
7
|
+
export const INSTANCE_HOST_VAR = 'pacem:custom-element:host';
|
|
8
|
+
export const INSTANCE_SCOPE_VAR = 'pacem:custom-element:scope';
|
|
9
|
+
// #endregion
|
|
10
|
+
//}
|