@inboxsdk/core 1.1.8 → 1.2.0
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/inboxsdk.js +8 -8
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js +1 -1
- package/pageWorld.js.map +1 -1
- package/src/injected-js/gmail/setup-gmail-interceptor.d.ts.map +1 -1
- package/src/injected-js/gmail/setup-gmail-interceptor.js +2 -5
- package/src/injected-js/gmail/thread-identifier/index.d.ts.map +1 -1
- package/src/injected-js/gmail/thread-identifier/index.js +1 -2
- package/src/injected-js/message-metadata-holder.d.ts.map +1 -1
- package/src/injected-js/setup-data-exposer.d.ts.map +1 -1
- package/src/injected-js/setup-data-exposer.js +0 -1
- package/src/injected-js/setup-error-silencer.d.ts.map +1 -1
- package/src/injected-js/setup-error-silencer.js +2 -3
- package/src/injected-js/xhr-helper.d.ts.map +1 -1
- package/src/injected-js/xhr-helper.js +27 -57
- package/src/injected-js/xhr-proxy-factory.d.ts.map +1 -1
- package/src/injected-js/xhr-proxy-factory.js +1 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +1 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.d.ts +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +4 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +1 -2
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +1 -2
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1 -3
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +3 -4
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.d.ts +2 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.d.ts +0 -2
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -3
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +3 -4
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +2 -3
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +2 -3
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +2 -3
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +2 -4
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +7 -14
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +1 -2
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +1 -2
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.d.ts.map +1 -1
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -1
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.d.ts.map +1 -1
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts +2 -1
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/driver-interfaces/driver.d.ts +2 -1
- package/src/platform-implementation-js/driver-interfaces/driver.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +1 -2
- package/src/platform-implementation-js/lib/handle-compose-link-chips.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +1 -2
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +1 -3
- package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +1 -1
- package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/safe-event-emitter.js +1 -2
- package/src/platform-implementation-js/namespaces/app-menu.d.ts +49 -3
- package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/app-menu.js +16 -2
- package/src/platform-implementation-js/namespaces/compose.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/compose.js +0 -1
- package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/conversations.js +4 -6
- package/src/platform-implementation-js/namespaces/global.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/global.js +0 -1
- package/src/platform-implementation-js/namespaces/toolbars.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/toolbars.js +1 -2
- package/src/platform-implementation-js/platform-implementation.d.ts.map +1 -1
- package/src/platform-implementation-js/platform-implementation.js +1 -12
- package/src/platform-implementation-js/views/app-menu-item-view.d.ts +27 -1
- package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/app-menu-item-view.js +18 -1
- package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +20 -0
- package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/collapsible-panel-view.js +14 -0
- package/src/platform-implementation-js/views/compose-view.d.ts +4 -4
- package/src/platform-implementation-js/views/compose-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/content-panel-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/message-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/message-view.js +2 -4
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/widgets/drawer-view.d.ts.map +1 -1
- package/src/platform-implementation-js/widgets/drawer-view.js +0 -1
- package/src/platform-implementation-js/widgets/modal-view.d.ts +1 -1
- package/src/platform-implementation-js/widgets/modal-view.d.ts.map +1 -1
- package/src/platform-implementation-js/widgets/modal-view.js +1 -2
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.d.ts +0 -8
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +0 -20
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.d.ts +0 -8
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +0 -25
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.d.ts +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +0 -108
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.d.ts +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +0 -555
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.d.ts +0 -2
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +0 -6
|
@@ -1,555 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
-
/*
|
|
3
|
-
This is used for PRE MATERIAL GMAIL, when sidebar only existed on threads.
|
|
4
|
-
If you're reading this in the future, do you remember a time when there wasn't a global sidebar?
|
|
5
|
-
It was a strange world, can you believe who the President of the United States was?
|
|
6
|
-
|
|
7
|
-
*/
|
|
8
|
-
import findIndex from 'lodash/findIndex';
|
|
9
|
-
import asap from 'asap';
|
|
10
|
-
import autoHtml from 'auto-html';
|
|
11
|
-
import * as Kefir from 'kefir';
|
|
12
|
-
import kefirStopper from 'kefir-stopper';
|
|
13
|
-
import kefirBus from 'kefir-bus';
|
|
14
|
-
import React from 'react';
|
|
15
|
-
import ReactDOM from 'react-dom';
|
|
16
|
-
import findParent from '../../../../common/find-parent';
|
|
17
|
-
import OrderManager from 'order-manager';
|
|
18
|
-
import idMap from '../../../lib/idMap';
|
|
19
|
-
import incrementName from '../../../lib/incrementName';
|
|
20
|
-
import querySelector from '../../../lib/dom/querySelectorOrFail';
|
|
21
|
-
import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
22
|
-
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
23
|
-
import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
|
|
24
|
-
import fakeWindowResize from '../../../lib/fake-window-resize';
|
|
25
|
-
import AppSidebar from '../../../driver-common/sidebar/AppSidebar';
|
|
26
|
-
import ContentPanelViewDriver from '../../../driver-common/sidebar/ContentPanelViewDriver';
|
|
27
|
-
import GmailElementGetter from '../gmail-element-getter';
|
|
28
|
-
import addIconArea from './gmail-thread-sidebar-view/add-icon-area';
|
|
29
|
-
import addToIconArea from './gmail-app-sidebar-view/primary/add-to-icon-area';
|
|
30
|
-
import cx from 'classnames';
|
|
31
|
-
const ADD_ON_SIDEBAR_CONTENT_SELECTOR = '.J-KU-Jz';
|
|
32
|
-
const ACTIVE_ADD_ON_ICON_SELECTOR = '.J-KU-KO';
|
|
33
|
-
import { sidebarWaitingPlatformSelector, sidebarWaitingPlatformClassName, } from '../../../driver-common/sidebar/constants';
|
|
34
|
-
class GmailAppSidebarView {
|
|
35
|
-
_stopper = kefirStopper();
|
|
36
|
-
_driver;
|
|
37
|
-
_instanceId;
|
|
38
|
-
constructor(driver, sidebarContainerEl, addonSidebarElement, widthManager) {
|
|
39
|
-
this._driver = driver;
|
|
40
|
-
// We need to be able to cooperate with other apps/extensions that are
|
|
41
|
-
// sharing the app sidebar. We store some properties as attributes in the
|
|
42
|
-
// shared DOM instead of as class properties; class properties are mostly
|
|
43
|
-
// restricted to being used for references to DOM nodes. When
|
|
44
|
-
// GmailAppSidebarView is instantiated, we check the element for an
|
|
45
|
-
// attribute to see whether a previous extension's GmailAppSidebarView has
|
|
46
|
-
// already set up the sidebar or not.
|
|
47
|
-
const idElement = addonSidebarElement || sidebarContainerEl;
|
|
48
|
-
if (!idElement)
|
|
49
|
-
throw new Error('should not happen');
|
|
50
|
-
const instanceId = idElement.getAttribute('data-sdk-sidebar-instance-id');
|
|
51
|
-
if (instanceId != null) {
|
|
52
|
-
this._instanceId = instanceId;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this._createElement(sidebarContainerEl, addonSidebarElement, widthManager);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
destroy() {
|
|
59
|
-
this._stopper.destroy();
|
|
60
|
-
}
|
|
61
|
-
getStopper() {
|
|
62
|
-
return this._stopper;
|
|
63
|
-
}
|
|
64
|
-
// This value controls whether the app sidebar should automatically open
|
|
65
|
-
// itself when available when the chat sidebar isn't present. It's only set
|
|
66
|
-
// if the user interacts with the app sidebar button.
|
|
67
|
-
_getShouldAppSidebarOpen() {
|
|
68
|
-
return (global.localStorage.getItem('inboxsdk__app_sidebar_should_open') !==
|
|
69
|
-
'false');
|
|
70
|
-
}
|
|
71
|
-
_setShouldAppSidebarOpen(open) {
|
|
72
|
-
try {
|
|
73
|
-
global.localStorage.setItem('inboxsdk__app_sidebar_should_open', String(open));
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
console.error('error saving', err);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
_createElement(_sidebarContainerEl, _addonSidebarContainerEl, widthManager) {
|
|
80
|
-
let container, iconArea;
|
|
81
|
-
let component;
|
|
82
|
-
this._instanceId = `${Date.now()}-${Math.random()}`;
|
|
83
|
-
{
|
|
84
|
-
const idElement = _addonSidebarContainerEl || _sidebarContainerEl;
|
|
85
|
-
if (!idElement)
|
|
86
|
-
throw new Error('should not happen');
|
|
87
|
-
idElement.setAttribute('data-sdk-sidebar-instance-id', this._instanceId);
|
|
88
|
-
this._stopper.onValue(() => {
|
|
89
|
-
idElement.removeAttribute('data-sdk-sidebar-instance-id');
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
const el = document.createElement('div');
|
|
93
|
-
el.className = idMap('app_sidebar_container');
|
|
94
|
-
const buttonContainers = new Map();
|
|
95
|
-
let activatedWhileLoading = false;
|
|
96
|
-
let contentContainer;
|
|
97
|
-
let usedAddonsSidebar = false;
|
|
98
|
-
const updateHighlightedAppIconBus = kefirBus();
|
|
99
|
-
this._stopper.onEnd(() => {
|
|
100
|
-
updateHighlightedAppIconBus.end();
|
|
101
|
-
});
|
|
102
|
-
if (_addonSidebarContainerEl) {
|
|
103
|
-
const mainContentBodyContainerElement = GmailElementGetter.getMainContentBodyContainerElement();
|
|
104
|
-
if (mainContentBodyContainerElement) {
|
|
105
|
-
contentContainer = mainContentBodyContainerElement.parentElement;
|
|
106
|
-
if (!contentContainer)
|
|
107
|
-
throw new Error('should not happen');
|
|
108
|
-
contentContainer.classList.add('container_app_sidebar_in_use');
|
|
109
|
-
querySelector(_addonSidebarContainerEl, ADD_ON_SIDEBAR_CONTENT_SELECTOR).insertAdjacentElement('beforebegin', el);
|
|
110
|
-
// See if the element is visible.
|
|
111
|
-
// Give it some content temporarily to check if it becomes sized to show it.
|
|
112
|
-
_addonSidebarContainerEl.classList.add('app_sidebar_visible');
|
|
113
|
-
_addonSidebarContainerEl.classList.add(idMap('app_sidebar_in_use'));
|
|
114
|
-
contentContainer.classList.add('container_app_sidebar_visible');
|
|
115
|
-
el.textContent = 'x';
|
|
116
|
-
const elRect = el.getBoundingClientRect();
|
|
117
|
-
el.textContent = '';
|
|
118
|
-
// This gets re-added later once the panel has some content to show
|
|
119
|
-
_addonSidebarContainerEl.classList.remove('app_sidebar_visible');
|
|
120
|
-
contentContainer.classList.remove('container_app_sidebar_visible');
|
|
121
|
-
const supportedScreenSize = window.innerWidth >= 1024 && window.innerHeight >= 600;
|
|
122
|
-
if (!global._APP_SIDEBAR_TEST &&
|
|
123
|
-
(elRect.width == 0 ||
|
|
124
|
-
elRect.height == 0 ||
|
|
125
|
-
(supportedScreenSize &&
|
|
126
|
-
Math.floor(elRect.right) > Math.floor(window.innerWidth)))) {
|
|
127
|
-
this._driver
|
|
128
|
-
.getLogger()
|
|
129
|
-
.error(new Error('SDK sidebar inserted into add-ons sidebar was not visible'), {
|
|
130
|
-
rect: {
|
|
131
|
-
// rect's properties aren't enumerable so we have to do this
|
|
132
|
-
top: elRect.top,
|
|
133
|
-
bottom: elRect.bottom,
|
|
134
|
-
left: elRect.left,
|
|
135
|
-
right: elRect.right,
|
|
136
|
-
width: elRect.width,
|
|
137
|
-
height: elRect.height,
|
|
138
|
-
},
|
|
139
|
-
window: {
|
|
140
|
-
innerWidth: window.innerWidth,
|
|
141
|
-
innerHeight: window.innerHeight,
|
|
142
|
-
},
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
usedAddonsSidebar = true;
|
|
147
|
-
}
|
|
148
|
-
if (!usedAddonsSidebar) {
|
|
149
|
-
if (contentContainer)
|
|
150
|
-
contentContainer.classList.remove('container_app_sidebar_in_use');
|
|
151
|
-
_addonSidebarContainerEl.classList.remove(idMap('app_sidebar_in_use'));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const addonSidebarContainerEl = usedAddonsSidebar
|
|
156
|
-
? _addonSidebarContainerEl
|
|
157
|
-
: null;
|
|
158
|
-
const sidebarContainerEl = usedAddonsSidebar
|
|
159
|
-
? _addonSidebarContainerEl
|
|
160
|
-
: _sidebarContainerEl;
|
|
161
|
-
if (!sidebarContainerEl)
|
|
162
|
-
throw new Error('should not happen');
|
|
163
|
-
if (!usedAddonsSidebar) {
|
|
164
|
-
sidebarContainerEl.insertBefore(el, sidebarContainerEl.firstElementChild);
|
|
165
|
-
sidebarContainerEl.classList.add(idMap('app_sidebar_in_use'));
|
|
166
|
-
}
|
|
167
|
-
if (!document.body.querySelector(sidebarWaitingPlatformSelector)) {
|
|
168
|
-
const waitingPlatform = document.createElement('div');
|
|
169
|
-
waitingPlatform.className = cx(sidebarWaitingPlatformClassName, idMap('app_sidebar_waiting_platform'));
|
|
170
|
-
document.body.appendChild(waitingPlatform);
|
|
171
|
-
}
|
|
172
|
-
if (addonSidebarContainerEl) {
|
|
173
|
-
container = () => el;
|
|
174
|
-
el.classList.add('addon_sidebar');
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
const containerEl = findParent(sidebarContainerEl, (el) => window.getComputedStyle(el).overflowY !== 'visible');
|
|
178
|
-
container = containerEl ? () => containerEl : undefined;
|
|
179
|
-
}
|
|
180
|
-
const currentIds = new Set();
|
|
181
|
-
const orderManager = new OrderManager({
|
|
182
|
-
get() {
|
|
183
|
-
try {
|
|
184
|
-
return JSON.parse(global.localStorage.getItem('inboxsdk__sidebar_ordering') || 'null');
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
console.error('failed to read sidebar order data', err);
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
set(data) {
|
|
191
|
-
try {
|
|
192
|
-
global.localStorage.setItem('inboxsdk__sidebar_ordering', JSON.stringify(data));
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
console.error('failed to set sidebar order data', err);
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
updateHighlightedAppIconBus
|
|
200
|
-
.bufferWithTimeOrCount(150, 100)
|
|
201
|
-
.filter((events) => events.length > 0)
|
|
202
|
-
.takeUntilBy(this._stopper)
|
|
203
|
-
.onValue(() => {
|
|
204
|
-
const elBoundingBox = el.getBoundingClientRect();
|
|
205
|
-
const boundingTop = elBoundingBox.top + el.scrollTop;
|
|
206
|
-
const boundingBottom = boundingTop + elBoundingBox.height;
|
|
207
|
-
const titleBars = Array.from(el.querySelectorAll(`.${idMap('app_sidebar_content_panel')}.${idMap('expanded')} .${idMap('app_sidebar_content_panel_top_line')}`));
|
|
208
|
-
const titleBar = titleBars.find((t) => {
|
|
209
|
-
const tBoundingBox = t.getBoundingClientRect();
|
|
210
|
-
return (tBoundingBox.bottom > boundingTop &&
|
|
211
|
-
tBoundingBox.bottom < boundingBottom);
|
|
212
|
-
});
|
|
213
|
-
if (titleBar) {
|
|
214
|
-
const instanceId = titleBar.getAttribute('data-instance-id');
|
|
215
|
-
const appName = titleBar.getAttribute('data-app-name');
|
|
216
|
-
if (!appName)
|
|
217
|
-
return;
|
|
218
|
-
const appButton = buttonContainers.get(appName);
|
|
219
|
-
if (!appButton || !iconArea)
|
|
220
|
-
return;
|
|
221
|
-
const activeButtonContainer = iconArea.querySelector('.sidebar_button_container_active');
|
|
222
|
-
if (activeButtonContainer) {
|
|
223
|
-
activeButtonContainer.classList.remove('sidebar_button_container_active');
|
|
224
|
-
}
|
|
225
|
-
appButton.classList.add('sidebar_button_container_active');
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
const _appSidebarRefSetter = (threadSidebarComponent) => {
|
|
229
|
-
if (threadSidebarComponent) {
|
|
230
|
-
component = threadSidebarComponent;
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
const render = () => {
|
|
234
|
-
ReactDOM.render(React.createElement(AppSidebar, { ref: _appSidebarRefSetter, panels: orderManager.getOrderedItems().map((x) => x.value), onMoveEnd: (newList, movedItem, oldIndex, newIndex) => {
|
|
235
|
-
orderManager.moveItem(oldIndex, newIndex);
|
|
236
|
-
render();
|
|
237
|
-
}, onExpandedToggle: () => {
|
|
238
|
-
updateHighlightedAppIconBus.emit(null);
|
|
239
|
-
}, container: container }), el, () => {
|
|
240
|
-
updateHighlightedAppIconBus.emit(null);
|
|
241
|
-
});
|
|
242
|
-
};
|
|
243
|
-
render();
|
|
244
|
-
Kefir.fromEvents(window, 'storage')
|
|
245
|
-
.filter((e) => e.key === 'inboxsdk__sidebar_ordering')
|
|
246
|
-
.takeUntilBy(this._stopper)
|
|
247
|
-
.onValue(() => {
|
|
248
|
-
orderManager.reload();
|
|
249
|
-
render();
|
|
250
|
-
});
|
|
251
|
-
this._stopper.onValue(() => {
|
|
252
|
-
ReactDOM.unmountComponentAtNode(el);
|
|
253
|
-
el.remove();
|
|
254
|
-
sidebarContainerEl.classList.remove(idMap('app_sidebar_in_use'));
|
|
255
|
-
sidebarContainerEl.classList.remove('app_sidebar_visible');
|
|
256
|
-
if (iconArea)
|
|
257
|
-
iconArea.remove();
|
|
258
|
-
const mainContentBodyContainerElement = GmailElementGetter.getMainContentBodyContainerElement();
|
|
259
|
-
if (mainContentBodyContainerElement) {
|
|
260
|
-
contentContainer = mainContentBodyContainerElement.parentElement;
|
|
261
|
-
if (contentContainer) {
|
|
262
|
-
contentContainer.classList.remove('container_app_sidebar_in_use');
|
|
263
|
-
contentContainer.classList.remove('container_app_sidebar_visible');
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
Kefir.fromEvents(document.body, 'inboxsdkNewSidebarPanel')
|
|
268
|
-
.filter((e) => e.detail.sidebarId === this._instanceId)
|
|
269
|
-
.takeUntilBy(this._stopper)
|
|
270
|
-
.onValue((event) => {
|
|
271
|
-
let id = event.detail.id;
|
|
272
|
-
while (currentIds.has(id)) {
|
|
273
|
-
id = incrementName(id);
|
|
274
|
-
}
|
|
275
|
-
currentIds.add(id);
|
|
276
|
-
const appName = event.detail.appName;
|
|
277
|
-
orderManager.addItem({
|
|
278
|
-
groupId: event.detail.appId,
|
|
279
|
-
id,
|
|
280
|
-
orderHint: event.detail.orderHint,
|
|
281
|
-
value: {
|
|
282
|
-
id,
|
|
283
|
-
appName,
|
|
284
|
-
appId: event.detail.appId,
|
|
285
|
-
instanceId: event.detail.instanceId,
|
|
286
|
-
title: event.detail.title,
|
|
287
|
-
iconClass: event.detail.iconClass,
|
|
288
|
-
iconUrl: event.detail.iconUrl,
|
|
289
|
-
hideTitleBar: event.detail.hideTitleBar,
|
|
290
|
-
el: event.target,
|
|
291
|
-
},
|
|
292
|
-
});
|
|
293
|
-
render();
|
|
294
|
-
if (!addonSidebarContainerEl)
|
|
295
|
-
return;
|
|
296
|
-
iconArea = addonSidebarContainerEl.querySelector('.' + idMap('sidebar_iconArea'));
|
|
297
|
-
if (!iconArea) {
|
|
298
|
-
iconArea = document.createElement('div');
|
|
299
|
-
iconArea.className = idMap('sidebar_iconArea');
|
|
300
|
-
addIconArea(iconArea, addonSidebarContainerEl, this._stopper);
|
|
301
|
-
}
|
|
302
|
-
// we put adding the content panel icon in the iconArea in an asap so that we
|
|
303
|
-
// get consistent ordering. The ordering of the icons is based on the position of the FIRST
|
|
304
|
-
// panel with that app name. This means we need to wait for all the panels for a particular appName
|
|
305
|
-
// to be added first, and then we can get the correct position
|
|
306
|
-
asap(() => {
|
|
307
|
-
if (!iconArea)
|
|
308
|
-
throw new Error('should not happen');
|
|
309
|
-
const instanceId = event.detail.instanceId;
|
|
310
|
-
const appIconUrl = event.detail.appIconUrl;
|
|
311
|
-
// If there's an existing button for the app, then just increment its
|
|
312
|
-
// data-count attribute instead of adding a new button.
|
|
313
|
-
const existingButtonContainer = buttonContainers.get(appName);
|
|
314
|
-
let buttonContainer;
|
|
315
|
-
if (existingButtonContainer) {
|
|
316
|
-
const currentCount = Number(existingButtonContainer.getAttribute('data-count')) || 1;
|
|
317
|
-
existingButtonContainer.setAttribute('data-count', String(currentCount + 1));
|
|
318
|
-
buttonContainer = existingButtonContainer;
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
buttonContainer = document.createElement('div');
|
|
322
|
-
buttonContainer.className = idMap('sidebar_button_container');
|
|
323
|
-
buttonContainer.setAttribute('data-app-name', appName);
|
|
324
|
-
buttonContainer.setAttribute('data-count', String(1));
|
|
325
|
-
buttonContainer.innerHTML = autoHtml `
|
|
326
|
-
<button class="inboxsdk__button_icon" type="button" data-tooltip="${appName}">
|
|
327
|
-
<img class="inboxsdk__button_iconImg" src="${appIconUrl}">
|
|
328
|
-
</button>
|
|
329
|
-
<div class="inboxsdk__button_selectedIndicator"></div>
|
|
330
|
-
`;
|
|
331
|
-
if (event.detail.primaryColor) {
|
|
332
|
-
querySelector(buttonContainer, '.inboxsdk__button_selectedIndicator').style.backgroundColor = event.detail.primaryColor;
|
|
333
|
-
}
|
|
334
|
-
buttonContainers.set(appName, buttonContainer);
|
|
335
|
-
querySelector(buttonContainer, 'button').addEventListener('click', (event) => {
|
|
336
|
-
event.stopPropagation();
|
|
337
|
-
const activeButtonContainer = iconArea
|
|
338
|
-
? iconArea.querySelector('.sidebar_button_container_active')
|
|
339
|
-
: null;
|
|
340
|
-
if (activeButtonContainer) {
|
|
341
|
-
activeButtonContainer.classList.remove('sidebar_button_container_active');
|
|
342
|
-
}
|
|
343
|
-
if (activeButtonContainer === buttonContainer) {
|
|
344
|
-
if (addonSidebarContainerEl)
|
|
345
|
-
addonSidebarContainerEl.classList.remove('app_sidebar_visible');
|
|
346
|
-
if (contentContainer)
|
|
347
|
-
contentContainer.classList.remove('container_app_sidebar_visible');
|
|
348
|
-
this._setShouldAppSidebarOpen(false);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
if (addonSidebarContainerEl)
|
|
352
|
-
addonSidebarContainerEl.classList.add('app_sidebar_visible');
|
|
353
|
-
buttonContainer.classList.add('sidebar_button_container_active');
|
|
354
|
-
if (contentContainer)
|
|
355
|
-
contentContainer.classList.add('container_app_sidebar_visible');
|
|
356
|
-
this._setShouldAppSidebarOpen(true);
|
|
357
|
-
if (addonSidebarContainerEl) {
|
|
358
|
-
// check and deactivate add-on sidebar
|
|
359
|
-
const activeAddOnIcon = addonSidebarContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
|
|
360
|
-
if (activeAddOnIcon)
|
|
361
|
-
simulateClick(activeAddOnIcon);
|
|
362
|
-
//fake resize to get gmail to fix any heights that are messed up
|
|
363
|
-
fakeWindowResize();
|
|
364
|
-
// if the tabList is still loading then handle the case where the user
|
|
365
|
-
// clicks on an SDK icon to bring up an SDK app when Gmail thinks that it needs
|
|
366
|
-
// to bring up an Add-On sidebar (since that was last visible from Gmail's perspective)
|
|
367
|
-
// so we need to suppress Gmail bringing up their sidebar. This handles the flag of if we
|
|
368
|
-
// need to suppress
|
|
369
|
-
const nativeIconArea = addonSidebarContainerEl.firstElementChild;
|
|
370
|
-
if (!nativeIconArea)
|
|
371
|
-
return;
|
|
372
|
-
const loadingHolderAsAny = nativeIconArea.firstElementChild;
|
|
373
|
-
const loadingHolder = loadingHolderAsAny;
|
|
374
|
-
if (!loadingHolder)
|
|
375
|
-
return;
|
|
376
|
-
if (loadingHolder.style.display !== 'none') {
|
|
377
|
-
activatedWhileLoading = true;
|
|
378
|
-
makeMutationObserverChunkedStream(loadingHolder, {
|
|
379
|
-
attributes: true,
|
|
380
|
-
attributeFilter: ['style'],
|
|
381
|
-
})
|
|
382
|
-
.toProperty(() => null)
|
|
383
|
-
.map(() => loadingHolder.style.display === 'none')
|
|
384
|
-
.filter(Boolean)
|
|
385
|
-
.take(1)
|
|
386
|
-
.delay(150)
|
|
387
|
-
.takeUntilBy(this._stopper)
|
|
388
|
-
.onValue(() => {
|
|
389
|
-
activatedWhileLoading = false;
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
component.openPanel(instanceId);
|
|
394
|
-
component.scrollPanelIntoView(instanceId, true);
|
|
395
|
-
}
|
|
396
|
-
}, true);
|
|
397
|
-
if (iconArea)
|
|
398
|
-
addToIconArea(orderManager, appName, buttonContainer, iconArea);
|
|
399
|
-
if (widthManager)
|
|
400
|
-
widthManager.fixWidths();
|
|
401
|
-
if (this._getShouldAppSidebarOpen()) {
|
|
402
|
-
// if we last had an SDK sidebar open then bring up the SDK sidebar when the first
|
|
403
|
-
// panel gets added
|
|
404
|
-
const activeButtonContainer = iconArea.querySelector('.sidebar_button_container_active');
|
|
405
|
-
if (!activeButtonContainer) {
|
|
406
|
-
buttonContainer.classList.add('sidebar_button_container_active');
|
|
407
|
-
if (addonSidebarContainerEl)
|
|
408
|
-
addonSidebarContainerEl.classList.add('app_sidebar_visible');
|
|
409
|
-
if (contentContainer)
|
|
410
|
-
contentContainer.classList.add('container_app_sidebar_visible');
|
|
411
|
-
//fake resize to get gmail to fix any heights that are messed up
|
|
412
|
-
fakeWindowResize();
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
});
|
|
417
|
-
});
|
|
418
|
-
Kefir.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel')
|
|
419
|
-
.filter((e) => e.detail.sidebarId === this._instanceId)
|
|
420
|
-
.takeUntilBy(this._stopper)
|
|
421
|
-
.onValue((event) => {
|
|
422
|
-
const orderedItems = orderManager.getOrderedItems();
|
|
423
|
-
const index = findIndex(orderedItems, (x) => x.value.instanceId === event.detail.instanceId);
|
|
424
|
-
if (index === -1)
|
|
425
|
-
throw new Error('should not happen: failed to find orderItem');
|
|
426
|
-
orderManager.updateItemValueByIndex(index, {
|
|
427
|
-
id: orderedItems[index].value.id,
|
|
428
|
-
appId: event.detail.appId,
|
|
429
|
-
appName: event.detail.appName || event.detail.title,
|
|
430
|
-
instanceId: event.detail.instanceId,
|
|
431
|
-
title: event.detail.title,
|
|
432
|
-
iconClass: event.detail.iconClass,
|
|
433
|
-
iconUrl: event.detail.iconUrl,
|
|
434
|
-
hideTitleBar: event.detail.hideTitleBar,
|
|
435
|
-
el: event.target,
|
|
436
|
-
});
|
|
437
|
-
render();
|
|
438
|
-
});
|
|
439
|
-
Kefir.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel')
|
|
440
|
-
.filter((e) => e.detail.sidebarId === this._instanceId)
|
|
441
|
-
.takeUntilBy(this._stopper)
|
|
442
|
-
.onValue((event) => {
|
|
443
|
-
const orderedItems = orderManager.getOrderedItems();
|
|
444
|
-
const index = findIndex(orderedItems, (x) => x.value.instanceId === event.detail.instanceId);
|
|
445
|
-
if (index === -1)
|
|
446
|
-
throw new Error('should not happen: failed to find orderItem');
|
|
447
|
-
currentIds.delete(orderedItems[index].id);
|
|
448
|
-
orderManager.removeItemByIndex(index);
|
|
449
|
-
if (orderManager.getOrderedItems().length === 0) {
|
|
450
|
-
this.destroy();
|
|
451
|
-
}
|
|
452
|
-
else {
|
|
453
|
-
render();
|
|
454
|
-
}
|
|
455
|
-
if (!addonSidebarContainerEl)
|
|
456
|
-
return;
|
|
457
|
-
iconArea = addonSidebarContainerEl.querySelector('.' + idMap('sidebar_iconArea'));
|
|
458
|
-
if (!iconArea)
|
|
459
|
-
return;
|
|
460
|
-
if (widthManager)
|
|
461
|
-
widthManager.fixWidths();
|
|
462
|
-
const appName = event.detail.appName;
|
|
463
|
-
const container = buttonContainers.get(appName);
|
|
464
|
-
if (container) {
|
|
465
|
-
const currentCount = Number(container.getAttribute('data-count'));
|
|
466
|
-
if (currentCount <= 1) {
|
|
467
|
-
const activeButtonContainer = el.querySelector('.sidebar_button_container_active');
|
|
468
|
-
container.remove();
|
|
469
|
-
buttonContainers.delete(appName);
|
|
470
|
-
if (container === activeButtonContainer) {
|
|
471
|
-
if (addonSidebarContainerEl) {
|
|
472
|
-
addonSidebarContainerEl.classList.remove('app_sidebar_visible');
|
|
473
|
-
if (contentContainer)
|
|
474
|
-
contentContainer.classList.remove('container_app_sidebar_visible');
|
|
475
|
-
}
|
|
476
|
-
this._setShouldAppSidebarOpen(false);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
else if (currentCount === 2) {
|
|
480
|
-
container.removeAttribute('data-count');
|
|
481
|
-
}
|
|
482
|
-
else {
|
|
483
|
-
container.setAttribute('data-count', String(currentCount - 1));
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
Kefir.fromEvents(document.body, 'inboxsdkSidebarPanelScrollIntoView')
|
|
488
|
-
.takeUntilBy(this._stopper)
|
|
489
|
-
.onValue((event) => {
|
|
490
|
-
component.scrollPanelIntoView(event.detail.instanceId);
|
|
491
|
-
});
|
|
492
|
-
Kefir.fromEvents(document.body, 'inboxsdkSidebarPanelClose')
|
|
493
|
-
.takeUntilBy(this._stopper)
|
|
494
|
-
.onValue((event) => {
|
|
495
|
-
component.closePanel(event.detail.instanceId);
|
|
496
|
-
});
|
|
497
|
-
if (addonSidebarContainerEl) {
|
|
498
|
-
// listen for add-on sidebar contents to become visible which can happen in 1 of two cases
|
|
499
|
-
// 1. user clicks on an Add-Icon icon
|
|
500
|
-
// 2. Gmail automatically opens an Add-on sidebar because it was last open in previous thread
|
|
501
|
-
const addonSidebarContentContainerElement = querySelector(addonSidebarContainerEl, ADD_ON_SIDEBAR_CONTENT_SELECTOR);
|
|
502
|
-
makeElementChildStream(addonSidebarContentContainerElement)
|
|
503
|
-
.flatMap(({ el, removalStream }) => makeMutationObserverChunkedStream(el, {
|
|
504
|
-
attributes: true,
|
|
505
|
-
attributeFilter: ['style'],
|
|
506
|
-
})
|
|
507
|
-
.toProperty(() => null)
|
|
508
|
-
.map(() => el.style.display !== 'none'))
|
|
509
|
-
.takeUntilBy(this._stopper)
|
|
510
|
-
.onValue((isDisplayingGmailAddonSidebar) => {
|
|
511
|
-
if (isDisplayingGmailAddonSidebar) {
|
|
512
|
-
if (contentContainer)
|
|
513
|
-
contentContainer.classList.add('container_addon_sidebar_visible');
|
|
514
|
-
// we need to suppress this sidebar from loading
|
|
515
|
-
if (activatedWhileLoading) {
|
|
516
|
-
const activeAddOnIcon = addonSidebarContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
|
|
517
|
-
if (activeAddOnIcon)
|
|
518
|
-
simulateClick(activeAddOnIcon);
|
|
519
|
-
return;
|
|
520
|
-
}
|
|
521
|
-
this._setShouldAppSidebarOpen(false);
|
|
522
|
-
const activeButtonContainer = iconArea
|
|
523
|
-
? iconArea.querySelector('.sidebar_button_container_active')
|
|
524
|
-
: null;
|
|
525
|
-
if (activeButtonContainer) {
|
|
526
|
-
addonSidebarContainerEl.classList.remove('app_sidebar_visible');
|
|
527
|
-
activeButtonContainer.classList.remove('sidebar_button_container_active');
|
|
528
|
-
if (contentContainer)
|
|
529
|
-
contentContainer.classList.remove('container_app_sidebar_visible');
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
else {
|
|
533
|
-
if (contentContainer)
|
|
534
|
-
contentContainer.classList.remove('container_addon_sidebar_visible');
|
|
535
|
-
}
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
if (addonSidebarContainerEl) {
|
|
539
|
-
//listen for scroll and update active icon if needed
|
|
540
|
-
Kefir.fromEvents(el, 'scroll')
|
|
541
|
-
.takeUntilBy(this._stopper)
|
|
542
|
-
.onValue(() => {
|
|
543
|
-
updateHighlightedAppIconBus.emit(null);
|
|
544
|
-
});
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
addSidebarContentPanel(descriptor) {
|
|
548
|
-
const panel = new ContentPanelViewDriver(this._driver, descriptor, this._instanceId);
|
|
549
|
-
this._stopper.takeUntilBy(panel.getStopper()).onValue(() => {
|
|
550
|
-
panel.remove();
|
|
551
|
-
});
|
|
552
|
-
return panel;
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
export default GmailAppSidebarView;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-value-and-dispatch-event.d.ts","sourceRoot":"","sources":["../../../../../../src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,6BAA6B,CACnD,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,QAMlB"}
|