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.
Files changed (52) hide show
  1. package/fesm2022/tuain-ng-forms-lib.mjs +87 -53
  2. package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
  3. package/lib/interfaces/sse-live-connection.interface.d.ts +8 -0
  4. package/lib/services/sse-live-connection.service.d.ts +8 -0
  5. package/package.json +1 -3
  6. package/esm2022/lib/classes/forms/action.mjs +0 -112
  7. package/esm2022/lib/classes/forms/element.mjs +0 -25
  8. package/esm2022/lib/classes/forms/field.mjs +0 -481
  9. package/esm2022/lib/classes/forms/form.constants.mjs +0 -55
  10. package/esm2022/lib/classes/forms/form.mjs +0 -587
  11. package/esm2022/lib/classes/forms/piece-propagate.mjs +0 -36
  12. package/esm2022/lib/classes/forms/piece.mjs +0 -139
  13. package/esm2022/lib/classes/forms/section.mjs +0 -150
  14. package/esm2022/lib/classes/forms/subsection.mjs +0 -96
  15. package/esm2022/lib/classes/forms/table/action.mjs +0 -49
  16. package/esm2022/lib/classes/forms/table/column.mjs +0 -74
  17. package/esm2022/lib/classes/forms/table/row-data.mjs +0 -114
  18. package/esm2022/lib/classes/forms/table/table.mjs +0 -537
  19. package/esm2022/lib/components/elements/action.component.mjs +0 -71
  20. package/esm2022/lib/components/elements/field.component.mjs +0 -113
  21. package/esm2022/lib/components/elements/layout/element.component.mjs +0 -23
  22. package/esm2022/lib/components/elements/layout/form-error.component.mjs +0 -25
  23. package/esm2022/lib/components/elements/layout/form-header.component.mjs +0 -25
  24. package/esm2022/lib/components/elements/layout/piece.component.mjs +0 -59
  25. package/esm2022/lib/components/elements/layout/section.component.mjs +0 -57
  26. package/esm2022/lib/components/elements/layout/sub-section.component.mjs +0 -57
  27. package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +0 -71
  28. package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +0 -32
  29. package/esm2022/lib/components/elements/tables/table.component.mjs +0 -109
  30. package/esm2022/lib/components/forms/basic-form.mjs +0 -1407
  31. package/esm2022/lib/components/shared/constants.mjs +0 -2
  32. package/esm2022/lib/interfaces/action.interface.mjs +0 -2
  33. package/esm2022/lib/interfaces/field.interface.mjs +0 -2
  34. package/esm2022/lib/interfaces/form-config.interface.mjs +0 -2
  35. package/esm2022/lib/interfaces/form.interface.mjs +0 -2
  36. package/esm2022/lib/interfaces/icon-resolver.interface.mjs +0 -2
  37. package/esm2022/lib/interfaces/index.mjs +0 -11
  38. package/esm2022/lib/interfaces/piece.interface.mjs +0 -2
  39. package/esm2022/lib/interfaces/section.interface.mjs +0 -2
  40. package/esm2022/lib/interfaces/sse-live-connection.interface.mjs +0 -2
  41. package/esm2022/lib/interfaces/table.interface.mjs +0 -2
  42. package/esm2022/lib/services/base-icon-resolver.service.mjs +0 -40
  43. package/esm2022/lib/services/event-manager.service.mjs +0 -55
  44. package/esm2022/lib/services/file-manager.service.mjs +0 -14
  45. package/esm2022/lib/services/form-manager.service.mjs +0 -88
  46. package/esm2022/lib/services/icon-dictionary.service.mjs +0 -162
  47. package/esm2022/lib/services/sse-live-connection.service.mjs +0 -165
  48. package/esm2022/lib/tokens/icon-resolver.token.mjs +0 -3
  49. package/esm2022/lib/tokens/sse-live-connection.token.mjs +0 -7
  50. package/esm2022/lib/tuain-ng-forms-lib.module.mjs +0 -54
  51. package/esm2022/public-api.mjs +0 -45
  52. 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==
@@ -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==