pinokiod 3.280.0 → 3.282.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinokiod",
3
- "version": "3.280.0",
3
+ "version": "3.282.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -2857,40 +2857,14 @@ document.addEventListener("DOMContentLoaded", () => {
2857
2857
  return;
2858
2858
  }
2859
2859
  trigger.dataset.createLauncherInit = 'true';
2860
- trigger.addEventListener('click', () => {
2861
- handleCreateLauncherClick(api);
2862
- });
2863
- }
2864
-
2865
- async function handleCreateLauncherClick(api) {
2866
- if (!api || typeof api.showModal !== 'function') {
2867
- return;
2868
- }
2869
- try {
2870
- const response = await fetch('/bundle/dev', {
2871
- headers: {
2872
- 'Accept': 'application/json',
2873
- },
2874
- });
2875
- if (response.ok) {
2876
- const data = await response.json();
2877
- if (data && data.available === false) {
2878
- const callback = encodeURIComponent(window.location.pathname + window.location.search);
2879
- window.location.href = `/setup/dev?callback=${callback}`;
2880
- return;
2881
- }
2882
- }
2883
- } catch (error) {
2884
- console.warn('Failed to verify tooling before opening create modal', error);
2885
- }
2886
- api.showModal();
2860
+ trigger.addEventListener('click', () => guardCreateLauncher(api));
2887
2861
  }
2888
2862
 
2889
2863
  function openPendingCreateLauncherModal(api) {
2890
2864
  if (!api || !createLauncherState.pendingDefaults) {
2891
2865
  return;
2892
2866
  }
2893
- api.showModal(createLauncherState.pendingDefaults);
2867
+ guardCreateLauncher(api, createLauncherState.pendingDefaults);
2894
2868
  createLauncherState.pendingDefaults = null;
2895
2869
  if (createLauncherState.shouldCleanupQuery) {
2896
2870
  cleanupCreateLauncherParams();
@@ -2898,6 +2872,96 @@ document.addEventListener("DOMContentLoaded", () => {
2898
2872
  }
2899
2873
  }
2900
2874
 
2875
+ function guardCreateLauncher(api, defaults = null) {
2876
+ if (!api || typeof api.showModal !== 'function') {
2877
+ return;
2878
+ }
2879
+ const openModal = () => {
2880
+ if (defaults) {
2881
+ api.showModal(defaults);
2882
+ } else {
2883
+ api.showModal();
2884
+ }
2885
+ };
2886
+ const createMinimalLoadingSwal = () => {
2887
+ if (typeof window === 'undefined' || typeof window.Swal === 'undefined') {
2888
+ return () => {};
2889
+ }
2890
+ const swal = window.Swal;
2891
+ if (typeof swal.fire !== 'function') {
2892
+ return () => {};
2893
+ }
2894
+ const close = () => {
2895
+ if (swal.isVisible()) {
2896
+ swal.close();
2897
+ }
2898
+ };
2899
+ swal.fire({
2900
+ html: "<i class='fa-solid fa-circle-notch fa-spin'></i> Loading...",
2901
+ allowOutsideClick: false,
2902
+ allowEscapeKey: false,
2903
+ showConfirmButton: false,
2904
+ customClass: {
2905
+ container: 'loader-container',
2906
+ popup: 'loader-popup',
2907
+ htmlContainer: 'loader-dialog',
2908
+ footer: 'hidden',
2909
+ actions: 'hidden'
2910
+ }
2911
+ });
2912
+ return close;
2913
+ };
2914
+ const check_ready = () => {
2915
+ return fetch("/pinokio/requirements_ready").then((res) => {
2916
+ return res.json()
2917
+ }).then((res) => {
2918
+ if (res.error) {
2919
+ return false
2920
+ } else if (!res.requirements_pending) {
2921
+ return true
2922
+ }
2923
+ return false
2924
+ })
2925
+ }
2926
+ let closeMinimalLoadingModal
2927
+ let promise = new Promise((resolve, reject) => {
2928
+ check_ready().then((ready) => {
2929
+ if (ready) {
2930
+ console.log("ready 1", ready)
2931
+ resolve()
2932
+ } else {
2933
+ closeMinimalLoadingModal = createMinimalLoadingSwal();
2934
+ let interval = setInterval(() => {
2935
+ check_ready().then((ready) => {
2936
+ console.log("ready 2", ready)
2937
+ if (ready) {
2938
+ clearInterval(interval)
2939
+ resolve()
2940
+ }
2941
+ })
2942
+ }, 500)
2943
+ }
2944
+ })
2945
+ })
2946
+ promise.then(() => {
2947
+ if (closeMinimalLoadingModal) {
2948
+ closeMinimalLoadingModal()
2949
+ }
2950
+ console.log("ready")
2951
+ fetch('/bundle/dev')
2952
+ .then((response) => response.json())
2953
+ .then((data) => {
2954
+ console.log("Data", data)
2955
+ if (data && data.available === false) {
2956
+ const callback = encodeURIComponent(window.location.pathname + window.location.search + window.location.hash);
2957
+ window.location.href = `/setup/dev?callback=${callback}`;
2958
+ } else {
2959
+ openModal();
2960
+ }
2961
+ })
2962
+ })
2963
+ }
2964
+
2901
2965
  function parseCreateLauncherDefaults() {
2902
2966
  try {
2903
2967
  const params = new URLSearchParams(window.location.search);
@@ -3,6 +3,7 @@
3
3
  <title>Pinokio</title>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
6
+ <link href="/xterm.min.css" rel="stylesheet" />
6
7
  <link href="/css/fontawesome.min.css" rel="stylesheet">
7
8
  <link href="/css/solid.min.css" rel="stylesheet">
8
9
  <link href="/css/regular.min.css" rel="stylesheet">
@@ -156,6 +157,10 @@ body.dark .browser-options-row {
156
157
  <script src="/sweetalert2.js"></script>
157
158
  <script src="/noty.js"></script>
158
159
  <script src="/notyq.js"></script>
160
+ <script src="/xterm.js"></script>
161
+ <script src="/xterm-addon-fit.js"></script>
162
+ <script src="/xterm-addon-web-links.js"></script>
163
+ <script src="/xterm-theme.js"></script>
159
164
  <script src="/Socket.js"></script>
160
165
  <script src="/install.js"></script>
161
166
  <script src="/common.js"></script>
@@ -692,7 +692,7 @@ body.dark aside .current.selected {
692
692
  <div>Get started by installing or creating some pinokio scripts.</div>
693
693
  <a href="/home?mode=explore" class='btn'><i class="fa-solid fa-globe"></i> Discover</a>
694
694
  <span>&nbsp;or&nbsp;</span>
695
- <a href="/home?create=1" class='btn'><i class="fa-solid fa-wand-magic-sparkles"></i> Create</a>
695
+ <button type='button' class='btn' onclick="(function(btn){ if(btn){ btn.click(); } })(document.getElementById('create-launcher-button'))"><i class="fa-solid fa-wand-magic-sparkles"></i> Create</button>
696
696
  </div>
697
697
  <% } %>
698
698
  <% } else { %>
@@ -125,7 +125,6 @@ body {
125
125
  <script src="/xterm-addon-web-links.js"></script>
126
126
  <script src="/xterm-theme.js"></script>
127
127
  <script src="/Socket.js"></script>
128
- <script src="/resizeSync.js"></script>
129
128
  <script src="/terminal-settings.js"></script>
130
129
  <script src="/pinokio-touch.js"></script>
131
130
  <!--
@@ -211,16 +210,11 @@ const createTerm = async (_theme) => {
211
210
  document.addEventListener("DOMContentLoaded", async () => {
212
211
  const n = new N()
213
212
  let socket = new Socket()
214
- const resizeSync = window.PinokioResizeSync.create({
215
- socket,
216
- getShellId: () => shell_id
217
- })
218
213
  <% if (theme === "dark") { %>
219
214
  let term = await createTerm(xtermTheme.FrontEndDelight)
220
215
  <% } else { %>
221
216
  let term = await createTerm(xtermTheme.Tomorrow)
222
217
  <% } %>
223
- resizeSync.updateTerm(term, fitAddon, socket)
224
218
  let params = new URLSearchParams(location.search)
225
219
  let entries = [...params.entries()]
226
220
  let options;
@@ -240,10 +234,8 @@ document.addEventListener("DOMContentLoaded", async () => {
240
234
  })
241
235
  let observer = new ResizeObserver(() => {
242
236
  fitAddon.fit()
243
- resizeSync.sendResize(term.cols, term.rows)
244
237
  });
245
238
  observer.observe(document.body)
246
- resizeSync.reset()
247
239
  await new Promise((resolve, reject) => {
248
240
  console.log({ cols: term.cols, rows: term.rows })
249
241
  socket.run({
@@ -259,17 +251,11 @@ document.addEventListener("DOMContentLoaded", async () => {
259
251
  console.log("packet", packet)
260
252
  if (packet.type === "stream") {
261
253
  if (packet.data.id) {
262
- if (!shell_id) {
263
- shell_id = packet.data.id
264
- resizeSync.sendInitial()
265
- } else {
266
- shell_id = packet.data.id
267
- }
254
+ shell_id = packet.data.id
268
255
  }
269
256
  term.write(packet.data.raw)
270
257
  } else if (packet.type === "shell.kill") {
271
258
  socket.close()
272
- resizeSync.reset()
273
259
  } else if (packet.type === "result") {
274
260
  resolve()
275
261
  } else if (packet.type === "error") {
@@ -323,8 +309,6 @@ document.addEventListener("DOMContentLoaded", async () => {
323
309
  }
324
310
  n.Noty(payload)
325
311
  }
326
- } else if (packet.type === "resize") {
327
- resizeSync.handleResizePacket(packet)
328
312
  } else if (packet.type === "input") {
329
313
  let params = packet.data
330
314
  /*
@@ -14,6 +14,7 @@
14
14
  <script src="/xterm-addon-search-bar.js"></script>
15
15
  <script src="/sweetalert2.js"></script>
16
16
  <script src="/Socket.js"></script>
17
+ <script src="/resizeSync.js"></script>
17
18
  <script src="/terminal-settings.js"></script>
18
19
  <script src="/pinokio-touch.js"></script>
19
20
  <script src="/common.js"></script>