ngx-kit 3.1.0 → 3.2.0

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 { InjectionToken, signal, viewChild, inject, DOCUMENT, HostListener, ViewEncapsulation, Component, createComponent, Inject, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, Injector } from '@angular/core';
2
+ import { InjectionToken, signal, viewChild, inject, DOCUMENT, HostListener, ViewEncapsulation, Component, createComponent, EventEmitter, Inject, Injectable, makeEnvironmentProviders, provideEnvironmentInitializer, Injector } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT as DOCUMENT$1 } from '@angular/common';
5
5
  import { Subject } from 'rxjs';
@@ -45,12 +45,12 @@ var DismissReason;
45
45
  DismissReason[DismissReason["backdrop"] = 1] = "backdrop";
46
46
  DismissReason[DismissReason["close"] = 2] = "close";
47
47
  /**
48
- * @description ❌⚠️NOT Implemented!⚠️❌
49
- */
48
+ * @description ❌⚠️NOT Implemented!⚠️❌
49
+ */
50
50
  DismissReason[DismissReason["esc"] = 3] = "esc";
51
51
  /**
52
- * @description ❌⚠️NOT Implemented!⚠️❌
53
- */
52
+ * @description ❌⚠️NOT Implemented!⚠️❌
53
+ */
54
54
  DismissReason[DismissReason["timer"] = 4] = "timer";
55
55
  })(DismissReason || (DismissReason = {}));
56
56
 
@@ -158,7 +158,7 @@ class NgxMessageComponent {
158
158
  provide: NGX_MESSAGE_CONFIGS,
159
159
  useValue: NGX_MESSAGE_DEFAULT_OPTIONS,
160
160
  },
161
- ], viewQueries: [{ propertyName: "confetti", first: true, predicate: ["confetti"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">\u2715</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["ngx-message{--bg-0: #0a0c14;--bg-1: #0f1220;--panel: rgba(22, 25, 40, .72);--panel-border: rgba(255, 255, 255, .08);--ink-0: #f3f4fb;--ink-1: #a8adc4;--ink-2: #6b7090;--violet: #8b7bff;--violet-2: #5b4fd1;--cyan: #43e0d8;--amber: #ffb454;--rose: #ff6b8b;--emerald: #3ee08f;--success-a: #3ee08f;--success-b: #1fb8b0;--error-a: #ff6b8b;--error-b: #c23f6b;--warning-a: #ffc45c;--warning-b: #ff8a4c;--info-a: #7cc1ff;--info-b: #5b6cff;--confirm-a: #c58bff;--confirm-b: #7b5cff}.ngx-msg-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#06070e8c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}.ngx-msg-overlay.show{opacity:1;visibility:visible}.ngx-msg-modal{position:relative;width:100%;max-width:400px;background:var(--panel);border:1px solid var(--panel-border);border-radius:26px;padding:38px 30px 28px;text-align:center;box-shadow:0 30px 80px -20px #0009,0 0 0 1px #ffffff05 inset;transform:translateY(28px) scale(.92);opacity:0;transition:transform .1s,opacity .1s;overflow:hidden}.ngx-msg-overlay.show .ngx-msg-modal{animation:modalIn .55s cubic-bezier(.2,1.1,.3,1) forwards}.ngx-msg-overlay.closing .ngx-msg-modal{animation:modalOut .28s cubic-bezier(.4,0,1,1) forwards}@keyframes modalIn{0%{transform:translateY(28px) scale(.9);opacity:0}60%{transform:translateY(-4px) scale(1.015);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}@keyframes modalOut{to{transform:translateY(14px) scale(.94);opacity:0}}.ngx-msg-modal:before{content:\"\";position:absolute;top:-60px;left:50%;translate:-50% 0;width:260px;height:200px;border-radius:50%;background:var(--type-glow, radial-gradient(circle, rgba(139, 123, 255, .35), transparent 70%));filter:blur(20px);pointer-events:none}.ngx-msg-modal .close-x{position:absolute;top:16px;left:16px;width:30px;height:30px;border-radius:50%;border:1px solid var(--panel-border);background:#ffffff08;color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;line-height:1;transition:background .2s,color .2s,transform .2s}.ngx-msg-modal .close-x:hover{background:#ffffff14;color:var(--ink-0);transform:rotate(90deg)}.icon-stage{position:relative;width:96px;height:96px;margin:4px auto 22px}.icon-ring{position:absolute;inset:0;border-radius:50%;background:var(--type-ring, conic-gradient(from 0deg, var(--violet), var(--cyan), var(--violet)));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));opacity:0}.ngx-msg-overlay.show .icon-ring{animation:ringIn .8s .05s cubic-bezier(.2,.8,.2,1) forwards,ringSpin 6s linear infinite}@keyframes ringIn{to{opacity:1}}@keyframes ringSpin{to{transform:rotate(360deg)}}.icon-disc{position:absolute;inset:8px;border-radius:50%;background:var(--type-disc, linear-gradient(150deg, var(--violet), var(--violet-2)));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px -6px var(--type-shadow, rgba(139, 123, 255, .55));transform:scale(0)}.ngx-msg-overlay.show .icon-disc{animation:discPop .6s .12s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes discPop{to{transform:scale(1)}}.icon-disc svg{width:46px;height:46px;overflow:visible}.icon-disc .draw{fill:none;stroke:#fff;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80}.ngx-msg-overlay.show .icon-disc .draw{animation:draw .5s .42s cubic-bezier(.4,0,.2,1) forwards}@keyframes draw{to{stroke-dashoffset:0}}.icon-disc .dot-mark{fill:#fff;opacity:0;transform:scale(0);transform-origin:center}.ngx-msg-overlay.show .icon-disc .dot-mark{animation:dotPop .3s .55s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes dotPop{to{opacity:1;transform:scale(1)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner{width:52px;height:52px;border-radius:50%;border:5px solid rgba(255,255,255,.18);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ngx-msg-modal h2{font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;margin:0 0 10px;opacity:0;transform:translateY(8px)}.ngx-msg-modal p.desc{font-size:14.5px;line-height:1.85;color:var(--ink-1);margin:0 0 26px;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal h2{animation:textIn .5s .3s ease forwards}.ngx-msg-overlay.show .ngx-msg-modal p.desc{animation:textIn .5s .38s ease forwards}@keyframes textIn{to{opacity:1;transform:translateY(0)}}.ngx-msg-modal .ngx-msg-actions{display:flex;gap:10px;justify-content:center;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal .ngx-msg-actions{animation:textIn .5s .46s ease forwards}.btn{appearance:none;border:none;cursor:pointer;font-family:inherit;font-size:14.5px;font-weight:700;padding:12px 22px;border-radius:13px;transition:transform .18s cubic-bezier(.2,.8,.2,1),filter .2s,box-shadow .2s;flex:1;max-width:170px}.btn:active{transform:scale(.95)}.btn-primary{color:#0a0c14;background:var(--type-btn, linear-gradient(135deg, var(--violet), var(--cyan)));box-shadow:0 10px 24px -8px var(--type-shadow, rgba(139, 123, 255, .6))}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-2px)}.btn-ghost{color:var(--ink-1);background:#ffffff0b;border:1px solid var(--panel-border)}.btn-ghost:hover{color:var(--ink-0);background:#ffffff14}.progress{position:absolute;bottom:0;left:0;height:3px;background:var(--type-btn, linear-gradient(90deg, var(--violet), var(--cyan)));width:100%;transform-origin:right center}[dir=rtl] .progress{transform-origin:left center}.ngx-msg-overlay[data-type=success] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--success-a), var(--success-b), var(--success-a));--type-disc: linear-gradient(150deg, var(--success-a), var(--success-b));--type-shadow: rgba(62, 224, 143, .5);--type-btn: linear-gradient(135deg, var(--success-a), var(--success-b));--type-glow: radial-gradient(circle, rgba(62, 224, 143, .35), transparent 70%)}.ngx-msg-overlay[data-type=error] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--error-a), var(--error-b), var(--error-a));--type-disc: linear-gradient(150deg, var(--error-a), var(--error-b));--type-shadow: rgba(255, 107, 139, .5);--type-btn: linear-gradient(135deg, var(--error-a), var(--error-b));--type-glow: radial-gradient(circle, rgba(255, 107, 139, .35), transparent 70%)}.ngx-msg-overlay[data-type=warning] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--warning-a), var(--warning-b), var(--warning-a));--type-disc: linear-gradient(150deg, var(--warning-a), var(--warning-b));--type-shadow: rgba(255, 140, 76, .5);--type-btn: linear-gradient(135deg, var(--warning-a), var(--warning-b));--type-glow: radial-gradient(circle, rgba(255, 140, 76, .35), transparent 70%)}.ngx-msg-overlay[data-type=info] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--info-a), var(--info-b), var(--info-a));--type-disc: linear-gradient(150deg, var(--info-a), var(--info-b));--type-shadow: rgba(91, 108, 255, .5);--type-btn: linear-gradient(135deg, var(--info-a), var(--info-b));--type-glow: radial-gradient(circle, rgba(91, 108, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=confirm] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--confirm-a), var(--confirm-b), var(--confirm-a));--type-disc: linear-gradient(150deg, var(--confirm-a), var(--confirm-b));--type-shadow: rgba(123, 92, 255, .5);--type-btn: linear-gradient(135deg, var(--confirm-a), var(--confirm-b));--type-glow: radial-gradient(circle, rgba(123, 92, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=loading] .ngx-msg-modal{--type-disc: linear-gradient(150deg, #9aa3c0, #565c78);--type-glow: radial-gradient(circle, rgba(154, 163, 192, .3), transparent 70%)}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.btn:focus-visible,.trigger:focus-visible,.close-x:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
161
+ ], viewQueries: [{ propertyName: "confetti", first: true, predicate: ["confetti"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">\u2715</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":root{--bg-0: #0a0c14;--bg-1: #0f1220;--ngx-msg-panel-bg: light-dark(#ffffffc4, #161928b8);--ngx-msg-panel-fg: light-dark(#000, #fff);--ngx-msg-panel-border: light-dark(#4545454a, #ffffff14);--ink-0: light-dark(#212121 #f3f4fb);--ink-1: light-dark(#2d2e32, #a8adc4);--ink-2: #6b7090;--violet: #8b7bff;--violet-2: #5b4fd1;--cyan: #43e0d8;--amber: #ffb454;--rose: #ff6b8b;--emerald: #3ee08f;--success-a: #3ee08f;--success-b: #1fb8b0;--error-a: #ff6b8b;--error-b: #c23f6b;--warning-a: #ffc45c;--warning-b: #ff8a4c;--info-a: #7cc1ff;--info-b: #5b6cff;--confirm-a: #c58bff;--confirm-b: #7b5cff}.ngx-msg-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#06070e8c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}.ngx-msg-overlay.show{opacity:1;visibility:visible}.ngx-msg-modal{position:relative;width:100%;max-width:400px;background-color:var(--ngx-msg-panel-bg);color:var(--ngx-msg-panel-fg);border:1px solid var(--ngx-msg-panel-border);border-radius:26px;padding:38px 30px 28px;text-align:center;box-shadow:0 30px 80px -20px #0009,0 0 0 1px #ffffff05 inset;transform:translateY(28px) scale(.92);opacity:0;transition:transform .1s,opacity .1s;overflow:hidden}.ngx-msg-overlay.show .ngx-msg-modal{animation:modalIn .55s cubic-bezier(.2,1.1,.3,1) forwards}.ngx-msg-overlay.closing .ngx-msg-modal{animation:modalOut .28s cubic-bezier(.4,0,1,1) forwards}@keyframes modalIn{0%{transform:translateY(28px) scale(.9);opacity:0}60%{transform:translateY(-4px) scale(1.015);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}@keyframes modalOut{to{transform:translateY(14px) scale(.94);opacity:0}}.ngx-msg-modal:before{content:\"\";position:absolute;top:-60px;left:50%;translate:-50% 0;width:260px;height:200px;border-radius:50%;background:var(--type-glow, radial-gradient(circle, rgba(139, 123, 255, .35), transparent 70%));filter:blur(20px);pointer-events:none}.ngx-msg-modal .close-x{position:absolute;top:16px;left:16px;width:30px;height:30px;border-radius:50%;border:1px solid var(--ngx-msg-panel-border);background:#ffffff08;color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;line-height:1;transition:background .2s,color .2s,transform .2s}.ngx-msg-modal .close-x:hover{background:#ffffff14;color:var(--ink-0);transform:rotate(90deg)}.icon-stage{position:relative;width:96px;height:96px;margin:4px auto 22px}.icon-ring{position:absolute;inset:0;border-radius:50%;background:var(--type-ring, conic-gradient(from 0deg, var(--violet), var(--cyan), var(--violet)));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));opacity:0}.ngx-msg-overlay.show .icon-ring{animation:ringIn .8s .05s cubic-bezier(.2,.8,.2,1) forwards,ringSpin 6s linear infinite}@keyframes ringIn{to{opacity:1}}@keyframes ringSpin{to{transform:rotate(360deg)}}.icon-disc{position:absolute;inset:8px;border-radius:50%;background:var(--type-disc, linear-gradient(150deg, var(--violet), var(--violet-2)));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px -6px var(--type-shadow, rgba(139, 123, 255, .55));transform:scale(0)}.ngx-msg-overlay.show .icon-disc{animation:discPop .6s .12s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes discPop{to{transform:scale(1)}}.icon-disc svg{width:46px;height:46px;overflow:visible}.icon-disc .draw{fill:none;stroke:#fff;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80}.ngx-msg-overlay.show .icon-disc .draw{animation:draw .5s .42s cubic-bezier(.4,0,.2,1) forwards}@keyframes draw{to{stroke-dashoffset:0}}.icon-disc .dot-mark{fill:#fff;opacity:0;transform:scale(0);transform-origin:center}.ngx-msg-overlay.show .icon-disc .dot-mark{animation:dotPop .3s .55s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes dotPop{to{opacity:1;transform:scale(1)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner{width:52px;height:52px;border-radius:50%;border:5px solid rgba(255,255,255,.18);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ngx-msg-modal h2{font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;margin:0 0 10px;opacity:0;transform:translateY(8px)}.ngx-msg-modal p.desc{font-size:14.5px;line-height:1.85;color:var(--ink-1);margin:0 0 26px;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal h2{animation:textIn .5s .3s ease forwards}.ngx-msg-overlay.show .ngx-msg-modal p.desc{animation:textIn .5s .38s ease forwards}@keyframes textIn{to{opacity:1;transform:translateY(0)}}.ngx-msg-modal .ngx-msg-actions{display:flex;gap:10px;justify-content:center;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal .ngx-msg-actions{animation:textIn .5s .46s ease forwards}.btn{appearance:none;border:none;cursor:pointer;font-family:inherit;font-size:14.5px;font-weight:700;padding:12px 22px;border-radius:13px;transition:transform .18s cubic-bezier(.2,.8,.2,1),filter .2s,box-shadow .2s;flex:1;max-width:170px}.btn:active{transform:scale(.95)}.btn-primary{color:#0a0c14;background:var(--type-btn, linear-gradient(135deg, var(--violet), var(--cyan)));box-shadow:0 10px 24px -8px var(--type-shadow, rgba(139, 123, 255, .6))}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-2px)}.btn-ghost{color:var(--ink-1);background:#ffffff0b;border:1px solid var(--ngx-msg-panel-border)}.btn-ghost:hover{color:var(--ink-0);background:#ffffff14}.progress{position:absolute;bottom:0;left:0;height:3px;background:var(--type-btn, linear-gradient(90deg, var(--violet), var(--cyan)));width:100%;transform-origin:right center}[dir=rtl] .progress{transform-origin:left center}.ngx-msg-overlay[data-type=success] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--success-a), var(--success-b), var(--success-a));--type-disc: linear-gradient(150deg, var(--success-a), var(--success-b));--type-shadow: rgba(62, 224, 143, .5);--type-btn: linear-gradient(135deg, var(--success-a), var(--success-b));--type-glow: radial-gradient(circle, rgba(62, 224, 143, .35), transparent 70%)}.ngx-msg-overlay[data-type=error] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--error-a), var(--error-b), var(--error-a));--type-disc: linear-gradient(150deg, var(--error-a), var(--error-b));--type-shadow: rgba(255, 107, 139, .5);--type-btn: linear-gradient(135deg, var(--error-a), var(--error-b));--type-glow: radial-gradient(circle, rgba(255, 107, 139, .35), transparent 70%)}.ngx-msg-overlay[data-type=warning] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--warning-a), var(--warning-b), var(--warning-a));--type-disc: linear-gradient(150deg, var(--warning-a), var(--warning-b));--type-shadow: rgba(255, 140, 76, .5);--type-btn: linear-gradient(135deg, var(--warning-a), var(--warning-b));--type-glow: radial-gradient(circle, rgba(255, 140, 76, .35), transparent 70%)}.ngx-msg-overlay[data-type=info] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--info-a), var(--info-b), var(--info-a));--type-disc: linear-gradient(150deg, var(--info-a), var(--info-b));--type-shadow: rgba(91, 108, 255, .5);--type-btn: linear-gradient(135deg, var(--info-a), var(--info-b));--type-glow: radial-gradient(circle, rgba(91, 108, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=confirm] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--confirm-a), var(--confirm-b), var(--confirm-a));--type-disc: linear-gradient(150deg, var(--confirm-a), var(--confirm-b));--type-shadow: rgba(123, 92, 255, .5);--type-btn: linear-gradient(135deg, var(--confirm-a), var(--confirm-b));--type-glow: radial-gradient(circle, rgba(123, 92, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=loading] .ngx-msg-modal{--type-disc: linear-gradient(150deg, #9aa3c0, #565c78);--type-glow: radial-gradient(circle, rgba(154, 163, 192, .3), transparent 70%)}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.btn:focus-visible,.trigger:focus-visible,.close-x:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
162
162
  }
163
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxMessageComponent, decorators: [{
164
164
  type: Component,
@@ -167,7 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
167
167
  provide: NGX_MESSAGE_CONFIGS,
168
168
  useValue: NGX_MESSAGE_DEFAULT_OPTIONS,
169
169
  },
170
- ], template: "<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">\u2715</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["ngx-message{--bg-0: #0a0c14;--bg-1: #0f1220;--panel: rgba(22, 25, 40, .72);--panel-border: rgba(255, 255, 255, .08);--ink-0: #f3f4fb;--ink-1: #a8adc4;--ink-2: #6b7090;--violet: #8b7bff;--violet-2: #5b4fd1;--cyan: #43e0d8;--amber: #ffb454;--rose: #ff6b8b;--emerald: #3ee08f;--success-a: #3ee08f;--success-b: #1fb8b0;--error-a: #ff6b8b;--error-b: #c23f6b;--warning-a: #ffc45c;--warning-b: #ff8a4c;--info-a: #7cc1ff;--info-b: #5b6cff;--confirm-a: #c58bff;--confirm-b: #7b5cff}.ngx-msg-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#06070e8c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}.ngx-msg-overlay.show{opacity:1;visibility:visible}.ngx-msg-modal{position:relative;width:100%;max-width:400px;background:var(--panel);border:1px solid var(--panel-border);border-radius:26px;padding:38px 30px 28px;text-align:center;box-shadow:0 30px 80px -20px #0009,0 0 0 1px #ffffff05 inset;transform:translateY(28px) scale(.92);opacity:0;transition:transform .1s,opacity .1s;overflow:hidden}.ngx-msg-overlay.show .ngx-msg-modal{animation:modalIn .55s cubic-bezier(.2,1.1,.3,1) forwards}.ngx-msg-overlay.closing .ngx-msg-modal{animation:modalOut .28s cubic-bezier(.4,0,1,1) forwards}@keyframes modalIn{0%{transform:translateY(28px) scale(.9);opacity:0}60%{transform:translateY(-4px) scale(1.015);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}@keyframes modalOut{to{transform:translateY(14px) scale(.94);opacity:0}}.ngx-msg-modal:before{content:\"\";position:absolute;top:-60px;left:50%;translate:-50% 0;width:260px;height:200px;border-radius:50%;background:var(--type-glow, radial-gradient(circle, rgba(139, 123, 255, .35), transparent 70%));filter:blur(20px);pointer-events:none}.ngx-msg-modal .close-x{position:absolute;top:16px;left:16px;width:30px;height:30px;border-radius:50%;border:1px solid var(--panel-border);background:#ffffff08;color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;line-height:1;transition:background .2s,color .2s,transform .2s}.ngx-msg-modal .close-x:hover{background:#ffffff14;color:var(--ink-0);transform:rotate(90deg)}.icon-stage{position:relative;width:96px;height:96px;margin:4px auto 22px}.icon-ring{position:absolute;inset:0;border-radius:50%;background:var(--type-ring, conic-gradient(from 0deg, var(--violet), var(--cyan), var(--violet)));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));opacity:0}.ngx-msg-overlay.show .icon-ring{animation:ringIn .8s .05s cubic-bezier(.2,.8,.2,1) forwards,ringSpin 6s linear infinite}@keyframes ringIn{to{opacity:1}}@keyframes ringSpin{to{transform:rotate(360deg)}}.icon-disc{position:absolute;inset:8px;border-radius:50%;background:var(--type-disc, linear-gradient(150deg, var(--violet), var(--violet-2)));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px -6px var(--type-shadow, rgba(139, 123, 255, .55));transform:scale(0)}.ngx-msg-overlay.show .icon-disc{animation:discPop .6s .12s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes discPop{to{transform:scale(1)}}.icon-disc svg{width:46px;height:46px;overflow:visible}.icon-disc .draw{fill:none;stroke:#fff;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80}.ngx-msg-overlay.show .icon-disc .draw{animation:draw .5s .42s cubic-bezier(.4,0,.2,1) forwards}@keyframes draw{to{stroke-dashoffset:0}}.icon-disc .dot-mark{fill:#fff;opacity:0;transform:scale(0);transform-origin:center}.ngx-msg-overlay.show .icon-disc .dot-mark{animation:dotPop .3s .55s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes dotPop{to{opacity:1;transform:scale(1)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner{width:52px;height:52px;border-radius:50%;border:5px solid rgba(255,255,255,.18);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ngx-msg-modal h2{font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;margin:0 0 10px;opacity:0;transform:translateY(8px)}.ngx-msg-modal p.desc{font-size:14.5px;line-height:1.85;color:var(--ink-1);margin:0 0 26px;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal h2{animation:textIn .5s .3s ease forwards}.ngx-msg-overlay.show .ngx-msg-modal p.desc{animation:textIn .5s .38s ease forwards}@keyframes textIn{to{opacity:1;transform:translateY(0)}}.ngx-msg-modal .ngx-msg-actions{display:flex;gap:10px;justify-content:center;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal .ngx-msg-actions{animation:textIn .5s .46s ease forwards}.btn{appearance:none;border:none;cursor:pointer;font-family:inherit;font-size:14.5px;font-weight:700;padding:12px 22px;border-radius:13px;transition:transform .18s cubic-bezier(.2,.8,.2,1),filter .2s,box-shadow .2s;flex:1;max-width:170px}.btn:active{transform:scale(.95)}.btn-primary{color:#0a0c14;background:var(--type-btn, linear-gradient(135deg, var(--violet), var(--cyan)));box-shadow:0 10px 24px -8px var(--type-shadow, rgba(139, 123, 255, .6))}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-2px)}.btn-ghost{color:var(--ink-1);background:#ffffff0b;border:1px solid var(--panel-border)}.btn-ghost:hover{color:var(--ink-0);background:#ffffff14}.progress{position:absolute;bottom:0;left:0;height:3px;background:var(--type-btn, linear-gradient(90deg, var(--violet), var(--cyan)));width:100%;transform-origin:right center}[dir=rtl] .progress{transform-origin:left center}.ngx-msg-overlay[data-type=success] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--success-a), var(--success-b), var(--success-a));--type-disc: linear-gradient(150deg, var(--success-a), var(--success-b));--type-shadow: rgba(62, 224, 143, .5);--type-btn: linear-gradient(135deg, var(--success-a), var(--success-b));--type-glow: radial-gradient(circle, rgba(62, 224, 143, .35), transparent 70%)}.ngx-msg-overlay[data-type=error] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--error-a), var(--error-b), var(--error-a));--type-disc: linear-gradient(150deg, var(--error-a), var(--error-b));--type-shadow: rgba(255, 107, 139, .5);--type-btn: linear-gradient(135deg, var(--error-a), var(--error-b));--type-glow: radial-gradient(circle, rgba(255, 107, 139, .35), transparent 70%)}.ngx-msg-overlay[data-type=warning] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--warning-a), var(--warning-b), var(--warning-a));--type-disc: linear-gradient(150deg, var(--warning-a), var(--warning-b));--type-shadow: rgba(255, 140, 76, .5);--type-btn: linear-gradient(135deg, var(--warning-a), var(--warning-b));--type-glow: radial-gradient(circle, rgba(255, 140, 76, .35), transparent 70%)}.ngx-msg-overlay[data-type=info] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--info-a), var(--info-b), var(--info-a));--type-disc: linear-gradient(150deg, var(--info-a), var(--info-b));--type-shadow: rgba(91, 108, 255, .5);--type-btn: linear-gradient(135deg, var(--info-a), var(--info-b));--type-glow: radial-gradient(circle, rgba(91, 108, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=confirm] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--confirm-a), var(--confirm-b), var(--confirm-a));--type-disc: linear-gradient(150deg, var(--confirm-a), var(--confirm-b));--type-shadow: rgba(123, 92, 255, .5);--type-btn: linear-gradient(135deg, var(--confirm-a), var(--confirm-b));--type-glow: radial-gradient(circle, rgba(123, 92, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=loading] .ngx-msg-modal{--type-disc: linear-gradient(150deg, #9aa3c0, #565c78);--type-glow: radial-gradient(circle, rgba(154, 163, 192, .3), transparent 70%)}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.btn:focus-visible,.trigger:focus-visible,.close-x:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}\n"] }]
170
+ ], template: "<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">\u2715</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":root{--bg-0: #0a0c14;--bg-1: #0f1220;--ngx-msg-panel-bg: light-dark(#ffffffc4, #161928b8);--ngx-msg-panel-fg: light-dark(#000, #fff);--ngx-msg-panel-border: light-dark(#4545454a, #ffffff14);--ink-0: light-dark(#212121 #f3f4fb);--ink-1: light-dark(#2d2e32, #a8adc4);--ink-2: #6b7090;--violet: #8b7bff;--violet-2: #5b4fd1;--cyan: #43e0d8;--amber: #ffb454;--rose: #ff6b8b;--emerald: #3ee08f;--success-a: #3ee08f;--success-b: #1fb8b0;--error-a: #ff6b8b;--error-b: #c23f6b;--warning-a: #ffc45c;--warning-b: #ff8a4c;--info-a: #7cc1ff;--info-b: #5b6cff;--confirm-a: #c58bff;--confirm-b: #7b5cff}.ngx-msg-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#06070e8c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}.ngx-msg-overlay.show{opacity:1;visibility:visible}.ngx-msg-modal{position:relative;width:100%;max-width:400px;background-color:var(--ngx-msg-panel-bg);color:var(--ngx-msg-panel-fg);border:1px solid var(--ngx-msg-panel-border);border-radius:26px;padding:38px 30px 28px;text-align:center;box-shadow:0 30px 80px -20px #0009,0 0 0 1px #ffffff05 inset;transform:translateY(28px) scale(.92);opacity:0;transition:transform .1s,opacity .1s;overflow:hidden}.ngx-msg-overlay.show .ngx-msg-modal{animation:modalIn .55s cubic-bezier(.2,1.1,.3,1) forwards}.ngx-msg-overlay.closing .ngx-msg-modal{animation:modalOut .28s cubic-bezier(.4,0,1,1) forwards}@keyframes modalIn{0%{transform:translateY(28px) scale(.9);opacity:0}60%{transform:translateY(-4px) scale(1.015);opacity:1}to{transform:translateY(0) scale(1);opacity:1}}@keyframes modalOut{to{transform:translateY(14px) scale(.94);opacity:0}}.ngx-msg-modal:before{content:\"\";position:absolute;top:-60px;left:50%;translate:-50% 0;width:260px;height:200px;border-radius:50%;background:var(--type-glow, radial-gradient(circle, rgba(139, 123, 255, .35), transparent 70%));filter:blur(20px);pointer-events:none}.ngx-msg-modal .close-x{position:absolute;top:16px;left:16px;width:30px;height:30px;border-radius:50%;border:1px solid var(--ngx-msg-panel-border);background:#ffffff08;color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;line-height:1;transition:background .2s,color .2s,transform .2s}.ngx-msg-modal .close-x:hover{background:#ffffff14;color:var(--ink-0);transform:rotate(90deg)}.icon-stage{position:relative;width:96px;height:96px;margin:4px auto 22px}.icon-ring{position:absolute;inset:0;border-radius:50%;background:var(--type-ring, conic-gradient(from 0deg, var(--violet), var(--cyan), var(--violet)));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));opacity:0}.ngx-msg-overlay.show .icon-ring{animation:ringIn .8s .05s cubic-bezier(.2,.8,.2,1) forwards,ringSpin 6s linear infinite}@keyframes ringIn{to{opacity:1}}@keyframes ringSpin{to{transform:rotate(360deg)}}.icon-disc{position:absolute;inset:8px;border-radius:50%;background:var(--type-disc, linear-gradient(150deg, var(--violet), var(--violet-2)));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px -6px var(--type-shadow, rgba(139, 123, 255, .55));transform:scale(0)}.ngx-msg-overlay.show .icon-disc{animation:discPop .6s .12s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes discPop{to{transform:scale(1)}}.icon-disc svg{width:46px;height:46px;overflow:visible}.icon-disc .draw{fill:none;stroke:#fff;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80}.ngx-msg-overlay.show .icon-disc .draw{animation:draw .5s .42s cubic-bezier(.4,0,.2,1) forwards}@keyframes draw{to{stroke-dashoffset:0}}.icon-disc .dot-mark{fill:#fff;opacity:0;transform:scale(0);transform-origin:center}.ngx-msg-overlay.show .icon-disc .dot-mark{animation:dotPop .3s .55s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes dotPop{to{opacity:1;transform:scale(1)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner{width:52px;height:52px;border-radius:50%;border:5px solid rgba(255,255,255,.18);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ngx-msg-modal h2{font-family:Space Grotesk,sans-serif;font-size:22px;font-weight:700;margin:0 0 10px;opacity:0;transform:translateY(8px)}.ngx-msg-modal p.desc{font-size:14.5px;line-height:1.85;color:var(--ink-1);margin:0 0 26px;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal h2{animation:textIn .5s .3s ease forwards}.ngx-msg-overlay.show .ngx-msg-modal p.desc{animation:textIn .5s .38s ease forwards}@keyframes textIn{to{opacity:1;transform:translateY(0)}}.ngx-msg-modal .ngx-msg-actions{display:flex;gap:10px;justify-content:center;opacity:0;transform:translateY(8px)}.ngx-msg-overlay.show .ngx-msg-modal .ngx-msg-actions{animation:textIn .5s .46s ease forwards}.btn{appearance:none;border:none;cursor:pointer;font-family:inherit;font-size:14.5px;font-weight:700;padding:12px 22px;border-radius:13px;transition:transform .18s cubic-bezier(.2,.8,.2,1),filter .2s,box-shadow .2s;flex:1;max-width:170px}.btn:active{transform:scale(.95)}.btn-primary{color:#0a0c14;background:var(--type-btn, linear-gradient(135deg, var(--violet), var(--cyan)));box-shadow:0 10px 24px -8px var(--type-shadow, rgba(139, 123, 255, .6))}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-2px)}.btn-ghost{color:var(--ink-1);background:#ffffff0b;border:1px solid var(--ngx-msg-panel-border)}.btn-ghost:hover{color:var(--ink-0);background:#ffffff14}.progress{position:absolute;bottom:0;left:0;height:3px;background:var(--type-btn, linear-gradient(90deg, var(--violet), var(--cyan)));width:100%;transform-origin:right center}[dir=rtl] .progress{transform-origin:left center}.ngx-msg-overlay[data-type=success] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--success-a), var(--success-b), var(--success-a));--type-disc: linear-gradient(150deg, var(--success-a), var(--success-b));--type-shadow: rgba(62, 224, 143, .5);--type-btn: linear-gradient(135deg, var(--success-a), var(--success-b));--type-glow: radial-gradient(circle, rgba(62, 224, 143, .35), transparent 70%)}.ngx-msg-overlay[data-type=error] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--error-a), var(--error-b), var(--error-a));--type-disc: linear-gradient(150deg, var(--error-a), var(--error-b));--type-shadow: rgba(255, 107, 139, .5);--type-btn: linear-gradient(135deg, var(--error-a), var(--error-b));--type-glow: radial-gradient(circle, rgba(255, 107, 139, .35), transparent 70%)}.ngx-msg-overlay[data-type=warning] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--warning-a), var(--warning-b), var(--warning-a));--type-disc: linear-gradient(150deg, var(--warning-a), var(--warning-b));--type-shadow: rgba(255, 140, 76, .5);--type-btn: linear-gradient(135deg, var(--warning-a), var(--warning-b));--type-glow: radial-gradient(circle, rgba(255, 140, 76, .35), transparent 70%)}.ngx-msg-overlay[data-type=info] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--info-a), var(--info-b), var(--info-a));--type-disc: linear-gradient(150deg, var(--info-a), var(--info-b));--type-shadow: rgba(91, 108, 255, .5);--type-btn: linear-gradient(135deg, var(--info-a), var(--info-b));--type-glow: radial-gradient(circle, rgba(91, 108, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=confirm] .ngx-msg-modal{--type-ring: conic-gradient(from 0deg, var(--confirm-a), var(--confirm-b), var(--confirm-a));--type-disc: linear-gradient(150deg, var(--confirm-a), var(--confirm-b));--type-shadow: rgba(123, 92, 255, .5);--type-btn: linear-gradient(135deg, var(--confirm-a), var(--confirm-b));--type-glow: radial-gradient(circle, rgba(123, 92, 255, .35), transparent 70%)}.ngx-msg-overlay[data-type=loading] .ngx-msg-modal{--type-disc: linear-gradient(150deg, #9aa3c0, #565c78);--type-glow: radial-gradient(circle, rgba(154, 163, 192, .3), transparent 70%)}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.btn:focus-visible,.trigger:focus-visible,.close-x:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}\n"] }]
171
171
  }], propDecorators: { confetti: [{ type: i0.ViewChild, args: ['confetti', { isSignal: true }] }], onScapeKey: [{
172
172
  type: HostListener,
173
173
  args: ['document:keydown.escape', ['$event']]
@@ -206,21 +206,25 @@ class NgxMessageService {
206
206
  show(c) {
207
207
  let d = applyDefaultConfig(this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS), NGX_MESSAGE_DEFAULT_OPTIONS);
208
208
  const config = applyDefaultConfig(c, d);
209
- return new Promise((resolve, reject) => {
210
- const componentRef = createComponent(NgxMessageComponent, {
211
- environmentInjector: this.envInjector,
212
- });
213
- this.appRef.attachView(componentRef.hostView);
214
- this.appendDialogComponentToBody(componentRef, config);
215
- componentRef.instance.options = config;
216
- componentRef.instance.index = this.insertedId;
217
- componentRef.instance.onClose.subscribe((result) => {
218
- this.removeDialogComponentFromBody(result.index);
219
- resolve(result.result);
220
- });
221
- this.alerts.push(componentRef);
222
- this.insertedId++;
209
+ const componentRef = createComponent(NgxMessageComponent, {
210
+ environmentInjector: this.envInjector,
211
+ });
212
+ this.appRef.attachView(componentRef.hostView);
213
+ const payload = {
214
+ close: () => componentRef.instance.close(),
215
+ id: this.insertedId,
216
+ afterClose: new EventEmitter(),
217
+ };
218
+ this.appendDialogComponentToBody(componentRef, config);
219
+ componentRef.instance.options = config;
220
+ componentRef.instance.index = this.insertedId;
221
+ componentRef.instance.onClose.subscribe((result) => {
222
+ this.removeDialogComponentFromBody(result.index);
223
+ payload.afterClose.emit(result.result);
223
224
  });
225
+ this.alerts.push(componentRef);
226
+ this.insertedId++;
227
+ return payload;
224
228
  }
225
229
  removeDialogComponentFromBody(index) {
226
230
  if (this.alerts[index]) {
@@ -316,6 +320,14 @@ class MSG {
316
320
  ...options,
317
321
  });
318
322
  }
323
+ static loading(title, text, options) {
324
+ return this.show({
325
+ icon: 'loading',
326
+ title,
327
+ text,
328
+ ...options,
329
+ });
330
+ }
319
331
  }
320
332
 
321
333
  function provideMessage(options) {
@@ -376,5 +388,5 @@ class MessageOptions {
376
388
  * Generated bundle index. Do not edit.
377
389
  */
378
390
 
379
- export { DismissReason, MSG, MessageOptions, NgxMessageService, provideMessage };
391
+ export { DismissReason, MSG, MessageOptions, NGX_MESSAGE_API, NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS, NgxMessageService, provideMessage };
380
392
  //# sourceMappingURL=ngx-kit-message.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-message.mjs","sources":["../../../projects/libs/message/models/configs.ts","../../../projects/libs/message/models/message-result.ts","../../../projects/libs/message/models/icons.ts","../../../projects/libs/message/components/message.component.ts","../../../projects/libs/message/components/message.component.html","../../../projects/libs/message/services/apply-default.ts","../../../projects/libs/message/services/message.service.ts","../../../projects/libs/message/message-facade.ts","../../../projects/libs/message/message-provider.ts","../../../projects/libs/message/models/message-options.ts","../../../projects/libs/message/ngx-kit-message.ts"],"sourcesContent":["import { Inject, InjectionToken } from '@angular/core';\r\nimport { IMessageOptions } from './message-options.interface';\r\nimport { NgxMessageService } from '../public-api';\r\nimport { MessageOptions } from './message-options';\r\n\r\nexport type MessageIcon =\r\n 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';\r\n\r\nexport const NGX_MESSAGE_CONFIGS = new InjectionToken<IMessageOptions>('ngx-message-configs');\r\n\r\nexport const NGX_MESSAGE_API = new InjectionToken<NgxMessageService>('NgxMessageService');\r\nexport const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions = {\r\n useOverlay: true,\r\n title: '',\r\n text: '',\r\n html: '',\r\n backdrop: true,\r\n icon: 'None',\r\n width: undefined,\r\n allowOutsideClick: true,\r\n allowEscapeKey: true,\r\n allowEnterKey: true,\r\n showConfirmButton: true,\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: 'Ok',\r\n denyButtonText: 'No',\r\n cancelButtonText: 'Cancel',\r\n confirmButtonColor: '',\r\n denyButtonColor: '',\r\n cancelButtonColor: '',\r\n confirmButtonAriaLabel: '',\r\n denyButtonAriaLabel: '',\r\n cancelButtonAriaLabel: '',\r\n reverseButtons: false,\r\n showCloseButton: true,\r\n containerClass: '',\r\n};\r\n","export interface MessageResult<T = any> {\r\n readonly isConfirmed: boolean\r\n readonly isDenied: boolean\r\n readonly isDismissed: boolean\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n readonly value?: T\r\n readonly dismiss?: DismissReason\r\n}\r\n\r\n\r\n/**\r\n * An enum of possible reasons that can explain an alert dismissal.\r\n */\r\nexport enum DismissReason {\r\n cancel,\r\n backdrop,\r\n close,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n esc,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n timer,\r\n}\r\n","// 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';\r\nexport const ICONS: { [key: string]: string } = {\r\n None: '',\r\n success: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M12 24 L20 32 L34 15\"/></svg>`,\r\n error: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M14 14 L32 32\"/><path class=\"draw\" style=\"animation-delay:.55s\" d=\"M32 14 L14 32\"/></svg>`,\r\n warning: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M23 10 L23 26\"/><circle class=\"dot-mark\" cx=\"23\" cy=\"34\" r=\"3.4\"/></svg>`,\r\n info: `<svg viewBox=\"0 0 46 46\"><circle class=\"dot-mark\" cx=\"23\" cy=\"12\" r=\"3.2\" style=\"animation-delay:.28s\"/><path class=\"draw\" style=\"animation-delay:.4s\" d=\"M23 20 L23 36\"/></svg>`,\r\n question: `<svg viewBox=\"0 0 320 512\"><path fill=\"currentColor\" d=\"M204.3 32.01H96c-52.94 0-96 43.06-96 96c0 17.67 14.31 31.1 32 31.1s32-14.32 32-31.1c0-17.64 14.34-32 32-32h108.3C232.8 96.01 256 119.2 256 147.8c0 19.72-10.97 37.47-30.5 47.33L127.8 252.4C117.1 258.2 112 268.7 112 280v40c0 17.67 14.31 31.99 32 31.99s32-14.32 32-31.99V298.3L256 251.3c39.47-19.75 64-59.42 64-103.5C320 83.95 268.1 32.01 204.3 32.01zM144 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S166.1 400 144 400z\"/></svg>`,\r\n loading: `<div class=\"spinner-wrap\"><div class=\"spinner\"></div></div>`,\r\n};\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { Subject } from 'rxjs';\r\nimport { MessageResult, DismissReason } from '../models/message-result';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/configs';\r\nimport { ICONS } from '../models/icons';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { makeConfetti } from 'ngx-kit/shared';\r\n\r\n@Component({\r\n selector: 'ngx-message',\r\n templateUrl: 'message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule],\r\n providers: [\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: NGX_MESSAGE_DEFAULT_OPTIONS,\r\n },\r\n ],\r\n})\r\nexport class NgxMessageComponent implements OnInit, AfterViewInit {\r\n icon?: SafeHtml;\r\n showIcon = signal(true);\r\n options!: IMessageOptions;\r\n confetti = viewChild<ElementRef<HTMLDivElement>>('confetti');\r\n index = 0;\r\n\r\n protected sanitizer = inject(DomSanitizer);\r\n protected doc = inject(DOCUMENT);\r\n\r\n private readonly _onClose = new Subject<{ index: number; result: MessageResult<any> }>();\r\n public onClose = this._onClose.asObservable();\r\n\r\n ngOnInit(): void {\r\n this.showIcon.update((x) => (x = this.options.icon != 'None'));\r\n this.icon = this.sanitizer.bypassSecurityTrustHtml(ICONS[this.options.icon ?? 'None']);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const confetti = this.confetti()?.nativeElement;\r\n if (this.options.icon == 'success' && confetti) {\r\n makeConfetti(this.doc, confetti);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onScapeKey(event: Event) {\r\n if (this.options.allowEscapeKey) {\r\n this.onCancel();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.enter', ['$event'])\r\n onEnterKey(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (this.options.allowEnterKey) {\r\n if (this.options.showConfirmButton) {\r\n this.onConfirm();\r\n } else if (this.options.showDenyButton) {\r\n this.onDeny();\r\n } else {\r\n this.onCancel();\r\n }\r\n }\r\n }\r\n\r\n onConfirm() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: true,\r\n isDismissed: false,\r\n isDenied: false,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n onCancel() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: true,\r\n isDenied: false,\r\n dismiss: DismissReason.cancel,\r\n },\r\n });\r\n }\r\n onDeny() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: false,\r\n isDenied: true,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n close() {\r\n this.onCancel();\r\n }\r\n\r\n onOutSideClick() {\r\n if (this.options.allowOutsideClick) {\r\n this.onCancel();\r\n }\r\n }\r\n innerOnClick(ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">✕</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nexport function applyDefaultConfig(config: any, defaultConfig: any): any {\r\n var config = JSON.parse(JSON.stringify(config));\r\n for (let key in defaultConfig) {\r\n if (config[key] === undefined || config[key] === null || config[key] === '') {\r\n config[key] = defaultConfig[key];\r\n } else if (typeof config[key] === 'object') {\r\n config[key] = applyDefaultConfig(config[key], defaultConfig[key]);\r\n }\r\n }\r\n return config;\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n EnvironmentInjector,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n} from '@angular/core';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/configs';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { MessageResult } from '../models/message-result';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { NgxMessageComponent } from '../components/message.component';\r\nimport { applyDefaultConfig } from './apply-default';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxMessageService {\r\n currentAdIndex = -1;\r\n alerts: ComponentRef<NgxMessageComponent>[] = [];\r\n insertedId = 0;\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private envInjector: EnvironmentInjector,\r\n @Inject(DOCUMENT) private _doc: Document,\r\n ) {}\r\n\r\n public show(c?: IMessageOptions): Promise<MessageResult<any>> {\r\n let d = applyDefaultConfig(\r\n this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS),\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n );\r\n const config = applyDefaultConfig(c, d);\r\n return new Promise((resolve, reject) => {\r\n const componentRef = createComponent(NgxMessageComponent, {\r\n environmentInjector: this.envInjector,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n this.appendDialogComponentToBody(componentRef, config);\r\n componentRef.instance.options = config;\r\n componentRef.instance.index = this.insertedId;\r\n componentRef.instance.onClose.subscribe((result) => {\r\n this.removeDialogComponentFromBody(result.index);\r\n resolve(result.result);\r\n });\r\n this.alerts.push(componentRef);\r\n this.insertedId++;\r\n });\r\n }\r\n\r\n private removeDialogComponentFromBody(index: number): void {\r\n if (this.alerts[index]) {\r\n const domElem = (this.alerts[index].hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // قبل از destroy باید hidePopover صدا بزنیم\r\n if (domElem.popover === 'manual') {\r\n try {\r\n domElem.hidePopover();\r\n } catch {}\r\n }\r\n\r\n this.appRef.detachView(this.alerts[index].hostView);\r\n this.alerts[index].destroy();\r\n }\r\n }\r\n\r\n private appendDialogComponentToBody(\r\n componentRef: ComponentRef<NgxMessageComponent>,\r\n config: IMessageOptions,\r\n ) {\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n if (config.containerClass) {\r\n for (let c of config.containerClass.split(' ')) {\r\n if (c.trim()) domElem.classList.add(c);\r\n }\r\n }\r\n this._doc.body.appendChild(domElem);\r\n if (config.useOverlay) {\r\n domElem.popover = 'manual';\r\n domElem.showPopover();\r\n }\r\n }\r\n\r\n closeAll() {\r\n for (let i = 0; i < this.alerts.length; i++) {\r\n this.removeDialogComponentFromBody(i);\r\n }\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\nimport { NGX_MESSAGE_API } from './models/configs';\nimport { IMessageOptions } from './models/message-options.interface';\nimport { MessageResult } from './models/message-result';\n\n/**\n * Static facade so call sites can use: MSG.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class MSG {\n static injector: Injector;\n\n static show(options?: IMessageOptions): Promise<MessageResult<any>> {\n if (!MSG.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideMessage()\" in root provider.',\n );\n }\n\n return MSG.injector.get(NGX_MESSAGE_API).show(options);\n }\n\n static fire(options?: IMessageOptions) {\n return this.show(options);\n }\n\n static info(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'info',\n title,\n text,\n ...options,\n });\n }\n\n static success(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'success',\n title,\n text,\n ...options,\n });\n }\n static warning(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'warning',\n title,\n text,\n ...options,\n });\n }\n static error(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'error',\n title,\n text,\n ...options,\n });\n }\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n Injector,\r\n makeEnvironmentProviders,\r\n provideEnvironmentInitializer,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from './models/message-options.interface';\r\nimport {\r\n NGX_MESSAGE_API,\r\n NGX_MESSAGE_CONFIGS,\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n} from './models/configs';\r\nimport { NgxMessageService } from './services/message.service';\r\nimport { MSG as MessageFacade } from './message-facade';\r\n\r\nexport function provideMessage(options?: IMessageOptions): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },\r\n },\r\n {\r\n provide: NGX_MESSAGE_API,\r\n useExisting: NgxMessageService,\r\n },\r\n provideEnvironmentInitializer(() => {\r\n MessageFacade.injector = inject(Injector);\r\n }),\r\n ]);\r\n}\r\n","import { MessageIcon } from './configs';\r\nimport { IMessageOptions } from './message-options.interface';\r\n\r\n\r\nexport class MessageOptions implements IMessageOptions {\r\n public constructor(private config?: IMessageOptions) {\r\n //config = { ...(new MessageOptions()), ...config };\r\n }\r\n /**\r\n * add popover manual to set alert dialog container to top layer\r\n * - usefull when using alert modal in angular material dialog\r\n *\r\n */\r\n useOverlay?: boolean;\r\n title?: string = '';\r\n text?: string = '';\r\n html?: string | HTMLElement = '';\r\n backdrop?: boolean = true;\r\n icon?: MessageIcon;\r\n width?: number | string;\r\n allowOutsideClick?: boolean = true;\r\n allowEscapeKey?: boolean = true;\r\n allowEnterKey?: boolean = true;\r\n showConfirmButton?: boolean = true;\r\n showDenyButton?: boolean = false;\r\n showCancelButton?: boolean = false;\r\n confirmButtonText: string = 'Ok';\r\n denyButtonText?: string = 'No';\r\n cancelButtonText?: string = 'Cancel';\r\n confirmButtonColor?: string;\r\n denyButtonColor?: string;\r\n cancelButtonColor?: string;\r\n confirmButtonAriaLabel?: string = '';\r\n denyButtonAriaLabel?: string = '';\r\n cancelButtonAriaLabel?: string = '';\r\n reverseButtons?: boolean = false;\r\n showCloseButton?: boolean = false;\r\n containerClass?: string = '';\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DOCUMENT","MessageFacade"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-kit-message.mjs","sources":["../../../projects/libs/message/models/tokens.ts","../../../projects/libs/message/models/message-result.ts","../../../projects/libs/message/models/icons.ts","../../../projects/libs/message/components/message.component.ts","../../../projects/libs/message/components/message.component.html","../../../projects/libs/message/services/apply-default.ts","../../../projects/libs/message/services/message.service.ts","../../../projects/libs/message/message-facade.ts","../../../projects/libs/message/message-provider.ts","../../../projects/libs/message/models/message-options.ts","../../../projects/libs/message/ngx-kit-message.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { IMessageOptions } from './message-options.interface';\r\nimport { NgxMessageService } from '../public-api';\r\nimport { MessageOptions } from './message-options';\r\n\r\nexport const NGX_MESSAGE_CONFIGS = new InjectionToken<IMessageOptions>('ngx-message-configs');\r\n\r\nexport const NGX_MESSAGE_API = new InjectionToken<NgxMessageService>('NgxMessageService');\r\nexport const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions = {\r\n useOverlay: true,\r\n title: '',\r\n text: '',\r\n html: '',\r\n backdrop: true,\r\n icon: 'None',\r\n width: undefined,\r\n allowOutsideClick: true,\r\n allowEscapeKey: true,\r\n allowEnterKey: true,\r\n showConfirmButton: true,\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: 'Ok',\r\n denyButtonText: 'No',\r\n cancelButtonText: 'Cancel',\r\n confirmButtonColor: '',\r\n denyButtonColor: '',\r\n cancelButtonColor: '',\r\n confirmButtonAriaLabel: '',\r\n denyButtonAriaLabel: '',\r\n cancelButtonAriaLabel: '',\r\n reverseButtons: false,\r\n showCloseButton: true,\r\n containerClass: '',\r\n};\r\n","import { EventEmitter } from '@angular/core';\r\n\r\nexport type MessageOutput<T = any> = {\r\n id: number;\r\n close: () => void;\r\n afterClose: EventEmitter<MessageResult>;\r\n};\r\nexport interface MessageResult<T = any> {\r\n readonly isConfirmed: boolean;\r\n readonly isDenied: boolean;\r\n readonly isDismissed: boolean;\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n readonly value?: T;\r\n readonly dismiss?: DismissReason;\r\n}\r\n\r\n/**\r\n * An enum of possible reasons that can explain an alert dismissal.\r\n */\r\nexport enum DismissReason {\r\n cancel,\r\n backdrop,\r\n close,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n esc,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n timer,\r\n}\r\n","// 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';\r\nexport const ICONS: { [key: string]: string } = {\r\n None: '',\r\n success: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M12 24 L20 32 L34 15\"/></svg>`,\r\n error: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M14 14 L32 32\"/><path class=\"draw\" style=\"animation-delay:.55s\" d=\"M32 14 L14 32\"/></svg>`,\r\n warning: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M23 10 L23 26\"/><circle class=\"dot-mark\" cx=\"23\" cy=\"34\" r=\"3.4\"/></svg>`,\r\n info: `<svg viewBox=\"0 0 46 46\"><circle class=\"dot-mark\" cx=\"23\" cy=\"12\" r=\"3.2\" style=\"animation-delay:.28s\"/><path class=\"draw\" style=\"animation-delay:.4s\" d=\"M23 20 L23 36\"/></svg>`,\r\n question: `<svg viewBox=\"0 0 320 512\"><path fill=\"currentColor\" d=\"M204.3 32.01H96c-52.94 0-96 43.06-96 96c0 17.67 14.31 31.1 32 31.1s32-14.32 32-31.1c0-17.64 14.34-32 32-32h108.3C232.8 96.01 256 119.2 256 147.8c0 19.72-10.97 37.47-30.5 47.33L127.8 252.4C117.1 258.2 112 268.7 112 280v40c0 17.67 14.31 31.99 32 31.99s32-14.32 32-31.99V298.3L256 251.3c39.47-19.75 64-59.42 64-103.5C320 83.95 268.1 32.01 204.3 32.01zM144 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S166.1 400 144 400z\"/></svg>`,\r\n loading: `<div class=\"spinner-wrap\"><div class=\"spinner\"></div></div>`,\r\n};\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { Subject } from 'rxjs';\r\nimport { MessageResult, DismissReason } from '../models/message-result';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\r\nimport { ICONS } from '../models/icons';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { makeConfetti } from 'ngx-kit/shared';\r\n\r\n@Component({\r\n selector: 'ngx-message',\r\n templateUrl: 'message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule],\r\n providers: [\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: NGX_MESSAGE_DEFAULT_OPTIONS,\r\n },\r\n ],\r\n})\r\nexport class NgxMessageComponent implements OnInit, AfterViewInit {\r\n icon?: SafeHtml;\r\n showIcon = signal(true);\r\n options!: IMessageOptions;\r\n confetti = viewChild<ElementRef<HTMLDivElement>>('confetti');\r\n index = 0;\r\n\r\n protected sanitizer = inject(DomSanitizer);\r\n protected doc = inject(DOCUMENT);\r\n\r\n private readonly _onClose = new Subject<{ index: number; result: MessageResult<any> }>();\r\n public onClose = this._onClose.asObservable();\r\n\r\n ngOnInit(): void {\r\n this.showIcon.update((x) => (x = this.options.icon != 'None'));\r\n this.icon = this.sanitizer.bypassSecurityTrustHtml(ICONS[this.options.icon ?? 'None']);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const confetti = this.confetti()?.nativeElement;\r\n if (this.options.icon == 'success' && confetti) {\r\n makeConfetti(this.doc, confetti);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onScapeKey(event: Event) {\r\n if (this.options.allowEscapeKey) {\r\n this.onCancel();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.enter', ['$event'])\r\n onEnterKey(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (this.options.allowEnterKey) {\r\n if (this.options.showConfirmButton) {\r\n this.onConfirm();\r\n } else if (this.options.showDenyButton) {\r\n this.onDeny();\r\n } else {\r\n this.onCancel();\r\n }\r\n }\r\n }\r\n\r\n onConfirm() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: true,\r\n isDismissed: false,\r\n isDenied: false,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n onCancel() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: true,\r\n isDenied: false,\r\n dismiss: DismissReason.cancel,\r\n },\r\n });\r\n }\r\n onDeny() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: false,\r\n isDenied: true,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n close() {\r\n this.onCancel();\r\n }\r\n\r\n onOutSideClick() {\r\n if (this.options.allowOutsideClick) {\r\n this.onCancel();\r\n }\r\n }\r\n innerOnClick(ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">✕</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nexport function applyDefaultConfig(config: any, defaultConfig: any): any {\r\n var config = JSON.parse(JSON.stringify(config));\r\n for (let key in defaultConfig) {\r\n if (config[key] === undefined || config[key] === null || config[key] === '') {\r\n config[key] = defaultConfig[key];\r\n } else if (typeof config[key] === 'object') {\r\n config[key] = applyDefaultConfig(config[key], defaultConfig[key]);\r\n }\r\n }\r\n return config;\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n EnvironmentInjector,\r\n EventEmitter,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n} from '@angular/core';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { MessageOutput, MessageResult } from '../models/message-result';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { NgxMessageComponent } from '../components/message.component';\r\nimport { applyDefaultConfig } from './apply-default';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxMessageService {\r\n currentAdIndex = -1;\r\n alerts: ComponentRef<NgxMessageComponent>[] = [];\r\n insertedId = 0;\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private envInjector: EnvironmentInjector,\r\n @Inject(DOCUMENT) private _doc: Document,\r\n ) {}\r\n\r\n public show<T = any>(c?: IMessageOptions): MessageOutput<T> {\r\n let d = applyDefaultConfig(\r\n this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS),\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n );\r\n const config = applyDefaultConfig(c, d);\r\n\r\n const componentRef = createComponent(NgxMessageComponent, {\r\n environmentInjector: this.envInjector,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n const payload: MessageOutput<T> = {\r\n close: () => componentRef.instance.close(),\r\n id: this.insertedId,\r\n afterClose: new EventEmitter(),\r\n };\r\n this.appendDialogComponentToBody(componentRef, config);\r\n componentRef.instance.options = config;\r\n componentRef.instance.index = this.insertedId;\r\n componentRef.instance.onClose.subscribe((result) => {\r\n this.removeDialogComponentFromBody(result.index);\r\n payload.afterClose.emit(result.result);\r\n });\r\n this.alerts.push(componentRef);\r\n\r\n this.insertedId++;\r\n return payload;\r\n }\r\n\r\n private removeDialogComponentFromBody(index: number): void {\r\n if (this.alerts[index]) {\r\n const domElem = (this.alerts[index].hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // قبل از destroy باید hidePopover صدا بزنیم\r\n if (domElem.popover === 'manual') {\r\n try {\r\n domElem.hidePopover();\r\n } catch {}\r\n }\r\n\r\n this.appRef.detachView(this.alerts[index].hostView);\r\n this.alerts[index].destroy();\r\n }\r\n }\r\n\r\n private appendDialogComponentToBody(\r\n componentRef: ComponentRef<NgxMessageComponent>,\r\n config: IMessageOptions,\r\n ) {\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n if (config.containerClass) {\r\n for (let c of config.containerClass.split(' ')) {\r\n if (c.trim()) domElem.classList.add(c);\r\n }\r\n }\r\n this._doc.body.appendChild(domElem);\r\n if (config.useOverlay) {\r\n domElem.popover = 'manual';\r\n domElem.showPopover();\r\n }\r\n }\r\n\r\n closeAll() {\r\n for (let i = 0; i < this.alerts.length; i++) {\r\n this.removeDialogComponentFromBody(i);\r\n }\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\nimport { NGX_MESSAGE_API } from './models/tokens';\nimport { IMessageOptions } from './models/message-options.interface';\n\n/**\n * Static facade so call sites can use: MSG.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class MSG {\n static injector: Injector;\n\n static show<T = any>(options?: IMessageOptions) {\n if (!MSG.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideMessage()\" in root provider.',\n );\n }\n\n return MSG.injector.get(NGX_MESSAGE_API).show<T>(options);\n }\n\n static fire(options?: IMessageOptions) {\n return this.show(options);\n }\n\n static info(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'info',\n title,\n text,\n ...options,\n });\n }\n\n static success(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'success',\n title,\n text,\n ...options,\n });\n }\n static warning(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'warning',\n title,\n text,\n ...options,\n });\n }\n static error(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'error',\n title,\n text,\n ...options,\n });\n }\n static loading(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'loading',\n title,\n text,\n ...options,\n });\n }\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n Injector,\r\n makeEnvironmentProviders,\r\n provideEnvironmentInitializer,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from './models/message-options.interface';\r\nimport {\r\n NGX_MESSAGE_API,\r\n NGX_MESSAGE_CONFIGS,\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n} from './models/tokens';\r\nimport { NgxMessageService } from './services/message.service';\r\nimport { MSG as MessageFacade } from './message-facade';\r\n\r\nexport function provideMessage(options?: IMessageOptions): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },\r\n },\r\n {\r\n provide: NGX_MESSAGE_API,\r\n useExisting: NgxMessageService,\r\n },\r\n provideEnvironmentInitializer(() => {\r\n MessageFacade.injector = inject(Injector);\r\n }),\r\n ]);\r\n}\r\n","import { MessageIcon } from './MessageIcon';\r\nimport { IMessageOptions } from './message-options.interface';\r\n\r\n\r\nexport class MessageOptions implements IMessageOptions {\r\n public constructor(private config?: IMessageOptions) {\r\n //config = { ...(new MessageOptions()), ...config };\r\n }\r\n /**\r\n * add popover manual to set alert dialog container to top layer\r\n * - usefull when using alert modal in angular material dialog\r\n *\r\n */\r\n useOverlay?: boolean;\r\n title?: string = '';\r\n text?: string = '';\r\n html?: string | HTMLElement = '';\r\n backdrop?: boolean = true;\r\n icon?: MessageIcon;\r\n width?: number | string;\r\n allowOutsideClick?: boolean = true;\r\n allowEscapeKey?: boolean = true;\r\n allowEnterKey?: boolean = true;\r\n showConfirmButton?: boolean = true;\r\n showDenyButton?: boolean = false;\r\n showCancelButton?: boolean = false;\r\n confirmButtonText: string = 'Ok';\r\n denyButtonText?: string = 'No';\r\n cancelButtonText?: string = 'Cancel';\r\n confirmButtonColor?: string;\r\n denyButtonColor?: string;\r\n cancelButtonColor?: string;\r\n confirmButtonAriaLabel?: string = '';\r\n denyButtonAriaLabel?: string = '';\r\n cancelButtonAriaLabel?: string = '';\r\n reverseButtons?: boolean = false;\r\n showCloseButton?: boolean = false;\r\n containerClass?: string = '';\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DOCUMENT","MessageFacade"],"mappings":"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"}
@@ -1016,6 +1016,9 @@ class OverlayService {
1016
1016
  if (right !== 'auto') {
1017
1017
  right = Math.min(Math.max(right, margin), vw - dialogRect.width - margin);
1018
1018
  }
1019
+ if (top < 0) {
1020
+ top = 0;
1021
+ }
1019
1022
  dialog.className = `${DIALOG_OVERLAY_CLASSNAME} tips-${verticalPos}`;
1020
1023
  dialog.style.top = `${top + window.scrollY}px`;
1021
1024
  dialog.style.left = left !== 'auto' ? `${left + window.scrollX}px` : 'auto';
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/range-slider/range-slider.component.ts","../../../projects/libs/shared/range-slider/range-slider.component.html","../../../projects/libs/shared/saturation/saturation.component.ts","../../../projects/libs/shared/saturation/saturation.component.html","../../../projects/libs/shared/slider/slider.component.ts","../../../projects/libs/shared/slider/slider.component.html","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/utils/is-rtl.ts","../../../projects/libs/shared/utils/confetti.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/overlay/overlay-ref.ts","../../../projects/libs/shared/overlay/overlay.service.ts","../../../projects/libs/shared/ngx-kit-shared.ts"],"sourcesContent":["export function getOffsetPosition(\r\n evt: MouseEvent | TouchEvent,\r\n parent: HTMLElement\r\n) {\r\n let position = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (evt instanceof MouseEvent) {\r\n position.x = evt.pageX;\r\n position.y = evt.pageY;\r\n } else if (evt.touches && evt.touches.length > 0) {\r\n position.x = evt.touches[0].pageX;\r\n position.y = evt.touches[0].pageY;\r\n }\r\n\r\n // Adjust for the parent's offset\r\n let parentRect = parent.getBoundingClientRect();\r\n position.x -= parentRect.left + window.scrollX;\r\n position.y -= parentRect.top + window.scrollY;\r\n\r\n return position;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nexport interface IValue {\r\n id?: string;\r\n value: number;\r\n}\r\nexport class ValueModel {\r\n id!: string;\r\n value!: number;\r\n x?: number;\r\n thumb?: HTMLElement;\r\n color?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'range-slider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule],\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n /**\r\n * The step value for the slider\r\n */\r\n @Input() step = 1;\r\n /**\r\n * The minimum value for the slider\r\n */\r\n @Input() min = 0;\r\n /**\r\n * The maximum value for the slider\r\n */\r\n @Input() max = 100;\r\n /**\r\n * The background color of the slider\r\n * - can use css like `background: linear-gradient(to right, red, blue);`\r\n * - or a solid color like `background: red;`\r\n */\r\n @Input() background?: string;\r\n /**\r\n * If true, the background will be transparent\r\n */\r\n @Input() isBgTransparent = false;\r\n /**\r\n * If true, clicking on the slider will add a new range at that position\r\n */\r\n @Input() addNewRangeOnClick = false;\r\n\r\n /**\r\n * The current value of the slider\r\n */\r\n @Output() change = new EventEmitter<IValue[]>();\r\n @Input() selectedIndex?: number;\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n private isDragging = false;\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\r\n\r\n values: ValueModel[] = [];\r\n isDisabled = false;\r\n protected _onChange = (value: IValue[]) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n ngOnInit(): void {}\r\n\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.values.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n writeValue(items?: IValue[]): void {\r\n this.values = [];\r\n if (!items || !Array.isArray(items)) {\r\n items = [];\r\n }\r\n if (items.length === 0) {\r\n items.push({ id: this.generateId(), value: this.min });\r\n }\r\n for (let val of items) {\r\n if (typeof val.value !== 'number' || isNaN(val.value)) {\r\n throw new Error('RangeSliderComponent: value must be an array of numbers');\r\n }\r\n let newVal = +val.value;\r\n if (newVal < +this.min) newVal = +this.min;\r\n else if (newVal > +this.max) newVal = +this.max;\r\n this.values.push({\r\n ...val,\r\n id: val.id ?? this.generateId(),\r\n value: newVal,\r\n });\r\n }\r\n this.updateAllThumbPositions();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null; // TODO: return errors if any;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n if (this.thumb) {\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updateThumbPosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.values);\r\n }\r\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.selectedIndex = index;\r\n this.updateRects();\r\n this.updateThumbPosition(ev);\r\n this.selectedIndexChange.emit(this.selectedIndex);\r\n }\r\n\r\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\r\n if (!this.addNewRangeOnClick) return;\r\n const position = getOffsetPosition(event, this.slider.nativeElement);\r\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\r\n // must be add with order by position\r\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\r\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\r\n this.values.splice(insertIndex, 0, {\r\n id: this.generateId(),\r\n value: newValue,\r\n });\r\n this.dragStart(event, insertIndex);\r\n // this.updateAllThumbPositions();\r\n // this.valueChanged();\r\n }\r\n\r\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging || this.selectedIndex == undefined) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n const thumb = this.values[this.selectedIndex];\r\n if (position.x < 0) {\r\n thumb.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n thumb.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n thumb.x = position.x;\r\n }\r\n this.setValueByPosition(thumb, thumbRec, sliderRec);\r\n }\r\n\r\n updateAllThumbPositions() {\r\n // wait to add thumbs\r\n setTimeout(() => {\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n for (let item of this.values) {\r\n item.x = ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (thumb.value !== value) {\r\n thumb.value = value;\r\n this.valueChanged();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n // this.selectedIndex = undefined;\r\n }\r\n\r\n valueChanged() {\r\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\r\n this._onChange(v);\r\n this.change.emit(v);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n [class.add-range-cursor]=\"addNewRangeOnClick\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\"\r\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\r\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\r\n @for (item of values; track $index; let i = $index) {\r\n <div\r\n class=\"thumb\"\r\n [class.is-active]=\"selectedIndex == i\"\r\n #thumb\r\n [style.left.px]=\"item.x\"\r\n [style.background]=\"item.color\"\r\n [title]=\"item.value\"\r\n (mousedown)=\"dragStart($event, i)\"\r\n (touchstart)=\"dragStart($event, i)\"></div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- {{ selectedIndex }}\r\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\r\n\r\n","\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormControl,\r\n AbstractControl,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { IPosition } from '../contracts/IPosition';\r\n\r\n@Component({\r\n selector: 'saturation',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './saturation.component.html',\r\n styleUrl: './saturation.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SaturationComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SaturationComponent implements ControlValueAccessor {\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() color = 'red';\r\n @Input() step = 1;\r\n @Input() min: IPosition = { x: 0, y: 0 };\r\n @Input() max = { x: 100, y: 100 };\r\n @Output() change = new EventEmitter<IPosition>();\r\n\r\n isDragging = false;\r\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n y = 0;\r\n myControl = new FormControl<IPosition | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n\r\n private saturationRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor() {}\r\n\r\n private updateRects() {\r\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: IPosition | null): void {\r\n if (!val) val = { x: 0, y: 0 };\r\n let value: IPosition = val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const saturationRec = this.saturationRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) / (this.max.x - this.min.x);\r\n this.y = ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) / (this.max.y - this.min.y);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n let saturationRec = this.saturationRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\r\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\r\n } else {\r\n this.x = position.x;\r\n }\r\n // this.x = this.x - thumbRec.width / 2;\r\n\r\n if (position.y < 0) {\r\n this.y = 0;\r\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\r\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\r\n } else {\r\n this.y = position.y;\r\n }\r\n // this.y = this.y - thumbRec.height / 2;\r\n this.setValueByPosition(thumbRec, saturationRec);\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\r\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\r\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\r\n newValueX = Math.round(newValueX / this.step) * this.step;\r\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\r\n //-----------------------------\r\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\r\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\r\n newValueY = Math.round(newValueY / this.step) * this.step;\r\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\r\n const newValue = { x: valueX, y: valueY };\r\n if (!this.myControl.value || this.myControl.value.x !== valueX || this.myControl.value.y !== valueY) {\r\n this.valueChanged(newValue);\r\n }\r\n }\r\n\r\n valueChanged(value: IPosition) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div\r\n class=\"saturation-container\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\">\r\n <div class=\"saturation\" #saturation>\r\n <div class=\"s-bg\" [style.background]=\"color\"></div>\r\n <div class=\"s-white\"></div>\r\n <div class=\"s-black\"></div>\r\n </div>\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'slider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n @Input() step = 1;\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() background?: string;\r\n @Input() isBgTransparent = false;\r\n @Output() change = new EventEmitter<number>();\r\n isDragging = false;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n myControl = new FormControl<number | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n }\r\n\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: number | string | null): void {\r\n let value = 0;\r\n if (!val) value = 0;\r\n else if (+val < +this.min) value = +this.min;\r\n else if (+val > +this.max) value = +this.max;\r\n else value = +val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n this.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n this.x = position.x;\r\n }\r\n this.setValueByPosition(thumbRec, sliderRec);\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = this.x / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (this.myControl.value !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n valueChanged(value: number) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\">\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\r\n </div>\r\n</div>\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\r\n factory: () => (typeof window !== 'undefined' ? window : null),\r\n});\r\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\r\n const len = Math.max(0, Math.floor(extraLength));\r\n if (len === 0) return '';\r\n\r\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n if (useNumeric) {\r\n charset += '0123456789';\r\n }\r\n const cryptoObj =\r\n typeof globalThis !== 'undefined'\r\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\r\n : undefined;\r\n const out: string[] = new Array(len);\r\n\r\n if (cryptoObj?.getRandomValues) {\r\n const bytes = new Uint8Array(len);\r\n cryptoObj.getRandomValues(bytes);\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[bytes[i] % charset.length];\r\n }\r\n } else {\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[Math.floor(Math.random() * charset.length)];\r\n }\r\n }\r\n\r\n return `${Date.now().toString(36)}-${out.join('')}`;\r\n}\r\n","\r\nexport function IsRtl(doc:Document) {\r\n return getComputedStyle(doc.documentElement).direction === 'rtl';\r\n}\r\n","export function makeConfetti(doc: Document, wrap: HTMLElement) {\r\n wrap.innerHTML = '';\r\n const colors = ['#3ee08f', '#43e0d8', '#8b7bff', '#ffc45c'];\r\n for (let i = 0; i < 24; i++) {\r\n const s = doc.createElement('span');\r\n s.style.left = Math.random() * 100 + '%';\r\n s.style.background = colors[i % colors.length];\r\n s.style.animationDelay = Math.random() * 0.4 + 's';\r\n s.style.animationDuration = 1.2 + Math.random() * 0.8 + 's';\r\n s.style.borderRadius = Math.random() > 0.5 ? '50%' : '2px';\r\n wrap.appendChild(s);\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserService {\r\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get prefersDarkMode(): boolean {\r\n if (!this.isBrowser) return false;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n }\r\n}\r\n","import { ComponentRef, TemplateRef } from '@angular/core';\r\n\r\nexport class OverlayRef<T> {\r\n constructor(\r\n private readonly dialogEl: HTMLDialogElement,\r\n private readonly teardownFn: () => void,\r\n public readonly componentRef?: ComponentRef<T>,\r\n public readonly templateRef?: TemplateRef<T>,\r\n ) {}\r\n\r\n close(): void {\r\n this.teardownFn();\r\n }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.dialogEl;\r\n }\r\n}\r\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { OverlayOptions, TemplateOptions } from './overlay-options';\nimport { OverlayRef } from './overlay-ref';\nimport { PlacementConfig } from './placement-config';\nimport { OverlayInstance } from './overlay-instance';\nimport { IsRtl } from '../utils/is-rtl';\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nexport const DIALOG_OVERLAY_CLASSNAME = 'ngx-ui-overlay';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService implements OnDestroy {\n private readonly overlayStacks: OverlayInstance[] = [];\n\n private zIndexCounter = 1000;\n private listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n\n ngOnDestroy(): void {\n this.closeAll();\n this.abortController.abort();\n }\n\n open<T>(options: OverlayOptions<T>): OverlayRef<T> {\n const {\n anchor,\n point,\n component,\n viewContainerRef,\n configure,\n onClosed,\n placement,\n alignment,\n margin,\n } = options;\n\n if (!viewContainerRef) {\n throw new Error('ViewContainerRef is required to render overlay content.');\n }\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const componentRef = viewContainerRef.createComponent(component);\n\n if (componentRef.location.nativeElement) {\n element.appendChild(componentRef.location.nativeElement);\n }\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n componentRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, componentRef);\n configure?.(componentRef.instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n openTemplate(options: TemplateOptions): OverlayRef<any> {\n const { anchor, point, template, appRef, configure, onClosed, placement, alignment, margin } =\n options;\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const view = template.createEmbeddedView({});\n appRef.attachView(view);\n element.append(...view.rootNodes);\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n embeddedView: view,\n appRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, undefined, template);\n configure?.(instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n closeAll(): void {\n // اسنپ‌شات می‌گیریم چون cleanup حین اجرا آرایه‌ی اصلی رو تغییر می‌ده\n [...this.overlayStacks].forEach((instance) => instance.cleanup());\n }\n\n // ---------------------------------------------------------------------\n // lifecycle\n // ---------------------------------------------------------------------\n\n private resolvePlacementConfig(\n placement?: PlacementConfig['placement'],\n alignment?: PlacementConfig['alignment'],\n margin?: number,\n ): PlacementConfig {\n return {\n placement: placement ?? 'auto',\n alignment: alignment ?? 'start',\n margin: margin ?? 8,\n };\n }\n\n private createDialogElement(): HTMLDialogElement {\n const element = this.doc.createElement('dialog');\n element.className = DIALOG_OVERLAY_CLASSNAME;\n const style = element.style;\n style.position = 'absolute';\n style.outline = 'none';\n style.padding = '0';\n style.margin = '0';\n style.border = 'none';\n style.background = 'transparent';\n style.maxWidth = '100vw';\n style.maxHeight = '100vh';\n style.overflow = 'visible';\n style.visibility = 'hidden';\n\n // شمارنده‌ی صعودی مستقل از تعداد فعلی دیالوگ‌های باز؛ در نسخه‌ی قبلی\n // با استفاده از openDialogs.size محاسبه می‌شد که بعد از بستن دیالوگ‌ها\n // می‌تونست باعث تکرار zIndex بین دو دیالوگ بشه.\n style.zIndex = `${++this.zIndexCounter}`;\n\n this.doc.body.appendChild(element);\n return element;\n }\n\n private scheduleInitialLayout(instance: OverlayInstance): void {\n instance.rafId = requestAnimationFrame(() => {\n instance.rafId = null;\n this.positionDialog(instance);\n });\n\n instance.focusTimeoutId = setTimeout(() => {\n instance.focusTimeoutId = null;\n const focusable = instance.element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n focusable?.focus();\n }, 0);\n }\n\n private destroyInstance(instance: OverlayInstance): void {\n const index = this.overlayStacks.indexOf(instance);\n if (index === -1) return; // جلوگیری از پاک‌سازی دوباره\n\n this.overlayStacks.splice(index, 1);\n\n // لغو کارهای زمان‌بندی‌شده‌ای که هنوز اجرا نشدن (نشتی حافظه در نسخه‌ی قبلی)\n if (instance.rafId !== null) cancelAnimationFrame(instance.rafId);\n if (instance.focusTimeoutId !== null) clearTimeout(instance.focusTimeoutId);\n\n if (instance.componentRef) {\n instance.componentRef.location.nativeElement?.remove();\n instance.componentRef.destroy();\n }\n\n if (instance.embeddedView && instance.appRef) {\n instance.appRef.detachView(instance.embeddedView);\n instance.embeddedView.destroy();\n }\n\n instance.element.remove();\n instance.onClosed?.();\n }\n\n // ---------------------------------------------------------------------\n // global listeners (فقط یک‌بار در کل عمر سرویس attach می‌شن)\n // ---------------------------------------------------------------------\n\n private attachGlobalListeners(): void {\n if (this.listenersAttached) return;\n this.listenersAttached = true;\n\n const { signal } = this.abortController;\n\n this.doc.addEventListener('keydown', this.onGlobalKeyDown, { signal });\n window.addEventListener('resize', this.onGlobalResize, { signal, passive: true });\n this.doc.addEventListener('click', this.onGlobalPointerEvent, { signal });\n this.doc.addEventListener('contextmenu', this.onGlobalPointerEvent, { signal });\n }\n\n private readonly onGlobalKeyDown = (e: KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n this.getLastDialog()?.cleanup();\n };\n\n private readonly onGlobalResize = (): void => {\n // چند رویداد resize پشت‌سرهم فقط یک reposition واقعی اجرا می‌کنن\n if (this.resizeRafPending) return;\n this.resizeRafPending = true;\n requestAnimationFrame(() => {\n this.resizeRafPending = false;\n this.repositionAll();\n });\n };\n\n private readonly onGlobalPointerEvent = (e: MouseEvent): void => {\n this.handleClickOnBackdrop(e);\n };\n\n private handleClickOnBackdrop(event: MouseEvent): void {\n const lastDialog = this.getLastDialog();\n if (!lastDialog || !lastDialog.element.open) return;\n // کلیک باید دقیقاً روی خودِ دیالوگ (بک‌دراپ) باشه، نه محتوای داخلش\n if (event.target !== lastDialog.element) return;\n\n // اگه فرم داخل دیالوگه، با کلیک بیرون بسته نشه\n if (lastDialog.element.querySelector('form')) return;\n\n const rect = lastDialog.element.getBoundingClientRect();\n const clickWasInsideDialog =\n rect.top <= event.clientY &&\n event.clientY <= rect.bottom &&\n rect.left <= event.clientX &&\n event.clientX <= rect.right;\n\n const anchRect = lastDialog.anchor.getBoundingClientRect();\n const clickWasInsideAnchor =\n anchRect.top <= event.clientY &&\n event.clientY <= anchRect.bottom &&\n anchRect.left <= event.clientX &&\n event.clientX <= anchRect.right;\n\n if (!clickWasInsideDialog) {\n if (event.type == 'contextmenu' && lastDialog.point && clickWasInsideAnchor) {\n event.preventDefault();\n lastDialog.point = {\n x: event.clientX,\n y: event.clientY,\n };\n this.positionDialog(lastDialog);\n } else {\n lastDialog.cleanup();\n }\n }\n }\n\n private getLastDialog(): OverlayInstance | undefined {\n return this.overlayStacks[this.overlayStacks.length - 1];\n }\n\n // ---------------------------------------------------------------------\n // positioning\n // ---------------------------------------------------------------------\n\n private repositionAll(): void {\n this.overlayStacks.forEach((instance) => {\n if (instance.element.isConnected) {\n this.positionDialog(instance);\n }\n });\n }\n\n private positionDialog(instance: OverlayInstance): void {\n const { anchor, element: dialog, placementConfig, point } = instance;\n const { placement, alignment, margin } = placementConfig;\n\n if (!dialog.isConnected) return;\n\n let anchorRect: DOMRect;\n if (point) {\n anchorRect = new DOMRect(point.x, point.y, 0, 0);\n } else {\n anchorRect = anchor.getBoundingClientRect();\n }\n const dialogRect = dialog.getBoundingClientRect();\n\n const vw = Math.min(document.body.clientWidth, window.innerWidth);\n const vh = Math.min(document.body.clientHeight, window.innerHeight);\n const isRTL = IsRtl(this.doc);\n\n let top = 0;\n let left: number | 'auto' = 'auto';\n let right: number | 'auto' = 'auto';\n\n const spaceBelow = vh - anchorRect.bottom;\n const spaceAbove = anchorRect.top;\n let verticalPos: 'above' | 'bottom' = 'above';\n\n if (\n placement === 'bottom' ||\n (placement === 'auto' && spaceBelow >= dialogRect.height + margin)\n ) {\n top = anchorRect.bottom + margin;\n verticalPos = 'above';\n if (top + dialogRect.height > vh - margin) {\n top = vh - dialogRect.height - margin;\n verticalPos = 'bottom';\n }\n } else {\n top = anchorRect.top - dialogRect.height - margin;\n verticalPos = 'bottom';\n if (top > spaceAbove) {\n top = anchorRect.top + anchorRect.height + margin;\n verticalPos = 'above';\n }\n }\n\n if (alignment === 'center') {\n left = anchorRect.left + anchorRect.width / 2 - dialogRect.width / 2;\n } else if (alignment === 'start') {\n if (isRTL) {\n right = vw - anchorRect.right;\n } else {\n left = anchorRect.left;\n }\n } else {\n left = isRTL ? anchorRect.left : anchorRect.right; //- dialogRect.width;\n }\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n if (right !== 'auto') {\n right = Math.min(Math.max(right, margin), vw - dialogRect.width - margin);\n }\n\n dialog.className = `${DIALOG_OVERLAY_CLASSNAME} tips-${verticalPos}`;\n dialog.style.top = `${top + window.scrollY}px`;\n dialog.style.left = left !== 'auto' ? `${left + window.scrollX}px` : 'auto';\n dialog.style.right = right !== 'auto' ? `${right + window.scrollX}px` : 'auto';\n dialog.style.transformOrigin = verticalPos == 'above' ? 'left top' : 'left bottom';\n // dialog.style.transform = 'none';\n dialog.style.visibility = 'visible';\n dialog.style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/range-slider/range-slider.component.ts","../../../projects/libs/shared/range-slider/range-slider.component.html","../../../projects/libs/shared/saturation/saturation.component.ts","../../../projects/libs/shared/saturation/saturation.component.html","../../../projects/libs/shared/slider/slider.component.ts","../../../projects/libs/shared/slider/slider.component.html","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/utils/is-rtl.ts","../../../projects/libs/shared/utils/confetti.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/overlay/overlay-ref.ts","../../../projects/libs/shared/overlay/overlay.service.ts","../../../projects/libs/shared/ngx-kit-shared.ts"],"sourcesContent":["export function getOffsetPosition(\r\n evt: MouseEvent | TouchEvent,\r\n parent: HTMLElement\r\n) {\r\n let position = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (evt instanceof MouseEvent) {\r\n position.x = evt.pageX;\r\n position.y = evt.pageY;\r\n } else if (evt.touches && evt.touches.length > 0) {\r\n position.x = evt.touches[0].pageX;\r\n position.y = evt.touches[0].pageY;\r\n }\r\n\r\n // Adjust for the parent's offset\r\n let parentRect = parent.getBoundingClientRect();\r\n position.x -= parentRect.left + window.scrollX;\r\n position.y -= parentRect.top + window.scrollY;\r\n\r\n return position;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nexport interface IValue {\r\n id?: string;\r\n value: number;\r\n}\r\nexport class ValueModel {\r\n id!: string;\r\n value!: number;\r\n x?: number;\r\n thumb?: HTMLElement;\r\n color?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'range-slider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule],\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n /**\r\n * The step value for the slider\r\n */\r\n @Input() step = 1;\r\n /**\r\n * The minimum value for the slider\r\n */\r\n @Input() min = 0;\r\n /**\r\n * The maximum value for the slider\r\n */\r\n @Input() max = 100;\r\n /**\r\n * The background color of the slider\r\n * - can use css like `background: linear-gradient(to right, red, blue);`\r\n * - or a solid color like `background: red;`\r\n */\r\n @Input() background?: string;\r\n /**\r\n * If true, the background will be transparent\r\n */\r\n @Input() isBgTransparent = false;\r\n /**\r\n * If true, clicking on the slider will add a new range at that position\r\n */\r\n @Input() addNewRangeOnClick = false;\r\n\r\n /**\r\n * The current value of the slider\r\n */\r\n @Output() change = new EventEmitter<IValue[]>();\r\n @Input() selectedIndex?: number;\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n private isDragging = false;\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\r\n\r\n values: ValueModel[] = [];\r\n isDisabled = false;\r\n protected _onChange = (value: IValue[]) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n ngOnInit(): void {}\r\n\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.values.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n writeValue(items?: IValue[]): void {\r\n this.values = [];\r\n if (!items || !Array.isArray(items)) {\r\n items = [];\r\n }\r\n if (items.length === 0) {\r\n items.push({ id: this.generateId(), value: this.min });\r\n }\r\n for (let val of items) {\r\n if (typeof val.value !== 'number' || isNaN(val.value)) {\r\n throw new Error('RangeSliderComponent: value must be an array of numbers');\r\n }\r\n let newVal = +val.value;\r\n if (newVal < +this.min) newVal = +this.min;\r\n else if (newVal > +this.max) newVal = +this.max;\r\n this.values.push({\r\n ...val,\r\n id: val.id ?? this.generateId(),\r\n value: newVal,\r\n });\r\n }\r\n this.updateAllThumbPositions();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null; // TODO: return errors if any;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n if (this.thumb) {\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updateThumbPosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.values);\r\n }\r\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.selectedIndex = index;\r\n this.updateRects();\r\n this.updateThumbPosition(ev);\r\n this.selectedIndexChange.emit(this.selectedIndex);\r\n }\r\n\r\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\r\n if (!this.addNewRangeOnClick) return;\r\n const position = getOffsetPosition(event, this.slider.nativeElement);\r\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\r\n // must be add with order by position\r\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\r\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\r\n this.values.splice(insertIndex, 0, {\r\n id: this.generateId(),\r\n value: newValue,\r\n });\r\n this.dragStart(event, insertIndex);\r\n // this.updateAllThumbPositions();\r\n // this.valueChanged();\r\n }\r\n\r\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging || this.selectedIndex == undefined) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n const thumb = this.values[this.selectedIndex];\r\n if (position.x < 0) {\r\n thumb.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n thumb.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n thumb.x = position.x;\r\n }\r\n this.setValueByPosition(thumb, thumbRec, sliderRec);\r\n }\r\n\r\n updateAllThumbPositions() {\r\n // wait to add thumbs\r\n setTimeout(() => {\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n for (let item of this.values) {\r\n item.x = ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (thumb.value !== value) {\r\n thumb.value = value;\r\n this.valueChanged();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n // this.selectedIndex = undefined;\r\n }\r\n\r\n valueChanged() {\r\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\r\n this._onChange(v);\r\n this.change.emit(v);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n [class.add-range-cursor]=\"addNewRangeOnClick\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\"\r\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\r\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\r\n @for (item of values; track $index; let i = $index) {\r\n <div\r\n class=\"thumb\"\r\n [class.is-active]=\"selectedIndex == i\"\r\n #thumb\r\n [style.left.px]=\"item.x\"\r\n [style.background]=\"item.color\"\r\n [title]=\"item.value\"\r\n (mousedown)=\"dragStart($event, i)\"\r\n (touchstart)=\"dragStart($event, i)\"></div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- {{ selectedIndex }}\r\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\r\n\r\n","\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormControl,\r\n AbstractControl,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { IPosition } from '../contracts/IPosition';\r\n\r\n@Component({\r\n selector: 'saturation',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './saturation.component.html',\r\n styleUrl: './saturation.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SaturationComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SaturationComponent implements ControlValueAccessor {\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() color = 'red';\r\n @Input() step = 1;\r\n @Input() min: IPosition = { x: 0, y: 0 };\r\n @Input() max = { x: 100, y: 100 };\r\n @Output() change = new EventEmitter<IPosition>();\r\n\r\n isDragging = false;\r\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n y = 0;\r\n myControl = new FormControl<IPosition | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n\r\n private saturationRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor() {}\r\n\r\n private updateRects() {\r\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: IPosition | null): void {\r\n if (!val) val = { x: 0, y: 0 };\r\n let value: IPosition = val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const saturationRec = this.saturationRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) / (this.max.x - this.min.x);\r\n this.y = ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) / (this.max.y - this.min.y);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n let saturationRec = this.saturationRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\r\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\r\n } else {\r\n this.x = position.x;\r\n }\r\n // this.x = this.x - thumbRec.width / 2;\r\n\r\n if (position.y < 0) {\r\n this.y = 0;\r\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\r\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\r\n } else {\r\n this.y = position.y;\r\n }\r\n // this.y = this.y - thumbRec.height / 2;\r\n this.setValueByPosition(thumbRec, saturationRec);\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\r\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\r\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\r\n newValueX = Math.round(newValueX / this.step) * this.step;\r\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\r\n //-----------------------------\r\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\r\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\r\n newValueY = Math.round(newValueY / this.step) * this.step;\r\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\r\n const newValue = { x: valueX, y: valueY };\r\n if (!this.myControl.value || this.myControl.value.x !== valueX || this.myControl.value.y !== valueY) {\r\n this.valueChanged(newValue);\r\n }\r\n }\r\n\r\n valueChanged(value: IPosition) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div\r\n class=\"saturation-container\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\">\r\n <div class=\"saturation\" #saturation>\r\n <div class=\"s-bg\" [style.background]=\"color\"></div>\r\n <div class=\"s-white\"></div>\r\n <div class=\"s-black\"></div>\r\n </div>\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'slider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n @Input() step = 1;\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() background?: string;\r\n @Input() isBgTransparent = false;\r\n @Output() change = new EventEmitter<number>();\r\n isDragging = false;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n myControl = new FormControl<number | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n }\r\n\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: number | string | null): void {\r\n let value = 0;\r\n if (!val) value = 0;\r\n else if (+val < +this.min) value = +this.min;\r\n else if (+val > +this.max) value = +this.max;\r\n else value = +val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n this.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n this.x = position.x;\r\n }\r\n this.setValueByPosition(thumbRec, sliderRec);\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = this.x / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (this.myControl.value !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n valueChanged(value: number) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\">\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\r\n </div>\r\n</div>\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\r\n factory: () => (typeof window !== 'undefined' ? window : null),\r\n});\r\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\r\n const len = Math.max(0, Math.floor(extraLength));\r\n if (len === 0) return '';\r\n\r\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n if (useNumeric) {\r\n charset += '0123456789';\r\n }\r\n const cryptoObj =\r\n typeof globalThis !== 'undefined'\r\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\r\n : undefined;\r\n const out: string[] = new Array(len);\r\n\r\n if (cryptoObj?.getRandomValues) {\r\n const bytes = new Uint8Array(len);\r\n cryptoObj.getRandomValues(bytes);\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[bytes[i] % charset.length];\r\n }\r\n } else {\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[Math.floor(Math.random() * charset.length)];\r\n }\r\n }\r\n\r\n return `${Date.now().toString(36)}-${out.join('')}`;\r\n}\r\n","\r\nexport function IsRtl(doc:Document) {\r\n return getComputedStyle(doc.documentElement).direction === 'rtl';\r\n}\r\n","export function makeConfetti(doc: Document, wrap: HTMLElement) {\r\n wrap.innerHTML = '';\r\n const colors = ['#3ee08f', '#43e0d8', '#8b7bff', '#ffc45c'];\r\n for (let i = 0; i < 24; i++) {\r\n const s = doc.createElement('span');\r\n s.style.left = Math.random() * 100 + '%';\r\n s.style.background = colors[i % colors.length];\r\n s.style.animationDelay = Math.random() * 0.4 + 's';\r\n s.style.animationDuration = 1.2 + Math.random() * 0.8 + 's';\r\n s.style.borderRadius = Math.random() > 0.5 ? '50%' : '2px';\r\n wrap.appendChild(s);\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserService {\r\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get prefersDarkMode(): boolean {\r\n if (!this.isBrowser) return false;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n }\r\n}\r\n","import { ComponentRef, TemplateRef } from '@angular/core';\r\n\r\nexport class OverlayRef<T> {\r\n constructor(\r\n private readonly dialogEl: HTMLDialogElement,\r\n private readonly teardownFn: () => void,\r\n public readonly componentRef?: ComponentRef<T>,\r\n public readonly templateRef?: TemplateRef<T>,\r\n ) {}\r\n\r\n close(): void {\r\n this.teardownFn();\r\n }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.dialogEl;\r\n }\r\n}\r\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { OverlayOptions, TemplateOptions } from './overlay-options';\nimport { OverlayRef } from './overlay-ref';\nimport { PlacementConfig } from './placement-config';\nimport { OverlayInstance } from './overlay-instance';\nimport { IsRtl } from '../utils/is-rtl';\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nexport const DIALOG_OVERLAY_CLASSNAME = 'ngx-ui-overlay';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService implements OnDestroy {\n private readonly overlayStacks: OverlayInstance[] = [];\n\n private zIndexCounter = 1000;\n private listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n\n ngOnDestroy(): void {\n this.closeAll();\n this.abortController.abort();\n }\n\n open<T>(options: OverlayOptions<T>): OverlayRef<T> {\n const {\n anchor,\n point,\n component,\n viewContainerRef,\n configure,\n onClosed,\n placement,\n alignment,\n margin,\n } = options;\n\n if (!viewContainerRef) {\n throw new Error('ViewContainerRef is required to render overlay content.');\n }\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const componentRef = viewContainerRef.createComponent(component);\n\n if (componentRef.location.nativeElement) {\n element.appendChild(componentRef.location.nativeElement);\n }\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n componentRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, componentRef);\n configure?.(componentRef.instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n openTemplate(options: TemplateOptions): OverlayRef<any> {\n const { anchor, point, template, appRef, configure, onClosed, placement, alignment, margin } =\n options;\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const view = template.createEmbeddedView({});\n appRef.attachView(view);\n element.append(...view.rootNodes);\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n embeddedView: view,\n appRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, undefined, template);\n configure?.(instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n closeAll(): void {\n // اسنپ‌شات می‌گیریم چون cleanup حین اجرا آرایه‌ی اصلی رو تغییر می‌ده\n [...this.overlayStacks].forEach((instance) => instance.cleanup());\n }\n\n // ---------------------------------------------------------------------\n // lifecycle\n // ---------------------------------------------------------------------\n\n private resolvePlacementConfig(\n placement?: PlacementConfig['placement'],\n alignment?: PlacementConfig['alignment'],\n margin?: number,\n ): PlacementConfig {\n return {\n placement: placement ?? 'auto',\n alignment: alignment ?? 'start',\n margin: margin ?? 8,\n };\n }\n\n private createDialogElement(): HTMLDialogElement {\n const element = this.doc.createElement('dialog');\n element.className = DIALOG_OVERLAY_CLASSNAME;\n const style = element.style;\n style.position = 'absolute';\n style.outline = 'none';\n style.padding = '0';\n style.margin = '0';\n style.border = 'none';\n style.background = 'transparent';\n style.maxWidth = '100vw';\n style.maxHeight = '100vh';\n style.overflow = 'visible';\n style.visibility = 'hidden';\n\n // شمارنده‌ی صعودی مستقل از تعداد فعلی دیالوگ‌های باز؛ در نسخه‌ی قبلی\n // با استفاده از openDialogs.size محاسبه می‌شد که بعد از بستن دیالوگ‌ها\n // می‌تونست باعث تکرار zIndex بین دو دیالوگ بشه.\n style.zIndex = `${++this.zIndexCounter}`;\n\n this.doc.body.appendChild(element);\n return element;\n }\n\n private scheduleInitialLayout(instance: OverlayInstance): void {\n instance.rafId = requestAnimationFrame(() => {\n instance.rafId = null;\n this.positionDialog(instance);\n });\n\n instance.focusTimeoutId = setTimeout(() => {\n instance.focusTimeoutId = null;\n const focusable = instance.element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n focusable?.focus();\n }, 0);\n }\n\n private destroyInstance(instance: OverlayInstance): void {\n const index = this.overlayStacks.indexOf(instance);\n if (index === -1) return; // جلوگیری از پاک‌سازی دوباره\n\n this.overlayStacks.splice(index, 1);\n\n // لغو کارهای زمان‌بندی‌شده‌ای که هنوز اجرا نشدن (نشتی حافظه در نسخه‌ی قبلی)\n if (instance.rafId !== null) cancelAnimationFrame(instance.rafId);\n if (instance.focusTimeoutId !== null) clearTimeout(instance.focusTimeoutId);\n\n if (instance.componentRef) {\n instance.componentRef.location.nativeElement?.remove();\n instance.componentRef.destroy();\n }\n\n if (instance.embeddedView && instance.appRef) {\n instance.appRef.detachView(instance.embeddedView);\n instance.embeddedView.destroy();\n }\n\n instance.element.remove();\n instance.onClosed?.();\n }\n\n // ---------------------------------------------------------------------\n // global listeners (فقط یک‌بار در کل عمر سرویس attach می‌شن)\n // ---------------------------------------------------------------------\n\n private attachGlobalListeners(): void {\n if (this.listenersAttached) return;\n this.listenersAttached = true;\n\n const { signal } = this.abortController;\n\n this.doc.addEventListener('keydown', this.onGlobalKeyDown, { signal });\n window.addEventListener('resize', this.onGlobalResize, { signal, passive: true });\n this.doc.addEventListener('click', this.onGlobalPointerEvent, { signal });\n this.doc.addEventListener('contextmenu', this.onGlobalPointerEvent, { signal });\n }\n\n private readonly onGlobalKeyDown = (e: KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n this.getLastDialog()?.cleanup();\n };\n\n private readonly onGlobalResize = (): void => {\n // چند رویداد resize پشت‌سرهم فقط یک reposition واقعی اجرا می‌کنن\n if (this.resizeRafPending) return;\n this.resizeRafPending = true;\n requestAnimationFrame(() => {\n this.resizeRafPending = false;\n this.repositionAll();\n });\n };\n\n private readonly onGlobalPointerEvent = (e: MouseEvent): void => {\n this.handleClickOnBackdrop(e);\n };\n\n private handleClickOnBackdrop(event: MouseEvent): void {\n const lastDialog = this.getLastDialog();\n if (!lastDialog || !lastDialog.element.open) return;\n // کلیک باید دقیقاً روی خودِ دیالوگ (بک‌دراپ) باشه، نه محتوای داخلش\n if (event.target !== lastDialog.element) return;\n\n // اگه فرم داخل دیالوگه، با کلیک بیرون بسته نشه\n if (lastDialog.element.querySelector('form')) return;\n\n const rect = lastDialog.element.getBoundingClientRect();\n const clickWasInsideDialog =\n rect.top <= event.clientY &&\n event.clientY <= rect.bottom &&\n rect.left <= event.clientX &&\n event.clientX <= rect.right;\n\n const anchRect = lastDialog.anchor.getBoundingClientRect();\n const clickWasInsideAnchor =\n anchRect.top <= event.clientY &&\n event.clientY <= anchRect.bottom &&\n anchRect.left <= event.clientX &&\n event.clientX <= anchRect.right;\n\n if (!clickWasInsideDialog) {\n if (event.type == 'contextmenu' && lastDialog.point && clickWasInsideAnchor) {\n event.preventDefault();\n lastDialog.point = {\n x: event.clientX,\n y: event.clientY,\n };\n this.positionDialog(lastDialog);\n } else {\n lastDialog.cleanup();\n }\n }\n }\n\n private getLastDialog(): OverlayInstance | undefined {\n return this.overlayStacks[this.overlayStacks.length - 1];\n }\n\n // ---------------------------------------------------------------------\n // positioning\n // ---------------------------------------------------------------------\n\n private repositionAll(): void {\n this.overlayStacks.forEach((instance) => {\n if (instance.element.isConnected) {\n this.positionDialog(instance);\n }\n });\n }\n\n private positionDialog(instance: OverlayInstance): void {\n const { anchor, element: dialog, placementConfig, point } = instance;\n const { placement, alignment, margin } = placementConfig;\n\n if (!dialog.isConnected) return;\n\n let anchorRect: DOMRect;\n if (point) {\n anchorRect = new DOMRect(point.x, point.y, 0, 0);\n } else {\n anchorRect = anchor.getBoundingClientRect();\n }\n const dialogRect = dialog.getBoundingClientRect();\n\n const vw = Math.min(document.body.clientWidth, window.innerWidth);\n const vh = Math.min(document.body.clientHeight, window.innerHeight);\n const isRTL = IsRtl(this.doc);\n\n let top = 0;\n let left: number | 'auto' = 'auto';\n let right: number | 'auto' = 'auto';\n\n const spaceBelow = vh - anchorRect.bottom;\n const spaceAbove = anchorRect.top;\n let verticalPos: 'above' | 'bottom' = 'above';\n\n if (\n placement === 'bottom' ||\n (placement === 'auto' && spaceBelow >= dialogRect.height + margin)\n ) {\n top = anchorRect.bottom + margin;\n verticalPos = 'above';\n if (top + dialogRect.height > vh - margin) {\n top = vh - dialogRect.height - margin;\n verticalPos = 'bottom';\n }\n } else {\n top = anchorRect.top - dialogRect.height - margin;\n verticalPos = 'bottom';\n if (top > spaceAbove) {\n top = anchorRect.top + anchorRect.height + margin;\n verticalPos = 'above';\n }\n }\n\n if (alignment === 'center') {\n left = anchorRect.left + anchorRect.width / 2 - dialogRect.width / 2;\n } else if (alignment === 'start') {\n if (isRTL) {\n right = vw - anchorRect.right;\n } else {\n left = anchorRect.left;\n }\n } else {\n left = isRTL ? anchorRect.left : anchorRect.right; //- dialogRect.width;\n }\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n if (right !== 'auto') {\n right = Math.min(Math.max(right, margin), vw - dialogRect.width - margin);\n }\n\n if (top < 0) {\n top = 0;\n }\n\n dialog.className = `${DIALOG_OVERLAY_CLASSNAME} tips-${verticalPos}`;\n dialog.style.top = `${top + window.scrollY}px`;\n dialog.style.left = left !== 'auto' ? `${left + window.scrollX}px` : 'auto';\n dialog.style.right = right !== 'auto' ? `${right + window.scrollX}px` : 'auto';\n dialog.style.transformOrigin = verticalPos == 'above' ? 'left top' : 'left bottom';\n // dialog.style.transform = 'none';\n dialog.style.visibility = 'visible';\n dialog.style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-kit",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "Angular input components",
5
5
  "author": "Mohammadreza Samani <mr.samani1368@gmail.com>",
6
6
  "license": "MIT",
@@ -1,43 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EnvironmentProviders, Injector, OnInit, AfterViewInit, ElementRef, ComponentRef, ApplicationRef, EnvironmentInjector } from '@angular/core';
2
+ import { EnvironmentProviders, Injector, EventEmitter, OnInit, AfterViewInit, ElementRef, ComponentRef, ApplicationRef, EnvironmentInjector, InjectionToken } from '@angular/core';
3
+ import * as ngx_kit_message from 'ngx-kit/message';
3
4
  import * as rxjs from 'rxjs';
4
5
  import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
5
6
 
6
- declare class MessageOptions implements IMessageOptions {
7
- private config?;
8
- constructor(config?: IMessageOptions | undefined);
9
- /**
10
- * add popover manual to set alert dialog container to top layer
11
- * - usefull when using alert modal in angular material dialog
12
- *
13
- */
14
- useOverlay?: boolean;
15
- title?: string;
16
- text?: string;
17
- html?: string | HTMLElement;
18
- backdrop?: boolean;
19
- icon?: MessageIcon;
20
- width?: number | string;
21
- allowOutsideClick?: boolean;
22
- allowEscapeKey?: boolean;
23
- allowEnterKey?: boolean;
24
- showConfirmButton?: boolean;
25
- showDenyButton?: boolean;
26
- showCancelButton?: boolean;
27
- confirmButtonText: string;
28
- denyButtonText?: string;
29
- cancelButtonText?: string;
30
- confirmButtonColor?: string;
31
- denyButtonColor?: string;
32
- cancelButtonColor?: string;
33
- confirmButtonAriaLabel?: string;
34
- denyButtonAriaLabel?: string;
35
- cancelButtonAriaLabel?: string;
36
- reverseButtons?: boolean;
37
- showCloseButton?: boolean;
38
- containerClass?: string;
39
- }
40
-
41
7
  type MessageIcon = 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';
42
8
 
43
9
  interface IMessageOptions {
@@ -195,6 +161,26 @@ interface IMessageOptions {
195
161
 
196
162
  declare function provideMessage(options?: IMessageOptions): EnvironmentProviders;
197
163
 
164
+ /**
165
+ * Static facade so call sites can use: MSG.warn('msg', opts)
166
+ * Module will set the service instance in its constructor.
167
+ */
168
+ declare class MSG {
169
+ static injector: Injector;
170
+ static show<T = any>(options?: IMessageOptions): ngx_kit_message.MessageOutput<T>;
171
+ static fire(options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
172
+ static info(title: string, text?: string, options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
173
+ static success(title: string, text?: string, options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
174
+ static warning(title: string, text?: string, options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
175
+ static error(title: string, text?: string, options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
176
+ static loading(title: string, text?: string, options?: IMessageOptions): ngx_kit_message.MessageOutput<any>;
177
+ }
178
+
179
+ type MessageOutput<T = any> = {
180
+ id: number;
181
+ close: () => void;
182
+ afterClose: EventEmitter<MessageResult>;
183
+ };
198
184
  interface MessageResult<T = any> {
199
185
  readonly isConfirmed: boolean;
200
186
  readonly isDenied: boolean;
@@ -213,29 +199,15 @@ declare enum DismissReason {
213
199
  backdrop = 1,
214
200
  close = 2,
215
201
  /**
216
- * @description ❌⚠️NOT Implemented!⚠️❌
217
- */
202
+ * @description ❌⚠️NOT Implemented!⚠️❌
203
+ */
218
204
  esc = 3,
219
205
  /**
220
- * @description ❌⚠️NOT Implemented!⚠️❌
221
- */
206
+ * @description ❌⚠️NOT Implemented!⚠️❌
207
+ */
222
208
  timer = 4
223
209
  }
224
210
 
225
- /**
226
- * Static facade so call sites can use: MSG.warn('msg', opts)
227
- * Module will set the service instance in its constructor.
228
- */
229
- declare class MSG {
230
- static injector: Injector;
231
- static show(options?: IMessageOptions): Promise<MessageResult<any>>;
232
- static fire(options?: IMessageOptions): Promise<MessageResult<any>>;
233
- static info(title: string, text?: string, options?: IMessageOptions): Promise<MessageResult<any>>;
234
- static success(title: string, text?: string, options?: IMessageOptions): Promise<MessageResult<any>>;
235
- static warning(title: string, text?: string, options?: IMessageOptions): Promise<MessageResult<any>>;
236
- static error(title: string, text?: string, options?: IMessageOptions): Promise<MessageResult<any>>;
237
- }
238
-
239
211
  declare class NgxMessageComponent implements OnInit, AfterViewInit {
240
212
  icon?: SafeHtml;
241
213
  showIcon: i0.WritableSignal<boolean>;
@@ -272,7 +244,7 @@ declare class NgxMessageService {
272
244
  alerts: ComponentRef<NgxMessageComponent>[];
273
245
  insertedId: number;
274
246
  constructor(appRef: ApplicationRef, injector: Injector, envInjector: EnvironmentInjector, _doc: Document);
275
- show(c?: IMessageOptions): Promise<MessageResult<any>>;
247
+ show<T = any>(c?: IMessageOptions): MessageOutput<T>;
276
248
  private removeDialogComponentFromBody;
277
249
  private appendDialogComponentToBody;
278
250
  closeAll(): void;
@@ -280,5 +252,44 @@ declare class NgxMessageService {
280
252
  static ɵprov: i0.ɵɵInjectableDeclaration<NgxMessageService>;
281
253
  }
282
254
 
283
- export { DismissReason, MSG, MessageOptions, NgxMessageService, provideMessage };
284
- export type { IMessageOptions, MessageResult };
255
+ declare class MessageOptions implements IMessageOptions {
256
+ private config?;
257
+ constructor(config?: IMessageOptions | undefined);
258
+ /**
259
+ * add popover manual to set alert dialog container to top layer
260
+ * - usefull when using alert modal in angular material dialog
261
+ *
262
+ */
263
+ useOverlay?: boolean;
264
+ title?: string;
265
+ text?: string;
266
+ html?: string | HTMLElement;
267
+ backdrop?: boolean;
268
+ icon?: MessageIcon;
269
+ width?: number | string;
270
+ allowOutsideClick?: boolean;
271
+ allowEscapeKey?: boolean;
272
+ allowEnterKey?: boolean;
273
+ showConfirmButton?: boolean;
274
+ showDenyButton?: boolean;
275
+ showCancelButton?: boolean;
276
+ confirmButtonText: string;
277
+ denyButtonText?: string;
278
+ cancelButtonText?: string;
279
+ confirmButtonColor?: string;
280
+ denyButtonColor?: string;
281
+ cancelButtonColor?: string;
282
+ confirmButtonAriaLabel?: string;
283
+ denyButtonAriaLabel?: string;
284
+ cancelButtonAriaLabel?: string;
285
+ reverseButtons?: boolean;
286
+ showCloseButton?: boolean;
287
+ containerClass?: string;
288
+ }
289
+
290
+ declare const NGX_MESSAGE_CONFIGS: InjectionToken<IMessageOptions>;
291
+ declare const NGX_MESSAGE_API: InjectionToken<NgxMessageService>;
292
+ declare const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions;
293
+
294
+ export { DismissReason, MSG, MessageOptions, NGX_MESSAGE_API, NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS, NgxMessageService, provideMessage };
295
+ export type { IMessageOptions, MessageOutput, MessageResult };