@eqproject/eqp-dynamic-module 2.10.67 → 2.10.69
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/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +186 -53
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +38 -3
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +3 -1
- package/esm2020/lib/utils/google-fonts-injector.mjs +78 -0
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +316 -67
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +301 -55
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +19 -1
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +4 -0
- package/lib/utils/google-fonts-injector.d.ts +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const SYSTEM_FONTS = new Set([
|
|
2
|
+
// Generici CSS
|
|
3
|
+
'sans-serif', 'serif', 'monospace', 'cursive', 'fantasy', 'system-ui',
|
|
4
|
+
'inherit', 'initial', 'unset', 'revert',
|
|
5
|
+
// Famiglie sistema Windows / Mac / Linux
|
|
6
|
+
'-apple-system', 'blinkmacsystemfont', 'segoe ui', 'helvetica neue',
|
|
7
|
+
'helvetica', 'arial', 'verdana', 'tahoma', 'trebuchet ms', 'georgia',
|
|
8
|
+
'times new roman', 'times', 'courier new', 'courier', 'lucida console',
|
|
9
|
+
'lucida sans unicode', 'impact', 'comic sans ms', 'palatino linotype',
|
|
10
|
+
'book antiqua', 'palatino', 'garamond', 'bookman',
|
|
11
|
+
]);
|
|
12
|
+
const FIELD_CSS_KEYS = [
|
|
13
|
+
'TextFieldStyleCSS', 'TextareaFieldStyleCSS', 'BooleanFieldStyleCSS',
|
|
14
|
+
'DateFieldStyleCSS', 'NumericFieldStyleCSS', 'AttachmentFieldStyleCSS',
|
|
15
|
+
'ImageFieldStyleCSS', 'ListValueFieldStyleCSS', 'ImageSelectorFieldStyleCSS',
|
|
16
|
+
'LabelFieldStyleCSS', 'ImageWithMarkersFieldStyleCSS', 'ActionButtonFieldStyleCSS',
|
|
17
|
+
];
|
|
18
|
+
function collectCssStrings(form) {
|
|
19
|
+
const result = [];
|
|
20
|
+
if (form.ThemeCSS)
|
|
21
|
+
result.push(form.ThemeCSS);
|
|
22
|
+
if (form.TitleCSS)
|
|
23
|
+
result.push(form.TitleCSS);
|
|
24
|
+
for (const field of form.Fields ?? []) {
|
|
25
|
+
const f = field;
|
|
26
|
+
if (f.FieldstyleCSS)
|
|
27
|
+
result.push(f.FieldstyleCSS);
|
|
28
|
+
if (f.LabelstyleCSS)
|
|
29
|
+
result.push(f.LabelstyleCSS);
|
|
30
|
+
for (const key of FIELD_CSS_KEYS) {
|
|
31
|
+
const cssObj = f[key];
|
|
32
|
+
if (cssObj && typeof cssObj === 'object') {
|
|
33
|
+
for (const val of Object.values(cssObj)) {
|
|
34
|
+
if (typeof val === 'string' && val)
|
|
35
|
+
result.push(val);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function extractGoogleFontNames(cssStrings) {
|
|
43
|
+
const found = new Set();
|
|
44
|
+
for (const css of cssStrings) {
|
|
45
|
+
const regex = /font-family\s*:\s*([^;]+)/gi;
|
|
46
|
+
let match;
|
|
47
|
+
while ((match = regex.exec(css)) !== null) {
|
|
48
|
+
for (const part of match[1].split(',')) {
|
|
49
|
+
const name = part.trim().replace(/^['"]|['"]$/g, '').trim();
|
|
50
|
+
if (name && !SYSTEM_FONTS.has(name.toLowerCase())) {
|
|
51
|
+
found.add(name);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return Array.from(found);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Scansiona tutte le stringhe CSS del form (ThemeCSS, TitleCSS, FieldStyleCSS tipizzati)
|
|
60
|
+
* ed inietta un <link> a Google Fonts per ogni font non-di-sistema trovato.
|
|
61
|
+
* Idempotente: non aggiunge link già presenti nel DOM.
|
|
62
|
+
*/
|
|
63
|
+
export function injectGoogleFontsFromForm(form) {
|
|
64
|
+
if (!form || typeof document === 'undefined')
|
|
65
|
+
return;
|
|
66
|
+
const fonts = extractGoogleFontNames(collectCssStrings(form));
|
|
67
|
+
for (const font of fonts) {
|
|
68
|
+
const id = `gfont-${font.replace(/\s+/g, '-').toLowerCase()}`;
|
|
69
|
+
if (document.getElementById(id))
|
|
70
|
+
continue;
|
|
71
|
+
const link = document.createElement('link');
|
|
72
|
+
link.id = id;
|
|
73
|
+
link.rel = 'stylesheet';
|
|
74
|
+
link.href = `https://fonts.bunny.net/css2?family=${encodeURIComponent(font)}:ital,wght@0,400;0,700;1,400&display=swap`;
|
|
75
|
+
document.head.appendChild(link);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWZvbnRzLWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvdXRpbHMvZ29vZ2xlLWZvbnRzLWluamVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFTO0lBQ25DLGVBQWU7SUFDZixZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVc7SUFDckUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtJQUN2Qyx5Q0FBeUM7SUFDekMsZUFBZSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0I7SUFDbkUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTO0lBQ3BFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGdCQUFnQjtJQUN0RSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLG1CQUFtQjtJQUNyRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO0NBQ2xELENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHO0lBQ3JCLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQjtJQUNwRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUI7SUFDdEUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsNEJBQTRCO0lBQzVFLG9CQUFvQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQjtDQUNuRixDQUFDO0FBRUYsU0FBUyxpQkFBaUIsQ0FBQyxJQUFVO0lBQ25DLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRO1FBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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QUFDO1FBQ3ZILFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5cbmNvbnN0IFNZU1RFTV9GT05UUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIC8vIEdlbmVyaWNpIENTU1xuICAnc2Fucy1zZXJpZicsICdzZXJpZicsICdtb25vc3BhY2UnLCAnY3Vyc2l2ZScsICdmYW50YXN5JywgJ3N5c3RlbS11aScsXG4gICdpbmhlcml0JywgJ2luaXRpYWwnLCAndW5zZXQnLCAncmV2ZXJ0JyxcbiAgLy8gRmFtaWdsaWUgc2lzdGVtYSBXaW5kb3dzIC8gTWFjIC8gTGludXhcbiAgJy1hcHBsZS1zeXN0ZW0nLCAnYmxpbmttYWNzeXN0ZW1mb250JywgJ3NlZ29lIHVpJywgJ2hlbHZldGljYSBuZXVlJyxcbiAgJ2hlbHZldGljYScsICdhcmlhbCcsICd2ZXJkYW5hJywgJ3RhaG9tYScsICd0cmVidWNoZXQgbXMnLCAnZ2VvcmdpYScsXG4gICd0aW1lcyBuZXcgcm9tYW4nLCAndGltZXMnLCAnY291cmllciBuZXcnLCAnY291cmllcicsICdsdWNpZGEgY29uc29sZScsXG4gICdsdWNpZGEgc2FucyB1bmljb2RlJywgJ2ltcGFjdCcsICdjb21pYyBzYW5zIG1zJywgJ3BhbGF0aW5vIGxpbm90eXBlJyxcbiAgJ2Jvb2sgYW50aXF1YScsICdwYWxhdGlubycsICdnYXJhbW9uZCcsICdib29rbWFuJyxcbl0pO1xuXG5jb25zdCBGSUVMRF9DU1NfS0VZUyA9IFtcbiAgJ1RleHRGaWVsZFN0eWxlQ1NTJywgJ1RleHRhcmVhRmllbGRTdHlsZUNTUycsICdCb29sZWFuRmllbGRTdHlsZUNTUycsXG4gICdEYXRlRmllbGRTdHlsZUNTUycsICdOdW1lcmljRmllbGRTdHlsZUNTUycsICdBdHRhY2htZW50RmllbGRTdHlsZUNTUycsXG4gICdJbWFnZUZpZWxkU3R5bGVDU1MnLCAnTGlzdFZhbHVlRmllbGRTdHlsZUNTUycsICdJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUycsXG4gICdMYWJlbEZpZWxkU3R5bGVDU1MnLCAnSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MnLCAnQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUycsXG5dO1xuXG5mdW5jdGlvbiBjb2xsZWN0Q3NzU3RyaW5ncyhmb3JtOiBGb3JtKTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIGlmIChmb3JtLlRoZW1lQ1NTKSByZXN1bHQucHVzaChmb3JtLlRoZW1lQ1NTKTtcbiAgaWYgKGZvcm0uVGl0bGVDU1MpIHJlc3VsdC5wdXNoKGZvcm0uVGl0bGVDU1MpO1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZvcm0uRmllbGRzID8/IFtdKSB7XG4gICAgY29uc3QgZiA9IGZpZWxkIGFzIGFueTtcbiAgICBpZiAoZi5GaWVsZHN0eWxlQ1NTKSByZXN1bHQucHVzaChmLkZpZWxkc3R5bGVDU1MpO1xuICAgIGlmIChmLkxhYmVsc3R5bGVDU1MpIHJlc3VsdC5wdXNoKGYuTGFiZWxzdHlsZUNTUyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgRklFTERfQ1NTX0tFWVMpIHtcbiAgICAgIGNvbnN0IGNzc09iaiA9IGZba2V5XTtcbiAgICAgIGlmIChjc3NPYmogJiYgdHlwZW9mIGNzc09iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LnZhbHVlcyhjc3NPYmopKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmIHZhbCkgcmVzdWx0LnB1c2godmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBleHRyYWN0R29vZ2xlRm9udE5hbWVzKGNzc1N0cmluZ3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBmb3VuZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNzcyBvZiBjc3NTdHJpbmdzKSB7XG4gICAgY29uc3QgcmVnZXggPSAvZm9udC1mYW1pbHlcXHMqOlxccyooW147XSspL2dpO1xuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhjc3MpKSAhPT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIG1hdGNoWzFdLnNwbGl0KCcsJykpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhcnQudHJpbSgpLnJlcGxhY2UoL15bJ1wiXXxbJ1wiXSQvZywgJycpLnRyaW0oKTtcbiAgICAgICAgaWYgKG5hbWUgJiYgIVNZU1RFTV9GT05UUy5oYXMobmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIGZvdW5kLmFkZChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gQXJyYXkuZnJvbShmb3VuZCk7XG59XG5cbi8qKlxuICogU2NhbnNpb25hIHR1dHRlIGxlIHN0cmluZ2hlIENTUyBkZWwgZm9ybSAoVGhlbWVDU1MsIFRpdGxlQ1NTLCBGaWVsZFN0eWxlQ1NTIHRpcGl6emF0aSlcbiAqIGVkIGluaWV0dGEgdW4gPGxpbms+IGEgR29vZ2xlIEZvbnRzIHBlciBvZ25pIGZvbnQgbm9uLWRpLXNpc3RlbWEgdHJvdmF0by5cbiAqIElkZW1wb3RlbnRlOiBub24gYWdnaXVuZ2UgbGluayBnacOgIHByZXNlbnRpIG5lbCBET00uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RHb29nbGVGb250c0Zyb21Gb3JtKGZvcm06IEZvcm0gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGlmICghZm9ybSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gIGNvbnN0IGZvbnRzID0gZXh0cmFjdEdvb2dsZUZvbnROYW1lcyhjb2xsZWN0Q3NzU3RyaW5ncyhmb3JtKSk7XG4gIGZvciAoY29uc3QgZm9udCBvZiBmb250cykge1xuICAgIGNvbnN0IGlkID0gYGdmb250LSR7Zm9udC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX1gO1xuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgbGluay5pZCA9IGlkO1xuICAgIGxpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgIGxpbmsuaHJlZiA9IGBodHRwczovL2ZvbnRzLmJ1bm55Lm5ldC9jc3MyP2ZhbWlseT0ke2VuY29kZVVSSUNvbXBvbmVudChmb250KX06aXRhbCx3Z2h0QDAsNDAwOzAsNzAwOzEsNDAwJmRpc3BsYXk9c3dhcGA7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcbiAgfVxufVxuIl19
|