@jsenv/core 24.0.0 → 24.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.
Files changed (68) hide show
  1. package/dist/jsenv_event_source_client.js +338 -0
  2. package/dist/jsenv_event_source_client.js.map +126 -0
  3. package/dist/jsenv_exploring_index.js.map +7 -7
  4. package/dist/jsenv_redirector.js +1386 -0
  5. package/dist/jsenv_redirector.js.map +384 -0
  6. package/dist/jsenv_toolbar.js +37 -504
  7. package/dist/jsenv_toolbar.js.map +37 -112
  8. package/dist/jsenv_toolbar_injector.js +31 -126
  9. package/dist/jsenv_toolbar_injector.js.map +11 -30
  10. package/package.json +1 -1
  11. package/src/buildProject.js +2 -0
  12. package/src/dev_server.js +108 -70
  13. package/src/internal/compiling/compile-directory/getOrGenerateCompiledFile.js +1 -2
  14. package/src/internal/compiling/compileFile.js +51 -23
  15. package/src/internal/compiling/createCompiledFileService.js +22 -10
  16. package/src/internal/compiling/html_source_file_service.js +43 -9
  17. package/src/internal/compiling/jsenvCompilerForHtml.js +146 -107
  18. package/src/internal/compiling/startCompileServer.js +60 -44
  19. package/src/internal/dev_server/event_source_client/event_source_client.js +63 -0
  20. package/src/internal/dev_server/event_source_client/event_source_client_file_info.js +17 -0
  21. package/src/internal/{toolbar/eventsource/connectEventSource.js → dev_server/event_source_client/event_source_connection.js} +47 -78
  22. package/src/internal/dev_server/event_source_client/file_changes.js +82 -0
  23. package/src/internal/dev_server/event_source_client/livereload_preference.js +13 -0
  24. package/src/internal/{exploring → dev_server/exploring}/exploring.css +0 -0
  25. package/src/internal/{exploring → dev_server/exploring}/exploring.html +1 -1
  26. package/src/internal/{exploring → dev_server/exploring}/exploring.js +0 -0
  27. package/src/internal/dev_server/exploring/exploring_file_info.js +21 -0
  28. package/src/internal/{exploring → dev_server/exploring}/fetchExploringJson.js +1 -1
  29. package/src/internal/{exploring/exploring.redirector.html → dev_server/redirector/redirector.html} +1 -1
  30. package/src/internal/{exploring/exploring.redirector.js → dev_server/redirector/redirector.js} +1 -1
  31. package/src/internal/dev_server/redirector/redirector_file_info.js +24 -0
  32. package/src/internal/{toolbar → dev_server/toolbar}/animation/toolbar.animation.js +0 -0
  33. package/src/internal/{toolbar → dev_server/toolbar}/backtolist/toolbar.backtolist.js +0 -0
  34. package/src/internal/{toolbar → dev_server/toolbar}/compilation/compilation.css +0 -0
  35. package/src/internal/{toolbar → dev_server/toolbar}/compilation/toolbar.compilation.js +1 -1
  36. package/src/internal/{toolbar → dev_server/toolbar}/eventsource/eventsource.css +0 -0
  37. package/src/internal/dev_server/toolbar/eventsource/toolbar.eventsource.js +83 -0
  38. package/src/internal/{toolbar → dev_server/toolbar}/execution/execution.css +0 -0
  39. package/src/internal/{toolbar → dev_server/toolbar}/execution/toolbar.execution.js +0 -0
  40. package/src/internal/{toolbar → dev_server/toolbar}/focus/focus.css +0 -0
  41. package/src/internal/{toolbar → dev_server/toolbar}/focus/toolbar.focus.js +0 -0
  42. package/src/internal/{toolbar → dev_server/toolbar}/jsenv-logo.svg +0 -0
  43. package/src/internal/{toolbar → dev_server/toolbar}/notification/toolbar.notification.js +0 -0
  44. package/src/internal/{toolbar → dev_server/toolbar}/responsive/overflow-menu.css +0 -0
  45. package/src/internal/{toolbar → dev_server/toolbar}/responsive/toolbar.responsive.js +0 -0
  46. package/src/internal/{toolbar → dev_server/toolbar}/settings/settings.css +0 -0
  47. package/src/internal/{toolbar → dev_server/toolbar}/settings/toolbar.settings.js +0 -0
  48. package/src/internal/{toolbar → dev_server/toolbar}/theme/jsenv-theme.css +0 -0
  49. package/src/internal/{toolbar → dev_server/toolbar}/theme/light-theme.css +0 -0
  50. package/src/internal/{toolbar → dev_server/toolbar}/theme/toolbar.theme.js +0 -0
  51. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.html +4 -37
  52. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.injector.js +3 -92
  53. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.css +0 -0
  54. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.js +0 -0
  55. package/src/internal/dev_server/toolbar/toolbar_file_info.js +37 -0
  56. package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.css +0 -0
  57. package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.js +0 -0
  58. package/src/internal/{toolbar → dev_server/toolbar}/util/animation.js +0 -0
  59. package/src/internal/{toolbar → dev_server/toolbar}/util/dom.js +0 -0
  60. package/src/internal/{toolbar → dev_server/toolbar}/util/fetching.js +2 -2
  61. package/src/internal/{toolbar → dev_server/toolbar}/util/jsenvLogger.js +0 -0
  62. package/src/internal/{toolbar → dev_server/toolbar}/util/preferences.js +0 -0
  63. package/src/internal/{toolbar → dev_server/toolbar}/util/responsive.js +0 -0
  64. package/src/internal/{toolbar → dev_server/toolbar}/util/util.js +0 -0
  65. package/src/internal/{toolbar → dev_server/toolbar}/variant/variant.js +0 -0
  66. package/src/internal/jsenvInternalFiles.js +0 -58
  67. package/src/internal/toolbar/eventsource/connectCompileServerEventSource.js +0 -74
  68. package/src/internal/toolbar/eventsource/toolbar.eventsource.js +0 -239
@@ -287,8 +287,8 @@
287
287
  _ref$body = _ref.body,
288
288
  body = _ref$body === void 0 ? null : _ref$body;
289
289
 
290
- var headersPromise = createPromiseAndHooks$1();
291
- var bodyPromise = createPromiseAndHooks$1();
290
+ var headersPromise = createPromiseAndHooks();
291
+ var bodyPromise = createPromiseAndHooks();
292
292
  var xhr = new XMLHttpRequest();
293
293
 
294
294
  var failure = function failure(error) {
@@ -485,7 +485,7 @@
485
485
  return new Error(createDetailedMessage("error during xhr request on ".concat(url, "."), _defineProperty({}, "error stack", error.stack)));
486
486
  };
487
487
 
488
- var createPromiseAndHooks$1 = function createPromiseAndHooks() {
488
+ var createPromiseAndHooks = function createPromiseAndHooks() {
489
489
  var resolve;
490
490
  var reject;
491
491
  var promise = new Promise(function (res, rej) {
@@ -2470,518 +2470,40 @@
2470
2470
  return "\n- ".concat(parts.join("\n- "));
2471
2471
  };
2472
2472
 
2473
- var createPromiseAndHooks = function createPromiseAndHooks() {
2474
- var resolve;
2475
- var reject;
2476
- var promise = new Promise(function (res, rej) {
2477
- resolve = res;
2478
- reject = rej;
2479
- });
2480
- promise.resolve = resolve;
2481
- promise.reject = reject;
2482
- return promise;
2483
- };
2484
-
2485
- var connectEventSource$1 = function connectEventSource(eventSourceUrl) {
2486
- var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2487
-
2488
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
2489
- _ref$connecting = _ref.connecting,
2490
- connecting = _ref$connecting === void 0 ? function () {} : _ref$connecting,
2491
- _ref$connected = _ref.connected,
2492
- connected = _ref$connected === void 0 ? function () {} : _ref$connected,
2493
- _ref$cancelled = _ref.cancelled,
2494
- cancelled = _ref$cancelled === void 0 ? function () {} : _ref$cancelled,
2495
- _ref$failed = _ref.failed,
2496
- failed = _ref$failed === void 0 ? function () {} : _ref$failed,
2497
- _ref$retryMaxAttempt = _ref.retryMaxAttempt,
2498
- retryMaxAttempt = _ref$retryMaxAttempt === void 0 ? Infinity : _ref$retryMaxAttempt,
2499
- _ref$retryAllocatedMs = _ref.retryAllocatedMs,
2500
- retryAllocatedMs = _ref$retryAllocatedMs === void 0 ? Infinity : _ref$retryAllocatedMs,
2501
- lastEventId = _ref.lastEventId;
2502
-
2503
- var _window = window,
2504
- EventSource = _window.EventSource;
2505
-
2506
- if (typeof EventSource !== "function") {
2507
- return function () {};
2508
- }
2509
-
2510
- var eventSourceOrigin = new URL(eventSourceUrl).origin; // will be either abort, disconnect or a third function calling cancelled
2511
- // depending on connectionStatus
2512
-
2513
- var cancelCurrentConnection = function cancelCurrentConnection() {};
2514
-
2515
- var reconnect = function reconnect() {
2516
- attemptConnection(lastEventId ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId) : eventSourceUrl);
2517
- };
2518
-
2519
- var attemptConnection = function attemptConnection(url) {
2520
- var eventSource = new EventSource(url, {
2521
- withCredentials: true
2522
- });
2523
- var connectionStatus = "connecting";
2524
-
2525
- var abort = function abort() {
2526
- if (connectionStatus !== "connecting") {
2527
- console.warn("abort ignored because connection is ".concat(connectionStatus));
2528
- return;
2529
- }
2530
-
2531
- connectionStatus = "aborted";
2532
- eventSource.onerror = undefined;
2533
- eventSource.close();
2534
- cancelled({
2535
- connect: reconnect
2536
- });
2537
- };
2538
-
2539
- cancelCurrentConnection = abort;
2540
- connecting({
2541
- cancel: abort
2542
- });
2543
-
2544
- eventSource.onopen = function () {
2545
- connectionStatus = "connected";
2546
-
2547
- var disconnect = function disconnect() {
2548
- if (connectionStatus !== "connected") {
2549
- console.warn("disconnect ignored because connection is ".concat(connectionStatus));
2550
- return;
2551
- }
2552
-
2553
- connectionStatus = "disconnected";
2554
- eventSource.onerror = undefined;
2555
- eventSource.close();
2556
- cancelled({
2557
- connect: reconnect
2558
- });
2559
- };
2560
-
2561
- cancelCurrentConnection = disconnect;
2562
- connected({
2563
- cancel: disconnect
2564
- });
2565
- };
2566
-
2567
- var retryCount = 0;
2568
- var firstRetryMs = Date.now();
2569
-
2570
- eventSource.onerror = function (errorEvent) {
2571
- var considerFailed = function considerFailed() {
2572
- connectionStatus = "disconnected";
2573
- failed({
2574
- cancel: function cancel() {
2575
- if (connectionStatus !== "failed") {
2576
- console.warn("disable ignored because connection is ".concat(connectionStatus));
2577
- return;
2578
- }
2579
-
2580
- connectionStatus = "disabled";
2581
- cancelled({
2582
- connect: reconnect
2583
- });
2584
- },
2585
- connect: reconnect
2586
- });
2587
- };
2588
-
2589
- if (errorEvent.target.readyState === EventSource.CONNECTING) {
2590
- if (retryCount > retryMaxAttempt) {
2591
- console.info("could not connect after ".concat(retryMaxAttempt, " attempt"));
2592
- eventSource.onerror = undefined;
2593
- eventSource.close();
2594
- considerFailed();
2595
- return;
2596
- }
2597
-
2598
- if (retryCount === 0) {
2599
- firstRetryMs = Date.now();
2600
- } else {
2601
- var allRetryDuration = Date.now() - firstRetryMs;
2602
-
2603
- if (retryAllocatedMs && allRetryDuration > retryAllocatedMs) {
2604
- console.info("could not connect in less than ".concat(retryAllocatedMs, " ms"));
2605
- eventSource.onerror = undefined;
2606
- eventSource.close();
2607
- considerFailed();
2608
- return;
2609
- }
2610
- }
2611
-
2612
- connectionStatus = "connecting";
2613
- retryCount++;
2614
- connecting({
2615
- cancel: abort
2616
- });
2617
- return;
2618
- }
2619
-
2620
- if (errorEvent.target.readyState === EventSource.CLOSED) {
2621
- considerFailed();
2622
- return;
2623
- }
2624
- };
2625
-
2626
- Object.keys(events).forEach(function (eventName) {
2627
- eventSource.addEventListener(eventName, function (e) {
2628
- if (e.origin === eventSourceOrigin) {
2629
- if (e.lastEventId) {
2630
- lastEventId = e.lastEventId;
2631
- }
2632
-
2633
- events[eventName](e);
2634
- }
2635
- });
2636
- });
2637
-
2638
- if (!events.hasOwnProperty("welcome")) {
2639
- eventSource.addEventListener("welcome", function (e) {
2640
- if (e.origin === eventSourceOrigin && e.lastEventId) {
2641
- lastEventId = e.lastEventId;
2642
- }
2643
- });
2644
- }
2645
- };
2646
-
2647
- attemptConnection(eventSourceUrl);
2648
-
2649
- var disconnect = function disconnect() {
2650
- cancelCurrentConnection();
2651
- };
2652
-
2653
- var removePageUnloadListener = listenPageUnload(function () {
2654
- disconnect();
2655
- });
2656
- return function () {
2657
- removePageUnloadListener();
2658
- disconnect();
2659
- };
2660
- };
2661
-
2662
- var addLastEventIdIntoUrlSearchParams = function addLastEventIdIntoUrlSearchParams(url, lastEventId) {
2663
- if (url.indexOf("?") === -1) {
2664
- url += "?";
2665
- } else {
2666
- url += "&";
2667
- }
2668
-
2669
- return "".concat(url, "last-event-id=").concat(encodeURIComponent(lastEventId));
2670
- }; // const listenPageMightFreeze = (callback) => {
2671
- // const removePageHideListener = listenEvent(window, "pagehide", (pageHideEvent) => {
2672
- // if (pageHideEvent.persisted === true) {
2673
- // callback(pageHideEvent)
2674
- // }
2675
- // })
2676
- // return removePageHideListener
2677
- // }
2678
- // const listenPageFreeze = (callback) => {
2679
- // const removeFreezeListener = listenEvent(document, "freeze", (freezeEvent) => {
2680
- // callback(freezeEvent)
2681
- // })
2682
- // return removeFreezeListener
2683
- // }
2684
- // const listenPageIsRestored = (callback) => {
2685
- // const removeResumeListener = listenEvent(document, "resume", (resumeEvent) => {
2686
- // removePageshowListener()
2687
- // callback(resumeEvent)
2688
- // })
2689
- // const removePageshowListener = listenEvent(window, "pageshow", (pageshowEvent) => {
2690
- // if (pageshowEvent.persisted === true) {
2691
- // removePageshowListener()
2692
- // removeResumeListener()
2693
- // callback(pageshowEvent)
2694
- // }
2695
- // })
2696
- // return () => {
2697
- // removeResumeListener()
2698
- // removePageshowListener()
2699
- // }
2700
- // }
2701
-
2702
-
2703
- var listenPageUnload = function listenPageUnload(callback) {
2704
- var removePageHideListener = listenEvent(window, "pagehide", function (pageHideEvent) {
2705
- if (pageHideEvent.persisted !== true) {
2706
- callback(pageHideEvent);
2707
- }
2708
- });
2709
- return removePageHideListener;
2710
- };
2711
-
2712
- var listenEvent = function listenEvent(emitter, event, callback) {
2713
- emitter.addEventListener(event, callback);
2714
- return function () {
2715
- emitter.removeEventListener(event, callback);
2716
- };
2717
- };
2718
-
2719
- var connectCompileServerEventSource = function connectCompileServerEventSource(fileRelativeUrl, _ref) {
2720
- var onFileModified = _ref.onFileModified,
2721
- onFileRemoved = _ref.onFileRemoved,
2722
- onConnecting = _ref.onConnecting,
2723
- onConnectionCancelled = _ref.onConnectionCancelled,
2724
- onConnectionFailed = _ref.onConnectionFailed,
2725
- onConnected = _ref.onConnected,
2726
- lastEventId = _ref.lastEventId;
2727
- var eventSourceUrl = "".concat(window.origin, "/").concat(fileRelativeUrl);
2728
-
2729
- var cancel = function cancel() {};
2730
-
2731
- var connect = function connect() {
2732
- return new Promise(function (resolve) {
2733
- cancel = connectEventSource$1(eventSourceUrl, {
2734
- "file-modified": function fileModified(_ref2) {
2735
- var data = _ref2.data;
2736
- onFileModified(data);
2737
- },
2738
- "file-removed": function fileRemoved(_ref3) {
2739
- var data = _ref3.data;
2740
- onFileRemoved(data);
2741
- }
2742
- }, {
2743
- connecting: function connecting(_ref4) {
2744
- var _cancel = _ref4.cancel;
2745
- onConnecting({
2746
- cancel: function cancel() {
2747
- _cancel();
2748
- }
2749
- });
2750
- },
2751
- connected: function connected(_ref5) {
2752
- var _cancel2 = _ref5.cancel;
2753
- resolve(true);
2754
- onConnected({
2755
- cancel: function cancel() {
2756
- _cancel2();
2757
- }
2758
- });
2759
- },
2760
- cancelled: function cancelled(_ref6) {
2761
- var connect = _ref6.connect;
2762
- resolve(false);
2763
- onConnectionCancelled({
2764
- connect: connect
2765
- });
2766
- },
2767
- failed: function failed(_ref7) {
2768
- var connect = _ref7.connect;
2769
- resolve(false);
2770
- onConnectionFailed({
2771
- connect: connect
2772
- });
2773
- },
2774
- retryMaxAttempt: Infinity,
2775
- retryAllocatedMs: 20 * 1000,
2776
- lastEventId: lastEventId
2777
- });
2778
- });
2779
- };
2780
-
2781
- return {
2782
- connect: connect,
2783
- disconnect: function disconnect() {
2784
- return cancel();
2785
- }
2786
- };
2787
- };
2788
-
2789
- var livereloadingPreference = createPreference("livereloading");
2790
- var eventSourceState = "default";
2791
2473
  var livereloadingAvailableOnServer = false;
2474
+ var parentEventSourceClient = window.parent.__jsenv_event_source_client__;
2792
2475
  var initToolbarEventSource = function initToolbarEventSource(_ref) {
2793
- var executedFileRelativeUrl = _ref.executedFileRelativeUrl,
2794
- livereloading = _ref.livereloading;
2795
-
2796
- var getLivereloadCallback = function getLivereloadCallback(originalFileProjectRelativeUrl) {
2797
- var callbacks = window.parent.__jsenv__.livereloadingCallbacks;
2798
- return callbacks[originalFileProjectRelativeUrl];
2799
- };
2800
-
2476
+ var livereloading = _ref.livereloading;
2801
2477
  removeForceHideElement(document.querySelector("#eventsource-indicator"));
2802
- connectEventSource({
2803
- executedFileRelativeUrl: executedFileRelativeUrl,
2804
- getLivereloadCallback: getLivereloadCallback
2805
- });
2806
2478
  livereloadingAvailableOnServer = livereloading;
2807
2479
 
2808
2480
  if (!livereloadingAvailableOnServer) {
2809
2481
  disableLivereloadSetting();
2810
2482
  }
2811
2483
 
2484
+ parentEventSourceClient.setConnectionStatusChangeCallback = function () {
2485
+ updateEventSourceIndicator();
2486
+ };
2487
+
2812
2488
  var livereloadCheckbox = document.querySelector("#toggle-livereload");
2813
- livereloadCheckbox.checked = shouldLivereload();
2489
+ livereloadCheckbox.checked = parentEventSourceClient.isLivereloadEnabled();
2814
2490
 
2815
2491
  livereloadCheckbox.onchange = function () {
2816
- livereloadingPreference.set(livereloadCheckbox.checked);
2492
+ parentEventSourceClient.setLivereloadPreference(livereloadCheckbox.checked);
2817
2493
  updateEventSourceIndicator();
2818
2494
  };
2819
2495
 
2820
2496
  updateEventSourceIndicator();
2821
2497
  };
2822
2498
 
2823
- var shouldLivereload = function shouldLivereload() {
2824
- return livereloadingAvailableOnServer && getLivereloadingPreference();
2825
- };
2826
-
2827
- var disableLivereloadSetting = function disableLivereloadSetting() {
2828
- document.querySelector(".settings-livereload").setAttribute("data-disabled", "true");
2829
- document.querySelector(".settings-livereload").setAttribute("title", "Livereload not available: disabled by server");
2830
- document.querySelector("#toggle-livereload").disabled = true;
2831
- };
2832
-
2833
- var parentEventSource = window.parent.__jsenv_eventsource__();
2834
-
2835
- var latestChangeMap = parentEventSource.latestChangeMap;
2836
- var eventSourceHooks = {};
2837
- var eventSourceConnection;
2838
- var connectionReadyPromise;
2839
-
2840
- var handleFileChange = function handleFileChange(_ref2) {
2841
- var file = _ref2.file,
2842
- eventType = _ref2.eventType,
2843
- livereloadCallback = _ref2.livereloadCallback;
2844
- latestChangeMap[file] = eventType;
2845
- updateEventSourceIndicator();
2846
-
2847
- if (shouldLivereload()) {
2848
- if (livereloadCallback) {
2849
- livereloadCallback({
2850
- file: file,
2851
- latestChangeMap: latestChangeMap,
2852
- reloadPage: reloadPage
2853
- });
2854
- } else if (file.endsWith(".css") || file.endsWith(".scss") || file.endsWith(".sass")) {
2855
- reloadAllCss();
2856
- delete latestChangeMap[file];
2857
- updateEventSourceIndicator();
2858
- } else {
2859
- reloadPage();
2860
- }
2861
- }
2862
- };
2863
-
2864
- var reloadAllCss = function reloadAllCss() {
2865
- var links = Array.from(window.parent.document.getElementsByTagName("link"));
2866
- links.forEach(function (link) {
2867
- if (link.rel === "stylesheet") {
2868
- var url = new URL(link.href);
2869
- url.searchParams.set("t", Date.now());
2870
- link.href = String(url);
2871
- }
2872
- });
2873
- };
2874
-
2875
- var reloadPage = function reloadPage() {
2876
- window.parent.location.reload(true);
2877
- };
2878
-
2879
- var reloadChanges = function reloadChanges() {
2880
- var fullReloadRequired = Object.keys(latestChangeMap).some(function (key) {
2881
- return !key.endsWith(".css");
2882
- });
2883
-
2884
- if (fullReloadRequired) {
2885
- reloadPage();
2886
- return;
2887
- }
2888
-
2889
- var cssReloadRequired = Object.keys(latestChangeMap).some(function (key) {
2890
- return key.endsWith(".css");
2891
- });
2892
-
2893
- if (cssReloadRequired) {
2894
- reloadAllCss();
2895
- Object.keys(latestChangeMap).forEach(function (key) {
2896
- if (key.endsWith(".css")) {
2897
- delete latestChangeMap[key];
2898
- }
2899
-
2900
- updateEventSourceIndicator();
2901
- });
2902
- }
2903
- };
2904
-
2905
- var connectEventSource = function connectEventSource(_ref3) {
2906
- var executedFileRelativeUrl = _ref3.executedFileRelativeUrl,
2907
- getLivereloadCallback = _ref3.getLivereloadCallback;
2908
- updateEventSourceIndicator();
2909
- connectionReadyPromise = createPromiseAndHooks();
2910
- eventSourceConnection = connectCompileServerEventSource(executedFileRelativeUrl, {
2911
- onFileModified: function onFileModified(file) {
2912
- handleFileChange({
2913
- file: file,
2914
- eventType: "modified",
2915
- livereloadCallback: getLivereloadCallback(file)
2916
- });
2917
- },
2918
- onFileRemoved: function onFileRemoved(file) {
2919
- handleFileChange({
2920
- file: file,
2921
- eventType: "removed",
2922
- livereloadCallback: getLivereloadCallback(file)
2923
- });
2924
- },
2925
- onFileAdded: function onFileAdded(file) {
2926
- handleFileChange({
2927
- file: file,
2928
- eventType: "added",
2929
- livereloadCallback: getLivereloadCallback(file)
2930
- });
2931
- },
2932
- onConnecting: function onConnecting(_ref4) {
2933
- var cancel = _ref4.cancel;
2934
- eventSourceState = "connecting";
2935
- eventSourceHooks = {
2936
- abort: cancel
2937
- };
2938
- updateEventSourceIndicator();
2939
- },
2940
- onConnectionCancelled: function onConnectionCancelled(_ref5) {
2941
- var connect = _ref5.connect;
2942
- eventSourceState = "disabled";
2943
- eventSourceHooks = {
2944
- connect: connect
2945
- };
2946
- updateEventSourceIndicator();
2947
- },
2948
- onConnectionFailed: function onConnectionFailed(_ref6) {
2949
- var connect = _ref6.connect;
2950
- eventSourceState = "failed";
2951
- eventSourceHooks = {
2952
- reconnect: connect
2953
- };
2954
- updateEventSourceIndicator();
2955
- },
2956
- onConnected: function onConnected(_ref7) {
2957
- var cancel = _ref7.cancel;
2958
- eventSourceState = "connected";
2959
- eventSourceHooks = {
2960
- disconnect: cancel
2961
- };
2962
- updateEventSourceIndicator();
2963
- connectionReadyPromise.resolve();
2964
- parentEventSource.disconnect();
2965
- },
2966
- lastEventId: parentEventSource.lastEventId
2967
- });
2968
- eventSourceConnection.connect();
2969
- };
2970
-
2971
- var getLivereloadingPreference = function getLivereloadingPreference() {
2972
- return livereloadingPreference.has() ? livereloadingPreference.get() : true;
2973
- };
2974
-
2975
2499
  var updateEventSourceIndicator = function updateEventSourceIndicator() {
2976
- var _eventSourceHooks = eventSourceHooks,
2977
- connect = _eventSourceHooks.connect,
2978
- abort = _eventSourceHooks.abort,
2979
- reconnect = _eventSourceHooks.reconnect;
2980
2500
  var eventSourceIndicator = document.querySelector("#eventsource-indicator");
2981
- var changeCount = Object.keys(latestChangeMap).length;
2501
+ var fileChanges = parentEventSourceClient.getFileChanges();
2502
+ var changeCount = Object.keys(fileChanges).length;
2503
+ var eventSourceConnectionState = parentEventSourceClient.getConnectionStatus();
2982
2504
  enableVariant(eventSourceIndicator, {
2983
- eventsource: eventSourceState,
2984
- livereload: shouldLivereload() ? "on" : "off",
2505
+ eventsource: eventSourceConnectionState,
2506
+ livereload: parentEventSourceClient.isLivereloadEnabled() ? "on" : "off",
2985
2507
  changes: changeCount > 0 ? "yes" : "no"
2986
2508
  });
2987
2509
  var variantNode = document.querySelector("#eventsource-indicator > [data-when-active]");
@@ -2990,11 +2512,11 @@
2990
2512
  toggleTooltip(eventSourceIndicator);
2991
2513
  };
2992
2514
 
2993
- if (eventSourceState === "disabled") {
2994
- variantNode.querySelector("a").onclick = connect;
2995
- } else if (eventSourceState === "connecting") {
2996
- variantNode.querySelector("a").onclick = abort;
2997
- } else if (eventSourceState === "connected") {
2515
+ if (eventSourceConnectionState === "connecting") {
2516
+ variantNode.querySelector("a").onclick = function () {
2517
+ parentEventSourceClient.disconnect();
2518
+ };
2519
+ } else if (eventSourceConnectionState === "connected") {
2998
2520
  removeAutoShowTooltip(eventSourceIndicator);
2999
2521
 
3000
2522
  if (changeCount) {
@@ -3002,19 +2524,30 @@
3002
2524
  changeLink.innerHTML = changeCount;
3003
2525
 
3004
2526
  changeLink.onclick = function () {
3005
- console.log(JSON.stringify(latestChangeMap, null, " "), latestChangeMap); // eslint-disable-next-line no-alert
2527
+ console.log(JSON.stringify(fileChanges, null, " "), fileChanges); // eslint-disable-next-line no-alert
3006
2528
 
3007
- window.parent.alert(JSON.stringify(latestChangeMap, null, " "));
2529
+ window.parent.alert(JSON.stringify(fileChanges, null, " "));
3008
2530
  };
3009
2531
 
3010
- variantNode.querySelector(".eventsource-reload-link").onclick = reloadChanges;
2532
+ variantNode.querySelector(".eventsource-reload-link").onclick = function () {
2533
+ parentEventSourceClient.reloadIfNeeded();
2534
+ };
3011
2535
  }
3012
- } else if (eventSourceState === "failed") {
2536
+ } else if (eventSourceConnectionState === "disconnected") {
3013
2537
  autoShowTooltip(eventSourceIndicator);
3014
- variantNode.querySelector("a").onclick = reconnect;
2538
+
2539
+ variantNode.querySelector("a").onclick = function () {
2540
+ parentEventSourceClient.connect();
2541
+ };
3015
2542
  }
3016
2543
  };
3017
2544
 
2545
+ var disableLivereloadSetting = function disableLivereloadSetting() {
2546
+ document.querySelector(".settings-livereload").setAttribute("data-disabled", "true");
2547
+ document.querySelector(".settings-livereload").setAttribute("title", "Livereload not available: disabled by server");
2548
+ document.querySelector("#toggle-livereload").disabled = true;
2549
+ };
2550
+
3018
2551
  var WINDOW_SMALL_WIDTH = 420;
3019
2552
  var makeToolbarResponsive = function makeToolbarResponsive() {
3020
2553
  // apply responsive design on toolbar icons if needed + add listener on resize screen