tuain-ng-forms-lib 17.4.0 → 19.0.3
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/fesm2022/tuain-ng-forms-lib.mjs +87 -53
- package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/interfaces/sse-live-connection.interface.d.ts +8 -0
- package/lib/services/sse-live-connection.service.d.ts +8 -0
- package/package.json +1 -3
- package/esm2022/lib/classes/forms/action.mjs +0 -112
- package/esm2022/lib/classes/forms/element.mjs +0 -25
- package/esm2022/lib/classes/forms/field.mjs +0 -481
- package/esm2022/lib/classes/forms/form.constants.mjs +0 -55
- package/esm2022/lib/classes/forms/form.mjs +0 -587
- package/esm2022/lib/classes/forms/piece-propagate.mjs +0 -36
- package/esm2022/lib/classes/forms/piece.mjs +0 -139
- package/esm2022/lib/classes/forms/section.mjs +0 -150
- package/esm2022/lib/classes/forms/subsection.mjs +0 -96
- package/esm2022/lib/classes/forms/table/action.mjs +0 -49
- package/esm2022/lib/classes/forms/table/column.mjs +0 -74
- package/esm2022/lib/classes/forms/table/row-data.mjs +0 -114
- package/esm2022/lib/classes/forms/table/table.mjs +0 -537
- package/esm2022/lib/components/elements/action.component.mjs +0 -71
- package/esm2022/lib/components/elements/field.component.mjs +0 -113
- package/esm2022/lib/components/elements/layout/element.component.mjs +0 -23
- package/esm2022/lib/components/elements/layout/form-error.component.mjs +0 -25
- package/esm2022/lib/components/elements/layout/form-header.component.mjs +0 -25
- package/esm2022/lib/components/elements/layout/piece.component.mjs +0 -59
- package/esm2022/lib/components/elements/layout/section.component.mjs +0 -57
- package/esm2022/lib/components/elements/layout/sub-section.component.mjs +0 -57
- package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +0 -71
- package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +0 -32
- package/esm2022/lib/components/elements/tables/table.component.mjs +0 -109
- package/esm2022/lib/components/forms/basic-form.mjs +0 -1407
- package/esm2022/lib/components/shared/constants.mjs +0 -2
- package/esm2022/lib/interfaces/action.interface.mjs +0 -2
- package/esm2022/lib/interfaces/field.interface.mjs +0 -2
- package/esm2022/lib/interfaces/form-config.interface.mjs +0 -2
- package/esm2022/lib/interfaces/form.interface.mjs +0 -2
- package/esm2022/lib/interfaces/icon-resolver.interface.mjs +0 -2
- package/esm2022/lib/interfaces/index.mjs +0 -11
- package/esm2022/lib/interfaces/piece.interface.mjs +0 -2
- package/esm2022/lib/interfaces/section.interface.mjs +0 -2
- package/esm2022/lib/interfaces/sse-live-connection.interface.mjs +0 -2
- package/esm2022/lib/interfaces/table.interface.mjs +0 -2
- package/esm2022/lib/services/base-icon-resolver.service.mjs +0 -40
- package/esm2022/lib/services/event-manager.service.mjs +0 -55
- package/esm2022/lib/services/file-manager.service.mjs +0 -14
- package/esm2022/lib/services/form-manager.service.mjs +0 -88
- package/esm2022/lib/services/icon-dictionary.service.mjs +0 -162
- package/esm2022/lib/services/sse-live-connection.service.mjs +0 -165
- package/esm2022/lib/tokens/icon-resolver.token.mjs +0 -3
- package/esm2022/lib/tokens/sse-live-connection.token.mjs +0 -7
- package/esm2022/lib/tuain-ng-forms-lib.module.mjs +0 -54
- package/esm2022/public-api.mjs +0 -45
- package/esm2022/tuain-ng-forms-lib.mjs +0 -5
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { fetchEventSource } from '@microsoft/fetch-event-source';
|
|
3
|
-
import { SSE_LIVE_CONNECTION_CONFIG } from '../tokens/sse-live-connection.token';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const DEFAULT_STREAM_PATH = '/liveconnect/stream';
|
|
6
|
-
const DEFAULT_SESSION_ENDED_EVENT = 'sessionEnded';
|
|
7
|
-
const SESSION_EVENT_CLASS = 'session';
|
|
8
|
-
const SESSION_REPLACED_EVENT_TYPE = 'sessionReplaced';
|
|
9
|
-
/** Error que detiene los reintentos de `fetchEventSource` (handshake rechazado). */
|
|
10
|
-
class FatalSseError extends Error {
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Canal de eventos servidor→cliente sobre Server-Sent Events (SSE).
|
|
14
|
-
*
|
|
15
|
-
* Reemplaza al `LiveConnectionService` basado en Socket.IO que vivía duplicado
|
|
16
|
-
* en cada app. El uso siempre fue unidireccional (un único handshake y luego
|
|
17
|
-
* solo recepción), así que SSE encaja sin perder funcionalidad y además gana
|
|
18
|
-
* reconexión automática nativa.
|
|
19
|
-
*
|
|
20
|
-
* El servicio es agnóstico de la app: toda la integración (URL, token de auth,
|
|
21
|
-
* allow-list, re-emisión al bus, logger) llega por `SSE_LIVE_CONNECTION_CONFIG`.
|
|
22
|
-
* El ciclo de vida (cuándo abrir/cerrar) lo controla cada app llamando
|
|
23
|
-
* `open()`/`close()` — típicamente atado a `sessionEstablished`/`sessionEnded`,
|
|
24
|
-
* y en móvil además al `appStateChange` de Capacitor.
|
|
25
|
-
*/
|
|
26
|
-
export class SseLiveConnectionService {
|
|
27
|
-
_config = inject(SSE_LIVE_CONNECTION_CONFIG);
|
|
28
|
-
_abort = null;
|
|
29
|
-
_currentSessionId = null;
|
|
30
|
-
_connected = false;
|
|
31
|
-
isConnected() {
|
|
32
|
-
return this._connected;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Abre el stream SSE para la sesión dada (cierra cualquier stream anterior).
|
|
36
|
-
* El handshake viaja en el header `Authorization`, no en la URL.
|
|
37
|
-
*/
|
|
38
|
-
async open(sessionData) {
|
|
39
|
-
this.close();
|
|
40
|
-
if (!sessionData) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
this._currentSessionId = sessionData?.sessionId ?? null;
|
|
44
|
-
const logger = this._config.logger;
|
|
45
|
-
const allowed = this._allowedSet();
|
|
46
|
-
const token = await this._config.getAuthToken(sessionData);
|
|
47
|
-
const scheme = this._config.authScheme ?? 'Bearer';
|
|
48
|
-
const authorization = scheme ? `${scheme} ${token}` : token;
|
|
49
|
-
const abort = new AbortController();
|
|
50
|
-
this._abort = abort;
|
|
51
|
-
this.openEventSource(this._buildStreamUrl(), {
|
|
52
|
-
signal: abort.signal,
|
|
53
|
-
openWhenHidden: this._config.keepOpenWhenHidden ?? true,
|
|
54
|
-
headers: { Authorization: authorization },
|
|
55
|
-
onopen: async (response) => {
|
|
56
|
-
const contentType = response.headers.get('content-type') ?? '';
|
|
57
|
-
if (response.ok && contentType.includes('text/event-stream')) {
|
|
58
|
-
this._connected = true;
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
// 4xx (p. ej. 401) => fatal, no reintentar. 5xx/otros => reintentar.
|
|
62
|
-
if (response.status >= 400 && response.status < 500) {
|
|
63
|
-
throw new FatalSseError(`handshake rechazado: ${response.status}`);
|
|
64
|
-
}
|
|
65
|
-
throw new Error(`handshake inesperado: ${response.status}`);
|
|
66
|
-
},
|
|
67
|
-
onmessage: msg => {
|
|
68
|
-
if (!msg.data) {
|
|
69
|
-
return; // comentarios/heartbeats no traen `data`
|
|
70
|
-
}
|
|
71
|
-
let eventData;
|
|
72
|
-
try {
|
|
73
|
-
eventData = JSON.parse(msg.data);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
logger?.warn?.('[SseLiveConnection] Payload no-JSON descartado');
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
logger?.debug?.(`[SseLiveConnection] Evento recibido: ${msg.data}`);
|
|
80
|
-
if (this._handleSessionReplaced(eventData)) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const eventClass = eventData?.eventClass;
|
|
84
|
-
if (typeof eventClass !== 'string' || !allowed.has(eventClass)) {
|
|
85
|
-
logger?.warn?.('[SseLiveConnection] Evento no permitido rechazado:', eventClass);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
this._config.emit(eventClass, eventData);
|
|
89
|
-
},
|
|
90
|
-
onerror: err => {
|
|
91
|
-
this._connected = false;
|
|
92
|
-
if (err instanceof FatalSseError) {
|
|
93
|
-
logger?.warn?.('[SseLiveConnection]', err.message);
|
|
94
|
-
throw err; // detiene los reintentos
|
|
95
|
-
}
|
|
96
|
-
logger?.warn?.('[SseLiveConnection] error de stream, reintentando', err?.message ?? err);
|
|
97
|
-
// devolver undefined => fetch-event-source reintenta con backoff propio
|
|
98
|
-
},
|
|
99
|
-
}).catch(err => {
|
|
100
|
-
this._connected = false;
|
|
101
|
-
if (!(err instanceof FatalSseError) && err?.name !== 'AbortError') {
|
|
102
|
-
logger?.warn?.('[SseLiveConnection] stream finalizado', err?.message ?? err);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Punto de indirección (seam) sobre `fetchEventSource`: permite sustituirlo en
|
|
108
|
-
* tests (`fetchEventSource` es un binding ESM de solo lectura, no espiable).
|
|
109
|
-
* En producción delega directamente en la librería.
|
|
110
|
-
*/
|
|
111
|
-
openEventSource(url, options) {
|
|
112
|
-
return fetchEventSource(url, options);
|
|
113
|
-
}
|
|
114
|
-
/** Cierra el stream actual (idempotente). */
|
|
115
|
-
close() {
|
|
116
|
-
if (this._abort) {
|
|
117
|
-
this._abort.abort();
|
|
118
|
-
this._abort = null;
|
|
119
|
-
}
|
|
120
|
-
this._connected = false;
|
|
121
|
-
}
|
|
122
|
-
_buildStreamUrl() {
|
|
123
|
-
const base = (this._config.buildUrl() ?? '').replace(/\/+$/, '');
|
|
124
|
-
const path = this._config.streamPath ?? DEFAULT_STREAM_PATH;
|
|
125
|
-
return `${base}${path.startsWith('/') ? path : '/' + path}`;
|
|
126
|
-
}
|
|
127
|
-
_allowedSet() {
|
|
128
|
-
const allowed = this._config.allowedEvents;
|
|
129
|
-
return allowed instanceof Set ? allowed : new Set(allowed);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Maneja el evento de lifecycle `sessionReplaced` (otra apertura de sesión
|
|
133
|
-
* para el mismo usuario). Si el `newSessionId` difiere de la sesión local,
|
|
134
|
-
* emite el evento de fin de sesión para forzar logout. Se ejecuta antes del
|
|
135
|
-
* filtro de allow-list porque no se re-emite al bus genérico.
|
|
136
|
-
* Devuelve `true` cuando consume el evento.
|
|
137
|
-
*/
|
|
138
|
-
_handleSessionReplaced(eventData) {
|
|
139
|
-
if ((this._config.handleSessionReplaced ?? true) === false) {
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
if (eventData?.eventClass !== SESSION_EVENT_CLASS ||
|
|
143
|
-
eventData?.eventType !== SESSION_REPLACED_EVENT_TYPE) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
const newSessionId = eventData?.eventDetail?.newSessionId ?? null;
|
|
147
|
-
if (!this._currentSessionId) {
|
|
148
|
-
return true; // no hay sesión local que cerrar
|
|
149
|
-
}
|
|
150
|
-
if (newSessionId && newSessionId === this._currentSessionId) {
|
|
151
|
-
return true; // corresponde a la propia sesión recién abierta
|
|
152
|
-
}
|
|
153
|
-
this._config.logger?.warn?.('[SseLiveConnection] Sesión reemplazada por otra apertura para el mismo usuario', { currentSessionId: this._currentSessionId, newSessionId });
|
|
154
|
-
const sessionEndedName = this._config.sessionEndedEventName ?? DEFAULT_SESSION_ENDED_EVENT;
|
|
155
|
-
this._config.emit(sessionEndedName, null);
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
158
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SseLiveConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
159
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SseLiveConnectionService, providedIn: 'root' });
|
|
160
|
-
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SseLiveConnectionService, decorators: [{
|
|
162
|
-
type: Injectable,
|
|
163
|
-
args: [{ providedIn: 'root' }]
|
|
164
|
-
}] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWxpdmUtY29ubmVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvc2VydmljZXMvc3NlLWxpdmUtY29ubmVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUdqRixNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBQ2xELE1BQU0sMkJBQTJCLEdBQUcsY0FBYyxDQUFDO0FBQ25ELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBQ3RDLE1BQU0sMkJBQTJCLEdBQUcsaUJBQWlCLENBQUM7QUFFdEQsb0ZBQW9GO0FBQ3BGLE1BQU0sYUFBYyxTQUFRLEtBQUs7Q0FBRztBQUVwQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixPQUFPLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFdEQsTUFBTSxHQUEyQixJQUFJLENBQUM7SUFDdEMsaUJBQWlCLEdBQWtCLElBQUksQ0FBQztJQUN4QyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTNCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBZ0I7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsRUFB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QUFZLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDLENBQUMsZ0RBQWdEO1FBQy9ELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDekIsZ0ZBQWdGLEVBQ2hGLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxDQUMzRCxDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixJQUFJLDJCQUEyQixDQUFDO1FBQzNGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0FySlUsd0JBQXdCOzRHQUF4Qix3QkFBd0IsY0FEWCxNQUFNOzs0RkFDbkIsd0JBQXdCO2tCQURwQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmV0Y2hFdmVudFNvdXJjZSB9IGZyb20gJ0BtaWNyb3NvZnQvZmV0Y2gtZXZlbnQtc291cmNlJztcbmltcG9ydCB7IFNTRV9MSVZFX0NPTk5FQ1RJT05fQ09ORklHIH0gZnJvbSAnLi4vdG9rZW5zL3NzZS1saXZlLWNvbm5lY3Rpb24udG9rZW4nO1xuaW1wb3J0IHsgU3NlU2VydmVyRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NzZS1saXZlLWNvbm5lY3Rpb24uaW50ZXJmYWNlJztcblxuY29uc3QgREVGQVVMVF9TVFJFQU1fUEFUSCA9ICcvbGl2ZWNvbm5lY3Qvc3RyZWFtJztcbmNvbnN0IERFRkFVTFRfU0VTU0lPTl9FTkRFRF9FVkVOVCA9ICdzZXNzaW9uRW5kZWQnO1xuY29uc3QgU0VTU0lPTl9FVkVOVF9DTEFTUyA9ICdzZXNzaW9uJztcbmNvbnN0IFNFU1NJT05fUkVQTEFDRURfRVZFTlRfVFlQRSA9ICdzZXNzaW9uUmVwbGFjZWQnO1xuXG4vKiogRXJyb3IgcXVlIGRldGllbmUgbG9zIHJlaW50ZW50b3MgZGUgYGZldGNoRXZlbnRTb3VyY2VgIChoYW5kc2hha2UgcmVjaGF6YWRvKS4gKi9cbmNsYXNzIEZhdGFsU3NlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vKipcbiAqIENhbmFsIGRlIGV2ZW50b3Mgc2Vydmlkb3LihpJjbGllbnRlIHNvYnJlIFNlcnZlci1TZW50IEV2ZW50cyAoU1NFKS5cbiAqXG4gKiBSZWVtcGxhemEgYWwgYExpdmVDb25uZWN0aW9uU2VydmljZWAgYmFzYWRvIGVuIFNvY2tldC5JTyBxdWUgdml2w61hIGR1cGxpY2Fkb1xuICogZW4gY2FkYSBhcHAuIEVsIHVzbyBzaWVtcHJlIGZ1ZSB1bmlkaXJlY2Npb25hbCAodW4gw7puaWNvIGhhbmRzaGFrZSB5IGx1ZWdvXG4gKiBzb2xvIHJlY2VwY2nDs24pLCBhc8OtIHF1ZSBTU0UgZW5jYWphIHNpbiBwZXJkZXIgZnVuY2lvbmFsaWRhZCB5IGFkZW3DoXMgZ2FuYVxuICogcmVjb25leGnDs24gYXV0b23DoXRpY2EgbmF0aXZhLlxuICpcbiAqIEVsIHNlcnZpY2lvIGVzIGFnbsOzc3RpY28gZGUgbGEgYXBwOiB0b2RhIGxhIGludGVncmFjacOzbiAoVVJMLCB0b2tlbiBkZSBhdXRoLFxuICogYWxsb3ctbGlzdCwgcmUtZW1pc2nDs24gYWwgYnVzLCBsb2dnZXIpIGxsZWdhIHBvciBgU1NFX0xJVkVfQ09OTkVDVElPTl9DT05GSUdgLlxuICogRWwgY2ljbG8gZGUgdmlkYSAoY3XDoW5kbyBhYnJpci9jZXJyYXIpIGxvIGNvbnRyb2xhIGNhZGEgYXBwIGxsYW1hbmRvXG4gKiBgb3BlbigpYC9gY2xvc2UoKWAg4oCUIHTDrXBpY2FtZW50ZSBhdGFkbyBhIGBzZXNzaW9uRXN0YWJsaXNoZWRgL2BzZXNzaW9uRW5kZWRgLFxuICogeSBlbiBtw7N2aWwgYWRlbcOhcyBhbCBgYXBwU3RhdGVDaGFuZ2VgIGRlIENhcGFjaXRvci5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTc2VMaXZlQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWcgPSBpbmplY3QoU1NFX0xJVkVfQ09OTkVDVElPTl9DT05GSUcpO1xuXG4gIHByaXZhdGUgX2Fib3J0OiBBYm9ydENvbnRyb2xsZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfY3VycmVudFNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Nvbm5lY3RlZCA9IGZhbHNlO1xuXG4gIGlzQ29ubmVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWJyZSBlbCBzdHJlYW0gU1NFIHBhcmEgbGEgc2VzacOzbiBkYWRhIChjaWVycmEgY3VhbHF1aWVyIHN0cmVhbSBhbnRlcmlvcikuXG4gICAqIEVsIGhhbmRzaGFrZSB2aWFqYSBlbiBlbCBoZWFkZXIgYEF1dGhvcml6YXRpb25gLCBubyBlbiBsYSBVUkwuXG4gICAqL1xuICBhc3luYyBvcGVuKHNlc3Npb25EYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgaWYgKCFzZXNzaW9uRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jdXJyZW50U2Vzc2lvbklkID0gc2Vzc2lvbkRhdGE/LnNlc3Npb25JZCA/PyBudWxsO1xuXG4gICAgY29uc3QgbG9nZ2VyID0gdGhpcy5fY29uZmlnLmxvZ2dlcjtcbiAgICBjb25zdCBhbGxvd2VkID0gdGhpcy5fYWxsb3dlZFNldCgpO1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5fY29uZmlnLmdldEF1dGhUb2tlbihzZXNzaW9uRGF0YSk7XG4gICAgY29uc3Qgc2NoZW1lID0gdGhpcy5fY29uZmlnLmF1dGhTY2hlbWUgPz8gJ0JlYXJlcic7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvbiA9IHNjaGVtZSA/IGAke3NjaGVtZX0gJHt0b2tlbn1gIDogdG9rZW47XG5cbiAgICBjb25zdCBhYm9ydCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9hYm9ydCA9IGFib3J0O1xuXG4gICAgdGhpcy5vcGVuRXZlbnRTb3VyY2UodGhpcy5fYnVpbGRTdHJlYW1VcmwoKSwge1xuICAgICAgc2lnbmFsOiBhYm9ydC5zaWduYWwsXG4gICAgICBvcGVuV2hlbkhpZGRlbjogdGhpcy5fY29uZmlnLmtlZXBPcGVuV2hlbkhpZGRlbiA/PyB0cnVlLFxuICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBhdXRob3JpemF0aW9uIH0sXG4gICAgICBvbm9wZW46IGFzeW5jIHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgPz8gJyc7XG4gICAgICAgIGlmIChyZXNwb25zZS5vayAmJiBjb250ZW50VHlwZS5pbmNsdWRlcygndGV4dC9ldmVudC1zdHJlYW0nKSkge1xuICAgICAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIDR4eCAocC4gZWouIDQwMSkgPT4gZmF0YWwsIG5vIHJlaW50ZW50YXIuIDV4eC9vdHJvcyA9PiByZWludGVudGFyLlxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMCAmJiByZXNwb25zZS5zdGF0dXMgPCA1MDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRmF0YWxTc2VFcnJvcihgaGFuZHNoYWtlIHJlY2hhemFkbzogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBoYW5kc2hha2UgaW5lc3BlcmFkbzogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICB9LFxuICAgICAgb25tZXNzYWdlOiBtc2cgPT4ge1xuICAgICAgICBpZiAoIW1zZy5kYXRhKSB7XG4gICAgICAgICAgcmV0dXJuOyAvLyBjb21lbnRhcmlvcy9oZWFydGJlYXRzIG5vIHRyYWVuIGBkYXRhYFxuICAgICAgICB9XG4gICAgICAgIGxldCBldmVudERhdGE6IFNzZVNlcnZlckV2ZW50O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGV2ZW50RGF0YSA9IEpTT04ucGFyc2UobXNnLmRhdGEpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBsb2dnZXI/Lndhcm4/LignW1NzZUxpdmVDb25uZWN0aW9uXSBQYXlsb2FkIG5vLUpTT04gZGVzY2FydGFkbycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXI/LmRlYnVnPy4oYFtTc2VMaXZlQ29ubmVjdGlvbl0gRXZlbnRvIHJlY2liaWRvOiAke21zZy5kYXRhfWApO1xuICAgICAgICBpZiAodGhpcy5faGFuZGxlU2Vzc2lvblJlcGxhY2VkKGV2ZW50RGF0YSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnRDbGFzcyA9IGV2ZW50RGF0YT8uZXZlbnRDbGFzcztcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudENsYXNzICE9PSAnc3RyaW5nJyB8fCAhYWxsb3dlZC5oYXMoZXZlbnRDbGFzcykpIHtcbiAgICAgICAgICBsb2dnZXI/Lndhcm4/LignW1NzZUxpdmVDb25uZWN0aW9uXSBFdmVudG8gbm8gcGVybWl0aWRvIHJlY2hhemFkbzonLCBldmVudENsYXNzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnLmVtaXQoZXZlbnRDbGFzcywgZXZlbnREYXRhKTtcbiAgICAgIH0sXG4gICAgICBvbmVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZhdGFsU3NlRXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXI/Lndhcm4/LignW1NzZUxpdmVDb25uZWN0aW9uXScsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICB0aHJvdyBlcnI7IC8vIGRldGllbmUgbG9zIHJlaW50ZW50b3NcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXI/Lndhcm4/LignW1NzZUxpdmVDb25uZWN0aW9uXSBlcnJvciBkZSBzdHJlYW0sIHJlaW50ZW50YW5kbycsIGVycj8ubWVzc2FnZSA/PyBlcnIpO1xuICAgICAgICAvLyBkZXZvbHZlciB1bmRlZmluZWQgPT4gZmV0Y2gtZXZlbnQtc291cmNlIHJlaW50ZW50YSBjb24gYmFja29mZiBwcm9waW9cbiAgICAgIH0sXG4gICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgRmF0YWxTc2VFcnJvcikgJiYgZXJyPy5uYW1lICE9PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgbG9nZ2VyPy53YXJuPy4oJ1tTc2VMaXZlQ29ubmVjdGlvbl0gc3RyZWFtIGZpbmFsaXphZG8nLCBlcnI/Lm1lc3NhZ2UgPz8gZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdW50byBkZSBpbmRpcmVjY2nDs24gKHNlYW0pIHNvYnJlIGBmZXRjaEV2ZW50U291cmNlYDogcGVybWl0ZSBzdXN0aXR1aXJsbyBlblxuICAgKiB0ZXN0cyAoYGZldGNoRXZlbnRTb3VyY2VgIGVzIHVuIGJpbmRpbmcgRVNNIGRlIHNvbG8gbGVjdHVyYSwgbm8gZXNwaWFibGUpLlxuICAgKiBFbiBwcm9kdWNjacOzbiBkZWxlZ2EgZGlyZWN0YW1lbnRlIGVuIGxhIGxpYnJlcsOtYS5cbiAgICovXG4gIHByb3RlY3RlZCBvcGVuRXZlbnRTb3VyY2UoXG4gICAgdXJsOiBQYXJhbWV0ZXJzPHR5cGVvZiBmZXRjaEV2ZW50U291cmNlPlswXSxcbiAgICBvcHRpb25zOiBQYXJhbWV0ZXJzPHR5cGVvZiBmZXRjaEV2ZW50U291cmNlPlsxXSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoRXZlbnRTb3VyY2UodXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBDaWVycmEgZWwgc3RyZWFtIGFjdHVhbCAoaWRlbXBvdGVudGUpLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYWJvcnQpIHtcbiAgICAgIHRoaXMuX2Fib3J0LmFib3J0KCk7XG4gICAgICB0aGlzLl9hYm9ydCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRTdHJlYW1VcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlID0gKHRoaXMuX2NvbmZpZy5idWlsZFVybCgpID8/ICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5fY29uZmlnLnN0cmVhbVBhdGggPz8gREVGQVVMVF9TVFJFQU1fUEFUSDtcbiAgICByZXR1cm4gYCR7YmFzZX0ke3BhdGguc3RhcnRzV2l0aCgnLycpID8gcGF0aCA6ICcvJyArIHBhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2FsbG93ZWRTZXQoKTogUmVhZG9ubHlTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgYWxsb3dlZCA9IHRoaXMuX2NvbmZpZy5hbGxvd2VkRXZlbnRzO1xuICAgIHJldHVybiBhbGxvd2VkIGluc3RhbmNlb2YgU2V0ID8gYWxsb3dlZCA6IG5ldyBTZXQoYWxsb3dlZCBhcyBzdHJpbmdbXSk7XG4gIH1cblxuICAvKipcbiAgICogTWFuZWphIGVsIGV2ZW50byBkZSBsaWZlY3ljbGUgYHNlc3Npb25SZXBsYWNlZGAgKG90cmEgYXBlcnR1cmEgZGUgc2VzacOzblxuICAgKiBwYXJhIGVsIG1pc21vIHVzdWFyaW8pLiBTaSBlbCBgbmV3U2Vzc2lvbklkYCBkaWZpZXJlIGRlIGxhIHNlc2nDs24gbG9jYWwsXG4gICAqIGVtaXRlIGVsIGV2ZW50byBkZSBmaW4gZGUgc2VzacOzbiBwYXJhIGZvcnphciBsb2dvdXQuIFNlIGVqZWN1dGEgYW50ZXMgZGVsXG4gICAqIGZpbHRybyBkZSBhbGxvdy1saXN0IHBvcnF1ZSBubyBzZSByZS1lbWl0ZSBhbCBidXMgZ2Vuw6lyaWNvLlxuICAgKiBEZXZ1ZWx2ZSBgdHJ1ZWAgY3VhbmRvIGNvbnN1bWUgZWwgZXZlbnRvLlxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlU2Vzc2lvblJlcGxhY2VkKGV2ZW50RGF0YTogU3NlU2VydmVyRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAoKHRoaXMuX2NvbmZpZy5oYW5kbGVTZXNzaW9uUmVwbGFjZWQgPz8gdHJ1ZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGV2ZW50RGF0YT8uZXZlbnRDbGFzcyAhPT0gU0VTU0lPTl9FVkVOVF9DTEFTUyB8fFxuICAgICAgZXZlbnREYXRhPy5ldmVudFR5cGUgIT09IFNFU1NJT05fUkVQTEFDRURfRVZFTlRfVFlQRVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBuZXdTZXNzaW9uSWQgPSBldmVudERhdGE/LmV2ZW50RGV0YWlsPy5uZXdTZXNzaW9uSWQgPz8gbnVsbDtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnRTZXNzaW9uSWQpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBubyBoYXkgc2VzacOzbiBsb2NhbCBxdWUgY2VycmFyXG4gICAgfVxuICAgIGlmIChuZXdTZXNzaW9uSWQgJiYgbmV3U2Vzc2lvbklkID09PSB0aGlzLl9jdXJyZW50U2Vzc2lvbklkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gY29ycmVzcG9uZGUgYSBsYSBwcm9waWEgc2VzacOzbiByZWNpw6luIGFiaWVydGFcbiAgICB9XG4gICAgdGhpcy5fY29uZmlnLmxvZ2dlcj8ud2Fybj8uKFxuICAgICAgJ1tTc2VMaXZlQ29ubmVjdGlvbl0gU2VzacOzbiByZWVtcGxhemFkYSBwb3Igb3RyYSBhcGVydHVyYSBwYXJhIGVsIG1pc21vIHVzdWFyaW8nLFxuICAgICAgeyBjdXJyZW50U2Vzc2lvbklkOiB0aGlzLl9jdXJyZW50U2Vzc2lvbklkLCBuZXdTZXNzaW9uSWQgfVxuICAgICk7XG4gICAgY29uc3Qgc2Vzc2lvbkVuZGVkTmFtZSA9IHRoaXMuX2NvbmZpZy5zZXNzaW9uRW5kZWRFdmVudE5hbWUgPz8gREVGQVVMVF9TRVNTSU9OX0VOREVEX0VWRU5UO1xuICAgIHRoaXMuX2NvbmZpZy5lbWl0KHNlc3Npb25FbmRlZE5hbWUsIG51bGwpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const ICON_RESOLVER = new InjectionToken('ICON_RESOLVER');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1yZXNvbHZlci50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL3Rva2Vucy9pY29uLXJlc29sdmVyLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFnQixlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWNvblJlc29sdmVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pY29uLXJlc29sdmVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFU09MVkVSID0gbmV3IEluamVjdGlvblRva2VuPElJY29uUmVzb2x2ZXI+KCdJQ09OX1JFU09MVkVSJyk7XG4iXX0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
/**
|
|
3
|
-
* Token con el que cada app provee su configuración del stream SSE.
|
|
4
|
-
* Sigue el mismo patrón que `ICON_RESOLVER`.
|
|
5
|
-
*/
|
|
6
|
-
export const SSE_LIVE_CONNECTION_CONFIG = new InjectionToken('SSE_LIVE_CONNECTION_CONFIG');
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWxpdmUtY29ubmVjdGlvbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL3Rva2Vucy9zc2UtbGl2ZS1jb25uZWN0aW9uLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQ3JDLElBQUksY0FBYyxDQUEwQiw0QkFBNEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNzZUxpdmVDb25uZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zc2UtbGl2ZS1jb25uZWN0aW9uLmludGVyZmFjZSc7XG5cbi8qKlxuICogVG9rZW4gY29uIGVsIHF1ZSBjYWRhIGFwcCBwcm92ZWUgc3UgY29uZmlndXJhY2nDs24gZGVsIHN0cmVhbSBTU0UuXG4gKiBTaWd1ZSBlbCBtaXNtbyBwYXRyw7NuIHF1ZSBgSUNPTl9SRVNPTFZFUmAuXG4gKi9cbmV4cG9ydCBjb25zdCBTU0VfTElWRV9DT05ORUNUSU9OX0NPTkZJRyA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxTc2VMaXZlQ29ubmVjdGlvbkNvbmZpZz4oJ1NTRV9MSVZFX0NPTk5FQ1RJT05fQ09ORklHJyk7XG4iXX0=
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { ActionComponent } from './components/elements/action.component';
|
|
3
|
-
import { FieldComponent } from './components/elements/field.component';
|
|
4
|
-
import { FormErrorComponent } from './components/elements/layout/form-error.component';
|
|
5
|
-
import { FormHeaderComponent } from './components/elements/layout/form-header.component';
|
|
6
|
-
import { SectionComponent } from './components/elements/layout/section.component';
|
|
7
|
-
import { SubSectionComponent } from './components/elements/layout/sub-section.component';
|
|
8
|
-
import { LibTableRecordActionComponent } from './components/elements/tables/table-record-action.component';
|
|
9
|
-
import { LibTableRecordFieldComponent } from './components/elements/tables/table-record-field.component';
|
|
10
|
-
import { LibTableComponent } from './components/elements/tables/table.component';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
const COMPONENTS = [
|
|
13
|
-
ActionComponent,
|
|
14
|
-
FieldComponent,
|
|
15
|
-
FormErrorComponent,
|
|
16
|
-
FormHeaderComponent,
|
|
17
|
-
SectionComponent,
|
|
18
|
-
SubSectionComponent,
|
|
19
|
-
LibTableRecordActionComponent,
|
|
20
|
-
LibTableRecordFieldComponent,
|
|
21
|
-
LibTableComponent
|
|
22
|
-
];
|
|
23
|
-
/**
|
|
24
|
-
* @deprecated Since v17. Use standalone components directly. Will be removed in v19.
|
|
25
|
-
*/
|
|
26
|
-
export class TuainNgFormsLibModule {
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TuainNgFormsLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: TuainNgFormsLibModule, imports: [ActionComponent,
|
|
29
|
-
FieldComponent,
|
|
30
|
-
FormErrorComponent,
|
|
31
|
-
FormHeaderComponent,
|
|
32
|
-
SectionComponent,
|
|
33
|
-
SubSectionComponent,
|
|
34
|
-
LibTableRecordActionComponent,
|
|
35
|
-
LibTableRecordFieldComponent,
|
|
36
|
-
LibTableComponent], exports: [ActionComponent,
|
|
37
|
-
FieldComponent,
|
|
38
|
-
FormErrorComponent,
|
|
39
|
-
FormHeaderComponent,
|
|
40
|
-
SectionComponent,
|
|
41
|
-
SubSectionComponent,
|
|
42
|
-
LibTableRecordActionComponent,
|
|
43
|
-
LibTableRecordFieldComponent,
|
|
44
|
-
LibTableComponent] });
|
|
45
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TuainNgFormsLibModule });
|
|
46
|
-
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TuainNgFormsLibModule, decorators: [{
|
|
48
|
-
type: NgModule,
|
|
49
|
-
args: [{
|
|
50
|
-
imports: COMPONENTS,
|
|
51
|
-
exports: COMPONENTS
|
|
52
|
-
}]
|
|
53
|
-
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVhaW4tbmctZm9ybXMtbGliLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL3R1YWluLW5nLWZvcm1zLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQUVqRixNQUFNLFVBQVUsR0FBRztJQUNqQixlQUFlO0lBQ2YsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQiw2QkFBNkI7SUFDN0IsNEJBQTRCO0lBQzVCLGlCQUFpQjtDQUFDLENBQUM7QUFFckI7O0dBRUc7QUFLSCxNQUFNLE9BQU8scUJBQXFCO3dHQUFyQixxQkFBcUI7eUdBQXJCLHFCQUFxQixZQWpCaEMsZUFBZTtZQUNmLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsNkJBQTZCO1lBQzdCLDRCQUE0QjtZQUM1QixpQkFBaUIsYUFSakIsZUFBZTtZQUNmLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsNkJBQTZCO1lBQzdCLDRCQUE0QjtZQUM1QixpQkFBaUI7eUdBU04scUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxVQUFVO29CQUNuQixPQUFPLEVBQUUsVUFBVTtpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWxlbWVudHMvYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbGVtZW50cy9maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9mb3JtLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbGVtZW50cy9sYXlvdXQvc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbGVtZW50cy9sYXlvdXQvc3ViLXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IExpYlRhYmxlUmVjb3JkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnRzL3RhYmxlcy90YWJsZS1yZWNvcmQtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJUYWJsZVJlY29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnRzL3RhYmxlcy90YWJsZS1yZWNvcmQtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IExpYlRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnRzL3RhYmxlcy90YWJsZS5jb21wb25lbnQnO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICBBY3Rpb25Db21wb25lbnQsXG4gIEZpZWxkQ29tcG9uZW50LFxuICBGb3JtRXJyb3JDb21wb25lbnQsXG4gIEZvcm1IZWFkZXJDb21wb25lbnQsXG4gIFNlY3Rpb25Db21wb25lbnQsXG4gIFN1YlNlY3Rpb25Db21wb25lbnQsXG4gIExpYlRhYmxlUmVjb3JkQWN0aW9uQ29tcG9uZW50LFxuICBMaWJUYWJsZVJlY29yZEZpZWxkQ29tcG9uZW50LFxuICBMaWJUYWJsZUNvbXBvbmVudF07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2Ugc3RhbmRhbG9uZSBjb21wb25lbnRzIGRpcmVjdGx5LiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBDT01QT05FTlRTLFxuICBleHBvcnRzOiBDT01QT05FTlRTXG59KVxuZXhwb3J0IGNsYXNzIFR1YWluTmdGb3Jtc0xpYk1vZHVsZSB7IH1cbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of tuain-ng-forms-lib
|
|
3
|
-
*/
|
|
4
|
-
// Interfaces
|
|
5
|
-
export * from './lib/interfaces/index';
|
|
6
|
-
// Tokens
|
|
7
|
-
export * from './lib/tokens/icon-resolver.token';
|
|
8
|
-
export * from './lib/tokens/sse-live-connection.token';
|
|
9
|
-
// Model classes
|
|
10
|
-
export * from './lib/classes/forms/piece';
|
|
11
|
-
export * from './lib/classes/forms/piece-propagate';
|
|
12
|
-
export * from './lib/classes/forms/element';
|
|
13
|
-
export * from './lib/classes/forms/field';
|
|
14
|
-
export * from './lib/classes/forms/action';
|
|
15
|
-
export * from './lib/classes/forms/section';
|
|
16
|
-
export * from './lib/classes/forms/subsection';
|
|
17
|
-
export * from './lib/classes/forms/form';
|
|
18
|
-
export * from './lib/classes/forms/form.constants';
|
|
19
|
-
export * from './lib/classes/forms/table/table';
|
|
20
|
-
export * from './lib/classes/forms/table/column';
|
|
21
|
-
export * from './lib/classes/forms/table/row-data';
|
|
22
|
-
export * from './lib/classes/forms/table/action';
|
|
23
|
-
// Components
|
|
24
|
-
export * from './lib/components/elements/layout/piece.component';
|
|
25
|
-
export * from './lib/components/elements/layout/element.component';
|
|
26
|
-
export * from './lib/components/elements/layout/form-error.component';
|
|
27
|
-
export * from './lib/components/elements/layout/form-header.component';
|
|
28
|
-
export * from './lib/components/elements/layout/section.component';
|
|
29
|
-
export * from './lib/components/elements/layout/sub-section.component';
|
|
30
|
-
export * from './lib/components/elements/action.component';
|
|
31
|
-
export * from './lib/components/elements/field.component';
|
|
32
|
-
export * from './lib/components/elements/tables/table.component';
|
|
33
|
-
export * from './lib/components/elements/tables/table-record-field.component';
|
|
34
|
-
export * from './lib/components/elements/tables/table-record-action.component';
|
|
35
|
-
export * from './lib/components/forms/basic-form';
|
|
36
|
-
// Services
|
|
37
|
-
export * from './lib/services/event-manager.service';
|
|
38
|
-
export * from './lib/services/form-manager.service';
|
|
39
|
-
export * from './lib/services/file-manager.service';
|
|
40
|
-
export * from './lib/services/icon-dictionary.service';
|
|
41
|
-
export * from './lib/services/base-icon-resolver.service';
|
|
42
|
-
export * from './lib/services/sse-live-connection.service';
|
|
43
|
-
// Module (deprecated)
|
|
44
|
-
export * from './lib/tuain-ng-forms-lib.module';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGFBQWE7QUFDYixjQUFjLHdCQUF3QixDQUFDO0FBRXZDLFNBQVM7QUFDVCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUM7QUFFdkQsZ0JBQWdCO0FBQ2hCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsa0NBQWtDLENBQUM7QUFFakQsYUFBYTtBQUNiLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELFdBQVc7QUFDWCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxzQkFBc0I7QUFDdEIsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdHVhaW4tbmctZm9ybXMtbGliXG4gKi9cblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9pbmRleCc7XG5cbi8vIFRva2Vuc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zL2ljb24tcmVzb2x2ZXIudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9rZW5zL3NzZS1saXZlLWNvbm5lY3Rpb24udG9rZW4nO1xuXG4vLyBNb2RlbCBjbGFzc2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Zvcm1zL3BpZWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvcGllY2UtcHJvcGFnYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvc2VjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Zvcm1zL3N1YnNlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9mb3Jtcy9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvZm9ybS5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL2NvbHVtbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3Jvdy1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZm9ybXMvdGFibGUvYWN0aW9uJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9lbGVtZW50cy9sYXlvdXQvcGllY2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvbGF5b3V0L2VsZW1lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvbGF5b3V0L2Zvcm0tZXJyb3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvbGF5b3V0L2Zvcm0taGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9zZWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9zdWItc2VjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9lbGVtZW50cy9hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvdGFibGVzL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL3RhYmxlcy90YWJsZS1yZWNvcmQtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZWxlbWVudHMvdGFibGVzL3RhYmxlLXJlY29yZC1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvYmFzaWMtZm9ybSc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ldmVudC1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZm9ybS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaWNvbi1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYmFzZS1pY29uLXJlc29sdmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc3NlLWxpdmUtY29ubmVjdGlvbi5zZXJ2aWNlJztcblxuLy8gTW9kdWxlIChkZXByZWNhdGVkKVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHVhaW4tbmctZm9ybXMtbGliLm1vZHVsZSc7XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVhaW4tbmctZm9ybXMtbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy90dWFpbi1uZy1mb3Jtcy1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|