@esfaenza/core 20.3.63 → 20.3.64

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Directive, HostListener, Attribute, inject, NgModule } from '@angular/core';
2
+ import { Input, Directive, HostListener, Attribute, inject, NgZone, NgModule } from '@angular/core';
3
3
  import * as i1 from '@esfaenza/extensions';
4
4
  import { AppEmbeddingExtensions } from '@esfaenza/extensions';
5
5
  import 'jquery-slimscroll';
@@ -246,26 +246,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
246
246
  }] } });
247
247
 
248
248
  // Angular
249
+ /** Distanza minima (px) fra l'inizio dell'iframe e il top del dialog quando l'applicativo è embeddato */
250
+ const EMBEDDED_DIALOG_MIN_TOP = 0;
249
251
  class EsModalDirective extends ModalDirective {
250
252
  constructor() {
251
253
  super(...arguments);
252
254
  this.emb = inject(AppEmbeddingExtensions);
255
+ this.zone = inject(NgZone);
256
+ this.embeddedNaturalMarginTop = null;
257
+ this.embeddedCorrection = 0;
258
+ this.embeddedOriginalMarginTop = "";
259
+ this.embeddedScrollEnabled = false;
260
+ this.onEmbeddedWindowResize = () => this.constrainEmbeddedTop();
253
261
  }
254
262
  ngOnInit() {
255
263
  this.elementRef = this._element;
256
264
  this.rendererRef = this._renderer;
257
265
  super.ngOnInit();
258
266
  }
267
+ ngOnDestroy() {
268
+ this.stopEmbeddedTopConstraint();
269
+ super.ngOnDestroy();
270
+ }
259
271
  show() {
272
+ const wasShown = this.isShown;
260
273
  super.show();
261
- if (this.emb.Embedded)
274
+ if (this.emb.Embedded) {
262
275
  this.emb.onEmbeddedDialogShow(this);
276
+ if (!wasShown)
277
+ this.startEmbeddedTopConstraint();
278
+ }
263
279
  }
264
280
  hide() {
265
281
  super.hide();
266
282
  if (this.emb.Embedded)
267
283
  this.emb.onEmbeddedDialogHide(this);
268
284
  }
285
+ startEmbeddedTopConstraint() {
286
+ this.stopEmbeddedTopConstraint();
287
+ this.embeddedNaturalMarginTop = null;
288
+ this.embeddedScrollEnabled = false;
289
+ // Il dialog è nella posizione definitiva solo a fine transizione di apertura (onShown).
290
+ // Senza animazione ngx-bootstrap emette onShown in modo sincrono dentro super.show(),
291
+ // quindi a questo punto è già passato e si può misurare subito
292
+ if (!this.config.animated)
293
+ this.onEmbeddedDialogShown();
294
+ else
295
+ this.embeddedShownSub = this.onShown.pipe(take(1)).subscribe(() => this.onEmbeddedDialogShown());
296
+ this.embeddedHideSub = this.onHide.pipe(take(1)).subscribe(() => this.stopEmbeddedTopConstraint());
297
+ }
298
+ onEmbeddedDialogShown() {
299
+ this.constrainEmbeddedTop(true);
300
+ let dialog = this.elementRef?.nativeElement?.querySelector(".modal-dialog");
301
+ if (!dialog)
302
+ return;
303
+ // Il contenuto può cambiare dimensione dopo l'apertura (dati caricati in asincrono, max-height del
304
+ // body impostata in differita da AppEmbeddingExtensions.doFixBody, ...): il vincolo va mantenuto
305
+ this.zone.runOutsideAngular(() => {
306
+ if (typeof ResizeObserver !== "undefined") {
307
+ this.embeddedResizeObserver = new ResizeObserver(() => this.constrainEmbeddedTop());
308
+ this.embeddedResizeObserver.observe(dialog);
309
+ }
310
+ window.addEventListener("resize", this.onEmbeddedWindowResize);
311
+ });
312
+ }
313
+ stopEmbeddedTopConstraint() {
314
+ this.embeddedShownSub?.unsubscribe();
315
+ this.embeddedHideSub?.unsubscribe();
316
+ this.embeddedResizeObserver?.disconnect();
317
+ this.embeddedResizeObserver = null;
318
+ window.removeEventListener("resize", this.onEmbeddedWindowResize);
319
+ }
320
+ /**
321
+ * In modalità embedded vincola il top del dialog all'inizio dell'iframe.
322
+ *
323
+ * Su schermi piccoli l'iframe (alto quanto la finestra padre meno l'header) è più basso del dialog e
324
+ * il posizionamento impostato da AppEmbeddingExtensions.onEmbeddedDialogShow (overflow:hidden sul .modal)
325
+ * poteva lasciarlo tagliato in alto già all'apertura, senza modo di recuperarlo. Il controllo non dipende
326
+ * dalla causa: si misura il top effettivo e, se è sopra l'iframe, si riporta giù il dialog della differenza.
327
+ *
328
+ * @param atOpen true alla prima misura dopo l'apertura: riporta il .modal nella posizione di riposo
329
+ */
330
+ constrainEmbeddedTop(atOpen = false) {
331
+ let modal = this.elementRef?.nativeElement;
332
+ let dialog = modal?.querySelector(".modal-dialog");
333
+ if (!modal || !dialog || !this.isShown)
334
+ return;
335
+ if (atOpen) {
336
+ // Il focus fatto da ngx-bootstrap a fine transizione può aver scrollato il .modal per mostrare
337
+ // la parte bassa del dialog: overflow:hidden impedisce lo scroll dell'utente, non quello programmatico
338
+ modal.scrollTop = 0;
339
+ // Eventuale correzione rimasta dall'apertura precedente: si riparte dal posizionamento naturale
340
+ this.setEmbeddedCorrection(dialog, 0);
341
+ this.embeddedNaturalMarginTop = parseFloat(getComputedStyle(dialog).marginTop) || 0;
342
+ }
343
+ if (this.embeddedNaturalMarginTop == null)
344
+ return;
345
+ // Top che il dialog avrebbe senza correzione e a scroll azzerato: così le misure successive non
346
+ // dipendono da quanto l'utente ha eventualmente scrollato il .modal
347
+ let uncorrectedTop = dialog.getBoundingClientRect().top + modal.scrollTop - this.embeddedCorrection;
348
+ // Arrotondato al pixel intero: evita riscritture continue dello stile per differenze sub-pixel nelle misure
349
+ this.setEmbeddedCorrection(dialog, Math.max(0, Math.ceil(EMBEDDED_DIALOG_MIN_TOP - uncorrectedTop)));
350
+ // Con il top vincolato un dialog più alto dell'iframe esce dal fondo, e con l'overflow:hidden del .modal
351
+ // il footer (pulsanti di conferma) sarebbe irraggiungibile: si abilita lo scroll verticale. Una volta
352
+ // attivato resta fino alla prossima apertura, per non far oscillare il layout (la scrollbar riduce la
353
+ // larghezza disponibile e può cambiare l'altezza del dialog)
354
+ if (!this.embeddedScrollEnabled && dialog.getBoundingClientRect().bottom + modal.scrollTop > window.innerHeight) {
355
+ this.rendererRef.setStyle(modal, "overflow-y", "auto");
356
+ this.embeddedScrollEnabled = true;
357
+ }
358
+ }
359
+ /** Sposta in basso il dialog di `correction` px agendo sul margin-top, preservando l'eventuale valore inline originale */
360
+ setEmbeddedCorrection(dialog, correction) {
361
+ if (correction == this.embeddedCorrection)
362
+ return;
363
+ if (this.embeddedCorrection == 0)
364
+ this.embeddedOriginalMarginTop = dialog.style.marginTop;
365
+ if (correction > 0)
366
+ this.rendererRef.setStyle(dialog, "margin-top", `${this.embeddedNaturalMarginTop + correction}px`);
367
+ else if (this.embeddedOriginalMarginTop)
368
+ this.rendererRef.setStyle(dialog, "margin-top", this.embeddedOriginalMarginTop);
369
+ else
370
+ this.rendererRef.removeStyle(dialog, "margin-top");
371
+ this.embeddedCorrection = correction;
372
+ }
269
373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsModalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
270
374
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: EsModalDirective, isStandalone: true, selector: "[esModal]", exportAs: ["es-modal"], usesInheritance: true, ngImport: i0 }); }
271
375
  }
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-core-directives.mjs","sources":["../../../projects/core/directives/src/draggable/draggable.directive.ts","../../../projects/core/directives/src/slim-scroll/slim-scroll.directive.ts","../../../projects/core/directives/src/es-routerLink/es-routerLink.directive.ts","../../../projects/core/directives/src/widget/widget.directive.ts","../../../projects/core/directives/src/componentHost/componentHost.directive.ts","../../../projects/core/directives/src/es-modal/es-modal.directive.ts","../../../projects/core/directives/src/directives.module.ts","../../../projects/core/directives/src/esfaenza-core-directives.ts"],"sourcesContent":["// Angular\r\nimport { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Directive({\r\n selector: \"[emaDraggable]\",\r\n standalone: true\r\n})\r\nexport class Draggable {\r\n @Input('emaDraggable') handlerSelector: string;\r\n\r\n private $draggable: any;\r\n\r\n constructor(private _elementRef: ElementRef, private zone: NgZone, private emb: AppEmbeddingExtensions) { }\r\n\r\n ngOnInit() {\r\n this.zone.runOutsideAngular(() => {\r\n var handle = this.handlerSelector || '.modal-header';\r\n this.$draggable = jQuery(this._elementRef.nativeElement).children(':first-child');\r\n this.$draggable.draggable({\r\n handle,\r\n helper: function (_: any, __: any) {\r\n var oBody = jQuery(document).find('body');\r\n var containmentDiv = jQuery('<div id=\"div_containment\"></div>');\r\n containmentDiv\r\n .css('z-index', \"-99999\")\r\n .css('top', \"0\")\r\n .css('left', \"0\")\r\n .css('width', \"100%\")\r\n .css('height', \"100%\")\r\n .css('position', 'absolute');\r\n containmentDiv.appendTo(oBody);\r\n return this;\r\n },\r\n stop: function (_: any, __: any) {\r\n jQuery(document).filter('body').find('#div_containment').remove();\r\n },\r\n containment: this.emb.Embedded ? \"#div_containment\" : null\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.zone.runOutsideAngular(() => {\r\n // Distruzione di jQuery-UI draggable e rimozione di un eventuale containment div\r\n // rimasto appeso al body se la direttiva viene distrutta durante il drag.\r\n try {\r\n if (this.$draggable && this.$draggable.draggable(\"instance\"))\r\n this.$draggable.draggable(\"destroy\");\r\n } catch { }\r\n jQuery(document).find(\"body\").find(\"#div_containment\").remove();\r\n });\r\n }\r\n}","// Angular\r\nimport { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport \"jquery-slimscroll\";\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Directive({\r\n selector: \"[slim-scroll]\",\r\n standalone: true\r\n})\r\nexport class SlimScroll {\r\n @Input() public slimScrollOptions: Object;\r\n\r\n constructor(private _elementRef: ElementRef, private zone: NgZone) {\r\n }\r\n\r\n ngOnChanges(changes: any) {\r\n this._scroll();\r\n }\r\n\r\n // slimScroll registra listener e crea un wrapper nel DOM: senza destroy alla distruzione\r\n // della direttiva restavano orfani (leak).\r\n ngOnDestroy() {\r\n this._destroy();\r\n }\r\n\r\n private _scroll() {\r\n this._destroy();\r\n this._init();\r\n }\r\n\r\n //Stacco slimscroll da Angular dato che registra dei listener sull'oggetto in cui viene creato che spammerebbero la change detection\r\n private _init() {\r\n this.zone.runOutsideAngular(() => {\r\n jQuery(this._elementRef.nativeElement).slimScroll(this.slimScrollOptions);\r\n });\r\n }\r\n\r\n private _destroy() {\r\n this.zone.runOutsideAngular(() => {\r\n jQuery(this._elementRef.nativeElement).slimScroll({ destroy: true });\r\n });\r\n }\r\n}","// Angular\r\nimport { LocationStrategy } from \"@angular/common\";\r\nimport { Attribute, Directive, ElementRef, HostListener, Input, Renderer2 } from \"@angular/core\";\r\nimport { ActivatedRoute, Router, RouterLinkWithHref, UrlTree } from \"@angular/router\";\r\nimport { EMBEDDED_ROUTE, EnvOptions, ROUTE } from \"@esfaenza/core/domain\";\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { take } from \"rxjs\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Directive({\r\n selector: 'a[esRouterLink],area[esRouterLink]',\r\n standalone: true\r\n})\r\nexport class esRouterLinkWithHref extends RouterLinkWithHref {\r\n\r\n private EmbeddingSource: string;\r\n\r\n constructor(\r\n private emb: AppEmbeddingExtensions,\r\n router: Router, route: ActivatedRoute,\r\n @Attribute('tabindex') tabIndexAttribute: string | null | undefined,\r\n renderer: Renderer2, el: ElementRef,\r\n locationStrategy?: LocationStrategy) {\r\n\r\n super(router, route, tabIndexAttribute, renderer, el, locationStrategy)\r\n }\r\n\r\n @Input()\r\n set esRouterLink(commandsOrUrlTree: readonly any[] | string | UrlTree | null | undefined) {\r\n // UrlTree non è supportato because fuck you\r\n this.emb.EmbeddingSource.pipe(take(1)).subscribe(s => {\r\n this.EmbeddingSource = s;\r\n\r\n if(this.emb.Embedded && !s)\r\n console.error(\"Link creato in contesto di embedding ma senza embedding source!!\");\r\n\r\n let BasePath = \"/\" + (this.emb.Embedded ? EMBEDDED_ROUTE + (!!s? \"/\" + s : \"\") : ROUTE);\r\n\r\n if (commandsOrUrlTree != null) {\r\n (this as any).routerLinkInput = Array.isArray(commandsOrUrlTree) ? commandsOrUrlTree : [commandsOrUrlTree];\r\n let route = ((this as any).routerLinkInput[0] as string);\r\n if (!route.startsWith(\"/\" + EMBEDDED_ROUTE) && !route.startsWith(\"/\" + ROUTE))\r\n (this as any).routerLinkInput[0] = BasePath + (this as any).routerLinkInput[0];\r\n\r\n (this as any).setTabIndexIfNotOnNativeEl('0');\r\n } else {\r\n (this as any).routerLinkInput = null;\r\n (this as any).setTabIndexIfNotOnNativeEl(null);\r\n }\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey'])\r\n override onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean): boolean {\r\n \r\n if (this.emb.Embedded) {\r\n if(this.urlTree){\r\n let url = this.urlTree.toString().replace(EMBEDDED_ROUTE + (!!this.EmbeddingSource? \"/\" + this.EmbeddingSource : \"\"), ROUTE + \"/embed/\" + myconfig.AppData.ModuleId);\r\n this.emb.MainWindow.postMessage({ type: \"navigate\", url, newTab: ctrlKey, replaceState: !ctrlKey, current: (this as any as { router: Router }).router.url }, \"*\");\r\n }\r\n\r\n if (!ctrlKey)\r\n return super.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n else\r\n return false;\r\n }\r\n else\r\n return super.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n }\r\n}","// Angular\nimport { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\n\ndeclare var jQuery: any;\n\n@Directive({\n selector: \"[widget]\",\n standalone: true\n})\nexport class Widget implements OnInit, OnDestroy {\n $el: any;\n\n // Handler mantenuti come riferimenti così da poterli rimuovere in ngOnDestroy: registrati\n // inline non erano rimovibili, e ogni istanza aggiungeva listener a document a vita\n // (leak + handler duplicati che scattavano N volte).\n private onClose = (e: any) => {\n let $colWrap = jQuery(e.target).closest(' [class*=\"col-\"]:not(.widget-container)');\n\n // remove colWrap only if there are no more widgets inside\n if (!$colWrap.find(\".widget\").not(e.target).length) {\n $colWrap.remove();\n }\n };\n\n private onFullscreened = (e: any) => {\n jQuery(e.target).find(\"div.widget-body\").addClass(\"scrolling\");\n };\n\n private onRestored = (e: any) => {\n jQuery(e.target).find(\"div.widget-body\").removeClass(\"scrolling\");\n };\n\n constructor(el: ElementRef) {\n this.$el = jQuery(el.nativeElement);\n jQuery.fn.widgster.Constructor.DEFAULTS.bodySelector = \".widget-body\";\n\n /*\n When widget is closed remove its parent if it is .col-*\n */\n jQuery(document)\n .on(\"close.widgster\", this.onClose)\n .on(\"fullscreened.widgster\", this.onFullscreened)\n .on(\"restored.widgster\", this.onRestored);\n }\n\n ngOnInit(): void {\n this.$el.widgster();\n }\n\n ngOnDestroy(): void {\n jQuery(document)\n .off(\"close.widgster\", this.onClose)\n .off(\"fullscreened.widgster\", this.onFullscreened)\n .off(\"restored.widgster\", this.onRestored);\n }\n}\n","import { Directive, Input, Type, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[componentHost]',\r\n standalone: true\r\n})\r\nexport class ComponentHostDirective {\r\n\r\n @Input() componentHost: Type<any>;\r\n @Input() Inputs: Record<string, any> = null;\r\n\r\n // Eventuali accessi esterni... non si sa mai\r\n public CreatedComponent: any;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n\r\n ngOnInit(){\r\n this.CreatedComponent = this.viewContainerRef.createComponent<any>(this.componentHost);\r\n\r\n if (!this.Inputs)\r\n return;\r\n\r\n for (const key in this.Inputs)\r\n this.CreatedComponent.instance[key] = this.Inputs[key];\r\n }\r\n}","// Angular\r\nimport { Directive, ElementRef, inject, Renderer2 } from \"@angular/core\";\r\n\r\n// Core\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n\r\n// Bootrstrap\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Rxjs\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Directive({\r\n selector: '[esModal]',\r\n exportAs: 'es-modal',\r\n standalone: true\r\n})\r\nexport class EsModalDirective extends ModalDirective {\r\n\r\n elementRef: ElementRef;\r\n rendererRef: Renderer2;\r\n\r\n HideSubscription: Subscription;\r\n\r\n private emb: AppEmbeddingExtensions = inject(AppEmbeddingExtensions);\r\n\r\n override ngOnInit(){\r\n this.elementRef = (this as any)._element;\r\n this.rendererRef = (this as any)._renderer;\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n override show(): void {\r\n\r\n super.show();\r\n\r\n if (this.emb.Embedded) \r\n this.emb.onEmbeddedDialogShow(this as any)\r\n }\r\n\r\n override hide(): void {\r\n super.hide();\r\n\r\n if (this.emb.Embedded) \r\n this.emb.onEmbeddedDialogHide(this as any)\r\n }\r\n}","// Angular\r\nimport { NgModule } from \"@angular/core\";\r\n\r\n// Direttive\r\nimport { Draggable } from \"./draggable/draggable.directive\";\r\nimport { SlimScroll } from \"./slim-scroll/slim-scroll.directive\";\r\nimport { Widget } from \"./widget/widget.directive\";\r\nimport { esRouterLinkWithHref } from \"./es-routerLink/es-routerLink.directive\";\r\nimport { ComponentHostDirective } from \"./componentHost/componentHost.directive\";\r\nimport { EsModalDirective } from \"./es-modal/es-modal.directive\";\r\n\r\nconst DIRECTIVES = [Draggable, SlimScroll, Widget, esRouterLinkWithHref, ComponentHostDirective, EsModalDirective];\r\n\r\n@NgModule({ imports: [...DIRECTIVES], exports: [...DIRECTIVES] })\r\nexport class DirectivesModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;MAYa,SAAS,CAAA;AAKlB,IAAA,WAAA,CAAoB,WAAuB,EAAU,IAAY,EAAU,GAA2B,EAAA;QAAlF,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAkB,IAAA,CAAA,GAAG,GAAH,GAAG;IAA4B;IAE1G,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,eAAe;AACpD,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AACjF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBACtB,MAAM;AACN,gBAAA,MAAM,EAAE,UAAU,CAAM,EAAE,EAAO,EAAA;oBAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,oBAAA,IAAI,cAAc,GAAG,MAAM,CAAC,kCAAkC,CAAC;oBAC/D;AACK,yBAAA,GAAG,CAAC,SAAS,EAAE,QAAQ;AACvB,yBAAA,GAAG,CAAC,KAAK,EAAE,GAAG;AACd,yBAAA,GAAG,CAAC,MAAM,EAAE,GAAG;AACf,yBAAA,GAAG,CAAC,OAAO,EAAE,MAAM;AACnB,yBAAA,GAAG,CAAC,QAAQ,EAAE,MAAM;AACpB,yBAAA,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AAChC,oBAAA,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9B,oBAAA,OAAO,IAAI;gBACf,CAAC;AACD,gBAAA,IAAI,EAAE,UAAU,CAAM,EAAE,EAAO,EAAA;AAC3B,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE;gBACrE,CAAC;AACD,gBAAA,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,kBAAkB,GAAG;AACzD,aAAA,CAAC;AACN,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;;AAG7B,YAAA,IAAI;gBACA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;AACxD,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;YAC5C;YAAE,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE;AACnE,QAAA,CAAC,CAAC;IACN;+GA5CS,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;uBAAC,cAAc;;;ACbzB;MAYa,UAAU,CAAA;IAGnB,WAAA,CAAoB,WAAuB,EAAU,IAAY,EAAA;QAA7C,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,IAAI,GAAJ,IAAI;IACzD;AAEA,IAAA,WAAW,CAAC,OAAY,EAAA;QACpB,IAAI,CAAC,OAAO,EAAE;IAClB;;;IAIA,WAAW,GAAA;QACP,IAAI,CAAC,QAAQ,EAAE;IACnB;IAEQ,OAAO,GAAA;QACX,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,KAAK,EAAE;IAChB;;IAGQ,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC7E,QAAA,CAAC,CAAC;IACN;IAEQ,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxE,QAAA,CAAC,CAAC;IACN;+GAhCS,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI;;;ACCC,MAAO,oBAAqB,SAAQ,kBAAkB,CAAA;AAIxD,IAAA,WAAA,CACY,GAA2B,EACnC,MAAc,EAAE,KAAqB,EACd,iBAA4C,EACnE,QAAmB,EAAE,EAAc,EACnC,gBAAmC,EAAA;AAEnC,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,CAAC;QAN/D,IAAA,CAAA,GAAG,GAAH,GAAG;IAOf;IAEA,IACI,YAAY,CAAC,iBAAuE,EAAA;;AAEpF,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACjD,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AAExB,YAAA,IAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;AACtB,gBAAA,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC;AAErF,YAAA,IAAI,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,GAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;AAEvF,YAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC1B,gBAAA,IAAY,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,CAAC,iBAAiB,CAAC;gBAC1G,IAAI,KAAK,GAAK,IAAY,CAAC,eAAe,CAAC,CAAC,CAAY;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC;AACxE,oBAAA,IAAY,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAI,IAAY,CAAC,eAAe,CAAC,CAAC,CAAC;AAEjF,gBAAA,IAAY,CAAC,0BAA0B,CAAC,GAAG,CAAC;YACjD;iBAAO;AACF,gBAAA,IAAY,CAAC,eAAe,GAAG,IAAI;AACnC,gBAAA,IAAY,CAAC,0BAA0B,CAAC,IAAI,CAAC;YAClD;AACJ,QAAA,CAAC,CAAC;IACN;IAGS,OAAO,CAAC,MAAc,EAAE,OAAgB,EAAE,QAAiB,EAAE,MAAe,EAAE,OAAgB,EAAA;AAEnG,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACZ,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,GAAE,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpK,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAG,IAAkC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;YACrK;AAEA,YAAA,IAAI,CAAC,OAAO;AACR,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;;AAEhE,gBAAA,OAAO,KAAK;QACpB;;AAEI,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACxE;AAvDS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4GAOd,UAAU,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAPhB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oFAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAQQ,SAAS;2BAAC,UAAU;;sBAOxB;;sBAyBA,YAAY;uBAAC,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC;;;ACrDpH;MASa,MAAM,CAAA;AAuBf,IAAA,WAAA,CAAY,EAAc,EAAA;;;;AAjBlB,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,CAAM,KAAI;AACzB,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC;;AAGlF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;gBAChD,QAAQ,CAAC,MAAM,EAAE;YACrB;AACJ,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAM,KAAI;AAChC,YAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClE,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAM,KAAI;AAC5B,YAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;AACrE,QAAA,CAAC;QAGG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC;AACnC,QAAA,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,cAAc;AAErE;;AAEG;QACH,MAAM,CAAC,QAAQ;AACV,aAAA,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO;AACjC,aAAA,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc;AAC/C,aAAA,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC;IACjD;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;IACvB;IAEA,WAAW,GAAA;QACP,MAAM,CAAC,QAAQ;AACV,aAAA,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO;AAClC,aAAA,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc;AAChD,aAAA,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC;IAClD;+GA7CS,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAN,MAAM,EAAA,UAAA,EAAA,CAAA;kBAJlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCFY,sBAAsB,CAAA;AAQ/B,IAAA,WAAA,CAAmB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAL1B,IAAA,CAAA,MAAM,GAAwB,IAAI;IAKc;IAEzD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAM,IAAI,CAAC,aAAa,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,MAAM;YACZ;AAEJ,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9D;+GAlBS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBACA;;;ACTL;AAiBM,MAAO,gBAAiB,SAAQ,cAAc,CAAA;AALpD,IAAA,WAAA,GAAA;;AAYY,QAAA,IAAA,CAAA,GAAG,GAA2B,MAAM,CAAC,sBAAsB,CAAC;AAuBvE,IAAA;IArBY,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAI,IAAY,CAAC,QAAQ;AACxC,QAAA,IAAI,CAAC,WAAW,GAAI,IAAY,CAAC,SAAS;QAE1C,KAAK,CAAC,QAAQ,EAAE;IACpB;IAES,IAAI,GAAA;QAET,KAAK,CAAC,IAAI,EAAE;AAEZ,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ;AACjB,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAW,CAAC;IAClD;IAES,IAAI,GAAA;QACT,KAAK,CAAC,IAAI,EAAE;AAEZ,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ;AACjB,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAW,CAAC;IAClD;+GA7BS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AChBD;AAWA,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;MAGrG,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHT,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAA7F,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;gHAGpG,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE;;;ACbhE;;AAEG;;;;"}
1
+ {"version":3,"file":"esfaenza-core-directives.mjs","sources":["../../../projects/core/directives/src/draggable/draggable.directive.ts","../../../projects/core/directives/src/slim-scroll/slim-scroll.directive.ts","../../../projects/core/directives/src/es-routerLink/es-routerLink.directive.ts","../../../projects/core/directives/src/widget/widget.directive.ts","../../../projects/core/directives/src/componentHost/componentHost.directive.ts","../../../projects/core/directives/src/es-modal/es-modal.directive.ts","../../../projects/core/directives/src/directives.module.ts","../../../projects/core/directives/src/esfaenza-core-directives.ts"],"sourcesContent":["// Angular\r\nimport { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Directive({\r\n selector: \"[emaDraggable]\",\r\n standalone: true\r\n})\r\nexport class Draggable {\r\n @Input('emaDraggable') handlerSelector: string;\r\n\r\n private $draggable: any;\r\n\r\n constructor(private _elementRef: ElementRef, private zone: NgZone, private emb: AppEmbeddingExtensions) { }\r\n\r\n ngOnInit() {\r\n this.zone.runOutsideAngular(() => {\r\n var handle = this.handlerSelector || '.modal-header';\r\n this.$draggable = jQuery(this._elementRef.nativeElement).children(':first-child');\r\n this.$draggable.draggable({\r\n handle,\r\n helper: function (_: any, __: any) {\r\n var oBody = jQuery(document).find('body');\r\n var containmentDiv = jQuery('<div id=\"div_containment\"></div>');\r\n containmentDiv\r\n .css('z-index', \"-99999\")\r\n .css('top', \"0\")\r\n .css('left', \"0\")\r\n .css('width', \"100%\")\r\n .css('height', \"100%\")\r\n .css('position', 'absolute');\r\n containmentDiv.appendTo(oBody);\r\n return this;\r\n },\r\n stop: function (_: any, __: any) {\r\n jQuery(document).filter('body').find('#div_containment').remove();\r\n },\r\n containment: this.emb.Embedded ? \"#div_containment\" : null\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.zone.runOutsideAngular(() => {\r\n // Distruzione di jQuery-UI draggable e rimozione di un eventuale containment div\r\n // rimasto appeso al body se la direttiva viene distrutta durante il drag.\r\n try {\r\n if (this.$draggable && this.$draggable.draggable(\"instance\"))\r\n this.$draggable.draggable(\"destroy\");\r\n } catch { }\r\n jQuery(document).find(\"body\").find(\"#div_containment\").remove();\r\n });\r\n }\r\n}","// Angular\r\nimport { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport \"jquery-slimscroll\";\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Directive({\r\n selector: \"[slim-scroll]\",\r\n standalone: true\r\n})\r\nexport class SlimScroll {\r\n @Input() public slimScrollOptions: Object;\r\n\r\n constructor(private _elementRef: ElementRef, private zone: NgZone) {\r\n }\r\n\r\n ngOnChanges(changes: any) {\r\n this._scroll();\r\n }\r\n\r\n // slimScroll registra listener e crea un wrapper nel DOM: senza destroy alla distruzione\r\n // della direttiva restavano orfani (leak).\r\n ngOnDestroy() {\r\n this._destroy();\r\n }\r\n\r\n private _scroll() {\r\n this._destroy();\r\n this._init();\r\n }\r\n\r\n //Stacco slimscroll da Angular dato che registra dei listener sull'oggetto in cui viene creato che spammerebbero la change detection\r\n private _init() {\r\n this.zone.runOutsideAngular(() => {\r\n jQuery(this._elementRef.nativeElement).slimScroll(this.slimScrollOptions);\r\n });\r\n }\r\n\r\n private _destroy() {\r\n this.zone.runOutsideAngular(() => {\r\n jQuery(this._elementRef.nativeElement).slimScroll({ destroy: true });\r\n });\r\n }\r\n}","// Angular\r\nimport { LocationStrategy } from \"@angular/common\";\r\nimport { Attribute, Directive, ElementRef, HostListener, Input, Renderer2 } from \"@angular/core\";\r\nimport { ActivatedRoute, Router, RouterLinkWithHref, UrlTree } from \"@angular/router\";\r\nimport { EMBEDDED_ROUTE, EnvOptions, ROUTE } from \"@esfaenza/core/domain\";\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { take } from \"rxjs\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Directive({\r\n selector: 'a[esRouterLink],area[esRouterLink]',\r\n standalone: true\r\n})\r\nexport class esRouterLinkWithHref extends RouterLinkWithHref {\r\n\r\n private EmbeddingSource: string;\r\n\r\n constructor(\r\n private emb: AppEmbeddingExtensions,\r\n router: Router, route: ActivatedRoute,\r\n @Attribute('tabindex') tabIndexAttribute: string | null | undefined,\r\n renderer: Renderer2, el: ElementRef,\r\n locationStrategy?: LocationStrategy) {\r\n\r\n super(router, route, tabIndexAttribute, renderer, el, locationStrategy)\r\n }\r\n\r\n @Input()\r\n set esRouterLink(commandsOrUrlTree: readonly any[] | string | UrlTree | null | undefined) {\r\n // UrlTree non è supportato because fuck you\r\n this.emb.EmbeddingSource.pipe(take(1)).subscribe(s => {\r\n this.EmbeddingSource = s;\r\n\r\n if(this.emb.Embedded && !s)\r\n console.error(\"Link creato in contesto di embedding ma senza embedding source!!\");\r\n\r\n let BasePath = \"/\" + (this.emb.Embedded ? EMBEDDED_ROUTE + (!!s? \"/\" + s : \"\") : ROUTE);\r\n\r\n if (commandsOrUrlTree != null) {\r\n (this as any).routerLinkInput = Array.isArray(commandsOrUrlTree) ? commandsOrUrlTree : [commandsOrUrlTree];\r\n let route = ((this as any).routerLinkInput[0] as string);\r\n if (!route.startsWith(\"/\" + EMBEDDED_ROUTE) && !route.startsWith(\"/\" + ROUTE))\r\n (this as any).routerLinkInput[0] = BasePath + (this as any).routerLinkInput[0];\r\n\r\n (this as any).setTabIndexIfNotOnNativeEl('0');\r\n } else {\r\n (this as any).routerLinkInput = null;\r\n (this as any).setTabIndexIfNotOnNativeEl(null);\r\n }\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey'])\r\n override onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean): boolean {\r\n \r\n if (this.emb.Embedded) {\r\n if(this.urlTree){\r\n let url = this.urlTree.toString().replace(EMBEDDED_ROUTE + (!!this.EmbeddingSource? \"/\" + this.EmbeddingSource : \"\"), ROUTE + \"/embed/\" + myconfig.AppData.ModuleId);\r\n this.emb.MainWindow.postMessage({ type: \"navigate\", url, newTab: ctrlKey, replaceState: !ctrlKey, current: (this as any as { router: Router }).router.url }, \"*\");\r\n }\r\n\r\n if (!ctrlKey)\r\n return super.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n else\r\n return false;\r\n }\r\n else\r\n return super.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n }\r\n}","// Angular\nimport { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\n\ndeclare var jQuery: any;\n\n@Directive({\n selector: \"[widget]\",\n standalone: true\n})\nexport class Widget implements OnInit, OnDestroy {\n $el: any;\n\n // Handler mantenuti come riferimenti così da poterli rimuovere in ngOnDestroy: registrati\n // inline non erano rimovibili, e ogni istanza aggiungeva listener a document a vita\n // (leak + handler duplicati che scattavano N volte).\n private onClose = (e: any) => {\n let $colWrap = jQuery(e.target).closest(' [class*=\"col-\"]:not(.widget-container)');\n\n // remove colWrap only if there are no more widgets inside\n if (!$colWrap.find(\".widget\").not(e.target).length) {\n $colWrap.remove();\n }\n };\n\n private onFullscreened = (e: any) => {\n jQuery(e.target).find(\"div.widget-body\").addClass(\"scrolling\");\n };\n\n private onRestored = (e: any) => {\n jQuery(e.target).find(\"div.widget-body\").removeClass(\"scrolling\");\n };\n\n constructor(el: ElementRef) {\n this.$el = jQuery(el.nativeElement);\n jQuery.fn.widgster.Constructor.DEFAULTS.bodySelector = \".widget-body\";\n\n /*\n When widget is closed remove its parent if it is .col-*\n */\n jQuery(document)\n .on(\"close.widgster\", this.onClose)\n .on(\"fullscreened.widgster\", this.onFullscreened)\n .on(\"restored.widgster\", this.onRestored);\n }\n\n ngOnInit(): void {\n this.$el.widgster();\n }\n\n ngOnDestroy(): void {\n jQuery(document)\n .off(\"close.widgster\", this.onClose)\n .off(\"fullscreened.widgster\", this.onFullscreened)\n .off(\"restored.widgster\", this.onRestored);\n }\n}\n","import { Directive, Input, Type, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[componentHost]',\r\n standalone: true\r\n})\r\nexport class ComponentHostDirective {\r\n\r\n @Input() componentHost: Type<any>;\r\n @Input() Inputs: Record<string, any> = null;\r\n\r\n // Eventuali accessi esterni... non si sa mai\r\n public CreatedComponent: any;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n\r\n ngOnInit(){\r\n this.CreatedComponent = this.viewContainerRef.createComponent<any>(this.componentHost);\r\n\r\n if (!this.Inputs)\r\n return;\r\n\r\n for (const key in this.Inputs)\r\n this.CreatedComponent.instance[key] = this.Inputs[key];\r\n }\r\n}","// Angular\nimport { Directive, ElementRef, inject, NgZone, Renderer2 } from \"@angular/core\";\n\n// Core\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\n\n// Bootrstrap\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\n\n// Rxjs\nimport { Subscription, take } from \"rxjs\";\n\n/** Distanza minima (px) fra l'inizio dell'iframe e il top del dialog quando l'applicativo è embeddato */\nconst EMBEDDED_DIALOG_MIN_TOP = 0;\n\n@Directive({\n selector: '[esModal]',\n exportAs: 'es-modal',\n standalone: true\n})\nexport class EsModalDirective extends ModalDirective {\n\n elementRef: ElementRef;\n rendererRef: Renderer2;\n\n HideSubscription: Subscription;\n\n private emb: AppEmbeddingExtensions = inject(AppEmbeddingExtensions);\n private zone: NgZone = inject(NgZone);\n\n // Vincolo sul top del dialog in modalità embedded (vedi constrainEmbeddedTop)\n private embeddedShownSub: Subscription;\n private embeddedHideSub: Subscription;\n private embeddedResizeObserver: ResizeObserver;\n private embeddedNaturalMarginTop: number = null;\n private embeddedCorrection = 0;\n private embeddedOriginalMarginTop = \"\";\n private embeddedScrollEnabled = false;\n private onEmbeddedWindowResize = () => this.constrainEmbeddedTop();\n\n override ngOnInit(){\n this.elementRef = (this as any)._element;\n this.rendererRef = (this as any)._renderer;\n\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n this.stopEmbeddedTopConstraint();\n super.ngOnDestroy();\n }\n\n override show(): void {\n const wasShown = this.isShown;\n\n super.show();\n\n if (this.emb.Embedded) {\n this.emb.onEmbeddedDialogShow(this as any);\n if (!wasShown)\n this.startEmbeddedTopConstraint();\n }\n }\n\n override hide(): void {\n super.hide();\n\n if (this.emb.Embedded)\n this.emb.onEmbeddedDialogHide(this as any)\n }\n\n private startEmbeddedTopConstraint() {\n this.stopEmbeddedTopConstraint();\n this.embeddedNaturalMarginTop = null;\n this.embeddedScrollEnabled = false;\n\n // Il dialog è nella posizione definitiva solo a fine transizione di apertura (onShown).\n // Senza animazione ngx-bootstrap emette onShown in modo sincrono dentro super.show(),\n // quindi a questo punto è già passato e si può misurare subito\n if (!this.config.animated)\n this.onEmbeddedDialogShown();\n else\n this.embeddedShownSub = this.onShown.pipe(take(1)).subscribe(() => this.onEmbeddedDialogShown());\n\n this.embeddedHideSub = this.onHide.pipe(take(1)).subscribe(() => this.stopEmbeddedTopConstraint());\n }\n\n private onEmbeddedDialogShown() {\n this.constrainEmbeddedTop(true);\n\n let dialog: HTMLElement = this.elementRef?.nativeElement?.querySelector(\".modal-dialog\");\n if (!dialog)\n return;\n\n // Il contenuto può cambiare dimensione dopo l'apertura (dati caricati in asincrono, max-height del\n // body impostata in differita da AppEmbeddingExtensions.doFixBody, ...): il vincolo va mantenuto\n this.zone.runOutsideAngular(() => {\n if (typeof ResizeObserver !== \"undefined\") {\n this.embeddedResizeObserver = new ResizeObserver(() => this.constrainEmbeddedTop());\n this.embeddedResizeObserver.observe(dialog);\n }\n window.addEventListener(\"resize\", this.onEmbeddedWindowResize);\n });\n }\n\n private stopEmbeddedTopConstraint() {\n this.embeddedShownSub?.unsubscribe();\n this.embeddedHideSub?.unsubscribe();\n this.embeddedResizeObserver?.disconnect();\n this.embeddedResizeObserver = null;\n window.removeEventListener(\"resize\", this.onEmbeddedWindowResize);\n }\n\n /**\n * In modalità embedded vincola il top del dialog all'inizio dell'iframe.\n *\n * Su schermi piccoli l'iframe (alto quanto la finestra padre meno l'header) è più basso del dialog e\n * il posizionamento impostato da AppEmbeddingExtensions.onEmbeddedDialogShow (overflow:hidden sul .modal)\n * poteva lasciarlo tagliato in alto già all'apertura, senza modo di recuperarlo. Il controllo non dipende\n * dalla causa: si misura il top effettivo e, se è sopra l'iframe, si riporta giù il dialog della differenza.\n *\n * @param atOpen true alla prima misura dopo l'apertura: riporta il .modal nella posizione di riposo\n */\n private constrainEmbeddedTop(atOpen: boolean = false) {\n let modal: HTMLElement = this.elementRef?.nativeElement;\n let dialog: HTMLElement = modal?.querySelector(\".modal-dialog\");\n if (!modal || !dialog || !this.isShown)\n return;\n\n if (atOpen) {\n // Il focus fatto da ngx-bootstrap a fine transizione può aver scrollato il .modal per mostrare\n // la parte bassa del dialog: overflow:hidden impedisce lo scroll dell'utente, non quello programmatico\n modal.scrollTop = 0;\n // Eventuale correzione rimasta dall'apertura precedente: si riparte dal posizionamento naturale\n this.setEmbeddedCorrection(dialog, 0);\n this.embeddedNaturalMarginTop = parseFloat(getComputedStyle(dialog).marginTop) || 0;\n }\n\n if (this.embeddedNaturalMarginTop == null)\n return;\n\n // Top che il dialog avrebbe senza correzione e a scroll azzerato: così le misure successive non\n // dipendono da quanto l'utente ha eventualmente scrollato il .modal\n let uncorrectedTop = dialog.getBoundingClientRect().top + modal.scrollTop - this.embeddedCorrection;\n // Arrotondato al pixel intero: evita riscritture continue dello stile per differenze sub-pixel nelle misure\n this.setEmbeddedCorrection(dialog, Math.max(0, Math.ceil(EMBEDDED_DIALOG_MIN_TOP - uncorrectedTop)));\n\n // Con il top vincolato un dialog più alto dell'iframe esce dal fondo, e con l'overflow:hidden del .modal\n // il footer (pulsanti di conferma) sarebbe irraggiungibile: si abilita lo scroll verticale. Una volta\n // attivato resta fino alla prossima apertura, per non far oscillare il layout (la scrollbar riduce la\n // larghezza disponibile e può cambiare l'altezza del dialog)\n if (!this.embeddedScrollEnabled && dialog.getBoundingClientRect().bottom + modal.scrollTop > window.innerHeight) {\n this.rendererRef.setStyle(modal, \"overflow-y\", \"auto\");\n this.embeddedScrollEnabled = true;\n }\n }\n\n /** Sposta in basso il dialog di `correction` px agendo sul margin-top, preservando l'eventuale valore inline originale */\n private setEmbeddedCorrection(dialog: HTMLElement, correction: number) {\n if (correction == this.embeddedCorrection)\n return;\n\n if (this.embeddedCorrection == 0)\n this.embeddedOriginalMarginTop = dialog.style.marginTop;\n\n if (correction > 0)\n this.rendererRef.setStyle(dialog, \"margin-top\", `${this.embeddedNaturalMarginTop + correction}px`);\n else if (this.embeddedOriginalMarginTop)\n this.rendererRef.setStyle(dialog, \"margin-top\", this.embeddedOriginalMarginTop);\n else\n this.rendererRef.removeStyle(dialog, \"margin-top\");\n\n this.embeddedCorrection = correction;\n }\n}\n","// Angular\r\nimport { NgModule } from \"@angular/core\";\r\n\r\n// Direttive\r\nimport { Draggable } from \"./draggable/draggable.directive\";\r\nimport { SlimScroll } from \"./slim-scroll/slim-scroll.directive\";\r\nimport { Widget } from \"./widget/widget.directive\";\r\nimport { esRouterLinkWithHref } from \"./es-routerLink/es-routerLink.directive\";\r\nimport { ComponentHostDirective } from \"./componentHost/componentHost.directive\";\r\nimport { EsModalDirective } from \"./es-modal/es-modal.directive\";\r\n\r\nconst DIRECTIVES = [Draggable, SlimScroll, Widget, esRouterLinkWithHref, ComponentHostDirective, EsModalDirective];\r\n\r\n@NgModule({ imports: [...DIRECTIVES], exports: [...DIRECTIVES] })\r\nexport class DirectivesModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}