inugami-ng 0.0.9 → 0.0.11

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.
@@ -10,20 +10,22 @@ class InuButton {
10
10
  icon = input(null, ...(ngDevMode ? [{ debugName: "icon" }] : []));
11
11
  type = input('', ...(ngDevMode ? [{ debugName: "type" }] : []));
12
12
  link = input(false, ...(ngDevMode ? [{ debugName: "link" }] : []));
13
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
13
14
  _styleClass = computed(() => {
14
15
  return [
15
16
  'inu-button',
16
17
  this.type() ? this.type() : '',
17
- this.link() ? 'link' : ''
18
+ this.link() ? 'link' : '',
19
+ this.disabled() ? 'disabled' : ''
18
20
  ].join(' ');
19
21
  }, ...(ngDevMode ? [{ debugName: "_styleClass" }] : []));
20
22
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuButton, isStandalone: true, selector: "inu-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n", styles: [".inu-button{display:flex;gap:.5rem;justify-content:space-around;align-items:center;padding:.125rem .25rem;background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content svg{display:flex;align-items:center}.inu-button .inu-button-icon{width:1.25rem}.inu-button .inu-button-label{flex:1}.inu-button:hover{border-color:var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px var(--neutral);box-shadow:0 0 .25rem 0 var(--neutral)}.inu-button.secondary{background-color:var(--secondary-light-extra);border-color:var(--secondary-light);color:var(--text-color)}.inu-button.secondary:hover{border-color:var(--secondary);-webkit-box-shadow:0px 0px .25rem 0px var(--secondary);box-shadow:0 0 .25rem 0 var(--secondary)}.inu-button.primary,.inu-button.success{background-color:var(--success-light-extra);border-color:var(--success-light);color:var(--text-color)}.inu-button.primary:hover,.inu-button.success:hover{border-color:var(--success);-webkit-box-shadow:0px 0px .25rem 0px var(--success);box-shadow:0 0 .25rem 0 var(--success)}.inu-button.warn{background-color:var(--warning-light-extra);border-color:var(--warning-light);color:var(--text-color)}.inu-button.warn:hover{border-color:var(--warning);-webkit-box-shadow:0px 0px .25rem 0px var(--warning);box-shadow:0 0 .25rem 0 var(--warning)}.inu-button.danger,.inu-button.error{background-color:var(--danger-light-extra);border-color:var(--danger-light);color:var(--text-color)}.inu-button.danger:hover,.inu-button.error:hover{border-color:var(--danger);-webkit-box-shadow:0px 0px .25rem 0px var(--danger);box-shadow:0 0 .25rem 0 var(--danger)}.inu-button.link{border-top:none;border-left:none;border-right:none;background-color:transparent;box-shadow:0 0 .25rem 0 transparent!important}.inu-button.link:hover{background:linear-gradient(to bottom,transparent 95%,var(--neutral) 100%)}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuButton, isStandalone: true, selector: "inu-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\" [disabled]=\"disabled()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n", styles: [".inu-button{display:flex;gap:.5rem;justify-content:space-around;align-items:center;padding:.125rem .25rem;background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content svg{display:flex;align-items:center}.inu-button .inu-button-icon{width:1.25rem}.inu-button .inu-button-label{flex:1}.inu-button:hover{border-color:var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px var(--neutral);box-shadow:0 0 .25rem 0 var(--neutral)}.inu-button.secondary{background-color:var(--secondary-light-extra);border-color:var(--secondary-light);color:var(--text-color)}.inu-button.secondary:hover{border-color:var(--secondary);-webkit-box-shadow:0px 0px .25rem 0px var(--secondary);box-shadow:0 0 .25rem 0 var(--secondary)}.inu-button.primary,.inu-button.success{background-color:var(--success-light-extra);border-color:var(--success-light);color:var(--text-color)}.inu-button.primary:hover,.inu-button.success:hover{border-color:var(--success);-webkit-box-shadow:0px 0px .25rem 0px var(--success);box-shadow:0 0 .25rem 0 var(--success)}.inu-button.warn{background-color:var(--warning-light-extra);border-color:var(--warning-light);color:var(--text-color)}.inu-button.warn:hover{border-color:var(--warning);-webkit-box-shadow:0px 0px .25rem 0px var(--warning);box-shadow:0 0 .25rem 0 var(--warning)}.inu-button.danger,.inu-button.error{background-color:var(--danger-light-extra);border-color:var(--danger-light);color:var(--text-color)}.inu-button.danger:hover,.inu-button.error:hover{border-color:var(--danger);-webkit-box-shadow:0px 0px .25rem 0px var(--danger);box-shadow:0 0 .25rem 0 var(--danger)}.inu-button.disabled{background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000;color:var(--neutral);fill:var(--neutral)}.inu-button.disabled:hover{border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button.link{border-top:none;border-left:none;border-right:none;background-color:transparent;box-shadow:0 0 .25rem 0 transparent!important}.inu-button.link:hover{background:linear-gradient(to bottom,transparent 95%,var(--neutral) 100%)}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
22
24
  }
23
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuButton, decorators: [{
24
26
  type: Component,
25
- args: [{ selector: 'inu-button', standalone: true, imports: [InuIcon], template: "@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n", styles: [".inu-button{display:flex;gap:.5rem;justify-content:space-around;align-items:center;padding:.125rem .25rem;background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content svg{display:flex;align-items:center}.inu-button .inu-button-icon{width:1.25rem}.inu-button .inu-button-label{flex:1}.inu-button:hover{border-color:var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px var(--neutral);box-shadow:0 0 .25rem 0 var(--neutral)}.inu-button.secondary{background-color:var(--secondary-light-extra);border-color:var(--secondary-light);color:var(--text-color)}.inu-button.secondary:hover{border-color:var(--secondary);-webkit-box-shadow:0px 0px .25rem 0px var(--secondary);box-shadow:0 0 .25rem 0 var(--secondary)}.inu-button.primary,.inu-button.success{background-color:var(--success-light-extra);border-color:var(--success-light);color:var(--text-color)}.inu-button.primary:hover,.inu-button.success:hover{border-color:var(--success);-webkit-box-shadow:0px 0px .25rem 0px var(--success);box-shadow:0 0 .25rem 0 var(--success)}.inu-button.warn{background-color:var(--warning-light-extra);border-color:var(--warning-light);color:var(--text-color)}.inu-button.warn:hover{border-color:var(--warning);-webkit-box-shadow:0px 0px .25rem 0px var(--warning);box-shadow:0 0 .25rem 0 var(--warning)}.inu-button.danger,.inu-button.error{background-color:var(--danger-light-extra);border-color:var(--danger-light);color:var(--text-color)}.inu-button.danger:hover,.inu-button.error:hover{border-color:var(--danger);-webkit-box-shadow:0px 0px .25rem 0px var(--danger);box-shadow:0 0 .25rem 0 var(--danger)}.inu-button.link{border-top:none;border-left:none;border-right:none;background-color:transparent;box-shadow:0 0 .25rem 0 transparent!important}.inu-button.link:hover{background:linear-gradient(to bottom,transparent 95%,var(--neutral) 100%)}\n"] }]
26
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }] } });
27
+ args: [{ selector: 'inu-button', standalone: true, imports: [InuIcon], template: "@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\" [disabled]=\"disabled()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n", styles: [".inu-button{display:flex;gap:.5rem;justify-content:space-around;align-items:center;padding:.125rem .25rem;background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content{display:flex;align-items:center}.inu-button inu-icon ::ng-deep .inu-icon .inu-icon-content svg{display:flex;align-items:center}.inu-button .inu-button-icon{width:1.25rem}.inu-button .inu-button-label{flex:1}.inu-button:hover{border-color:var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px var(--neutral);box-shadow:0 0 .25rem 0 var(--neutral)}.inu-button.secondary{background-color:var(--secondary-light-extra);border-color:var(--secondary-light);color:var(--text-color)}.inu-button.secondary:hover{border-color:var(--secondary);-webkit-box-shadow:0px 0px .25rem 0px var(--secondary);box-shadow:0 0 .25rem 0 var(--secondary)}.inu-button.primary,.inu-button.success{background-color:var(--success-light-extra);border-color:var(--success-light);color:var(--text-color)}.inu-button.primary:hover,.inu-button.success:hover{border-color:var(--success);-webkit-box-shadow:0px 0px .25rem 0px var(--success);box-shadow:0 0 .25rem 0 var(--success)}.inu-button.warn{background-color:var(--warning-light-extra);border-color:var(--warning-light);color:var(--text-color)}.inu-button.warn:hover{border-color:var(--warning);-webkit-box-shadow:0px 0px .25rem 0px var(--warning);box-shadow:0 0 .25rem 0 var(--warning)}.inu-button.danger,.inu-button.error{background-color:var(--danger-light-extra);border-color:var(--danger-light);color:var(--text-color)}.inu-button.danger:hover,.inu-button.error:hover{border-color:var(--danger);-webkit-box-shadow:0px 0px .25rem 0px var(--danger);box-shadow:0 0 .25rem 0 var(--danger)}.inu-button.disabled{background-color:var(--neutral-light-extra);border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000;color:var(--neutral);fill:var(--neutral)}.inu-button.disabled:hover{border:1px solid var(--neutral);-webkit-box-shadow:0px 0px .25rem 0px rgba(0,0,0,0);box-shadow:0 0 .25rem #0000}.inu-button.link{border-top:none;border-left:none;border-right:none;background-color:transparent;box-shadow:0 0 .25rem 0 transparent!important}.inu-button.link:hover{background:linear-gradient(to bottom,transparent 95%,var(--neutral) 100%)}\n"] }]
28
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
27
29
 
28
30
  /**
29
31
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"inugami-ng-components-inu-button.mjs","sources":["../../../projects/inugami-ng/components/inu-button/inu-button.component.ts","../../../projects/inugami-ng/components/inu-button/inu-button.component.html","../../../projects/inugami-ng/components/inu-button/inugami-ng-components-inu-button.ts"],"sourcesContent":["import {Component, computed, input} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-button',\n standalone: true,\n imports: [InuIcon],\n templateUrl: './inu-button.component.html',\n styleUrl: './inu-button.component.scss',\n})\nexport class InuButton {\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n label = input<string | undefined | null>('');\n icon = input<string | null>(null);\n type = input<string>('');\n link = input<boolean>(false);\n\n _styleClass = computed<string>(() => {\n return [\n 'inu-button',\n this.type() ? this.type() : '',\n this.link()?'link':''\n ].join(' ');\n })\n\n}\n","@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAUa,SAAS,CAAA;;;;AAKpB,IAAA,KAAK,GAAG,KAAK,CAA4B,EAAE,iDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,gDAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;AAE5B,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;QAClC,OAAO;YACL,YAAY;AACZ,YAAA,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,EAAE,GAAC,MAAM,GAAC;AACpB,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,uDAAC;uGAhBS,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtB,soBAgCA,EAAA,MAAA,EAAA,CAAA,qpEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BY,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIN,SAAS,EAAA,UAAA,EAAA,CAAA;kBAPrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,soBAAA,EAAA,MAAA,EAAA,CAAA,qpEAAA,CAAA,EAAA;;;AENpB;;AAEG;;;;"}
1
+ {"version":3,"file":"inugami-ng-components-inu-button.mjs","sources":["../../../projects/inugami-ng/components/inu-button/inu-button.component.ts","../../../projects/inugami-ng/components/inu-button/inu-button.component.html","../../../projects/inugami-ng/components/inu-button/inugami-ng-components-inu-button.ts"],"sourcesContent":["import {Component, computed, input} from '@angular/core';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-button',\n standalone: true,\n imports: [InuIcon],\n templateUrl: './inu-button.component.html',\n styleUrl: './inu-button.component.scss',\n})\nexport class InuButton {\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n label = input<string | undefined | null>('');\n icon = input<string | null>(null);\n type = input<string>('');\n link = input<boolean>(false);\n disabled = input<boolean>(false);\n\n _styleClass = computed<string>(() => {\n return [\n 'inu-button',\n this.type() ? this.type() : '',\n this.link() ? 'link' : '',\n this.disabled()? 'disabled' : ''\n ].join(' ');\n })\n\n}\n","@if(link()){\n <span [class]=\"_styleClass()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </span>\n}\n@else{\n <button [class]=\"_styleClass()\" [disabled]=\"disabled()\">\n\n @if(icon()){\n <span class=\"inu-button-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"1\"></inu-icon>\n </span>\n }\n\n <span class=\"inu-button-label\">\n @if(label()){\n {{label()}}\n }\n </span>\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAUa,SAAS,CAAA;;;;AAKpB,IAAA,KAAK,GAAG,KAAK,CAA4B,EAAE,iDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,gDAAC;AACjC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;AAC5B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;QAClC,OAAO;YACL,YAAY;AACZ,YAAA,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,EAAE;YACzB,IAAI,CAAC,QAAQ,EAAE,GAAE,UAAU,GAAG;AAC/B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,uDAAC;uGAlBS,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtB,gqBAgCA,EAAA,MAAA,EAAA,CAAA,0/EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BY,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIN,SAAS,EAAA,UAAA,EAAA,CAAA;kBAPrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,gqBAAA,EAAA,MAAA,EAAA,CAAA,0/EAAA,CAAA,EAAA;;;AENpB;;AAEG;;;;"}
@@ -0,0 +1,79 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, input, computed, inject, Component } from '@angular/core';
3
+ import { InuButton } from 'inugami-ng/components/inu-button';
4
+ import { from } from 'rxjs';
5
+ import { InuToastServices } from 'inugami-ng/components/inu-toast';
6
+
7
+ class InuCopyServices {
8
+ // =================================================================================================================
9
+ // API
10
+ // =================================================================================================================
11
+ copy(content) {
12
+ const result$ = from(navigator.clipboard.writeText(content));
13
+ result$.subscribe();
14
+ return result$;
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCopyServices, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCopyServices, providedIn: 'root' });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCopyServices, decorators: [{
20
+ type: Injectable,
21
+ args: [{ providedIn: 'root' }]
22
+ }] });
23
+
24
+ class InuCopy {
25
+ //==================================================================================================================
26
+ // ATTRIBUTES
27
+ //==================================================================================================================
28
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
29
+ notificationLabel = input('Value copied to clipboard', ...(ngDevMode ? [{ debugName: "notificationLabel" }] : []));
30
+ notificationMessage = input('', ...(ngDevMode ? [{ debugName: "notificationMessage" }] : []));
31
+ icon = input('copy', ...(ngDevMode ? [{ debugName: "icon" }] : []));
32
+ iconNotification = input('approval', ...(ngDevMode ? [{ debugName: "iconNotification" }] : []));
33
+ type = input('success', ...(ngDevMode ? [{ debugName: "type" }] : []));
34
+ link = input(false, ...(ngDevMode ? [{ debugName: "link" }] : []));
35
+ styleclass = input('', ...(ngDevMode ? [{ debugName: "styleclass" }] : []));
36
+ content = input(undefined, ...(ngDevMode ? [{ debugName: "content" }] : []));
37
+ _styleClass = computed(() => {
38
+ return [
39
+ 'inu-copy',
40
+ this.styleclass() ? this.styleclass() : ''
41
+ ].join(' ');
42
+ }, ...(ngDevMode ? [{ debugName: "_styleClass" }] : []));
43
+ copyService = inject(InuCopyServices);
44
+ toastServices = inject(InuToastServices);
45
+ //==================================================================================================================
46
+ // ACTIONS
47
+ //==================================================================================================================
48
+ copyContent() {
49
+ const content = this.content();
50
+ if (!content) {
51
+ return;
52
+ }
53
+ this.copyService.copy(content)
54
+ .subscribe({
55
+ next: () => this.notify()
56
+ });
57
+ }
58
+ notify() {
59
+ this.toastServices.addMessage({
60
+ title: this.notificationLabel(),
61
+ message: this.notificationMessage(),
62
+ icon: this.iconNotification(),
63
+ level: "success"
64
+ });
65
+ }
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCopy, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: InuCopy, isStandalone: true, selector: "inu-copy", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, notificationLabel: { classPropertyName: "notificationLabel", publicName: "notificationLabel", isSignal: true, isRequired: false, transformFunction: null }, notificationMessage: { classPropertyName: "notificationMessage", publicName: "notificationMessage", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconNotification: { classPropertyName: "iconNotification", publicName: "iconNotification", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, styleclass: { classPropertyName: "styleclass", publicName: "styleclass", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"_styleClass()\">\n <inu-button [label]=\"label()\"\n [icon]=\"icon()\"\n [type]=\"type()\"\n [link]=\"link()\"\n [disabled]=\"!content()\"\n (click)=\"copyContent()\"\n ></inu-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: InuButton, selector: "inu-button", inputs: ["label", "icon", "type", "link", "disabled"] }] });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCopy, decorators: [{
70
+ type: Component,
71
+ args: [{ selector: 'inu-copy', standalone: true, imports: [InuButton], template: "<div [class]=\"_styleClass()\">\n <inu-button [label]=\"label()\"\n [icon]=\"icon()\"\n [type]=\"type()\"\n [link]=\"link()\"\n [disabled]=\"!content()\"\n (click)=\"copyContent()\"\n ></inu-button>\n</div>\n" }]
72
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], notificationLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "notificationLabel", required: false }] }], notificationMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "notificationMessage", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconNotification: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconNotification", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], styleclass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleclass", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }] } });
73
+
74
+ /**
75
+ * Generated bundle index. Do not edit.
76
+ */
77
+
78
+ export { InuCopy, InuCopyServices };
79
+ //# sourceMappingURL=inugami-ng-components-inu-copy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inugami-ng-components-inu-copy.mjs","sources":["../../../projects/inugami-ng/components/inu-copy/inu-copy.service.ts","../../../projects/inugami-ng/components/inu-copy/inu-copy.component.ts","../../../projects/inugami-ng/components/inu-copy/inu-copy.component.html","../../../projects/inugami-ng/components/inu-copy/inugami-ng-components-inu-copy.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {from, Observable} from 'rxjs';\n\n\n@Injectable({providedIn: 'root'})\nexport class InuCopyServices {\n\n\n // =================================================================================================================\n // API\n // =================================================================================================================\n copy(content:string):Observable<any> {\n const result$ = from(navigator.clipboard.writeText(content));\n result$.subscribe();\n return result$;\n }\n}\n","import {Component, computed, inject, input} from '@angular/core';\nimport {InuButton} from 'inugami-ng/components/inu-button';\nimport {InuCopyServices} from './inu-copy.service';\nimport {InuToastServices} from 'inugami-ng/components/inu-toast';\n\n@Component({\n selector: 'inu-copy',\n standalone: true,\n imports: [InuButton],\n templateUrl: './inu-copy.component.html',\n styleUrl: './inu-copy.component.scss',\n})\nexport class InuCopy {\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n label = input<string | undefined | null>('');\n notificationLabel = input<string>('Value copied to clipboard');\n notificationMessage = input<string>('');\n icon = input<string>('copy');\n iconNotification = input<string>('approval');\n type = input<string>('success');\n link = input<boolean>(false);\n styleclass = input<string>('');\n content = input<string | undefined | null>(undefined);\n\n _styleClass = computed<string>(() => {\n return [\n 'inu-copy',\n this.styleclass() ? this.styleclass() : ''\n ].join(' ');\n })\n\n\n copyService = inject(InuCopyServices);\n toastServices = inject(InuToastServices);\n\n\n //==================================================================================================================\n // ACTIONS\n //==================================================================================================================\n protected copyContent() {\n const content = this.content();\n if(!content){\n return;\n }\n this.copyService.copy(content)\n .subscribe({\n next: ()=> this.notify()\n });\n }\n\n private notify() {\n this.toastServices.addMessage({\n title:this.notificationLabel(),\n message:this.notificationMessage(),\n icon:this.iconNotification(),\n level:\"success\"\n });\n }\n}\n","<div [class]=\"_styleClass()\">\n <inu-button [label]=\"label()\"\n [icon]=\"icon()\"\n [type]=\"type()\"\n [link]=\"link()\"\n [disabled]=\"!content()\"\n (click)=\"copyContent()\"\n ></inu-button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import * as i0 from '@angular/core';
2
2
  import { input, contentChildren, signal, effect, Component } from '@angular/core';
3
3
  import { InuIcon } from 'inugami-icons';
4
4
  import { UuidUtils } from 'inugami-ng/services';
5
- import { JsonPipe } from '@angular/common';
6
5
 
7
6
  class InuDocItem {
8
7
  //==================================================================================================================
@@ -131,9 +130,7 @@ class InuDocSummaryNode {
131
130
  }
132
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuDocSummaryNode, decorators: [{
133
132
  type: Component,
134
- args: [{ selector: 'inu-doc-summary-node', standalone: true, providers: [], imports: [
135
- JsonPipe
136
- ], template: "@if (nodes() && acceptedLevels()) {\n <ul class=\"inu-doc-summary-node\">\n @for (node of nodes(); track node; ) {\n <li [class]=\"computeClass(node)\">\n <div class=\"inu-doc-summary-node-title\">\n @if (node.value?.href){\n <a [href]=\"node.value?.href\">\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n </a>\n } @else {\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n }\n </div>\n @if (node.children){\n <inu-doc-summary-node [nodes]=\"node.children\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n </li>\n }\n </ul>\n}\n", styles: [".inu-doc-summary-node{list-style:square;margin:0;padding-left:1rem}.inu-doc-summary-node a{color:var(--text-color);text-decoration:none}.inu-doc-summary-node a:hover{text-decoration:underline}.inu-doc-summary-node .level{font-size:1rem}.inu-doc-summary-node .level-0 .inu-doc-summary-node-title{font-size:140%;color:var(--primary-dark)}.inu-doc-summary-node .level-1 .inu-doc-summary-node-title{font-size:120%;color:var(--neutral-dark)}.inu-doc-summary-node .level-2 .inu-doc-summary-node-title{font-size:100%;color:var(--neutral-dark)}\n"] }]
133
+ args: [{ selector: 'inu-doc-summary-node', standalone: true, providers: [], imports: [], template: "@if (nodes() && acceptedLevels()) {\n <ul class=\"inu-doc-summary-node\">\n @for (node of nodes(); track node; ) {\n <li [class]=\"computeClass(node)\">\n <div class=\"inu-doc-summary-node-title\">\n @if (node.value?.href){\n <a [href]=\"node.value?.href\">\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n </a>\n } @else {\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n }\n </div>\n @if (node.children){\n <inu-doc-summary-node [nodes]=\"node.children\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n </li>\n }\n </ul>\n}\n", styles: [".inu-doc-summary-node{list-style:square;margin:0;padding-left:1rem}.inu-doc-summary-node a{color:var(--text-color);text-decoration:none}.inu-doc-summary-node a:hover{text-decoration:underline}.inu-doc-summary-node .level{font-size:1rem}.inu-doc-summary-node .level-0 .inu-doc-summary-node-title{font-size:140%;color:var(--primary-dark)}.inu-doc-summary-node .level-1 .inu-doc-summary-node-title{font-size:120%;color:var(--neutral-dark)}.inu-doc-summary-node .level-2 .inu-doc-summary-node-title{font-size:100%;color:var(--neutral-dark)}\n"] }]
137
134
  }], propDecorators: { nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], maxLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLevel", required: false }] }] } });
138
135
 
139
136
  class InuDocSummary {
@@ -1 +1 @@
1
- {"version":3,"file":"inugami-ng-components-inu-doc-item.mjs","sources":["../../../projects/inugami-ng/components/inu-doc-item/inu-doc-item.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-item.html","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/node/inu-doc-summary-node.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/node/inu-doc-summary-node.html","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/inu-doc-summary.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/inu-doc-summary.html","../../../projects/inugami-ng/components/inu-doc-item/inugami-ng-components-inu-doc-item.ts"],"sourcesContent":["import {Component, contentChildren, effect, input, signal, viewChildren} from '@angular/core';\nimport {InuDocItemComponentData} from './inu-doc-item.model';\nimport {InuIcon} from 'inugami-icons';\nimport {UuidUtils} from 'inugami-ng/services';\n\n@Component({\n selector: 'inu-doc-item',\n standalone: true,\n providers: [],\n imports: [\n InuIcon\n ],\n templateUrl: './inu-doc-item.html',\n styleUrl: './inu-doc-item.scss',\n})\nexport class InuDocItem {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n readonly styleClass = input<string | undefined | null>('');\n readonly icon = input<string | null>('');\n readonly title = input<string | undefined | null>('');\n readonly href = input<string | undefined | null>('');\n readonly id = input<string | undefined | null>('');\n readonly level = input<number | undefined | null>(2);\n readonly children = contentChildren(InuDocItem);\n //\n _styleClass = signal<string>('');\n iconSize = signal<number>(1);\n data = signal<InuDocItemComponentData | undefined>(undefined);\n _data: InuDocItemComponentData | undefined = undefined;\n uid: string = UuidUtils.buildUid();\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n this.init();\n });\n }\n\n init() {\n const title = this.title() ? this.title() : '';\n const href = this.href() ? this.href() : '';\n const id = this.id() ? this.id() : '';\n const level = this.level() ? this.level() : 2;\n\n const fullHref: string[] = [];\n if (href) {\n fullHref.push(href);\n if (id) {\n fullHref.push(id);\n }\n }\n const value: InuDocItemComponentData = {\n title: title!,\n href: fullHref.join('#'),\n id: id!,\n level: level!\n }\n this._data = value;\n this.data.set(value);\n\n\n switch (level) {\n case 1:\n this.iconSize.set(3);\n break;\n case 2:\n this.iconSize.set(2);\n break;\n default :\n this.iconSize.set(1);\n break;\n }\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private initStyleClass() {\n const styles: string[] = ['inu-doc-item'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n\n const level = this.level();\n if (level) {\n styles.push(`level-${level}`);\n }\n this._styleClass.set(styles.join(\" \"));\n }\n}\n","<section [class]=\"_styleClass()\" >\n <header [id]=\"data()?.id\">\n @if(data()?.href) {\n <a [href]=\"data()?.href\" class=\"anchor-link\">\n <div class=\"anchor\">\n @if(icon()){\n <div class=\"inug-doc-item-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"iconSize()\"></inu-icon>\n </div>\n }\n @if(data()?.level==1){\n <h1 class=\"title\">{{data()?.title}}</h1>\n }\n @if(data()?.level==2){\n <h2 class=\"title\">{{data()?.title}}</h2>\n }\n @else if (data()?.level==3) {\n <h3 class=\"title\">{{data()?.title}}</h3>\n }\n @else if (data()?.level==4) {\n <h4 class=\"title\">{{data()?.title}}</h4>\n }\n @else if (data()?.level==5) {\n <h5 class=\"title\">{{data()?.title}}</h5>\n }\n @else {\n <h6 class=\"title\">{{data()?.title}}</h6>\n }\n <div class=\"anchor-icon\">\n <inu-icon icon=\"link\" [size]=\"1\"></inu-icon>\n </div>\n </div>\n </a>\n }\n @else{\n <div class=\"anchor\">\n @if(icon()){\n <div class=\"inug-doc-item-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"iconSize()\"></inu-icon>\n </div>\n }\n @if(data()?.level==1){\n <h1 class=\"title\">{{data()?.title}}</h1>\n }\n @if(data()?.level==2){\n <h2 class=\"title\">{{data()?.title}}</h2>\n }\n @else if (data()?.level==3) {\n <h3 class=\"title\">{{data()?.title}}</h3>\n }\n @else if (data()?.level==4) {\n <h4 class=\"title\">{{data()?.title}}</h4>\n }\n @else if (data()?.level==5) {\n <h5 class=\"title\">{{data()?.title}}</h5>\n }\n @else {\n <h6 class=\"title\">{{data()?.title}}</h6>\n }\n <div class=\"anchor-icon\">\n <inu-icon icon=\"link\" [size]=\"1\"></inu-icon>\n </div>\n </div>\n }\n\n </header>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</section>\n","import {Component, effect, input, signal} from '@angular/core';\nimport {InuDocItem} from '../../inu-doc-item';\nimport {TreeNode} from 'inugami-ng/models';\nimport {JsonPipe} from '@angular/common';\n\n@Component({\n selector: 'inu-doc-summary-node',\n standalone: true,\n providers: [],\n imports: [\n JsonPipe\n ],\n templateUrl: './inu-doc-summary-node.html',\n styleUrl: './inu-doc-summary-node.scss',\n})\nexport class InuDocSummaryNode {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n nodes = input<TreeNode<InuDocItem>[] | undefined>(undefined);\n maxLevel = input<number>(3);\n //==================================================================================================================\n // BUILDER\n //==================================================================================================================\n buildHref(nodeValue: any): string {\n const result: string[] = [];\n const href = nodeValue.href();\n if (href) {\n result.push(href);\n const id = nodeValue.id();\n if (id) {\n result.push(id)\n }\n }\n\n\n return result.join('#');\n }\n\n\n protected getTitle(value: any): string {\n return value && value.title ? value.title : '';\n }\n\n protected computeClass(node: TreeNode<InuDocItem>): string {\n const result: string[] = [];\n result.push('level');\n result.push('level-' + node.level);\n return result.join(' ');\n }\n\n protected acceptedLevels():boolean {\n const nodes = this.nodes();\n if(!nodes || nodes.length==0){\n return false;\n }\n\n const level = nodes[0].level+1;\n const maxLevel = this.maxLevel();\n return level<=maxLevel;\n }\n}\n","@if (nodes() && acceptedLevels()) {\n <ul class=\"inu-doc-summary-node\">\n @for (node of nodes(); track node; ) {\n <li [class]=\"computeClass(node)\">\n <div class=\"inu-doc-summary-node-title\">\n @if (node.value?.href){\n <a [href]=\"node.value?.href\">\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n </a>\n } @else {\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n }\n </div>\n @if (node.children){\n <inu-doc-summary-node [nodes]=\"node.children\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n </li>\n }\n </ul>\n}\n","import {AfterViewInit, Component, effect, input, signal} from '@angular/core';\nimport {InuDocItem} from '../inu-doc-item';\nimport {TreeNode} from 'inugami-ng/models';\nimport {InuDocSummaryNode} from './node/inu-doc-summary-node';\n\n@Component({\n selector: 'inu-doc-summary',\n standalone: true,\n providers: [],\n imports: [\n InuDocSummaryNode\n ],\n templateUrl: './inu-doc-summary.html',\n styleUrl: './inu-doc-summary.scss',\n})\nexport class InuDocSummary implements AfterViewInit{\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n styleClass = input<string | undefined | null>('');\n children = input<readonly InuDocItem[] | undefined>(undefined);\n maxLevel = input<number>(3);\n //\n _styleClass = signal<string>('');\n nodes = signal<TreeNode<InuDocItem>[]>([]);\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n this.init();\n });\n }\n\n ngAfterViewInit(): void {\n this.init();\n }\n\n init() {\n const children = this.children();\n if (!children) {\n return;\n }\n\n const compMap = new Map<string, any>();\n children.forEach(c => compMap.set(c.uid, c));\n\n const parentMap = new Map<string, string>(); // childUid -> parentUid\n children.forEach(parent => {\n const childrenOfThisParent = parent.children() || [];\n childrenOfThisParent.forEach((child: any) => {\n parentMap.set(child.uid, parent.uid);\n });\n });\n\n const roots = children.filter(c => !parentMap.has(c.uid));\n\n const result = roots.map(root => this.mapComponentToNode(root, 0));\n this.nodes.set(result);\n }\n\n private mapComponentToNode(comp: any, level: number): TreeNode<any> {\n return {\n uid: comp.uid,\n level: level,\n value: comp.data ? comp.data() : comp, // On récupère la valeur ou le composant\n children: comp.children()\n ? comp.children().map((child: any) => this.mapComponentToNode(child, level + 1))\n : []\n };\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private initStyleClass() {\n const styles: string[] = ['inu-doc-summary'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n\n\n this._styleClass.set(styles.join(\" \"));\n }\n}\n","<div [class]=\"_styleClass()\" >\n @if (nodes()){\n <inu-doc-summary-node [nodes]=\"nodes()\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inugami-ng-components-inu-doc-item.mjs","sources":["../../../projects/inugami-ng/components/inu-doc-item/inu-doc-item.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-item.html","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/node/inu-doc-summary-node.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/node/inu-doc-summary-node.html","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/inu-doc-summary.ts","../../../projects/inugami-ng/components/inu-doc-item/inu-doc-summary/inu-doc-summary.html","../../../projects/inugami-ng/components/inu-doc-item/inugami-ng-components-inu-doc-item.ts"],"sourcesContent":["import {Component, contentChildren, effect, input, signal, viewChildren} from '@angular/core';\nimport {InuDocItemComponentData} from './inu-doc-item.model';\nimport {InuIcon} from 'inugami-icons';\nimport {UuidUtils} from 'inugami-ng/services';\n\n@Component({\n selector: 'inu-doc-item',\n standalone: true,\n providers: [],\n imports: [\n InuIcon\n ],\n templateUrl: './inu-doc-item.html',\n styleUrl: './inu-doc-item.scss',\n})\nexport class InuDocItem {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n readonly styleClass = input<string | undefined | null>('');\n readonly icon = input<string | null>('');\n readonly title = input<string | undefined | null>('');\n readonly href = input<string | undefined | null>('');\n readonly id = input<string | undefined | null>('');\n readonly level = input<number | undefined | null>(2);\n readonly children = contentChildren(InuDocItem);\n //\n _styleClass = signal<string>('');\n iconSize = signal<number>(1);\n data = signal<InuDocItemComponentData | undefined>(undefined);\n _data: InuDocItemComponentData | undefined = undefined;\n uid: string = UuidUtils.buildUid();\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n this.init();\n });\n }\n\n init() {\n const title = this.title() ? this.title() : '';\n const href = this.href() ? this.href() : '';\n const id = this.id() ? this.id() : '';\n const level = this.level() ? this.level() : 2;\n\n const fullHref: string[] = [];\n if (href) {\n fullHref.push(href);\n if (id) {\n fullHref.push(id);\n }\n }\n const value: InuDocItemComponentData = {\n title: title!,\n href: fullHref.join('#'),\n id: id!,\n level: level!\n }\n this._data = value;\n this.data.set(value);\n\n\n switch (level) {\n case 1:\n this.iconSize.set(3);\n break;\n case 2:\n this.iconSize.set(2);\n break;\n default :\n this.iconSize.set(1);\n break;\n }\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private initStyleClass() {\n const styles: string[] = ['inu-doc-item'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n\n const level = this.level();\n if (level) {\n styles.push(`level-${level}`);\n }\n this._styleClass.set(styles.join(\" \"));\n }\n}\n","<section [class]=\"_styleClass()\" >\n <header [id]=\"data()?.id\">\n @if(data()?.href) {\n <a [href]=\"data()?.href\" class=\"anchor-link\">\n <div class=\"anchor\">\n @if(icon()){\n <div class=\"inug-doc-item-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"iconSize()\"></inu-icon>\n </div>\n }\n @if(data()?.level==1){\n <h1 class=\"title\">{{data()?.title}}</h1>\n }\n @if(data()?.level==2){\n <h2 class=\"title\">{{data()?.title}}</h2>\n }\n @else if (data()?.level==3) {\n <h3 class=\"title\">{{data()?.title}}</h3>\n }\n @else if (data()?.level==4) {\n <h4 class=\"title\">{{data()?.title}}</h4>\n }\n @else if (data()?.level==5) {\n <h5 class=\"title\">{{data()?.title}}</h5>\n }\n @else {\n <h6 class=\"title\">{{data()?.title}}</h6>\n }\n <div class=\"anchor-icon\">\n <inu-icon icon=\"link\" [size]=\"1\"></inu-icon>\n </div>\n </div>\n </a>\n }\n @else{\n <div class=\"anchor\">\n @if(icon()){\n <div class=\"inug-doc-item-icon\">\n <inu-icon [icon]=\"icon()\" [size]=\"iconSize()\"></inu-icon>\n </div>\n }\n @if(data()?.level==1){\n <h1 class=\"title\">{{data()?.title}}</h1>\n }\n @if(data()?.level==2){\n <h2 class=\"title\">{{data()?.title}}</h2>\n }\n @else if (data()?.level==3) {\n <h3 class=\"title\">{{data()?.title}}</h3>\n }\n @else if (data()?.level==4) {\n <h4 class=\"title\">{{data()?.title}}</h4>\n }\n @else if (data()?.level==5) {\n <h5 class=\"title\">{{data()?.title}}</h5>\n }\n @else {\n <h6 class=\"title\">{{data()?.title}}</h6>\n }\n <div class=\"anchor-icon\">\n <inu-icon icon=\"link\" [size]=\"1\"></inu-icon>\n </div>\n </div>\n }\n\n </header>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</section>\n","import {Component, input} from '@angular/core';\nimport {InuDocItem} from '../../inu-doc-item';\nimport {TreeNode} from 'inugami-ng/models';\n\n@Component({\n selector: 'inu-doc-summary-node',\n standalone: true,\n providers: [],\n imports: [],\n templateUrl: './inu-doc-summary-node.html',\n styleUrl: './inu-doc-summary-node.scss',\n})\nexport class InuDocSummaryNode {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n nodes = input<TreeNode<InuDocItem>[] | undefined>(undefined);\n maxLevel = input<number>(3);\n //==================================================================================================================\n // BUILDER\n //==================================================================================================================\n buildHref(nodeValue: any): string {\n const result: string[] = [];\n const href = nodeValue.href();\n if (href) {\n result.push(href);\n const id = nodeValue.id();\n if (id) {\n result.push(id)\n }\n }\n\n\n return result.join('#');\n }\n\n\n protected getTitle(value: any): string {\n return value && value.title ? value.title : '';\n }\n\n protected computeClass(node: TreeNode<InuDocItem>): string {\n const result: string[] = [];\n result.push('level');\n result.push('level-' + node.level);\n return result.join(' ');\n }\n\n protected acceptedLevels(): boolean {\n const nodes = this.nodes();\n if (!nodes || nodes.length == 0) {\n return false;\n }\n\n const level = nodes[0].level + 1;\n const maxLevel = this.maxLevel();\n return level <= maxLevel;\n }\n}\n","@if (nodes() && acceptedLevels()) {\n <ul class=\"inu-doc-summary-node\">\n @for (node of nodes(); track node; ) {\n <li [class]=\"computeClass(node)\">\n <div class=\"inu-doc-summary-node-title\">\n @if (node.value?.href){\n <a [href]=\"node.value?.href\">\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n </a>\n } @else {\n <div class=\"inu-doc-summary-title\">{{node.value?.title!}}</div>\n }\n </div>\n @if (node.children){\n <inu-doc-summary-node [nodes]=\"node.children\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n </li>\n }\n </ul>\n}\n","import {AfterViewInit, Component, effect, input, signal} from '@angular/core';\nimport {InuDocItem} from '../inu-doc-item';\nimport {TreeNode} from 'inugami-ng/models';\nimport {InuDocSummaryNode} from './node/inu-doc-summary-node';\n\n@Component({\n selector: 'inu-doc-summary',\n standalone: true,\n providers: [],\n imports: [\n InuDocSummaryNode\n ],\n templateUrl: './inu-doc-summary.html',\n styleUrl: './inu-doc-summary.scss',\n})\nexport class InuDocSummary implements AfterViewInit{\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n styleClass = input<string | undefined | null>('');\n children = input<readonly InuDocItem[] | undefined>(undefined);\n maxLevel = input<number>(3);\n //\n _styleClass = signal<string>('');\n nodes = signal<TreeNode<InuDocItem>[]>([]);\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n this.init();\n });\n }\n\n ngAfterViewInit(): void {\n this.init();\n }\n\n init() {\n const children = this.children();\n if (!children) {\n return;\n }\n\n const compMap = new Map<string, any>();\n children.forEach(c => compMap.set(c.uid, c));\n\n const parentMap = new Map<string, string>(); // childUid -> parentUid\n children.forEach(parent => {\n const childrenOfThisParent = parent.children() || [];\n childrenOfThisParent.forEach((child: any) => {\n parentMap.set(child.uid, parent.uid);\n });\n });\n\n const roots = children.filter(c => !parentMap.has(c.uid));\n\n const result = roots.map(root => this.mapComponentToNode(root, 0));\n this.nodes.set(result);\n }\n\n private mapComponentToNode(comp: any, level: number): TreeNode<any> {\n return {\n uid: comp.uid,\n level: level,\n value: comp.data ? comp.data() : comp, // On récupère la valeur ou le composant\n children: comp.children()\n ? comp.children().map((child: any) => this.mapComponentToNode(child, level + 1))\n : []\n };\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private initStyleClass() {\n const styles: string[] = ['inu-doc-summary'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n\n\n this._styleClass.set(styles.join(\" \"));\n }\n}\n","<div [class]=\"_styleClass()\" >\n @if (nodes()){\n <inu-doc-summary-node [nodes]=\"nodes()\" [maxLevel]=\"maxLevel()\"> </inu-doc-summary-node>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAea,UAAU,CAAA;;;;AAMZ,IAAA,UAAU,GAAG,KAAK,CAA4B,EAAE,sDAAC;AACjD,IAAA,IAAI,GAAG,KAAK,CAAgB,EAAE,gDAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAA4B,EAAE,iDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAA4B,EAAE,gDAAC;AAC3C,IAAA,EAAE,GAAG,KAAK,CAA4B,EAAE,8CAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAA4B,CAAC,iDAAC;AAC3C,IAAA,QAAQ,GAAG,eAAe,CAAC,UAAU,oDAAC;;AAE/C,IAAA,WAAW,GAAG,MAAM,CAAS,EAAE,uDAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAS,CAAC,oDAAC;AAC5B,IAAA,IAAI,GAAG,MAAM,CAAsC,SAAS,gDAAC;IAC7D,KAAK,GAAwC,SAAS;AACtD,IAAA,GAAG,GAAW,SAAS,CAAC,QAAQ,EAAE;;;;AAKlC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AAC3C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QAE7C,MAAM,QAAQ,GAAa,EAAE;QAC7B,IAAI,IAAI,EAAE;AACR,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,EAAE;AACN,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB;QACF;AACA,QAAA,MAAM,KAAK,GAA4B;AACrC,YAAA,KAAK,EAAE,KAAM;AACb,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB,YAAA,EAAE,EAAE,EAAG;AACP,YAAA,KAAK,EAAE;SACR;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAGpB,QAAQ,KAAK;AACX,YAAA,KAAK,CAAC;AACJ,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB;AACF,YAAA,KAAK,CAAC;AACJ,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB;AACF,YAAA;AACE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB;;IAEN;;;;IAKQ,cAAc,GAAA;AACpB,QAAA,MAAM,MAAM,GAAa,CAAC,cAAc,CAAC;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAA,CAAE,CAAC;QAC/B;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC;uGAjFW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,uxBAPV,EAAE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAmBuB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BhD,moEAsEA,4mCD5DI,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKE,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,SAAA,EACL,EAAE,EAAA,OAAA,EACJ;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,moEAAA,EAAA,MAAA,EAAA,CAAA,ojCAAA,CAAA,EAAA;spBAgBmC,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEfnC,iBAAiB,CAAA;;;;AAM5B,IAAA,KAAK,GAAG,KAAK,CAAqC,SAAS,iDAAC;AAC5D,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;;;;AAI3B,IAAA,SAAS,CAAC,SAAc,EAAA;QACtB,MAAM,MAAM,GAAa,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE;QAC7B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE;YACzB,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB;QACF;AAGA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;AAGU,IAAA,QAAQ,CAAC,KAAU,EAAA;AAC3B,QAAA,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;IAChD;AAEU,IAAA,YAAY,CAAC,IAA0B,EAAA;QAC/C,MAAM,MAAM,GAAa,EAAE;AAC3B,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;IAEU,cAAc,GAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/B,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,KAAK,IAAI,QAAQ;IAC1B;uGA/CW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EALjB,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECPf,osBAoBA,olBDRa,iBAAiB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,SAAA,EACL,EAAE,WACJ,EAAE,EAAA,QAAA,EAAA,osBAAA,EAAA,MAAA,EAAA,CAAA,4hBAAA,CAAA,EAAA;;;MEOA,aAAa,CAAA;;;;AAMxB,IAAA,UAAU,GAAG,KAAK,CAA4B,EAAE,sDAAC;AACjD,IAAA,QAAQ,GAAG,KAAK,CAAoC,SAAS,oDAAC;AAC9D,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;;AAE3B,IAAA,WAAW,GAAG,MAAM,CAAS,EAAE,uDAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAAyB,EAAE,iDAAC;;;;AAK1C,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe;AACtC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE5C,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,QAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;YACxB,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;AACpD,YAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;gBAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AACtC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;IACxB;IAEQ,kBAAkB,CAAC,IAAS,EAAE,KAAa,EAAA;QACjD,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;kBACnB,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC/E,kBAAE;SACL;IACH;;;;IAKQ,cAAc,GAAA;AACpB,QAAA,MAAM,MAAM,GAAa,CAAC,iBAAiB,CAAC;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB;AAGA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC;uGAzEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAPb,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRf,qKAKA,4mCDKI,iBAAiB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,SAAA,EACL,EAAE,EAAA,OAAA,EACJ;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,qKAAA,EAAA,MAAA,EAAA,CAAA,ojCAAA,CAAA,EAAA;;;AEXH;;AAEG;;;;"}