@inboxsdk/core 0.2.29-alpha.5 → 0.2.29-alpha.6

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.5",
3
+ "version": "0.2.29-alpha.6",
4
4
  "description": "Library for building browser extensions for Gmail",
5
5
  "main": "inboxsdk.js",
6
6
  "author": "Streak",
package/src/inboxsdk.d.ts CHANGED
@@ -106,6 +106,9 @@ export interface ButterBar {
106
106
  // export interface DropdownButtonAccessoryDescriptor {}
107
107
 
108
108
  export { AppMenu };
109
+ export type { AppMenuItemView } from './platform-implementation-js/views/app-menu-item-view';
110
+ export type { AppMenuItemPanelDescriptor } from './platform-implementation-js/namespaces/app-menu';
111
+ export type { CollapsiblePanelView } from './platform-implementation-js/views/collapsible-panel-view';
109
112
 
110
113
  export interface NativeNavItemView extends EventEmitter {
111
114
  addNavItem(descriptor: NavItemDescriptor): NavItemView;
@@ -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;AAI1C,eAAO,MAAM,YAAY,OAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,8BAAwC,CAAC;AAcpE,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;;;;MAIzC;IASX,IAAI,OAAO,YAEV;IAED,UAAU,CAAC,OAAO,EAAE,OAAO;IAS3B,IAAI,eAAe,+BAElB;IAED,IAAI,eAAe,CAAC,eAAe,4BAAA,EAGlC;IAED,IAAI,OAAO,gBAEV;IAED,IAAI,qBAAqB,mBAExB;gBAGC,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,0BAA0B;IAmB7C,MAAM;IAON,UAAU,CACR,iBAAiB,EACb,iBAAiB,GACjB,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC;CA4M/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;AAI1C,eAAO,MAAM,YAAY,OAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,8BAAwC,CAAC;AAcpE,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;;;;MAIzC;IASX,IAAI,OAAO,YAEV;IAED,UAAU,CAAC,OAAO,EAAE,OAAO;IAS3B,IAAI,eAAe,+BAElB;IAED,IAAI,eAAe,CAAC,eAAe,4BAAA,EAGlC;IAED,IAAI,OAAO,gBAEV;IAED,IAAI,qBAAqB,mBAExB;gBAGC,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,0BAA0B;IAmB7C,MAAM;IAON,UAAU,CACR,iBAAiB,EACb,iBAAiB,GACjB,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC;CA+N/C"}
@@ -101,7 +101,9 @@ export class CollapsiblePanelView extends EventEmitter {
101
101
  if (!iconUrl) {
102
102
  return;
103
103
  }
104
- const theme = GmailElementGetter.isDarkTheme() ? iconUrl.darkTheme : iconUrl.lightTheme;
104
+ const theme = GmailElementGetter.isDarkTheme()
105
+ ? iconUrl.darkTheme
106
+ : iconUrl.lightTheme;
105
107
  if (!theme) {
106
108
  return;
107
109
  }
@@ -184,9 +186,23 @@ export class CollapsiblePanelView extends EventEmitter {
184
186
  this.#updateIcon(element);
185
187
  this.#updateScrollablePanelLoading(element);
186
188
  }
189
+ static #preloadedIcons = new Set();
187
190
  #updateIcon(element) {
188
191
  const iconContainerEl = querySelector(element, PRIMARY_BUTTON_ELEMENT_SELECTOR);
189
192
  const { panelDefault, panelHovered } = this.#extractPrimaryButtonTheme() ?? {};
193
+ // alleviate FOUC when switching between active and default icons
194
+ // https://stackoverflow.com/a/68521953/1924257
195
+ for (const url of [panelHovered, panelDefault]) {
196
+ if (!url || CollapsiblePanelView.#preloadedIcons.has(url)) {
197
+ continue;
198
+ }
199
+ CollapsiblePanelView.#preloadedIcons.add(url);
200
+ var link = document.createElement('link');
201
+ link.rel = 'preload';
202
+ link.as = 'image';
203
+ link.href = url;
204
+ document.head.appendChild(link);
205
+ }
190
206
  for (const [key, value] of Object.entries({
191
207
  '--background-image--hover': panelHovered,
192
208
  '--background-image': panelDefault,