@ember-eui/core 16.0.0 → 16.0.2
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/declarations/components/eui-aspect-ratio.d.ts +5 -0
- package/declarations/components/eui-aspect-ratio.d.ts.map +1 -1
- package/declarations/components/eui-avatar.d.ts +6 -0
- package/declarations/components/eui-avatar.d.ts.map +1 -1
- package/declarations/components/eui-basic-table.d.ts.map +1 -1
- package/declarations/components/eui-color-picker.d.ts +3 -0
- package/declarations/components/eui-color-picker.d.ts.map +1 -1
- package/declarations/components/eui-color-stops/thumb.d.ts +3 -1
- package/declarations/components/eui-color-stops/thumb.d.ts.map +1 -1
- package/declarations/components/eui-combo-box.d.ts +2 -0
- package/declarations/components/eui-combo-box.d.ts.map +1 -1
- package/declarations/components/eui-data-grid/body.d.ts +2 -0
- package/declarations/components/eui-data-grid/body.d.ts.map +1 -1
- package/declarations/components/eui-data-grid.d.ts.map +1 -1
- package/declarations/components/eui-dual-range.d.ts +2 -0
- package/declarations/components/eui-dual-range.d.ts.map +1 -1
- package/declarations/components/eui-focus-trap.d.ts +1 -0
- package/declarations/components/eui-focus-trap.d.ts.map +1 -1
- package/declarations/components/eui-global-toast-list.d.ts +8 -1
- package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor-drop-zone.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
- package/declarations/components/eui-markdown-format.d.ts +2 -0
- package/declarations/components/eui-markdown-format.d.ts.map +1 -1
- package/declarations/components/eui-overlay-mask.d.ts +5 -2
- package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
- package/declarations/components/eui-popover.d.ts +5 -1
- package/declarations/components/eui-popover.d.ts.map +1 -1
- package/declarations/components/eui-range.d.ts +3 -0
- package/declarations/components/eui-range.d.ts.map +1 -1
- package/declarations/components/eui-saturation.d.ts +3 -1
- package/declarations/components/eui-saturation.d.ts.map +1 -1
- package/declarations/components/eui-search-bar/field-value-selection-filter.d.ts.map +1 -1
- package/declarations/components/eui-text-color.d.ts +6 -0
- package/declarations/components/eui-text-color.d.ts.map +1 -1
- package/declarations/components/eui-text.d.ts.map +1 -1
- package/declarations/components/eui-token.d.ts +11 -0
- package/declarations/components/eui-token.d.ts.map +1 -1
- package/declarations/components/eui-tool-tip.d.ts +1 -2
- package/declarations/components/eui-tool-tip.d.ts.map +1 -1
- package/declarations/modifiers/outside-click-detector.d.ts +3 -0
- package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
- package/declarations/modifiers/resize-observer.d.ts +3 -0
- package/declarations/modifiers/resize-observer.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-avatar.d.ts +2 -2
- package/declarations/utils/css-mappings/eui-avatar.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-badge.d.ts +1 -1
- package/declarations/utils/css-mappings/eui-badge.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-context-menu-item.d.ts +3 -3
- package/declarations/utils/eui/flyout-manager/reducer.d.ts.map +1 -1
- package/declarations/utils/eui/styles.d.ts +5 -0
- package/declarations/utils/eui/styles.d.ts.map +1 -1
- package/declarations/utils/retain-document-listener.d.ts +8 -0
- package/declarations/utils/retain-document-listener.d.ts.map +1 -0
- package/declarations/utils/transition.d.ts +1 -1
- package/declarations/utils/transition.d.ts.map +1 -1
- package/dist/components/eui-aspect-ratio.js +20 -5
- package/dist/components/eui-aspect-ratio.js.map +1 -1
- package/dist/components/eui-avatar.js +16 -4
- package/dist/components/eui-avatar.js.map +1 -1
- package/dist/components/eui-basic-table.js +4 -2
- package/dist/components/eui-basic-table.js.map +1 -1
- package/dist/components/eui-color-picker.js +8 -2
- package/dist/components/eui-color-picker.js.map +1 -1
- package/dist/components/eui-color-stops/thumb.js +17 -5
- package/dist/components/eui-color-stops/thumb.js.map +1 -1
- package/dist/components/eui-combo-box.js +16 -0
- package/dist/components/eui-combo-box.js.map +1 -1
- package/dist/components/eui-data-grid/body.js +21 -1
- package/dist/components/eui-data-grid/body.js.map +1 -1
- package/dist/components/eui-data-grid.js +6 -4
- package/dist/components/eui-data-grid.js.map +1 -1
- package/dist/components/eui-dual-range.js +5 -2
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-focus-trap.js +4 -1
- package/dist/components/eui-focus-trap.js.map +1 -1
- package/dist/components/eui-global-toast-list.js +33 -5
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-markdown-editor-drop-zone.js +2 -0
- package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +3 -1
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-markdown-format.js +9 -3
- package/dist/components/eui-markdown-format.js.map +1 -1
- package/dist/components/eui-overlay-mask.js +2 -0
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-popover.js +22 -2
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-range.js +10 -3
- package/dist/components/eui-range.js.map +1 -1
- package/dist/components/eui-saturation.js +16 -4
- package/dist/components/eui-saturation.js.map +1 -1
- package/dist/components/eui-search-bar/field-value-selection-filter.js +8 -3
- package/dist/components/eui-search-bar/field-value-selection-filter.js.map +1 -1
- package/dist/components/eui-text-color.js +20 -6
- package/dist/components/eui-text-color.js.map +1 -1
- package/dist/components/eui-text.js +6 -3
- package/dist/components/eui-text.js.map +1 -1
- package/dist/components/eui-token.js +31 -17
- package/dist/components/eui-token.js.map +1 -1
- package/dist/components/eui-tool-tip.js +9 -17
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/icons-DCTZo11a.js.map +1 -1
- package/dist/modifiers/outside-click-detector.js +12 -2
- package/dist/modifiers/outside-click-detector.js.map +1 -1
- package/dist/modifiers/resize-observer.js +19 -4
- package/dist/modifiers/resize-observer.js.map +1 -1
- package/dist/utils/eui/flyout-manager/reducer.js +7 -1
- package/dist/utils/eui/flyout-manager/reducer.js.map +1 -1
- package/dist/utils/eui/styles.js +5 -0
- package/dist/utils/eui/styles.js.map +1 -1
- package/dist/utils/retain-document-listener.js +30 -0
- package/dist/utils/retain-document-listener.js.map +1 -0
- package/dist/utils/transition.js +8 -3
- package/dist/utils/transition.js.map +1 -1
- package/package.json +2 -2
|
@@ -31,10 +31,20 @@ class OutsideClickDetector extends Modifier {
|
|
|
31
31
|
n(this.prototype, "onClickOutside", [action]);
|
|
32
32
|
}
|
|
33
33
|
modify(element, positional, named) {
|
|
34
|
-
|
|
34
|
+
// Later updates only refresh the args, which the listeners read when they
|
|
35
|
+
// fire. Setting up again (and registering another destructor) on every
|
|
36
|
+
// update was wasted work.
|
|
37
|
+
const isNewElement = this.element !== element;
|
|
38
|
+
if (isNewElement && this.element) this._teardown();
|
|
35
39
|
this.named = named;
|
|
36
40
|
this.positional = positional;
|
|
37
|
-
|
|
41
|
+
if (isNewElement) {
|
|
42
|
+
this.element = element;
|
|
43
|
+
this._setup();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
constructor(owner, args) {
|
|
47
|
+
super(owner, args);
|
|
38
48
|
registerDestructor(this, () => this._teardown());
|
|
39
49
|
}
|
|
40
50
|
_setup() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element: HTMLElement | null = null;\n named: Named | null = null;\n positional: Positional | null = null;\n\n @action\n onClickOutside(e: Event): void {\n const { isDisabled, onOutsideClick } = this.named!;\n\n if (isDisabled) {\n this.capturedDownIds = [];\n\n return;\n }\n\n const event = e as unknown as EuiEvent;\n\n if (\n (event.euiGeneratedBy && event.euiGeneratedBy.includes(this.id)) ||\n this.capturedDownIds.includes(this.id)\n ) {\n this.capturedDownIds = [];\n\n return;\n }\n\n this.capturedDownIds = [];\n\n return onOutsideClick(event);\n }\n\n modify(element: HTMLElement, positional: Positional, named: Named): void {\n this.element
|
|
1
|
+
{"version":3,"file":"outside-click-detector.js","sources":["../../src/modifiers/outside-click-detector.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport Modifier from 'ember-modifier';\n\nimport type Owner from '@ember/owner';\nimport type { ArgsFor } from 'ember-modifier';\n\ninterface Named {\n onOutsideClick: (event: Event) => void;\n isDisabled?: boolean;\n onMouseDown?: (event: MouseEvent | TouchEvent) => void;\n onMouseUp?: (event: MouseEvent | TouchEvent) => void;\n onTouchStart?: (event: MouseEvent | TouchEvent) => void;\n onTouchEnd?: (event: MouseEvent | TouchEvent) => void;\n}\n\ntype Positional = [];\n\ninterface OutsideClickDetectorModifierArgs {\n Element: Element;\n Args: {\n Positional: Positional;\n Named: Named;\n };\n}\n\nexport interface EuiEvent extends Event {\n euiGeneratedBy: string[];\n}\n\nexport default class OutsideClickDetector extends Modifier<OutsideClickDetectorModifierArgs> {\n id!: string;\n capturedDownIds: string[] = [];\n\n element: HTMLElement | null = null;\n named: Named | null = null;\n positional: Positional | null = null;\n\n @action\n onClickOutside(e: Event): void {\n const { isDisabled, onOutsideClick } = this.named!;\n\n if (isDisabled) {\n this.capturedDownIds = [];\n\n return;\n }\n\n const event = e as unknown as EuiEvent;\n\n if (\n (event.euiGeneratedBy && event.euiGeneratedBy.includes(this.id)) ||\n this.capturedDownIds.includes(this.id)\n ) {\n this.capturedDownIds = [];\n\n return;\n }\n\n this.capturedDownIds = [];\n\n return onOutsideClick(event);\n }\n\n modify(element: HTMLElement, positional: Positional, named: Named): void {\n // Later updates only refresh the args, which the listeners read when they\n // fire. Setting up again (and registering another destructor) on every\n // update was wasted work.\n const isNewElement = this.element !== element;\n\n if (isNewElement && this.element) this._teardown();\n\n this.named = named;\n this.positional = positional;\n\n if (isNewElement) {\n this.element = element;\n this._setup();\n }\n }\n\n constructor(owner: Owner, args: ArgsFor<OutsideClickDetectorModifierArgs>) {\n super(owner, args);\n registerDestructor(this, () => this._teardown());\n }\n\n _setup(): void {\n this.id = guidFor({});\n document.addEventListener('mouseup', this.onClickOutside);\n document.addEventListener('touchend', this.onClickOutside);\n this.addElementEvents();\n }\n\n _teardown(): void {\n document.removeEventListener('mouseup', this.onClickOutside);\n document.removeEventListener('touchend', this.onClickOutside);\n this.removeElementEvents();\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n\n addElementEvents(): void {\n if (this.element) {\n this.element.addEventListener('mousedown', this.onChildMouseDown);\n this.element.addEventListener('touchstart', this.onChildMouseDown);\n this.element.addEventListener('mouseup', this.onChildMouseUp);\n this.element.addEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n removeElementEvents(): void {\n if (this.element) {\n this.element.removeEventListener('mousedown', this.onChildMouseDown);\n this.element.removeEventListener('touchstart', this.onChildMouseDown);\n this.element.removeEventListener('mouseup', this.onChildMouseUp);\n this.element.removeEventListener('touchend', this.onChildMouseUp);\n }\n }\n\n @action\n onChildClick(\n event: MouseEvent | TouchEvent,\n cb: (event: MouseEvent | TouchEvent) => void\n ): void {\n // to support nested click detectors, build an array\n // of detector ids that have been encountered;\n\n if (event.hasOwnProperty('euiGeneratedBy')) {\n (event as unknown as EuiEvent).euiGeneratedBy.push(this.id);\n } else {\n (event as unknown as EuiEvent).euiGeneratedBy = [this.id];\n }\n\n if (cb) cb(event);\n }\n\n @action\n onChildMouseDown(event: MouseEvent | TouchEvent): any {\n this.onChildClick(event, (e) => {\n const nativeEvent = e as unknown as EuiEvent;\n\n this.capturedDownIds = nativeEvent.euiGeneratedBy;\n this.named?.onMouseDown?.(e);\n this.named?.onTouchStart?.(e);\n });\n }\n\n @action\n onChildMouseUp(event: TouchEvent | MouseEvent): any {\n this.onChildClick(event, (e) => {\n this.named?.onMouseUp?.(e);\n this.named?.onTouchEnd?.(e);\n });\n }\n}\n"],"names":["OutsideClickDetector","Modifier","id","capturedDownIds","element","named","positional","onClickOutside","e","isDisabled","onOutsideClick","event","euiGeneratedBy","includes","n","prototype","action","modify","isNewElement","_teardown","_setup","constructor","owner","args","registerDestructor","guidFor","document","addEventListener","addElementEvents","removeEventListener","removeElementEvents","onChildMouseDown","onChildMouseUp","onChildClick","cb","hasOwnProperty","push","nativeEvent","onMouseDown","onTouchStart","onMouseUp","onTouchEnd"],"mappings":";;;;;;AAgCe,MAAMA,oBAAoB,SAASC,QAAQ,CAAmC;EAC3FC,EAAE;AACFC,EAAAA,eAAe,GAAa,EAAE;AAE9BC,EAAAA,OAAO,GAAuB,IAAI;AAClCC,EAAAA,KAAK,GAAiB,IAAI;AAC1BC,EAAAA,UAAU,GAAsB,IAAI;EAGpCC,cAAcA,CAACC,CAAQ,EAAQ;IAC7B,MAAM;MAAEC,UAAU;AAAEC,MAAAA;KAAgB,GAAG,IAAI,CAACL,KAAM;AAElD,IAAA,IAAII,UAAU,EAAE;MACd,IAAI,CAACN,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF,IAAA;IAEA,MAAMQ,KAAK,GAAGH,CAAwB;IAEtC,IACGG,KAAK,CAACC,cAAc,IAAID,KAAK,CAACC,cAAc,CAACC,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,IAC/D,IAAI,CAACC,eAAe,CAACU,QAAQ,CAAC,IAAI,CAACX,EAAE,CAAC,EACtC;MACA,IAAI,CAACC,eAAe,GAAG,EAAE;AAEzB,MAAA;AACF,IAAA;IAEA,IAAI,CAACA,eAAe,GAAG,EAAE;IAEzB,OAAOO,cAAc,CAACC,KAAK,CAAC;AAC9B,EAAA;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAxBAC,MAAM,CAAA,CAAA;AAAA;AA0BPC,EAAAA,MAAMA,CAACb,OAAoB,EAAEE,UAAsB,EAAED,KAAY,EAAQ;AACvE;AACA;AACA;AACA,IAAA,MAAMa,YAAY,GAAG,IAAI,CAACd,OAAO,KAAKA,OAAO;IAE7C,IAAIc,YAAY,IAAI,IAAI,CAACd,OAAO,EAAE,IAAI,CAACe,SAAS,EAAE;IAElD,IAAI,CAACd,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,UAAU,GAAGA,UAAU;AAE5B,IAAA,IAAIY,YAAY,EAAE;MAChB,IAAI,CAACd,OAAO,GAAGA,OAAO;MACtB,IAAI,CAACgB,MAAM,EAAE;AACf,IAAA;AACF,EAAA;AAEAC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAA+C,EAAE;AACzE,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAClBC,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,CAACL,SAAS,EAAE,CAAC;AAClD,EAAA;AAEAC,EAAAA,MAAMA,GAAS;AACb,IAAA,IAAI,CAAClB,EAAE,GAAGuB,OAAO,CAAC,EAAE,CAAC;IACrBC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACpB,cAAc,CAAC;IACzDmB,QAAQ,CAACC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACpB,cAAc,CAAC;IAC1D,IAAI,CAACqB,gBAAgB,EAAE;AACzB,EAAA;AAEAT,EAAAA,SAASA,GAAS;IAChBO,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACtB,cAAc,CAAC;IAC5DmB,QAAQ,CAACG,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACtB,cAAc,CAAC;IAC7D,IAAI,CAACuB,mBAAmB,EAAE;IAC1B,IAAI,CAAC1B,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACxB,EAAA;AAEAsB,EAAAA,gBAAgBA,GAAS;IACvB,IAAI,IAAI,CAACxB,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACuB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACI,gBAAgB,CAAC;MACjE,IAAI,CAAC3B,OAAO,CAACuB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACI,gBAAgB,CAAC;MAClE,IAAI,CAAC3B,OAAO,CAACuB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACK,cAAc,CAAC;MAC7D,IAAI,CAAC5B,OAAO,CAACuB,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACK,cAAc,CAAC;AAChE,IAAA;AACF,EAAA;AAEAF,EAAAA,mBAAmBA,GAAS;IAC1B,IAAI,IAAI,CAAC1B,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACyB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACpE,IAAI,CAAC3B,OAAO,CAACyB,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACE,gBAAgB,CAAC;MACrE,IAAI,CAAC3B,OAAO,CAACyB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACG,cAAc,CAAC;MAChE,IAAI,CAAC5B,OAAO,CAACyB,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACG,cAAc,CAAC;AACnE,IAAA;AACF,EAAA;AAGAC,EAAAA,YAAYA,CACVtB,KAA8B,EAC9BuB,EAA4C,EACtC;AACN;AACA;;AAEA,IAAA,IAAIvB,KAAK,CAACwB,cAAc,CAAC,gBAAgB,CAAC,EAAE;MACzCxB,KAAK,CAAyBC,cAAc,CAACwB,IAAI,CAAC,IAAI,CAAClC,EAAE,CAAC;AAC7D,IAAA,CAAC,MAAM;AACJS,MAAAA,KAAK,CAAyBC,cAAc,GAAG,CAAC,IAAI,CAACV,EAAE,CAAC;AAC3D,IAAA;AAEA,IAAA,IAAIgC,EAAE,EAAEA,EAAE,CAACvB,KAAK,CAAC;AACnB,EAAA;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAfAC,MAAM,CAAA,CAAA;AAAA;EAkBPe,gBAAgBA,CAACpB,KAA8B,EAAO;AACpD,IAAA,IAAI,CAACsB,YAAY,CAACtB,KAAK,EAAGH,CAAC,IAAK;MAC9B,MAAM6B,WAAW,GAAG7B,CAAwB;AAE5C,MAAA,IAAI,CAACL,eAAe,GAAGkC,WAAW,CAACzB,cAAc;AACjD,MAAA,IAAI,CAACP,KAAK,EAAEiC,WAAW,GAAG9B,CAAC,CAAC;AAC5B,MAAA,IAAI,CAACH,KAAK,EAAEkC,YAAY,GAAG/B,CAAC,CAAC;AAC/B,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CATAC,MAAM,CAAA,CAAA;AAAA;EAYPgB,cAAcA,CAACrB,KAA8B,EAAO;AAClD,IAAA,IAAI,CAACsB,YAAY,CAACtB,KAAK,EAAGH,CAAC,IAAK;AAC9B,MAAA,IAAI,CAACH,KAAK,EAAEmC,SAAS,GAAGhC,CAAC,CAAC;AAC1B,MAAA,IAAI,CAACH,KAAK,EAAEoC,UAAU,GAAGjC,CAAC,CAAC;AAC7B,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAM,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CANAC,MAAM,CAAA,CAAA;AAAA;AAOT;;"}
|
|
@@ -3,6 +3,7 @@ import { action } from '@ember/object';
|
|
|
3
3
|
import Modifier from 'ember-modifier';
|
|
4
4
|
import { n } from 'decorator-transforms/runtime-esm';
|
|
5
5
|
|
|
6
|
+
// IE11 and Safari don't support the `ResizeObserver` API at the time of writing
|
|
6
7
|
const hasResizeObserver = typeof window !== 'undefined' && typeof window.ResizeObserver !== 'undefined';
|
|
7
8
|
const mutationObserverOptions = {
|
|
8
9
|
// [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)
|
|
@@ -43,6 +44,11 @@ class ResizeObserver extends Modifier {
|
|
|
43
44
|
element = null;
|
|
44
45
|
named = null;
|
|
45
46
|
positional = null;
|
|
47
|
+
constructor(owner, args) {
|
|
48
|
+
super(owner, args);
|
|
49
|
+
// Registered once: `modify` runs again on every arg update.
|
|
50
|
+
registerDestructor(this, () => this._teardown());
|
|
51
|
+
}
|
|
46
52
|
setSize({
|
|
47
53
|
width,
|
|
48
54
|
height
|
|
@@ -53,6 +59,8 @@ class ResizeObserver extends Modifier {
|
|
|
53
59
|
if (doesWidthMatter && width !== this.width || doesHeightMatter && height !== this.height) {
|
|
54
60
|
this.width = width;
|
|
55
61
|
this.height = height;
|
|
62
|
+
// `named` is ember-modifier's live args proxy, so this always calls the
|
|
63
|
+
// latest `onResize`.
|
|
56
64
|
this.named?.onResize({
|
|
57
65
|
width,
|
|
58
66
|
height
|
|
@@ -63,11 +71,18 @@ class ResizeObserver extends Modifier {
|
|
|
63
71
|
n(this.prototype, "setSize", [action]);
|
|
64
72
|
}
|
|
65
73
|
modify(element, positional = [], named) {
|
|
66
|
-
this.element = element;
|
|
67
74
|
this.named = named;
|
|
68
75
|
this.positional = positional;
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
// One observer per element: an arg update only refreshes `named` and
|
|
78
|
+
// `positional` (the observer reads them when it fires). Re-creating the
|
|
79
|
+
// observer here used to orphan the previous one on every update.
|
|
80
|
+
if (this.element !== element) {
|
|
81
|
+
this.observer?.disconnect();
|
|
82
|
+
this.observer = null;
|
|
83
|
+
this.element = element;
|
|
84
|
+
this._setup();
|
|
85
|
+
}
|
|
71
86
|
}
|
|
72
87
|
_setup() {
|
|
73
88
|
const {
|
|
@@ -83,7 +98,7 @@ class ResizeObserver extends Modifier {
|
|
|
83
98
|
height: boundingRect.height
|
|
84
99
|
});
|
|
85
100
|
this.observer = makeResizeObserver(element, () => {
|
|
86
|
-
if (
|
|
101
|
+
if (this.element !== element) {
|
|
87
102
|
return;
|
|
88
103
|
}
|
|
89
104
|
const boundingRect = element.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: ['width' | 'height'] | [];\n Named: {\n onResize: (dimensions: { height: number; width: number }) => void;\n };\n };\n}\n\nconst makeCompatibleObserver = (node: Element, callback: () => void) => {\n const observer = new MutationObserver(callback);\n \n observer.observe(node, mutationObserverOptions);\n\n window.addEventListener('resize', callback);\n\n const _disconnect = observer.disconnect.bind(observer);\n\n observer.disconnect = () => {\n _disconnect();\n window.removeEventListener('resize', callback);\n };\n\n return observer;\n};\n\nconst makeResizeObserver = (node: Element, callback: () => void) => {\n let observer: Observer | undefined;\n\n if (hasResizeObserver) {\n observer = new (window as any).ResizeObserver(callback);\n observer!.observe(node);\n } else {\n observer = makeCompatibleObserver(node, callback);\n requestAnimationFrame(callback); // Mimic ResizeObserver behavior of triggering a resize event on init\n }\n\n return observer;\n};\n\nexport default class ResizeObserver extends Modifier<ResizeObserverSignature> {\n height: number = 0;\n width: number = 0;\n observer: Observer | null = null;\n\n element: Element | null = null;\n named: ResizeObserverSignature['Args']['Named'] | null = null;\n positional: ResizeObserverSignature['Args']['Positional'] | null = null;\n\n @action\n setSize({ width, height }: { width: number; height: number }) {\n const [dimension] = this.positional || [];\n\n const doesWidthMatter = dimension !== 'height';\n const doesHeightMatter = dimension !== 'width';\n\n if (\n (doesWidthMatter && width !== this.width) ||\n (doesHeightMatter && height !== this.height)\n ) {\n this.width = width;\n this.height = height;\n this.named?.onResize({ width, height });\n }\n }\n\n modify(\n element: Element,\n positional: ResizeObserverSignature['Args']['Positional'] = [],\n named: ResizeObserverSignature['Args']['Named']\n ) {\n this.
|
|
1
|
+
{"version":3,"file":"resize-observer.js","sources":["../../src/modifiers/resize-observer.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport Modifier from 'ember-modifier';\n\nimport type Owner from '@ember/owner';\nimport type { ArgsFor } from 'ember-modifier';\n\n// IE11 and Safari don't support the `ResizeObserver` API at the time of writing\nconst hasResizeObserver =\n typeof window !== 'undefined' &&\n typeof (window as any).ResizeObserver !== 'undefined';\n\nexport interface Observer {\n disconnect: () => void;\n observe: (element: Element, options?: { [key: string]: any }) => void;\n}\n\nconst mutationObserverOptions = {\n // [MutationObserverInit](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit)\n attributes: true, // Account for style changes from `className` or `style`\n characterData: true, // Account for text content size differences\n childList: true, // Account for adding/removing child nodes\n subtree: true // Account for deep child nodes\n};\n\ninterface ResizeObserverSignature {\n Element: Element;\n Args: {\n Positional: ['width' | 'height'] | [];\n Named: {\n onResize: (dimensions: { height: number; width: number }) => void;\n };\n };\n}\n\nconst makeCompatibleObserver = (node: Element, callback: () => void) => {\n const observer = new MutationObserver(callback);\n \n observer.observe(node, mutationObserverOptions);\n\n window.addEventListener('resize', callback);\n\n const _disconnect = observer.disconnect.bind(observer);\n\n observer.disconnect = () => {\n _disconnect();\n window.removeEventListener('resize', callback);\n };\n\n return observer;\n};\n\nconst makeResizeObserver = (node: Element, callback: () => void) => {\n let observer: Observer | undefined;\n\n if (hasResizeObserver) {\n observer = new (window as any).ResizeObserver(callback);\n observer!.observe(node);\n } else {\n observer = makeCompatibleObserver(node, callback);\n requestAnimationFrame(callback); // Mimic ResizeObserver behavior of triggering a resize event on init\n }\n\n return observer;\n};\n\nexport default class ResizeObserver extends Modifier<ResizeObserverSignature> {\n height: number = 0;\n width: number = 0;\n observer: Observer | null = null;\n\n element: Element | null = null;\n named: ResizeObserverSignature['Args']['Named'] | null = null;\n positional: ResizeObserverSignature['Args']['Positional'] | null = null;\n\n constructor(owner: Owner, args: ArgsFor<ResizeObserverSignature>) {\n super(owner, args);\n // Registered once: `modify` runs again on every arg update.\n registerDestructor(this, () => this._teardown());\n }\n\n @action\n setSize({ width, height }: { width: number; height: number }) {\n const [dimension] = this.positional || [];\n\n const doesWidthMatter = dimension !== 'height';\n const doesHeightMatter = dimension !== 'width';\n\n if (\n (doesWidthMatter && width !== this.width) ||\n (doesHeightMatter && height !== this.height)\n ) {\n this.width = width;\n this.height = height;\n // `named` is ember-modifier's live args proxy, so this always calls the\n // latest `onResize`.\n this.named?.onResize({ width, height });\n }\n }\n\n modify(\n element: Element,\n positional: ResizeObserverSignature['Args']['Positional'] = [],\n named: ResizeObserverSignature['Args']['Named']\n ) {\n this.named = named;\n this.positional = positional;\n\n // One observer per element: an arg update only refreshes `named` and\n // `positional` (the observer reads them when it fires). Re-creating the\n // observer here used to orphan the previous one on every update.\n if (this.element !== element) {\n this.observer?.disconnect();\n this.observer = null;\n this.element = element;\n this._setup();\n }\n }\n\n _setup() {\n const { setSize, element } = this;\n\n if (element != null) {\n // ResizeObserver's first call to the observation callback is scheduled in the future\n // so find the element's initial dimensions now\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n\n this.observer = makeResizeObserver(element, () => {\n if (this.element !== element) {\n return;\n }\n\n const boundingRect = element.getBoundingClientRect();\n\n setSize({\n width: boundingRect.width,\n height: boundingRect.height\n });\n })!;\n } else {\n setSize({\n width: 0,\n height: 0\n });\n }\n }\n\n _teardown() {\n this.observer?.disconnect();\n this.observer = null;\n this.element = null;\n this.named = null;\n this.positional = null;\n }\n}\n"],"names":["hasResizeObserver","window","ResizeObserver","mutationObserverOptions","attributes","characterData","childList","subtree","makeCompatibleObserver","node","callback","observer","MutationObserver","observe","addEventListener","_disconnect","disconnect","bind","removeEventListener","makeResizeObserver","requestAnimationFrame","Modifier","height","width","element","named","positional","constructor","owner","args","registerDestructor","_teardown","setSize","dimension","doesWidthMatter","doesHeightMatter","onResize","n","prototype","action","modify","_setup","boundingRect","getBoundingClientRect"],"mappings":"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"}
|
|
@@ -410,10 +410,16 @@ function flyoutManagerReducer(state = initialState, action) {
|
|
|
410
410
|
const hasRemainingInCurrentGroup = sessionsWithoutCurrent.some(s => s.historyKey === currentSession.historyKey);
|
|
411
411
|
const newSessions = hasRemainingInCurrentGroup ? moveHistoryGroupToTop(sessionsWithoutCurrent, currentSession.historyKey) : sessionsWithoutCurrent;
|
|
412
412
|
const newFlyouts = state.flyouts.filter(f => !flyoutsToRemove.has(f.flyoutId));
|
|
413
|
+
|
|
414
|
+
// Ember EUI: reset the z-index counter like ACTION_CLOSE does once
|
|
415
|
+
// nothing is left. Upstream 123.1.0 skips it here, so each Back that
|
|
416
|
+
// closes the last session raised every later flyout's z-index.
|
|
417
|
+
const currentZIndex = newSessions.length === 0 && state.unmanagedFlyouts.length === 0 ? 0 : state.currentZIndex;
|
|
413
418
|
return {
|
|
414
419
|
...state,
|
|
415
420
|
sessions: newSessions,
|
|
416
|
-
flyouts: newFlyouts
|
|
421
|
+
flyouts: newFlyouts,
|
|
422
|
+
currentZIndex
|
|
417
423
|
};
|
|
418
424
|
}
|
|
419
425
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../src/utils/eui/flyout-manager/reducer.ts"],"sourcesContent":["/*\n * Ported from @elastic/eui 123.1.0 `components/flyout/manager/reducer.ts`.\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under\n * one or more contributor license agreements. Licensed under the Elastic\n * License 2.0 or the Server Side Public License, v 1; see vendor/eui-latest.\n */\nimport {\n ACTION_ADD,\n ACTION_CLOSE,\n ACTION_CLOSE_ALL,\n ACTION_SET_ACTIVE,\n ACTION_SET_LAYOUT_MODE,\n ACTION_SET_WIDTH,\n ACTION_SET_PAGINATION,\n ACTION_SET_ACTIVITY_STAGE,\n ACTION_GO_BACK,\n ACTION_GO_TO_FLYOUT,\n ACTION_SET_PUSH_PADDING,\n ACTION_ADD_UNMANAGED_FLYOUT,\n ACTION_CLOSE_UNMANAGED_FLYOUT,\n ACTION_SET_CONTAINER_ELEMENT,\n ACTION_SET_REFERENCE_WIDTH,\n} from './actions.ts';\nimport {\n LAYOUT_MODE_SIDE_BY_SIDE,\n LEVEL_MAIN,\n LEVEL_CHILD,\n STAGE_OPENING,\n} from './const.ts';\n\nimport type { Action } from './actions.ts';\nimport type {\n EuiFlyoutManagerState,\n FlyoutSession,\n EuiManagedFlyoutState\n} from './types.ts';\n\n/**\n * Default flyout manager state used to initialize the reducer.\n */\nexport const initialState: EuiFlyoutManagerState = {\n sessions: [],\n flyouts: [],\n layoutMode: LAYOUT_MODE_SIDE_BY_SIDE,\n pushPadding: { left: 0, right: 0 },\n currentZIndex: 0,\n unmanagedFlyouts: [],\n};\n\nconst addSessionFlyoutsToRemove = (\n session: FlyoutSession,\n flyoutsToRemove: Set<string>\n) => {\n flyoutsToRemove.add(session.mainFlyoutId);\n if (session.childFlyoutId) {\n flyoutsToRemove.add(session.childFlyoutId);\n }\n (session.childHistory ?? []).forEach((e) => flyoutsToRemove.add(e.flyoutId));\n};\n\nconst moveHistoryGroupToTop = (\n sessions: FlyoutSession[],\n historyKey: symbol\n): FlyoutSession[] => {\n const groupSessions: FlyoutSession[] = [];\n const otherSessions: FlyoutSession[] = [];\n\n sessions.forEach((session) => {\n if (session.historyKey === historyKey) {\n groupSessions.push(session);\n } else {\n otherSessions.push(session);\n }\n });\n\n return [...otherSessions, ...groupSessions];\n};\n\n/**\n * Reducer handling all flyout manager actions and state transitions.\n */\nexport function flyoutManagerReducer(\n state: EuiFlyoutManagerState = initialState,\n action: Action\n): EuiFlyoutManagerState {\n switch (action.type) {\n case ACTION_ADD_UNMANAGED_FLYOUT: {\n if (state.unmanagedFlyouts.includes(action.flyoutId)) {\n return state;\n }\n\n return {\n ...state,\n // Increment by 2 for each new unmanaged flyout.\n // Unmanaged flyouts render on z-index of `n`, and their overlay mask\n // on `n - 1`.\n currentZIndex: state.currentZIndex + 2,\n unmanagedFlyouts: [...state.unmanagedFlyouts, action.flyoutId],\n };\n }\n\n case ACTION_CLOSE_UNMANAGED_FLYOUT: {\n const newUnmanagedFlyouts = state.unmanagedFlyouts.filter(\n (flyoutId) => flyoutId !== action.flyoutId\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (state.sessions.length === 0 && newUnmanagedFlyouts.length === 0) {\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n unmanagedFlyouts: newUnmanagedFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n\n // Register a flyout.\n // - Ignore duplicates by `flyoutId`.\n // - For a `main` flyout, start a new session { main, child: null }.\n // - For a `child` flyout, attach it to the most recent session; if no\n // session exists, do nothing (invalid child without a parent).\n case ACTION_ADD: {\n const { flyoutId, title, level, size, historyKey, iconType, minWidth } =\n action;\n\n const isDuplicate = state.flyouts.some((f) => f.flyoutId === flyoutId);\n const isIdempotentChild =\n level === LEVEL_CHILD &&\n state.sessions.length > 0 &&\n state.sessions[state.sessions.length - 1]!.childFlyoutId === flyoutId;\n\n // Ignore duplicate registrations (except idempotent child re-registration after goBack)\n if (isDuplicate && !isIdempotentChild) {\n return state;\n }\n\n const newFlyoutState: EuiManagedFlyoutState = {\n level,\n flyoutId,\n size,\n minWidth,\n activityStage: STAGE_OPENING,\n };\n const newFlyouts: EuiManagedFlyoutState[] = isIdempotentChild\n ? state.flyouts\n : [...state.flyouts, newFlyoutState];\n\n if (level === LEVEL_MAIN) {\n const newSession: FlyoutSession = {\n mainFlyoutId: flyoutId,\n title: title,\n iconType,\n childFlyoutId: null,\n childHistory: [],\n zIndex: state.currentZIndex,\n historyKey: historyKey ?? Symbol(),\n };\n\n return {\n ...state,\n sessions: [...state.sessions, newSession],\n flyouts: newFlyouts,\n // Increment by 3 for each new flyout session.\n // Managed flyouts render main flyouts on z-index of `n`,\n // child flyouts on `n - 1` and the overlay mask on `n - 2`.\n currentZIndex: state.currentZIndex + 3,\n };\n }\n\n if (state.sessions.length === 0) {\n return state;\n }\n\n const updatedSessions = [...state.sessions];\n const currentSessionIndex = updatedSessions.length - 1;\n const currentSession = updatedSessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n\n // Idempotent re-registration (e.g. after goBack): flyout already in flyouts and session already points to it\n if (state.flyouts.some((f) => f.flyoutId === flyoutId)) {\n if (currentSession.childFlyoutId === flyoutId) {\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childTitle: title,\n childIconType: iconType,\n childHistory,\n };\n return { ...state, sessions: updatedSessions };\n }\n return state; // duplicate registration for a different child, ignore\n }\n\n // Session already has a child: push current child to history, then set new child (do not remove previous from flyouts)\n if (currentSession.childFlyoutId) {\n const historyEntry = {\n flyoutId: currentSession.childFlyoutId,\n title: currentSession.childTitle ?? '',\n iconType: currentSession.childIconType,\n };\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: [...childHistory, historyEntry],\n childFlyoutId: flyoutId,\n childTitle: title,\n childIconType: iconType,\n };\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // First child in session\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childFlyoutId: flyoutId,\n childTitle: title,\n childIconType: iconType,\n childHistory,\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Unregister a flyout and update sessions accordingly.\n // - When closing a `main` flyout, drop its entire session and all associated flyouts.\n // - When closing a `child` flyout, find the session that owns it (childFlyoutId or\n // childHistory) and clear that session's child state so navigation back stays consistent.\n case ACTION_CLOSE: {\n const removedFlyout = state.flyouts.find(\n (f) => f.flyoutId === action.flyoutId\n );\n\n if (!removedFlyout) {\n return state;\n }\n\n if (removedFlyout.level === LEVEL_MAIN) {\n // Find the session that contains this main flyout\n const sessionToRemove = state.sessions.find(\n (session) => session.mainFlyoutId === action.flyoutId\n );\n\n if (sessionToRemove) {\n // Remove all flyouts associated with this session (main + current child + child history)\n const flyoutsToRemove = new Set([action.flyoutId]);\n if (sessionToRemove.childFlyoutId) {\n flyoutsToRemove.add(sessionToRemove.childFlyoutId);\n }\n (sessionToRemove.childHistory ?? []).forEach((entry) =>\n flyoutsToRemove.add(entry.flyoutId)\n );\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n const newSessions = state.sessions.filter(\n (session) => session.mainFlyoutId !== action.flyoutId\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {\n // Reset to initial value if no flyouts remain open to avoid\n // the value going too high during the lifecycle of the app\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n sessions: newSessions,\n flyouts: newFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n }\n\n // Handle child flyout closing: find the session that owns this child and\n // clear that session's child state (so we stay consistent when navigating back).\n if (state.sessions.length === 0) {\n return {\n ...state,\n flyouts: state.flyouts.filter((f) => f.flyoutId !== action.flyoutId),\n };\n }\n\n const owningSessionIndex = state.sessions.findIndex(\n (session) =>\n session.childFlyoutId === action.flyoutId ||\n (session.childHistory ?? []).some(\n (entry) => entry.flyoutId === action.flyoutId\n )\n );\n\n if (owningSessionIndex === -1) {\n // Closed flyout not in any session's child state; just remove the one flyout\n return {\n ...state,\n flyouts: state.flyouts.filter((f) => f.flyoutId !== action.flyoutId),\n };\n }\n\n const owningSession = state.sessions[owningSessionIndex]!;\n const childIds = new Set(\n [\n owningSession.childFlyoutId,\n ...(owningSession.childHistory ?? []).map((e) => e.flyoutId),\n ].filter(Boolean) as string[]\n );\n\n const newFlyouts = state.flyouts.filter((f) => !childIds.has(f.flyoutId));\n const updatedSessions = [...state.sessions];\n updatedSessions[owningSessionIndex] = {\n ...owningSession,\n childFlyoutId: null,\n childTitle: undefined,\n childIconType: undefined,\n childHistory: [],\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Unregister all flyouts (within the current history group only).\n case ACTION_CLOSE_ALL: {\n if (state.sessions.length === 0) {\n return state;\n }\n\n const currentSessionIndex = state.sessions.length - 1;\n const currentSession = state.sessions[currentSessionIndex]!;\n const currentKey = currentSession.historyKey;\n\n // Remove all sessions that have the current historyKey (entire group)\n const newSessions = state.sessions.filter(\n (s) => s.historyKey !== currentKey\n );\n const flyoutsToRemove = new Set<string>();\n state.sessions.forEach((session) => {\n if (session.historyKey === currentKey) {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n }\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n sessions: newSessions,\n flyouts: newFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n\n // Mark the provided flyout ID as the active child for the latest session.\n case ACTION_SET_ACTIVE: {\n // No-op when no session exists.\n if (state.sessions.length === 0) {\n return state;\n }\n\n const updatedSessions = [...state.sessions];\n const currentSessionIndex = updatedSessions.length - 1;\n\n updatedSessions[currentSessionIndex] = {\n ...updatedSessions[currentSessionIndex]!,\n childFlyoutId: action.flyoutId,\n };\n\n return { ...state, sessions: updatedSessions };\n }\n\n // Persist a flyout's measured width (px). Used for responsive layout\n // calculations, e.g., deciding stacked vs side-by-side.\n case ACTION_SET_WIDTH: {\n const { flyoutId, width } = action;\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId ? { ...flyout, width } : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Update a flyout's menu pagination. No-op if unchanged or missing.\n case ACTION_SET_PAGINATION: {\n const { flyoutId, pagination } = action;\n const target = state.flyouts.find((f) => f.flyoutId === flyoutId);\n if (!target) {\n return state;\n }\n if (target.pagination === pagination) {\n return state;\n }\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId ? { ...flyout, pagination } : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Switch global layout mode for managed flyouts.\n case ACTION_SET_LAYOUT_MODE: {\n return { ...state, layoutMode: action.layoutMode };\n }\n\n // Update a flyout's activity stage in state\n case ACTION_SET_ACTIVITY_STAGE: {\n const { flyoutId } = action;\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId\n ? { ...flyout, activityStage: action.activityStage }\n : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Go back: pop child history when any, else pop current session (only within same historyKey).\n case ACTION_GO_BACK: {\n if (state.sessions.length === 0) {\n return state;\n }\n\n const currentSessionIndex = state.sessions.length - 1;\n const currentSession = state.sessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n\n if (childHistory.length > 0) {\n // Pop one child: set current child to the last entry in history, remove the current child flyout\n const popped = childHistory[childHistory.length - 1]!;\n const newChildHistory = childHistory.slice(0, -1);\n const updatedSessions = [...state.sessions];\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: newChildHistory,\n childFlyoutId: popped.flyoutId,\n childTitle: popped.title,\n childIconType: popped.iconType,\n };\n const newFlyouts = state.flyouts.filter(\n (f) => f.flyoutId !== currentSession.childFlyoutId\n );\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // No child history: pop current session (main + all its children)\n const flyoutsToRemove = new Set<string>();\n addSessionFlyoutsToRemove(currentSession, flyoutsToRemove);\n\n const sessionsWithoutCurrent = state.sessions.slice(\n 0,\n currentSessionIndex\n );\n const hasRemainingInCurrentGroup = sessionsWithoutCurrent.some(\n (s) => s.historyKey === currentSession.historyKey\n );\n const newSessions = hasRemainingInCurrentGroup\n ? moveHistoryGroupToTop(\n sessionsWithoutCurrent,\n currentSession.historyKey\n )\n : sessionsWithoutCurrent;\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n return { ...state, sessions: newSessions, flyouts: newFlyouts };\n }\n\n // Navigate to a specific flyout (by main session or by child in current session's history)\n case ACTION_GO_TO_FLYOUT: {\n const { flyoutId, level } = action;\n const currentSessionIndex = state.sessions.length - 1;\n\n if (level === LEVEL_CHILD && state.sessions.length > 0) {\n const currentSession = state.sessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n const targetIndex = childHistory.findIndex(\n (entry) => entry.flyoutId === flyoutId\n );\n\n if (targetIndex === -1) {\n return state; // Target child not in history\n }\n\n const targetEntry = childHistory[targetIndex]!;\n const newChildHistory = childHistory.slice(0, targetIndex);\n\n const flyoutsToRemove = new Set<string>();\n if (currentSession.childFlyoutId) {\n flyoutsToRemove.add(currentSession.childFlyoutId);\n }\n childHistory.slice(targetIndex + 1).forEach((e) => {\n flyoutsToRemove.add(e.flyoutId);\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n const updatedSessions = [...state.sessions];\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: newChildHistory,\n childFlyoutId: targetEntry.flyoutId,\n childTitle: targetEntry.title,\n childIconType: targetEntry.iconType,\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Navigate by main flyout: remove all sessions after the target\n const targetSessionIndex = state.sessions.findIndex(\n (session) => session.mainFlyoutId === flyoutId\n );\n\n if (targetSessionIndex === -1) {\n return state; // Target flyout not found\n }\n\n const currentSession = state.sessions[currentSessionIndex]!;\n const targetSession = state.sessions[targetSessionIndex]!;\n\n // Group-local navigation: keep other history groups, remove only newer sessions in target's group,\n // then bring that group to the top.\n if (targetSession.historyKey === currentSession.historyKey) {\n const flyoutsToRemove = new Set<string>();\n const sessionsAfterTargetInGroup = state.sessions.filter(\n (session, index) =>\n index > targetSessionIndex &&\n session.historyKey === targetSession.historyKey\n );\n\n sessionsAfterTargetInGroup.forEach((session) => {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n });\n\n const sessionsWithoutRemoved = state.sessions.filter(\n (session) =>\n !sessionsAfterTargetInGroup.some(\n (removed) => removed.mainFlyoutId === session.mainFlyoutId\n )\n );\n const reorderedSessions = moveHistoryGroupToTop(\n sessionsWithoutRemoved,\n targetSession.historyKey\n );\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n return { ...state, sessions: reorderedSessions, flyouts: newFlyouts };\n }\n\n const sessionsToClose = state.sessions.slice(targetSessionIndex + 1);\n const flyoutsToRemove = new Set<string>();\n sessionsToClose.forEach((session) => {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n const newSessions = state.sessions.slice(0, targetSessionIndex + 1);\n\n return { ...state, sessions: newSessions, flyouts: newFlyouts };\n }\n\n // Set push padding offset for a specific side\n case ACTION_SET_PUSH_PADDING: {\n const { side, width } = action;\n return {\n ...state,\n pushPadding: {\n ...(state.pushPadding ?? { left: 0, right: 0 }),\n [side]: width,\n },\n };\n }\n\n // Store the container element for container-relative layout calculations.\n case ACTION_SET_CONTAINER_ELEMENT: {\n if (state.containerElement === action.element) {\n return state; // No-op if same element\n }\n return { ...state, containerElement: action.element };\n }\n\n case ACTION_SET_REFERENCE_WIDTH: {\n if (state.referenceWidth === action.width) {\n return state;\n }\n return { ...state, referenceWidth: action.width };\n }\n\n default:\n return state;\n }\n}\n"],"names":["initialState","sessions","flyouts","layoutMode","LAYOUT_MODE_SIDE_BY_SIDE","pushPadding","left","right","currentZIndex","unmanagedFlyouts","addSessionFlyoutsToRemove","session","flyoutsToRemove","add","mainFlyoutId","childFlyoutId","childHistory","forEach","e","flyoutId","moveHistoryGroupToTop","historyKey","groupSessions","otherSessions","push","flyoutManagerReducer","state","action","type","ACTION_ADD_UNMANAGED_FLYOUT","includes","ACTION_CLOSE_UNMANAGED_FLYOUT","newUnmanagedFlyouts","filter","newCurrentZIndex","length","ACTION_ADD","title","level","size","iconType","minWidth","isDuplicate","some","f","isIdempotentChild","LEVEL_CHILD","newFlyoutState","activityStage","STAGE_OPENING","newFlyouts","LEVEL_MAIN","newSession","zIndex","Symbol","updatedSessions","currentSessionIndex","currentSession","childTitle","childIconType","historyEntry","ACTION_CLOSE","removedFlyout","find","sessionToRemove","Set","entry","has","newSessions","owningSessionIndex","findIndex","owningSession","childIds","map","Boolean","undefined","ACTION_CLOSE_ALL","currentKey","s","ACTION_SET_ACTIVE","ACTION_SET_WIDTH","width","updatedFlyouts","flyout","ACTION_SET_PAGINATION","pagination","target","ACTION_SET_LAYOUT_MODE","ACTION_SET_ACTIVITY_STAGE","ACTION_GO_BACK","popped","newChildHistory","slice","sessionsWithoutCurrent","hasRemainingInCurrentGroup","ACTION_GO_TO_FLYOUT","targetIndex","targetEntry","targetSessionIndex","targetSession","sessionsAfterTargetInGroup","index","sessionsWithoutRemoved","removed","reorderedSessions","sessionsToClose","ACTION_SET_PUSH_PADDING","side","ACTION_SET_CONTAINER_ELEMENT","containerElement","element","ACTION_SET_REFERENCE_WIDTH","referenceWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../src/utils/eui/flyout-manager/reducer.ts"],"sourcesContent":["/*\n * Ported from @elastic/eui 123.1.0 `components/flyout/manager/reducer.ts`.\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under\n * one or more contributor license agreements. Licensed under the Elastic\n * License 2.0 or the Server Side Public License, v 1; see vendor/eui-latest.\n */\nimport {\n ACTION_ADD,\n ACTION_CLOSE,\n ACTION_CLOSE_ALL,\n ACTION_SET_ACTIVE,\n ACTION_SET_LAYOUT_MODE,\n ACTION_SET_WIDTH,\n ACTION_SET_PAGINATION,\n ACTION_SET_ACTIVITY_STAGE,\n ACTION_GO_BACK,\n ACTION_GO_TO_FLYOUT,\n ACTION_SET_PUSH_PADDING,\n ACTION_ADD_UNMANAGED_FLYOUT,\n ACTION_CLOSE_UNMANAGED_FLYOUT,\n ACTION_SET_CONTAINER_ELEMENT,\n ACTION_SET_REFERENCE_WIDTH,\n} from './actions.ts';\nimport {\n LAYOUT_MODE_SIDE_BY_SIDE,\n LEVEL_MAIN,\n LEVEL_CHILD,\n STAGE_OPENING,\n} from './const.ts';\n\nimport type { Action } from './actions.ts';\nimport type {\n EuiFlyoutManagerState,\n FlyoutSession,\n EuiManagedFlyoutState\n} from './types.ts';\n\n/**\n * Default flyout manager state used to initialize the reducer.\n */\nexport const initialState: EuiFlyoutManagerState = {\n sessions: [],\n flyouts: [],\n layoutMode: LAYOUT_MODE_SIDE_BY_SIDE,\n pushPadding: { left: 0, right: 0 },\n currentZIndex: 0,\n unmanagedFlyouts: [],\n};\n\nconst addSessionFlyoutsToRemove = (\n session: FlyoutSession,\n flyoutsToRemove: Set<string>\n) => {\n flyoutsToRemove.add(session.mainFlyoutId);\n if (session.childFlyoutId) {\n flyoutsToRemove.add(session.childFlyoutId);\n }\n (session.childHistory ?? []).forEach((e) => flyoutsToRemove.add(e.flyoutId));\n};\n\nconst moveHistoryGroupToTop = (\n sessions: FlyoutSession[],\n historyKey: symbol\n): FlyoutSession[] => {\n const groupSessions: FlyoutSession[] = [];\n const otherSessions: FlyoutSession[] = [];\n\n sessions.forEach((session) => {\n if (session.historyKey === historyKey) {\n groupSessions.push(session);\n } else {\n otherSessions.push(session);\n }\n });\n\n return [...otherSessions, ...groupSessions];\n};\n\n/**\n * Reducer handling all flyout manager actions and state transitions.\n */\nexport function flyoutManagerReducer(\n state: EuiFlyoutManagerState = initialState,\n action: Action\n): EuiFlyoutManagerState {\n switch (action.type) {\n case ACTION_ADD_UNMANAGED_FLYOUT: {\n if (state.unmanagedFlyouts.includes(action.flyoutId)) {\n return state;\n }\n\n return {\n ...state,\n // Increment by 2 for each new unmanaged flyout.\n // Unmanaged flyouts render on z-index of `n`, and their overlay mask\n // on `n - 1`.\n currentZIndex: state.currentZIndex + 2,\n unmanagedFlyouts: [...state.unmanagedFlyouts, action.flyoutId],\n };\n }\n\n case ACTION_CLOSE_UNMANAGED_FLYOUT: {\n const newUnmanagedFlyouts = state.unmanagedFlyouts.filter(\n (flyoutId) => flyoutId !== action.flyoutId\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (state.sessions.length === 0 && newUnmanagedFlyouts.length === 0) {\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n unmanagedFlyouts: newUnmanagedFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n\n // Register a flyout.\n // - Ignore duplicates by `flyoutId`.\n // - For a `main` flyout, start a new session { main, child: null }.\n // - For a `child` flyout, attach it to the most recent session; if no\n // session exists, do nothing (invalid child without a parent).\n case ACTION_ADD: {\n const { flyoutId, title, level, size, historyKey, iconType, minWidth } =\n action;\n\n const isDuplicate = state.flyouts.some((f) => f.flyoutId === flyoutId);\n const isIdempotentChild =\n level === LEVEL_CHILD &&\n state.sessions.length > 0 &&\n state.sessions[state.sessions.length - 1]!.childFlyoutId === flyoutId;\n\n // Ignore duplicate registrations (except idempotent child re-registration after goBack)\n if (isDuplicate && !isIdempotentChild) {\n return state;\n }\n\n const newFlyoutState: EuiManagedFlyoutState = {\n level,\n flyoutId,\n size,\n minWidth,\n activityStage: STAGE_OPENING,\n };\n const newFlyouts: EuiManagedFlyoutState[] = isIdempotentChild\n ? state.flyouts\n : [...state.flyouts, newFlyoutState];\n\n if (level === LEVEL_MAIN) {\n const newSession: FlyoutSession = {\n mainFlyoutId: flyoutId,\n title: title,\n iconType,\n childFlyoutId: null,\n childHistory: [],\n zIndex: state.currentZIndex,\n historyKey: historyKey ?? Symbol(),\n };\n\n return {\n ...state,\n sessions: [...state.sessions, newSession],\n flyouts: newFlyouts,\n // Increment by 3 for each new flyout session.\n // Managed flyouts render main flyouts on z-index of `n`,\n // child flyouts on `n - 1` and the overlay mask on `n - 2`.\n currentZIndex: state.currentZIndex + 3,\n };\n }\n\n if (state.sessions.length === 0) {\n return state;\n }\n\n const updatedSessions = [...state.sessions];\n const currentSessionIndex = updatedSessions.length - 1;\n const currentSession = updatedSessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n\n // Idempotent re-registration (e.g. after goBack): flyout already in flyouts and session already points to it\n if (state.flyouts.some((f) => f.flyoutId === flyoutId)) {\n if (currentSession.childFlyoutId === flyoutId) {\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childTitle: title,\n childIconType: iconType,\n childHistory,\n };\n return { ...state, sessions: updatedSessions };\n }\n return state; // duplicate registration for a different child, ignore\n }\n\n // Session already has a child: push current child to history, then set new child (do not remove previous from flyouts)\n if (currentSession.childFlyoutId) {\n const historyEntry = {\n flyoutId: currentSession.childFlyoutId,\n title: currentSession.childTitle ?? '',\n iconType: currentSession.childIconType,\n };\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: [...childHistory, historyEntry],\n childFlyoutId: flyoutId,\n childTitle: title,\n childIconType: iconType,\n };\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // First child in session\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childFlyoutId: flyoutId,\n childTitle: title,\n childIconType: iconType,\n childHistory,\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Unregister a flyout and update sessions accordingly.\n // - When closing a `main` flyout, drop its entire session and all associated flyouts.\n // - When closing a `child` flyout, find the session that owns it (childFlyoutId or\n // childHistory) and clear that session's child state so navigation back stays consistent.\n case ACTION_CLOSE: {\n const removedFlyout = state.flyouts.find(\n (f) => f.flyoutId === action.flyoutId\n );\n\n if (!removedFlyout) {\n return state;\n }\n\n if (removedFlyout.level === LEVEL_MAIN) {\n // Find the session that contains this main flyout\n const sessionToRemove = state.sessions.find(\n (session) => session.mainFlyoutId === action.flyoutId\n );\n\n if (sessionToRemove) {\n // Remove all flyouts associated with this session (main + current child + child history)\n const flyoutsToRemove = new Set([action.flyoutId]);\n if (sessionToRemove.childFlyoutId) {\n flyoutsToRemove.add(sessionToRemove.childFlyoutId);\n }\n (sessionToRemove.childHistory ?? []).forEach((entry) =>\n flyoutsToRemove.add(entry.flyoutId)\n );\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n const newSessions = state.sessions.filter(\n (session) => session.mainFlyoutId !== action.flyoutId\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {\n // Reset to initial value if no flyouts remain open to avoid\n // the value going too high during the lifecycle of the app\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n sessions: newSessions,\n flyouts: newFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n }\n\n // Handle child flyout closing: find the session that owns this child and\n // clear that session's child state (so we stay consistent when navigating back).\n if (state.sessions.length === 0) {\n return {\n ...state,\n flyouts: state.flyouts.filter((f) => f.flyoutId !== action.flyoutId),\n };\n }\n\n const owningSessionIndex = state.sessions.findIndex(\n (session) =>\n session.childFlyoutId === action.flyoutId ||\n (session.childHistory ?? []).some(\n (entry) => entry.flyoutId === action.flyoutId\n )\n );\n\n if (owningSessionIndex === -1) {\n // Closed flyout not in any session's child state; just remove the one flyout\n return {\n ...state,\n flyouts: state.flyouts.filter((f) => f.flyoutId !== action.flyoutId),\n };\n }\n\n const owningSession = state.sessions[owningSessionIndex]!;\n const childIds = new Set(\n [\n owningSession.childFlyoutId,\n ...(owningSession.childHistory ?? []).map((e) => e.flyoutId),\n ].filter(Boolean) as string[]\n );\n\n const newFlyouts = state.flyouts.filter((f) => !childIds.has(f.flyoutId));\n const updatedSessions = [...state.sessions];\n updatedSessions[owningSessionIndex] = {\n ...owningSession,\n childFlyoutId: null,\n childTitle: undefined,\n childIconType: undefined,\n childHistory: [],\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Unregister all flyouts (within the current history group only).\n case ACTION_CLOSE_ALL: {\n if (state.sessions.length === 0) {\n return state;\n }\n\n const currentSessionIndex = state.sessions.length - 1;\n const currentSession = state.sessions[currentSessionIndex]!;\n const currentKey = currentSession.historyKey;\n\n // Remove all sessions that have the current historyKey (entire group)\n const newSessions = state.sessions.filter(\n (s) => s.historyKey !== currentKey\n );\n const flyoutsToRemove = new Set<string>();\n state.sessions.forEach((session) => {\n if (session.historyKey === currentKey) {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n }\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n let newCurrentZIndex = state.currentZIndex;\n if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {\n newCurrentZIndex = 0;\n }\n\n return {\n ...state,\n sessions: newSessions,\n flyouts: newFlyouts,\n currentZIndex: newCurrentZIndex,\n };\n }\n\n // Mark the provided flyout ID as the active child for the latest session.\n case ACTION_SET_ACTIVE: {\n // No-op when no session exists.\n if (state.sessions.length === 0) {\n return state;\n }\n\n const updatedSessions = [...state.sessions];\n const currentSessionIndex = updatedSessions.length - 1;\n\n updatedSessions[currentSessionIndex] = {\n ...updatedSessions[currentSessionIndex]!,\n childFlyoutId: action.flyoutId,\n };\n\n return { ...state, sessions: updatedSessions };\n }\n\n // Persist a flyout's measured width (px). Used for responsive layout\n // calculations, e.g., deciding stacked vs side-by-side.\n case ACTION_SET_WIDTH: {\n const { flyoutId, width } = action;\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId ? { ...flyout, width } : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Update a flyout's menu pagination. No-op if unchanged or missing.\n case ACTION_SET_PAGINATION: {\n const { flyoutId, pagination } = action;\n const target = state.flyouts.find((f) => f.flyoutId === flyoutId);\n if (!target) {\n return state;\n }\n if (target.pagination === pagination) {\n return state;\n }\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId ? { ...flyout, pagination } : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Switch global layout mode for managed flyouts.\n case ACTION_SET_LAYOUT_MODE: {\n return { ...state, layoutMode: action.layoutMode };\n }\n\n // Update a flyout's activity stage in state\n case ACTION_SET_ACTIVITY_STAGE: {\n const { flyoutId } = action;\n const updatedFlyouts = state.flyouts.map((flyout) =>\n flyout.flyoutId === flyoutId\n ? { ...flyout, activityStage: action.activityStage }\n : flyout\n );\n return { ...state, flyouts: updatedFlyouts };\n }\n\n // Go back: pop child history when any, else pop current session (only within same historyKey).\n case ACTION_GO_BACK: {\n if (state.sessions.length === 0) {\n return state;\n }\n\n const currentSessionIndex = state.sessions.length - 1;\n const currentSession = state.sessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n\n if (childHistory.length > 0) {\n // Pop one child: set current child to the last entry in history, remove the current child flyout\n const popped = childHistory[childHistory.length - 1]!;\n const newChildHistory = childHistory.slice(0, -1);\n const updatedSessions = [...state.sessions];\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: newChildHistory,\n childFlyoutId: popped.flyoutId,\n childTitle: popped.title,\n childIconType: popped.iconType,\n };\n const newFlyouts = state.flyouts.filter(\n (f) => f.flyoutId !== currentSession.childFlyoutId\n );\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // No child history: pop current session (main + all its children)\n const flyoutsToRemove = new Set<string>();\n addSessionFlyoutsToRemove(currentSession, flyoutsToRemove);\n\n const sessionsWithoutCurrent = state.sessions.slice(\n 0,\n currentSessionIndex\n );\n const hasRemainingInCurrentGroup = sessionsWithoutCurrent.some(\n (s) => s.historyKey === currentSession.historyKey\n );\n const newSessions = hasRemainingInCurrentGroup\n ? moveHistoryGroupToTop(\n sessionsWithoutCurrent,\n currentSession.historyKey\n )\n : sessionsWithoutCurrent;\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n // Ember EUI: reset the z-index counter like ACTION_CLOSE does once\n // nothing is left. Upstream 123.1.0 skips it here, so each Back that\n // closes the last session raised every later flyout's z-index.\n const currentZIndex =\n newSessions.length === 0 && state.unmanagedFlyouts.length === 0\n ? 0\n : state.currentZIndex;\n\n return {\n ...state,\n sessions: newSessions,\n flyouts: newFlyouts,\n currentZIndex,\n };\n }\n\n // Navigate to a specific flyout (by main session or by child in current session's history)\n case ACTION_GO_TO_FLYOUT: {\n const { flyoutId, level } = action;\n const currentSessionIndex = state.sessions.length - 1;\n\n if (level === LEVEL_CHILD && state.sessions.length > 0) {\n const currentSession = state.sessions[currentSessionIndex]!;\n const childHistory = currentSession.childHistory ?? [];\n const targetIndex = childHistory.findIndex(\n (entry) => entry.flyoutId === flyoutId\n );\n\n if (targetIndex === -1) {\n return state; // Target child not in history\n }\n\n const targetEntry = childHistory[targetIndex]!;\n const newChildHistory = childHistory.slice(0, targetIndex);\n\n const flyoutsToRemove = new Set<string>();\n if (currentSession.childFlyoutId) {\n flyoutsToRemove.add(currentSession.childFlyoutId);\n }\n childHistory.slice(targetIndex + 1).forEach((e) => {\n flyoutsToRemove.add(e.flyoutId);\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n const updatedSessions = [...state.sessions];\n updatedSessions[currentSessionIndex] = {\n ...currentSession,\n childHistory: newChildHistory,\n childFlyoutId: targetEntry.flyoutId,\n childTitle: targetEntry.title,\n childIconType: targetEntry.iconType,\n };\n\n return { ...state, sessions: updatedSessions, flyouts: newFlyouts };\n }\n\n // Navigate by main flyout: remove all sessions after the target\n const targetSessionIndex = state.sessions.findIndex(\n (session) => session.mainFlyoutId === flyoutId\n );\n\n if (targetSessionIndex === -1) {\n return state; // Target flyout not found\n }\n\n const currentSession = state.sessions[currentSessionIndex]!;\n const targetSession = state.sessions[targetSessionIndex]!;\n\n // Group-local navigation: keep other history groups, remove only newer sessions in target's group,\n // then bring that group to the top.\n if (targetSession.historyKey === currentSession.historyKey) {\n const flyoutsToRemove = new Set<string>();\n const sessionsAfterTargetInGroup = state.sessions.filter(\n (session, index) =>\n index > targetSessionIndex &&\n session.historyKey === targetSession.historyKey\n );\n\n sessionsAfterTargetInGroup.forEach((session) => {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n });\n\n const sessionsWithoutRemoved = state.sessions.filter(\n (session) =>\n !sessionsAfterTargetInGroup.some(\n (removed) => removed.mainFlyoutId === session.mainFlyoutId\n )\n );\n const reorderedSessions = moveHistoryGroupToTop(\n sessionsWithoutRemoved,\n targetSession.historyKey\n );\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n\n return { ...state, sessions: reorderedSessions, flyouts: newFlyouts };\n }\n\n const sessionsToClose = state.sessions.slice(targetSessionIndex + 1);\n const flyoutsToRemove = new Set<string>();\n sessionsToClose.forEach((session) => {\n addSessionFlyoutsToRemove(session, flyoutsToRemove);\n });\n\n const newFlyouts = state.flyouts.filter(\n (f) => !flyoutsToRemove.has(f.flyoutId)\n );\n const newSessions = state.sessions.slice(0, targetSessionIndex + 1);\n\n return { ...state, sessions: newSessions, flyouts: newFlyouts };\n }\n\n // Set push padding offset for a specific side\n case ACTION_SET_PUSH_PADDING: {\n const { side, width } = action;\n return {\n ...state,\n pushPadding: {\n ...(state.pushPadding ?? { left: 0, right: 0 }),\n [side]: width,\n },\n };\n }\n\n // Store the container element for container-relative layout calculations.\n case ACTION_SET_CONTAINER_ELEMENT: {\n if (state.containerElement === action.element) {\n return state; // No-op if same element\n }\n return { ...state, containerElement: action.element };\n }\n\n case ACTION_SET_REFERENCE_WIDTH: {\n if (state.referenceWidth === action.width) {\n return state;\n }\n return { ...state, referenceWidth: action.width };\n }\n\n default:\n return state;\n }\n}\n"],"names":["initialState","sessions","flyouts","layoutMode","LAYOUT_MODE_SIDE_BY_SIDE","pushPadding","left","right","currentZIndex","unmanagedFlyouts","addSessionFlyoutsToRemove","session","flyoutsToRemove","add","mainFlyoutId","childFlyoutId","childHistory","forEach","e","flyoutId","moveHistoryGroupToTop","historyKey","groupSessions","otherSessions","push","flyoutManagerReducer","state","action","type","ACTION_ADD_UNMANAGED_FLYOUT","includes","ACTION_CLOSE_UNMANAGED_FLYOUT","newUnmanagedFlyouts","filter","newCurrentZIndex","length","ACTION_ADD","title","level","size","iconType","minWidth","isDuplicate","some","f","isIdempotentChild","LEVEL_CHILD","newFlyoutState","activityStage","STAGE_OPENING","newFlyouts","LEVEL_MAIN","newSession","zIndex","Symbol","updatedSessions","currentSessionIndex","currentSession","childTitle","childIconType","historyEntry","ACTION_CLOSE","removedFlyout","find","sessionToRemove","Set","entry","has","newSessions","owningSessionIndex","findIndex","owningSession","childIds","map","Boolean","undefined","ACTION_CLOSE_ALL","currentKey","s","ACTION_SET_ACTIVE","ACTION_SET_WIDTH","width","updatedFlyouts","flyout","ACTION_SET_PAGINATION","pagination","target","ACTION_SET_LAYOUT_MODE","ACTION_SET_ACTIVITY_STAGE","ACTION_GO_BACK","popped","newChildHistory","slice","sessionsWithoutCurrent","hasRemainingInCurrentGroup","ACTION_GO_TO_FLYOUT","targetIndex","targetEntry","targetSessionIndex","targetSession","sessionsAfterTargetInGroup","index","sessionsWithoutRemoved","removed","reorderedSessions","sessionsToClose","ACTION_SET_PUSH_PADDING","side","ACTION_SET_CONTAINER_ELEMENT","containerElement","element","ACTION_SET_REFERENCE_WIDTH","referenceWidth"],"mappings":"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"}
|
package/dist/utils/eui/styles.js
CHANGED
|
@@ -33,6 +33,11 @@ function memoizedStyles(theme, factory) {
|
|
|
33
33
|
* interpolation (object, string, serialized styles), a theme function, or
|
|
34
34
|
* an array of those. Use it to style a migrated child instead of adding a
|
|
35
35
|
* second class, whose precedence would depend on rule insertion order.
|
|
36
|
+
*
|
|
37
|
+
* Keep values static: each distinct value adds rules that are never removed
|
|
38
|
+
* (Emotion is append-only, as upstream). Put values that change often
|
|
39
|
+
* (data- or animation-driven positions and sizes, per-item colors) in
|
|
40
|
+
* `style` instead.
|
|
36
41
|
*/
|
|
37
42
|
|
|
38
43
|
function hasFunction(style) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../src/utils/eui/styles.ts"],"sourcesContent":["import type { CSSInterpolation } from '@emotion/css/create-instance';\nimport type { EuiThemeContext } from '../emotion/context.ts';\nimport type { EuiBorealisContext } from './theme.ts';\n\ntype Factory = (theme: EuiBorealisContext) => unknown;\n\n/**\n * Factory output per resolved theme. `context.upstream` is `@cached`, so a\n * theme change yields a new object (and a fresh cache) while every consumer\n * of an unchanged theme shares one result. Mirrors upstream's\n * `useEuiMemoizedStyles`.\n */\nconst memo = new WeakMap<EuiBorealisContext, WeakMap<Factory, unknown>>();\n\n/** Factories receive the real computed upstream theme, without React hooks. */\nexport function useEuiBorealisStyles<T>(\n context: EuiThemeContext,\n factory: (theme: EuiBorealisContext) => T\n): T {\n return memoizedStyles(context.upstream, factory);\n}\n\n/** Same memoization for callers that already hold a resolved theme. */\nexport function memoizedStyles<T>(\n theme: EuiBorealisContext,\n factory: (theme: EuiBorealisContext) => T\n): T {\n let byFactory = memo.get(theme);\n if (!byFactory) memo.set(theme, (byFactory = new WeakMap()));\n if (!byFactory.has(factory)) byFactory.set(factory, factory(theme));\n return byFactory.get(factory) as T;\n}\n\n/**\n * A theme function: the counterpart of upstream's `css` prop callback,\n * `({ euiTheme, colorMode, highContrastMode }) => styles`. It receives the\n * nearest provider's resolved theme; its result is memoized per resolved\n * theme and function identity, so define it once (module scope or a\n * stable class field), not inline in a getter that re-runs.\n */\nexport type EuiCssFunction = (theme: EuiBorealisContext) => EuiCss;\n\n/**\n * Extra styles a caller composes into a migrated component's own class,\n * last — the Ember counterpart of upstream's `css` prop. An Emotion\n * interpolation (object, string, serialized styles), a theme function, or\n * an array of those. Use it to style a migrated child instead of adding a\n * second class, whose precedence would depend on rule insertion order.\n */\nexport type EuiCss =\n | CSSInterpolation\n | EuiCssFunction\n | readonly EuiCss[];\n\nfunction hasFunction(style: unknown): boolean {\n if (typeof style === 'function') return true;\n return Array.isArray(style) && style.some(hasFunction);\n}\n\nfunction resolveCss(\n theme: EuiBorealisContext,\n style: EuiCss\n): CSSInterpolation {\n if (typeof style === 'function')\n return resolveCss(theme, memoizedStyles(theme, style));\n if (Array.isArray(style) && style.some(hasFunction))\n return (style as readonly EuiCss[]).map((s) => resolveCss(theme, s));\n return style as CSSInterpolation;\n}\n\n/**\n * Resolve theme functions in `@css`-style values against a context's\n * theme. Only reads `context.upstream` (a tracked dependency) when a\n * function is present.\n */\nexport function resolveEuiCss(\n context: EuiThemeContext,\n style: EuiCss\n): CSSInterpolation {\n return hasFunction(style) ? resolveCss(context.upstream, style) : (style as CSSInterpolation);\n}\n\n/**\n * Compose serialized upstream styles into a class in the provider-owned\n * cache. Theme functions anywhere in `styles` (e.g. a caller's `@css`) are\n * resolved here against the context's theme, so every component that\n * composes `@css` through `euiClass` supports them.\n */\nexport function euiClass(context: EuiThemeContext, ...styles: EuiCss[]): string {\n return context.cache.css(resolveEuiCss(context, styles));\n}\n"],"names":["memo","WeakMap","useEuiBorealisStyles","context","factory","memoizedStyles","upstream","theme","byFactory","get","set","has","hasFunction","style","Array","isArray","some","resolveCss","map","s","resolveEuiCss","euiClass","styles","cache","css"],"mappings":"AAMA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,IAAI,GAAG,IAAIC,OAAO,EAAiD;;AAEzE;AACO,SAASC,oBAAoBA,CAClCC,OAAwB,EACxBC,OAAyC,EACtC;AACH,EAAA,OAAOC,cAAc,CAACF,OAAO,CAACG,QAAQ,EAAEF,OAAO,CAAC;AAClD;;AAEA;AACO,SAASC,cAAcA,CAC5BE,KAAyB,EACzBH,OAAyC,EACtC;AACH,EAAA,IAAII,SAAS,GAAGR,IAAI,CAACS,GAAG,CAACF,KAAK,CAAC;AAC/B,EAAA,IAAI,CAACC,SAAS,EAAER,IAAI,CAACU,GAAG,CAACH,KAAK,EAAGC,SAAS,GAAG,IAAIP,OAAO,EAAG,CAAC;AAC5D,EAAA,IAAI,CAACO,SAAS,CAACG,GAAG,CAACP,OAAO,CAAC,EAAEI,SAAS,CAACE,GAAG,CAACN,OAAO,EAAEA,OAAO,CAACG,KAAK,CAAC,CAAC;AACnE,EAAA,OAAOC,SAAS,CAACC,GAAG,CAACL,OAAO,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,SAASQ,WAAWA,CAACC,KAAc,EAAW;AAC5C,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE,OAAO,IAAI;AAC5C,EAAA,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,IAAI,CAACJ,WAAW,CAAC;AACxD;AAEA,SAASK,UAAUA,CACjBV,KAAyB,EACzBM,KAAa,EACK;AAClB,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAC7B,OAAOI,UAAU,CAACV,KAAK,EAAEF,cAAc,CAACE,KAAK,EAAEM,KAAK,CAAC,CAAC;EACxD,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,IAAI,CAACJ,WAAW,CAAC,EACjD,OAAQC,KAAK,CAAuBK,GAAG,CAAEC,CAAC,IAAKF,UAAU,CAACV,KAAK,EAAEY,CAAC,CAAC,CAAC;AACtE,EAAA,OAAON,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,aAAaA,CAC3BjB,OAAwB,EACxBU,KAAa,EACK;AAClB,EAAA,OAAOD,WAAW,CAACC,KAAK,CAAC,GAAGI,UAAU,CAACd,OAAO,CAACG,QAAQ,EAAEO,KAAK,CAAC,GAAIA,KAA0B;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,QAAQA,CAAClB,OAAwB,EAAE,GAAGmB,MAAgB,EAAU;AAC9E,EAAA,OAAOnB,OAAO,CAACoB,KAAK,CAACC,GAAG,CAACJ,aAAa,CAACjB,OAAO,EAAEmB,MAAM,CAAC,CAAC;AAC1D;;"}
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/utils/eui/styles.ts"],"sourcesContent":["import type { CSSInterpolation } from '@emotion/css/create-instance';\nimport type { EuiThemeContext } from '../emotion/context.ts';\nimport type { EuiBorealisContext } from './theme.ts';\n\ntype Factory = (theme: EuiBorealisContext) => unknown;\n\n/**\n * Factory output per resolved theme. `context.upstream` is `@cached`, so a\n * theme change yields a new object (and a fresh cache) while every consumer\n * of an unchanged theme shares one result. Mirrors upstream's\n * `useEuiMemoizedStyles`.\n */\nconst memo = new WeakMap<EuiBorealisContext, WeakMap<Factory, unknown>>();\n\n/** Factories receive the real computed upstream theme, without React hooks. */\nexport function useEuiBorealisStyles<T>(\n context: EuiThemeContext,\n factory: (theme: EuiBorealisContext) => T\n): T {\n return memoizedStyles(context.upstream, factory);\n}\n\n/** Same memoization for callers that already hold a resolved theme. */\nexport function memoizedStyles<T>(\n theme: EuiBorealisContext,\n factory: (theme: EuiBorealisContext) => T\n): T {\n let byFactory = memo.get(theme);\n if (!byFactory) memo.set(theme, (byFactory = new WeakMap()));\n if (!byFactory.has(factory)) byFactory.set(factory, factory(theme));\n return byFactory.get(factory) as T;\n}\n\n/**\n * A theme function: the counterpart of upstream's `css` prop callback,\n * `({ euiTheme, colorMode, highContrastMode }) => styles`. It receives the\n * nearest provider's resolved theme; its result is memoized per resolved\n * theme and function identity, so define it once (module scope or a\n * stable class field), not inline in a getter that re-runs.\n */\nexport type EuiCssFunction = (theme: EuiBorealisContext) => EuiCss;\n\n/**\n * Extra styles a caller composes into a migrated component's own class,\n * last — the Ember counterpart of upstream's `css` prop. An Emotion\n * interpolation (object, string, serialized styles), a theme function, or\n * an array of those. Use it to style a migrated child instead of adding a\n * second class, whose precedence would depend on rule insertion order.\n *\n * Keep values static: each distinct value adds rules that are never removed\n * (Emotion is append-only, as upstream). Put values that change often\n * (data- or animation-driven positions and sizes, per-item colors) in\n * `style` instead.\n */\nexport type EuiCss =\n | CSSInterpolation\n | EuiCssFunction\n | readonly EuiCss[];\n\nfunction hasFunction(style: unknown): boolean {\n if (typeof style === 'function') return true;\n return Array.isArray(style) && style.some(hasFunction);\n}\n\nfunction resolveCss(\n theme: EuiBorealisContext,\n style: EuiCss\n): CSSInterpolation {\n if (typeof style === 'function')\n return resolveCss(theme, memoizedStyles(theme, style));\n if (Array.isArray(style) && style.some(hasFunction))\n return (style as readonly EuiCss[]).map((s) => resolveCss(theme, s));\n return style as CSSInterpolation;\n}\n\n/**\n * Resolve theme functions in `@css`-style values against a context's\n * theme. Only reads `context.upstream` (a tracked dependency) when a\n * function is present.\n */\nexport function resolveEuiCss(\n context: EuiThemeContext,\n style: EuiCss\n): CSSInterpolation {\n return hasFunction(style) ? resolveCss(context.upstream, style) : (style as CSSInterpolation);\n}\n\n/**\n * Compose serialized upstream styles into a class in the provider-owned\n * cache. Theme functions anywhere in `styles` (e.g. a caller's `@css`) are\n * resolved here against the context's theme, so every component that\n * composes `@css` through `euiClass` supports them.\n */\nexport function euiClass(context: EuiThemeContext, ...styles: EuiCss[]): string {\n return context.cache.css(resolveEuiCss(context, styles));\n}\n"],"names":["memo","WeakMap","useEuiBorealisStyles","context","factory","memoizedStyles","upstream","theme","byFactory","get","set","has","hasFunction","style","Array","isArray","some","resolveCss","map","s","resolveEuiCss","euiClass","styles","cache","css"],"mappings":"AAMA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,IAAI,GAAG,IAAIC,OAAO,EAAiD;;AAEzE;AACO,SAASC,oBAAoBA,CAClCC,OAAwB,EACxBC,OAAyC,EACtC;AACH,EAAA,OAAOC,cAAc,CAACF,OAAO,CAACG,QAAQ,EAAEF,OAAO,CAAC;AAClD;;AAEA;AACO,SAASC,cAAcA,CAC5BE,KAAyB,EACzBH,OAAyC,EACtC;AACH,EAAA,IAAII,SAAS,GAAGR,IAAI,CAACS,GAAG,CAACF,KAAK,CAAC;AAC/B,EAAA,IAAI,CAACC,SAAS,EAAER,IAAI,CAACU,GAAG,CAACH,KAAK,EAAGC,SAAS,GAAG,IAAIP,OAAO,EAAG,CAAC;AAC5D,EAAA,IAAI,CAACO,SAAS,CAACG,GAAG,CAACP,OAAO,CAAC,EAAEI,SAAS,CAACE,GAAG,CAACN,OAAO,EAAEA,OAAO,CAACG,KAAK,CAAC,CAAC;AACnE,EAAA,OAAOC,SAAS,CAACC,GAAG,CAACL,OAAO,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,SAASQ,WAAWA,CAACC,KAAc,EAAW;AAC5C,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE,OAAO,IAAI;AAC5C,EAAA,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,IAAI,CAACJ,WAAW,CAAC;AACxD;AAEA,SAASK,UAAUA,CACjBV,KAAyB,EACzBM,KAAa,EACK;AAClB,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAC7B,OAAOI,UAAU,CAACV,KAAK,EAAEF,cAAc,CAACE,KAAK,EAAEM,KAAK,CAAC,CAAC;EACxD,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,IAAI,CAACJ,WAAW,CAAC,EACjD,OAAQC,KAAK,CAAuBK,GAAG,CAAEC,CAAC,IAAKF,UAAU,CAACV,KAAK,EAAEY,CAAC,CAAC,CAAC;AACtE,EAAA,OAAON,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,aAAaA,CAC3BjB,OAAwB,EACxBU,KAAa,EACK;AAClB,EAAA,OAAOD,WAAW,CAACC,KAAK,CAAC,GAAGI,UAAU,CAACd,OAAO,CAACG,QAAQ,EAAEO,KAAK,CAAC,GAAIA,KAA0B;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,QAAQA,CAAClB,OAAwB,EAAE,GAAGmB,MAAgB,EAAU;AAC9E,EAAA,OAAOnB,OAAO,CAACoB,KAAK,CAACC,GAAG,CAACJ,aAAa,CAACjB,OAAO,EAAEmB,MAAM,CAAC,CAAC;AAC1D;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const counts = new Map();
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Adds a shared document listener for the first holder and removes it when
|
|
5
|
+
* the last holder releases it. Holders pass the same (static) handler, so a
|
|
6
|
+
* grid or table adds it once however many instances are mounted. Returns the
|
|
7
|
+
* release function (idempotent).
|
|
8
|
+
*/
|
|
9
|
+
function retainDocumentListener(type, handler) {
|
|
10
|
+
let handlers = counts.get(type);
|
|
11
|
+
if (!handlers) counts.set(type, handlers = new Map());
|
|
12
|
+
const count = handlers.get(handler) ?? 0;
|
|
13
|
+
if (count === 0) document.addEventListener(type, handler);
|
|
14
|
+
handlers.set(handler, count + 1);
|
|
15
|
+
let released = false;
|
|
16
|
+
return () => {
|
|
17
|
+
if (released) return;
|
|
18
|
+
released = true;
|
|
19
|
+
const current = (handlers.get(handler) ?? 1) - 1;
|
|
20
|
+
if (current <= 0) {
|
|
21
|
+
handlers.delete(handler);
|
|
22
|
+
document.removeEventListener(type, handler);
|
|
23
|
+
} else {
|
|
24
|
+
handlers.set(handler, current);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { retainDocumentListener };
|
|
30
|
+
//# sourceMappingURL=retain-document-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retain-document-listener.js","sources":["../../src/utils/retain-document-listener.ts"],"sourcesContent":["const counts = new Map<string, Map<EventListener, number>>();\n\n/**\n * Adds a shared document listener for the first holder and removes it when\n * the last holder releases it. Holders pass the same (static) handler, so a\n * grid or table adds it once however many instances are mounted. Returns the\n * release function (idempotent).\n */\nexport function retainDocumentListener(type: string, handler: EventListener): () => void {\n let handlers = counts.get(type);\n if (!handlers) counts.set(type, (handlers = new Map()));\n\n const count = handlers.get(handler) ?? 0;\n if (count === 0) document.addEventListener(type, handler);\n handlers.set(handler, count + 1);\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const current = (handlers.get(handler) ?? 1) - 1;\n if (current <= 0) {\n handlers.delete(handler);\n document.removeEventListener(type, handler);\n } else {\n handlers.set(handler, current);\n }\n };\n}\n"],"names":["counts","Map","retainDocumentListener","type","handler","handlers","get","set","count","document","addEventListener","released","current","delete","removeEventListener"],"mappings":"AAAA,MAAMA,MAAM,GAAG,IAAIC,GAAG,EAAsC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CAACC,IAAY,EAAEC,OAAsB,EAAc;AACvF,EAAA,IAAIC,QAAQ,GAAGL,MAAM,CAACM,GAAG,CAACH,IAAI,CAAC;AAC/B,EAAA,IAAI,CAACE,QAAQ,EAAEL,MAAM,CAACO,GAAG,CAACJ,IAAI,EAAGE,QAAQ,GAAG,IAAIJ,GAAG,EAAG,CAAC;EAEvD,MAAMO,KAAK,GAAGH,QAAQ,CAACC,GAAG,CAACF,OAAO,CAAC,IAAI,CAAC;EACxC,IAAII,KAAK,KAAK,CAAC,EAAEC,QAAQ,CAACC,gBAAgB,CAACP,IAAI,EAAEC,OAAO,CAAC;EACzDC,QAAQ,CAACE,GAAG,CAACH,OAAO,EAAEI,KAAK,GAAG,CAAC,CAAC;EAEhC,IAAIG,QAAQ,GAAG,KAAK;AACpB,EAAA,OAAO,MAAM;AACX,IAAA,IAAIA,QAAQ,EAAE;AACdA,IAAAA,QAAQ,GAAG,IAAI;AACf,IAAA,MAAMC,OAAO,GAAG,CAACP,QAAQ,CAACC,GAAG,CAACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAIQ,OAAO,IAAI,CAAC,EAAE;AAChBP,MAAAA,QAAQ,CAACQ,MAAM,CAACT,OAAO,CAAC;AACxBK,MAAAA,QAAQ,CAACK,mBAAmB,CAACX,IAAI,EAAEC,OAAO,CAAC;AAC7C,IAAA,CAAC,MAAM;AACLC,MAAAA,QAAQ,CAACE,GAAG,CAACH,OAAO,EAAEQ,OAAO,CAAC;AAChC,IAAA;EACF,CAAC;AACH;;"}
|
package/dist/utils/transition.js
CHANGED
|
@@ -59,19 +59,24 @@ const getWaitDuration = records => {
|
|
|
59
59
|
}, 0);
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
// Uses `requestAnimationFrame` to perform a given callback after a specified waiting period
|
|
62
|
+
// Uses `requestAnimationFrame` to perform a given callback after a specified waiting period.
|
|
63
|
+
// Returns a function that stops the loop (upstream returns nothing, so the loop
|
|
64
|
+
// can't be stopped when its owner is destroyed).
|
|
63
65
|
const performOnFrame = (waitDuration, toPerform) => {
|
|
64
66
|
if (waitDuration > 0) {
|
|
65
67
|
const startTime = Date.now();
|
|
66
68
|
const endTime = startTime + waitDuration;
|
|
69
|
+
let frame;
|
|
67
70
|
const onFrame = () => {
|
|
68
71
|
toPerform();
|
|
69
72
|
if (endTime > Date.now()) {
|
|
70
|
-
requestAnimationFrame(onFrame);
|
|
73
|
+
frame = requestAnimationFrame(onFrame);
|
|
71
74
|
}
|
|
72
75
|
};
|
|
73
|
-
requestAnimationFrame(onFrame);
|
|
76
|
+
frame = requestAnimationFrame(onFrame);
|
|
77
|
+
return () => cancelAnimationFrame(frame);
|
|
74
78
|
}
|
|
79
|
+
return () => {};
|
|
75
80
|
};
|
|
76
81
|
|
|
77
82
|
// Convenience method for combining the result of 'getWaitDuration' directly with 'performOnFrame'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.js","sources":["../../src/utils/transition.ts"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst GROUP_NUMERIC = /^([\\d.]+)(s|ms)/;\n\nfunction getMilliseconds(value: string, unit: string): number {\n // Given the regex match and capture groups, we can assume `unit` to be either 's' or 'ms'\n const multiplier = unit === 's' ? 1000 : 1;\n\n return parseFloat(value) * multiplier;\n}\n\n// Find CSS `transition-duration` and `transition-delay` intervals\n// and return the value of each computed property in 'ms'\nexport const getTransitionTimings = (\n element: Element\n): { durationMatch: number; delayMatch: number } => {\n const computedStyle = window.getComputedStyle(element);\n\n const computedDuration = computedStyle.getPropertyValue(\n 'transition-duration'\n );\n const durationMatchArray = computedDuration.match(GROUP_NUMERIC);\n const durationMatch = durationMatchArray\n ? getMilliseconds(durationMatchArray[1]!, durationMatchArray[2]!)\n : 0;\n\n const computedDelay = computedStyle.getPropertyValue('transition-delay');\n const delayMatchArray = computedDelay.match(GROUP_NUMERIC);\n const delayMatch = delayMatchArray\n ? getMilliseconds(delayMatchArray[1]!, delayMatchArray[2]!)\n : 0;\n\n return { durationMatch, delayMatch };\n};\n\nfunction isElementNode(element: Node): element is Element {\n return element.nodeType === document.ELEMENT_NODE;\n}\n\n// Uses `getTransitionTimings` to find the total transition time for\n// all elements targeted by a MutationObserver callback\nexport const getWaitDuration = (records: MutationRecord[]): number => {\n return records.reduce((waitDuration, record) => {\n // only check for CSS transition values for ELEMENT nodes\n if (isElementNode(record.target)) {\n const { durationMatch, delayMatch } = getTransitionTimings(record.target);\n\n waitDuration = Math.max(waitDuration, durationMatch + delayMatch);\n }\n\n return waitDuration;\n }, 0);\n};\n\n// Uses `requestAnimationFrame` to perform a given callback after a specified waiting period\nexport const performOnFrame = (\n waitDuration: number,\n toPerform: () => void\n): void => {\n if (waitDuration > 0) {\n const startTime = Date.now();\n const endTime = startTime + waitDuration;\n\n const onFrame = () => {\n toPerform();\n\n if (endTime > Date.now()) {\n requestAnimationFrame(onFrame);\n }\n };\n\n requestAnimationFrame(onFrame);\n }\n};\n\n// Convenience method for combining the result of 'getWaitDuration' directly with 'performOnFrame'\nexport const getDurationAndPerformOnFrame = (\n records: MutationRecord[],\n toPerform: () => void\n): void => {\n performOnFrame(getWaitDuration(records), toPerform);\n};\n"],"names":["GROUP_NUMERIC","getMilliseconds","value","unit","multiplier","parseFloat","getTransitionTimings","element","computedStyle","window","getComputedStyle","computedDuration","getPropertyValue","durationMatchArray","match","durationMatch","computedDelay","delayMatchArray","delayMatch","isElementNode","nodeType","document","ELEMENT_NODE","getWaitDuration","records","reduce","waitDuration","record","target","Math","max","performOnFrame","toPerform","startTime","Date","now","endTime","onFrame","requestAnimationFrame","getDurationAndPerformOnFrame"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,aAAa,GAAG,iBAAiB;AAEvC,SAASC,eAAeA,CAACC,KAAa,EAAEC,IAAY,EAAU;AAC5D;EACA,MAAMC,UAAU,GAAGD,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC;AAE1C,EAAA,OAAOE,UAAU,CAACH,KAAK,CAAC,GAAGE,UAAU;AACvC;;AAEA;AACA;AACO,MAAME,oBAAoB,GAC/BC,OAAgB,IACkC;AAClD,EAAA,MAAMC,aAAa,GAAGC,MAAM,CAACC,gBAAgB,CAACH,OAAO,CAAC;AAEtD,EAAA,MAAMI,gBAAgB,GAAGH,aAAa,CAACI,gBAAgB,CACrD,qBACF,CAAC;AACD,EAAA,MAAMC,kBAAkB,GAAGF,gBAAgB,CAACG,KAAK,CAACd,aAAa,CAAC;AAChE,EAAA,MAAMe,aAAa,GAAGF,kBAAkB,GACpCZ,eAAe,CAACY,kBAAkB,CAAC,CAAC,CAAC,EAAGA,kBAAkB,CAAC,CAAC,CAAE,CAAC,GAC/D,CAAC;AAEL,EAAA,MAAMG,aAAa,GAAGR,aAAa,CAACI,gBAAgB,CAAC,kBAAkB,CAAC;AACxE,EAAA,MAAMK,eAAe,GAAGD,aAAa,CAACF,KAAK,CAACd,aAAa,CAAC;AAC1D,EAAA,MAAMkB,UAAU,GAAGD,eAAe,GAC9BhB,eAAe,CAACgB,eAAe,CAAC,CAAC,CAAC,EAAGA,eAAe,CAAC,CAAC,CAAE,CAAC,GACzD,CAAC;EAEL,OAAO;IAAEF,aAAa;AAAEG,IAAAA;GAAY;AACtC;AAEA,SAASC,aAAaA,CAACZ,OAAa,EAAsB;AACxD,EAAA,OAAOA,OAAO,CAACa,QAAQ,KAAKC,QAAQ,CAACC,YAAY;AACnD;;AAEA;AACA;AACO,MAAMC,eAAe,GAAIC,OAAyB,IAAa;EACpE,OAAOA,OAAO,CAACC,MAAM,CAAC,CAACC,YAAY,EAAEC,MAAM,KAAK;AAC9C;AACA,IAAA,IAAIR,aAAa,CAACQ,MAAM,CAACC,MAAM,CAAC,EAAE;MAChC,MAAM;QAAEb,aAAa;AAAEG,QAAAA;AAAW,OAAC,GAAGZ,oBAAoB,CAACqB,MAAM,CAACC,MAAM,CAAC;MAEzEF,YAAY,GAAGG,IAAI,CAACC,GAAG,CAACJ,YAAY,EAAEX,aAAa,GAAGG,UAAU,CAAC;AACnE,IAAA;AAEA,IAAA,OAAOQ,YAAY;EACrB,CAAC,EAAE,CAAC,CAAC;AACP;;AAEA;MACaK,cAAc,GAAGA,CAC5BL,YAAoB,EACpBM,SAAqB,
|
|
1
|
+
{"version":3,"file":"transition.js","sources":["../../src/utils/transition.ts"],"sourcesContent":["/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst GROUP_NUMERIC = /^([\\d.]+)(s|ms)/;\n\nfunction getMilliseconds(value: string, unit: string): number {\n // Given the regex match and capture groups, we can assume `unit` to be either 's' or 'ms'\n const multiplier = unit === 's' ? 1000 : 1;\n\n return parseFloat(value) * multiplier;\n}\n\n// Find CSS `transition-duration` and `transition-delay` intervals\n// and return the value of each computed property in 'ms'\nexport const getTransitionTimings = (\n element: Element\n): { durationMatch: number; delayMatch: number } => {\n const computedStyle = window.getComputedStyle(element);\n\n const computedDuration = computedStyle.getPropertyValue(\n 'transition-duration'\n );\n const durationMatchArray = computedDuration.match(GROUP_NUMERIC);\n const durationMatch = durationMatchArray\n ? getMilliseconds(durationMatchArray[1]!, durationMatchArray[2]!)\n : 0;\n\n const computedDelay = computedStyle.getPropertyValue('transition-delay');\n const delayMatchArray = computedDelay.match(GROUP_NUMERIC);\n const delayMatch = delayMatchArray\n ? getMilliseconds(delayMatchArray[1]!, delayMatchArray[2]!)\n : 0;\n\n return { durationMatch, delayMatch };\n};\n\nfunction isElementNode(element: Node): element is Element {\n return element.nodeType === document.ELEMENT_NODE;\n}\n\n// Uses `getTransitionTimings` to find the total transition time for\n// all elements targeted by a MutationObserver callback\nexport const getWaitDuration = (records: MutationRecord[]): number => {\n return records.reduce((waitDuration, record) => {\n // only check for CSS transition values for ELEMENT nodes\n if (isElementNode(record.target)) {\n const { durationMatch, delayMatch } = getTransitionTimings(record.target);\n\n waitDuration = Math.max(waitDuration, durationMatch + delayMatch);\n }\n\n return waitDuration;\n }, 0);\n};\n\n// Uses `requestAnimationFrame` to perform a given callback after a specified waiting period.\n// Returns a function that stops the loop (upstream returns nothing, so the loop\n// can't be stopped when its owner is destroyed).\nexport const performOnFrame = (\n waitDuration: number,\n toPerform: () => void\n): (() => void) => {\n if (waitDuration > 0) {\n const startTime = Date.now();\n const endTime = startTime + waitDuration;\n let frame: number;\n\n const onFrame = () => {\n toPerform();\n\n if (endTime > Date.now()) {\n frame = requestAnimationFrame(onFrame);\n }\n };\n\n frame = requestAnimationFrame(onFrame);\n\n return () => cancelAnimationFrame(frame);\n }\n\n return () => {};\n};\n\n// Convenience method for combining the result of 'getWaitDuration' directly with 'performOnFrame'\nexport const getDurationAndPerformOnFrame = (\n records: MutationRecord[],\n toPerform: () => void\n): void => {\n performOnFrame(getWaitDuration(records), toPerform);\n};\n"],"names":["GROUP_NUMERIC","getMilliseconds","value","unit","multiplier","parseFloat","getTransitionTimings","element","computedStyle","window","getComputedStyle","computedDuration","getPropertyValue","durationMatchArray","match","durationMatch","computedDelay","delayMatchArray","delayMatch","isElementNode","nodeType","document","ELEMENT_NODE","getWaitDuration","records","reduce","waitDuration","record","target","Math","max","performOnFrame","toPerform","startTime","Date","now","endTime","frame","onFrame","requestAnimationFrame","cancelAnimationFrame","getDurationAndPerformOnFrame"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-eui/core",
|
|
3
|
-
"version": "16.0.
|
|
3
|
+
"version": "16.0.2",
|
|
4
4
|
"description": "Ember Components for Elastic UI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"ember-focus-trap": "^1.1.0",
|
|
135
135
|
"ember-power-select": "^9.0.2",
|
|
136
136
|
"ember-qunit": "^9.0.2",
|
|
137
|
-
"ember-source": "~7.3.
|
|
137
|
+
"ember-source": "~7.3.1",
|
|
138
138
|
"ember-strict-application-resolver": "^0.1.1",
|
|
139
139
|
"ember-template-lint": "^6.1.0",
|
|
140
140
|
"eslint": "^9.39.5",
|