pinokiod 3.192.0 → 3.193.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.192.0",
3
+ "version": "3.193.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1163,6 +1163,20 @@ document.addEventListener("DOMContentLoaded", async () => {
1163
1163
  dropOverlay.className = "terminal-drop-overlay"
1164
1164
  dropOverlay.textContent = "Drop files to upload"
1165
1165
  terminalContainer.appendChild(dropOverlay)
1166
+ const filterUniqueResources = (urls) => {
1167
+ const seen = new Set()
1168
+ return (Array.isArray(urls) ? urls : []).filter((item) => {
1169
+ if (!item || typeof item.href !== "string") {
1170
+ return false
1171
+ }
1172
+ const key = item.href.trim()
1173
+ if (!key || seen.has(key)) {
1174
+ return false
1175
+ }
1176
+ seen.add(key)
1177
+ return true
1178
+ })
1179
+ }
1166
1180
  let dragDepth = 0
1167
1181
  const prevent = (event) => {
1168
1182
  event.preventDefault()
@@ -1189,20 +1203,7 @@ document.addEventListener("DOMContentLoaded", async () => {
1189
1203
  let remoteResources = []
1190
1204
  try {
1191
1205
  const extra = await this.collectFilesFromDataTransfer(event.dataTransfer)
1192
- if (extra && Array.isArray(extra.urls) && extra.urls.length) {
1193
- const seenUrls = new Set()
1194
- remoteResources = extra.urls.filter((item) => {
1195
- if (!item || typeof item.href !== "string") {
1196
- return false
1197
- }
1198
- const key = item.href.trim()
1199
- if (!key || seenUrls.has(key)) {
1200
- return false
1201
- }
1202
- seenUrls.add(key)
1203
- return true
1204
- })
1205
- }
1206
+ remoteResources = filterUniqueResources(extra && extra.urls)
1206
1207
  } catch (error) {
1207
1208
  console.warn("Failed to collect files from drop payload", error)
1208
1209
  }
@@ -1221,6 +1222,36 @@ document.addEventListener("DOMContentLoaded", async () => {
1221
1222
  }
1222
1223
  this.term.focus()
1223
1224
  })
1225
+ terminalContainer.addEventListener("paste", async (event) => {
1226
+ const clipboard = event.clipboardData || window.clipboardData || null
1227
+ if (!clipboard) {
1228
+ return
1229
+ }
1230
+ const files = Array.from(clipboard.files || [])
1231
+ let remoteResources = []
1232
+ try {
1233
+ const extra = await this.collectFilesFromDataTransfer(clipboard)
1234
+ remoteResources = filterUniqueResources(extra && extra.urls)
1235
+ } catch (error) {
1236
+ console.warn("Failed to collect clipboard resources", error)
1237
+ }
1238
+ if (!files.length && (!remoteResources || remoteResources.length === 0)) {
1239
+ return
1240
+ }
1241
+ event.preventDefault()
1242
+ event.stopPropagation()
1243
+ try {
1244
+ if (remoteResources && remoteResources.length > 0) {
1245
+ await this.uploadRemoteResources(remoteResources, dropOverlay)
1246
+ }
1247
+ } catch (error) {
1248
+ console.warn("Clipboard remote upload failed", error)
1249
+ }
1250
+ if (files.length > 0) {
1251
+ await this.uploadFiles(files, dropOverlay)
1252
+ }
1253
+ this.term.focus()
1254
+ })
1224
1255
  term.attachCustomKeyEventHandler(event => {
1225
1256
  if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
1226
1257
  const selection = term.getSelection();
@@ -1256,6 +1256,20 @@ document.addEventListener("DOMContentLoaded", async () => {
1256
1256
  dropOverlay.className = "terminal-drop-overlay"
1257
1257
  dropOverlay.textContent = "Drop files to upload"
1258
1258
  terminalContainer.appendChild(dropOverlay)
1259
+ const filterUniqueResources = (urls) => {
1260
+ const seen = new Set()
1261
+ return (Array.isArray(urls) ? urls : []).filter((item) => {
1262
+ if (!item || typeof item.href !== "string") {
1263
+ return false
1264
+ }
1265
+ const key = item.href.trim()
1266
+ if (!key || seen.has(key)) {
1267
+ return false
1268
+ }
1269
+ seen.add(key)
1270
+ return true
1271
+ })
1272
+ }
1259
1273
  let dragDepth = 0
1260
1274
  const prevent = (event) => {
1261
1275
  event.preventDefault()
@@ -1282,20 +1296,7 @@ document.addEventListener("DOMContentLoaded", async () => {
1282
1296
  let remoteResources = []
1283
1297
  try {
1284
1298
  const extra = await this.collectFilesFromDataTransfer(event.dataTransfer)
1285
- if (extra && Array.isArray(extra.urls) && extra.urls.length) {
1286
- const seenUrls = new Set()
1287
- remoteResources = extra.urls.filter((item) => {
1288
- if (!item || typeof item.href !== "string") {
1289
- return false
1290
- }
1291
- const key = item.href.trim()
1292
- if (!key || seenUrls.has(key)) {
1293
- return false
1294
- }
1295
- seenUrls.add(key)
1296
- return true
1297
- })
1298
- }
1299
+ remoteResources = filterUniqueResources(extra && extra.urls)
1299
1300
  } catch (error) {
1300
1301
  console.warn("Failed to collect files from drop payload", error)
1301
1302
  }
@@ -1318,6 +1319,36 @@ document.addEventListener("DOMContentLoaded", async () => {
1318
1319
  }
1319
1320
  this.term.focus()
1320
1321
  })
1322
+ terminalContainer.addEventListener("paste", async (event) => {
1323
+ const clipboard = event.clipboardData || window.clipboardData || null
1324
+ if (!clipboard) {
1325
+ return
1326
+ }
1327
+ const files = Array.from(clipboard.files || [])
1328
+ let remoteResources = []
1329
+ try {
1330
+ const extra = await this.collectFilesFromDataTransfer(clipboard)
1331
+ remoteResources = filterUniqueResources(extra && extra.urls)
1332
+ } catch (error) {
1333
+ console.warn("Failed to collect clipboard resources", error)
1334
+ }
1335
+ if (!files.length && (!remoteResources || remoteResources.length === 0)) {
1336
+ return
1337
+ }
1338
+ event.preventDefault()
1339
+ event.stopPropagation()
1340
+ try {
1341
+ if (remoteResources && remoteResources.length > 0) {
1342
+ await this.uploadRemoteResources(remoteResources, dropOverlay)
1343
+ }
1344
+ } catch (error) {
1345
+ console.warn("Clipboard remote upload failed", error)
1346
+ }
1347
+ if (files.length > 0) {
1348
+ await this.uploadFiles(files, dropOverlay)
1349
+ }
1350
+ this.term.focus()
1351
+ })
1321
1352
  term.attachCustomKeyEventHandler(event => {
1322
1353
  if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
1323
1354
  const selection = term.getSelection();