retold-remote 0.0.23 → 0.0.26

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 (79) hide show
  1. package/css/retold-remote.css +343 -20
  2. package/docs/.nojekyll +0 -0
  3. package/docs/README.md +64 -12
  4. package/docs/_cover.md +6 -6
  5. package/docs/_sidebar.md +2 -0
  6. package/docs/_topbar.md +1 -1
  7. package/docs/_version.json +7 -0
  8. package/docs/collections.md +30 -0
  9. package/docs/css/docuserve.css +327 -0
  10. package/docs/ebook-reader.md +75 -1
  11. package/docs/image-explorer.md +62 -2
  12. package/docs/index.html +39 -0
  13. package/docs/retold-catalog.json +254 -0
  14. package/docs/retold-keyword-index.json +31216 -0
  15. package/docs/server-setup.md +122 -91
  16. package/docs/stack-launcher.md +218 -0
  17. package/docs/synology.md +585 -0
  18. package/docs/ultravisor-configuration.md +5 -5
  19. package/docs/ultravisor-integration.md +4 -2
  20. package/package.json +20 -14
  21. package/source/Pict-Application-RetoldRemote.js +22 -0
  22. package/source/RetoldRemote-ExtensionMaps.js +1 -1
  23. package/source/cli/RetoldRemote-Server-Setup.js +460 -7
  24. package/source/cli/RetoldRemote-Stack-Launcher.js +563 -0
  25. package/source/cli/RetoldRemote-Stack-Run.js +41 -0
  26. package/source/cli/commands/RetoldRemote-Command-Serve.js +129 -54
  27. package/source/providers/CollectionManager-AddItems.js +166 -0
  28. package/source/providers/Pict-Provider-GalleryNavigation.js +55 -0
  29. package/source/providers/Pict-Provider-OperationStatus.js +597 -0
  30. package/source/providers/keyboard-handlers/KeyHandler-ImageExplorer.js +20 -1
  31. package/source/providers/keyboard-handlers/KeyHandler-Viewer.js +23 -0
  32. package/source/server/RetoldRemote-AudioWaveformService.js +49 -3
  33. package/source/server/RetoldRemote-CollectionExportService.js +763 -0
  34. package/source/server/RetoldRemote-CollectionService.js +5 -0
  35. package/source/server/RetoldRemote-EbookService.js +218 -3
  36. package/source/server/RetoldRemote-ImageService.js +221 -46
  37. package/source/server/RetoldRemote-MediaService.js +63 -4
  38. package/source/server/RetoldRemote-MetadataCache.js +25 -5
  39. package/source/server/RetoldRemote-OperationBroadcaster.js +363 -0
  40. package/source/server/RetoldRemote-SubimageService.js +680 -0
  41. package/source/server/RetoldRemote-ToolDetector.js +50 -0
  42. package/source/server/RetoldRemote-UltravisorBeacon.js +18 -3
  43. package/source/server/RetoldRemote-UltravisorDispatcher.js +65 -491
  44. package/source/server/RetoldRemote-UltravisorOperations.js +133 -20
  45. package/source/server/RetoldRemote-VideoFrameService.js +302 -9
  46. package/source/views/MediaViewer-EbookViewer.js +419 -1
  47. package/source/views/MediaViewer-PdfViewer.js +1050 -0
  48. package/source/views/PictView-Remote-AudioExplorer.js +77 -1
  49. package/source/views/PictView-Remote-CollectionsPanel.js +213 -0
  50. package/source/views/PictView-Remote-Gallery.js +365 -64
  51. package/source/views/PictView-Remote-ImageExplorer.js +1529 -44
  52. package/source/views/PictView-Remote-ImageViewer.js +2 -2
  53. package/source/views/PictView-Remote-Layout.js +58 -0
  54. package/source/views/PictView-Remote-MediaViewer.js +100 -25
  55. package/source/views/PictView-Remote-RegionsBrowser.js +554 -0
  56. package/source/views/PictView-Remote-SubimagesPanel.js +353 -0
  57. package/source/views/PictView-Remote-TopBar.js +1 -0
  58. package/source/views/PictView-Remote-VideoExplorer.js +77 -1
  59. package/web-application/css/docuserve.css +277 -23
  60. package/web-application/css/retold-remote.css +343 -20
  61. package/web-application/docs/README.md +64 -12
  62. package/web-application/docs/_cover.md +6 -6
  63. package/web-application/docs/_sidebar.md +2 -0
  64. package/web-application/docs/_topbar.md +1 -1
  65. package/web-application/docs/collections.md +30 -0
  66. package/web-application/docs/ebook-reader.md +75 -1
  67. package/web-application/docs/image-explorer.md +62 -2
  68. package/web-application/docs/server-setup.md +122 -91
  69. package/web-application/docs/stack-launcher.md +218 -0
  70. package/web-application/docs/synology.md +585 -0
  71. package/web-application/docs/ultravisor-configuration.md +5 -5
  72. package/web-application/docs/ultravisor-integration.md +4 -2
  73. package/web-application/js/pict-docuserve.min.js +12 -12
  74. package/web-application/js/pict.min.js +2 -2
  75. package/web-application/js/pict.min.js.map +1 -1
  76. package/web-application/retold-remote.js +6596 -1784
  77. package/web-application/retold-remote.js.map +1 -1
  78. package/web-application/retold-remote.min.js +75 -23
  79. package/web-application/retold-remote.min.js.map +1 -1
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "retold-remote",
3
- "version": "0.0.23",
3
+ "version": "0.0.26",
4
4
  "description": "Retold Remote - NAS media browser with gallery views and keyboard navigation",
5
5
  "main": "source/Pict-RetoldRemote-Bundle.js",
6
6
  "bin": {
7
7
  "retold-remote": "source/cli/RetoldRemote-CLI-Run.js",
8
- "rr": "source/cli/RetoldRemote-CLI-Run.js"
8
+ "rr": "source/cli/RetoldRemote-CLI-Run.js",
9
+ "retold-stack": "source/cli/RetoldRemote-Stack-Run.js"
9
10
  },
10
11
  "files": [
11
12
  "source/",
@@ -17,7 +18,8 @@
17
18
  "LICENSE"
18
19
  ],
19
20
  "scripts": {
20
- "start": "node source/cli/RetoldRemote-CLI-Run.js serve",
21
+ "start": "node source/cli/RetoldRemote-CLI-Run.js",
22
+ "stack": "node source/cli/RetoldRemote-Stack-Run.js",
21
23
  "build": "npx quack build && npx quack copy",
22
24
  "test": "npx mocha -u tdd --exit --timeout 30000 test/*_tests.js",
23
25
  "prepack": "npm run build",
@@ -30,36 +32,40 @@
30
32
  "author": "steven velozo <steven@velozo.com>",
31
33
  "license": "MIT",
32
34
  "dependencies": {
33
- "@xmldom/xmldom": "^0.8.11",
35
+ "@xmldom/xmldom": "^0.9.9",
34
36
  "dcraw": "^1.0.3",
35
37
  "epubjs": "^0.3.93",
36
38
  "exifr": "^7.1.3",
37
- "fable": "^3.1.67",
39
+ "fable": "^3.1.70",
38
40
  "fable-serviceproviderbase": "^3.0.19",
41
+ "fable-ultravisor-client": "^0.0.1",
39
42
  "node-unrar-js": "^2.0.2",
40
43
  "orator": "^6.0.4",
41
- "orator-serviceserver-restify": "^2.0.9",
44
+ "orator-conversion": "^1.0.9",
45
+ "orator-serviceserver-restify": "^2.0.10",
42
46
  "parime": "^1.0.3",
43
47
  "pdf-parse": "^2.4.5",
44
- "pict": "^1.0.359",
48
+ "pict": "^1.0.364",
45
49
  "pict-application": "^1.0.33",
46
- "pict-docuserve": "^0.0.32",
47
50
  "pict-provider": "^1.0.12",
48
51
  "pict-section-code": "^1.0.4",
49
52
  "pict-section-filebrowser": "^0.0.2",
50
53
  "pict-service-commandlineutility": "^1.0.19",
51
- "pict-view": "^1.0.67",
52
- "retold-content-system": "^1.0.12",
53
- "ultravisor-beacon": "^0.0.7",
54
- "yauzl": "^3.2.1"
54
+ "pict-view": "^1.0.68",
55
+ "retold-content-system": "^1.0.17",
56
+ "ultravisor": "^1.0.23",
57
+ "ultravisor-beacon": "^0.0.11",
58
+ "ws": "^8.20.0",
59
+ "yauzl": "^3.3.0"
55
60
  },
56
61
  "optionalDependencies": {
57
62
  "@img/sharp-wasm32": "^0.34.5",
58
63
  "sharp": "^0.34.5"
59
64
  },
60
65
  "devDependencies": {
61
- "puppeteer": "^24.40.0",
62
- "quackage": "^1.0.65"
66
+ "pict-docuserve": "^0.1.5",
67
+ "puppeteer": "^24.41.0",
68
+ "quackage": "^1.1.2"
63
69
  },
64
70
  "copyFilesSettings": {
65
71
  "whenFileExists": "overwrite"
@@ -10,6 +10,7 @@ const libProviderRetoldRemoteIcons = require('./providers/Pict-Provider-RetoldRe
10
10
  const libProviderRetoldRemoteTheme = require('./providers/Pict-Provider-RetoldRemoteTheme.js');
11
11
  const libProviderFormattingUtilities = require('./providers/Pict-Provider-FormattingUtilities.js');
12
12
  const libProviderToastNotification = require('./providers/Pict-Provider-ToastNotification.js');
13
+ const libProviderOperationStatus = require('./providers/Pict-Provider-OperationStatus.js');
13
14
  const libProviderCollectionManager = require('./providers/Pict-Provider-CollectionManager.js');
14
15
  const libProviderAISortManager = require('./providers/Pict-Provider-AISortManager.js');
15
16
 
@@ -30,6 +31,8 @@ const libViewImageExplorer = require('./views/PictView-Remote-ImageExplorer.js')
30
31
  const libViewVLCSetup = require('./views/PictView-Remote-VLCSetup.js');
31
32
  const libViewCollectionsPanel = require('./views/PictView-Remote-CollectionsPanel.js');
32
33
  const libViewFileInfoPanel = require('./views/PictView-Remote-FileInfoPanel.js');
34
+ const libViewSubimagesPanel = require('./views/PictView-Remote-SubimagesPanel.js');
35
+ const libViewRegionsBrowser = require('./views/PictView-Remote-RegionsBrowser.js');
33
36
 
34
37
  // Application configuration
35
38
  const _DefaultConfiguration = require('./Pict-Application-RetoldRemote-Configuration.json');
@@ -65,6 +68,8 @@ class RetoldRemoteApplication extends libContentEditorApplication
65
68
  this.pict.addView('RetoldRemote-VLCSetup', libViewVLCSetup.default_configuration, libViewVLCSetup);
66
69
  this.pict.addView('RetoldRemote-CollectionsPanel', libViewCollectionsPanel.default_configuration, libViewCollectionsPanel);
67
70
  this.pict.addView('RetoldRemote-FileInfoPanel', libViewFileInfoPanel.default_configuration, libViewFileInfoPanel);
71
+ this.pict.addView('RetoldRemote-SubimagesPanel', libViewSubimagesPanel.default_configuration, libViewSubimagesPanel);
72
+ this.pict.addView('RetoldRemote-RegionsBrowser', libViewRegionsBrowser.default_configuration, libViewRegionsBrowser);
68
73
 
69
74
  // Add new providers
70
75
  this.pict.addProvider('RetoldRemote-Provider', libProviderRetoldRemote.default_configuration, libProviderRetoldRemote);
@@ -74,6 +79,7 @@ class RetoldRemoteApplication extends libContentEditorApplication
74
79
  this.pict.addProvider('RetoldRemote-Theme', libProviderRetoldRemoteTheme.default_configuration, libProviderRetoldRemoteTheme);
75
80
  this.pict.addProvider('RetoldRemote-FormattingUtilities', libProviderFormattingUtilities.default_configuration, libProviderFormattingUtilities);
76
81
  this.pict.addProvider('RetoldRemote-ToastNotification', libProviderToastNotification.default_configuration, libProviderToastNotification);
82
+ this.pict.addProvider('RetoldRemote-OperationStatus', libProviderOperationStatus.default_configuration, libProviderOperationStatus);
77
83
  this.pict.addProvider('RetoldRemote-CollectionManager', libProviderCollectionManager.default_configuration, libProviderCollectionManager);
78
84
  this.pict.addProvider('RetoldRemote-AISortManager', libProviderAISortManager.default_configuration, libProviderAISortManager);
79
85
  }
@@ -505,6 +511,22 @@ class RetoldRemoteApplication extends libContentEditorApplication
505
511
  tmpPath = this.pict.AppData.PictFileBrowser.CurrentLocation;
506
512
  }
507
513
 
514
+ // Paint an immediate loading overlay in the gallery so the user gets
515
+ // visible feedback the moment a folder is clicked — before the fetch
516
+ // and before any rendering work. This prevents the "nothing happened"
517
+ // impression on folders with thousands of files.
518
+ let tmpGalleryView = tmpSelf.pict.views['RetoldRemote-Gallery'];
519
+ if (tmpGalleryView && typeof tmpGalleryView.showLoadingState === 'function')
520
+ {
521
+ tmpGalleryView.showLoadingState(tmpPath || '');
522
+ }
523
+
524
+ // Cancel any chunked render from a previous folder
525
+ if (tmpGalleryView && typeof tmpGalleryView.cancelActiveRender === 'function')
526
+ {
527
+ tmpGalleryView.cancelActiveRender();
528
+ }
529
+
508
530
  let tmpURL = '/api/filebrowser/list';
509
531
  if (tmpPath && tmpPath.length > 0)
510
532
  {
@@ -41,7 +41,7 @@ for (let tmpKey in RawImageExtensions)
41
41
 
42
42
  const VideoExtensions = { 'mp4': true, 'webm': true, 'mov': true, 'mkv': true, 'avi': true, 'wmv': true, 'flv': true, 'm4v': true, 'ogv': true, 'mpg': true, 'mpeg': true, 'mpe': true, 'mpv': true, 'm2v': true, 'ts': true, 'mts': true, 'm2ts': true, 'vob': true, '3gp': true, '3g2': true, 'f4v': true, 'rm': true, 'rmvb': true, 'divx': true, 'asf': true, 'mxf': true, 'dv': true, 'nsv': true, 'nuv': true, 'y4m': true, 'wtv': true, 'swf': true, 'dat': true };
43
43
  const AudioExtensions = { 'mp3': true, 'wav': true, 'ogg': true, 'flac': true, 'aac': true, 'm4a': true, 'wma': true, 'oga': true };
44
- const DocumentExtensions = { 'pdf': true, 'epub': true, 'mobi': true, 'doc': true, 'docx': true };
44
+ const DocumentExtensions = { 'pdf': true, 'epub': true, 'mobi': true, 'doc': true, 'docx': true, 'rtf': true, 'odt': true, 'wpd': true, 'wps': true, 'pages': true, 'odp': true, 'ppt': true, 'pptx': true, 'ods': true, 'xls': true, 'xlsx': true };
45
45
 
46
46
  /**
47
47
  * Get the media category for a file extension.