@stemy/ngx-utils 19.7.15 → 19.7.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/stemy-ngx-utils.mjs +56 -6
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/common-types.d.ts +2 -1
- package/ngx-utils/components/interactive-canvas/interactive-item.component.d.ts +3 -1
- package/ngx-utils/utils/canvas-renderers/exclusions-renderer.d.ts +8 -0
- package/ngx-utils/utils/canvas-renderers/ruler-canvas.renderer.d.ts +8 -0
- package/package.json +1 -1
- package/public_api.d.ts +2 -0
|
@@ -1702,6 +1702,50 @@ class FileSystemEntry {
|
|
|
1702
1702
|
}
|
|
1703
1703
|
}
|
|
1704
1704
|
|
|
1705
|
+
class ExclusionsRenderer {
|
|
1706
|
+
constructor() {
|
|
1707
|
+
return Invokable.create(this);
|
|
1708
|
+
}
|
|
1709
|
+
async [Invokable.call](renderCanvas) {
|
|
1710
|
+
const ctx = renderCanvas.ctx;
|
|
1711
|
+
renderCanvas.excludedAreas?.forEach(shape => {
|
|
1712
|
+
ctx.save();
|
|
1713
|
+
ctx.translate(shape.x, shape.y);
|
|
1714
|
+
ctx.fillStyle = "rgba(128,128,128,0.55)";
|
|
1715
|
+
shape.draw(ctx);
|
|
1716
|
+
ctx.fill();
|
|
1717
|
+
ctx.restore();
|
|
1718
|
+
});
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1722
|
+
const rulerDash = [5, 5];
|
|
1723
|
+
const emptyDash$1 = [];
|
|
1724
|
+
class RulerCanvasRenderer {
|
|
1725
|
+
constructor() {
|
|
1726
|
+
return Invokable.create(this);
|
|
1727
|
+
}
|
|
1728
|
+
async [Invokable.call](renderCanvas) {
|
|
1729
|
+
const ctx = renderCanvas.ctx;
|
|
1730
|
+
ctx.lineWidth = 1;
|
|
1731
|
+
ctx.strokeStyle = "rgba(128, 128, 128, 0.4)";
|
|
1732
|
+
ctx.setLineDash(rulerDash);
|
|
1733
|
+
renderCanvas.cycles?.forEach(cycle => {
|
|
1734
|
+
ctx.beginPath();
|
|
1735
|
+
ctx.moveTo(0, cycle);
|
|
1736
|
+
ctx.lineTo(renderCanvas.canvasWidth, cycle);
|
|
1737
|
+
ctx.stroke();
|
|
1738
|
+
});
|
|
1739
|
+
const hw = renderCanvas.canvasWidth / 2;
|
|
1740
|
+
ctx.lineDashOffset = -renderCanvas.basePan;
|
|
1741
|
+
ctx.beginPath();
|
|
1742
|
+
ctx.moveTo(hw, 0);
|
|
1743
|
+
ctx.lineTo(hw, renderCanvas.canvasHeight);
|
|
1744
|
+
ctx.stroke();
|
|
1745
|
+
ctx.setLineDash(emptyDash$1);
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1705
1749
|
function dotProduct(a, b) {
|
|
1706
1750
|
return a.x * b.x + a.y * b.y;
|
|
1707
1751
|
}
|
|
@@ -6482,7 +6526,6 @@ class DropdownDirective {
|
|
|
6482
6526
|
return true;
|
|
6483
6527
|
}
|
|
6484
6528
|
hide() {
|
|
6485
|
-
console.log("hi");
|
|
6486
6529
|
if (!this.opened)
|
|
6487
6530
|
return true;
|
|
6488
6531
|
this.opened = false;
|
|
@@ -7214,13 +7257,13 @@ class ChipsComponent {
|
|
|
7214
7257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ChipsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7215
7258
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ChipsComponent, isStandalone: false, selector: "chips", inputs: { testId: "testId", value: "value", multiple: "multiple", disabled: "disabled", type: "type", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", step: "step", placeholder: "placeholder", unique: "unique", strict: "strict", options: "options" }, outputs: { valueChange: "valueChange" }, providers: [
|
|
7216
7259
|
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
7217
|
-
], viewQueries: [{ propertyName: "chipDropdown", first: true, predicate: ["chipDropdown"], descendants: true }, { propertyName: "chipButtons", first: true, predicate: ["chipButtons"], descendants: true }, { propertyName: "chipInput", first: true, predicate: ["chipInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div dd\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-top-border-radius: var(--chips-border-radius) var(--chips-border-radius) 0 0;--chips-bottom-border-radius: 0 0 var(--chips-border-radius) var(--chips-border-radius);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-highlight-color: var(--highlight-color, var(--primary-color, #888888));--chips-highlight-text-color: var(--highlight-text-color, #ffffff);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips img.chip-picture{width:28px;height:28px;object-fit:cover}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.chips-dropdown:not(:empty){position:relative;z-index:1;width:var(--toggle-width, 0);display:flex;flex-direction:column;margin:-3px 0;padding:0;list-style:none;border:var(--chips-border-size) solid var(--chips-border-color);background:var(--chips-bg-color);border-radius:var(--chips-bottom-border-radius);overflow:hidden}.chips-dropdown:not(:empty) *{box-sizing:border-box}.chips-dropdown:not(:empty) button{border:none;background:none;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none;text-align:left}.chips-dropdown:not(:empty) button:hover,.chips-dropdown:not(:empty) button.active{background-color:var(--chips-highlight-color);color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) button:hover a,.chips-dropdown:not(:empty) button.active a{color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) .select-option{display:flex;gap:8px;align-items:center;justify-content:center}.chips-dropdown:not(:empty) .select-option .select-option-picture{width:32px;height:32px;object-fit:cover}.chips-dropdown:not(:empty) .select-option .select-option-label{flex:1}.dropdown-placement-top .chips-dropdown{border-radius:var(--chips-top-border-radius)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: DropdownDirective, selector: "[dd],[drop-down]", inputs: ["closeInside", "attachTo", "boundary", "placement", "autoPlacement", "mobileViewUnder", "fixed", "keyboardHandler", "isDisabled"], outputs: ["onShown", "onHidden", "onKeyboard"], exportAs: ["dropdown"] }, { kind: "directive", type: DropdownContentDirective, selector: "[dropdownContent]", exportAs: ["dropdown-content"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[dropdownToggle]", inputs: ["beforeOpen", "switch"], exportAs: ["dropdown-toggle"] }, { kind: "component", type: CloseBtnComponent, selector: "close-btn" }, { kind: "pipe", type: SafeHtmlPipe, name: "safe" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7260
|
+
], viewQueries: [{ propertyName: "chipDropdown", first: true, predicate: ["chipDropdown"], descendants: true }, { propertyName: "chipButtons", first: true, predicate: ["chipButtons"], descendants: true }, { propertyName: "chipInput", first: true, predicate: ["chipInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div dd\n attachTo=\"root\"\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-top-border-radius: var(--chips-border-radius) var(--chips-border-radius) 0 0;--chips-bottom-border-radius: 0 0 var(--chips-border-radius) var(--chips-border-radius);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-highlight-color: var(--highlight-color, var(--primary-color, #888888));--chips-highlight-text-color: var(--highlight-text-color, #ffffff);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips img.chip-picture{width:28px;height:28px;object-fit:cover}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.chips-dropdown:not(:empty){position:relative;z-index:1;width:var(--toggle-width, 0);display:flex;flex-direction:column;margin:-3px 0;padding:0;list-style:none;border:var(--chips-border-size) solid var(--chips-border-color);background:var(--chips-bg-color);border-radius:var(--chips-bottom-border-radius);overflow:hidden}.chips-dropdown:not(:empty) *{box-sizing:border-box}.chips-dropdown:not(:empty) button{border:none;background:none;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none;text-align:left}.chips-dropdown:not(:empty) button:hover,.chips-dropdown:not(:empty) button.active{background-color:var(--chips-highlight-color);color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) button:hover a,.chips-dropdown:not(:empty) button.active a{color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) .select-option{display:flex;gap:8px;align-items:center;justify-content:center}.chips-dropdown:not(:empty) .select-option .select-option-picture{width:32px;height:32px;object-fit:cover}.chips-dropdown:not(:empty) .select-option .select-option-label{flex:1}.dropdown-placement-top .chips-dropdown{border-radius:var(--chips-top-border-radius)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: DropdownDirective, selector: "[dd],[drop-down]", inputs: ["closeInside", "attachTo", "boundary", "placement", "autoPlacement", "mobileViewUnder", "fixed", "keyboardHandler", "isDisabled"], outputs: ["onShown", "onHidden", "onKeyboard"], exportAs: ["dropdown"] }, { kind: "directive", type: DropdownContentDirective, selector: "[dropdownContent]", exportAs: ["dropdown-content"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[dropdownToggle]", inputs: ["beforeOpen", "switch"], exportAs: ["dropdown-toggle"] }, { kind: "component", type: CloseBtnComponent, selector: "close-btn" }, { kind: "pipe", type: SafeHtmlPipe, name: "safe" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7218
7261
|
}
|
|
7219
7262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ChipsComponent, decorators: [{
|
|
7220
7263
|
type: Component,
|
|
7221
7264
|
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, selector: "chips", providers: [
|
|
7222
7265
|
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
7223
|
-
], template: "<div dd\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-top-border-radius: var(--chips-border-radius) var(--chips-border-radius) 0 0;--chips-bottom-border-radius: 0 0 var(--chips-border-radius) var(--chips-border-radius);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-highlight-color: var(--highlight-color, var(--primary-color, #888888));--chips-highlight-text-color: var(--highlight-text-color, #ffffff);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips img.chip-picture{width:28px;height:28px;object-fit:cover}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.chips-dropdown:not(:empty){position:relative;z-index:1;width:var(--toggle-width, 0);display:flex;flex-direction:column;margin:-3px 0;padding:0;list-style:none;border:var(--chips-border-size) solid var(--chips-border-color);background:var(--chips-bg-color);border-radius:var(--chips-bottom-border-radius);overflow:hidden}.chips-dropdown:not(:empty) *{box-sizing:border-box}.chips-dropdown:not(:empty) button{border:none;background:none;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none;text-align:left}.chips-dropdown:not(:empty) button:hover,.chips-dropdown:not(:empty) button.active{background-color:var(--chips-highlight-color);color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) button:hover a,.chips-dropdown:not(:empty) button.active a{color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) .select-option{display:flex;gap:8px;align-items:center;justify-content:center}.chips-dropdown:not(:empty) .select-option .select-option-picture{width:32px;height:32px;object-fit:cover}.chips-dropdown:not(:empty) .select-option .select-option-label{flex:1}.dropdown-placement-top .chips-dropdown{border-radius:var(--chips-top-border-radius)}\n"] }]
|
|
7266
|
+
], template: "<div dd\n attachTo=\"root\"\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n", styles: [".chips{--chips-border-size: var(--border-size, 1px);--chips-border-radius: var(--border-radius, 5px);--chips-top-border-radius: var(--chips-border-radius) var(--chips-border-radius) 0 0;--chips-bottom-border-radius: 0 0 var(--chips-border-radius) var(--chips-border-radius);--chips-bg-color: var(--bg-color, #ffffff);--chips-border-color: var(--border-color, #ced4da);--chips-highlight-color: var(--highlight-color, var(--primary-color, #888888));--chips-highlight-text-color: var(--highlight-text-color, #ffffff);--chips-text-color: var(--text-color, #151515);--chips-text-size: var(--text-size, 16px);--chips-padding-vertical: 6px;--chips-padding-horizontal: 12px;--chips-padding: var(--chips-padding-vertical) var(--chips-padding-horizontal);--chips-btn-padding: 12px;--chips-btn-gap: calc(var(--chips-btn-padding) / 2);--chips-btn-color: white;--chips-btn-valid-color: rgba(200, 255, 200, .7);--chips-btn-invalid-color: rgba(255, 200, 200, .7);position:relative;margin:5px 0;font-size:var(--chips-text-size);padding:var(--chips-padding);background:var(--chips-bg-color);color:var(--chips-text-color);border:var(--chips-border-size) solid var(--chips-border-color);border-radius:var(--chips-border-radius)}.chips *{box-sizing:border-box}.chips .chips-input{background:var(--chips-bg-color);padding:var(--chips-padding);font-size:var(--chips-text-size);outline:none;border:none;width:100%;-webkit-user-select:none;user-select:none;font-weight:400}.chips .chips-buttons{position:absolute;top:var(--chips-padding-vertical);left:var(--chips-padding-horizontal);max-width:calc(100% - var(--chips-padding-horizontal) * 2);display:flex;gap:5px;overflow:auto;border-radius:var(--chips-border-radius)}.chips .chips-button{background:var(--chipd-btn-color);color:var(--chips-text-color);border:var(--chips-border-size) solid rgba(0,0,0,.2);border-radius:var(--chips-border-radius);padding:var(--chips-padding-vertical) var(--chips-btn-gap) var(--chips-padding-vertical) var(--chips-btn-padding);-webkit-user-select:none;user-select:none;font-weight:400;outline:none;display:flex;gap:var(--chips-btn-gap);justify-content:center;align-items:center;line-height:1.2rem;text-decoration:none}.chips .chips-button.chips-valid{--chipd-btn-color: var(--chips-btn-valid-color) }.chips .chips-button.chips-invalid{--chipd-btn-color: var(--chips-btn-invalid-color) }.chips img.chip-picture{width:28px;height:28px;object-fit:cover}.chips .chips-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips.disabled{opacity:.75}.chips.disabled .chips-button{padding-right:var(--chips-btn-padding)}.chips-dropdown:not(:empty){position:relative;z-index:1;width:var(--toggle-width, 0);display:flex;flex-direction:column;margin:-3px 0;padding:0;list-style:none;border:var(--chips-border-size) solid var(--chips-border-color);background:var(--chips-bg-color);border-radius:var(--chips-bottom-border-radius);overflow:hidden}.chips-dropdown:not(:empty) *{box-sizing:border-box}.chips-dropdown:not(:empty) button{border:none;background:none;cursor:pointer;padding:6px 12px;-webkit-user-select:none;user-select:none;text-align:left}.chips-dropdown:not(:empty) button:hover,.chips-dropdown:not(:empty) button.active{background-color:var(--chips-highlight-color);color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) button:hover a,.chips-dropdown:not(:empty) button.active a{color:var(--chips-highlight-text-color)}.chips-dropdown:not(:empty) .select-option{display:flex;gap:8px;align-items:center;justify-content:center}.chips-dropdown:not(:empty) .select-option .select-option-picture{width:32px;height:32px;object-fit:cover}.chips-dropdown:not(:empty) .select-option .select-option-label{flex:1}.dropdown-placement-top .chips-dropdown{border-radius:var(--chips-top-border-radius)}\n"] }]
|
|
7224
7267
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { testId: [{
|
|
7225
7268
|
type: Input
|
|
7226
7269
|
}], value: [{
|
|
@@ -7947,11 +7990,13 @@ class InteractiveItemComponent {
|
|
|
7947
7990
|
constructor() {
|
|
7948
7991
|
this.active = false;
|
|
7949
7992
|
this.index = -1;
|
|
7993
|
+
this.canvasParams = {};
|
|
7950
7994
|
this.valid = true;
|
|
7951
7995
|
this.pos = Point.Zero;
|
|
7952
7996
|
this.direction = "none";
|
|
7953
7997
|
this.mFrame = new Rect(0, 0, 3, 3);
|
|
7954
7998
|
this.mShapes = [];
|
|
7999
|
+
this.mDistances = new Map();
|
|
7955
8000
|
}
|
|
7956
8001
|
draw(ctx, shape) {
|
|
7957
8002
|
shape.draw(ctx, 1);
|
|
@@ -7996,6 +8041,7 @@ class InteractiveItemComponent {
|
|
|
7996
8041
|
this.moveTo(this.pos.x, y);
|
|
7997
8042
|
}
|
|
7998
8043
|
moveEnd() {
|
|
8044
|
+
this.mDistances.clear();
|
|
7999
8045
|
if (this.valid)
|
|
8000
8046
|
return;
|
|
8001
8047
|
this.pos = this.validPos;
|
|
@@ -8022,7 +8068,10 @@ class InteractiveItemComponent {
|
|
|
8022
8068
|
});
|
|
8023
8069
|
}
|
|
8024
8070
|
isValidByDistance(other) {
|
|
8025
|
-
|
|
8071
|
+
if (!this.mDistances.has(other)) {
|
|
8072
|
+
this.mDistances.set(other, this.distToPixels(this.getMinDistance(other)));
|
|
8073
|
+
}
|
|
8074
|
+
const minPixels = this.mDistances.get(other);
|
|
8026
8075
|
return !this.shapes.some(shape => {
|
|
8027
8076
|
return other.shapes.some(os => {
|
|
8028
8077
|
return shape.distance(os) <= minPixels;
|
|
@@ -8271,7 +8320,7 @@ class InteractiveCanvasComponent {
|
|
|
8271
8320
|
}
|
|
8272
8321
|
onPanMove($event) {
|
|
8273
8322
|
const item = this.lockedItem;
|
|
8274
|
-
const horizontal = this.horizontal();
|
|
8323
|
+
const horizontal = untracked(() => this.horizontal());
|
|
8275
8324
|
const deltaX = $event.deltaX / this.ratio;
|
|
8276
8325
|
const deltaY = $event.deltaY / this.ratio;
|
|
8277
8326
|
const data = {
|
|
@@ -8334,6 +8383,7 @@ class InteractiveCanvasComponent {
|
|
|
8334
8383
|
});
|
|
8335
8384
|
});
|
|
8336
8385
|
this.items.forEach(item => {
|
|
8386
|
+
item.canvasParams = params;
|
|
8337
8387
|
item.calcShapes();
|
|
8338
8388
|
});
|
|
8339
8389
|
this.onRotate.emit(this.rotation);
|
|
@@ -9246,5 +9296,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
9246
9296
|
* Generated bundle index. Do not edit.
|
|
9247
9297
|
*/
|
|
9248
9298
|
|
|
9249
|
-
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableComponent, DynamicTableTemplateDirective, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JSONfn, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, distance, distanceSq, dividePts, dotProduct, ensurePoint, getComponentDef, getCssVariables, getRoot, gjkDistance, gjkIntersection, hashCode, impatientPromise, injectOptions, isBrowser, isPoint, lengthOfPt, lerpPts, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, perpendicular, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, selectorMatchesList, subPts, svgToDataUri, switchClass, toDegrees, toRadians, tripleProduct };
|
|
9299
|
+
export { API_SERVICE, APP_BASE_URL, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AsyncMethodTargetDirective, AuthGuard, BASE_CONFIG, BUTTON_TYPE, BackgroundDirective, BaseDialogService, BaseHttpClient, BaseHttpService, BaseToasterService, BtnComponent, BtnDefaultComponent, CONFIG_SERVICE, CacheService, CanvasColor, CanvasUtils, ChipsComponent, ChunkPipe, Circle, CloseBtnComponent, ComponentLoaderDirective, ComponentLoaderService, ConfigService, DIALOG_SERVICE, DateUtils, DragDropEventPlugin, DropListComponent, DropdownBoxComponent, DropdownContentDirective, DropdownDirective, DropdownToggleDirective, DynamicTableComponent, DynamicTableTemplateDirective, EPSILON, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExclusionsRenderer, ExtraItemPropertiesPipe, FactoryDependencies, FakeModuleComponent, FileSystemEntry, FileUtils, FilterPipe, FindPipe, ForbiddenZone, FormatNumberPipe, FormatterService, GenericValue, GetOffsetPipe, GetTypePipe, GetValuePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, ICON_MAP, ICON_SERVICE, ICON_TYPE, IConfiguration, IconComponent, IconDefaultComponent, IconDirective, IconService, IncludesPipe, Initializer, InteractiveCanvasComponent, InteractiveCircleComponent, InteractiveItemComponent, InteractiveRectComponent, IsTypePipe, JSONfn, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, LocalHttpService, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, OPTIONS_TOKEN, ObjectType, ObjectUtils, ObservableUtils, OpenApiService, Oval, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, RESIZE_DELAY, RESIZE_STRATEGY, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, RulerCanvasRenderer, SCRIPT_PARAMS, STATIC_SCHEMAS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SocketClient, SocketService, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TabsComponent, TabsItemDirective, TabsTemplateDirective, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UploadComponent, ValuedPromise, ValuesPipe, addPts, cachedFactory, cancelablePromise, checkTransitions, clamp, computedPrevious, createTypedProvider, cssStyles, cssVariables, distance, distanceSq, dividePts, dotProduct, ensurePoint, getComponentDef, getCssVariables, getRoot, gjkDistance, gjkIntersection, hashCode, impatientPromise, injectOptions, isBrowser, isPoint, lengthOfPt, lerpPts, multiplyPts, negatePt, normalizePt, normalizeRange, overflow, parseSelector, perpendicular, provideEntryComponents, provideOptions, provideWithOptions, rotateDeg, rotateRad, selectorMatchesList, subPts, svgToDataUri, switchClass, toDegrees, toRadians, tripleProduct };
|
|
9250
9300
|
//# sourceMappingURL=stemy-ngx-utils.mjs.map
|