@messaia/cdk 18.1.0-rc21 → 18.1.0-rc22

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.
@@ -26,6 +26,11 @@ export class ActionItem {
26
26
  * @type {((x?: TEntity, ctx?: TContext) => any) | string}
27
27
  */
28
28
  iconClass;
29
+ /**
30
+ * The color for the icon, which can be set as a string (e.g., hex, rgb).
31
+ * @type {string}
32
+ */
33
+ iconColor;
29
34
  /**
30
35
  * Event handler to execute when the action item is triggered.
31
36
  * @param {x} The entity associated with the action item.
@@ -56,6 +61,11 @@ export class ActionItem {
56
61
  * @type {number}
57
62
  */
58
63
  index;
64
+ /**
65
+ * The text color for the action item, specified as a hex string or a color name.
66
+ * @type {string}
67
+ */
68
+ textColor;
59
69
  /**
60
70
  * Constructor to initialize an ActionItem instance with optional properties.
61
71
  * @param init - Partial properties to initialize the action item.
@@ -64,4 +74,4 @@ export class ActionItem {
64
74
  Object.assign(this, init);
65
75
  }
66
76
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vbW9kZWxzL2FjdGlvbi1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7T0FHRztJQUNJLEtBQUssQ0FBVTtJQUV0Qjs7O09BR0c7SUFDSSxPQUFPLENBQVU7SUFFeEI7Ozs7T0FJRztJQUNJLElBQUksR0FBcUQsd0JBQXdCLENBQUM7SUFFekY7OztPQUdHO0lBQ0ksV0FBVyxHQUFZLDJCQUEyQixDQUFDO0lBRTFEOzs7O09BSUc7SUFDSSxTQUFTLENBQW1EO0lBRW5FOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBd0Q7SUFFcEU7Ozs7T0FJRztJQUNJLElBQUksQ0FBd0Q7SUFFbkU7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBd0Q7SUFFdEU7OztPQUdHO0lBQ0ksS0FBSyxDQUF5QjtJQUVyQzs7O09BR0c7SUFDSSxLQUFLLENBQVU7SUFFdEI7OztPQUdHO0lBQ0gsWUFBbUIsSUFBNkM7UUFDNUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFjdGlvbkl0ZW08VEVudGl0eSA9IGFueSwgVENvbnRleHQgPSBhbnk+IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBhY3Rpb24gaXRlbS5cclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0aXRsZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvb2x0aXAgdGV4dCBmb3IgdGhlIGFjdGlvbiBpdGVtLCBkaXNwbGF5ZWQgb24gaG92ZXIuXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9vbHRpcD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBpY29uIGZvciB0aGUgYWN0aW9uIGl0ZW0sIHdoaWNoIGNhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXHJcbiAgICAgKiB0aGF0IHJldHVybnMgYW4gaWNvbiBiYXNlZCBvbiB0aGUgZW50aXR5IGFuZCBjb250ZXh0LlxyXG4gICAgICogQHR5cGUgeygoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0KSA9PiBhbnkpIHwgc3RyaW5nfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaWNvbj86ICgoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0KSA9PiBhbnkpIHwgc3RyaW5nID0gJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGZvbnQgc2V0IHRvIHVzZSBmb3IgdGhlIGljb24sIGRlZmF1bHRpbmcgdG8gJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnLlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqL1xyXG4gICAgcHVibGljIGljb25Gb250U2V0Pzogc3RyaW5nID0gJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkaXRpb25hbCBDU1MgY2xhc3MgZm9yIHRoZSBpY29uLCB3aGljaCBjYW4gYmUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgXHJcbiAgICAgKiBhIGNsYXNzIGJhc2VkIG9uIHRoZSBlbnRpdHkgYW5kIGNvbnRleHQuXHJcbiAgICAgKiBAdHlwZSB7KCh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQpID0+IGFueSkgfCBzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpY29uQ2xhc3M/OiAoKHg/OiBURW50aXR5LCBjdHg/OiBUQ29udGV4dCkgPT4gYW55KSB8IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGhhbmRsZXIgdG8gZXhlY3V0ZSB3aGVuIHRoZSBhY3Rpb24gaXRlbSBpcyB0cmlnZ2VyZWQuXHJcbiAgICAgKiBAcGFyYW0ge3h9IFRoZSBlbnRpdHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gaXRlbS5cclxuICAgICAqIEBwYXJhbSB7Y3R4fSBUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgYWN0aW9uIGl0ZW0gaXMgZXhlY3V0ZWQuXHJcbiAgICAgKiBAcGFyYW0ge2luZGV4fSBUaGUgaW5kZXggb2YgdGhlIGFjdGlvbiBpdGVtIGluIHRoZSBsaXN0LlxyXG4gICAgICogQHR5cGUgeygoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55KX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV2ZW50PzogKHg/OiBURW50aXR5LCBjdHg/OiBUQ29udGV4dCwgaW5kZXg/OiBudW1iZXIpID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGFjdGlvbiBpdGVtIGJhc2VkIG9uIHRoZSBlbnRpdHksIFxyXG4gICAgICogY29udGV4dCwgYW5kIGluZGV4LlxyXG4gICAgICogQHR5cGUgeygoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55KX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU/OiAoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWN0aW9uIGl0ZW0gYmFzZWQgb24gdGhlIGVudGl0eSwgXHJcbiAgICAgKiBjb250ZXh0LCBhbmQgaW5kZXguXHJcbiAgICAgKiBAdHlwZSB7KCh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQsIGluZGV4PzogbnVtYmVyKSA9PiBhbnkpfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlzYWJsZT86ICh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQsIGluZGV4PzogbnVtYmVyKSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZXN0ZWQgYWN0aW9uIGl0ZW1zLCBhbGxvd2luZyBmb3Igc3VibWVudXMuXHJcbiAgICAgKiBAdHlwZSB7QWN0aW9uSXRlbTxURW50aXR5PltdfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXRlbXM/OiBBY3Rpb25JdGVtPFRFbnRpdHk+W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGFjdGlvbiBpdGVtIGluIGEgbGlzdCwgdXNlZCBmb3Igb3JkZXJpbmcgb3IgaWRlbnRpZmljYXRpb24uXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIGFuIEFjdGlvbkl0ZW0gaW5zdGFuY2Ugd2l0aCBvcHRpb25hbCBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIGluaXQgLSBQYXJ0aWFsIHByb3BlcnRpZXMgdG8gaW5pdGlhbGl6ZSB0aGUgYWN0aW9uIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxBY3Rpb25JdGVtPFRFbnRpdHksIFRDb250ZXh0Pj4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vbW9kZWxzL2FjdGlvbi1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7T0FHRztJQUNJLEtBQUssQ0FBVTtJQUV0Qjs7O09BR0c7SUFDSSxPQUFPLENBQVU7SUFFeEI7Ozs7T0FJRztJQUNJLElBQUksR0FBcUQsd0JBQXdCLENBQUM7SUFFekY7OztPQUdHO0lBQ0ksV0FBVyxHQUFZLDJCQUEyQixDQUFDO0lBRTFEOzs7O09BSUc7SUFDSSxTQUFTLENBQW1EO0lBRW5FOzs7T0FHRztJQUNJLFNBQVMsQ0FBVTtJQUUxQjs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQXdEO0lBRXBFOzs7O09BSUc7SUFDSSxJQUFJLENBQXdEO0lBRW5FOzs7O09BSUc7SUFDSSxPQUFPLENBQXdEO0lBRXRFOzs7T0FHRztJQUNJLEtBQUssQ0FBeUI7SUFFckM7OztPQUdHO0lBQ0ksS0FBSyxDQUFVO0lBRXRCOzs7T0FHRztJQUNJLFNBQVMsQ0FBVTtJQUUxQjs7O09BR0c7SUFDSCxZQUFtQixJQUE2QztRQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQWN0aW9uSXRlbTxURW50aXR5ID0gYW55LCBUQ29udGV4dCA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIGFjdGlvbiBpdGVtLlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRpdGxlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9vbHRpcCB0ZXh0IGZvciB0aGUgYWN0aW9uIGl0ZW0sIGRpc3BsYXllZCBvbiBob3Zlci5cclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b29sdGlwPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGljb24gZm9yIHRoZSBhY3Rpb24gaXRlbSwgd2hpY2ggY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb25cclxuICAgICAqIHRoYXQgcmV0dXJucyBhbiBpY29uIGJhc2VkIG9uIHRoZSBlbnRpdHkgYW5kIGNvbnRleHQuXHJcbiAgICAgKiBAdHlwZSB7KCh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQpID0+IGFueSkgfCBzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpY29uPzogKCh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQpID0+IGFueSkgfCBzdHJpbmcgPSAncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZm9udCBzZXQgdG8gdXNlIGZvciB0aGUgaWNvbiwgZGVmYXVsdGluZyB0byAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCcuXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaWNvbkZvbnRTZXQ/OiBzdHJpbmcgPSAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRpdGlvbmFsIENTUyBjbGFzcyBmb3IgdGhlIGljb24sIHdoaWNoIGNhbiBiZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBcclxuICAgICAqIGEgY2xhc3MgYmFzZWQgb24gdGhlIGVudGl0eSBhbmQgY29udGV4dC5cclxuICAgICAqIEB0eXBlIHsoKHg/OiBURW50aXR5LCBjdHg/OiBUQ29udGV4dCkgPT4gYW55KSB8IHN0cmluZ31cclxuICAgICAqL1xyXG4gICAgcHVibGljIGljb25DbGFzcz86ICgoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0KSA9PiBhbnkpIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbG9yIGZvciB0aGUgaWNvbiwgd2hpY2ggY2FuIGJlIHNldCBhcyBhIHN0cmluZyAoZS5nLiwgaGV4LCByZ2IpLlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqL1xyXG4gICAgcHVibGljIGljb25Db2xvcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IGhhbmRsZXIgdG8gZXhlY3V0ZSB3aGVuIHRoZSBhY3Rpb24gaXRlbSBpcyB0cmlnZ2VyZWQuXHJcbiAgICAgKiBAcGFyYW0ge3h9IFRoZSBlbnRpdHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gaXRlbS5cclxuICAgICAqIEBwYXJhbSB7Y3R4fSBUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgYWN0aW9uIGl0ZW0gaXMgZXhlY3V0ZWQuXHJcbiAgICAgKiBAcGFyYW0ge2luZGV4fSBUaGUgaW5kZXggb2YgdGhlIGFjdGlvbiBpdGVtIGluIHRoZSBsaXN0LlxyXG4gICAgICogQHR5cGUgeygoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55KX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV2ZW50PzogKHg/OiBURW50aXR5LCBjdHg/OiBUQ29udGV4dCwgaW5kZXg/OiBudW1iZXIpID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGFjdGlvbiBpdGVtIGJhc2VkIG9uIHRoZSBlbnRpdHksIFxyXG4gICAgICogY29udGV4dCwgYW5kIGluZGV4LlxyXG4gICAgICogQHR5cGUgeygoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55KX1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU/OiAoeD86IFRFbnRpdHksIGN0eD86IFRDb250ZXh0LCBpbmRleD86IG51bWJlcikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYWN0aW9uIGl0ZW0gYmFzZWQgb24gdGhlIGVudGl0eSwgXHJcbiAgICAgKiBjb250ZXh0LCBhbmQgaW5kZXguXHJcbiAgICAgKiBAdHlwZSB7KCh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQsIGluZGV4PzogbnVtYmVyKSA9PiBhbnkpfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlzYWJsZT86ICh4PzogVEVudGl0eSwgY3R4PzogVENvbnRleHQsIGluZGV4PzogbnVtYmVyKSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZXN0ZWQgYWN0aW9uIGl0ZW1zLCBhbGxvd2luZyBmb3Igc3VibWVudXMuXHJcbiAgICAgKiBAdHlwZSB7QWN0aW9uSXRlbTxURW50aXR5PltdfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXRlbXM/OiBBY3Rpb25JdGVtPFRFbnRpdHk+W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGFjdGlvbiBpdGVtIGluIGEgbGlzdCwgdXNlZCBmb3Igb3JkZXJpbmcgb3IgaWRlbnRpZmljYXRpb24uXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBjb2xvciBmb3IgdGhlIGFjdGlvbiBpdGVtLCBzcGVjaWZpZWQgYXMgYSBoZXggc3RyaW5nIG9yIGEgY29sb3IgbmFtZS5cclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0ZXh0Q29sb3I/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIGFuIEFjdGlvbkl0ZW0gaW5zdGFuY2Ugd2l0aCBvcHRpb25hbCBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIGluaXQgLSBQYXJ0aWFsIHByb3BlcnRpZXMgdG8gaW5pdGlhbGl6ZSB0aGUgYWN0aW9uIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxBY3Rpb25JdGVtPFRFbnRpdHksIFRDb250ZXh0Pj4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
@@ -78,11 +78,11 @@ export class VdDynamicMenuComponent {
78
78
  }, { once: true });
79
79
  }
80
80
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VdDynamicMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
81
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: { items: "items", data: "data", index: "index", context: "context", contextMenu: "contextMenu" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "contextMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}</mat-icon>\r\n <span>{{menu.title}}</span>\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event?menu.event(data, context, index):null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event?menuItem.event(data, context, index):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(data, context, index):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\">{{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.FuncPipe, name: "func" }] });
81
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: { items: "items", data: "data", index: "index", context: "context", contextMenu: "contextMenu" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "contextMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}\r\n </mat-icon>\r\n <span [style.color]=\"menu.textColor\">{{menu.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event ? menu.event(data, context, index) : null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event ? menuItem.event(data, context, index) : null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event ? menuSubItem.event(data, context, index) : null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\" [style.color]=\"menuSubItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuSubItem.textColor\">{{menuSubItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i6.FuncPipe, name: "func" }] });
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VdDynamicMenuComponent, decorators: [{
84
84
  type: Component,
85
- args: [{ selector: 'vd-dynamic-menu', template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}</mat-icon>\r\n <span>{{menu.title}}</span>\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event?menu.event(data, context, index):null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event?menuItem.event(data, context, index):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(data, context, index):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\">{{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>" }]
85
+ args: [{ selector: 'vd-dynamic-menu', template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}\r\n </mat-icon>\r\n <span [style.color]=\"menu.textColor\">{{menu.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event ? menu.event(data, context, index) : null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event ? menuItem.event(data, context, index) : null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event ? menuSubItem.event(data, context, index) : null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\" [style.color]=\"menuSubItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuSubItem.textColor\">{{menuSubItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>" }]
86
86
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { matMenu: [{
87
87
  type: ViewChild,
88
88
  args: [MatMenu]
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
100
100
  }], contextMenu: [{
101
101
  type: Input
102
102
  }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2xheW91dC9keW5hbWljLW1lbnUvZHluYW1pYy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2xheW91dC9keW5hbWljLW1lbnUvZHluYW1pYy1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBNkRYO0lBM0RwQjs7T0FFRztJQUVJLE9BQU8sQ0FBVztJQUV6Qjs7T0FFRztJQUVJLGtCQUFrQixDQUFrQjtJQUUzQzs7T0FFRztJQUVJLEtBQUssQ0FBZ0I7SUFFNUI7O09BRUc7SUFDSyxLQUFLLENBQU07SUFFbkI7O09BRUc7SUFDSCxJQUNXLElBQUksS0FBVSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQzVDLElBQVcsSUFBSSxDQUFDLElBQVM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUVJLEtBQUssQ0FBVTtJQUV0Qjs7T0FFRztJQUVJLE9BQU8sQ0FBTTtJQUVwQjs7T0FFRztJQUVJLFdBQVcsQ0FBVztJQUU3Qjs7T0FFRztJQUNJLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFcEQ7O09BRUc7SUFDSCxZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFJLENBQUM7SUFFN0Q7O09BRUc7SUFDSSxJQUFJLENBQUMsS0FBaUIsRUFBRSxJQUFTO1FBQ3BDLDZFQUE2RTtRQUM3RSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFeEIsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFMUMsdUNBQXVDO1FBQ3ZDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzNHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7MEhBeEZRLHNCQUFzQjs4R0FBdEIsc0JBQXNCLDBNQUtwQixPQUFPLHFGQU1QLGNBQWMsZ0RDbkI3Qixtb0lBeUNNOzsyRkRqQ08sc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNJLGlCQUFpQjtzRkFTcEIsT0FBTztzQkFEYixTQUFTO3VCQUFDLE9BQU87Z0JBT1gsa0JBQWtCO3NCQUR4QixTQUFTO3VCQUFDLGNBQWM7Z0JBT2xCLEtBQUs7c0JBRFgsS0FBSztnQkFZSyxJQUFJO3NCQURkLEtBQUs7Z0JBV0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hY3Rpb24taXRlbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmQtZHluYW1pYy1tZW51JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1lbnUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZER5bmFtaWNNZW51Q29tcG9uZW50IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIG1hdE1lbnU6IE1hdE1lbnVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChNYXRNZW51KVxyXG4gICAgcHVibGljIG1hdE1lbnU/OiBNYXRNZW51O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnRleHQgbWVudSB0cmlnZ2VyXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpXHJcbiAgICBwdWJsaWMgY29udGV4dE1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpdGVtczogQWN0aW9uSXRlbVtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXRlbXM/OiBBY3Rpb25JdGVtW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBfZGF0YTogYW55XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RhdGE6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRhdGE6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBkYXRhKCk6IGFueSB7IHJldHVybiB0aGlzLl9kYXRhIH1cclxuICAgIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGluZGV4OiBudW1iZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbmRleD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHRNZW51PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBjb250ZXh0IG1lbnVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbiB0aGUgbWVudVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3BlbihldmVudDogTW91c2VFdmVudCwgZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLyogQXZvaWRzIHRvIHNob3cgdGhlIHZpc3VhbGl6YXRpb24gb2YgdGhlIHJpZ2h0LWNsaWNrIG1lbnUgb2YgdGhlIGJyb3dzZXIgKi9cclxuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgLyogU2V0IHRoZSBkYXRhIGZvciB0aGUgZXZlbnRzICovXHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgICAgLyogU2V0IHRoZSBYIGFuZCBZIHBvc3Rpb24gb2YgdGhlIGNvbnRleHQgbWVudSAqL1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gYCR7ZXZlbnQuY2xpZW50WH1weGA7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBgJHtldmVudC5jbGllbnRZfXB4YDtcclxuICAgICAgICB0aGlzLm1hdE1lbnU/LmZvY3VzRmlyc3RJdGVtKCdtb3VzZScpO1xyXG5cclxuICAgICAgICAvKiBPcGVuIHRoZSBtZW51IGFuZCB1cGRhdGUgaXRzIHBvc3Rpb24gKi9cclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlcj8udXBkYXRlUG9zaXRpb24oKTtcclxuXHJcbiAgICAgICAgLyogSGFuZGxlIGNsaWNrcyBvbiB0aGUgbWVudSBvdmVybGF5ICovXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2RrLW92ZXJsYXktY29udGFpbmVyJylbMF0/LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKG9mZkV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgb2ZmRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudVRyaWdnZXI/LmNsb3NlTWVudSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbihvZmZFdmVudCwgZGF0YSksIDEwMCk7XHJcbiAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pO1xyXG4gICAgfVxyXG59IiwiPGRpdiBsYXlvdXQ9XCJyb3dcIiBsYXlvdXQtYWxpZ249XCJzdGFydCBjZW50ZXJcIiAqbmdJZj1cIml0ZW1zXCIgZmxleD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnUgb2YgaXRlbXNcIj5cclxuICAgICAgICA8IS0tICNyZWdpb24gQnV0dG9uIHRyaWdnZXIgLS0+XHJcbiAgICAgICAgPGEgbWF0LWljb24tYnV0dG9uIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJtYXRNZW51XCIgKm5nSWY9XCIhY29udGV4dE1lbnUgJiYgbWVudT8uaXRlbXM/Lmxlbmd0aCAmJiAhKG1lbnUuaGlkZSAmJiBtZW51LmhpZGUoZGF0YSwgY29udGV4dCwgaW5kZXgpKVwiIFtkaXNhYmxlZF09XCJkYXRhPy5sb2NrZWQgfHwgKG1lbnU/LmRpc2FibGUgJiYgbWVudT8uZGlzYWJsZShkYXRhLCBjb250ZXh0LCBpbmRleCkpXCIgW21hdFRvb2x0aXBdPVwibWVudS50b29sdGlwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnUuaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudS5pY29uQ2xhc3M/PycnIHwgZnVuYzpkYXRhOmNvbnRleHRcIj57eyhtZW51Lmljb24/Pydtb3JlX3ZlcnQnIHwgZnVuYzpkYXRhOmNvbnRleHQpIHx8ICdtb3JlX3ZlcnQnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57e21lbnUudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8IS0tICNyZWdpb24gQ29udGV4dCB0cmlnZ2VyIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZXh0TWVudVwiIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIiBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYXRNZW51XCI+PC9kaXY+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8YSBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhbWVudT8uaXRlbXM/Lmxlbmd0aCAmJiAhKG1lbnUuaGlkZSAmJiBtZW51LmhpZGUoZGF0YSwgY29udGV4dCwgaW5kZXgpKVwiIFtkaXNhYmxlZF09XCJkYXRhPy5sb2NrZWQgfHwgKG1lbnU/LmRpc2FibGUgJiYgbWVudT8uZGlzYWJsZShkYXRhLCBjb250ZXh0LCBpbmRleCkpXCIgW21hdFRvb2x0aXBdPVwibWVudS50b29sdGlwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgbWVudS5ldmVudD9tZW51LmV2ZW50KGRhdGEsIGNvbnRleHQsIGluZGV4KTpudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwie3ttZW51Lmljb25Gb250U2V0IHx8ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnUuaWNvbkNsYXNzPz8nJyB8IGZ1bmM6ZGF0YTpjb250ZXh0XCI+e3sobWVudS5pY29uPz8ncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCcgfCBmdW5jOmRhdGE6Y29udGV4dCkgfHwgJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8bWF0LW1lbnUgeC1wb3NpdGlvbj1cImJlZm9yZVwiICNtYXRNZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51Py5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZW51SXRlbS5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnVJdGVtLmV2ZW50P21lbnVJdGVtLmV2ZW50KGRhdGEsIGNvbnRleHQsIGluZGV4KTpudWxsXCIgKm5nSWY9XCIhbWVudUl0ZW0uaGlkZSB8fCAhbWVudUl0ZW0uaGlkZShkYXRhLCBjb250ZXh0LCBpbmRleClcIiBbZGlzYWJsZWRdPVwibWVudUl0ZW0uZGlzYWJsZSAmJiBtZW51SXRlbS5kaXNhYmxlKGRhdGEsIGNvbnRleHQsIGluZGV4KVwiIFttYXRUb29sdGlwXT1cIm1lbnVJdGVtLnRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnVJdGVtLmljb25Gb250U2V0IHx8ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVJdGVtLmljb25DbGFzcz8/JycgfCBmdW5jOmRhdGE6Y29udGV4dFwiPnt7KG1lbnVJdGVtLmljb24/PydyYWRpb19idXR0b25fdW5jaGVja2VkJyB8IGZ1bmM6ZGF0YTpjb250ZXh0KSB8fCAncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bWVudUl0ZW0udGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51SXRlbS5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSB4LXBvc2l0aW9uPVwiYmVmb3JlXCIgI3N1Yk1lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnVTdWJJdGVtIG9mIG1lbnVJdGVtLml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtZW51U3ViSXRlbS5ldmVudD9tZW51U3ViSXRlbS5ldmVudChkYXRhLCBjb250ZXh0LCBpbmRleCk6bnVsbFwiICpuZ0lmPVwiIW1lbnVTdWJJdGVtLmhpZGUgfHwgIW1lbnVTdWJJdGVtLmhpZGUoZGF0YSwgY29udGV4dCwgaW5kZXgpXCIgW2Rpc2FibGVkXT1cIm1lbnVTdWJJdGVtLmRpc2FibGUgJiYgbWVudVN1Ykl0ZW0uZGlzYWJsZShkYXRhLCBjb250ZXh0LCBpbmRleClcIiBbbWF0VG9vbHRpcF09XCJtZW51SXRlbS50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnVTdWJJdGVtLmljb25Gb250U2V0IHx8ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVTdWJJdGVtLmljb25DbGFzcz8/JycgfCBmdW5jOmRhdGE6Y29udGV4dFwiPnt7KG1lbnVTdWJJdGVtLmljb24/PydyYWRpb19idXR0b25fdW5jaGVja2VkJyB8IGZ1bmM6ZGF0YTpjb250ZXh0KSB8fCAncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttZW51U3ViSXRlbS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN1Yk1lbnVcIiAqbmdJZj1cIiFtZW51SXRlbS5oaWRlIHx8ICFtZW51SXRlbS5oaWRlKGRhdGEsIGNvbnRleHQsIGluZGV4KVwiIFtkaXNhYmxlZF09XCJtZW51SXRlbS5kaXNhYmxlICYmIG1lbnVJdGVtLmRpc2FibGUoZGF0YSwgY29udGV4dCwgaW5kZXgpXCIgW21hdFRvb2x0aXBdPVwibWVudUl0ZW0udG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cInt7bWVudUl0ZW0uaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudUl0ZW0uaWNvbkNsYXNzPz8nJyB8IGZ1bmM6ZGF0YTpjb250ZXh0XCI+e3sobWVudUl0ZW0uaWNvbj8/J3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnIHwgZnVuYzpkYXRhOmNvbnRleHQpIHx8ICdyYWRpb19idXR0b25fdW5jaGVja2VkJ319PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3ttZW51SXRlbS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2xheW91dC9keW5hbWljLW1lbnUvZHluYW1pYy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2xheW91dC9keW5hbWljLW1lbnUvZHluYW1pYy1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sc0JBQXNCO0lBNkRYO0lBM0RwQjs7T0FFRztJQUVJLE9BQU8sQ0FBVztJQUV6Qjs7T0FFRztJQUVJLGtCQUFrQixDQUFrQjtJQUUzQzs7T0FFRztJQUVJLEtBQUssQ0FBZ0I7SUFFNUI7O09BRUc7SUFDSyxLQUFLLENBQU07SUFFbkI7O09BRUc7SUFDSCxJQUNXLElBQUksS0FBVSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQzVDLElBQVcsSUFBSSxDQUFDLElBQVM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUVJLEtBQUssQ0FBVTtJQUV0Qjs7T0FFRztJQUVJLE9BQU8sQ0FBTTtJQUVwQjs7T0FFRztJQUVJLFdBQVcsQ0FBVztJQUU3Qjs7T0FFRztJQUNJLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFcEQ7O09BRUc7SUFDSCxZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFJLENBQUM7SUFFN0Q7O09BRUc7SUFDSSxJQUFJLENBQUMsS0FBaUIsRUFBRSxJQUFTO1FBQ3BDLDZFQUE2RTtRQUM3RSxLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFeEIsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFMUMsdUNBQXVDO1FBQ3ZDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzNHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7MEhBeEZRLHNCQUFzQjs4R0FBdEIsc0JBQXNCLDBNQUtwQixPQUFPLHFGQU1QLGNBQWMsZ0RDbkI3Qix1K0pBbURNOzsyRkQzQ08sc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNJLGlCQUFpQjtzRkFTcEIsT0FBTztzQkFEYixTQUFTO3VCQUFDLE9BQU87Z0JBT1gsa0JBQWtCO3NCQUR4QixTQUFTO3VCQUFDLGNBQWM7Z0JBT2xCLEtBQUs7c0JBRFgsS0FBSztnQkFZSyxJQUFJO3NCQURkLEtBQUs7Z0JBV0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hY3Rpb24taXRlbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmQtZHluYW1pYy1tZW51JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1lbnUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZER5bmFtaWNNZW51Q29tcG9uZW50IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIG1hdE1lbnU6IE1hdE1lbnVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChNYXRNZW51KVxyXG4gICAgcHVibGljIG1hdE1lbnU/OiBNYXRNZW51O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnRleHQgbWVudSB0cmlnZ2VyXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpXHJcbiAgICBwdWJsaWMgY29udGV4dE1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpdGVtczogQWN0aW9uSXRlbVtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXRlbXM/OiBBY3Rpb25JdGVtW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBfZGF0YTogYW55XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RhdGE6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRhdGE6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBkYXRhKCk6IGFueSB7IHJldHVybiB0aGlzLl9kYXRhIH1cclxuICAgIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGluZGV4OiBudW1iZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbmRleD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHRNZW51PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBjb250ZXh0IG1lbnVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbiB0aGUgbWVudVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3BlbihldmVudDogTW91c2VFdmVudCwgZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLyogQXZvaWRzIHRvIHNob3cgdGhlIHZpc3VhbGl6YXRpb24gb2YgdGhlIHJpZ2h0LWNsaWNrIG1lbnUgb2YgdGhlIGJyb3dzZXIgKi9cclxuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgLyogU2V0IHRoZSBkYXRhIGZvciB0aGUgZXZlbnRzICovXHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgICAgLyogU2V0IHRoZSBYIGFuZCBZIHBvc3Rpb24gb2YgdGhlIGNvbnRleHQgbWVudSAqL1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi54ID0gYCR7ZXZlbnQuY2xpZW50WH1weGA7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBgJHtldmVudC5jbGllbnRZfXB4YDtcclxuICAgICAgICB0aGlzLm1hdE1lbnU/LmZvY3VzRmlyc3RJdGVtKCdtb3VzZScpO1xyXG5cclxuICAgICAgICAvKiBPcGVuIHRoZSBtZW51IGFuZCB1cGRhdGUgaXRzIHBvc3Rpb24gKi9cclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51VHJpZ2dlcj8udXBkYXRlUG9zaXRpb24oKTtcclxuXHJcbiAgICAgICAgLyogSGFuZGxlIGNsaWNrcyBvbiB0aGUgbWVudSBvdmVybGF5ICovXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2RrLW92ZXJsYXktY29udGFpbmVyJylbMF0/LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKG9mZkV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgb2ZmRXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudVRyaWdnZXI/LmNsb3NlTWVudSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbihvZmZFdmVudCwgZGF0YSksIDEwMCk7XHJcbiAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pO1xyXG4gICAgfVxyXG59IiwiPGRpdiBsYXlvdXQ9XCJyb3dcIiBsYXlvdXQtYWxpZ249XCJzdGFydCBjZW50ZXJcIiAqbmdJZj1cIml0ZW1zXCIgZmxleD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnUgb2YgaXRlbXNcIj5cclxuICAgICAgICA8IS0tICNyZWdpb24gQnV0dG9uIHRyaWdnZXIgLS0+XHJcbiAgICAgICAgPGEgbWF0LWljb24tYnV0dG9uIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJtYXRNZW51XCIgKm5nSWY9XCIhY29udGV4dE1lbnUgJiYgbWVudT8uaXRlbXM/Lmxlbmd0aCAmJiAhKG1lbnUuaGlkZSAmJiBtZW51LmhpZGUoZGF0YSwgY29udGV4dCwgaW5kZXgpKVwiIFtkaXNhYmxlZF09XCJkYXRhPy5sb2NrZWQgfHwgKG1lbnU/LmRpc2FibGUgJiYgbWVudT8uZGlzYWJsZShkYXRhLCBjb250ZXh0LCBpbmRleCkpXCIgW21hdFRvb2x0aXBdPVwibWVudS50b29sdGlwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnUuaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudS5pY29uQ2xhc3M/PycnIHwgZnVuYzpkYXRhOmNvbnRleHRcIiBbc3R5bGUuY29sb3JdPVwibWVudS5pY29uQ29sb3JcIj4gPCEtLSBCaW5kIGljb25Db2xvciBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAge3sobWVudS5pY29uPz8nbW9yZV92ZXJ0JyB8IGZ1bmM6ZGF0YTpjb250ZXh0KSB8fCAnbW9yZV92ZXJ0J319XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJtZW51LnRleHRDb2xvclwiPnt7bWVudS50aXRsZX19PC9zcGFuPiA8IS0tIEJpbmQgdGV4dENvbG9yIGhlcmUgLS0+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIENvbnRleHQgdHJpZ2dlciAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dE1lbnVcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkXCIgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCIgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWF0TWVudVwiPjwvZGl2PlxyXG4gICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgPGEgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIW1lbnU/Lml0ZW1zPy5sZW5ndGggJiYgIShtZW51LmhpZGUgJiYgbWVudS5oaWRlKGRhdGEsIGNvbnRleHQsIGluZGV4KSlcIiBbZGlzYWJsZWRdPVwiZGF0YT8ubG9ja2VkIHx8IChtZW51Py5kaXNhYmxlICYmIG1lbnU/LmRpc2FibGUoZGF0YSwgY29udGV4dCwgaW5kZXgpKVwiIFttYXRUb29sdGlwXT1cIm1lbnUudG9vbHRpcFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG1lbnUuZXZlbnQgPyBtZW51LmV2ZW50KGRhdGEsIGNvbnRleHQsIGluZGV4KSA6IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnUuaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudS5pY29uQ2xhc3M/PycnIHwgZnVuYzpkYXRhOmNvbnRleHRcIiBbc3R5bGUuY29sb3JdPVwibWVudS5pY29uQ29sb3JcIj4gPCEtLSBCaW5kIGljb25Db2xvciBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAge3sobWVudS5pY29uPz8ncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCcgfCBmdW5jOmRhdGE6Y29udGV4dCkgfHwgJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX1cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPG1hdC1tZW51IHgtcG9zaXRpb249XCJiZWZvcmVcIiAjbWF0TWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgbWVudT8uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVudUl0ZW0uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBtYXQtbWVudS1pdGVtIChjbGljayk9XCJtZW51SXRlbS5ldmVudCA/IG1lbnVJdGVtLmV2ZW50KGRhdGEsIGNvbnRleHQsIGluZGV4KSA6IG51bGxcIiAqbmdJZj1cIiFtZW51SXRlbS5oaWRlIHx8ICFtZW51SXRlbS5oaWRlKGRhdGEsIGNvbnRleHQsIGluZGV4KVwiIFtkaXNhYmxlZF09XCJtZW51SXRlbS5kaXNhYmxlICYmIG1lbnVJdGVtLmRpc2FibGUoZGF0YSwgY29udGV4dCwgaW5kZXgpXCIgW21hdFRvb2x0aXBdPVwibWVudUl0ZW0udG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cInt7bWVudUl0ZW0uaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwibWVudUl0ZW0uaWNvbkNsYXNzPz8nJyB8IGZ1bmM6ZGF0YTpjb250ZXh0XCIgW3N0eWxlLmNvbG9yXT1cIm1lbnVJdGVtLmljb25Db2xvclwiPiA8IS0tIEJpbmQgaWNvbkNvbG9yIGhlcmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhtZW51SXRlbS5pY29uPz8ncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCcgfCBmdW5jOmRhdGE6Y29udGV4dCkgfHwgJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cIm1lbnVJdGVtLnRleHRDb2xvclwiPnt7bWVudUl0ZW0udGl0bGV9fTwvc3Bhbj4gPCEtLSBCaW5kIHRleHRDb2xvciBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lbnVJdGVtLml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51IHgtcG9zaXRpb249XCJiZWZvcmVcIiAjc3ViTWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudVN1Ykl0ZW0gb2YgbWVudUl0ZW0uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnVTdWJJdGVtLmV2ZW50ID8gbWVudVN1Ykl0ZW0uZXZlbnQoZGF0YSwgY29udGV4dCwgaW5kZXgpIDogbnVsbFwiICpuZ0lmPVwiIW1lbnVTdWJJdGVtLmhpZGUgfHwgIW1lbnVTdWJJdGVtLmhpZGUoZGF0YSwgY29udGV4dCwgaW5kZXgpXCIgW2Rpc2FibGVkXT1cIm1lbnVTdWJJdGVtLmRpc2FibGUgJiYgbWVudVN1Ykl0ZW0uZGlzYWJsZShkYXRhLCBjb250ZXh0LCBpbmRleClcIiBbbWF0VG9vbHRpcF09XCJtZW51SXRlbS50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnVTdWJJdGVtLmljb25Gb250U2V0IHx8ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVTdWJJdGVtLmljb25DbGFzcz8/JycgfCBmdW5jOmRhdGE6Y29udGV4dFwiIFtzdHlsZS5jb2xvcl09XCJtZW51U3ViSXRlbS5pY29uQ29sb3JcIj4gPCEtLSBCaW5kIGljb25Db2xvciBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhtZW51U3ViSXRlbS5pY29uPz8ncmFkaW9fYnV0dG9uX3VuY2hlY2tlZCcgfCBmdW5jOmRhdGE6Y29udGV4dCkgfHwgJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJtZW51U3ViSXRlbS50ZXh0Q29sb3JcIj57e21lbnVTdWJJdGVtLnRpdGxlfX08L3NwYW4+IDwhLS0gQmluZCB0ZXh0Q29sb3IgaGVyZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJzdWJNZW51XCIgKm5nSWY9XCIhbWVudUl0ZW0uaGlkZSB8fCAhbWVudUl0ZW0uaGlkZShkYXRhLCBjb250ZXh0LCBpbmRleClcIiBbZGlzYWJsZWRdPVwibWVudUl0ZW0uZGlzYWJsZSAmJiBtZW51SXRlbS5kaXNhYmxlKGRhdGEsIGNvbnRleHQsIGluZGV4KVwiIFttYXRUb29sdGlwXT1cIm1lbnVJdGVtLnRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJ7e21lbnVJdGVtLmljb25Gb250U2V0IHx8ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cIm1lbnVJdGVtLmljb25DbGFzcz8/JycgfCBmdW5jOmRhdGE6Y29udGV4dFwiIFtzdHlsZS5jb2xvcl09XCJtZW51SXRlbS5pY29uQ29sb3JcIj4gPCEtLSBCaW5kIGljb25Db2xvciBoZXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sobWVudUl0ZW0uaWNvbj8/J3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnIHwgZnVuYzpkYXRhOmNvbnRleHQpIHx8ICdyYWRpb19idXR0b25fdW5jaGVja2VkJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJtZW51SXRlbS50ZXh0Q29sb3JcIj57e21lbnVJdGVtLnRpdGxlfX08L3NwYW4+IDwhLS0gQmluZCB0ZXh0Q29sb3IgaGVyZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
@@ -2644,6 +2644,11 @@ class ActionItem {
2644
2644
  * @type {((x?: TEntity, ctx?: TContext) => any) | string}
2645
2645
  */
2646
2646
  iconClass;
2647
+ /**
2648
+ * The color for the icon, which can be set as a string (e.g., hex, rgb).
2649
+ * @type {string}
2650
+ */
2651
+ iconColor;
2647
2652
  /**
2648
2653
  * Event handler to execute when the action item is triggered.
2649
2654
  * @param {x} The entity associated with the action item.
@@ -2674,6 +2679,11 @@ class ActionItem {
2674
2679
  * @type {number}
2675
2680
  */
2676
2681
  index;
2682
+ /**
2683
+ * The text color for the action item, specified as a hex string or a color name.
2684
+ * @type {string}
2685
+ */
2686
+ textColor;
2677
2687
  /**
2678
2688
  * Constructor to initialize an ActionItem instance with optional properties.
2679
2689
  * @param init - Partial properties to initialize the action item.
@@ -10779,11 +10789,11 @@ class VdDynamicMenuComponent {
10779
10789
  }, { once: true });
10780
10790
  }
10781
10791
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VdDynamicMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
10782
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: { items: "items", data: "data", index: "index", context: "context", contextMenu: "contextMenu" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "contextMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}</mat-icon>\r\n <span>{{menu.title}}</span>\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event?menu.event(data, context, index):null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event?menuItem.event(data, context, index):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(data, context, index):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\">{{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: FuncPipe, name: "func" }] });
10792
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: { items: "items", data: "data", index: "index", context: "context", contextMenu: "contextMenu" }, viewQueries: [{ propertyName: "matMenu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "contextMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}\r\n </mat-icon>\r\n <span [style.color]=\"menu.textColor\">{{menu.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event ? menu.event(data, context, index) : null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event ? menuItem.event(data, context, index) : null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event ? menuSubItem.event(data, context, index) : null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\" [style.color]=\"menuSubItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuSubItem.textColor\">{{menuSubItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: FuncPipe, name: "func" }] });
10783
10793
  }
10784
10794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: VdDynamicMenuComponent, decorators: [{
10785
10795
  type: Component,
10786
- args: [{ selector: 'vd-dynamic-menu', template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}</mat-icon>\r\n <span>{{menu.title}}</span>\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event?menu.event(data, context, index):null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\">{{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event?menuItem.event(data, context, index):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(data, context, index):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\">{{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\">{{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>" }]
10796
+ args: [{ selector: 'vd-dynamic-menu', template: "<div layout=\"row\" layout-align=\"start center\" *ngIf=\"items\" flex>\r\n <ng-container *ngFor=\"let menu of items\">\r\n <!-- #region Button trigger -->\r\n <a mat-icon-button [mat-menu-trigger-for]=\"matMenu\" *ngIf=\"!contextMenu && menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation();\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'more_vert' | func:data:context) || 'more_vert'}}\r\n </mat-icon>\r\n <span [style.color]=\"menu.textColor\">{{menu.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Context trigger -->\r\n <div *ngIf=\"contextMenu\" style=\"visibility: hidden; position: fixed\" [style.left]=\"contextMenuPosition.x\" [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"matMenu\"></div>\r\n <!-- #endregion -->\r\n\r\n <a mat-icon-button *ngIf=\"!menu?.items?.length && !(menu.hide && menu.hide(data, context, index))\" [disabled]=\"data?.locked || (menu?.disable && menu?.disable(data, context, index))\" [matTooltip]=\"menu.tooltip\" (click)=\"$event.stopPropagation(); menu.event ? menu.event(data, context, index) : null\">\r\n <mat-icon fontSet=\"{{menu.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menu.iconClass??'' | func:data:context\" [style.color]=\"menu.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menu.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n </a>\r\n <mat-menu x-position=\"before\" #matMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menu?.items\">\r\n <ng-container *ngIf=\"!menuItem.items\">\r\n <a mat-menu-item (click)=\"menuItem.event ? menuItem.event(data, context, index) : null\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.items\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.items\">\r\n <a mat-menu-item (click)=\"menuSubItem.event ? menuSubItem.event(data, context, index) : null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(data, context, index)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuSubItem.iconClass??'' | func:data:context\" [style.color]=\"menuSubItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuSubItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuSubItem.textColor\">{{menuSubItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </mat-menu>\r\n <a mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(data, context, index)\" [disabled]=\"menuItem.disable && menuItem.disable(data, context, index)\" [matTooltip]=\"menuItem.tooltip\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-symbols-outlined'}}\" [class]=\"menuItem.iconClass??'' | func:data:context\" [style.color]=\"menuItem.iconColor\"> <!-- Bind iconColor here -->\r\n {{(menuItem.icon??'radio_button_unchecked' | func:data:context) || 'radio_button_unchecked'}}\r\n </mat-icon>\r\n <span [style.color]=\"menuItem.textColor\">{{menuItem.title}}</span> <!-- Bind textColor here -->\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n</div>" }]
10787
10797
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { matMenu: [{
10788
10798
  type: ViewChild,
10789
10799
  args: [MatMenu]