@flogeez/angular-tiptap-editor 3.6.0 → 3.6.1

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/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ All notable changes to `@flogeez/angular-tiptap-editor` will be documented in th
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), with the exception that the major version is specifically aligned with the major version of [Tiptap](https://tiptap.dev).
7
7
 
8
+ ## [3.6.1] - 2026-10-26
9
+
10
+ ### Changed
11
+
12
+ - **Tooltips Stay Warm Across Controls**: Once a tooltip is open, moving the pointer to another control shows its tooltip at once, without the show delay or fade-in, and the previous one disappears immediately so only one tooltip is visible at a time. The warm state lasts 300 ms after the last tooltip closes, so a short gap between two buttons keeps it. The first tooltip still waits for its `ateTooltipDelay`; keyboard and touch behavior are unchanged.
13
+
8
14
  ## [3.6.0] - 2026-10-26
9
15
 
10
16
  ### Added
@@ -3,6 +3,14 @@ import tippy from "tippy.js";
3
3
  import * as i0 from "@angular/core";
4
4
  // Pre-calculate platform once to avoid repeated checks
5
5
  const IS_MAC = typeof window !== "undefined" && /Mac|iPod|iPhone|iPad/.test(navigator.platform);
6
+ const DURATION = [100, 100];
7
+ // After a tooltip closes, the next one still opens at once if hovered within this gap
8
+ const WARM_GAP = 300;
9
+ // Shared by every tooltip: the first one waits for its delay, the next ones open at once,
10
+ // without animation, as long as the pointer moves from one control to the next.
11
+ let openTooltip = null;
12
+ let warm = false;
13
+ let coolTimeout;
6
14
  export class AteTooltipDirective {
7
15
  constructor() {
8
16
  this.el = inject(ElementRef);
@@ -94,7 +102,7 @@ export class AteTooltipDirective {
94
102
  allowHTML,
95
103
  placement,
96
104
  delay,
97
- duration: [100, 100],
105
+ duration: DURATION,
98
106
  offset: [0, 6],
99
107
  theme: "ate-tooltip",
100
108
  touch: ["hold", 500],
@@ -103,6 +111,30 @@ export class AteTooltipDirective {
103
111
  aria: {
104
112
  content: "describedby",
105
113
  },
114
+ onTrigger: (instance, event) => {
115
+ const base = this.delay();
116
+ const instant = warm && event.type === "mouseenter";
117
+ instance.setProps({
118
+ delay: instant ? [0, Array.isArray(base) ? base[1] : base] : base,
119
+ duration: instant ? [0, DURATION[1]] : DURATION,
120
+ });
121
+ },
122
+ onShow: instance => {
123
+ // Only one tooltip at a time: the previous one goes away at once
124
+ if (openTooltip && openTooltip !== instance) {
125
+ openTooltip.unmount();
126
+ }
127
+ openTooltip = instance;
128
+ warm = true;
129
+ clearTimeout(coolTimeout);
130
+ },
131
+ onHidden: instance => {
132
+ if (openTooltip !== instance) {
133
+ return;
134
+ }
135
+ openTooltip = null;
136
+ coolTimeout = setTimeout(() => (warm = false), WARM_GAP);
137
+ },
106
138
  popperOptions: {
107
139
  modifiers: [
108
140
  {
@@ -118,6 +150,9 @@ export class AteTooltipDirective {
118
150
  }
119
151
  destroyTippy() {
120
152
  if (this.tippyInstance) {
153
+ if (openTooltip === this.tippyInstance) {
154
+ openTooltip = null;
155
+ }
121
156
  this.tippyInstance.destroy();
122
157
  this.tippyInstance = null;
123
158
  }
@@ -135,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
135
170
  },
136
171
  }]
137
172
  }], ctorParameters: () => [] });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvZGlyZWN0aXZlcy9hdGUtdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBK0MsTUFBTSxVQUFVLENBQUM7O0FBRXZFLHVEQUF1RDtBQUN2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVNoRyxNQUFNLE9BQU8sbUJBQW1CO0lBc0Q5QjtRQXJEaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFFbkQsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQWdCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGNBQVMsR0FBRyxLQUFLLENBQVksS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUN0RSxVQUFLLEdBQUcsS0FBSyxDQUE0QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDbEYsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ2dCLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSDs7O1dBR0c7UUFDYyxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3hDLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUUzQyxtRUFBbUU7Z0JBQ25FLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTdDLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7Z0JBRUQsT0FBTztvQkFDTCxPQUFPLEVBQUUsa0NBQWtDLFNBQVMsZ0RBQWdELFlBQVksY0FBYztvQkFDOUgsTUFBTSxFQUFFLElBQUk7aUJBQ2IsQ0FBQztZQUNKLENBQUM7WUFFRCw4RUFBOEU7WUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBR0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFbkMsSUFBSSxVQUFVLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO29CQUMxQixPQUFPO29CQUNQLFNBQVMsRUFBRSxNQUFNO29CQUNqQixTQUFTO29CQUNULEtBQUs7aUJBQ04sQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFVBQVUsQ0FBQyxNQUFjO1FBQy9CLE9BQU8sTUFBTTthQUNWLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVMsQ0FDZixPQUFlLEVBQ2YsU0FBa0IsRUFDbEIsU0FBb0IsRUFDcEIsS0FBZ0M7UUFFaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFaEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDaEQsT0FBTztZQUNQLFNBQVM7WUFDVCxTQUFTO1lBQ1QsS0FBSztZQUNMLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDcEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNkLEtBQUssRUFBRSxhQUFhO1lBQ3BCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7WUFDcEIsUUFBUSxFQUFFLEdBQUc7WUFDYixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUN6QixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGFBQWE7YUFDdkI7WUFDRCxhQUFhLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFO29CQUNUO3dCQUNFLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLE9BQU8sRUFBRTs0QkFDUCxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7NEJBQ3ZCLE9BQU8sRUFBRSxDQUFDO3lCQUNYO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUE2QixDQUFDO0lBQ2pDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7K0dBeklVLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLDBCQUEwQixFQUFFLGdCQUFnQjtxQkFDN0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBPbkRlc3Ryb3ksIGluamVjdCwgZWZmZWN0LCBjb21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UgYXMgVGlwcHlJbnN0YW5jZSwgUGxhY2VtZW50IH0gZnJvbSBcInRpcHB5LmpzXCI7XG5cbi8vIFByZS1jYWxjdWxhdGUgcGxhdGZvcm0gb25jZSB0byBhdm9pZCByZXBlYXRlZCBjaGVja3NcbmNvbnN0IElTX01BQyA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgL01hY3xpUG9kfGlQaG9uZXxpUGFkLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYXRlVG9vbHRpcF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIFwiW2F0dHIuYXJpYS1rZXlzaG9ydGN1dHNdXCI6IFwiYXJpYVNob3J0Y3V0KClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXRlVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgdGlwcHlJbnN0YW5jZTogVGlwcHlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFNpZ25hbCBJbnB1dHNcbiAgY29udGVudCA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwsIHsgYWxpYXM6IFwiYXRlVG9vbHRpcFwiIH0pO1xuICBwbGFjZW1lbnQgPSBpbnB1dDxQbGFjZW1lbnQ+KFwidG9wXCIsIHsgYWxpYXM6IFwiYXRlVG9vbHRpcFBsYWNlbWVudFwiIH0pO1xuICBkZWxheSA9IGlucHV0PG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0+KFsyMDAsIDUwXSwgeyBhbGlhczogXCJhdGVUb29sdGlwRGVsYXlcIiB9KTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSwgeyBhbGlhczogXCJhdGVUb29sdGlwRGlzYWJsZWRcIiB9KTtcblxuICAvKipcbiAgICogQ29tcHV0ZWQgbG9naWMgZm9yIEFSSUEgc2hvcnRjdXRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFTaG9ydGN1dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5jb250ZW50KCk7XG4gICAgaWYgKCF0ZXh0IHx8ICF0ZXh0LmluY2x1ZGVzKFwiXFxuXCIpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQuc3BsaXQoXCJcXG5cIilbMV0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENvbXB1dGVkIGxvZ2ljIGZvciBUaXBweSBjb250ZW50LlxuICAgKiBJbmNsdWRlcyBzdHJpY3QgZXNjYXBpbmcgb2YgZHluYW1pYyBjb250ZW50IHRvIHByZXZlbnQgWFNTLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzZWRUb29sdGlwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmNvbnRlbnQoKTtcbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIHJldHVybiB7IGNvbnRlbnQ6IFwiXCIsIGlzSFRNTDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAodGV4dC5pbmNsdWRlcyhcIlxcblwiKSkge1xuICAgICAgY29uc3QgW2xhYmVsLCBzaG9ydGN1dF0gPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuXG4gICAgICAvLyBFc2NhcGUgZHluYW1pYyBwYXJ0cyB0byBwcmV2ZW50IFhTUyBiZWZvcmUgd3JhcHBpbmcgaW4gc2FmZSBIVE1MXG4gICAgICBjb25zdCBzYWZlTGFiZWwgPSB0aGlzLmVzY2FwZUh0bWwobGFiZWwpO1xuICAgICAgbGV0IHNhZmVTaG9ydGN1dCA9IHRoaXMuZXNjYXBlSHRtbChzaG9ydGN1dCk7XG5cbiAgICAgIGlmIChJU19NQUMpIHtcbiAgICAgICAgc2FmZVNob3J0Y3V0ID0gc2FmZVNob3J0Y3V0LnJlcGxhY2UoL0N0cmxcXCsvZywgXCLijJhcIikucmVwbGFjZSgvTW9kXFwrL2csIFwi4oyYXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FmZVNob3J0Y3V0ID0gc2FmZVNob3J0Y3V0LnJlcGxhY2UoL01vZFxcKy9nLCBcIkN0cmwrXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBgPGRpdiBjbGFzcz1cImF0ZS10b29sdGlwLWxhYmVsXCI+JHtzYWZlTGFiZWx9PC9kaXY+PGRpdiBjbGFzcz1cImF0ZS10b29sdGlwLXNob3J0Y3V0XCI+PGtiZD4ke3NhZmVTaG9ydGN1dH08L2tiZD48L2Rpdj5gLFxuICAgICAgICBpc0hUTUw6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIE5vIG5ld2xpbmU/IEtlZXAgaXQgYXMgcGxhaW4gdGV4dCAoVGlwcHkgaGFuZGxlcyBzdHJpbmcgYXMgdGV4dCBieSBkZWZhdWx0KVxuICAgIHJldHVybiB7IGNvbnRlbnQ6IHRleHQsIGlzSFRNTDogZmFsc2UgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGVudCwgaXNIVE1MIH0gPSB0aGlzLnByb2Nlc3NlZFRvb2x0aXAoKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudCA9IHRoaXMucGxhY2VtZW50KCk7XG4gICAgICBjb25zdCBkZWxheSA9IHRoaXMuZGVsYXkoKTtcbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCk7XG5cbiAgICAgIGlmIChpc0Rpc2FibGVkIHx8ICFjb250ZW50KSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVRpcHB5KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5pbml0VGlwcHkoY29udGVudCwgaXNIVE1MLCBwbGFjZW1lbnQsIGRlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBhbGxvd0hUTUw6IGlzSFRNTCxcbiAgICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgICAgZGVsYXksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95VGlwcHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCYXNpYyBIVE1MIGVzY2FwaW5nIGZvciBzZWN1cml0eS5cbiAgICogRWZmZWN0aXZlbHkgbmV1dHJhbGl6ZXMgc2NyaXB0cyBvciBtYWxpY2lvdXMgSFRNTCB0YWdzLlxuICAgKi9cbiAgcHJpdmF0ZSBlc2NhcGVIdG1sKHVuc2FmZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdW5zYWZlXG4gICAgICAucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpXG4gICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKVxuICAgICAgLnJlcGxhY2UoL1wiL2csIFwiJnF1b3Q7XCIpXG4gICAgICAucmVwbGFjZSgvJy9nLCBcIiYjMDM5O1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpcHB5KFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBhbGxvd0hUTUw6IGJvb2xlYW4sXG4gICAgcGxhY2VtZW50OiBQbGFjZW1lbnQsXG4gICAgZGVsYXk6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl1cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoXCIuYXRlLWVkaXRvclwiKSB8fCBkb2N1bWVudC5ib2R5O1xuXG4gICAgdGhpcy50aXBweUluc3RhbmNlID0gdGlwcHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBjb250ZW50LFxuICAgICAgYWxsb3dIVE1MLFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgZGVsYXksXG4gICAgICBkdXJhdGlvbjogWzEwMCwgMTAwXSxcbiAgICAgIG9mZnNldDogWzAsIDZdLFxuICAgICAgdGhlbWU6IFwiYXRlLXRvb2x0aXBcIixcbiAgICAgIHRvdWNoOiBbXCJob2xkXCIsIDUwMF0sXG4gICAgICBtYXhXaWR0aDogMjUwLFxuICAgICAgYXBwZW5kVG86ICgpID0+IGNvbnRhaW5lcixcbiAgICAgIGFyaWE6IHtcbiAgICAgICAgY29udGVudDogXCJkZXNjcmliZWRieVwiLFxuICAgICAgfSxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJwcmV2ZW50T3ZlcmZsb3dcIixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgYm91bmRhcnk6IGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pIGFzIHVua25vd24gYXMgVGlwcHlJbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVRpcHB5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvZGlyZWN0aXZlcy9hdGUtdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBK0MsTUFBTSxVQUFVLENBQUM7O0FBRXZFLHVEQUF1RDtBQUN2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoRyxNQUFNLFFBQVEsR0FBcUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDOUMsc0ZBQXNGO0FBQ3RGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUVyQiwwRkFBMEY7QUFDMUYsZ0ZBQWdGO0FBQ2hGLElBQUksV0FBVyxHQUF5QixJQUFJLENBQUM7QUFDN0MsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLElBQUksV0FBc0QsQ0FBQztBQVMzRCxNQUFNLE9BQU8sbUJBQW1CO0lBc0Q5QjtRQXJEaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFFbkQsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQWdCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGNBQVMsR0FBRyxLQUFLLENBQVksS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUN0RSxVQUFLLEdBQUcs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Q0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxhQUFhLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFO29CQUNUO3dCQUNFLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLE9BQU8sRUFBRTs0QkFDUCxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7NEJBQ3ZCLE9BQU8sRUFBRSxDQUFDO3lCQUNYO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUE2QixDQUFDO0lBQ2pDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQzsrR0FwS1UsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBUC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osMEJBQTBCLEVBQUUsZ0JBQWdCO3FCQUM3QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5wdXQsIE9uRGVzdHJveSwgaW5qZWN0LCBlZmZlY3QsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0aXBweSwgeyBJbnN0YW5jZSBhcyBUaXBweUluc3RhbmNlLCBQbGFjZW1lbnQgfSBmcm9tIFwidGlwcHkuanNcIjtcblxuLy8gUHJlLWNhbGN1bGF0ZSBwbGF0Zm9ybSBvbmNlIHRvIGF2b2lkIHJlcGVhdGVkIGNoZWNrc1xuY29uc3QgSVNfTUFDID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiAvTWFjfGlQb2R8aVBob25lfGlQYWQvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTtcblxuY29uc3QgRFVSQVRJT046IFtudW1iZXIsIG51bWJlcl0gPSBbMTAwLCAxMDBdO1xuLy8gQWZ0ZXIgYSB0b29sdGlwIGNsb3NlcywgdGhlIG5leHQgb25lIHN0aWxsIG9wZW5zIGF0IG9uY2UgaWYgaG92ZXJlZCB3aXRoaW4gdGhpcyBnYXBcbmNvbnN0IFdBUk1fR0FQID0gMzAwO1xuXG4vLyBTaGFyZWQgYnkgZXZlcnkgdG9vbHRpcDogdGhlIGZpcnN0IG9uZSB3YWl0cyBmb3IgaXRzIGRlbGF5LCB0aGUgbmV4dCBvbmVzIG9wZW4gYXQgb25jZSxcbi8vIHdpdGhvdXQgYW5pbWF0aW9uLCBhcyBsb25nIGFzIHRoZSBwb2ludGVyIG1vdmVzIGZyb20gb25lIGNvbnRyb2wgdG8gdGhlIG5leHQuXG5sZXQgb3BlblRvb2x0aXA6IFRpcHB5SW5zdGFuY2UgfCBudWxsID0gbnVsbDtcbmxldCB3YXJtID0gZmFsc2U7XG5sZXQgY29vbFRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2F0ZVRvb2x0aXBdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBcIlthdHRyLmFyaWEta2V5c2hvcnRjdXRzXVwiOiBcImFyaWFTaG9ydGN1dCgpXCIsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHRpcHB5SW5zdGFuY2U6IFRpcHB5SW5zdGFuY2UgfCBudWxsID0gbnVsbDtcblxuICAvLyBTaWduYWwgSW5wdXRzXG4gIGNvbnRlbnQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsLCB7IGFsaWFzOiBcImF0ZVRvb2x0aXBcIiB9KTtcbiAgcGxhY2VtZW50ID0gaW5wdXQ8UGxhY2VtZW50PihcInRvcFwiLCB7IGFsaWFzOiBcImF0ZVRvb2x0aXBQbGFjZW1lbnRcIiB9KTtcbiAgZGVsYXkgPSBpbnB1dDxudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdPihbMjAwLCA1MF0sIHsgYWxpYXM6IFwiYXRlVG9vbHRpcERlbGF5XCIgfSk7XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UsIHsgYWxpYXM6IFwiYXRlVG9vbHRpcERpc2FibGVkXCIgfSk7XG5cbiAgLyoqXG4gICAqIENvbXB1dGVkIGxvZ2ljIGZvciBBUklBIHNob3J0Y3V0cy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhU2hvcnRjdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuY29udGVudCgpO1xuICAgIGlmICghdGV4dCB8fCAhdGV4dC5pbmNsdWRlcyhcIlxcblwiKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnNwbGl0KFwiXFxuXCIpWzFdLnJlcGxhY2UoL1xcKy9nLCBcIiBcIik7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBsb2dpYyBmb3IgVGlwcHkgY29udGVudC5cbiAgICogSW5jbHVkZXMgc3RyaWN0IGVzY2FwaW5nIG9mIGR5bmFtaWMgY29udGVudCB0byBwcmV2ZW50IFhTUy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc2VkVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5jb250ZW50KCk7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICByZXR1cm4geyBjb250ZW50OiBcIlwiLCBpc0hUTUw6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHRleHQuaW5jbHVkZXMoXCJcXG5cIikpIHtcbiAgICAgIGNvbnN0IFtsYWJlbCwgc2hvcnRjdXRdID0gdGV4dC5zcGxpdChcIlxcblwiKTtcblxuICAgICAgLy8gRXNjYXBlIGR5bmFtaWMgcGFydHMgdG8gcHJldmVudCBYU1MgYmVmb3JlIHdyYXBwaW5nIGluIHNhZmUgSFRNTFxuICAgICAgY29uc3Qgc2FmZUxhYmVsID0gdGhpcy5lc2NhcGVIdG1sKGxhYmVsKTtcbiAgICAgIGxldCBzYWZlU2hvcnRjdXQgPSB0aGlzLmVzY2FwZUh0bWwoc2hvcnRjdXQpO1xuXG4gICAgICBpZiAoSVNfTUFDKSB7XG4gICAgICAgIHNhZmVTaG9ydGN1dCA9IHNhZmVTaG9ydGN1dC5yZXBsYWNlKC9DdHJsXFwrL2csIFwi4oyYXCIpLnJlcGxhY2UoL01vZFxcKy9nLCBcIuKMmFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNhZmVTaG9ydGN1dCA9IHNhZmVTaG9ydGN1dC5yZXBsYWNlKC9Nb2RcXCsvZywgXCJDdHJsK1wiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogYDxkaXYgY2xhc3M9XCJhdGUtdG9vbHRpcC1sYWJlbFwiPiR7c2FmZUxhYmVsfTwvZGl2PjxkaXYgY2xhc3M9XCJhdGUtdG9vbHRpcC1zaG9ydGN1dFwiPjxrYmQ+JHtzYWZlU2hvcnRjdXR9PC9rYmQ+PC9kaXY+YCxcbiAgICAgICAgaXNIVE1MOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBObyBuZXdsaW5lPyBLZWVwIGl0IGFzIHBsYWluIHRleHQgKFRpcHB5IGhhbmRsZXMgc3RyaW5nIGFzIHRleHQgYnkgZGVmYXVsdClcbiAgICByZXR1cm4geyBjb250ZW50OiB0ZXh0LCBpc0hUTUw6IGZhbHNlIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRlbnQsIGlzSFRNTCB9ID0gdGhpcy5wcm9jZXNzZWRUb29sdGlwKCk7XG4gICAgICBjb25zdCBwbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudCgpO1xuICAgICAgY29uc3QgZGVsYXkgPSB0aGlzLmRlbGF5KCk7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuXG4gICAgICBpZiAoaXNEaXNhYmxlZCB8fCAhY29udGVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lUaXBweSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuaW5pdFRpcHB5KGNvbnRlbnQsIGlzSFRNTCwgcGxhY2VtZW50LCBkZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoe1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgYWxsb3dIVE1MOiBpc0hUTUwsXG4gICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgIGRlbGF5LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVRpcHB5KCk7XG4gIH1cblxuICAvKipcbiAgICogQmFzaWMgSFRNTCBlc2NhcGluZyBmb3Igc2VjdXJpdHkuXG4gICAqIEVmZmVjdGl2ZWx5IG5ldXRyYWxpemVzIHNjcmlwdHMgb3IgbWFsaWNpb3VzIEhUTUwgdGFncy5cbiAgICovXG4gIHByaXZhdGUgZXNjYXBlSHRtbCh1bnNhZmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVuc2FmZVxuICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgLnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpXG4gICAgICAucmVwbGFjZSgvPi9nLCBcIiZndDtcIilcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgICAgLnJlcGxhY2UoLycvZywgXCImIzAzOTtcIik7XG4gIH1cblxuICBwcml2YXRlIGluaXRUaXBweShcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgYWxsb3dIVE1MOiBib29sZWFuLFxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50LFxuICAgIGRlbGF5OiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbG9zZXN0KFwiLmF0ZS1lZGl0b3JcIikgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IHRpcHB5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgY29udGVudCxcbiAgICAgIGFsbG93SFRNTCxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIGRlbGF5LFxuICAgICAgZHVyYXRpb246IERVUkFUSU9OLFxuICAgICAgb2Zmc2V0OiBbMCwgNl0sXG4gICAgICB0aGVtZTogXCJhdGUtdG9vbHRpcFwiLFxuICAgICAgdG91Y2g6IFtcImhvbGRcIiwgNTAwXSxcbiAgICAgIG1heFdpZHRoOiAyNTAsXG4gICAgICBhcHBlbmRUbzogKCkgPT4gY29udGFpbmVyLFxuICAgICAgYXJpYToge1xuICAgICAgICBjb250ZW50OiBcImRlc2NyaWJlZGJ5XCIsXG4gICAgICB9LFxuICAgICAgb25UcmlnZ2VyOiAoaW5zdGFuY2UsIGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmRlbGF5KCk7XG4gICAgICAgIGNvbnN0IGluc3RhbnQgPSB3YXJtICYmIGV2ZW50LnR5cGUgPT09IFwibW91c2VlbnRlclwiO1xuICAgICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgICAgZGVsYXk6IGluc3RhbnQgPyBbMCwgQXJyYXkuaXNBcnJheShiYXNlKSA/IGJhc2VbMV0gOiBiYXNlXSA6IGJhc2UsXG4gICAgICAgICAgZHVyYXRpb246IGluc3RhbnQgPyBbMCwgRFVSQVRJT05bMV1dIDogRFVSQVRJT04sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG9uU2hvdzogaW5zdGFuY2UgPT4ge1xuICAgICAgICAvLyBPbmx5IG9uZSB0b29sdGlwIGF0IGEgdGltZTogdGhlIHByZXZpb3VzIG9uZSBnb2VzIGF3YXkgYXQgb25jZVxuICAgICAgICBpZiAob3BlblRvb2x0aXAgJiYgb3BlblRvb2x0aXAgIT09IGluc3RhbmNlKSB7XG4gICAgICAgICAgb3BlblRvb2x0aXAudW5tb3VudCgpO1xuICAgICAgICB9XG4gICAgICAgIG9wZW5Ub29sdGlwID0gaW5zdGFuY2U7XG4gICAgICAgIHdhcm0gPSB0cnVlO1xuICAgICAgICBjbGVhclRpbWVvdXQoY29vbFRpbWVvdXQpO1xuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuOiBpbnN0YW5jZSA9PiB7XG4gICAgICAgIGlmIChvcGVuVG9vbHRpcCAhPT0gaW5zdGFuY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb3BlblRvb2x0aXAgPSBudWxsO1xuICAgICAgICBjb29sVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gKHdhcm0gPSBmYWxzZSksIFdBUk1fR0FQKTtcbiAgICAgIH0sXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicHJldmVudE92ZXJmbG93XCIsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGJvdW5kYXJ5OiBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgICAgICBwYWRkaW5nOiA4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KSBhcyB1bmtub3duIGFzIFRpcHB5SW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lUaXBweSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICBpZiAob3BlblRvb2x0aXAgPT09IHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgICBvcGVuVG9vbHRpcCA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UuZGVzdHJveSgpO1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -3608,6 +3608,14 @@ const AteTiptapStateExtension = Extension.create({
3608
3608
 
3609
3609
  // Pre-calculate platform once to avoid repeated checks
3610
3610
  const IS_MAC = typeof window !== "undefined" && /Mac|iPod|iPhone|iPad/.test(navigator.platform);
3611
+ const DURATION = [100, 100];
3612
+ // After a tooltip closes, the next one still opens at once if hovered within this gap
3613
+ const WARM_GAP = 300;
3614
+ // Shared by every tooltip: the first one waits for its delay, the next ones open at once,
3615
+ // without animation, as long as the pointer moves from one control to the next.
3616
+ let openTooltip = null;
3617
+ let warm = false;
3618
+ let coolTimeout;
3611
3619
  class AteTooltipDirective {
3612
3620
  constructor() {
3613
3621
  this.el = inject(ElementRef);
@@ -3699,7 +3707,7 @@ class AteTooltipDirective {
3699
3707
  allowHTML,
3700
3708
  placement,
3701
3709
  delay,
3702
- duration: [100, 100],
3710
+ duration: DURATION,
3703
3711
  offset: [0, 6],
3704
3712
  theme: "ate-tooltip",
3705
3713
  touch: ["hold", 500],
@@ -3708,6 +3716,30 @@ class AteTooltipDirective {
3708
3716
  aria: {
3709
3717
  content: "describedby",
3710
3718
  },
3719
+ onTrigger: (instance, event) => {
3720
+ const base = this.delay();
3721
+ const instant = warm && event.type === "mouseenter";
3722
+ instance.setProps({
3723
+ delay: instant ? [0, Array.isArray(base) ? base[1] : base] : base,
3724
+ duration: instant ? [0, DURATION[1]] : DURATION,
3725
+ });
3726
+ },
3727
+ onShow: instance => {
3728
+ // Only one tooltip at a time: the previous one goes away at once
3729
+ if (openTooltip && openTooltip !== instance) {
3730
+ openTooltip.unmount();
3731
+ }
3732
+ openTooltip = instance;
3733
+ warm = true;
3734
+ clearTimeout(coolTimeout);
3735
+ },
3736
+ onHidden: instance => {
3737
+ if (openTooltip !== instance) {
3738
+ return;
3739
+ }
3740
+ openTooltip = null;
3741
+ coolTimeout = setTimeout(() => (warm = false), WARM_GAP);
3742
+ },
3711
3743
  popperOptions: {
3712
3744
  modifiers: [
3713
3745
  {
@@ -3723,6 +3755,9 @@ class AteTooltipDirective {
3723
3755
  }
3724
3756
  destroyTippy() {
3725
3757
  if (this.tippyInstance) {
3758
+ if (openTooltip === this.tippyInstance) {
3759
+ openTooltip = null;
3760
+ }
3726
3761
  this.tippyInstance.destroy();
3727
3762
  this.tippyInstance = null;
3728
3763
  }