@jsenv/core 22.0.1 → 22.2.1

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.
@@ -145,46 +145,7 @@
145
145
  // fallback to this polyfill (or even use an existing polyfill would be better)
146
146
  // https://github.com/github/fetch/blob/master/fetch.js
147
147
 
148
- function _await$4(value, then, direct) {
149
- if (direct) {
150
- return then ? then(value) : value;
151
- }
152
-
153
- if (!value || !value.then) {
154
- value = Promise.resolve(value);
155
- }
156
-
157
- return then ? value.then(then) : value;
158
- }
159
-
160
- function _async$3(f) {
161
- return function () {
162
- for (var args = [], i = 0; i < arguments.length; i++) {
163
- args[i] = arguments[i];
164
- }
165
-
166
- try {
167
- return Promise.resolve(f.apply(this, args));
168
- } catch (e) {
169
- return Promise.reject(e);
170
- }
171
- };
172
- }
173
-
174
- function _call$1(body, then, direct) {
175
- if (direct) {
176
- return then ? then(body()) : body();
177
- }
178
-
179
- try {
180
- var result = Promise.resolve(body());
181
- return then ? result.then(then) : result;
182
- } catch (e) {
183
- return Promise.reject(e);
184
- }
185
- }
186
-
187
- var fetchUsingXHR = _async$3(function (url) {
148
+ var fetchUsingXHR = async function fetchUsingXHR(url) {
188
149
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
189
150
  _ref$cancellationToke = _ref.cancellationToken,
190
151
  cancellationToken = _ref$cancellationToke === void 0 ? createCancellationToken() : _ref$cancellationToke,
@@ -267,108 +228,122 @@
267
228
  }
268
229
 
269
230
  xhr.send(body);
270
- return _await$4(headersPromise, function () {
271
- // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseURL
272
- var responseUrl = "responseURL" in xhr ? xhr.responseURL : headers["x-request-url"];
273
- var responseStatus = xhr.status;
274
- var responseStatusText = xhr.statusText;
275
- var responseHeaders = getHeadersFromXHR(xhr);
276
-
277
- var readBody = function readBody() {
278
- return _await$4(bodyPromise, function () {
279
- var status = xhr.status; // in Chrome on file:/// URLs, status is 0
280
-
281
- if (status === 0) {
282
- responseStatus = 200;
283
- }
231
+ await headersPromise; // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseURL
284
232
 
285
- var body = "response" in xhr ? xhr.response : xhr.responseText;
286
- return {
287
- responseBody: body,
288
- responseBodyType: detectBodyType(body)
289
- };
290
- });
233
+ var responseUrl = "responseURL" in xhr ? xhr.responseURL : headers["x-request-url"];
234
+ var responseStatus = xhr.status;
235
+ var responseStatusText = xhr.statusText;
236
+ var responseHeaders = getHeadersFromXHR(xhr);
237
+
238
+ var readBody = async function readBody() {
239
+ await bodyPromise;
240
+ var status = xhr.status; // in Chrome on file:/// URLs, status is 0
241
+
242
+ if (status === 0) {
243
+ responseStatus = 200;
244
+ }
245
+
246
+ var body = "response" in xhr ? xhr.response : xhr.responseText;
247
+ return {
248
+ responseBody: body,
249
+ responseBodyType: detectBodyType(body)
291
250
  };
251
+ };
292
252
 
293
- var text = function text() {
294
- return _call$1(readBody, function (_ref2) {
295
- var responseBody = _ref2.responseBody,
296
- responseBodyType = _ref2.responseBodyType;
253
+ var text = async function text() {
254
+ var _await$readBody = await readBody(),
255
+ responseBody = _await$readBody.responseBody,
256
+ responseBodyType = _await$readBody.responseBodyType;
297
257
 
298
- if (responseBodyType === "blob") {
299
- return blobToText(responseBody);
300
- }
258
+ if (responseBodyType === "blob") {
259
+ return blobToText(responseBody);
260
+ }
301
261
 
302
- if (responseBodyType === "formData") {
303
- throw new Error("could not read FormData body as text");
304
- }
262
+ if (responseBodyType === "formData") {
263
+ throw new Error("could not read FormData body as text");
264
+ }
305
265
 
306
- return responseBodyType === "dataView" ? arrayBufferToText(responseBody.buffer) : responseBodyType === "arrayBuffer" ? arrayBufferToText(responseBody) : String(responseBody);
307
- });
308
- };
266
+ if (responseBodyType === "dataView") {
267
+ return arrayBufferToText(responseBody.buffer);
268
+ }
309
269
 
310
- var json = function json() {
311
- return _call$1(text, JSON.parse);
312
- };
270
+ if (responseBodyType === "arrayBuffer") {
271
+ return arrayBufferToText(responseBody);
272
+ } // if (responseBodyType === "text" || responseBodyType === 'searchParams') {
273
+ // return body
274
+ // }
313
275
 
314
- var blob = _async$3(function () {
315
- if (!hasBlob) {
316
- throw new Error("blob not supported");
317
- }
318
276
 
319
- return _call$1(readBody, function (_ref3) {
320
- var responseBody = _ref3.responseBody,
321
- responseBodyType = _ref3.responseBodyType;
277
+ return String(responseBody);
278
+ };
322
279
 
323
- if (responseBodyType === "blob") {
324
- return responseBody;
325
- }
280
+ var json = async function json() {
281
+ var responseText = await text();
282
+ return JSON.parse(responseText);
283
+ };
326
284
 
327
- if (responseBodyType === "dataView") {
328
- return new Blob([cloneBuffer(responseBody.buffer)]);
329
- }
285
+ var blob = async function blob() {
286
+ if (!hasBlob) {
287
+ throw new Error("blob not supported");
288
+ }
330
289
 
331
- if (responseBodyType === "arrayBuffer") {
332
- return new Blob([cloneBuffer(responseBody)]);
333
- }
290
+ var _await$readBody2 = await readBody(),
291
+ responseBody = _await$readBody2.responseBody,
292
+ responseBodyType = _await$readBody2.responseBodyType;
334
293
 
335
- if (responseBodyType === "formData") {
336
- throw new Error("could not read FormData body as blob");
337
- }
294
+ if (responseBodyType === "blob") {
295
+ return responseBody;
296
+ }
338
297
 
339
- return new Blob([String(responseBody)]);
340
- });
341
- });
298
+ if (responseBodyType === "dataView") {
299
+ return new Blob([cloneBuffer(responseBody.buffer)]);
300
+ }
342
301
 
343
- var arrayBuffer = function arrayBuffer() {
344
- return _call$1(readBody, function (_ref4) {
345
- var responseBody = _ref4.responseBody,
346
- responseBodyType = _ref4.responseBodyType;
347
- return responseBodyType === "arrayBuffer" ? cloneBuffer(responseBody) : _call$1(blob, blobToArrayBuffer);
348
- });
349
- };
302
+ if (responseBodyType === "arrayBuffer") {
303
+ return new Blob([cloneBuffer(responseBody)]);
304
+ }
350
305
 
351
- var formData = _async$3(function () {
352
- if (!hasFormData) {
353
- throw new Error("formData not supported");
354
- }
306
+ if (responseBodyType === "formData") {
307
+ throw new Error("could not read FormData body as blob");
308
+ }
355
309
 
356
- return _call$1(text, textToFormData);
357
- });
310
+ return new Blob([String(responseBody)]);
311
+ };
358
312
 
359
- return {
360
- url: responseUrl,
361
- status: responseStatus,
362
- statusText: responseStatusText,
363
- headers: responseHeaders,
364
- text: text,
365
- json: json,
366
- blob: blob,
367
- arrayBuffer: arrayBuffer,
368
- formData: formData
369
- };
370
- });
371
- });
313
+ var arrayBuffer = async function arrayBuffer() {
314
+ var _await$readBody3 = await readBody(),
315
+ responseBody = _await$readBody3.responseBody,
316
+ responseBodyType = _await$readBody3.responseBodyType;
317
+
318
+ if (responseBodyType === "arrayBuffer") {
319
+ return cloneBuffer(responseBody);
320
+ }
321
+
322
+ var responseBlob = await blob();
323
+ return blobToArrayBuffer(responseBlob);
324
+ };
325
+
326
+ var formData = async function formData() {
327
+ if (!hasFormData) {
328
+ throw new Error("formData not supported");
329
+ }
330
+
331
+ var responseText = await text();
332
+ return textToFormData(responseText);
333
+ };
334
+
335
+ return {
336
+ url: responseUrl,
337
+ status: responseStatus,
338
+ statusText: responseStatusText,
339
+ headers: responseHeaders,
340
+ text: text,
341
+ json: json,
342
+ blob: blob,
343
+ arrayBuffer: arrayBuffer,
344
+ formData: formData
345
+ };
346
+ };
372
347
 
373
348
  var canUseBlob = function canUseBlob() {
374
349
  if (typeof window.FileReader !== "function") return false;
@@ -388,8 +363,8 @@
388
363
  var hasArrayBuffer = typeof window.ArrayBuffer === "function";
389
364
  var hasSearchParams = typeof window.URLSearchParams === "function";
390
365
 
391
- var createRequestError = function createRequestError(error, _ref5) {
392
- var url = _ref5.url;
366
+ var createRequestError = function createRequestError(error, _ref2) {
367
+ var url = _ref2.url;
393
368
  return new Error(createDetailedMessage("error during xhr request on ".concat(url, "."), _defineProperty({}, "error stack", error.stack)));
394
369
  };
395
370
 
@@ -413,9 +388,9 @@
413
388
  }; // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
414
389
 
415
390
 
416
- var computeWithCredentials = function computeWithCredentials(_ref6) {
417
- var credentials = _ref6.credentials,
418
- url = _ref6.url;
391
+ var computeWithCredentials = function computeWithCredentials(_ref3) {
392
+ var credentials = _ref3.credentials,
393
+ url = _ref3.url;
419
394
 
420
395
  if (credentials === "same-origin") {
421
396
  return originSameAsGlobalOrigin(url);
@@ -529,12 +504,12 @@
529
504
  return form;
530
505
  };
531
506
 
532
- var blobToArrayBuffer = _async$3(function (blob) {
507
+ var blobToArrayBuffer = async function blobToArrayBuffer(blob) {
533
508
  var reader = new FileReader();
534
509
  var promise = fileReaderReady(reader);
535
510
  reader.readAsArrayBuffer(blob);
536
511
  return promise;
537
- });
512
+ };
538
513
 
539
514
  var blobToText = function blobToText(blob) {
540
515
  var reader = new FileReader();
@@ -580,20 +555,7 @@
580
555
 
581
556
  var _excluded = ["cancellationToken", "mode"];
582
557
 
583
- function _await$3(value, then, direct) {
584
- if (direct) {
585
- return then ? then(value) : value;
586
- }
587
-
588
- if (!value || !value.then) {
589
- value = Promise.resolve(value);
590
- }
591
-
592
- return then ? value.then(then) : value;
593
- }
594
-
595
- var fetchNative = _async$2(function (url) {
596
-
558
+ var fetchNative = async function fetchNative(url) {
597
559
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
598
560
 
599
561
  var _ref$cancellationToke = _ref.cancellationToken,
@@ -609,57 +571,42 @@
609
571
  abortController.abort(reason);
610
572
  });
611
573
  var response;
612
- return _continue(_catch$1(function () {
613
- return _await$3(window.fetch(url, _objectSpread2({
574
+
575
+ try {
576
+ response = await window.fetch(url, _objectSpread2({
614
577
  signal: abortController.signal,
615
578
  mode: mode
616
- }, options)), function (_window$fetch) {
617
- response = _window$fetch;
618
- });
619
- }, function (e) {
579
+ }, options));
580
+ } catch (e) {
620
581
  if (cancelError && e.name === "AbortError") {
621
582
  throw cancelError;
622
583
  }
623
584
 
624
585
  throw e;
625
- }), function (_result) {
626
- return {
627
- url: response.url,
628
- status: response.status,
629
- statusText: "",
630
- headers: responseToHeaders(response),
631
- text: function text() {
632
- return response.text();
633
- },
634
- json: function json() {
635
- return response.json();
636
- },
637
- blob: function blob() {
638
- return response.blob();
639
- },
640
- arrayBuffer: function arrayBuffer() {
641
- return response.arrayBuffer();
642
- },
643
- formData: function formData() {
644
- return response.formData();
645
- }
646
- };
647
- });
648
- });
649
-
650
- function _catch$1(body, recover) {
651
- try {
652
- var result = body();
653
- } catch (e) {
654
- return recover(e);
655
- }
656
-
657
- if (result && result.then) {
658
- return result.then(void 0, recover);
659
586
  }
660
587
 
661
- return result;
662
- }
588
+ return {
589
+ url: response.url,
590
+ status: response.status,
591
+ statusText: "",
592
+ headers: responseToHeaders(response),
593
+ text: function text() {
594
+ return response.text();
595
+ },
596
+ json: function json() {
597
+ return response.json();
598
+ },
599
+ blob: function blob() {
600
+ return response.blob();
601
+ },
602
+ arrayBuffer: function arrayBuffer() {
603
+ return response.arrayBuffer();
604
+ },
605
+ formData: function formData() {
606
+ return response.formData();
607
+ }
608
+ };
609
+ };
663
610
 
664
611
  var responseToHeaders = function responseToHeaders(response) {
665
612
  var headers = {};
@@ -669,115 +616,32 @@
669
616
  return headers;
670
617
  };
671
618
 
672
- function _continue(value, then) {
673
- return value && value.then ? value.then(then) : then(value);
674
- }
675
-
676
- function _async$2(f) {
677
- return function () {
678
- for (var args = [], i = 0; i < arguments.length; i++) {
679
- args[i] = arguments[i];
680
- }
681
-
682
- try {
683
- return Promise.resolve(f.apply(this, args));
684
- } catch (e) {
685
- return Promise.reject(e);
686
- }
687
- };
688
- }
689
-
690
619
  var fetchUrl = typeof window.fetch === "function" && typeof window.AbortController === "function" ? fetchNative : fetchUsingXHR;
691
620
 
692
- function _await$2(value, then, direct) {
693
- if (direct) {
694
- return then ? then(value) : value;
695
- }
696
-
697
- if (!value || !value.then) {
698
- value = Promise.resolve(value);
699
- }
700
-
701
- return then ? value.then(then) : value;
702
- }
703
-
704
- function _async$1(f) {
705
- return function () {
706
- for (var args = [], i = 0; i < arguments.length; i++) {
707
- args[i] = arguments[i];
708
- }
709
-
710
- try {
711
- return Promise.resolve(f.apply(this, args));
712
- } catch (e) {
713
- return Promise.reject(e);
714
- }
715
- };
716
- }
717
-
718
- var fetchJson = _async$1(function (url) {
621
+ var fetchJson = async function fetchJson(url) {
719
622
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
720
- return _await$2(fetchUrl(url, options), function (response) {
721
- return _await$2(response.json());
722
- });
723
- });
724
-
725
- function _await$1(value, then, direct) {
726
- if (direct) {
727
- return then ? then(value) : value;
728
- }
729
-
730
- if (!value || !value.then) {
731
- value = Promise.resolve(value);
732
- }
733
-
734
- return then ? value.then(then) : value;
735
- }
736
-
737
- function _catch(body, recover) {
738
- try {
739
- var result = body();
740
- } catch (e) {
741
- return recover(e);
742
- }
743
-
744
- if (result && result.then) {
745
- return result.then(void 0, recover);
746
- }
747
-
748
- return result;
749
- }
750
-
751
- function _async(f) {
752
- return function () {
753
- for (var args = [], i = 0; i < arguments.length; i++) {
754
- args[i] = arguments[i];
755
- }
756
-
757
- try {
758
- return Promise.resolve(f.apply(this, args));
759
- } catch (e) {
760
- return Promise.reject(e);
761
- }
762
- };
763
- }
623
+ var response = await fetchUrl(url, options);
624
+ var object = await response.json();
625
+ return object;
626
+ };
764
627
 
765
- var fetchExploringJson = _async(function () {
628
+ var fetchExploringJson = async function fetchExploringJson() {
766
629
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
767
630
  cancellationToken = _ref.cancellationToken;
768
631
 
769
- return _catch(function () {
770
- return _await$1(fetchJson("/.jsenv/exploring.json", {
632
+ try {
633
+ var exploringInfo = await fetchJson("/.jsenv/exploring.json", {
771
634
  cancellationToken: cancellationToken
772
- }));
773
- }, function (e) {
635
+ });
636
+ return exploringInfo;
637
+ } catch (e) {
774
638
  if (isCancelError(e)) {
775
639
  throw e;
776
640
  }
777
641
 
778
642
  throw new Error(createDetailedMessage("Cannot communicate with exploring server due to a network error", _defineProperty({}, "error stack", e.stack)));
779
- });
780
- });
643
+ }
644
+ };
781
645
 
782
646
  var setStyles = function setStyles(element, styles) {
783
647
  var elementStyle = element.style;
@@ -821,18 +685,6 @@
821
685
  When toolbar is loaded it will open an other connection to server sent events and close this one.
822
686
  */
823
687
 
824
- function _await(value, then, direct) {
825
- if (direct) {
826
- return then ? then(value) : value;
827
- }
828
-
829
- if (!value || !value.then) {
830
- value = Promise.resolve(value);
831
- }
832
-
833
- return then ? value.then(then) : value;
834
- }
835
-
836
688
  var connectLivereload = function connectLivereload() {
837
689
  var _window = window,
838
690
  EventSource = _window.EventSource;
@@ -916,128 +768,114 @@
916
768
  }; // eslint-disable-next-line camelcase
917
769
 
918
770
 
919
- function _call(body, then, direct) {
920
- if (direct) {
921
- return then ? then(body()) : body();
922
- }
923
-
924
- try {
925
- var result = Promise.resolve(body());
926
- return then ? result.then(then) : result;
927
- } catch (e) {
928
- return Promise.reject(e);
929
- }
930
- }
931
-
932
771
  window.__jsenv_eventsource__ = connectLivereload();
933
772
 
934
- var injectToolbar = function injectToolbar() {
935
- return _call(fetchExploringJson, function (_ref4) {
936
- var jsenvDirectoryRelativeUrl = _ref4.jsenvDirectoryRelativeUrl;
937
- var jsenvDirectoryServerUrl = resolveUrl(jsenvDirectoryRelativeUrl, document.location.origin);
938
- var placeholder = getToolbarPlaceholder();
939
- var iframe = document.createElement("iframe");
940
- setAttributes(iframe, {
941
- tabindex: -1,
942
- // sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
943
- // allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
944
- allowtransparency: true
945
- });
946
- setStyles(iframe, {
947
- "position": "fixed",
948
- "zIndex": 1000,
949
- "bottom": 0,
950
- "left": 0,
951
- "width": "100%",
952
- "height": 0,
953
-
954
- /* ensure toolbar children are not focusable when hidden */
955
- "visibility": "hidden",
956
- "transition-duration": "300ms",
957
- "transition-property": "height, visibility",
958
- "border": "none"
959
- });
960
- var iframeLoadedPromise = iframeToLoadedPromise(iframe);
961
- var jsenvToolbarHtmlServerUrl = resolveUrl("./src/internal/toolbar/toolbar.html", jsenvDirectoryServerUrl); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
962
-
963
- iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
964
- placeholder.parentNode.replaceChild(iframe, placeholder);
965
- return _await(iframeLoadedPromise, function () {
966
- iframe.removeAttribute("tabindex");
967
-
968
- var listenToolbarIframeEvent = function listenToolbarIframeEvent(event, fn) {
969
- window.addEventListener("message", function (messageEvent) {
970
- var data = messageEvent.data;
971
- if (_typeof(data) !== "object") return;
972
- var jsenv = data.jsenv;
973
- if (!jsenv) return;
974
- var type = data.type;
975
- if (type !== event) return;
976
- fn(data.value);
977
- }, false);
978
- };
773
+ var injectToolbar = async function injectToolbar() {
774
+ var _await$fetchExploring = await fetchExploringJson(),
775
+ jsenvDirectoryRelativeUrl = _await$fetchExploring.jsenvDirectoryRelativeUrl;
776
+
777
+ var jsenvDirectoryServerUrl = resolveUrl(jsenvDirectoryRelativeUrl, document.location.origin);
778
+ var placeholder = getToolbarPlaceholder();
779
+ var iframe = document.createElement("iframe");
780
+ setAttributes(iframe, {
781
+ tabindex: -1,
782
+ // sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
783
+ // allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
784
+ allowtransparency: true
785
+ });
786
+ setStyles(iframe, {
787
+ "position": "fixed",
788
+ "zIndex": 1000,
789
+ "bottom": 0,
790
+ "left": 0,
791
+ "width": "100%",
792
+ "height": 0,
793
+
794
+ /* ensure toolbar children are not focusable when hidden */
795
+ "visibility": "hidden",
796
+ "transition-duration": "300ms",
797
+ "transition-property": "height, visibility",
798
+ "border": "none"
799
+ });
800
+ var iframeLoadedPromise = iframeToLoadedPromise(iframe);
801
+ var jsenvToolbarHtmlServerUrl = resolveUrl("./src/internal/toolbar/toolbar.html", jsenvDirectoryServerUrl); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
802
+
803
+ iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
804
+ placeholder.parentNode.replaceChild(iframe, placeholder);
805
+ await iframeLoadedPromise;
806
+ iframe.removeAttribute("tabindex");
807
+
808
+ var listenToolbarIframeEvent = function listenToolbarIframeEvent(event, fn) {
809
+ window.addEventListener("message", function (messageEvent) {
810
+ var data = messageEvent.data;
811
+ if (_typeof(data) !== "object") return;
812
+ var jsenv = data.jsenv;
813
+ if (!jsenv) return;
814
+ var type = data.type;
815
+ if (type !== event) return;
816
+ fn(data.value);
817
+ }, false);
818
+ };
979
819
 
980
- listenToolbarIframeEvent("toolbar-visibility-change", function (visible) {
981
- if (visible) {
982
- hideToolbarTrigger();
983
- } else {
984
- showToolbarTrigger();
985
- }
986
- });
987
- var div = document.createElement("div");
988
- var jsenvLogoUrl = resolveUrl("./src/internal/toolbar/jsenv-logo.svg", jsenvDirectoryServerUrl);
989
- var jsenvLogoSvgSrc = jsenvLogoUrl;
990
- div.innerHTML = "\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"".concat(jsenvLogoSvgSrc, "#jsenv-logo\"></use>\n </svg>\n <style>\n #jsenv-toolbar-trigger {\n display: block;\n overflow: hidden;\n position: fixed;\n z-index: 1000;\n bottom: -32px;\n right: 20px;\n height: 40px;\n width: 40px;\n padding: 0;\n border-radius: 5px 5px 0 0;\n border: 1px solid rgba(0, 0, 0, 0.33);\n border-bottom: none;\n box-shadow: 0px 0px 6px 2px rgba(0, 0, 0, 0.46);\n background: transparent;\n text-align: center;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger:hover {\n cursor: pointer;\n }\n\n #jsenv-toolbar-trigger[data-expanded] {\n bottom: 0;\n }\n\n #jsenv-toolbar-trigger-icon {\n width: 35px;\n height: 35px;\n opacity: 0;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger[data-expanded] #jsenv-toolbar-trigger-icon {\n opacity: 1;\n }\n </style>\n</div>");
991
- var toolbarTrigger = div.firstElementChild;
992
- iframe.parentNode.appendChild(toolbarTrigger);
993
- var timer;
994
-
995
- toolbarTrigger.onmouseenter = function () {
996
- toolbarTrigger.setAttribute("data-animate", "");
997
- timer = setTimeout(expandToolbarTrigger, 500);
998
- };
820
+ listenToolbarIframeEvent("toolbar-visibility-change", function (visible) {
821
+ if (visible) {
822
+ hideToolbarTrigger();
823
+ } else {
824
+ showToolbarTrigger();
825
+ }
826
+ });
827
+ var div = document.createElement("div");
828
+ var jsenvLogoUrl = resolveUrl("./src/internal/toolbar/jsenv-logo.svg", jsenvDirectoryServerUrl);
829
+ var jsenvLogoSvgSrc = jsenvLogoUrl;
830
+ div.innerHTML = "\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"".concat(jsenvLogoSvgSrc, "#jsenv-logo\"></use>\n </svg>\n <style>\n #jsenv-toolbar-trigger {\n display: block;\n overflow: hidden;\n position: fixed;\n z-index: 1000;\n bottom: -32px;\n right: 20px;\n height: 40px;\n width: 40px;\n padding: 0;\n border-radius: 5px 5px 0 0;\n border: 1px solid rgba(0, 0, 0, 0.33);\n border-bottom: none;\n box-shadow: 0px 0px 6px 2px rgba(0, 0, 0, 0.46);\n background: transparent;\n text-align: center;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger:hover {\n cursor: pointer;\n }\n\n #jsenv-toolbar-trigger[data-expanded] {\n bottom: 0;\n }\n\n #jsenv-toolbar-trigger-icon {\n width: 35px;\n height: 35px;\n opacity: 0;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger[data-expanded] #jsenv-toolbar-trigger-icon {\n opacity: 1;\n }\n </style>\n</div>");
831
+ var toolbarTrigger = div.firstElementChild;
832
+ iframe.parentNode.appendChild(toolbarTrigger);
833
+ var timer;
834
+
835
+ toolbarTrigger.onmouseenter = function () {
836
+ toolbarTrigger.setAttribute("data-animate", "");
837
+ timer = setTimeout(expandToolbarTrigger, 500);
838
+ };
999
839
 
1000
- toolbarTrigger.onmouseleave = function () {
1001
- clearTimeout(timer);
1002
- collapseToolbarTrigger();
1003
- };
840
+ toolbarTrigger.onmouseleave = function () {
841
+ clearTimeout(timer);
842
+ collapseToolbarTrigger();
843
+ };
1004
844
 
1005
- toolbarTrigger.onfocus = function () {
1006
- toolbarTrigger.removeAttribute("data-animate");
1007
- expandToolbarTrigger();
1008
- };
845
+ toolbarTrigger.onfocus = function () {
846
+ toolbarTrigger.removeAttribute("data-animate");
847
+ expandToolbarTrigger();
848
+ };
1009
849
 
1010
- toolbarTrigger.onblur = function () {
1011
- toolbarTrigger.removeAttribute("data-animate");
1012
- clearTimeout(timer);
1013
- collapseToolbarTrigger();
1014
- };
850
+ toolbarTrigger.onblur = function () {
851
+ toolbarTrigger.removeAttribute("data-animate");
852
+ clearTimeout(timer);
853
+ collapseToolbarTrigger();
854
+ };
1015
855
 
1016
- toolbarTrigger.onclick = function () {
1017
- window.__jsenv__.toolbar.show();
1018
- };
856
+ toolbarTrigger.onclick = function () {
857
+ window.__jsenv__.toolbar.show();
858
+ };
1019
859
 
1020
- var showToolbarTrigger = function showToolbarTrigger() {
1021
- toolbarTrigger.style.display = "block";
1022
- };
860
+ var showToolbarTrigger = function showToolbarTrigger() {
861
+ toolbarTrigger.style.display = "block";
862
+ };
1023
863
 
1024
- var hideToolbarTrigger = function hideToolbarTrigger() {
1025
- toolbarTrigger.style.display = "none";
1026
- };
864
+ var hideToolbarTrigger = function hideToolbarTrigger() {
865
+ toolbarTrigger.style.display = "none";
866
+ };
1027
867
 
1028
- var expandToolbarTrigger = function expandToolbarTrigger() {
1029
- toolbarTrigger.setAttribute("data-expanded", "");
1030
- };
868
+ var expandToolbarTrigger = function expandToolbarTrigger() {
869
+ toolbarTrigger.setAttribute("data-expanded", "");
870
+ };
1031
871
 
1032
- var collapseToolbarTrigger = function collapseToolbarTrigger() {
1033
- toolbarTrigger.removeAttribute("data-expanded", "");
1034
- };
872
+ var collapseToolbarTrigger = function collapseToolbarTrigger() {
873
+ toolbarTrigger.removeAttribute("data-expanded", "");
874
+ };
1035
875
 
1036
- hideToolbarTrigger();
1037
- iframe.contentWindow.renderToolbar();
1038
- return iframe;
1039
- });
1040
- });
876
+ hideToolbarTrigger();
877
+ iframe.contentWindow.renderToolbar();
878
+ return iframe;
1041
879
  };
1042
880
 
1043
881
  var getToolbarPlaceholder = function getToolbarPlaceholder() {