ngx-kit 8.3.0 → 8.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, forwardRef, ViewChild, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Output, Input, Directive } from '@angular/core';
2
+ import { input, output, forwardRef, ViewChild, ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, Directive } from '@angular/core';
3
3
  import * as i2 from '@angular/forms';
4
4
  import { FormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
5
5
  import * as i1$1 from 'ngx-kit/core';
@@ -405,7 +405,7 @@ class NgxInputGradientComponent {
405
405
  multi: true,
406
406
  useExisting: NgxInputGradientComponent,
407
407
  },
408
- ], viewQueries: [{ propertyName: "rangeSlider", first: true, predicate: ["rangeSlider"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngx-color-bg: light-dark(#fff, #222);--ngx-color-text: light-dark(#000, #fff)}.ngx-input-gradient-picker{width:270px;max-width:100%;border-radius:15px;background:var(--ngx-color-bg);color:var(--ngx-color-text);overflow:hidden;direction:ltr;font-family:arial,tahoma;border:1px rgba(134,134,134,.3490196078) solid;box-shadow:0 0 20px #7a7a7a21}.ngx-input-gradient-picker .ngx-c-inner{padding:0 12px 12px}.ngx-input-gradient-picker *{box-sizing:border-box}.ngx-color-preview{min-height:100px;padding:10px 36px;line-height:1.6;font-size:14px;font-family:arial,tahoma;font-weight:700;position:relative;color:#353535;background-color:#fff}.ngx-color-preview.is-dark-color{color:#fff}.ngx-color-preview:after,.ngx-color-preview:before{content:\" \";position:absolute;inset:0}.ngx-color-preview:before{background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0px}.ngx-color-preview:after{background:var(--ngx-selected-gradient)}.ngx-row{display:flex;flex-wrap:wrap;gap:12px}.ngx-row .ngx-col-6{width:47%}.ngx-row .ngx-input-group{display:flex}.ngx-row .ngx-input-group .ngx-input-prefix,.ngx-row .ngx-input-group .ngx-input-group-text{width:14px;margin-left:-28px;margin-top:6px;pointer-events:none}.ngx-row .ngx-input-group .ngx-input-prefix svg,.ngx-row .ngx-input-group .ngx-input-group-text svg{max-width:100%;max-height:100%;fill:var(--ngx-color-text)}.ngx-row .input-color{position:relative}.ngx-row .input-color input{padding-right:26px}.ngx-row .input-color .color{position:absolute;top:4px;right:5px;cursor:pointer;display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #ccc;transition:all .3s}.ngx-row .input-color .color:hover{border-color:#8db6e4}.ngx-row select,.ngx-row input{outline:none;border:1px solid #ececec;border-radius:4px;padding:8px 10px;background:none;width:100%;color:var(--ngx-color-text);appearance:none}.ngx-row select option,.ngx-row input option{padding:10px 20px;background-color:#fff;transition:all .3s;background:var(--ngx-color-bg);color:var(--ngx-color-text)}.ngx-row select option:hover,.ngx-row input option:hover{background:#f0f0f0}.ngx-row select:disabled,.ngx-row input:disabled{cursor:not-allowed;opacity:.7}.text-end{text-align:end}.remove-btn{background:none;border:none;outline:none;color:#07f;transition:color .3s}.remove-btn:hover{color:#0462cc}.default-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.default-list span{width:36px;height:26px;border-radius:4px;cursor:pointer;transition:transform .3s}.default-list span:hover{transform:scale(1.2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RangeSliderComponent, selector: "range-slider", inputs: ["step", "min", "max", "background", "isBgTransparent", "addNewRangeOnClick", "selectedIndex"], outputs: ["change", "selectedIndexChange"] }, { kind: "directive", type: NgxInputColor, selector: "[ngxInputColor]", inputs: ["setInputBackgroundColor", "simpleMode", "outputType", "defaultInspector", "useAlphaChannel", "showPresets", "presetColors", "ngxInputColor"], outputs: ["defaultInspectorChange", "colorChange", "change"], exportAs: ["ngxInputColor"] }, { kind: "directive", type: NgxInputAngle, selector: "[ngxInputAngle]", inputs: ["size", "openOnCLick"], outputs: ["change"], exportAs: ["ngxInputAngle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
408
+ ], viewQueries: [{ propertyName: "rangeSlider", first: true, predicate: ["rangeSlider"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngx-color-bg: light-dark(#fff, #222);--ngx-color-text: light-dark(#000, #fff)}.ngx-input-gradient-picker{width:270px;max-width:100%;border-radius:5px;background:var(--ngx-color-bg);color:var(--ngx-color-text);overflow:hidden;direction:ltr;font-family:arial,tahoma;border:1px rgba(134,134,134,.3490196078) solid;box-shadow:0 0 20px #7a7a7a21}.ngx-input-gradient-picker .ngx-c-inner{padding:0 12px 12px}.ngx-input-gradient-picker *{box-sizing:border-box}.ngx-color-preview{min-height:100px;padding:10px 36px;line-height:1.6;font-size:14px;font-family:arial,tahoma;font-weight:700;position:relative;color:#353535;background-color:#fff}.ngx-color-preview.is-dark-color{color:#fff}.ngx-color-preview:after,.ngx-color-preview:before{content:\" \";position:absolute;inset:0}.ngx-color-preview:before{background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0px}.ngx-color-preview:after{background:var(--ngx-selected-gradient)}.ngx-row{display:flex;flex-wrap:wrap;gap:12px}.ngx-row .ngx-col-6{width:47%}.ngx-row .ngx-input-group{display:flex}.ngx-row .ngx-input-group .ngx-input-prefix,.ngx-row .ngx-input-group .ngx-input-group-text{width:14px;margin-left:-28px;margin-top:6px;pointer-events:none}.ngx-row .ngx-input-group .ngx-input-prefix svg,.ngx-row .ngx-input-group .ngx-input-group-text svg{max-width:100%;max-height:100%;fill:var(--ngx-color-text)}.ngx-row .input-color{position:relative}.ngx-row .input-color input{padding-right:26px}.ngx-row .input-color .color{position:absolute;top:4px;right:5px;cursor:pointer;display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #ccc;transition:all .3s}.ngx-row .input-color .color:hover{border-color:#8db6e4}.ngx-row select,.ngx-row input{outline:none;border:1px solid #ececec;border-radius:4px;padding:8px 10px;background:none;width:100%;color:var(--ngx-color-text);appearance:none}.ngx-row select option,.ngx-row input option{padding:10px 20px;background-color:#fff;transition:all .3s;background:var(--ngx-color-bg);color:var(--ngx-color-text)}.ngx-row select option:hover,.ngx-row input option:hover{background:#f0f0f0}.ngx-row select:disabled,.ngx-row input:disabled{cursor:not-allowed;opacity:.7}.text-end{text-align:end}.remove-btn{background:none;border:none;outline:none;color:#07f;transition:color .3s}.remove-btn:hover{color:#0462cc}.default-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.default-list span{width:36px;height:26px;border-radius:4px;cursor:pointer;transition:transform .3s}.default-list span:hover{transform:scale(1.2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RangeSliderComponent, selector: "range-slider", inputs: ["step", "min", "max", "background", "isBgTransparent", "addNewRangeOnClick", "selectedIndex"], outputs: ["change", "selectedIndexChange"] }, { kind: "directive", type: NgxInputColor, selector: "[ngxInputColor]", inputs: ["setInputBackgroundColor", "simpleMode", "outputType", "defaultInspector", "useAlphaChannel", "showPresets", "presetColors", "ngxInputColor"], outputs: ["defaultInspectorChange", "colorChange", "change"], exportAs: ["ngxInputColor"] }, { kind: "directive", type: NgxInputAngle, selector: "[ngxInputAngle]", inputs: ["size", "openOnCLick"], outputs: ["change"], exportAs: ["ngxInputAngle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
409
409
  }
410
410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxInputGradientComponent, decorators: [{
411
411
  type: Component,
@@ -420,7 +420,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
420
420
  multi: true,
421
421
  useExisting: NgxInputGradientComponent,
422
422
  },
423
- ], imports: [CommonModule, FormsModule, RangeSliderComponent, NgxInputColor, NgxInputAngle], template: "<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngx-color-bg: light-dark(#fff, #222);--ngx-color-text: light-dark(#000, #fff)}.ngx-input-gradient-picker{width:270px;max-width:100%;border-radius:15px;background:var(--ngx-color-bg);color:var(--ngx-color-text);overflow:hidden;direction:ltr;font-family:arial,tahoma;border:1px rgba(134,134,134,.3490196078) solid;box-shadow:0 0 20px #7a7a7a21}.ngx-input-gradient-picker .ngx-c-inner{padding:0 12px 12px}.ngx-input-gradient-picker *{box-sizing:border-box}.ngx-color-preview{min-height:100px;padding:10px 36px;line-height:1.6;font-size:14px;font-family:arial,tahoma;font-weight:700;position:relative;color:#353535;background-color:#fff}.ngx-color-preview.is-dark-color{color:#fff}.ngx-color-preview:after,.ngx-color-preview:before{content:\" \";position:absolute;inset:0}.ngx-color-preview:before{background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0px}.ngx-color-preview:after{background:var(--ngx-selected-gradient)}.ngx-row{display:flex;flex-wrap:wrap;gap:12px}.ngx-row .ngx-col-6{width:47%}.ngx-row .ngx-input-group{display:flex}.ngx-row .ngx-input-group .ngx-input-prefix,.ngx-row .ngx-input-group .ngx-input-group-text{width:14px;margin-left:-28px;margin-top:6px;pointer-events:none}.ngx-row .ngx-input-group .ngx-input-prefix svg,.ngx-row .ngx-input-group .ngx-input-group-text svg{max-width:100%;max-height:100%;fill:var(--ngx-color-text)}.ngx-row .input-color{position:relative}.ngx-row .input-color input{padding-right:26px}.ngx-row .input-color .color{position:absolute;top:4px;right:5px;cursor:pointer;display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #ccc;transition:all .3s}.ngx-row .input-color .color:hover{border-color:#8db6e4}.ngx-row select,.ngx-row input{outline:none;border:1px solid #ececec;border-radius:4px;padding:8px 10px;background:none;width:100%;color:var(--ngx-color-text);appearance:none}.ngx-row select option,.ngx-row input option{padding:10px 20px;background-color:#fff;transition:all .3s;background:var(--ngx-color-bg);color:var(--ngx-color-text)}.ngx-row select option:hover,.ngx-row input option:hover{background:#f0f0f0}.ngx-row select:disabled,.ngx-row input:disabled{cursor:not-allowed;opacity:.7}.text-end{text-align:end}.remove-btn{background:none;border:none;outline:none;color:#07f;transition:color .3s}.remove-btn:hover{color:#0462cc}.default-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.default-list span{width:36px;height:26px;border-radius:4px;cursor:pointer;transition:transform .3s}.default-list span:hover{transform:scale(1.2)}\n"] }]
423
+ ], imports: [CommonModule, FormsModule, RangeSliderComponent, NgxInputColor, NgxInputAngle], template: "<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngx-color-bg: light-dark(#fff, #222);--ngx-color-text: light-dark(#000, #fff)}.ngx-input-gradient-picker{width:270px;max-width:100%;border-radius:5px;background:var(--ngx-color-bg);color:var(--ngx-color-text);overflow:hidden;direction:ltr;font-family:arial,tahoma;border:1px rgba(134,134,134,.3490196078) solid;box-shadow:0 0 20px #7a7a7a21}.ngx-input-gradient-picker .ngx-c-inner{padding:0 12px 12px}.ngx-input-gradient-picker *{box-sizing:border-box}.ngx-color-preview{min-height:100px;padding:10px 36px;line-height:1.6;font-size:14px;font-family:arial,tahoma;font-weight:700;position:relative;color:#353535;background-color:#fff}.ngx-color-preview.is-dark-color{color:#fff}.ngx-color-preview:after,.ngx-color-preview:before{content:\" \";position:absolute;inset:0}.ngx-color-preview:before{background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0px}.ngx-color-preview:after{background:var(--ngx-selected-gradient)}.ngx-row{display:flex;flex-wrap:wrap;gap:12px}.ngx-row .ngx-col-6{width:47%}.ngx-row .ngx-input-group{display:flex}.ngx-row .ngx-input-group .ngx-input-prefix,.ngx-row .ngx-input-group .ngx-input-group-text{width:14px;margin-left:-28px;margin-top:6px;pointer-events:none}.ngx-row .ngx-input-group .ngx-input-prefix svg,.ngx-row .ngx-input-group .ngx-input-group-text svg{max-width:100%;max-height:100%;fill:var(--ngx-color-text)}.ngx-row .input-color{position:relative}.ngx-row .input-color input{padding-right:26px}.ngx-row .input-color .color{position:absolute;top:4px;right:5px;cursor:pointer;display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #ccc;transition:all .3s}.ngx-row .input-color .color:hover{border-color:#8db6e4}.ngx-row select,.ngx-row input{outline:none;border:1px solid #ececec;border-radius:4px;padding:8px 10px;background:none;width:100%;color:var(--ngx-color-text);appearance:none}.ngx-row select option,.ngx-row input option{padding:10px 20px;background-color:#fff;transition:all .3s;background:var(--ngx-color-bg);color:var(--ngx-color-text)}.ngx-row select option:hover,.ngx-row input option:hover{background:#f0f0f0}.ngx-row select:disabled,.ngx-row input:disabled{cursor:not-allowed;opacity:.7}.text-end{text-align:end}.remove-btn{background:none;border:none;outline:none;color:#07f;transition:color .3s}.remove-btn:hover{color:#0462cc}.default-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.default-list span{width:36px;height:26px;border-radius:4px;cursor:pointer;transition:transform .3s}.default-list span:hover{transform:scale(1.2)}\n"] }]
424
424
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { showSamples: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSamples", required: false }] }], change: [{ type: i0.Output, args: ["change"] }], rangeSlider: [{
425
425
  type: ViewChild,
426
426
  args: ['rangeSlider', { static: true }]
@@ -431,8 +431,11 @@ class NgxInputGradient {
431
431
  renderer;
432
432
  viewContainerRef;
433
433
  overlayService;
434
- setInputBackground = true;
434
+ setInputBackground = input(true, /* @ts-ignore */
435
+ ...(ngDevMode ? [{ debugName: "setInputBackground" }] : /* istanbul ignore next */ []));
435
436
  _targetInput;
437
+ showSamples = input(true, /* @ts-ignore */
438
+ ...(ngDevMode ? [{ debugName: "showSamples" }] : /* istanbul ignore next */ []));
436
439
  set ngxInputColor(el) {
437
440
  this.isHostInput = false;
438
441
  if (el instanceof ElementRef) {
@@ -450,7 +453,7 @@ class NgxInputGradient {
450
453
  this._targetInput.addEventListener('input', this.boundInputHandler);
451
454
  }
452
455
  }
453
- change = new EventEmitter();
456
+ change = output();
454
457
  boundInputHandler = (e) => {
455
458
  this.writeValue(e.target.value);
456
459
  };
@@ -503,7 +506,7 @@ class NgxInputGradient {
503
506
  this.value = val;
504
507
  if (val && isValidGradient(val)) {
505
508
  // const parsed = parseGradient(val);
506
- if (this.setInputBackground) {
509
+ if (this.setInputBackground()) {
507
510
  this.renderer.setStyle(this.el.nativeElement, 'background', val);
508
511
  }
509
512
  if (this.isHostInput) {
@@ -528,6 +531,7 @@ class NgxInputGradient {
528
531
  placement: 'auto',
529
532
  configure: (instance, ref) => {
530
533
  instance.writeValue(this.value);
534
+ ref.componentRef?.setInput('showSamples', this.showSamples());
531
535
  instance.change.subscribe((c) => {
532
536
  this.value = c;
533
537
  this.emitChange(c);
@@ -546,7 +550,7 @@ class NgxInputGradient {
546
550
  }
547
551
  }
548
552
  async emitChange(c) {
549
- if (this.setInputBackground) {
553
+ if (this.setInputBackground()) {
550
554
  this.renderer.setStyle(this.el.nativeElement, 'background', c);
551
555
  }
552
556
  // اگر روی input باشیم، مقدار رو در input قرار بده
@@ -565,7 +569,7 @@ class NgxInputGradient {
565
569
  this._onTouched();
566
570
  }
567
571
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxInputGradient, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i1$1.OverlayService }], target: i0.ɵɵFactoryTarget.Directive });
568
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: NgxInputGradient, isStandalone: true, selector: "[ngxInputGradient]", inputs: { setInputBackground: "setInputBackground", ngxInputColor: "ngxInputColor" }, outputs: { change: "change" }, host: { listeners: { "click": "onClick($event)" } }, providers: [
572
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: NgxInputGradient, isStandalone: true, selector: "[ngxInputGradient]", inputs: { setInputBackground: { classPropertyName: "setInputBackground", publicName: "setInputBackground", isSignal: true, isRequired: false, transformFunction: null }, showSamples: { classPropertyName: "showSamples", publicName: "showSamples", isSignal: true, isRequired: false, transformFunction: null }, ngxInputColor: { classPropertyName: "ngxInputColor", publicName: "ngxInputColor", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "click": "onClick($event)" } }, providers: [
569
573
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxInputGradient), multi: true },
570
574
  {
571
575
  provide: NG_VALIDATORS,
@@ -587,14 +591,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
587
591
  },
588
592
  ],
589
593
  }]
590
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i1$1.OverlayService }], propDecorators: { setInputBackground: [{
591
- type: Input
592
- }], ngxInputColor: [{
594
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i1$1.OverlayService }], propDecorators: { setInputBackground: [{ type: i0.Input, args: [{ isSignal: true, alias: "setInputBackground", required: false }] }], showSamples: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSamples", required: false }] }], ngxInputColor: [{
593
595
  type: Input,
594
596
  args: ['ngxInputColor']
595
- }], change: [{
596
- type: Output
597
- }], onClick: [{
597
+ }], change: [{ type: i0.Output, args: ["change"] }], onClick: [{
598
598
  type: HostListener,
599
599
  args: ['click', ['$event']]
600
600
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-gradient-picker.mjs","sources":["../../../projects/libs/gradient-picker/utils/build-gradient.ts","../../../projects/libs/gradient-picker/contracts/default-gradients.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.html","../../../projects/libs/gradient-picker/directives/ngx-input-gradient.directive.ts","../../../projects/libs/gradient-picker/ngx-kit-gradient-picker.ts"],"sourcesContent":["import { GradientStop, GradientType } from '../contracts/GradientStop';\n\nexport function buildGradientFromStops(\n stops: GradientStop[],\n type: GradientType = 'linear',\n rotation: number | string = 0,\n options = '',\n): string {\n if (!stops?.length) return '';\n\n const sorted = [...stops].sort((a, b) => a.value - b.value);\n const parts = sorted.map((stop) => {\n const value = Math.max(0, Math.min(Number(stop.value) || 0, 100));\n return `${stop.color.trim()} ${value}%`;\n });\n\n const kind = type.replace('repeating-', '');\n let prefix = options.trim();\n if (!prefix && kind === 'linear') {\n prefix = typeof rotation === 'number' ? `${rotation}deg` : rotation.trim();\n } else if (!prefix && kind === 'radial') {\n prefix = typeof rotation === 'string' && rotation.trim() ? rotation.trim() : 'circle';\n } else if (!prefix && kind === 'conic') {\n prefix = typeof rotation === 'number' ? `from ${rotation}deg` : rotation.trim();\n }\n\n return `${type}-gradient(${prefix ? `${prefix}, ` : ''}${parts.join(', ')})`;\n}\n\nexport function generateRandomColor(): string {\n const letters = '0123456789ABCDEF';\n let color = '#';\n for (let i = 0; i < 6; i++) color += letters[Math.floor(Math.random() * 16)];\n return color;\n}\n\nexport function isValidGradient(value: string): boolean {\n return (\n typeof value === 'string' &&\n /^\\s*(?:repeating-)?(?:conic|linear|radial)-gradient\\s*\\(/i.test(value)\n );\n}\n\nexport function parseGradient(value: string): {\n type: GradientType;\n rotation: number;\n options: string;\n shape?: string;\n stops: GradientStop[];\n valid: boolean;\n} {\n let type: GradientType = 'linear';\n let rotation = 180;\n let options = '';\n let shape: string | undefined;\n const stops: GradientStop[] = [];\n let valid = false;\n\n if (!value) return { type, rotation, options, shape, stops, valid };\n const match = value\n .trim()\n .match(/^((?:repeating-)?(?:conic|linear|radial))-gradient\\s*\\((.*)\\)$/i);\n if (!match) return { type, rotation, options, shape, stops, valid };\n\n type = match[1].toLowerCase() as GradientType;\n const parts = splitGradientArguments(match[2]);\n const first = parts[0] ?? '';\n const kind = type.replace('repeating-', '');\n const hasPrelude =\n kind === 'linear'\n ? /^(?:to\\s+|in\\s+|[-+]?(?:\\d*\\.)?\\d+(?:deg|grad|rad|turn)\\b)/i.test(first)\n : kind === 'radial'\n ? /^(?:(?:circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner)\\b|at\\s+)/i.test(\n first,\n ) || !parseColorStop(first)\n : /^(?:from\\s+|at\\s+)/i.test(first) || !parseColorStop(first);\n\n let firstStop = 0;\n if (hasPrelude) {\n options = first;\n firstStop = 1;\n const angle = first.match(/(?:from\\s+)?([-+]?(?:\\d*\\.)?\\d+)(deg|grad|rad|turn)\\b/i);\n if (angle) rotation = angleToDegrees(Number(angle[1]), angle[2]);\n if (kind === 'radial') shape = first;\n } else if (kind === 'conic') {\n rotation = 0;\n }\n\n for (let i = firstStop; i < parts.length; i++) {\n const parsed = parseColorStop(parts[i]);\n if (!parsed) continue;\n\n let position = parsed.position;\n if (position === undefined) {\n position =\n stops.length === 0\n ? 0\n : i === parts.length - 1\n ? 100\n : (100 / (parts.length - firstStop - 1)) * stops.length;\n }\n stops.push({ color: parsed.color, value: position, id: generateId(stops) });\n }\n\n valid = stops.length >= 2;\n return { type, rotation, options, shape, stops, valid };\n}\n\nfunction splitGradientArguments(value: string): string[] {\n const parts: string[] = [];\n let depth = 0;\n let start = 0;\n for (let i = 0; i < value.length; i++) {\n if (value[i] === '(') depth++;\n else if (value[i] === ')') depth--;\n else if (value[i] === ',' && depth === 0) {\n parts.push(value.slice(start, i).trim());\n start = i + 1;\n }\n }\n parts.push(value.slice(start).trim());\n return parts.filter(Boolean);\n}\n\nfunction parseColorStop(value: string): { color: string; position?: number } | undefined {\n const stop = value.trim();\n const positionMatch = stop.match(/\\s+([-+]?(?:\\d*\\.)?\\d+)%?$/);\n const color = positionMatch ? stop.slice(0, positionMatch.index).trim() : stop;\n if (!/^(?:#[\\da-f]{3,8}|[a-z][\\w-]*|[a-z][\\w-]*\\()/i.test(color)) return undefined;\n\n if (color.includes('(')) {\n let depth = 0;\n for (const char of color) {\n if (char === '(') depth++;\n else if (char === ')') depth--;\n if (depth < 0) return undefined;\n }\n if (depth !== 0 || !/\\)$/.test(color)) return undefined;\n }\n\n return { color, position: positionMatch ? Number.parseFloat(positionMatch[1]) : undefined };\n}\n\nfunction angleToDegrees(value: number, unit: string): number {\n switch (unit.toLowerCase()) {\n case 'turn':\n return value * 360;\n case 'grad':\n return value * 0.9;\n case 'rad':\n return value * (180 / Math.PI);\n default:\n return value;\n }\n}\n\nfunction generateId(stops: GradientStop[]): string {\n const id = 'ngx-stop-' + Math.random().toString(36).substring(2, 9);\n return stops.some((stop) => stop.id === id) ? generateId(stops) : id;\n}\n","import { GradientStop } from './GradientStop';\n\nexport const DefaultGradients: GradientStop[][] = [\n // Sunset\n [\n { id: '1', value: 0, color: '#ff7e5f' },\n { id: '2', value: 100, color: '#feb47b' },\n ],\n\n // Ocean Blue\n [\n { id: '1', value: 0, color: '#00c6ff' },\n { id: '2', value: 100, color: '#0072ff' },\n ],\n\n // Purple Dream\n [\n { id: '1', value: 0, color: '#a18cd1' },\n { id: '2', value: 100, color: '#fbc2eb' },\n ],\n\n // Cool Sky\n [\n { id: '1', value: 0, color: '#2193b0' },\n { id: '2', value: 100, color: '#6dd5ed' },\n ],\n\n // Peach\n [\n { id: '1', value: 0, color: '#ed4264' },\n { id: '2', value: 100, color: '#ffedbc' },\n ],\n\n // Night Fade\n [\n { id: '1', value: 0, color: '#a18cd1' },\n { id: '2', value: 100, color: '#fbc2eb' },\n ],\n\n // Aqua Marine\n [\n { id: '1', value: 0, color: '#1a2980' },\n { id: '2', value: 100, color: '#26d0ce' },\n ],\n\n // Forest\n [\n { id: '1', value: 0, color: '#5a3f37' },\n { id: '2', value: 100, color: '#2c7744' },\n ],\n\n // Flame\n [\n { id: '1', value: 0, color: '#ff4e50' },\n { id: '2', value: 100, color: '#f9d423' },\n ],\n\n // Blue Lagoon\n [\n { id: '1', value: 0, color: '#43cea2' },\n { id: '2', value: 100, color: '#185a9d' },\n ],\n\n // Retro\n [\n { id: '1', value: 0, color: '#3fada8' },\n { id: '2', value: 100, color: '#808080' },\n ],\n\n // Sunrise\n [\n { id: '1', value: 0, color: '#ff512f' },\n { id: '2', value: 100, color: '#dd2476' },\n ],\n\n // Rainbow\n [\n { id: '1', value: 0, color: '#ff0000' },\n { id: '2', value: 20, color: '#ff9900' },\n { id: '3', value: 40, color: '#ffff00' },\n { id: '4', value: 60, color: '#00ff00' },\n { id: '5', value: 80, color: '#0000ff' },\n { id: '6', value: 100, color: '#8b00ff' },\n ],\n\n // Candy\n [\n { id: '1', value: 0, color: '#f953c6' },\n { id: '2', value: 100, color: '#b91d73' },\n ],\n\n // Citrus\n [\n { id: '1', value: 0, color: '#fdc830' },\n { id: '2', value: 100, color: '#f37335' },\n ],\n\n // Lava\n [\n { id: '1', value: 0, color: '#e52d27' },\n { id: '2', value: 100, color: '#b31217' },\n ],\n\n // Winter\n [\n { id: '1', value: 0, color: '#e6dada' },\n { id: '2', value: 100, color: '#274046' },\n ],\n\n // Purple Love\n [\n { id: '1', value: 0, color: '#cc2b5e' },\n { id: '2', value: 100, color: '#753a88' },\n ],\n\n // // Mint\n // [\n // { id: '1', value: 0, color: '#76b852' },\n // { id: '2', value: 100, color: '#8dc26f' },\n // ],\n\n // // Cloud\n // [\n // { id: '1', value: 0, color: '#bdc3c7' },\n // { id: '2', value: 100, color: '#2c3e50' },\n // ],\n];\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n input,\n Input,\n OnDestroy,\n OnInit,\n output,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n AbstractControl,\n ValidationErrors,\n FormsModule,\n} from '@angular/forms';\nimport { GradientStop, GradientType } from '../contracts/GradientStop';\nimport {\n buildGradientFromStops,\n generateRandomColor,\n isValidGradient,\n parseGradient,\n} from '../utils/build-gradient';\nimport { DefaultGradients } from '../contracts/default-gradients';\nimport { BrowserService, RangeSliderComponent } from 'ngx-kit/core';\nimport { NgxInputColor } from 'ngx-kit/color-picker';\nimport { NgxInputAngle } from 'ngx-kit/angle-selector';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ngx-input-gradient',\n templateUrl: './input-gradient.component.html',\n styleUrls: ['./input-gradient.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxInputGradientComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: NgxInputGradientComponent,\n },\n ],\n imports: [CommonModule, FormsModule, RangeSliderComponent, NgxInputColor, NgxInputAngle],\n})\nexport class NgxInputGradientComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n readonly showSamples = input(true);\n readonly change = output<string>();\n\n defaultGradients: string[] = [];\n\n resultGradient = '';\n baseBg = '';\n rangeValues: GradientStop[] = [];\n type: GradientType = 'linear';\n rotation: number = 90;\n gradientOptions = '';\n selectedIndex = 0;\n\n isDisabled = false;\n protected _onChange = (value: string) => {};\n protected _onTouched = () => {};\n _onValidateChange = () => {};\n\n @ViewChild('rangeSlider', { static: true }) rangeSlider?: RangeSliderComponent;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.setDefaultGradients();\n }\n ngOnDestroy(): void {}\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this.isDisabled = disabled;\n }\n registerOnValidatorChange(fn: () => void): void {\n this._onValidateChange = fn;\n }\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.resultGradient) return { required: true };\n const parsed = parseGradient(this.resultGradient);\n if (!parsed.valid) return { invalid: true };\n if (parsed.stops.length < 2) return { stops: 'at least 2 color stops required' };\n return null;\n }\n\n writeValue(value: any): void {\n if (value && isValidGradient(value)) {\n const parsed = parseGradient(value);\n if (parsed.valid) {\n this.resultGradient = value;\n this.type = parsed.type;\n this.rotation = parsed.rotation;\n this.gradientOptions = parsed.options;\n this.rangeValues = parsed.stops;\n } else {\n this.resultGradient = '';\n this.rangeValues = [\n { color: generateRandomColor(), value: 0, id: this.generateId() },\n { color: generateRandomColor(), value: 100, id: this.generateId() },\n ];\n this.type = 'linear';\n this.rotation = 90;\n this.gradientOptions = '';\n }\n } else {\n this.resultGradient = '';\n this.rangeValues = [\n { color: generateRandomColor(), value: 0, id: this.generateId() },\n { color: generateRandomColor(), value: 100, id: this.generateId() },\n ];\n this.type = 'linear';\n this.rotation = 90;\n this.gradientOptions = '';\n }\n this.generateGradient();\n }\n private generateId(): string {\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\n if (this.rangeValues.findIndex((x) => x.id == id) >= 0) {\n return this.generateId();\n }\n return id;\n }\n\n stopPropagation(ev: Event) {\n ev.stopPropagation();\n }\n\n remove() {\n if (this.rangeValues.length > 2) {\n this.rangeValues.splice(this.selectedIndex, 1);\n this.selectedIndex = 0;\n this.generateGradient();\n }\n }\n\n generateGradient(ev?: string) {\n if (ev && this.rangeValues[this.selectedIndex]) {\n this.rangeValues[this.selectedIndex].color = ev;\n }\n for (let item of this.rangeValues) {\n item.color ??= generateRandomColor();\n }\n this.baseBg = buildGradientFromStops(this.rangeValues, 'linear', 90);\n this.resultGradient = buildGradientFromStops(\n this.rangeValues,\n this.type,\n this.rotation,\n this.gradientOptions,\n );\n this.emitChange();\n }\n\n updateGradientType() {\n this.gradientOptions = '';\n this.generateGradient();\n }\n\n updateRotation() {\n this.gradientOptions = '';\n this.generateGradient();\n }\n\n updateRangeSlider() {\n if (this.rangeSlider) {\n this.rangeSlider.writeValue(this.rangeValues);\n }\n }\n emitChange() {\n this._onChange(this.resultGradient);\n this.change.emit(this.resultGradient);\n }\n\n setDefaultGradients() {\n this.defaultGradients = [];\n\n for (let item of DefaultGradients) {\n this.defaultGradients.push(buildGradientFromStops(item, 'linear', 90));\n }\n }\n\n onSelectDefault(item: string, i: number) {\n // console.log('onSelectDefault', item, i);\n this.writeValue(item);\n this.emitChange();\n }\n}\n","<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewContainerRef,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NgxInputGradientComponent } from '../components/input-gradient.component';\nimport { isValidGradient, parseGradient } from '../utils/build-gradient';\nimport { OverlayRef, OverlayService } from 'ngx-kit/core';\n\n@Directive({\n selector: '[ngxInputGradient]',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxInputGradient), multi: true },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: NgxInputGradient,\n },\n ],\n})\nexport class NgxInputGradient implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() setInputBackground = true;\n private _targetInput?: HTMLInputElement;\n @Input('ngxInputColor') set ngxInputColor(\n el: HTMLInputElement | ElementRef<HTMLInputElement> | null | undefined | '',\n ) {\n this.isHostInput = false;\n if (el instanceof ElementRef) {\n this._targetInput = el.nativeElement;\n } else if (el instanceof HTMLInputElement) {\n this.isHostInput = true;\n this._targetInput = el;\n } else {\n this._targetInput = undefined;\n }\n\n if (this._targetInput) {\n this._targetInput.removeEventListener('input', this.boundInputHandler);\n this._targetInput.addEventListener('input', this.boundInputHandler);\n }\n }\n @Output() change = new EventEmitter<string>();\n\n private boundInputHandler = (e: Event) => {\n this.writeValue((e.target as HTMLInputElement).value);\n };\n private isHostInput = false;\n private pickerRef?: OverlayRef<NgxInputGradientComponent>;\n\n value = '';\n\n protected _onChange = (value: string) => {};\n protected _onTouched = () => {};\n _onValidateChange = () => {};\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private overlayService: OverlayService,\n ) {}\n\n @HostListener('click', ['$event']) onClick(ev: Event) {\n ev.stopPropagation();\n ev.preventDefault();\n this.toggle();\n }\n ngAfterViewInit(): void {\n if (this._targetInput && this._targetInput.tagName.toLowerCase() === 'input') {\n this.writeValue(this._targetInput.value);\n }\n }\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n if (disabled) {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', disabled);\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n registerOnValidatorChange(fn: () => void): void {\n this._onValidateChange = fn;\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return null;\n }\n\n ngOnDestroy(): void {\n this.destroyPicker();\n }\n\n writeValue(val: any): void {\n this.value = val;\n if (val && isValidGradient(val)) {\n // const parsed = parseGradient(val);\n if (this.setInputBackground) {\n this.renderer.setStyle(this.el.nativeElement, 'background', val);\n }\n if (this.isHostInput) {\n this.el.nativeElement.value = this.value;\n }\n this._onValidateChange();\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'background', '');\n }\n }\n\n toggle() {\n if (this.pickerRef) {\n this.destroyPicker();\n return;\n }\n\n this.pickerRef = this.overlayService.open({\n anchor: this.el.nativeElement,\n component: NgxInputGradientComponent,\n viewContainerRef: this.viewContainerRef,\n alignment: 'start',\n placement: 'auto',\n configure: (instance, ref) => {\n instance.writeValue(this.value);\n\n instance.change.subscribe((c: string) => {\n this.value = c;\n this.emitChange(c);\n });\n\n // instance.closed.subscribe(() => ref.close());\n },\n onClosed: () => {\n this.pickerRef = undefined;\n },\n });\n }\n\n destroyPicker() {\n if (this.pickerRef) {\n this.pickerRef.close();\n this.pickerRef = undefined;\n }\n }\n\n private async emitChange(c: string) {\n if (this.setInputBackground) {\n this.renderer.setStyle(this.el.nativeElement, 'background', c);\n }\n\n // اگر روی input باشیم، مقدار رو در input قرار بده\n if (this.isHostInput) {\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = c;\n }\n\n // اگر targetInput وجود داره، در اونم مقدار ست کن\n if (this._targetInput instanceof HTMLInputElement) {\n this._targetInput.value = c;\n const event = new Event('input', { bubbles: true });\n this._targetInput.dispatchEvent(event);\n }\n\n this._onChange(c);\n this.change.emit(c);\n this._onTouched();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-kit-gradient-picker.mjs","sources":["../../../projects/libs/gradient-picker/utils/build-gradient.ts","../../../projects/libs/gradient-picker/contracts/default-gradients.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.ts","../../../projects/libs/gradient-picker/components/input-gradient.component.html","../../../projects/libs/gradient-picker/directives/ngx-input-gradient.directive.ts","../../../projects/libs/gradient-picker/ngx-kit-gradient-picker.ts"],"sourcesContent":["import { GradientStop, GradientType } from '../contracts/GradientStop';\n\nexport function buildGradientFromStops(\n stops: GradientStop[],\n type: GradientType = 'linear',\n rotation: number | string = 0,\n options = '',\n): string {\n if (!stops?.length) return '';\n\n const sorted = [...stops].sort((a, b) => a.value - b.value);\n const parts = sorted.map((stop) => {\n const value = Math.max(0, Math.min(Number(stop.value) || 0, 100));\n return `${stop.color.trim()} ${value}%`;\n });\n\n const kind = type.replace('repeating-', '');\n let prefix = options.trim();\n if (!prefix && kind === 'linear') {\n prefix = typeof rotation === 'number' ? `${rotation}deg` : rotation.trim();\n } else if (!prefix && kind === 'radial') {\n prefix = typeof rotation === 'string' && rotation.trim() ? rotation.trim() : 'circle';\n } else if (!prefix && kind === 'conic') {\n prefix = typeof rotation === 'number' ? `from ${rotation}deg` : rotation.trim();\n }\n\n return `${type}-gradient(${prefix ? `${prefix}, ` : ''}${parts.join(', ')})`;\n}\n\nexport function generateRandomColor(): string {\n const letters = '0123456789ABCDEF';\n let color = '#';\n for (let i = 0; i < 6; i++) color += letters[Math.floor(Math.random() * 16)];\n return color;\n}\n\nexport function isValidGradient(value: string): boolean {\n return (\n typeof value === 'string' &&\n /^\\s*(?:repeating-)?(?:conic|linear|radial)-gradient\\s*\\(/i.test(value)\n );\n}\n\nexport function parseGradient(value: string): {\n type: GradientType;\n rotation: number;\n options: string;\n shape?: string;\n stops: GradientStop[];\n valid: boolean;\n} {\n let type: GradientType = 'linear';\n let rotation = 180;\n let options = '';\n let shape: string | undefined;\n const stops: GradientStop[] = [];\n let valid = false;\n\n if (!value) return { type, rotation, options, shape, stops, valid };\n const match = value\n .trim()\n .match(/^((?:repeating-)?(?:conic|linear|radial))-gradient\\s*\\((.*)\\)$/i);\n if (!match) return { type, rotation, options, shape, stops, valid };\n\n type = match[1].toLowerCase() as GradientType;\n const parts = splitGradientArguments(match[2]);\n const first = parts[0] ?? '';\n const kind = type.replace('repeating-', '');\n const hasPrelude =\n kind === 'linear'\n ? /^(?:to\\s+|in\\s+|[-+]?(?:\\d*\\.)?\\d+(?:deg|grad|rad|turn)\\b)/i.test(first)\n : kind === 'radial'\n ? /^(?:(?:circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner)\\b|at\\s+)/i.test(\n first,\n ) || !parseColorStop(first)\n : /^(?:from\\s+|at\\s+)/i.test(first) || !parseColorStop(first);\n\n let firstStop = 0;\n if (hasPrelude) {\n options = first;\n firstStop = 1;\n const angle = first.match(/(?:from\\s+)?([-+]?(?:\\d*\\.)?\\d+)(deg|grad|rad|turn)\\b/i);\n if (angle) rotation = angleToDegrees(Number(angle[1]), angle[2]);\n if (kind === 'radial') shape = first;\n } else if (kind === 'conic') {\n rotation = 0;\n }\n\n for (let i = firstStop; i < parts.length; i++) {\n const parsed = parseColorStop(parts[i]);\n if (!parsed) continue;\n\n let position = parsed.position;\n if (position === undefined) {\n position =\n stops.length === 0\n ? 0\n : i === parts.length - 1\n ? 100\n : (100 / (parts.length - firstStop - 1)) * stops.length;\n }\n stops.push({ color: parsed.color, value: position, id: generateId(stops) });\n }\n\n valid = stops.length >= 2;\n return { type, rotation, options, shape, stops, valid };\n}\n\nfunction splitGradientArguments(value: string): string[] {\n const parts: string[] = [];\n let depth = 0;\n let start = 0;\n for (let i = 0; i < value.length; i++) {\n if (value[i] === '(') depth++;\n else if (value[i] === ')') depth--;\n else if (value[i] === ',' && depth === 0) {\n parts.push(value.slice(start, i).trim());\n start = i + 1;\n }\n }\n parts.push(value.slice(start).trim());\n return parts.filter(Boolean);\n}\n\nfunction parseColorStop(value: string): { color: string; position?: number } | undefined {\n const stop = value.trim();\n const positionMatch = stop.match(/\\s+([-+]?(?:\\d*\\.)?\\d+)%?$/);\n const color = positionMatch ? stop.slice(0, positionMatch.index).trim() : stop;\n if (!/^(?:#[\\da-f]{3,8}|[a-z][\\w-]*|[a-z][\\w-]*\\()/i.test(color)) return undefined;\n\n if (color.includes('(')) {\n let depth = 0;\n for (const char of color) {\n if (char === '(') depth++;\n else if (char === ')') depth--;\n if (depth < 0) return undefined;\n }\n if (depth !== 0 || !/\\)$/.test(color)) return undefined;\n }\n\n return { color, position: positionMatch ? Number.parseFloat(positionMatch[1]) : undefined };\n}\n\nfunction angleToDegrees(value: number, unit: string): number {\n switch (unit.toLowerCase()) {\n case 'turn':\n return value * 360;\n case 'grad':\n return value * 0.9;\n case 'rad':\n return value * (180 / Math.PI);\n default:\n return value;\n }\n}\n\nfunction generateId(stops: GradientStop[]): string {\n const id = 'ngx-stop-' + Math.random().toString(36).substring(2, 9);\n return stops.some((stop) => stop.id === id) ? generateId(stops) : id;\n}\n","import { GradientStop } from './GradientStop';\n\nexport const DefaultGradients: GradientStop[][] = [\n // Sunset\n [\n { id: '1', value: 0, color: '#ff7e5f' },\n { id: '2', value: 100, color: '#feb47b' },\n ],\n\n // Ocean Blue\n [\n { id: '1', value: 0, color: '#00c6ff' },\n { id: '2', value: 100, color: '#0072ff' },\n ],\n\n // Purple Dream\n [\n { id: '1', value: 0, color: '#a18cd1' },\n { id: '2', value: 100, color: '#fbc2eb' },\n ],\n\n // Cool Sky\n [\n { id: '1', value: 0, color: '#2193b0' },\n { id: '2', value: 100, color: '#6dd5ed' },\n ],\n\n // Peach\n [\n { id: '1', value: 0, color: '#ed4264' },\n { id: '2', value: 100, color: '#ffedbc' },\n ],\n\n // Night Fade\n [\n { id: '1', value: 0, color: '#a18cd1' },\n { id: '2', value: 100, color: '#fbc2eb' },\n ],\n\n // Aqua Marine\n [\n { id: '1', value: 0, color: '#1a2980' },\n { id: '2', value: 100, color: '#26d0ce' },\n ],\n\n // Forest\n [\n { id: '1', value: 0, color: '#5a3f37' },\n { id: '2', value: 100, color: '#2c7744' },\n ],\n\n // Flame\n [\n { id: '1', value: 0, color: '#ff4e50' },\n { id: '2', value: 100, color: '#f9d423' },\n ],\n\n // Blue Lagoon\n [\n { id: '1', value: 0, color: '#43cea2' },\n { id: '2', value: 100, color: '#185a9d' },\n ],\n\n // Retro\n [\n { id: '1', value: 0, color: '#3fada8' },\n { id: '2', value: 100, color: '#808080' },\n ],\n\n // Sunrise\n [\n { id: '1', value: 0, color: '#ff512f' },\n { id: '2', value: 100, color: '#dd2476' },\n ],\n\n // Rainbow\n [\n { id: '1', value: 0, color: '#ff0000' },\n { id: '2', value: 20, color: '#ff9900' },\n { id: '3', value: 40, color: '#ffff00' },\n { id: '4', value: 60, color: '#00ff00' },\n { id: '5', value: 80, color: '#0000ff' },\n { id: '6', value: 100, color: '#8b00ff' },\n ],\n\n // Candy\n [\n { id: '1', value: 0, color: '#f953c6' },\n { id: '2', value: 100, color: '#b91d73' },\n ],\n\n // Citrus\n [\n { id: '1', value: 0, color: '#fdc830' },\n { id: '2', value: 100, color: '#f37335' },\n ],\n\n // Lava\n [\n { id: '1', value: 0, color: '#e52d27' },\n { id: '2', value: 100, color: '#b31217' },\n ],\n\n // Winter\n [\n { id: '1', value: 0, color: '#e6dada' },\n { id: '2', value: 100, color: '#274046' },\n ],\n\n // Purple Love\n [\n { id: '1', value: 0, color: '#cc2b5e' },\n { id: '2', value: 100, color: '#753a88' },\n ],\n\n // // Mint\n // [\n // { id: '1', value: 0, color: '#76b852' },\n // { id: '2', value: 100, color: '#8dc26f' },\n // ],\n\n // // Cloud\n // [\n // { id: '1', value: 0, color: '#bdc3c7' },\n // { id: '2', value: 100, color: '#2c3e50' },\n // ],\n];\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n input,\n Input,\n OnDestroy,\n OnInit,\n output,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n AbstractControl,\n ValidationErrors,\n FormsModule,\n} from '@angular/forms';\nimport { GradientStop, GradientType } from '../contracts/GradientStop';\nimport {\n buildGradientFromStops,\n generateRandomColor,\n isValidGradient,\n parseGradient,\n} from '../utils/build-gradient';\nimport { DefaultGradients } from '../contracts/default-gradients';\nimport { BrowserService, RangeSliderComponent } from 'ngx-kit/core';\nimport { NgxInputColor } from 'ngx-kit/color-picker';\nimport { NgxInputAngle } from 'ngx-kit/angle-selector';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ngx-input-gradient',\n templateUrl: './input-gradient.component.html',\n styleUrls: ['./input-gradient.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxInputGradientComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: NgxInputGradientComponent,\n },\n ],\n imports: [CommonModule, FormsModule, RangeSliderComponent, NgxInputColor, NgxInputAngle],\n})\nexport class NgxInputGradientComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n readonly showSamples = input(true);\n readonly change = output<string>();\n\n defaultGradients: string[] = [];\n\n resultGradient = '';\n baseBg = '';\n rangeValues: GradientStop[] = [];\n type: GradientType = 'linear';\n rotation: number = 90;\n gradientOptions = '';\n selectedIndex = 0;\n\n isDisabled = false;\n protected _onChange = (value: string) => {};\n protected _onTouched = () => {};\n _onValidateChange = () => {};\n\n @ViewChild('rangeSlider', { static: true }) rangeSlider?: RangeSliderComponent;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.setDefaultGradients();\n }\n ngOnDestroy(): void {}\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this.isDisabled = disabled;\n }\n registerOnValidatorChange(fn: () => void): void {\n this._onValidateChange = fn;\n }\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.resultGradient) return { required: true };\n const parsed = parseGradient(this.resultGradient);\n if (!parsed.valid) return { invalid: true };\n if (parsed.stops.length < 2) return { stops: 'at least 2 color stops required' };\n return null;\n }\n\n writeValue(value: any): void {\n if (value && isValidGradient(value)) {\n const parsed = parseGradient(value);\n if (parsed.valid) {\n this.resultGradient = value;\n this.type = parsed.type;\n this.rotation = parsed.rotation;\n this.gradientOptions = parsed.options;\n this.rangeValues = parsed.stops;\n } else {\n this.resultGradient = '';\n this.rangeValues = [\n { color: generateRandomColor(), value: 0, id: this.generateId() },\n { color: generateRandomColor(), value: 100, id: this.generateId() },\n ];\n this.type = 'linear';\n this.rotation = 90;\n this.gradientOptions = '';\n }\n } else {\n this.resultGradient = '';\n this.rangeValues = [\n { color: generateRandomColor(), value: 0, id: this.generateId() },\n { color: generateRandomColor(), value: 100, id: this.generateId() },\n ];\n this.type = 'linear';\n this.rotation = 90;\n this.gradientOptions = '';\n }\n this.generateGradient();\n }\n private generateId(): string {\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\n if (this.rangeValues.findIndex((x) => x.id == id) >= 0) {\n return this.generateId();\n }\n return id;\n }\n\n stopPropagation(ev: Event) {\n ev.stopPropagation();\n }\n\n remove() {\n if (this.rangeValues.length > 2) {\n this.rangeValues.splice(this.selectedIndex, 1);\n this.selectedIndex = 0;\n this.generateGradient();\n }\n }\n\n generateGradient(ev?: string) {\n if (ev && this.rangeValues[this.selectedIndex]) {\n this.rangeValues[this.selectedIndex].color = ev;\n }\n for (let item of this.rangeValues) {\n item.color ??= generateRandomColor();\n }\n this.baseBg = buildGradientFromStops(this.rangeValues, 'linear', 90);\n this.resultGradient = buildGradientFromStops(\n this.rangeValues,\n this.type,\n this.rotation,\n this.gradientOptions,\n );\n this.emitChange();\n }\n\n updateGradientType() {\n this.gradientOptions = '';\n this.generateGradient();\n }\n\n updateRotation() {\n this.gradientOptions = '';\n this.generateGradient();\n }\n\n updateRangeSlider() {\n if (this.rangeSlider) {\n this.rangeSlider.writeValue(this.rangeValues);\n }\n }\n emitChange() {\n this._onChange(this.resultGradient);\n this.change.emit(this.resultGradient);\n }\n\n setDefaultGradients() {\n this.defaultGradients = [];\n\n for (let item of DefaultGradients) {\n this.defaultGradients.push(buildGradientFromStops(item, 'linear', 90));\n }\n }\n\n onSelectDefault(item: string, i: number) {\n // console.log('onSelectDefault', item, i);\n this.writeValue(item);\n this.emitChange();\n }\n}\n","<div class=\"ngx-input-gradient-picker\" (click)=\"stopPropagation($event)\">\n <div class=\"ngx-color-preview\" [ngStyle]=\"{ '--ngx-selected-gradient': resultGradient }\"></div>\n <div class=\"ngx-c-inner\">\n <range-slider\n [(ngModel)]=\"rangeValues\"\n name=\"rangeCalues\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [addNewRangeOnClick]=\"true\"\n [background]=\"baseBg\"\n [(selectedIndex)]=\"selectedIndex\"\n (change)=\"generateGradient()\"\n #rangeSlider></range-slider>\n\n <div class=\"text-end\">\n <button class=\"remove-btn\" type=\"button\" (click)=\"remove()\">remove</button>\n </div>\n @if (rangeValues[selectedIndex]) {\n <div class=\"ngx-row\">\n <div class=\"ngx-col-6\">\n <div class=\"label\">Color</div>\n <div class=\"input-color\">\n <input\n type=\"text\"\n [(ngModel)]=\"rangeValues[selectedIndex].color\"\n name=\"color\"\n #inputColor\n (ngModelChange)=\"generateGradient(); updateRangeSlider()\" />\n <span\n #ngxGradColor\n class=\"color\"\n [style.backgroundColor]=\"rangeValues[selectedIndex].color\"\n [ngxInputColor]=\"inputColor\"\n [ngModel]=\"rangeValues[selectedIndex].color\"\n [simpleMode]=\"true\"\n (change)=\"generateGradient($event)\"></span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Position</div>\n <input\n type=\"number\"\n [(ngModel)]=\"rangeValues[selectedIndex].value\"\n min=\"0\"\n max=\"100\"\n name=\"posiition\"\n (change)=\"generateGradient(); updateRangeSlider()\" />\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Rotation</div>\n <div class=\"ngx-input-group\">\n <input\n type=\"text\"\n [(ngModel)]=\"rotation\"\n ngxInputAngle\n (change)=\"updateRotation()\"\n name=\"rotation\"\n [disabled]=\"type.endsWith('radial')\" />\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n <div class=\"ngx-col-6\">\n <div class=\"label\">Type</div>\n <div class=\"ngx-input-group\">\n <select [(ngModel)]=\"type\" (change)=\"updateGradientType()\" name=\"type\">\n <option value=\"linear\">linear</option>\n <option value=\"radial\">radial</option>\n <option value=\"conic\">conic</option>\n <option value=\"repeating-linear\">repeating linear</option>\n <option value=\"repeating-radial\">repeating radial</option>\n <option value=\"repeating-conic\">repeating conic</option>\n </select>\n <span class=\"ngx-input-prefix\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\">\n <path\n d=\"M360.5 217.5l-152 143.1C203.9 365.8 197.9 368 192 368s-11.88-2.188-16.5-6.562L23.5 217.5C13.87 208.3 13.47 193.1 22.56 183.5C31.69 173.8 46.94 173.5 56.5 182.6L192 310.9l135.5-128.4c9.562-9.094 24.75-8.75 33.94 .9375C370.5 193.1 370.1 208.3 360.5 217.5z\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n }\n\n @if (showSamples()) {\n <div class=\"default-list\">\n @for (item of defaultGradients; track $index; let i = $index) {\n <span [style.background]=\"item\" (click)=\"onSelectDefault(item, i)\"></span>\n }\n </div>\n }\n </div>\n</div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n Renderer2,\n ViewContainerRef,\n forwardRef,\n input,\n output,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NgxInputGradientComponent } from '../components/input-gradient.component';\nimport { isValidGradient } from '../utils/build-gradient';\nimport { OverlayRef, OverlayService } from 'ngx-kit/core';\n\n@Directive({\n selector: '[ngxInputGradient]',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxInputGradient), multi: true },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: NgxInputGradient,\n },\n ],\n})\nexport class NgxInputGradient implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\n readonly setInputBackground = input(true);\n private _targetInput?: HTMLInputElement;\n\n readonly showSamples = input(true);\n @Input('ngxInputColor') set ngxInputColor(\n el: HTMLInputElement | ElementRef<HTMLInputElement> | null | undefined | '',\n ) {\n this.isHostInput = false;\n if (el instanceof ElementRef) {\n this._targetInput = el.nativeElement;\n } else if (el instanceof HTMLInputElement) {\n this.isHostInput = true;\n this._targetInput = el;\n } else {\n this._targetInput = undefined;\n }\n\n if (this._targetInput) {\n this._targetInput.removeEventListener('input', this.boundInputHandler);\n this._targetInput.addEventListener('input', this.boundInputHandler);\n }\n }\n protected readonly change = output<string>();\n\n private boundInputHandler = (e: Event) => {\n this.writeValue((e.target as HTMLInputElement).value);\n };\n private isHostInput = false;\n private pickerRef?: OverlayRef<NgxInputGradientComponent>;\n\n value = '';\n\n protected _onChange = (value: string) => {};\n protected _onTouched = () => {};\n _onValidateChange = () => {};\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private overlayService: OverlayService,\n ) {}\n\n @HostListener('click', ['$event']) onClick(ev: Event) {\n ev.stopPropagation();\n ev.preventDefault();\n this.toggle();\n }\n ngAfterViewInit(): void {\n if (this._targetInput && this._targetInput.tagName.toLowerCase() === 'input') {\n this.writeValue(this._targetInput.value);\n }\n }\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n if (disabled) {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', disabled);\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n registerOnValidatorChange(fn: () => void): void {\n this._onValidateChange = fn;\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return null;\n }\n\n ngOnDestroy(): void {\n this.destroyPicker();\n }\n\n writeValue(val: any): void {\n this.value = val;\n if (val && isValidGradient(val)) {\n // const parsed = parseGradient(val);\n if (this.setInputBackground()) {\n this.renderer.setStyle(this.el.nativeElement, 'background', val);\n }\n if (this.isHostInput) {\n this.el.nativeElement.value = this.value;\n }\n this._onValidateChange();\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'background', '');\n }\n }\n\n toggle() {\n if (this.pickerRef) {\n this.destroyPicker();\n return;\n }\n\n this.pickerRef = this.overlayService.open({\n anchor: this.el.nativeElement,\n component: NgxInputGradientComponent,\n viewContainerRef: this.viewContainerRef,\n alignment: 'start',\n placement: 'auto',\n configure: (instance, ref) => {\n instance.writeValue(this.value);\n ref.componentRef?.setInput('showSamples', this.showSamples());\n instance.change.subscribe((c: string) => {\n this.value = c;\n this.emitChange(c);\n });\n\n // instance.closed.subscribe(() => ref.close());\n },\n onClosed: () => {\n this.pickerRef = undefined;\n },\n });\n }\n\n destroyPicker() {\n if (this.pickerRef) {\n this.pickerRef.close();\n this.pickerRef = undefined;\n }\n }\n\n private async emitChange(c: string) {\n if (this.setInputBackground()) {\n this.renderer.setStyle(this.el.nativeElement, 'background', c);\n }\n\n // اگر روی input باشیم، مقدار رو در input قرار بده\n if (this.isHostInput) {\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = c;\n }\n\n // اگر targetInput وجود داره، در اونم مقدار ست کن\n if (this._targetInput instanceof HTMLInputElement) {\n this._targetInput.value = c;\n const event = new Event('input', { bubbles: true });\n this._targetInput.dispatchEvent(event);\n }\n\n this._onChange(c);\n this.change.emit(c);\n this._onTouched();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -112,7 +112,7 @@ class NgxNotificationComponent {
112
112
  this._remaining = Math.max(0, this._endTs - performance.now());
113
113
  const bar = this.bar()?.nativeElement;
114
114
  if (bar) {
115
- const matrix = getComputedStyle(bar).transform;
115
+ const matrix = getComputedStyle?.(bar)?.transform;
116
116
  bar.style.transition = 'none';
117
117
  bar.style.transform = matrix;
118
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-notify.mjs","sources":["../../../projects/libs/notify/models/notify-config.ts","../../../projects/libs/notify/notify-facade.ts","../../../projects/libs/notify/components/notification.component.ts","../../../projects/libs/notify/components/notification.component.html","../../../projects/libs/notify/services/notify.service.ts","../../../projects/libs/notify/notify-provider.ts","../../../projects/libs/notify/ngx-kit-notify.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { NgxNotifyOptions } from './notify-options';\nimport { NgxNotifyService } from '../services/notify.service';\n\nexport const NGX_NOTIFY_CONFIG = new InjectionToken<NgxNotifyOptions>('NgxNotifyOption');\nexport const NGX_NOTIFY_API = new InjectionToken<NgxNotifyService>('NgxNotifyService');\n\nexport const NGX_NOTIFY_DEFAULTS: Required<NgxNotifyOptions> = {\n timeout: 3000,\n position: 'top-center',\n maxVisible: 10,\n allowHtml: false,\n pauseOnHover: true,\n dismissible: true,\n closeOnTap: true,\n containerClass: 'ngx-bg-notify',\n notificationClass: 'ngx-notify',\n};\n","import { Injector } from '@angular/core';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { NGX_NOTIFY_API } from './models/notify-config';\nimport { NgxNotifyPayload } from './models/notify.model';\n\n/**\n * Static facade so call sites can use: Notify.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class Notify {\n static injector: Injector;\n\n static show(\n type: 'info' | 'success' | 'warning' | 'error' = 'info',\n message: string,\n description?: string,\n options?: NgxNotifyOptions,\n ): NgxNotifyPayload {\n if (!Notify.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideNotify()\" in root provider.',\n );\n }\n return Notify.injector.get(NGX_NOTIFY_API).show(message, description, type, options);\n }\n\n static info(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('info', message, description, options);\n }\n\n static success(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('success', message, description, options);\n }\n static warning(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('warning', message, description, options);\n }\n static error(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('error', message, description, options);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n ChangeDetectorRef,\n DOCUMENT,\n inject,\n ElementRef,\n afterNextRender,\n signal,\n output,\n input,\n effect,\n viewChild,\n} from '@angular/core';\nimport { INotifyEnd, NgxNotifyPayload } from '../models/notify.model';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ngx-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n imports: [CommonModule],\n})\nexport class NgxNotificationComponent implements OnInit, OnDestroy {\n payload = input.required<NgxNotifyPayload>();\n @Input() containerClass = 'ngx-notify';\n\n bar = viewChild<ElementRef<HTMLElement>>('bar');\n onClose = output<INotifyEnd>();\n onFinish = output<INotifyEnd>();\n\n private _rafId = 0;\n private _duration = 0;\n private _remaining = 0;\n private _endTs = 0;\n private _paused = false;\n\n safeMessage: SafeHtml | string = '';\n safeDescription: SafeHtml | string = '';\n showClass = signal('');\n protected doc = inject(DOCUMENT);\n protected el = inject(ElementRef);\n protected sanitizer = inject(DomSanitizer);\n protected chdr = inject(ChangeDetectorRef);\n constructor() {\n afterNextRender(() => {\n this.showClass.set('ngx-show');\n this.chdr.detectChanges();\n });\n effect(() => {\n const payload = this.payload();\n\n // decide how to render message\n if (payload.options.allowHtml) {\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(payload.message);\n this.safeDescription = this.sanitizer.bypassSecurityTrustHtml(payload.description ?? '');\n } else {\n this.safeMessage = this.escapeHtml(payload.message);\n this.safeDescription = this.escapeHtml(payload.description);\n }\n });\n effect(() => {\n const timeout = this.payload().options.timeout ?? 0;\n this.startTimer(timeout);\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n // Public API to start timer (used by service when created)\n startTimer(ms: number) {\n this.clearTimer();\n\n if (!this._paused) {\n this._duration = ms;\n }\n this._remaining = ms;\n this._endTs = performance.now() + ms;\n\n const bar = this.bar()?.nativeElement;\n if (bar) {\n bar.style.transition = `transform ${ms}ms linear`;\n bar.style.transform = 'scaleX(1)';\n }\n\n this.animateProgress();\n }\n pauseTimer() {\n this._paused = true;\n cancelAnimationFrame(this._rafId);\n this._remaining = Math.max(0, this._endTs - performance.now());\n const bar = this.bar()?.nativeElement;\n if (bar) {\n const matrix = getComputedStyle(bar).transform;\n bar.style.transition = 'none';\n bar.style.transform = matrix;\n }\n }\n\n resumeTimer() {\n if (!this._paused || this._remaining <= 0) {\n return;\n }\n\n this._paused = false;\n\n this.startTimer(this._remaining);\n }\n\n private clearTimer() {\n cancelAnimationFrame(this._rafId);\n this._rafId = 0;\n }\n\n private animateProgress() {\n const update = () => {\n const remaining = Math.max(0, this._endTs - performance.now());\n if (remaining <= 0) {\n this.onFinish.emit({\n id: this.payload().id,\n el: this.el.nativeElement,\n });\n return;\n }\n\n this._rafId = requestAnimationFrame(update);\n };\n\n this._rafId = requestAnimationFrame(update);\n }\n\n close(ev?: Event) {\n if (ev) ev.stopPropagation();\n this.onClose.emit({ id: this.payload().id, el: this.el.nativeElement });\n }\n\n onMouseEnter() {\n if (this.payload().options.pauseOnHover) this.pauseTimer();\n }\n onMouseLeave() {\n if (this.payload().options.pauseOnHover) this.resumeTimer();\n }\n onTap() {\n if (this.payload().options.closeOnTap) this.close();\n }\n\n escapeHtml(input?: string) {\n if (!input) return '';\n const div = this.doc.createElement('div');\n div.appendChild(this.doc.createTextNode(input));\n return div.textContent;\n }\n}\n","<div\n class=\"{{ containerClass }} {{ containerClass }}-{{ payload().type }} {{ showClass() }}\"\n role=\"status\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onTap()\"\n [attr.aria-live]=\"\n payload().type === 'error' || payload().type === 'warning' ? 'assertive' : 'polite'\n \"\n [attr.data-id]=\"payload().id\">\n <div class=\"ngx-notify-icon-container\">\n <div class=\"ngx-notify-icon\">\n @switch (payload().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M235.3 331.3C229.1 337.6 218.9 337.6 212.7 331.3L148.7 267.3C142.4 261.1 142.4 250.9 148.7 244.7C154.9 238.4 165.1 238.4 171.3 244.7L224 297.4L340.7 180.7C346.9 174.4 357.1 174.4 363.3 180.7C369.6 186.9 369.6 197.1 363.3 203.3L235.3 331.3zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 32C132.3 32 32 132.3 32 256C32 379.7 132.3 480 256 480C379.7 480 480 379.7 480 256C480 132.3 379.7 32 256 32z\" />\n </svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M180.7 180.7C186.9 174.4 197.1 174.4 203.3 180.7L256 233.4L308.7 180.7C314.9 174.4 325.1 174.4 331.3 180.7C337.6 186.9 337.6 197.1 331.3 203.3L278.6 255.1L331.3 308.7C337.6 314.9 337.6 325.1 331.3 331.3C325.1 337.6 314.9 337.6 308.7 331.3L256 278.6L203.3 331.3C197.1 337.6 186.9 337.6 180.7 331.3C174.4 325.1 174.4 314.9 180.7 308.7L233.4 255.1L180.7 203.3C174.4 197.1 174.4 186.9 180.7 180.7V180.7zM.0669 191.5C.0669 172.4 7.652 154.1 21.16 140.6L140.6 21.15C154.1 7.648 172.4 .0625 191.5 .0625H320.5C339.6 .0625 357.9 7.648 371.4 21.15L490.8 140.6C504.3 154.1 511.9 172.4 511.9 191.5V320.5C511.9 339.6 504.3 357.9 490.8 371.4L371.4 490.8C357.9 504.3 339.6 511.9 320.5 511.9H191.5C172.4 511.9 154.1 504.3 140.6 490.8L21.15 371.4C7.652 357.9 .0666 339.6 .0666 320.5L.0669 191.5zM43.78 163.2C36.28 170.7 32.07 180.9 32.07 191.5V320.5C32.07 331.1 36.28 341.3 43.78 348.8L163.2 468.2C170.7 475.7 180.9 479.9 191.5 479.9H320.5C331.1 479.9 341.3 475.7 348.8 468.2L468.2 348.8C475.7 341.3 479.9 331.1 479.9 320.5V191.5C479.9 180.9 475.7 170.7 468.2 163.2L348.8 43.78C341.3 36.28 331.1 32.06 320.5 32.06H191.5C180.9 32.06 170.7 36.28 163.2 43.78L43.78 163.2zM43.78 348.8L21.15 371.4z\" />\n </svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 360c-13.25 0-23.1 10.74-23.1 24c0 13.25 10.75 24 23.1 24c13.25 0 23.1-10.75 23.1-24C280 370.7 269.3 360 256 360zM256 320c8.843 0 15.1-7.156 15.1-16V160c0-8.844-7.155-16-15.1-16S240 151.2 240 160v144C240 312.8 247.2 320 256 320zM504.3 397.3L304.5 59.38C294.4 42.27 276.2 32.03 256 32C235.8 32 217.7 42.22 207.5 59.36l-199.9 338c-10.05 16.97-10.2 37.34-.4218 54.5C17.29 469.5 35.55 480 56.1 480h399.9c20.51 0 38.75-10.53 48.81-28.17C514.6 434.7 514.4 414.3 504.3 397.3zM476.1 435.1C472.7 443.5 464.8 448 455.1 448H56.1c-8.906 0-16.78-4.484-21.08-12c-4.078-7.156-4.015-15.3 .1562-22.36L235.1 75.66C239.4 68.36 247.2 64 256 64c0 0-.0156 0 0 0c8.765 .0156 16.56 4.359 20.86 11.64l199.9 338C480.1 420.7 481.1 428.8 476.1 435.1z\" />\n </svg>\n }\n @case ('info') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 480c-123.5 0-224-100.5-224-224s100.5-224 224-224s224 100.5 224 224S379.5 480 256 480zM256 184c13.25 0 24-10.74 24-24c0-13.25-10.75-24-24-24S232 146.7 232 160C232 173.3 242.7 184 256 184zM304 352h-32V240C272 231.2 264.8 224 256 224H224C215.2 224 208 231.2 208 240S215.2 256 224 256h16v96h-32C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384h96c8.836 0 16-7.164 16-16C320 359.2 312.8 352 304 352z\" />\n </svg>\n }\n }\n </div>\n </div>\n\n <div class=\"ngx-notify-content\">\n <div class=\"ngx-notify-title\" [innerHTML]=\"safeMessage\"></div>\n <div class=\"ngx-notify-description\" [innerHTML]=\"safeDescription\"></div>\n </div>\n\n @if (payload().options.dismissible) {\n <div class=\"ngx-notify-close-container\">\n <button class=\"ngx-notify-close\" (click)=\"close($event)\" aria-label=\"close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M315.3 411.3c-6.253 6.253-16.37 6.253-22.63 0L160 278.6l-132.7 132.7c-6.253 6.253-16.37 6.253-22.63 0c-6.253-6.253-6.253-16.37 0-22.63L137.4 256L4.69 123.3c-6.253-6.253-6.253-16.37 0-22.63c6.253-6.253 16.37-6.253 22.63 0L160 233.4l132.7-132.7c6.253-6.253 16.37-6.253 22.63 0c6.253 6.253 6.253 16.37 0 22.63L182.6 256l132.7 132.7C321.6 394.9 321.6 405.1 315.3 411.3z\" />\n </svg>\n </button>\n </div>\n }\n\n <div class=\"ngx-notify-progress\">\n <div class=\"progress-bar\" #bar></div>\n </div>\n</div>\n","import {\n Injectable,\n ComponentRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n EventEmitter,\n} from '@angular/core';\nimport { NgxNotifyOptions } from '../models/notify-options';\nimport { INotifyEnd, NgxNotifyPayload, NgxNotifyType } from '../models/notify.model';\nimport { WINDOW } from 'ngx-kit/core';\nimport { NGX_NOTIFY_CONFIG } from '../models/notify-config';\nimport { NgxNotificationComponent } from '../components/notification.component';\n\n// We'll include a tiny inline uuid fallback if uuid package is not available\nfunction makeId() {\n // simple random id\n return 'n_' + Math.random().toString(36).substr(2, 9);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxNotifyService {\n private queue: NgxNotifyPayload[] = [];\n private visible: { ref: ComponentRef<any>; payload: NgxNotifyPayload }[] = [];\n private container: HTMLElement | null = null;\n\n private envInjector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n private doc = inject(DOCUMENT);\n private win = inject(WINDOW);\n private defaultOptions = inject(NGX_NOTIFY_CONFIG);\n constructor() {}\n\n configureContainer(position: NgxNotifyOptions['position'], containerClass: string) {\n if (!this.container) {\n this.container = this.doc.createElement('div');\n this.doc.body.appendChild(this.container);\n }\n\n this.container.className = containerClass + ' ngx-notify-container ' + `ngx-pos-${position}`;\n this.container.style.position = 'fixed';\n this.container.style.zIndex = '99999';\n\n // center special\n if (position === 'center') {\n this.container.style.left = '50%';\n this.container.style.top = '50%';\n this.container.style.transform = 'translate(-50%,-50%)';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n this.container.style.alignItems = 'center';\n this.container.style.pointerEvents = 'none';\n } else {\n if (position?.includes('center')) {\n this.container.style.left = '50%';\n this.container.style.transform = 'translateX(-50%)';\n } else {\n this.container.style.transform = 'translateX(0)';\n }\n // corners\n if (position?.includes('top')) {\n this.container.style.top = '20px';\n } else {\n this.container.style.bottom = '20px';\n }\n if (position?.includes('left')) {\n this.container.style.left = '20px';\n this.container.style.right = 'auto';\n }\n if (position?.includes('right')) {\n this.container.style.right = '20px';\n this.container.style.left = 'auto';\n }\n // else container.style.right = '20px';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n if (position?.includes('bottom')) this.container.style.flexDirection = 'column-reverse';\n this.container.style.pointerEvents = 'none';\n }\n }\n\n show(\n message: string,\n description?: string,\n type: NgxNotifyType = 'info',\n options?: NgxNotifyOptions,\n ) {\n const opts: NgxNotifyOptions = { ...this.defaultOptions, ...(options || {}) };\n const id =\n typeof (this.win as any).crypto?.randomUUID === 'function'\n ? (this.win as any).crypto.randomUUID()\n : makeId();\n\n const payload: NgxNotifyPayload = {\n id,\n message,\n description,\n type,\n options: opts,\n onClose: new EventEmitter(),\n onFinish: new EventEmitter(),\n close: () => this.close(id),\n };\n\n this.configureContainer(opts.position!, opts.containerClass!);\n\n // queue or show immediately\n if (this.visible.length >= opts.maxVisible!) {\n this.queue.push(payload);\n } else {\n this._createAndShow(payload);\n }\n return payload;\n }\n\n private _createAndShow(payload: NgxNotifyPayload) {\n if (!this.container)\n this.configureContainer(payload.options.position!, payload.options.containerClass!);\n const host = document.createElement('div');\n this.container!.appendChild(host);\n\n const compRef = createComponent(NgxNotificationComponent, {\n environmentInjector: this.envInjector,\n hostElement: host,\n });\n\n compRef.setInput('payload', payload);\n compRef.instance.onClose.subscribe((d) => {\n this.removeEl(d);\n payload.onClose.emit(d);\n });\n compRef.instance.onFinish.subscribe((d) => {\n this.removeEl(d);\n payload.onFinish.emit(d);\n payload.onClose.emit(d);\n });\n\n // Registers the component’s view so it participates in change detection cycle.\n this.appRef.attachView(compRef.hostView);\n // store visible\n this.visible.push({ ref: compRef, payload });\n }\n\n private close(id: string) {\n const el = this.visible.find((x) => x.payload.id == id)?.ref?.instance?.el;\n if (el) {\n this.removeEl({ id, el });\n }\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== id);\n }\n private removeNode(node: HTMLElement, id: string) {\n node.style.opacity = '0';\n node.style.transform = 'translateY(-30px)';\n node.style.transition = 'all 300ms';\n setTimeout(() => {\n const item = this.visible.find((x) => x.payload.id === id);\n if (item) {\n this.appRef.detachView(item.ref.hostView);\n item.ref.destroy();\n }\n this.visible = this.visible.filter((v) => v.payload.id !== id);\n // show next in queue\n this._showNextIfPossible();\n }, 300);\n }\n\n private removeEl(d: INotifyEnd) {\n if (d.el) this.removeNode(d.el, d.id);\n else {\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== d.id);\n }\n }\n\n private _showNextIfPossible() {\n if (!this.queue.length) return;\n const next = this.queue.shift()!;\n // ensure we don't exceed maxVisible\n if (this.visible.length < next.options.maxVisible!) {\n this._createAndShow(next);\n } else {\n // push back\n this.queue.unshift(next);\n }\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { NGX_NOTIFY_API, NGX_NOTIFY_CONFIG, NGX_NOTIFY_DEFAULTS } from './models/notify-config';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { Notify as NotifyFacade } from './notify-facade';\nimport { NgxNotifyService } from './services/notify.service';\nexport function provideNotify(options?: NgxNotifyOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: NGX_NOTIFY_CONFIG,\n useValue: { ...NGX_NOTIFY_DEFAULTS, ...(options || {}) },\n },\n {\n provide: NGX_NOTIFY_API,\n useExisting: NgxNotifyService,\n },\n provideEnvironmentInitializer(() => {\n NotifyFacade.injector = inject(Injector);\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NotifyFacade"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-kit-notify.mjs","sources":["../../../projects/libs/notify/models/notify-config.ts","../../../projects/libs/notify/notify-facade.ts","../../../projects/libs/notify/components/notification.component.ts","../../../projects/libs/notify/components/notification.component.html","../../../projects/libs/notify/services/notify.service.ts","../../../projects/libs/notify/notify-provider.ts","../../../projects/libs/notify/ngx-kit-notify.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { NgxNotifyOptions } from './notify-options';\nimport { NgxNotifyService } from '../services/notify.service';\n\nexport const NGX_NOTIFY_CONFIG = new InjectionToken<NgxNotifyOptions>('NgxNotifyOption');\nexport const NGX_NOTIFY_API = new InjectionToken<NgxNotifyService>('NgxNotifyService');\n\nexport const NGX_NOTIFY_DEFAULTS: Required<NgxNotifyOptions> = {\n timeout: 3000,\n position: 'top-center',\n maxVisible: 10,\n allowHtml: false,\n pauseOnHover: true,\n dismissible: true,\n closeOnTap: true,\n containerClass: 'ngx-bg-notify',\n notificationClass: 'ngx-notify',\n};\n","import { Injector } from '@angular/core';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { NGX_NOTIFY_API } from './models/notify-config';\nimport { NgxNotifyPayload } from './models/notify.model';\n\n/**\n * Static facade so call sites can use: Notify.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class Notify {\n static injector: Injector;\n\n static show(\n type: 'info' | 'success' | 'warning' | 'error' = 'info',\n message: string,\n description?: string,\n options?: NgxNotifyOptions,\n ): NgxNotifyPayload {\n if (!Notify.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideNotify()\" in root provider.',\n );\n }\n return Notify.injector.get(NGX_NOTIFY_API).show(message, description, type, options);\n }\n\n static info(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('info', message, description, options);\n }\n\n static success(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('success', message, description, options);\n }\n static warning(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('warning', message, description, options);\n }\n static error(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('error', message, description, options);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n ChangeDetectorRef,\n DOCUMENT,\n inject,\n ElementRef,\n afterNextRender,\n signal,\n output,\n input,\n effect,\n viewChild,\n} from '@angular/core';\nimport { INotifyEnd, NgxNotifyPayload } from '../models/notify.model';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ngx-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n imports: [CommonModule],\n})\nexport class NgxNotificationComponent implements OnInit, OnDestroy {\n payload = input.required<NgxNotifyPayload>();\n @Input() containerClass = 'ngx-notify';\n\n bar = viewChild<ElementRef<HTMLElement>>('bar');\n onClose = output<INotifyEnd>();\n onFinish = output<INotifyEnd>();\n\n private _rafId = 0;\n private _duration = 0;\n private _remaining = 0;\n private _endTs = 0;\n private _paused = false;\n\n safeMessage: SafeHtml | string = '';\n safeDescription: SafeHtml | string = '';\n showClass = signal('');\n protected doc = inject(DOCUMENT);\n protected el = inject(ElementRef);\n protected sanitizer = inject(DomSanitizer);\n protected chdr = inject(ChangeDetectorRef);\n constructor() {\n afterNextRender(() => {\n this.showClass.set('ngx-show');\n this.chdr.detectChanges();\n });\n effect(() => {\n const payload = this.payload();\n\n // decide how to render message\n if (payload.options.allowHtml) {\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(payload.message);\n this.safeDescription = this.sanitizer.bypassSecurityTrustHtml(payload.description ?? '');\n } else {\n this.safeMessage = this.escapeHtml(payload.message);\n this.safeDescription = this.escapeHtml(payload.description);\n }\n });\n effect(() => {\n const timeout = this.payload().options.timeout ?? 0;\n this.startTimer(timeout);\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n // Public API to start timer (used by service when created)\n startTimer(ms: number) {\n this.clearTimer();\n\n if (!this._paused) {\n this._duration = ms;\n }\n this._remaining = ms;\n this._endTs = performance.now() + ms;\n\n const bar = this.bar()?.nativeElement;\n if (bar) {\n bar.style.transition = `transform ${ms}ms linear`;\n bar.style.transform = 'scaleX(1)';\n }\n\n this.animateProgress();\n }\n pauseTimer() {\n this._paused = true;\n cancelAnimationFrame(this._rafId);\n this._remaining = Math.max(0, this._endTs - performance.now());\n const bar = this.bar()?.nativeElement;\n if (bar) {\n const matrix = getComputedStyle?.(bar)?.transform;\n bar.style.transition = 'none';\n bar.style.transform = matrix;\n }\n }\n\n resumeTimer() {\n if (!this._paused || this._remaining <= 0) {\n return;\n }\n\n this._paused = false;\n\n this.startTimer(this._remaining);\n }\n\n private clearTimer() {\n cancelAnimationFrame(this._rafId);\n this._rafId = 0;\n }\n\n private animateProgress() {\n const update = () => {\n const remaining = Math.max(0, this._endTs - performance.now());\n if (remaining <= 0) {\n this.onFinish.emit({\n id: this.payload().id,\n el: this.el.nativeElement,\n });\n return;\n }\n\n this._rafId = requestAnimationFrame(update);\n };\n\n this._rafId = requestAnimationFrame(update);\n }\n\n close(ev?: Event) {\n if (ev) ev.stopPropagation();\n this.onClose.emit({ id: this.payload().id, el: this.el.nativeElement });\n }\n\n onMouseEnter() {\n if (this.payload().options.pauseOnHover) this.pauseTimer();\n }\n onMouseLeave() {\n if (this.payload().options.pauseOnHover) this.resumeTimer();\n }\n onTap() {\n if (this.payload().options.closeOnTap) this.close();\n }\n\n escapeHtml(input?: string) {\n if (!input) return '';\n const div = this.doc.createElement('div');\n div.appendChild(this.doc.createTextNode(input));\n return div.textContent;\n }\n}\n","<div\n class=\"{{ containerClass }} {{ containerClass }}-{{ payload().type }} {{ showClass() }}\"\n role=\"status\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onTap()\"\n [attr.aria-live]=\"\n payload().type === 'error' || payload().type === 'warning' ? 'assertive' : 'polite'\n \"\n [attr.data-id]=\"payload().id\">\n <div class=\"ngx-notify-icon-container\">\n <div class=\"ngx-notify-icon\">\n @switch (payload().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M235.3 331.3C229.1 337.6 218.9 337.6 212.7 331.3L148.7 267.3C142.4 261.1 142.4 250.9 148.7 244.7C154.9 238.4 165.1 238.4 171.3 244.7L224 297.4L340.7 180.7C346.9 174.4 357.1 174.4 363.3 180.7C369.6 186.9 369.6 197.1 363.3 203.3L235.3 331.3zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 32C132.3 32 32 132.3 32 256C32 379.7 132.3 480 256 480C379.7 480 480 379.7 480 256C480 132.3 379.7 32 256 32z\" />\n </svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M180.7 180.7C186.9 174.4 197.1 174.4 203.3 180.7L256 233.4L308.7 180.7C314.9 174.4 325.1 174.4 331.3 180.7C337.6 186.9 337.6 197.1 331.3 203.3L278.6 255.1L331.3 308.7C337.6 314.9 337.6 325.1 331.3 331.3C325.1 337.6 314.9 337.6 308.7 331.3L256 278.6L203.3 331.3C197.1 337.6 186.9 337.6 180.7 331.3C174.4 325.1 174.4 314.9 180.7 308.7L233.4 255.1L180.7 203.3C174.4 197.1 174.4 186.9 180.7 180.7V180.7zM.0669 191.5C.0669 172.4 7.652 154.1 21.16 140.6L140.6 21.15C154.1 7.648 172.4 .0625 191.5 .0625H320.5C339.6 .0625 357.9 7.648 371.4 21.15L490.8 140.6C504.3 154.1 511.9 172.4 511.9 191.5V320.5C511.9 339.6 504.3 357.9 490.8 371.4L371.4 490.8C357.9 504.3 339.6 511.9 320.5 511.9H191.5C172.4 511.9 154.1 504.3 140.6 490.8L21.15 371.4C7.652 357.9 .0666 339.6 .0666 320.5L.0669 191.5zM43.78 163.2C36.28 170.7 32.07 180.9 32.07 191.5V320.5C32.07 331.1 36.28 341.3 43.78 348.8L163.2 468.2C170.7 475.7 180.9 479.9 191.5 479.9H320.5C331.1 479.9 341.3 475.7 348.8 468.2L468.2 348.8C475.7 341.3 479.9 331.1 479.9 320.5V191.5C479.9 180.9 475.7 170.7 468.2 163.2L348.8 43.78C341.3 36.28 331.1 32.06 320.5 32.06H191.5C180.9 32.06 170.7 36.28 163.2 43.78L43.78 163.2zM43.78 348.8L21.15 371.4z\" />\n </svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 360c-13.25 0-23.1 10.74-23.1 24c0 13.25 10.75 24 23.1 24c13.25 0 23.1-10.75 23.1-24C280 370.7 269.3 360 256 360zM256 320c8.843 0 15.1-7.156 15.1-16V160c0-8.844-7.155-16-15.1-16S240 151.2 240 160v144C240 312.8 247.2 320 256 320zM504.3 397.3L304.5 59.38C294.4 42.27 276.2 32.03 256 32C235.8 32 217.7 42.22 207.5 59.36l-199.9 338c-10.05 16.97-10.2 37.34-.4218 54.5C17.29 469.5 35.55 480 56.1 480h399.9c20.51 0 38.75-10.53 48.81-28.17C514.6 434.7 514.4 414.3 504.3 397.3zM476.1 435.1C472.7 443.5 464.8 448 455.1 448H56.1c-8.906 0-16.78-4.484-21.08-12c-4.078-7.156-4.015-15.3 .1562-22.36L235.1 75.66C239.4 68.36 247.2 64 256 64c0 0-.0156 0 0 0c8.765 .0156 16.56 4.359 20.86 11.64l199.9 338C480.1 420.7 481.1 428.8 476.1 435.1z\" />\n </svg>\n }\n @case ('info') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 480c-123.5 0-224-100.5-224-224s100.5-224 224-224s224 100.5 224 224S379.5 480 256 480zM256 184c13.25 0 24-10.74 24-24c0-13.25-10.75-24-24-24S232 146.7 232 160C232 173.3 242.7 184 256 184zM304 352h-32V240C272 231.2 264.8 224 256 224H224C215.2 224 208 231.2 208 240S215.2 256 224 256h16v96h-32C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384h96c8.836 0 16-7.164 16-16C320 359.2 312.8 352 304 352z\" />\n </svg>\n }\n }\n </div>\n </div>\n\n <div class=\"ngx-notify-content\">\n <div class=\"ngx-notify-title\" [innerHTML]=\"safeMessage\"></div>\n <div class=\"ngx-notify-description\" [innerHTML]=\"safeDescription\"></div>\n </div>\n\n @if (payload().options.dismissible) {\n <div class=\"ngx-notify-close-container\">\n <button class=\"ngx-notify-close\" (click)=\"close($event)\" aria-label=\"close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M315.3 411.3c-6.253 6.253-16.37 6.253-22.63 0L160 278.6l-132.7 132.7c-6.253 6.253-16.37 6.253-22.63 0c-6.253-6.253-6.253-16.37 0-22.63L137.4 256L4.69 123.3c-6.253-6.253-6.253-16.37 0-22.63c6.253-6.253 16.37-6.253 22.63 0L160 233.4l132.7-132.7c6.253-6.253 16.37-6.253 22.63 0c6.253 6.253 6.253 16.37 0 22.63L182.6 256l132.7 132.7C321.6 394.9 321.6 405.1 315.3 411.3z\" />\n </svg>\n </button>\n </div>\n }\n\n <div class=\"ngx-notify-progress\">\n <div class=\"progress-bar\" #bar></div>\n </div>\n</div>\n","import {\n Injectable,\n ComponentRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n EventEmitter,\n} from '@angular/core';\nimport { NgxNotifyOptions } from '../models/notify-options';\nimport { INotifyEnd, NgxNotifyPayload, NgxNotifyType } from '../models/notify.model';\nimport { WINDOW } from 'ngx-kit/core';\nimport { NGX_NOTIFY_CONFIG } from '../models/notify-config';\nimport { NgxNotificationComponent } from '../components/notification.component';\n\n// We'll include a tiny inline uuid fallback if uuid package is not available\nfunction makeId() {\n // simple random id\n return 'n_' + Math.random().toString(36).substr(2, 9);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxNotifyService {\n private queue: NgxNotifyPayload[] = [];\n private visible: { ref: ComponentRef<any>; payload: NgxNotifyPayload }[] = [];\n private container: HTMLElement | null = null;\n\n private envInjector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n private doc = inject(DOCUMENT);\n private win = inject(WINDOW);\n private defaultOptions = inject(NGX_NOTIFY_CONFIG);\n constructor() {}\n\n configureContainer(position: NgxNotifyOptions['position'], containerClass: string) {\n if (!this.container) {\n this.container = this.doc.createElement('div');\n this.doc.body.appendChild(this.container);\n }\n\n this.container.className = containerClass + ' ngx-notify-container ' + `ngx-pos-${position}`;\n this.container.style.position = 'fixed';\n this.container.style.zIndex = '99999';\n\n // center special\n if (position === 'center') {\n this.container.style.left = '50%';\n this.container.style.top = '50%';\n this.container.style.transform = 'translate(-50%,-50%)';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n this.container.style.alignItems = 'center';\n this.container.style.pointerEvents = 'none';\n } else {\n if (position?.includes('center')) {\n this.container.style.left = '50%';\n this.container.style.transform = 'translateX(-50%)';\n } else {\n this.container.style.transform = 'translateX(0)';\n }\n // corners\n if (position?.includes('top')) {\n this.container.style.top = '20px';\n } else {\n this.container.style.bottom = '20px';\n }\n if (position?.includes('left')) {\n this.container.style.left = '20px';\n this.container.style.right = 'auto';\n }\n if (position?.includes('right')) {\n this.container.style.right = '20px';\n this.container.style.left = 'auto';\n }\n // else container.style.right = '20px';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n if (position?.includes('bottom')) this.container.style.flexDirection = 'column-reverse';\n this.container.style.pointerEvents = 'none';\n }\n }\n\n show(\n message: string,\n description?: string,\n type: NgxNotifyType = 'info',\n options?: NgxNotifyOptions,\n ) {\n const opts: NgxNotifyOptions = { ...this.defaultOptions, ...(options || {}) };\n const id =\n typeof (this.win as any).crypto?.randomUUID === 'function'\n ? (this.win as any).crypto.randomUUID()\n : makeId();\n\n const payload: NgxNotifyPayload = {\n id,\n message,\n description,\n type,\n options: opts,\n onClose: new EventEmitter(),\n onFinish: new EventEmitter(),\n close: () => this.close(id),\n };\n\n this.configureContainer(opts.position!, opts.containerClass!);\n\n // queue or show immediately\n if (this.visible.length >= opts.maxVisible!) {\n this.queue.push(payload);\n } else {\n this._createAndShow(payload);\n }\n return payload;\n }\n\n private _createAndShow(payload: NgxNotifyPayload) {\n if (!this.container)\n this.configureContainer(payload.options.position!, payload.options.containerClass!);\n const host = document.createElement('div');\n this.container!.appendChild(host);\n\n const compRef = createComponent(NgxNotificationComponent, {\n environmentInjector: this.envInjector,\n hostElement: host,\n });\n\n compRef.setInput('payload', payload);\n compRef.instance.onClose.subscribe((d) => {\n this.removeEl(d);\n payload.onClose.emit(d);\n });\n compRef.instance.onFinish.subscribe((d) => {\n this.removeEl(d);\n payload.onFinish.emit(d);\n payload.onClose.emit(d);\n });\n\n // Registers the component’s view so it participates in change detection cycle.\n this.appRef.attachView(compRef.hostView);\n // store visible\n this.visible.push({ ref: compRef, payload });\n }\n\n private close(id: string) {\n const el = this.visible.find((x) => x.payload.id == id)?.ref?.instance?.el;\n if (el) {\n this.removeEl({ id, el });\n }\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== id);\n }\n private removeNode(node: HTMLElement, id: string) {\n node.style.opacity = '0';\n node.style.transform = 'translateY(-30px)';\n node.style.transition = 'all 300ms';\n setTimeout(() => {\n const item = this.visible.find((x) => x.payload.id === id);\n if (item) {\n this.appRef.detachView(item.ref.hostView);\n item.ref.destroy();\n }\n this.visible = this.visible.filter((v) => v.payload.id !== id);\n // show next in queue\n this._showNextIfPossible();\n }, 300);\n }\n\n private removeEl(d: INotifyEnd) {\n if (d.el) this.removeNode(d.el, d.id);\n else {\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== d.id);\n }\n }\n\n private _showNextIfPossible() {\n if (!this.queue.length) return;\n const next = this.queue.shift()!;\n // ensure we don't exceed maxVisible\n if (this.visible.length < next.options.maxVisible!) {\n this._createAndShow(next);\n } else {\n // push back\n this.queue.unshift(next);\n }\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { NGX_NOTIFY_API, NGX_NOTIFY_CONFIG, NGX_NOTIFY_DEFAULTS } from './models/notify-config';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { Notify as NotifyFacade } from './notify-facade';\nimport { NgxNotifyService } from './services/notify.service';\nexport function provideNotify(options?: NgxNotifyOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: NGX_NOTIFY_CONFIG,\n useValue: { ...NGX_NOTIFY_DEFAULTS, ...(options || {}) },\n },\n {\n provide: NGX_NOTIFY_API,\n useExisting: NgxNotifyService,\n },\n provideEnvironmentInitializer(() => {\n NotifyFacade.injector = inject(Injector);\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NotifyFacade"],"mappings":"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"}
@@ -212,7 +212,7 @@ class NgxTooltip {
212
212
  if (!this.tooltip) {
213
213
  return;
214
214
  }
215
- const direction = getComputedStyle(this.element).direction;
215
+ const direction = getComputedStyle?.(this.element)?.direction;
216
216
  this.tooltip.style.direction = direction;
217
217
  }
218
218
  schedulePositionUpdate() {