@inboxsdk/core 0.2.29-alpha.2 → 0.2.29-alpha.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inboxsdk/core",
3
- "version": "0.2.29-alpha.2",
3
+ "version": "0.2.29-alpha.3",
4
4
  "description": "Library for building browser extensions for Gmail",
5
5
  "main": "inboxsdk.js",
6
6
  "author": "Streak",
@@ -19,6 +19,7 @@ declare const GmailElementGetter: {
19
19
  getMoleParent(): HTMLElement | null;
20
20
  shouldAddNavItemsInline(): boolean;
21
21
  getAppMenuAsync: () => Promise<HTMLElement | undefined>;
22
+ isAppBurgerMenuOpen(): boolean;
22
23
  getAppMenuContainer(): HTMLElement | null;
23
24
  getSeparateSectionNavItemMenuInjectionContainer(): HTMLElement | null;
24
25
  getSameSectionNavItemMenuInjectionContainer(): HTMLElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-element-getter.d.ts","sourceRoot":"","sources":["../../../../../../src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAA+B,EAC7B,mBAAmB,EACpB,MAAM,yCAAyC,CAAC;AAUjD,QAAA,MAAM,kBAAkB;yBACD,WAAW,GAAG,IAAI;uCAcJ,WAAW,GAAG,IAAI;kDAKP,WAAW,GAAG,IAAI;+CAKrB,WAAW,GAAG,IAAI;wBAIzC,WAAW,GAAG,IAAI;iCAOT,WAAW,GAAG,IAAI;gCAInB,WAAW,GAAG,SAAS,GAAG,IAAI;2CA8BnB,WAAW,GAAG,IAAI;iDAIZ,MAAM,UAAU,CAC3D,mBAAmB,EACnB,KAAK,CACN;uBAgBkB,WAAW,GAAG,IAAI;kCAIP,WAAW,GAAG,IAAI;+BAOrB,WAAW,GAAG,IAAI;0CAIP,WAAW,GAAG,IAAI;+BAI7B,WAAW,GAAG,IAAI;+CAQrC,GAAG,KACR,MAAM,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;qBAItB,WAAW,GAAG,IAAI;+BAOR,OAAO;;;uDA6EiB,WAAW,GAAG,IAAI;mDAItB,WAAW,GAAG,IAAI;0BAQ3C,WAAW,EAAE;0BAIb,WAAW,GAAG,IAAI;sBAItB,gBAAgB,GAAG,IAAI;qCAMR,WAAW,GAAG,IAAI;kCAIrB,WAAW,GAAG,IAAI;2BAIzB,WAAW,GAAG,IAAI;iCAWZ,WAAW,GAAG,IAAI;yBAI1B,WAAW;8BAIN,WAAW,GAAG,IAAI;sBAM1B,OAAO;mBAaV,OAAO;qBAIL,OAAO;oBAIR,OAAO;iCAIM,OAAO;gCAOR,OAAO;;qCASJ,WAAW,GAAG,IAAI;;gCAKrB,QAAQ,IAAI,CAAC;CAG1C,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"gmail-element-getter.d.ts","sourceRoot":"","sources":["../../../../../../src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAA+B,EAC7B,mBAAmB,EACpB,MAAM,yCAAyC,CAAC;AAUjD,QAAA,MAAM,kBAAkB;yBACD,WAAW,GAAG,IAAI;uCAcJ,WAAW,GAAG,IAAI;kDAKP,WAAW,GAAG,IAAI;+CAKrB,WAAW,GAAG,IAAI;wBAIzC,WAAW,GAAG,IAAI;iCAOT,WAAW,GAAG,IAAI;gCAInB,WAAW,GAAG,SAAS,GAAG,IAAI;2CA8BnB,WAAW,GAAG,IAAI;iDAIZ,MAAM,UAAU,CAC3D,mBAAmB,EACnB,KAAK,CACN;uBAgBkB,WAAW,GAAG,IAAI;kCAIP,WAAW,GAAG,IAAI;+BAOrB,WAAW,GAAG,IAAI;0CAIP,WAAW,GAAG,IAAI;+BAI7B,WAAW,GAAG,IAAI;+CAQrC,GAAG,KACR,MAAM,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;qBAItB,WAAW,GAAG,IAAI;+BAOR,OAAO;;;;uDAqFiB,WAAW,GAAG,IAAI;mDAItB,WAAW,GAAG,IAAI;0BAQ3C,WAAW,EAAE;0BAIb,WAAW,GAAG,IAAI;sBAItB,gBAAgB,GAAG,IAAI;qCAMR,WAAW,GAAG,IAAI;kCAIrB,WAAW,GAAG,IAAI;2BAIzB,WAAW,GAAG,IAAI;iCAWZ,WAAW,GAAG,IAAI;yBAI1B,WAAW;8BAIN,WAAW,GAAG,IAAI;sBAM1B,OAAO;mBAaV,OAAO;qBAIL,OAAO;oBAIR,OAAO;iCAIM,OAAO;gCAOR,OAAO;;qCASJ,WAAW,GAAG,IAAI;;gCAKrB,QAAQ,IAAI,CAAC;CAG1C,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -164,6 +164,11 @@ const GmailElementGetter = {
164
164
  }
165
165
  }
166
166
  }),
167
+ isAppBurgerMenuOpen() {
168
+ return (document
169
+ .querySelector('.gb_Hc[aria-expanded]')
170
+ ?.getAttribute('aria-expanded') === 'true' ?? false);
171
+ },
167
172
  getAppMenuContainer() {
168
173
  return document.querySelector('.aqk.aql.bkL');
169
174
  },
@@ -30,10 +30,6 @@ export declare class GmailAppMenuItemView extends GmailAppMenuItemView_base {
30
30
  * @internal
31
31
  */
32
32
  hover(): void;
33
- /**
34
- * @internal
35
- */
36
- activate(): void;
37
33
  }
38
34
  export {};
39
35
  //# sourceMappingURL=gmail-app-menu-item-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-app-menu-item-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,iBAAiB,MAAM,eAAe,CAAC;AAK9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,YAAY,MAAgB,CAAC;AAC1C,eAAO,MAAM,cAAc,yBAAmC,CAAC;AAC/D,eAAO,MAAM,aAAa,4BAA+C,CAAC;mDAOL,kBAAkB,aAAa,CAAC;AAArG,qBAAa,oBAAqB,SAAQ,yBAA4D;;IACpG,MAAM,CAAC,UAAU;;;MAGN;IAOX,IAAI,OAAO,4BAEV;IAED,qBAAqB,CAAC,qBAAqB,EAAE,qBAAqB;IAKlE,IAAI,kBAAkB,sCAErB;gBAEW,MAAM,EAAE,WAAW;IAW/B,MAAM;IAON;;OAEG;IACH,IAAI;IAIJ;;OAEG;IACH,KAAK;IASL;;OAEG;IACH,QAAQ;CAiFT"}
1
+ {"version":3,"file":"gmail-app-menu-item-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,iBAAiB,MAAM,eAAe,CAAC;AAK9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,YAAY,MAAgB,CAAC;AAC1C,eAAO,MAAM,cAAc,yBAAmC,CAAC;AAC/D,eAAO,MAAM,aAAa,4BAA+C,CAAC;mDAOL,kBAAkB,aAAa,CAAC;AAArG,qBAAa,oBAAqB,SAAQ,yBAA4D;;IACpG,MAAM,CAAC,UAAU;;;MAGN;IAOX,IAAI,OAAO,4BAEV;IAED,qBAAqB,CAAC,qBAAqB,EAAE,qBAAqB;IAKlE,IAAI,kBAAkB,sCAErB;gBAEW,MAAM,EAAE,WAAW;IAc/B,MAAM;IAON;;OAEG;IACH,IAAI;IAIJ;;OAEG;IACH,KAAK;CAqFN"}
@@ -34,8 +34,8 @@ export class GmailAppMenuItemView extends EventEmitter {
34
34
  this.#driver = driver;
35
35
  driver.getStopper().onValue(() => this.remove());
36
36
  this.#element.addEventListener('click', (e) => this.#onClick(e));
37
- this.#element.addEventListener('mouseenter', this.#onHover);
38
37
  this.#element.addEventListener('mouseleave', this.#onBlur);
38
+ querySelector(this.#element, ICON_ELEMENT_SELECTOR).addEventListener('mouseenter', this.#onHover);
39
39
  }
40
40
  remove() {
41
41
  if (this.#destroyed)
@@ -59,19 +59,6 @@ export class GmailAppMenuItemView extends EventEmitter {
59
59
  }
60
60
  this.element?.classList.add(GmailAppMenuItemView.elementCss.HOVER);
61
61
  }
62
- /**
63
- * @internal
64
- */
65
- activate() {
66
- this.element?.classList.remove(GmailAppMenuItemView.elementCss.HOVER);
67
- this.element?.classList.add(GmailAppMenuItemView.elementCss.ACTIVE);
68
- }
69
- // /**
70
- // * @internal
71
- // */
72
- // deactivate() {
73
- // this.element?.classList.remove(GmailAppMenuItemView.elementCss.ACTIVE);
74
- // }
75
62
  #setupElement() {
76
63
  const element = document.createElement('div');
77
64
  element.className = ELEMENT_CLASS;
@@ -98,10 +85,13 @@ export class GmailAppMenuItemView extends EventEmitter {
98
85
  const iconContainerEl = querySelector(element, ICON_ELEMENT_SELECTOR);
99
86
  const { iconUrl, iconClassName } = this.#menuItemDescriptor ?? {};
100
87
  if (iconUrl) {
101
- const theme = GmailElementGetter.isDarkTheme()
88
+ const rawTheme = GmailElementGetter.isDarkTheme()
102
89
  ? iconUrl.darkTheme
103
90
  : iconUrl.lightTheme;
91
+ const theme = typeof rawTheme === 'string' ? rawTheme : rawTheme.default;
92
+ const activeImg = typeof rawTheme === 'string' ? rawTheme : rawTheme.active;
104
93
  iconContainerEl.style.setProperty('--background-image', `url(${theme})`);
94
+ iconContainerEl.style.setProperty('--background-image--active', `url(${activeImg})`);
105
95
  }
106
96
  iconContainerEl.className = cx(ICON_ELEMENT_CLASS, iconClassName);
107
97
  }
@@ -113,7 +103,7 @@ export class GmailAppMenuItemView extends EventEmitter {
113
103
  this.emit('click', e);
114
104
  this.#menuItemDescriptor?.onClick?.(e);
115
105
  if (this.#menuItemDescriptor?.routeID) {
116
- this.#driver.goto(this.#menuItemDescriptor.routeID, this.#menuItemDescriptor?.routeParams);
106
+ this.#driver.goto(this.#menuItemDescriptor.routeID, this.#menuItemDescriptor.routeParams);
117
107
  }
118
108
  }
119
109
  #onBlur = (e) => {
@@ -1,19 +1,31 @@
1
1
  import { RouteView } from '../../inboxsdk';
2
2
  import GmailDriver from '../dom-driver/gmail/gmail-driver';
3
3
  import { AppMenuItemView } from '../views/app-menu-item-view';
4
+ type ThemedIcon = string | {
5
+ active: string;
6
+ default: string;
7
+ };
4
8
  export type AppMenuItemDescriptor = {
5
9
  name: string;
6
10
  iconUrl?: {
7
- darkTheme: string;
8
- lightTheme: string;
11
+ darkTheme: ThemedIcon;
12
+ lightTheme: ThemedIcon;
9
13
  };
10
14
  className?: string;
11
15
  iconClassName?: string;
12
16
  insertIndex?: number;
13
17
  onClick?: (e?: MouseEvent) => void | null;
14
18
  onHover?: (e?: MouseEvent) => void | null;
19
+ /**
20
+ * If routeID is provided, isRouteActive should be as well.
21
+ */
15
22
  routeID?: string;
16
23
  routeParams?: {};
24
+ /**
25
+ * @example (routeView) => routeView.getRouteID() === 'inbox'
26
+ *
27
+ * @see RouteView
28
+ */
17
29
  isRouteActive: (routeView: RouteView) => boolean;
18
30
  };
19
31
  export type AppMenuItemPanelDescriptor = {
@@ -37,4 +49,5 @@ export default class AppMenu {
37
49
  addMenuItem(menuItemDescriptor: AppMenuItemDescriptor): AppMenuItemView;
38
50
  isShown(): Promise<boolean>;
39
51
  }
52
+ export {};
40
53
  //# sourceMappingURL=app-menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-menu.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/namespaces/app-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;QACjC,OAAO,CAAC,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;;gBAGd,MAAM,EAAE,WAAW;IAI/B,WAAW,CAAC,kBAAkB,EAAE,qBAAqB,GAAG,eAAe;IAKjE,OAAO;CAId"}
1
+ {"version":3,"file":"app-menu.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/namespaces/app-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,KAAK,UAAU,GACX,MAAM,GACN;IACE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,SAAS,EAAE,UAAU,CAAC;QACtB,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,EAAE,CAAC;IACjB;;;;OAIG;IACH,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;QACjC,OAAO,CAAC,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;;gBAGd,MAAM,EAAE,WAAW;IAI/B,WAAW,CAAC,kBAAkB,EAAE,qBAAqB,GAAG,eAAe;IAKjE,OAAO;CAId"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-menu-item-view.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/views/app-menu-item-view.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAWzC,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAI3D,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;8CA2C8D,aAAa,aAAa,CAAC;AAH3F;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBAAuD;;IAmQ1F,IAAI,kBAAkB,0BAErB;gBAUW,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB;IAkDpE,mBAAmB,CAAC,eAAe,EAAE,0BAA0B;IAkC/D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB;IAKtD,MAAM;CA+BP"}
1
+ {"version":3,"file":"app-menu-item-view.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/views/app-menu-item-view.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAUzC,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAK3D,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;8CAyC8D,aAAa,aAAa,CAAC;AAH3F;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBAAuD;;IAiT1F,IAAI,kBAAkB,0BAErB;gBAQW,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB;IAuDpE,mBAAmB,CAAC,eAAe,EAAE,0BAA0B;IAiC/D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB;IAMtD,MAAM;CAYP"}
@@ -1,11 +1,11 @@
1
1
  import Kefir from 'kefir';
2
- import kefirStopper from 'kefir-stopper';
3
2
  import kefirBus from 'kefir-bus';
4
3
  import EventEmitter from '../lib/safe-event-emitter';
5
4
  import { GmailAppMenuItemView, NATIVE_CLASS, INBOXSDK_CLASS, } from '../dom-driver/gmail/views/gmail-app-menu-item-view';
6
5
  import { NATIVE_CLASS as PANEL_NATIVE_CLASS, CollapsiblePanelView, } from './collapsible-panel-view';
7
6
  import { addCollapsiblePanel } from '../dom-driver/gmail/gmail-driver/add-collapsible-panel';
8
7
  import GmailElementGetter from '../dom-driver/gmail/gmail-element-getter';
8
+ import defer from '../../common/defer';
9
9
  var NativeAppMenuClassName;
10
10
  (function (NativeAppMenuClassName) {
11
11
  NativeAppMenuClassName["MAIL"] = "XJ";
@@ -33,12 +33,13 @@ const routeIDtoMenuItemClass = Object.fromEntries([
33
33
  ...SPACES_ROUTES.map((route) => [route, NativeAppMenuClassName.SPACES]),
34
34
  ...MEET_ROUTES.map((route) => [route, NativeAppMenuClassName.MEET]),
35
35
  ]);
36
- const initialRoutingStateStopper = kefirStopper();
37
36
  /**
38
37
  * Contains both a native Gmail app menu item and a collapsible panel.
39
38
  */
40
39
  export class AppMenuItemView extends EventEmitter {
41
40
  static #menuItemChangeStream = Kefir.pool();
41
+ static #menuItemChangeBus = kefirBus();
42
+ static #menuItemAddedDeferred = defer();
42
43
  static #routeViewDriverStream;
43
44
  static #menuItemToPanelMap = new Map();
44
45
  static #appMenuItemViews = new Set();
@@ -58,19 +59,9 @@ export class AppMenuItemView extends EventEmitter {
58
59
  if (AppMenuItemView.#routeViewDriverStream)
59
60
  return;
60
61
  AppMenuItemView.#routeViewDriverStream = driver.getRouteViewDriverStream();
61
- const bus = kefirBus();
62
- AppMenuItemView.#menuItemChangeStream.plug(bus);
63
- AppMenuItemView.#routeViewDriverStream
64
- .takeUntilBy(initialRoutingStateStopper)
65
- .onValue(async (routeView) => {
62
+ AppMenuItemView.#routeViewDriverStream.onValue(async (routeView) => {
66
63
  const routeViewID = routeView.getRouteID();
67
64
  const routeType = routeView.getRouteType();
68
- const routeViewParams = routeView.getParams();
69
- console.debug({
70
- routeViewID,
71
- routeType,
72
- routeViewParams,
73
- });
74
65
  /* Handling custom app menu items */
75
66
  const descriptors = Array.from(AppMenuItemView.#appMenuItemViews, async (appMenuItemView) => {
76
67
  const gmailView = await appMenuItemView.#gmailViewPromise;
@@ -81,17 +72,21 @@ export class AppMenuItemView extends EventEmitter {
81
72
  return descriptor?.isRouteActive(routeView);
82
73
  }) ?? [];
83
74
  if (gmailView?.element) {
84
- bus.emit(['click', gmailView.element]);
75
+ AppMenuItemView.#menuItemChangeBus.emit(['click', gmailView.element]);
85
76
  return;
86
77
  }
87
78
  /* Handling native app menu items */
88
- const selector = `.${routeViewID
89
- ? routeIDtoMenuItemClass[routeViewID] ?? NativeAppMenuClassName.MAIL
90
- : NativeAppMenuClassName.MAIL}`;
91
- const element = document.querySelector(selector);
92
- if (element) {
93
- bus.emit(['click', element]);
94
- return;
79
+ let menuItemClass = '';
80
+ if (routeViewID) {
81
+ menuItemClass = routeIDtoMenuItemClass[routeViewID];
82
+ }
83
+ if ((!routeViewID || !menuItemClass) && routeType !== 'CUSTOM') {
84
+ menuItemClass = NativeAppMenuClassName.MAIL;
85
+ }
86
+ const menuItemElement = menuItemClass &&
87
+ document.querySelector(`.${menuItemClass}`);
88
+ if (menuItemElement) {
89
+ AppMenuItemView.#menuItemChangeBus.emit(['click', menuItemElement]);
95
90
  }
96
91
  });
97
92
  }
@@ -101,6 +96,7 @@ export class AppMenuItemView extends EventEmitter {
101
96
  if (!gmailAppMenu) {
102
97
  return;
103
98
  }
99
+ AppMenuItemView.#menuItemChangeStream.plug(AppMenuItemView.#menuItemChangeBus);
104
100
  // Set up menu item panel -> menu collapsible panel element mappings
105
101
  for (const [menuItemClass, panelClass] of nativeButtonToPanelMap) {
106
102
  const menuItemElement = document.querySelector(`.${NATIVE_CLASS}.${menuItemClass}`);
@@ -111,116 +107,145 @@ export class AppMenuItemView extends EventEmitter {
111
107
  AppMenuItemView.#menuItemToPanelMap.set(menuItemElement, panelElement ?? undefined);
112
108
  }
113
109
  }
114
- // Set up event listeners we use to control menu UI
115
- const stream = Kefir.stream((emitter) => {
116
- // We intercept some events emitted on Gmail (native) menu items to gain full control of the menu (menu items and panels).
117
- // Thus, some native event handlers won't be invoked so we replicate the Gmail's behavior by ourselves.
118
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
119
- for (const nativeMenuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}:not(.${INBOXSDK_CLASS})`) ?? []) {
120
- // Gmail uses this listener for panel hover state activation. It's prevented from propagation and we handle UI updates
121
- nativeMenuItem.addEventListener('mouseenter', (e) => {
122
- e.stopImmediatePropagation();
123
- emitter.emit(['mouseenter', nativeMenuItem, e]);
124
- }, true);
125
- // Gmail uses this listener for panel hover state deactivation. It's prevented from propagation and we handle UI updates
126
- nativeMenuItem.addEventListener('mouseleave', (e) => {
127
- e.stopImmediatePropagation();
128
- emitter.emit(['mouseleave', nativeMenuItem, e]);
129
- }, true);
130
- // Click event isn't prevented from propagation to let Gmail handle routing. The styling is handled by us
131
- nativeMenuItem.addEventListener('click', () => {
132
- emitter.emit(['click', nativeMenuItem]);
133
- });
134
- // Handle moving cursor out of panel. We use it to enhance the styling since it won't be handled by Gmail
135
- const panel = AppMenuItemView.#menuItemToPanelMap.get(nativeMenuItem);
136
- panel?.addEventListener('mouseleave', (e) => {
137
- emitter.emit(['mouseleave', nativeMenuItem, e]);
138
- });
139
- }
140
- });
141
- AppMenuItemView.#menuItemChangeStream.plug(stream);
142
110
  })();
143
111
  }
112
+ static {
113
+ AppMenuItemView.#menuItemAddedDeferred.promise.then(() => {
114
+ // Set up event listeners we use to control menu UI
115
+ // We intercept some events emitted on Gmail (native) menu items to gain full control of the menu (menu items and panels).
116
+ // Thus, some native event handlers won't be invoked so we replicate the Gmail's behavior by ourselves.
117
+ const appMenuElement = GmailElementGetter.getAppMenuContainer();
118
+ for (const nativeMenuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}:not(.${INBOXSDK_CLASS})`) ?? []) {
119
+ // Gmail uses this listener for panel hover state activation. It's prevented from propagation and we handle UI updates
120
+ const buttonElement = nativeMenuItem.querySelector('.V6.CL');
121
+ buttonElement?.addEventListener('mouseenter', (e) => {
122
+ e.stopImmediatePropagation();
123
+ AppMenuItemView.#menuItemChangeBus.emit([
124
+ 'mouseenter',
125
+ nativeMenuItem,
126
+ e,
127
+ ]);
128
+ }, true);
129
+ // Gmail uses this listener for panel hover state deactivation. It's prevented from propagation and we handle UI updates
130
+ nativeMenuItem.addEventListener('mouseleave', (e) => {
131
+ e.stopImmediatePropagation();
132
+ AppMenuItemView.#menuItemChangeBus.emit([
133
+ 'mouseleave',
134
+ nativeMenuItem,
135
+ e,
136
+ ]);
137
+ }, true);
138
+ // Click event isn't prevented from propagation to let Gmail handle routing. The styling is handled by us
139
+ nativeMenuItem.addEventListener('click', () => {
140
+ AppMenuItemView.#menuItemChangeBus.emit(['click', nativeMenuItem]);
141
+ });
142
+ // Handle moving cursor out of panel. We use it to enhance the styling since it won't be handled by Gmail
143
+ const panel = AppMenuItemView.#menuItemToPanelMap.get(nativeMenuItem);
144
+ panel?.addEventListener('mouseleave', (e) => {
145
+ AppMenuItemView.#menuItemChangeBus.emit([
146
+ 'mouseleave',
147
+ nativeMenuItem,
148
+ e,
149
+ ]);
150
+ });
151
+ }
152
+ });
153
+ }
144
154
  static {
145
155
  AppMenuItemView.#menuItemChangeStream.onValue(async (v) => {
146
156
  const [type, menuItem, mouseEvent] = v;
147
157
  const { ACTIVE, HOVER } = GmailAppMenuItemView.elementCss;
148
- if (type === 'mouseenter') {
149
- const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
150
- if (mouseEvent.relatedTarget instanceof Node &&
151
- (menuItem.contains(mouseEvent.relatedTarget) ||
152
- panel?.contains(mouseEvent.relatedTarget)))
153
- return;
154
- const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
155
- const activePanel = AppMenuItemView.#getActivePanel();
156
- if (activeMenuItem === menuItem && activePanel === panel)
157
- return;
158
- // deactivate active panel
159
- if (activePanel) {
160
- activePanel.style.removeProperty('height');
161
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
162
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
158
+ switch (type) {
159
+ case 'mouseenter': {
160
+ const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
161
+ const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
162
+ const activePanel = AppMenuItemView.#getActivePanel();
163
+ const burgerMenuOpen = GmailElementGetter.isAppBurgerMenuOpen();
164
+ // hover-styled panel is displayed for collapsed burger menu
165
+ if (activeMenuItem === menuItem &&
166
+ activePanel === panel &&
167
+ burgerMenuOpen)
168
+ return;
169
+ // deactivate active panel
170
+ if (activePanel) {
171
+ activePanel.style.removeProperty('height');
172
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
173
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
174
+ }
175
+ // activate new panel
176
+ if (panel) {
177
+ const height = window.innerHeight - panel.getBoundingClientRect().top;
178
+ panel.style.cssText = `height: ${height}px;`;
179
+ panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
180
+ panel.classList.add(CollapsiblePanelView.elementCss.HOVER);
181
+ // hover menu item
182
+ menuItem.classList.add(HOVER);
183
+ // handle burger menu collapsed
184
+ if (!burgerMenuOpen) {
185
+ for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
186
+ panel.classList.add(CollapsiblePanelView.elementCss.COLLAPSED_HOVER);
187
+ }
188
+ }
189
+ }
190
+ else {
191
+ // panel doesn't exist (i.e. Meet) so activate active menu item's panel instead (as Gmail currently does -- FEB 2023)
192
+ const panel = activeMenuItem &&
193
+ AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
194
+ panel?.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
195
+ }
196
+ break;
163
197
  }
164
- // activate new panel
165
- if (panel) {
166
- const height = window.innerHeight - panel.getBoundingClientRect().top;
167
- panel.style.cssText = `height: ${height}px;`;
168
- panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
169
- panel.classList.add(CollapsiblePanelView.elementCss.HOVER);
170
- // hover menu item
171
- menuItem.classList.add(HOVER);
172
- }
173
- else {
174
- // panel doesn't exist (i.e. Meet) so activate active menu item's panel instead (as Gmail currently does -- FEB 2023)
175
- const panel = activeMenuItem &&
198
+ case 'mouseleave': {
199
+ const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
200
+ const activePanel = AppMenuItemView.#getActivePanel();
201
+ const activeMenuItemPanel = activeMenuItem &&
176
202
  AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
177
- panel?.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
178
- }
179
- }
180
- if (type === 'mouseleave') {
181
- const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
182
- const activePanel = AppMenuItemView.#getActivePanel();
183
- const activeMenuItemPanel = activeMenuItem &&
184
- AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
185
- if (mouseEvent.relatedTarget instanceof Node &&
186
- (menuItem.contains(mouseEvent.relatedTarget) ||
187
- activePanel?.contains(mouseEvent.relatedTarget)))
188
- return;
189
- if (activePanel === activeMenuItemPanel)
190
- return;
191
- // unhover menu item
192
- menuItem.classList.remove(HOVER);
193
- // deactivate active panel
194
- if (activePanel) {
195
- activePanel.style.removeProperty('height');
196
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
197
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
198
- }
199
- // activate active menu item panel
200
- if (activeMenuItemPanel) {
201
- activeMenuItemPanel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
202
- }
203
- }
204
- if (type === 'click') {
205
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
206
- // deactivate active panel
207
- const activePanel = AppMenuItemView.#getActivePanel();
208
- if (activePanel) {
209
- activePanel.style.removeProperty('height');
210
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
211
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
212
- }
213
- // deactivate menu items
214
- for (const menuItem_ of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
215
- menuItem_.classList.remove(ACTIVE);
216
- menuItem_.classList.remove(HOVER);
203
+ if (mouseEvent.relatedTarget instanceof Node &&
204
+ (menuItem.contains(mouseEvent.relatedTarget) ||
205
+ activePanel?.contains(mouseEvent.relatedTarget)))
206
+ return;
207
+ const burgerMenuOpen = GmailElementGetter.isAppBurgerMenuOpen();
208
+ if (activePanel === activeMenuItemPanel && burgerMenuOpen)
209
+ return;
210
+ // unhover menu item
211
+ menuItem.classList.remove(HOVER);
212
+ // handle burger menu collapsed
213
+ for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
214
+ panel.classList.remove(CollapsiblePanelView.elementCss.COLLAPSED_HOVER);
215
+ }
216
+ // deactivate active panel
217
+ if (activePanel) {
218
+ activePanel.style.removeProperty('height');
219
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
220
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
221
+ }
222
+ // activate active menu item panel
223
+ if (activeMenuItemPanel) {
224
+ activeMenuItemPanel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
225
+ }
226
+ break;
217
227
  }
218
- // activate menu item
219
- menuItem.classList.add(ACTIVE);
220
- // activate panel
221
- const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
222
- if (panel) {
223
- panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
228
+ case 'click': {
229
+ const appMenuElement = GmailElementGetter.getAppMenuContainer();
230
+ // deactivate active panel
231
+ const activePanel = AppMenuItemView.#getActivePanel();
232
+ if (activePanel) {
233
+ activePanel.style.removeProperty('height');
234
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
235
+ activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
236
+ }
237
+ // deactivate menu items
238
+ for (const menuItem_ of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
239
+ menuItem_.classList.remove(ACTIVE);
240
+ menuItem_.classList.remove(HOVER);
241
+ }
242
+ // activate menu item
243
+ menuItem.classList.add(ACTIVE);
244
+ // activate panel
245
+ const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
246
+ if (panel) {
247
+ panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
248
+ }
224
249
  }
225
250
  }
226
251
  });
@@ -232,8 +257,6 @@ export class AppMenuItemView extends EventEmitter {
232
257
  #destroyed = false;
233
258
  #gmailViewPromise;
234
259
  #collapsiblePanel;
235
- #appMenuItemStream;
236
- #collapsiblePanelStream;
237
260
  #menuItemDescriptor;
238
261
  constructor(driver, menuItemDescriptor) {
239
262
  super();
@@ -249,28 +272,34 @@ export class AppMenuItemView extends EventEmitter {
249
272
  if (gmailElement) {
250
273
  AppMenuItemView.#menuItemToPanelMap.set(gmailElement, undefined);
251
274
  }
252
- this.#appMenuItemStream = Kefir.stream((emitter) => {
253
- gmailView.on('destroy', () => {
254
- emitter.end();
255
- this.remove();
256
- });
257
- gmailView.on('click', () => {
258
- emitter.emit(['click', gmailElement]);
259
- this.emit('click');
260
- });
261
- gmailView.on('hover', (e) => {
262
- emitter.emit(['mouseenter', gmailElement, e]);
263
- this.emit('hover');
264
- });
265
- gmailView.on('blur', (e) => {
266
- emitter.emit(['mouseleave', gmailElement, e]);
267
- this.emit('blur');
268
- });
275
+ gmailView.on('destroy', () => {
276
+ AppMenuItemView.#menuItemChangeBus.end();
277
+ this.remove();
278
+ });
279
+ gmailView.on('click', () => {
280
+ AppMenuItemView.#menuItemChangeBus.emit(['click', gmailElement]);
281
+ this.emit('click');
282
+ });
283
+ gmailView.on('hover', (e) => {
284
+ AppMenuItemView.#menuItemChangeBus.emit([
285
+ 'mouseenter',
286
+ gmailElement,
287
+ e,
288
+ ]);
289
+ this.emit('hover');
290
+ });
291
+ gmailView.on('blur', (e) => {
292
+ AppMenuItemView.#menuItemChangeBus.emit([
293
+ 'mouseleave',
294
+ gmailElement,
295
+ e,
296
+ ]);
297
+ this.emit('blur');
269
298
  });
270
- AppMenuItemView.#menuItemChangeStream.plug(this.#appMenuItemStream);
271
- AppMenuItemView.#setUpRouteViewDriverStream(driver);
272
- AppMenuItemView.#appMenuItemViews.add(this);
273
299
  });
300
+ AppMenuItemView.#setUpRouteViewDriverStream(driver);
301
+ AppMenuItemView.#menuItemAddedDeferred.resolve(undefined);
302
+ AppMenuItemView.#appMenuItemViews.add(this);
274
303
  }
275
304
  async addCollapsiblePanel(panelDescriptor) {
276
305
  const collapsiblePanel = await addCollapsiblePanel(this.#driver, panelDescriptor);
@@ -278,12 +307,13 @@ export class AppMenuItemView extends EventEmitter {
278
307
  this.#gmailViewPromise.then((gmailView) => {
279
308
  const gmailElement = gmailView.element;
280
309
  if (gmailElement) {
281
- this.#collapsiblePanelStream = Kefir.stream((emitter) => {
282
- collapsiblePanel.on('blur', (e) => {
283
- emitter.value(['mouseleave', gmailElement, e]);
284
- });
310
+ collapsiblePanel.on('blur', (e) => {
311
+ AppMenuItemView.#menuItemChangeBus.value([
312
+ 'mouseleave',
313
+ gmailElement,
314
+ e,
315
+ ]);
285
316
  });
286
- AppMenuItemView.#menuItemChangeStream.plug(this.#collapsiblePanelStream);
287
317
  }
288
318
  if (gmailElement && collapsiblePanel) {
289
319
  AppMenuItemView.#menuItemToPanelMap.set(gmailElement, collapsiblePanel.element);
@@ -296,6 +326,7 @@ export class AppMenuItemView extends EventEmitter {
296
326
  async update(menuItemDescriptor) {
297
327
  const gmailView = await this.#gmailViewPromise;
298
328
  gmailView.setMenuItemDescriptor(menuItemDescriptor);
329
+ this.#menuItemDescriptor = menuItemDescriptor;
299
330
  }
300
331
  remove() {
301
332
  if (this.#destroyed)
@@ -308,22 +339,6 @@ export class AppMenuItemView extends EventEmitter {
308
339
  AppMenuItemView.#menuItemToPanelMap.delete(gmailView.element);
309
340
  gmailView.remove();
310
341
  });
311
- this.#appMenuItemStream &&
312
- AppMenuItemView.#menuItemChangeStream.unplug(this.#appMenuItemStream);
313
- this.#collapsiblePanelStream &&
314
- AppMenuItemView.#menuItemChangeStream.unplug(this.#collapsiblePanelStream);
315
342
  AppMenuItemView.#appMenuItemViews.delete(this);
316
- initialRoutingStateStopper.destroy();
317
- }
318
- async #activate() {
319
- const gmailView = await this.#gmailViewPromise;
320
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
321
- const { ACTIVE } = GmailAppMenuItemView.elementCss;
322
- // Note this affects both the active app menu item and the collapsible panel.
323
- for (const el of appMenuElement?.querySelectorAll(`.${ACTIVE}`) ?? []) {
324
- el.classList.remove(ACTIVE);
325
- }
326
- gmailView.activate();
327
- this.#collapsiblePanel?.activate();
328
343
  }
329
344
  }
@@ -19,9 +19,10 @@ export declare class CollapsiblePanelView extends CollapsiblePanelView_base {
19
19
  };
20
20
  static elementCss: {
21
21
  readonly ACTIVE: "apV";
22
- readonly COLLAPSED: "aBa";
22
+ readonly COLLAPSED: "aBA";
23
23
  /** A hover popover has both ACTIVE _and_ HOVER */
24
24
  readonly HOVER: "aJu";
25
+ readonly COLLAPSED_HOVER: "bym";
25
26
  };
26
27
  get element(): HTMLElement | undefined;
27
28
  set panelDescriptor(panelDescriptor: AppMenuItemPanelDescriptor);
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-panel-view.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/views/collapsible-panel-view.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAIpE,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,eAAO,MAAM,YAAY,OAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,8BAAwC,CAAC;AAQpE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/B,CAAC;mDAEmE,aAAa,aAAa,CAAC;AAAhG,qBAAa,oBAAqB,SAAQ,yBAAuD;;IAC/F,MAAM,CAAC,gBAAgB;;;MAGZ;IACX,MAAM,CAAC,UAAU;;;QAGf,kDAAkD;;MAEzC;IAQX,IAAI,OAAO,4BAEV;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,0BAA0B,EAG9D;gBAEW,MAAM,EAAE,WAAW;IAS/B;;OAEG;IACH,QAAQ;IAQR,MAAM;IAON,UAAU,CACR,iBAAiB,EACb,iBAAiB,GACjB,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC;CA+J/C"}
1
+ {"version":3,"file":"collapsible-panel-view.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/views/collapsible-panel-view.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAIpE,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,eAAO,MAAM,YAAY,OAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,8BAAwC,CAAC;AAQpE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/B,CAAC;mDAEmE,aAAa,aAAa,CAAC;AAAhG,qBAAa,oBAAqB,SAAQ,yBAAuD;;IAC/F,MAAM,CAAC,gBAAgB;;;MAGZ;IACX,MAAM,CAAC,UAAU;;;QAGf,kDAAkD;;;MAGzC;IAQX,IAAI,OAAO,4BAEV;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,0BAA0B,EAG9D;gBAEW,MAAM,EAAE,WAAW;IAS/B;;OAEG;IACH,QAAQ;IAQR,MAAM;IAON,UAAU,CACR,iBAAiB,EACb,iBAAiB,GACjB,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC;CAkK/C"}