@jsenv/plugin-toolbar 1.4.11 → 1.4.13

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.
@@ -8,6 +8,23 @@ const injectToolbar = async ({
8
8
  animationsEnabled,
9
9
  notificationsEnabled
10
10
  }) => {
11
+ let iframe;
12
+ let resolveToolbarReadyPromise;
13
+ const toolbarReadyPromise = new Promise(resolve => {
14
+ resolveToolbarReadyPromise = resolve;
15
+ });
16
+ const openToolbar = async () => {
17
+ await toolbarReadyPromise;
18
+ sendCommandToToolbar(iframe, "openToolbar");
19
+ };
20
+ const closeToolbar = async () => {
21
+ await toolbarReadyPromise;
22
+ sendCommandToToolbar(iframe, "closeToolbar");
23
+ };
24
+ window.__jsenv_toolbar__ = {
25
+ open: openToolbar,
26
+ close: closeToolbar
27
+ };
11
28
  if (document.readyState !== "complete") {
12
29
  await new Promise(resolve => {
13
30
  window.addEventListener("load", resolve);
@@ -23,7 +40,7 @@ const injectToolbar = async ({
23
40
  }
24
41
  });
25
42
  const jsenvToolbar = document.createElement("jsenv-toolbar");
26
- const iframe = createIframeNode();
43
+ iframe = createIframeNode();
27
44
  const toolbarTriggerNode = createToolbarTriggerNode();
28
45
  jsenvToolbar.appendChild(iframe);
29
46
  jsenvToolbar.appendChild(toolbarTriggerNode);
@@ -65,7 +82,7 @@ const injectToolbar = async ({
65
82
  collapseToolbarTrigger();
66
83
  };
67
84
  toolbarTriggerNode.onclick = () => {
68
- sendCommandToToolbar(iframe, "openToolbar");
85
+ openToolbar();
69
86
  };
70
87
  const showToolbarTrigger = () => {
71
88
  toolbarTriggerNode.style.display = "block";
@@ -109,6 +126,7 @@ const injectToolbar = async ({
109
126
  });
110
127
  });
111
128
  await iframeLoadedPromise;
129
+ resolveToolbarReadyPromise();
112
130
  iframe.removeAttribute("tabindex");
113
131
  return iframe;
114
132
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/plugin-toolbar",
3
- "version": "1.4.11",
3
+ "version": "1.4.13",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "/src/"
27
27
  ],
28
28
  "dependencies": {
29
- "@jsenv/ast": "6.2.12",
29
+ "@jsenv/ast": "6.2.13",
30
30
  "@preact/signals": "1.3.0"
31
31
  },
32
32
  "scripts": {
@@ -9,6 +9,24 @@ export const injectToolbar = async ({
9
9
  animationsEnabled,
10
10
  notificationsEnabled,
11
11
  }) => {
12
+ let iframe;
13
+ let resolveToolbarReadyPromise;
14
+ const toolbarReadyPromise = new Promise((resolve) => {
15
+ resolveToolbarReadyPromise = resolve;
16
+ });
17
+ const openToolbar = async () => {
18
+ await toolbarReadyPromise;
19
+ sendCommandToToolbar(iframe, "openToolbar");
20
+ };
21
+ const closeToolbar = async () => {
22
+ await toolbarReadyPromise;
23
+ sendCommandToToolbar(iframe, "closeToolbar");
24
+ };
25
+ window.__jsenv_toolbar__ = {
26
+ open: openToolbar,
27
+ close: closeToolbar,
28
+ };
29
+
12
30
  if (document.readyState !== "complete") {
13
31
  await new Promise((resolve) => {
14
32
  window.addEventListener("load", resolve);
@@ -22,7 +40,7 @@ export const injectToolbar = async ({
22
40
  }
23
41
  });
24
42
  const jsenvToolbar = document.createElement("jsenv-toolbar");
25
- const iframe = createIframeNode();
43
+ iframe = createIframeNode();
26
44
  const toolbarTriggerNode = createToolbarTriggerNode();
27
45
  jsenvToolbar.appendChild(iframe);
28
46
  jsenvToolbar.appendChild(toolbarTriggerNode);
@@ -65,7 +83,7 @@ export const injectToolbar = async ({
65
83
  collapseToolbarTrigger();
66
84
  };
67
85
  toolbarTriggerNode.onclick = () => {
68
- sendCommandToToolbar(iframe, "openToolbar");
86
+ openToolbar();
69
87
  };
70
88
 
71
89
  const showToolbarTrigger = () => {
@@ -118,6 +136,7 @@ export const injectToolbar = async ({
118
136
  );
119
137
 
120
138
  await iframeLoadedPromise;
139
+ resolveToolbarReadyPromise();
121
140
  iframe.removeAttribute("tabindex");
122
141
 
123
142
  return iframe;