primeng 16.0.2 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion.d.ts +35 -11
- package/api/translation.d.ts +23 -0
- package/api/treenode.d.ts +1 -1
- package/avatar/avatar.d.ts +11 -1
- package/breadcrumb/breadcrumb.d.ts +5 -1
- package/button/button.d.ts +3 -0
- package/chip/chip.d.ts +1 -0
- package/contextmenu/contextmenu.d.ts +157 -67
- package/dock/dock.d.ts +47 -2
- package/dom/domhandler.d.ts +1 -0
- package/esm2022/accordion/accordion.mjs +177 -43
- package/esm2022/api/primengconfig.mjs +75 -2
- package/esm2022/api/translation.mjs +1 -1
- package/esm2022/api/treenode.mjs +1 -1
- package/esm2022/autocomplete/autocomplete.mjs +3 -3
- package/esm2022/avatar/avatar.mjs +18 -4
- package/esm2022/blockui/blockui.mjs +19 -3
- package/esm2022/breadcrumb/breadcrumb.mjs +50 -33
- package/esm2022/button/button.mjs +4 -1
- package/esm2022/card/card.mjs +3 -3
- package/esm2022/chip/chip.mjs +18 -13
- package/esm2022/contextmenu/contextmenu.mjs +993 -547
- package/esm2022/divider/divider.mjs +3 -3
- package/esm2022/dock/dock.mjs +284 -86
- package/esm2022/dom/domhandler.mjs +19 -7
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +4 -1
- package/esm2022/fieldset/fieldset.mjs +59 -32
- package/esm2022/image/image.mjs +11 -3
- package/esm2022/inplace/inplace.mjs +18 -11
- package/esm2022/megamenu/megamenu.mjs +997 -348
- package/esm2022/menu/menu.mjs +397 -166
- package/esm2022/menubar/menubar.mjs +895 -282
- package/esm2022/orderlist/orderlist.mjs +9 -15
- package/esm2022/panel/panel.mjs +44 -33
- package/esm2022/panelmenu/panelmenu.mjs +982 -344
- package/esm2022/progressbar/progressbar.mjs +19 -15
- package/esm2022/progressspinner/progressspinner.mjs +5 -5
- package/esm2022/ripple/ripple.mjs +3 -1
- package/esm2022/scrollpanel/scrollpanel.mjs +195 -23
- package/esm2022/scrolltop/scrolltop.mjs +11 -2
- package/esm2022/skeleton/skeleton.mjs +3 -3
- package/esm2022/slidemenu/slidemenu.mjs +1059 -372
- package/esm2022/splitbutton/splitbutton.mjs +2 -2
- package/esm2022/splitter/splitter.mjs +160 -29
- package/esm2022/steps/steps.mjs +112 -22
- package/esm2022/table/table.mjs +13 -7
- package/esm2022/tabmenu/tabmenu.mjs +191 -63
- package/esm2022/tabview/tabview.mjs +173 -39
- package/esm2022/terminal/terminal.mjs +3 -3
- package/esm2022/tieredmenu/tieredmenu.mjs +868 -392
- package/esm2022/toolbar/toolbar.mjs +17 -10
- package/esm2022/tooltip/tooltip.mjs +1 -1
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/treetable/treetable.mjs +17 -17
- package/esm2022/utils/objectutils.mjs +31 -1
- package/esm2022/utils/uniquecomponentid.mjs +2 -3
- package/fesm2022/primeng-accordion.mjs +176 -42
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-api.mjs +74 -1
- package/fesm2022/primeng-api.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +2 -2
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-avatar.mjs +17 -3
- package/fesm2022/primeng-avatar.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +18 -2
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +49 -32
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +3 -0
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +2 -2
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +17 -12
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +992 -546
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +2 -2
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +283 -85
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-dom.mjs +18 -6
- package/fesm2022/primeng-dom.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +3 -0
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +57 -30
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +10 -2
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +17 -10
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +996 -348
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +396 -165
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +894 -281
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +8 -14
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +44 -33
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +981 -344
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +18 -14
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-progressspinner.mjs +4 -4
- package/fesm2022/primeng-progressspinner.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +2 -0
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +194 -22
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +10 -1
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-skeleton.mjs +2 -2
- package/fesm2022/primeng-skeleton.mjs.map +1 -1
- package/fesm2022/primeng-slidemenu.mjs +1058 -371
- package/fesm2022/primeng-slidemenu.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +1 -1
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +160 -29
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-steps.mjs +111 -21
- package/fesm2022/primeng-steps.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +12 -6
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +190 -62
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +172 -38
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-terminal.mjs +2 -2
- package/fesm2022/primeng-terminal.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +867 -391
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +16 -9
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +2 -2
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +16 -16
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/fesm2022/primeng-utils.mjs +31 -2
- package/fesm2022/primeng-utils.mjs.map +1 -1
- package/fieldset/fieldset.d.ts +6 -5
- package/image/image.d.ts +1 -0
- package/inplace/inplace.d.ts +6 -1
- package/megamenu/megamenu.d.ts +137 -15
- package/menu/menu.d.ts +64 -7
- package/menubar/menubar.d.ts +116 -22
- package/orderlist/orderlist.d.ts +2 -1
- package/package.json +124 -124
- package/panel/panel.d.ts +6 -5
- package/panelmenu/panelmenu.d.ts +134 -22
- package/resources/components/autocomplete/autocomplete.css +9 -8
- package/resources/components/breadcrumb/breadcrumb.css +9 -3
- package/resources/components/common/common.css +1 -1
- package/resources/components/contextmenu/contextmenu.css +1 -7
- package/resources/components/dock/dock.css +1 -1
- package/resources/components/megamenu/megamenu.css +9 -10
- package/resources/components/panelmenu/panelmenu.css +4 -2
- package/resources/components/slidemenu/slidemenu.css +40 -41
- package/resources/primeng.css +1 -1
- package/resources/primeng.min.css +1 -1
- package/resources/themes/arya-blue/theme.css +342 -390
- package/resources/themes/arya-green/theme.css +342 -390
- package/resources/themes/arya-orange/theme.css +342 -390
- package/resources/themes/arya-purple/theme.css +342 -390
- package/resources/themes/bootstrap4-dark-blue/theme.css +357 -416
- package/resources/themes/bootstrap4-dark-purple/theme.css +357 -416
- package/resources/themes/bootstrap4-light-blue/theme.css +369 -428
- package/resources/themes/bootstrap4-light-purple/theme.css +369 -428
- package/resources/themes/fluent-light/theme.css +352 -400
- package/resources/themes/lara-dark-blue/theme.css +344 -392
- package/resources/themes/lara-dark-indigo/theme.css +344 -392
- package/resources/themes/lara-dark-purple/theme.css +344 -392
- package/resources/themes/lara-dark-teal/theme.css +344 -392
- package/resources/themes/lara-light-blue/theme.css +370 -418
- package/resources/themes/lara-light-indigo/theme.css +370 -418
- package/resources/themes/lara-light-purple/theme.css +370 -418
- package/resources/themes/lara-light-teal/theme.css +370 -418
- package/resources/themes/luna-amber/theme.css +360 -408
- package/resources/themes/luna-blue/theme.css +360 -408
- package/resources/themes/luna-green/theme.css +360 -408
- package/resources/themes/luna-pink/theme.css +360 -408
- package/resources/themes/md-dark-deeppurple/theme.css +373 -403
- package/resources/themes/md-dark-indigo/theme.css +373 -403
- package/resources/themes/md-light-deeppurple/theme.css +373 -403
- package/resources/themes/md-light-indigo/theme.css +373 -403
- package/resources/themes/mdc-dark-deeppurple/theme.css +373 -403
- package/resources/themes/mdc-dark-indigo/theme.css +373 -403
- package/resources/themes/mdc-light-deeppurple/theme.css +373 -403
- package/resources/themes/mdc-light-indigo/theme.css +373 -403
- package/resources/themes/mira/theme.css +347 -395
- package/resources/themes/nano/theme.css +348 -396
- package/resources/themes/nova/theme.css +336 -384
- package/resources/themes/nova-accent/theme.css +336 -384
- package/resources/themes/nova-alt/theme.css +336 -384
- package/resources/themes/rhea/theme.css +336 -384
- package/resources/themes/saga-blue/theme.css +348 -396
- package/resources/themes/saga-green/theme.css +348 -396
- package/resources/themes/saga-orange/theme.css +348 -396
- package/resources/themes/saga-purple/theme.css +348 -396
- package/resources/themes/soho-dark/theme.css +362 -410
- package/resources/themes/soho-light/theme.css +370 -418
- package/resources/themes/tailwind-light/theme.css +361 -409
- package/resources/themes/vela-blue/theme.css +348 -396
- package/resources/themes/vela-green/theme.css +348 -396
- package/resources/themes/vela-orange/theme.css +348 -396
- package/resources/themes/vela-purple/theme.css +348 -396
- package/resources/themes/viva-dark/theme.css +342 -390
- package/resources/themes/viva-light/theme.css +348 -396
- package/scrollpanel/scrollpanel.d.ts +22 -4
- package/scrolltop/scrolltop.d.ts +6 -1
- package/slidemenu/slidemenu.d.ts +192 -88
- package/splitter/splitter.d.ts +18 -5
- package/steps/steps.d.ts +20 -3
- package/table/table.d.ts +3 -1
- package/tabmenu/tabmenu.d.ts +24 -1
- package/tabview/tabview.d.ts +26 -3
- package/tieredmenu/tieredmenu.d.ts +134 -50
- package/toolbar/toolbar.d.ts +6 -1
- package/tooltip/tooltip.d.ts +1 -1
- package/utils/objectutils.d.ts +4 -0
- package/utils/uniquecomponentid.d.ts +1 -1
@@ -194,5 +194,35 @@ export class ObjectUtils {
|
|
194
194
|
}
|
195
195
|
return obj2 || obj1;
|
196
196
|
}
|
197
|
+
static isPrintableCharacter(char = '') {
|
198
|
+
return this.isNotEmpty(char) && char.length === 1 && char.match(/\S| /);
|
199
|
+
}
|
200
|
+
static getItemValue(obj, ...params) {
|
201
|
+
return this.isFunction(obj) ? obj(...params) : obj;
|
202
|
+
}
|
203
|
+
static findLastIndex(arr, callback) {
|
204
|
+
let index = -1;
|
205
|
+
if (this.isNotEmpty(arr)) {
|
206
|
+
try {
|
207
|
+
index = arr.findLastIndex(callback);
|
208
|
+
}
|
209
|
+
catch {
|
210
|
+
index = arr.lastIndexOf([...arr].reverse().find(callback));
|
211
|
+
}
|
212
|
+
}
|
213
|
+
return index;
|
214
|
+
}
|
215
|
+
static findLast(arr, callback) {
|
216
|
+
let item;
|
217
|
+
if (this.isNotEmpty(arr)) {
|
218
|
+
try {
|
219
|
+
item = arr.findLast(callback);
|
220
|
+
}
|
221
|
+
catch {
|
222
|
+
item = [...arr].reverse().find(callback);
|
223
|
+
}
|
224
|
+
}
|
225
|
+
return item;
|
226
|
+
}
|
197
227
|
}
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0dXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvb2JqZWN0dXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQVMsRUFBRSxJQUFTLEVBQUUsS0FBYztRQUNyRCxJQUFJLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7WUFDdkYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTLEVBQUUsSUFBUztRQUM1QyxJQUFJLElBQUksS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFL0IsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDcEUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQzFCLENBQUMsRUFDRCxNQUFNLEVBQ04sR0FBRyxDQUFDO1lBRVIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNkLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNyQixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFDeEMsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7b0JBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxh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LENBQUM7U0FDL0M7YUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDM0csT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QztRQUVELE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKG9iajE6IGFueSwgb2JqMjogYW55LCBmaWVsZD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZmllbGQpIHJldHVybiB0aGlzLnJlc29sdmVGaWVsZERhdGEob2JqMSwgZmllbGQpID09PSB0aGlzLnJlc29sdmVGaWVsZERhdGEob2JqMiwgZmllbGQpO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmVxdWFsc0J5VmFsdWUob2JqMSwgb2JqMik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBlcXVhbHNCeVZhbHVlKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChvYmoxID09PSBvYmoyKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBpZiAob2JqMSAmJiBvYmoyICYmIHR5cGVvZiBvYmoxID09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoyID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB2YXIgYXJyQSA9IEFycmF5LmlzQXJyYXkob2JqMSksXG4gICAgICAgICAgICAgICAgYXJyQiA9IEFycmF5LmlzQXJyYXkob2JqMiksXG4gICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgICAgICAga2V5O1xuXG4gICAgICAgICAgICBpZiAoYXJyQSAmJiBhcnJCKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gb2JqMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCAhPSBvYmoyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOyApIGlmICghdGhpcy5lcXVhbHNCeVZhbHVlKG9iajFbaV0sIG9iajJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhcnJBICE9IGFyckIpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgdmFyIGRhdGVBID0gdGhpcy5pc0RhdGUob2JqMSksXG4gICAgICAgICAgICAgICAgZGF0ZUIgPSB0aGlzLmlzRGF0ZShvYmoyKTtcbiAgICAgICAgICAgIGlmIChkYXRlQSAhPSBkYXRlQikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKGRhdGVBICYmIGRhdGVCKSByZXR1cm4gb2JqMS5nZXRUaW1lKCkgPT0gb2JqMi5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgIHZhciByZWdleHBBID0gb2JqMSBpbnN0YW5jZW9mIFJlZ0V4cCxcbiAgICAgICAgICAgICAgICByZWdleHBCID0gb2JqMiBpbnN0YW5jZW9mIFJlZ0V4cDtcbiAgICAgICAgICAgIGlmIChyZWdleHBBICE9IHJlZ2V4cEIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChyZWdleHBBICYmIHJlZ2V4cEIpIHJldHVybiBvYmoxLnRvU3RyaW5nKCkgPT0gb2JqMi50b1N0cmluZygpO1xuXG4gICAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iajEpO1xuICAgICAgICAgICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKG9iajIpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDsgKSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmoyLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDsgKSB7XG4gICAgICAgICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXF1YWxzQnlWYWx1ZShvYmoxW2tleV0sIG9iajJba2V5XSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqMSAhPT0gb2JqMSAmJiBvYmoyICE9PSBvYmoyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVzb2x2ZUZpZWxkRGF0YShkYXRhOiBhbnksIGZpZWxkOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAoZGF0YSAmJiBmaWVsZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGdW5jdGlvbihmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQoZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmluZGV4T2YoJy4nKSA9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2ZpZWxkXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkczogc3RyaW5nW10gPSBmaWVsZC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGZpZWxkcy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtmaWVsZHNbaV1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNGdW5jdGlvbihvYmo6IGFueSkge1xuICAgICAgICByZXR1cm4gISEob2JqICYmIG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY2FsbCAmJiBvYmouYXBwbHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVvcmRlckFycmF5KHZhbHVlOiBhbnlbXSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgICAgIGxldCB0YXJnZXQ6IG51bWJlcjtcbiAgICAgICAgaWYgKHZhbHVlICYmIGZyb20gIT09IHRvKSB7XG4gICAgICAgICAgICBpZiAodG8gPj0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdG8gJT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZyb20gJT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUuc3BsaWNlKHRvLCAwLCB2YWx1ZS5zcGxpY2UoZnJvbSwgMSlbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnNlcnRJbnRvT3JkZXJlZEFycmF5KGl0ZW06IGFueSwgaW5kZXg6IG51bWJlciwgYXJyOiBhbnlbXSwgc291cmNlQXJyOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBpbmplY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuZmluZEluZGV4SW5MaXN0KGFycltpXSwgc291cmNlQXJyKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1JbmRleCA+IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGFyci5zcGxpY2UoaSwgMCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGluamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgYXJyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZEluZGV4SW5MaXN0KGl0ZW06IGFueSwgbGlzdDogYW55KTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RbaV0gPT0gaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbnRhaW5zKHZhbHVlLCBsaXN0KSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIGxpc3QgJiYgbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiBsaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXF1YWxzKHZhbHVlLCB2YWwpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUFjY2VudHMoc3RyKSB7XG4gICAgICAgIGlmIChzdHIgJiYgc3RyLnNlYXJjaCgvW1xceEMwLVxceEZGXS9nKSA+IC0xKSB7XG4gICAgICAgICAgICBzdHIgPSBzdHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEMwLVxceEM1XS9nLCAnQScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhDNl0vZywgJ0FFJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEM3XS9nLCAnQycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhDOC1cXHhDQl0vZywgJ0UnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4Q0MtXFx4Q0ZdL2csICdJJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEQwXS9nLCAnRCcpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhEMV0vZywgJ04nKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RDItXFx4RDZcXHhEOF0vZywgJ08nKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RDktXFx4RENdL2csICdVJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEREXS9nLCAnWScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhERV0vZywgJ1AnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTAtXFx4RTVdL2csICdhJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEU2XS9nLCAnYWUnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTddL2csICdjJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEU4LVxceEVCXS9nLCAnZScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhFQy1cXHhFRl0vZywgJ2knKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RjFdL2csICduJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEYyLVxceEY2XFx4RjhdL2csICdvJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEY5LVxceEZDXS9nLCAndScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhGRV0vZywgJ3AnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RkRcXHhGRl0vZywgJ3knKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0RhdGUoaW5wdXQ6IGFueSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgKCF0aGlzLmlzRGF0ZSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzTm90RW1wdHkodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRW1wdHkodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZSh2YWx1ZTEsIHZhbHVlMiwgbG9jYWxlLCBvcmRlciA9IDEpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IC0xO1xuICAgICAgICBjb25zdCBlbXB0eVZhbHVlMSA9IHRoaXMuaXNFbXB0eSh2YWx1ZTEpO1xuICAgICAgICBjb25zdCBlbXB0eVZhbHVlMiA9IHRoaXMuaXNFbXB0eSh2YWx1ZTIpO1xuXG4gICAgICAgIGlmIChlbXB0eVZhbHVlMSAmJiBlbXB0eVZhbHVlMikgcmVzdWx0ID0gMDtcbiAgICAgICAgZWxzZSBpZiAoZW1wdHlWYWx1ZTEpIHJlc3VsdCA9IG9yZGVyO1xuICAgICAgICBlbHNlIGlmIChlbXB0eVZhbHVlMikgcmVzdWx0ID0gLW9yZGVyO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJykgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCBsb2NhbGUsIHsgbnVtZXJpYzogdHJ1ZSB9KTtcbiAgICAgICAgZWxzZSByZXN1bHQgPSB2YWx1ZTEgPCB2YWx1ZTIgPyAtMSA6IHZhbHVlMSA+IHZhbHVlMiA/IDEgOiAwO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0KHZhbHVlMSwgdmFsdWUyLCBvcmRlciA9IDEsIGxvY2FsZSwgbnVsbFNvcnRPcmRlciA9IDEpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0VXRpbHMuY29tcGFyZSh2YWx1ZTEsIHZhbHVlMiwgbG9jYWxlLCBvcmRlcik7XG4gICAgICAgIC8vIG51bGxTb3J0T3JkZXIgPT0gMSBtZWFucyBFeGNlbCBsaWtlIHNvcnQgbnVsbHMgYXQgYm90dG9tXG4gICAgICAgIGNvbnN0IGZpbmFsU29ydE9yZGVyID0gbnVsbFNvcnRPcmRlciA9PT0gMSA/IG9yZGVyIDogbnVsbFNvcnRPcmRlcjtcblxuICAgICAgICByZXR1cm4gZmluYWxTb3J0T3JkZXIgKiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZShvYmoxPzogYW55LCBvYmoyPzogYW55KTogYW55IHtcbiAgICAgICAgaWYgKG9iajEgPT0gdW5kZWZpbmVkICYmIG9iajIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKChvYmoxID09IHVuZGVmaW5lZCB8fCB0eXBlb2Ygb2JqMSA9PT0gJ29iamVjdCcpICYmIChvYmoyID09IHVuZGVmaW5lZCB8fCB0eXBlb2Ygb2JqMiA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi4ob2JqMSB8fCB7fSksIC4uLihvYmoyIHx8IHt9KSB9O1xuICAgICAgICB9IGVsc2UgaWYgKChvYmoxID09IHVuZGVmaW5lZCB8fCB0eXBlb2Ygb2JqMSA9PT0gJ3N0cmluZycpICYmIChvYmoyID09IHVuZGVmaW5lZCB8fCB0eXBlb2Ygb2JqMiA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICByZXR1cm4gW29iajEgfHwgJycsIG9iajIgfHwgJyddLmpvaW4oJyAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmoyIHx8IG9iajE7XG4gICAgfVxufVxuIl19
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0dXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvb2JqZWN0dXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQVMsRUFBRSxJQUFTLEVBQUUsS0FBYztRQUNyRCxJQUFJLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7WUFDdkYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTLEVBQUUsSUFBUztRQUM1QyxJQUFJLElBQUksS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFL0IsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDcEUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQzFCLENBQUMsRUFDRCxNQUFNLEVBQ04sR0FBRyxDQUFDO1lBRVIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNkLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNyQixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFDeEMsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7b0JBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxh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RDtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVE7UUFDaEMsSUFBSSxJQUFJLENBQUM7UUFFVCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSTtnQkFDQSxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztZQUFDLE1BQU07Z0JBQ0osSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBPYmplY3RVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyBlcXVhbHMob2JqMTogYW55LCBvYmoyOiBhbnksIGZpZWxkPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaWVsZCkgcmV0dXJuIHRoaXMucmVzb2x2ZUZpZWxkRGF0YShvYmoxLCBmaWVsZCkgPT09IHRoaXMucmVzb2x2ZUZpZWxkRGF0YShvYmoyLCBmaWVsZCk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHRoaXMuZXF1YWxzQnlWYWx1ZShvYmoxLCBvYmoyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVxdWFsc0J5VmFsdWUob2JqMTogYW55LCBvYmoyOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKG9iajEgPT09IG9iajIpIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGlmIChvYmoxICYmIG9iajIgJiYgdHlwZW9mIG9iajEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iajIgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHZhciBhcnJBID0gQXJyYXkuaXNBcnJheShvYmoxKSxcbiAgICAgICAgICAgICAgICBhcnJCID0gQXJyYXkuaXNBcnJheShvYmoyKSxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgICAgICBrZXk7XG5cbiAgICAgICAgICAgIGlmIChhcnJBICYmIGFyckIpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBvYmoxLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoICE9IG9iajIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7ICkgaWYgKCF0aGlzLmVxdWFsc0J5VmFsdWUob2JqMVtpXSwgb2JqMltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFyckEgIT0gYXJyQikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICB2YXIgZGF0ZUEgPSB0aGlzLmlzRGF0ZShvYmoxKSxcbiAgICAgICAgICAgICAgICBkYXRlQiA9IHRoaXMuaXNEYXRlKG9iajIpO1xuICAgICAgICAgICAgaWYgKGRhdGVBICE9IGRhdGVCKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZGF0ZUEgJiYgZGF0ZUIpIHJldHVybiBvYmoxLmdldFRpbWUoKSA9PSBvYmoyLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgdmFyIHJlZ2V4cEEgPSBvYmoxIGluc3RhbmNlb2YgUmVnRXhwLFxuICAgICAgICAgICAgICAgIHJlZ2V4cEIgPSBvYmoyIGluc3RhbmNlb2YgUmVnRXhwO1xuICAgICAgICAgICAgaWYgKHJlZ2V4cEEgIT0gcmVnZXhwQikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKHJlZ2V4cEEgJiYgcmVnZXhwQikgcmV0dXJuIG9iajEudG9TdHJpbmcoKSA9PSBvYmoyLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqMSk7XG4gICAgICAgICAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMob2JqMikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOyApIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iajIsIGtleXNbaV0pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOyApIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lcXVhbHNCeVZhbHVlKG9iajFba2V5XSwgb2JqMltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmoxICE9PSBvYmoxICYmIG9iajIgIT09IG9iajI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlRmllbGREYXRhKGRhdGE6IGFueSwgZmllbGQ6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChkYXRhICYmIGZpZWxkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Z1bmN0aW9uKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZChkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuaW5kZXhPZignLicpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbZmllbGRdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgZmllbGRzOiBzdHJpbmdbXSA9IGZpZWxkLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZGF0YTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZmllbGRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlW2ZpZWxkc1tpXV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0Z1bmN0aW9uKG9iajogYW55KSB7XG4gICAgICAgIHJldHVybiAhIShvYmogJiYgb2JqLmNvbnN0cnVjdG9yICYmIG9iai5jYWxsICYmIG9iai5hcHBseSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW9yZGVyQXJyYXkodmFsdWU6IGFueVtdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHRhcmdldDogbnVtYmVyO1xuICAgICAgICBpZiAodmFsdWUgJiYgZnJvbSAhPT0gdG8pIHtcbiAgICAgICAgICAgIGlmICh0byA+PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0byAlPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZnJvbSAlPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZS5zcGxpY2UodG8sIDAsIHZhbHVlLnNwbGljZShmcm9tLCAxKVswXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc2VydEludG9PcmRlcmVkQXJyYXkoaXRlbTogYW55LCBpbmRleDogbnVtYmVyLCBhcnI6IGFueVtdLCBzb3VyY2VBcnI6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmIChhcnIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGluamVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50SXRlbUluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkxpc3QoYXJyW2ldLCBzb3VyY2VBcnIpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShpLCAwLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaW5qZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFyci5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kSW5kZXhJbkxpc3QoaXRlbTogYW55LCBsaXN0OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IC0xO1xuXG4gICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobGlzdFtpXSA9PSBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29udGFpbnModmFsdWUsIGxpc3QpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgbGlzdCAmJiBsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIGxpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lcXVhbHModmFsdWUsIHZhbCkpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQWNjZW50cyhzdHIpIHtcbiAgICAgICAgaWYgKHN0ciAmJiBzdHIuc2VhcmNoKC9bXFx4QzAtXFx4RkZdL2cpID4gLTEpIHtcbiAgICAgICAgICAgIHN0ciA9IHN0clxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4QzAtXFx4QzVdL2csICdBJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEM2XS9nLCAnQUUnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4QzddL2csICdDJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEM4LVxceENCXS9nLCAnRScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhDQy1cXHhDRl0vZywgJ0knKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RDBdL2csICdEJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEQxXS9nLCAnTicpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhEMi1cXHhENlxceEQ4XS9nLCAnTycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhEOS1cXHhEQ10vZywgJ1UnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RERdL2csICdZJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceERFXS9nLCAnUCcpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhFMC1cXHhFNV0vZywgJ2EnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTZdL2csICdhZScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhFN10vZywgJ2MnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTgtXFx4RUJdL2csICdlJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEVDLVxceEVGXS9nLCAnaScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhGMV0vZywgJ24nKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RjItXFx4RjZcXHhGOF0vZywgJ28nKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RjktXFx4RkNdL2csICd1JylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEZFXS9nLCAncCcpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhGRFxceEZGXS9nLCAneScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRGF0ZShpbnB1dDogYW55KSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSc7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0VtcHR5KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fCAoIXRoaXMuaXNEYXRlKHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNOb3RFbXB0eSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNFbXB0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb21wYXJlKHZhbHVlMSwgdmFsdWUyLCBsb2NhbGUsIG9yZGVyID0gMSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gLTE7XG4gICAgICAgIGNvbnN0IGVtcHR5VmFsdWUxID0gdGhpcy5pc0VtcHR5KHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IGVtcHR5VmFsdWUyID0gdGhpcy5pc0VtcHR5KHZhbHVlMik7XG5cbiAgICAgICAgaWYgKGVtcHR5VmFsdWUxICYmIGVtcHR5VmFsdWUyKSByZXN1bHQgPSAwO1xuICAgICAgICBlbHNlIGlmIChlbXB0eVZhbHVlMSkgcmVzdWx0ID0gb3JkZXI7XG4gICAgICAgIGVsc2UgaWYgKGVtcHR5VmFsdWUyKSByZXN1bHQgPSAtb3JkZXI7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKSByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIGxvY2FsZSwgeyBudW1lcmljOiB0cnVlIH0pO1xuICAgICAgICBlbHNlIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogdmFsdWUxID4gdmFsdWUyID8gMSA6IDA7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNvcnQodmFsdWUxLCB2YWx1ZTIsIG9yZGVyID0gMSwgbG9jYWxlLCBudWxsU29ydE9yZGVyID0gMSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3RVdGlscy5jb21wYXJlKHZhbHVlMSwgdmFsdWUyLCBsb2NhbGUsIG9yZGVyKTtcbiAgICAgICAgLy8gbnVsbFNvcnRPcmRlciA9PSAxIG1lYW5zIEV4Y2VsIGxpa2Ugc29ydCBudWxscyBhdCBib3R0b21cbiAgICAgICAgY29uc3QgZmluYWxTb3J0T3JkZXIgPSBudWxsU29ydE9yZGVyID09PSAxID8gb3JkZXIgOiBudWxsU29ydE9yZGVyO1xuXG4gICAgICAgIHJldHVybiBmaW5hbFNvcnRPcmRlciAqIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlKG9iajE/OiBhbnksIG9iajI/OiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAob2JqMSA9PSB1bmRlZmluZWQgJiYgb2JqMiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoKG9iajEgPT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBvYmoxID09PSAnb2JqZWN0JykgJiYgKG9iajIgPT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBvYmoyID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLihvYmoxIHx8IHt9KSwgLi4uKG9iajIgfHwge30pIH07XG4gICAgICAgIH0gZWxzZSBpZiAoKG9iajEgPT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBvYmoxID09PSAnc3RyaW5nJykgJiYgKG9iajIgPT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBvYmoyID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgIHJldHVybiBbb2JqMSB8fCAnJywgb2JqMiB8fCAnJ10uam9pbignICcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajIgfHwgb2JqMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzUHJpbnRhYmxlQ2hhcmFjdGVyKGNoYXIgPSAnJykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdEVtcHR5KGNoYXIpICYmIGNoYXIubGVuZ3RoID09PSAxICYmIGNoYXIubWF0Y2goL1xcU3wgLyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJdGVtVmFsdWUob2JqLCAuLi5wYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGdW5jdGlvbihvYmopID8gb2JqKC4uLnBhcmFtcykgOiBvYmo7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kTGFzdEluZGV4KGFyciwgY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNOb3RFbXB0eShhcnIpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gYXJyLmZpbmRMYXN0SW5kZXgoY2FsbGJhY2spO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBhcnIubGFzdEluZGV4T2YoWy4uLmFycl0ucmV2ZXJzZSgpLmZpbmQoY2FsbGJhY2spKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbmRMYXN0KGFyciwgY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGl0ZW07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNOb3RFbXB0eShhcnIpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSBhcnIuZmluZExhc3QoY2FsbGJhY2spO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IFsuLi5hcnJdLnJldmVyc2UoKS5maW5kKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,7 +1,6 @@
|
|
1
1
|
export var lastId = 0;
|
2
|
-
export function UniqueComponentId() {
|
3
|
-
let prefix = 'pr_id_';
|
2
|
+
export function UniqueComponentId(prefix = 'pn_id_') {
|
4
3
|
lastId++;
|
5
4
|
return `${prefix}${lastId}`;
|
6
5
|
}
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlY29tcG9uZW50aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvdW5pcXVlY29tcG9uZW50aWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUV0QixNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLFFBQVE7SUFDL0MsTUFBTSxFQUFFLENBQUM7SUFFVCxPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGxhc3RJZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVDb21wb25lbnRJZChwcmVmaXggPSAncG5faWRfJykge1xuICAgIGxhc3RJZCsrO1xuXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke2xhc3RJZH1gO1xufVxuIl19
|
@@ -2,18 +2,25 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
2
2
|
import * as i1 from '@angular/common';
|
3
3
|
import { CommonModule } from '@angular/common';
|
4
4
|
import * as i0 from '@angular/core';
|
5
|
-
import { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';
|
5
|
+
import { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, HostListener, NgModule } from '@angular/core';
|
6
6
|
import { Header, PrimeTemplate, SharedModule } from 'primeng/api';
|
7
|
+
import { DomHandler } from 'primeng/dom';
|
7
8
|
import { ChevronDownIcon } from 'primeng/icons/chevrondown';
|
8
9
|
import { ChevronRightIcon } from 'primeng/icons/chevronright';
|
10
|
+
import { UniqueComponentId } from 'primeng/utils';
|
9
11
|
|
10
|
-
let idx = 0;
|
11
12
|
/**
|
12
13
|
* AccordionTab is a helper component for Accordion.
|
13
14
|
* @group Components
|
14
15
|
*/
|
15
16
|
class AccordionTab {
|
17
|
+
el;
|
16
18
|
changeDetector;
|
19
|
+
/**
|
20
|
+
* Current id state as a string.
|
21
|
+
* @group Props
|
22
|
+
*/
|
23
|
+
id;
|
17
24
|
/**
|
18
25
|
* Used to define the header of the tab.
|
19
26
|
* @group Props
|
@@ -69,15 +76,6 @@ class AccordionTab {
|
|
69
76
|
* @group Props
|
70
77
|
*/
|
71
78
|
iconPos = 'start';
|
72
|
-
/**
|
73
|
-
* Event triggered by changing the choice.
|
74
|
-
* @param {boolean} value - Boolean value indicates that the option is changed.
|
75
|
-
* @group Emits
|
76
|
-
*/
|
77
|
-
selectedChange = new EventEmitter();
|
78
|
-
headerFacet;
|
79
|
-
templates;
|
80
|
-
_selected = false;
|
81
79
|
/**
|
82
80
|
* The value that returns the selection.
|
83
81
|
* @group Props
|
@@ -94,6 +92,15 @@ class AccordionTab {
|
|
94
92
|
this.changeDetector.detectChanges();
|
95
93
|
}
|
96
94
|
}
|
95
|
+
/**
|
96
|
+
* Event triggered by changing the choice.
|
97
|
+
* @param {boolean} value - Boolean value indicates that the option is changed.
|
98
|
+
* @group Emits
|
99
|
+
*/
|
100
|
+
selectedChange = new EventEmitter();
|
101
|
+
headerFacet;
|
102
|
+
templates;
|
103
|
+
_selected = false;
|
97
104
|
get iconClass() {
|
98
105
|
if (this.iconPos === 'end') {
|
99
106
|
return 'p-accordion-toggle-icon-end';
|
@@ -105,12 +112,13 @@ class AccordionTab {
|
|
105
112
|
contentTemplate;
|
106
113
|
headerTemplate;
|
107
114
|
iconTemplate;
|
108
|
-
id = `p-accordiontab-${idx++}`;
|
109
115
|
loaded = false;
|
110
116
|
accordion;
|
111
|
-
constructor(accordion, changeDetector) {
|
117
|
+
constructor(accordion, el, changeDetector) {
|
118
|
+
this.el = el;
|
112
119
|
this.changeDetector = changeDetector;
|
113
120
|
this.accordion = accordion;
|
121
|
+
this.id = UniqueComponentId();
|
114
122
|
}
|
115
123
|
ngAfterContentInit() {
|
116
124
|
this.templates.forEach((item) => {
|
@@ -172,18 +180,29 @@ class AccordionTab {
|
|
172
180
|
return this.headerFacet && this.headerFacet.length > 0;
|
173
181
|
}
|
174
182
|
onKeydown(event) {
|
175
|
-
|
176
|
-
|
177
|
-
|
183
|
+
switch (event.code) {
|
184
|
+
case 'Enter':
|
185
|
+
case 'Space':
|
186
|
+
this.toggle(event);
|
187
|
+
event.preventDefault(); // ???
|
188
|
+
break;
|
189
|
+
default:
|
190
|
+
break;
|
178
191
|
}
|
179
192
|
}
|
193
|
+
getTabHeaderActionId(tabId) {
|
194
|
+
return `${tabId}_header_action`;
|
195
|
+
}
|
196
|
+
getTabContentId(tabId) {
|
197
|
+
return `${tabId}_content`;
|
198
|
+
}
|
180
199
|
ngOnDestroy() {
|
181
200
|
this.accordion.tabs.splice(this.findTabIndex(), 1);
|
182
201
|
}
|
183
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
184
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: AccordionTab, selector: "p-accordionTab", inputs: { header: "header", headerStyle: "headerStyle", tabStyle: "tabStyle", contentStyle: "contentStyle", tabStyleClass: "tabStyleClass", headerStyleClass: "headerStyleClass", contentStyleClass: "contentStyleClass", disabled: "disabled", cache: "cache", transitionOptions: "transitionOptions", iconPos: "iconPos", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", predicate: Header }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
|
185
|
-
<div class="p-accordion-tab" [class.p-accordion-tab-active]="selected" [ngClass]="tabStyleClass" [ngStyle]="tabStyle">
|
186
|
-
<div class="p-accordion-header" [class.p-highlight]="selected" [class.p-disabled]="disabled">
|
202
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
203
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: AccordionTab, selector: "p-accordionTab", inputs: { id: "id", header: "header", headerStyle: "headerStyle", tabStyle: "tabStyle", contentStyle: "contentStyle", tabStyleClass: "tabStyleClass", headerStyleClass: "headerStyleClass", contentStyleClass: "contentStyleClass", disabled: "disabled", cache: "cache", transitionOptions: "transitionOptions", iconPos: "iconPos", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", predicate: Header }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
|
204
|
+
<div class="p-accordion-tab" [class.p-accordion-tab-active]="selected" [ngClass]="tabStyleClass" [ngStyle]="tabStyle" [attr.data-pc-name]="'accordiontab'">
|
205
|
+
<div class="p-accordion-header" [class.p-highlight]="selected" [class.p-disabled]="disabled" [attr.data-p-disabled]="disabled" [attr.data-pc-section]="'header'">
|
187
206
|
<a
|
188
207
|
[ngClass]="headerStyleClass"
|
189
208
|
[style]="headerStyle"
|
@@ -192,18 +211,20 @@ class AccordionTab {
|
|
192
211
|
(click)="toggle($event)"
|
193
212
|
(keydown)="onKeydown($event)"
|
194
213
|
[attr.tabindex]="disabled ? null : 0"
|
195
|
-
[attr.id]="id"
|
196
|
-
[attr.aria-controls]="id
|
214
|
+
[attr.id]="getTabHeaderActionId(id)"
|
215
|
+
[attr.aria-controls]="getTabContentId(id)"
|
197
216
|
[attr.aria-expanded]="selected"
|
217
|
+
[attr.aria-disabled]="disabled"
|
218
|
+
[attr.data-pc-section]="'headeraction'"
|
198
219
|
>
|
199
220
|
<ng-container *ngIf="!iconTemplate">
|
200
221
|
<ng-container *ngIf="selected">
|
201
|
-
<span *ngIf="accordion.collapseIcon" [class]="accordion.collapseIcon" [ngClass]="iconClass"></span>
|
202
|
-
<ChevronDownIcon *ngIf="!accordion.collapseIcon" [ngClass]="iconClass" />
|
222
|
+
<span *ngIf="accordion.collapseIcon" [class]="accordion.collapseIcon" [ngClass]="iconClass" [attr.aria-hidden]="true"></span>
|
223
|
+
<ChevronDownIcon *ngIf="!accordion.collapseIcon" [ngClass]="iconClass" [attr.aria-hidden]="true" />
|
203
224
|
</ng-container>
|
204
225
|
<ng-container *ngIf="!selected">
|
205
|
-
<span *ngIf="accordion.expandIcon" [class]="accordion.expandIcon" [ngClass]="iconClass"></span>
|
206
|
-
<ChevronRightIcon *ngIf="!accordion.expandIcon" [ngClass]="iconClass" />
|
226
|
+
<span *ngIf="accordion.expandIcon" [class]="accordion.expandIcon" [ngClass]="iconClass" [attr.aria-hidden]="true"></span>
|
227
|
+
<ChevronRightIcon *ngIf="!accordion.expandIcon" [ngClass]="iconClass" [attr.aria-hidden]="true" />
|
207
228
|
</ng-container>
|
208
229
|
</ng-container>
|
209
230
|
<ng-template *ngTemplateOutlet="iconTemplate; context: { $implicit: selected }"></ng-template>
|
@@ -215,12 +236,13 @@ class AccordionTab {
|
|
215
236
|
</a>
|
216
237
|
</div>
|
217
238
|
<div
|
218
|
-
[attr.id]="id
|
239
|
+
[attr.id]="getTabContentId(id)"
|
219
240
|
class="p-toggleable-content"
|
220
241
|
[@tabContent]="selected ? { value: 'visible', params: { transitionParams: transitionOptions } } : { value: 'hidden', params: { transitionParams: transitionOptions } }"
|
221
242
|
role="region"
|
222
243
|
[attr.aria-hidden]="!selected"
|
223
|
-
[attr.aria-labelledby]="id"
|
244
|
+
[attr.aria-labelledby]="getTabHeaderActionId(id)"
|
245
|
+
[attr.data-pc-section]="'toggleablecontent'"
|
224
246
|
>
|
225
247
|
<div class="p-accordion-content" [ngClass]="contentStyleClass" [ngStyle]="contentStyle">
|
226
248
|
<ng-content></ng-content>
|
@@ -246,8 +268,8 @@ class AccordionTab {
|
|
246
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AccordionTab, decorators: [{
|
247
269
|
type: Component,
|
248
270
|
args: [{ selector: 'p-accordionTab', template: `
|
249
|
-
<div class="p-accordion-tab" [class.p-accordion-tab-active]="selected" [ngClass]="tabStyleClass" [ngStyle]="tabStyle">
|
250
|
-
<div class="p-accordion-header" [class.p-highlight]="selected" [class.p-disabled]="disabled">
|
271
|
+
<div class="p-accordion-tab" [class.p-accordion-tab-active]="selected" [ngClass]="tabStyleClass" [ngStyle]="tabStyle" [attr.data-pc-name]="'accordiontab'">
|
272
|
+
<div class="p-accordion-header" [class.p-highlight]="selected" [class.p-disabled]="disabled" [attr.data-p-disabled]="disabled" [attr.data-pc-section]="'header'">
|
251
273
|
<a
|
252
274
|
[ngClass]="headerStyleClass"
|
253
275
|
[style]="headerStyle"
|
@@ -256,18 +278,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
256
278
|
(click)="toggle($event)"
|
257
279
|
(keydown)="onKeydown($event)"
|
258
280
|
[attr.tabindex]="disabled ? null : 0"
|
259
|
-
[attr.id]="id"
|
260
|
-
[attr.aria-controls]="id
|
281
|
+
[attr.id]="getTabHeaderActionId(id)"
|
282
|
+
[attr.aria-controls]="getTabContentId(id)"
|
261
283
|
[attr.aria-expanded]="selected"
|
284
|
+
[attr.aria-disabled]="disabled"
|
285
|
+
[attr.data-pc-section]="'headeraction'"
|
262
286
|
>
|
263
287
|
<ng-container *ngIf="!iconTemplate">
|
264
288
|
<ng-container *ngIf="selected">
|
265
|
-
<span *ngIf="accordion.collapseIcon" [class]="accordion.collapseIcon" [ngClass]="iconClass"></span>
|
266
|
-
<ChevronDownIcon *ngIf="!accordion.collapseIcon" [ngClass]="iconClass" />
|
289
|
+
<span *ngIf="accordion.collapseIcon" [class]="accordion.collapseIcon" [ngClass]="iconClass" [attr.aria-hidden]="true"></span>
|
290
|
+
<ChevronDownIcon *ngIf="!accordion.collapseIcon" [ngClass]="iconClass" [attr.aria-hidden]="true" />
|
267
291
|
</ng-container>
|
268
292
|
<ng-container *ngIf="!selected">
|
269
|
-
<span *ngIf="accordion.expandIcon" [class]="accordion.expandIcon" [ngClass]="iconClass"></span>
|
270
|
-
<ChevronRightIcon *ngIf="!accordion.expandIcon" [ngClass]="iconClass" />
|
293
|
+
<span *ngIf="accordion.expandIcon" [class]="accordion.expandIcon" [ngClass]="iconClass" [attr.aria-hidden]="true"></span>
|
294
|
+
<ChevronRightIcon *ngIf="!accordion.expandIcon" [ngClass]="iconClass" [attr.aria-hidden]="true" />
|
271
295
|
</ng-container>
|
272
296
|
</ng-container>
|
273
297
|
<ng-template *ngTemplateOutlet="iconTemplate; context: { $implicit: selected }"></ng-template>
|
@@ -279,12 +303,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
279
303
|
</a>
|
280
304
|
</div>
|
281
305
|
<div
|
282
|
-
[attr.id]="id
|
306
|
+
[attr.id]="getTabContentId(id)"
|
283
307
|
class="p-toggleable-content"
|
284
308
|
[@tabContent]="selected ? { value: 'visible', params: { transitionParams: transitionOptions } } : { value: 'hidden', params: { transitionParams: transitionOptions } }"
|
285
309
|
role="region"
|
286
310
|
[attr.aria-hidden]="!selected"
|
287
|
-
[attr.aria-labelledby]="id"
|
311
|
+
[attr.aria-labelledby]="getTabHeaderActionId(id)"
|
312
|
+
[attr.data-pc-section]="'toggleablecontent'"
|
288
313
|
>
|
289
314
|
<div class="p-accordion-content" [ngClass]="contentStyleClass" [ngStyle]="contentStyle">
|
290
315
|
<ng-content></ng-content>
|
@@ -311,7 +336,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
311
336
|
}], ctorParameters: function () { return [{ type: Accordion, decorators: [{
|
312
337
|
type: Inject,
|
313
338
|
args: [forwardRef(() => Accordion)]
|
314
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
339
|
+
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
|
340
|
+
type: Input
|
341
|
+
}], header: [{
|
315
342
|
type: Input
|
316
343
|
}], headerStyle: [{
|
317
344
|
type: Input
|
@@ -333,6 +360,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
333
360
|
type: Input
|
334
361
|
}], iconPos: [{
|
335
362
|
type: Input
|
363
|
+
}], selected: [{
|
364
|
+
type: Input
|
336
365
|
}], selectedChange: [{
|
337
366
|
type: Output
|
338
367
|
}], headerFacet: [{
|
@@ -341,8 +370,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
341
370
|
}], templates: [{
|
342
371
|
type: ContentChildren,
|
343
372
|
args: [PrimeTemplate]
|
344
|
-
}], selected: [{
|
345
|
-
type: Input
|
346
373
|
}] } });
|
347
374
|
/**
|
348
375
|
* Accordion groups a collection of contents in tabs.
|
@@ -391,6 +418,11 @@ class Accordion {
|
|
391
418
|
}
|
392
419
|
this.updateSelectionState();
|
393
420
|
}
|
421
|
+
/**
|
422
|
+
* When enabled, the focused tab is activated.
|
423
|
+
* @group Props
|
424
|
+
*/
|
425
|
+
selectOnFocus = false;
|
394
426
|
/**
|
395
427
|
* Callback to invoke when an active tab is collapsed by clicking on the header.
|
396
428
|
* @param {AccordionTabCloseEvent} event - Custom tab close event.
|
@@ -418,6 +450,97 @@ class Accordion {
|
|
418
450
|
this.el = el;
|
419
451
|
this.changeDetector = changeDetector;
|
420
452
|
}
|
453
|
+
onKeydown(event) {
|
454
|
+
switch (event.code) {
|
455
|
+
case 'ArrowDown':
|
456
|
+
this.onTabArrowDownKey(event);
|
457
|
+
break;
|
458
|
+
case 'ArrowUp':
|
459
|
+
this.onTabArrowUpKey(event);
|
460
|
+
break;
|
461
|
+
case 'Home':
|
462
|
+
this.onTabHomeKey(event);
|
463
|
+
break;
|
464
|
+
case 'End':
|
465
|
+
this.onTabEndKey(event);
|
466
|
+
break;
|
467
|
+
}
|
468
|
+
}
|
469
|
+
onTabArrowDownKey(event) {
|
470
|
+
const nextHeaderAction = this.findNextHeaderAction(event.target.parentElement.parentElement.parentElement);
|
471
|
+
nextHeaderAction ? this.changeFocusedTab(nextHeaderAction) : this.onTabHomeKey(event);
|
472
|
+
event.preventDefault();
|
473
|
+
}
|
474
|
+
onTabArrowUpKey(event) {
|
475
|
+
const prevHeaderAction = this.findPrevHeaderAction(event.target.parentElement.parentElement.parentElement);
|
476
|
+
prevHeaderAction ? this.changeFocusedTab(prevHeaderAction) : this.onTabEndKey(event);
|
477
|
+
event.preventDefault();
|
478
|
+
}
|
479
|
+
onTabHomeKey(event) {
|
480
|
+
const firstHeaderAction = this.findFirstHeaderAction();
|
481
|
+
this.changeFocusedTab(firstHeaderAction);
|
482
|
+
event.preventDefault();
|
483
|
+
}
|
484
|
+
changeFocusedTab(element) {
|
485
|
+
if (element) {
|
486
|
+
DomHandler.focus(element);
|
487
|
+
if (this.selectOnFocus) {
|
488
|
+
this.tabs.forEach((tab, i) => {
|
489
|
+
let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;
|
490
|
+
if (this.multiple) {
|
491
|
+
if (!this._activeIndex) {
|
492
|
+
this._activeIndex = [];
|
493
|
+
}
|
494
|
+
if (tab.id == element.id) {
|
495
|
+
tab.selected = !tab.selected;
|
496
|
+
if (!this._activeIndex.includes(i)) {
|
497
|
+
this._activeIndex.push(i);
|
498
|
+
}
|
499
|
+
else {
|
500
|
+
this._activeIndex = this._activeIndex.filter((ind) => ind !== i);
|
501
|
+
}
|
502
|
+
}
|
503
|
+
}
|
504
|
+
else {
|
505
|
+
if (tab.id == element.id) {
|
506
|
+
tab.selected = !tab.selected;
|
507
|
+
this._activeIndex = i;
|
508
|
+
}
|
509
|
+
else {
|
510
|
+
tab.selected = false;
|
511
|
+
}
|
512
|
+
}
|
513
|
+
tab.selectedChange.emit(selected);
|
514
|
+
this.activeIndexChange.emit(this._activeIndex);
|
515
|
+
tab.changeDetector.markForCheck();
|
516
|
+
});
|
517
|
+
}
|
518
|
+
}
|
519
|
+
}
|
520
|
+
findNextHeaderAction(tabElement, selfCheck = false) {
|
521
|
+
const nextTabElement = selfCheck ? tabElement : tabElement.nextElementSibling;
|
522
|
+
const headerElement = DomHandler.findSingle(nextTabElement, '[data-pc-section="header"]');
|
523
|
+
return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findNextHeaderAction(headerElement.parentElement.parentElement) : DomHandler.findSingle(headerElement, '[data-pc-section="headeraction"]')) : null;
|
524
|
+
}
|
525
|
+
findPrevHeaderAction(tabElement, selfCheck = false) {
|
526
|
+
const prevTabElement = selfCheck ? tabElement : tabElement.previousElementSibling;
|
527
|
+
const headerElement = DomHandler.findSingle(prevTabElement, '[data-pc-section="header"]');
|
528
|
+
return headerElement ? (DomHandler.getAttribute(headerElement, 'data-p-disabled') ? this.findPrevHeaderAction(headerElement.parentElement.parentElement) : DomHandler.findSingle(headerElement, '[data-pc-section="headeraction"]')) : null;
|
529
|
+
}
|
530
|
+
findFirstHeaderAction() {
|
531
|
+
const firstEl = this.el.nativeElement.firstElementChild.childNodes[0];
|
532
|
+
return this.findNextHeaderAction(firstEl, true);
|
533
|
+
}
|
534
|
+
findLastHeaderAction() {
|
535
|
+
const childNodes = this.el.nativeElement.firstElementChild.childNodes;
|
536
|
+
const lastEl = childNodes[childNodes.length - 1];
|
537
|
+
return this.findPrevHeaderAction(lastEl, true);
|
538
|
+
}
|
539
|
+
onTabEndKey(event) {
|
540
|
+
const lastHeaderAction = this.findLastHeaderAction();
|
541
|
+
this.changeFocusedTab(lastHeaderAction);
|
542
|
+
event.preventDefault();
|
543
|
+
}
|
421
544
|
ngAfterContentInit() {
|
422
545
|
this.initTabs();
|
423
546
|
this.tabListSubscription = this.tabList.changes.subscribe((_) => {
|
@@ -445,6 +568,12 @@ class Accordion {
|
|
445
568
|
}
|
446
569
|
}
|
447
570
|
}
|
571
|
+
isTabActive(index) {
|
572
|
+
return this.multiple ? this._activeIndex && this._activeIndex.includes(index) : this._activeIndex === index;
|
573
|
+
}
|
574
|
+
getTabProp(tab, name) {
|
575
|
+
return tab.props ? tab.props[name] : undefined;
|
576
|
+
}
|
448
577
|
updateActiveIndex() {
|
449
578
|
let index = this.multiple ? [] : null;
|
450
579
|
this.tabs.forEach((tab, i) => {
|
@@ -467,7 +596,7 @@ class Accordion {
|
|
467
596
|
}
|
468
597
|
}
|
469
598
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
470
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Accordion, selector: "p-accordion", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", activeIndex: "activeIndex" }, outputs: { onClose: "onClose", onOpen: "onOpen", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabList", predicate: AccordionTab }], ngImport: i0, template: `
|
599
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: Accordion, selector: "p-accordion", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", activeIndex: "activeIndex", selectOnFocus: "selectOnFocus" }, outputs: { onClose: "onClose", onOpen: "onOpen", activeIndexChange: "activeIndexChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, classAttribute: "p-element" }, queries: [{ propertyName: "tabList", predicate: AccordionTab }], ngImport: i0, template: `
|
471
600
|
<div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
|
472
601
|
<ng-content></ng-content>
|
473
602
|
</div>
|
@@ -499,6 +628,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
499
628
|
type: Input
|
500
629
|
}], activeIndex: [{
|
501
630
|
type: Input
|
631
|
+
}], selectOnFocus: [{
|
632
|
+
type: Input
|
502
633
|
}], onClose: [{
|
503
634
|
type: Output
|
504
635
|
}], onOpen: [{
|
@@ -508,6 +639,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
508
639
|
}], tabList: [{
|
509
640
|
type: ContentChildren,
|
510
641
|
args: [AccordionTab]
|
642
|
+
}], onKeydown: [{
|
643
|
+
type: HostListener,
|
644
|
+
args: ['keydown', ['$event']]
|
511
645
|
}] } });
|
512
646
|
class AccordionModule {
|
513
647
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|