@pallasoft/ps-file-components 1.0.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 (192) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +10 -0
  3. package/dist/components/ps-file-delete-confirm.d.ts +11 -0
  4. package/dist/components/ps-file-delete-confirm.js +8 -0
  5. package/dist/components/ps-file-kind-icon.d.ts +6 -0
  6. package/dist/components/ps-file-kind-icon.js +10 -0
  7. package/dist/components/ps-file-list.d.ts +12 -0
  8. package/dist/components/ps-file-list.js +27 -0
  9. package/dist/components/ps-file-picker.d.ts +18 -0
  10. package/dist/components/ps-file-picker.js +48 -0
  11. package/dist/components/ps-file-viewer-button.d.ts +10 -0
  12. package/dist/components/ps-file-viewer-button.js +7 -0
  13. package/dist/components/ps-file-viewer-content.d.ts +2 -0
  14. package/dist/components/ps-file-viewer-content.js +28 -0
  15. package/dist/components/ps-file-viewer.d.ts +14 -0
  16. package/dist/components/ps-file-viewer.js +102 -0
  17. package/dist/components/ps-progress-bar.d.ts +7 -0
  18. package/dist/components/ps-progress-bar.js +15 -0
  19. package/dist/components/ps-upload-modal.d.ts +10 -0
  20. package/dist/components/ps-upload-modal.js +19 -0
  21. package/dist/components/ps-upload-row.d.ts +11 -0
  22. package/dist/components/ps-upload-row.js +28 -0
  23. package/dist/components/viewers/ps-highlighted-text.d.ts +6 -0
  24. package/dist/components/viewers/ps-highlighted-text.js +8 -0
  25. package/dist/components/viewers/ps-image-viewer.d.ts +2 -0
  26. package/dist/components/viewers/ps-image-viewer.js +33 -0
  27. package/dist/components/viewers/ps-media-viewer.d.ts +2 -0
  28. package/dist/components/viewers/ps-media-viewer.js +8 -0
  29. package/dist/components/viewers/ps-pdf-page.d.ts +12 -0
  30. package/dist/components/viewers/ps-pdf-page.js +37 -0
  31. package/dist/components/viewers/ps-pdf-thumbnail.d.ts +11 -0
  32. package/dist/components/viewers/ps-pdf-thumbnail.js +28 -0
  33. package/dist/components/viewers/ps-pdf-viewer.d.ts +2 -0
  34. package/dist/components/viewers/ps-pdf-viewer.js +100 -0
  35. package/dist/components/viewers/ps-text-viewer.d.ts +2 -0
  36. package/dist/components/viewers/ps-text-viewer.js +42 -0
  37. package/dist/components/viewers/ps-unsupported-viewer.d.ts +2 -0
  38. package/dist/components/viewers/ps-unsupported-viewer.js +8 -0
  39. package/dist/constants/ps-file-kind-icons.d.ts +3 -0
  40. package/dist/constants/ps-file-kind-icons.js +14 -0
  41. package/dist/constants/ps-file-kind.d.ts +10 -0
  42. package/dist/constants/ps-file-kind.js +12 -0
  43. package/dist/constants/ps-file-list-labels.d.ts +6 -0
  44. package/dist/constants/ps-file-list-labels.js +9 -0
  45. package/dist/constants/ps-file-picker-labels.d.ts +7 -0
  46. package/dist/constants/ps-file-picker-labels.js +10 -0
  47. package/dist/constants/ps-file-type-config.d.ts +7 -0
  48. package/dist/constants/ps-file-type-config.js +30 -0
  49. package/dist/constants/ps-file-viewer-config.d.ts +9 -0
  50. package/dist/constants/ps-file-viewer-config.js +12 -0
  51. package/dist/constants/ps-file-viewer-kinds.d.ts +5 -0
  52. package/dist/constants/ps-file-viewer-kinds.js +9 -0
  53. package/dist/constants/ps-file-viewer-labels.d.ts +21 -0
  54. package/dist/constants/ps-file-viewer-labels.js +24 -0
  55. package/dist/constants/ps-upload-labels.d.ts +14 -0
  56. package/dist/constants/ps-upload-labels.js +17 -0
  57. package/dist/constants/ps-upload-messages.d.ts +4 -0
  58. package/dist/constants/ps-upload-messages.js +7 -0
  59. package/dist/constants/ps-upload-queue-config.d.ts +4 -0
  60. package/dist/constants/ps-upload-queue-config.js +7 -0
  61. package/dist/constants/ps-upload-status-tones.d.ts +2 -0
  62. package/dist/constants/ps-upload-status-tones.js +12 -0
  63. package/dist/constants/ps-upload-status.d.ts +9 -0
  64. package/dist/constants/ps-upload-status.js +11 -0
  65. package/dist/esm/components/ps-file-delete-confirm.js +4 -0
  66. package/dist/esm/components/ps-file-kind-icon.js +6 -0
  67. package/dist/esm/components/ps-file-list.js +23 -0
  68. package/dist/esm/components/ps-file-picker.js +44 -0
  69. package/dist/esm/components/ps-file-viewer-button.js +3 -0
  70. package/dist/esm/components/ps-file-viewer-content.js +24 -0
  71. package/dist/esm/components/ps-file-viewer.js +98 -0
  72. package/dist/esm/components/ps-progress-bar.js +11 -0
  73. package/dist/esm/components/ps-upload-modal.js +15 -0
  74. package/dist/esm/components/ps-upload-row.js +24 -0
  75. package/dist/esm/components/viewers/ps-highlighted-text.js +4 -0
  76. package/dist/esm/components/viewers/ps-image-viewer.js +29 -0
  77. package/dist/esm/components/viewers/ps-media-viewer.js +4 -0
  78. package/dist/esm/components/viewers/ps-pdf-page.js +33 -0
  79. package/dist/esm/components/viewers/ps-pdf-thumbnail.js +24 -0
  80. package/dist/esm/components/viewers/ps-pdf-viewer.js +96 -0
  81. package/dist/esm/components/viewers/ps-text-viewer.js +38 -0
  82. package/dist/esm/components/viewers/ps-unsupported-viewer.js +4 -0
  83. package/dist/esm/constants/ps-file-kind-icons.js +11 -0
  84. package/dist/esm/constants/ps-file-kind.js +9 -0
  85. package/dist/esm/constants/ps-file-list-labels.js +6 -0
  86. package/dist/esm/constants/ps-file-picker-labels.js +7 -0
  87. package/dist/esm/constants/ps-file-type-config.js +27 -0
  88. package/dist/esm/constants/ps-file-viewer-config.js +9 -0
  89. package/dist/esm/constants/ps-file-viewer-kinds.js +6 -0
  90. package/dist/esm/constants/ps-file-viewer-labels.js +21 -0
  91. package/dist/esm/constants/ps-upload-labels.js +14 -0
  92. package/dist/esm/constants/ps-upload-messages.js +4 -0
  93. package/dist/esm/constants/ps-upload-queue-config.js +4 -0
  94. package/dist/esm/constants/ps-upload-status-tones.js +9 -0
  95. package/dist/esm/constants/ps-upload-status.js +8 -0
  96. package/dist/esm/hooks/use-ps-active-match-scroll.js +8 -0
  97. package/dist/esm/hooks/use-ps-file-text.js +21 -0
  98. package/dist/esm/hooks/use-ps-in-view.js +17 -0
  99. package/dist/esm/hooks/use-ps-upload-queue.js +67 -0
  100. package/dist/esm/index.js +62 -0
  101. package/dist/esm/models/ps-file-rejection.js +1 -0
  102. package/dist/esm/models/ps-file-selection-rules.js +1 -0
  103. package/dist/esm/models/ps-file-selection.js +1 -0
  104. package/dist/esm/models/ps-file-text-state.js +1 -0
  105. package/dist/esm/models/ps-file-viewer-content-props.js +1 -0
  106. package/dist/esm/models/ps-label-set.js +1 -0
  107. package/dist/esm/models/ps-page-size.js +1 -0
  108. package/dist/esm/models/ps-pdf-match.js +1 -0
  109. package/dist/esm/models/ps-point.js +1 -0
  110. package/dist/esm/models/ps-text-match.js +1 -0
  111. package/dist/esm/models/ps-text-segment.js +1 -0
  112. package/dist/esm/models/ps-upload-handler-options.js +1 -0
  113. package/dist/esm/models/ps-upload-item.js +1 -0
  114. package/dist/esm/models/ps-upload-queue-options.js +1 -0
  115. package/dist/esm/models/ps-upload-queue-state.js +1 -0
  116. package/dist/esm/models/ps-upload-summary.js +1 -0
  117. package/dist/esm/models/ps-viewer-file.js +1 -0
  118. package/dist/esm/models/ps-xhr-upload-request.js +1 -0
  119. package/dist/esm/models/ps-xhr-upload-response.js +1 -0
  120. package/dist/esm/services/ps-csv-service.js +42 -0
  121. package/dist/esm/services/ps-file-selection-service.js +16 -0
  122. package/dist/esm/services/ps-file-size-service.js +14 -0
  123. package/dist/esm/services/ps-file-type-service.js +38 -0
  124. package/dist/esm/services/ps-pdf-service.js +59 -0
  125. package/dist/esm/services/ps-text-search-service.js +32 -0
  126. package/dist/esm/services/ps-upload-queue-service.js +37 -0
  127. package/dist/esm/services/ps-xhr-upload-service.js +52 -0
  128. package/dist/hooks/use-ps-active-match-scroll.d.ts +2 -0
  129. package/dist/hooks/use-ps-active-match-scroll.js +12 -0
  130. package/dist/hooks/use-ps-file-text.d.ts +2 -0
  131. package/dist/hooks/use-ps-file-text.js +25 -0
  132. package/dist/hooks/use-ps-in-view.d.ts +2 -0
  133. package/dist/hooks/use-ps-in-view.js +21 -0
  134. package/dist/hooks/use-ps-upload-queue.d.ts +3 -0
  135. package/dist/hooks/use-ps-upload-queue.js +71 -0
  136. package/dist/index.d.ts +62 -0
  137. package/dist/index.js +78 -0
  138. package/dist/models/ps-file-rejection.d.ts +4 -0
  139. package/dist/models/ps-file-rejection.js +2 -0
  140. package/dist/models/ps-file-selection-rules.d.ts +6 -0
  141. package/dist/models/ps-file-selection-rules.js +2 -0
  142. package/dist/models/ps-file-selection.d.ts +5 -0
  143. package/dist/models/ps-file-selection.js +2 -0
  144. package/dist/models/ps-file-text-state.d.ts +4 -0
  145. package/dist/models/ps-file-text-state.js +2 -0
  146. package/dist/models/ps-file-viewer-content-props.d.ts +13 -0
  147. package/dist/models/ps-file-viewer-content-props.js +2 -0
  148. package/dist/models/ps-label-set.d.ts +3 -0
  149. package/dist/models/ps-label-set.js +2 -0
  150. package/dist/models/ps-page-size.d.ts +4 -0
  151. package/dist/models/ps-page-size.js +2 -0
  152. package/dist/models/ps-pdf-match.d.ts +7 -0
  153. package/dist/models/ps-pdf-match.js +2 -0
  154. package/dist/models/ps-point.d.ts +4 -0
  155. package/dist/models/ps-point.js +2 -0
  156. package/dist/models/ps-text-match.d.ts +4 -0
  157. package/dist/models/ps-text-match.js +2 -0
  158. package/dist/models/ps-text-segment.d.ts +5 -0
  159. package/dist/models/ps-text-segment.js +2 -0
  160. package/dist/models/ps-upload-handler-options.d.ts +4 -0
  161. package/dist/models/ps-upload-handler-options.js +2 -0
  162. package/dist/models/ps-upload-item.d.ts +8 -0
  163. package/dist/models/ps-upload-item.js +2 -0
  164. package/dist/models/ps-upload-queue-options.d.ts +6 -0
  165. package/dist/models/ps-upload-queue-options.js +2 -0
  166. package/dist/models/ps-upload-queue-state.d.ts +10 -0
  167. package/dist/models/ps-upload-queue-state.js +2 -0
  168. package/dist/models/ps-upload-summary.d.ts +5 -0
  169. package/dist/models/ps-upload-summary.js +2 -0
  170. package/dist/models/ps-viewer-file.d.ts +9 -0
  171. package/dist/models/ps-viewer-file.js +2 -0
  172. package/dist/models/ps-xhr-upload-request.d.ts +8 -0
  173. package/dist/models/ps-xhr-upload-request.js +2 -0
  174. package/dist/models/ps-xhr-upload-response.d.ts +4 -0
  175. package/dist/models/ps-xhr-upload-response.js +2 -0
  176. package/dist/services/ps-csv-service.d.ts +3 -0
  177. package/dist/services/ps-csv-service.js +46 -0
  178. package/dist/services/ps-file-selection-service.d.ts +5 -0
  179. package/dist/services/ps-file-selection-service.js +20 -0
  180. package/dist/services/ps-file-size-service.d.ts +3 -0
  181. package/dist/services/ps-file-size-service.js +18 -0
  182. package/dist/services/ps-file-type-service.d.ts +6 -0
  183. package/dist/services/ps-file-type-service.js +42 -0
  184. package/dist/services/ps-pdf-service.d.ts +11 -0
  185. package/dist/services/ps-pdf-service.js +96 -0
  186. package/dist/services/ps-text-search-service.d.ts +6 -0
  187. package/dist/services/ps-text-search-service.js +36 -0
  188. package/dist/services/ps-upload-queue-service.d.ts +10 -0
  189. package/dist/services/ps-upload-queue-service.js +41 -0
  190. package/dist/services/ps-xhr-upload-service.d.ts +7 -0
  191. package/dist/services/ps-xhr-upload-service.js +56 -0
  192. package/package.json +85 -0
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePsUploadQueue = void 0;
4
+ const react_1 = require("react");
5
+ const ps_upload_queue_config_1 = require("../constants/ps-upload-queue-config");
6
+ const ps_upload_status_1 = require("../constants/ps-upload-status");
7
+ const ps_upload_queue_service_1 = require("../services/ps-upload-queue-service");
8
+ const usePsUploadQueue = ({ concurrency = ps_upload_queue_config_1.PsUploadQueueConfig.concurrency, onSettled, upload, }) => {
9
+ const [items, setItems] = (0, react_1.useState)([]);
10
+ const controllers = (0, react_1.useRef)(new Map());
11
+ const uploadRef = (0, react_1.useRef)(upload);
12
+ const onSettledRef = (0, react_1.useRef)(onSettled);
13
+ const wasBusy = (0, react_1.useRef)(false);
14
+ uploadRef.current = upload;
15
+ onSettledRef.current = onSettled;
16
+ const update = (0, react_1.useCallback)((id, patch) => setItems((current) => current.map((item) => (item.id === id ? { ...item, ...patch } : item))), []);
17
+ const start = (0, react_1.useCallback)((item) => {
18
+ const controller = new AbortController();
19
+ controllers.current.set(item.id, controller);
20
+ update(item.id, { error: null, progress: 0, status: ps_upload_status_1.PsUploadStatus.uploading });
21
+ uploadRef
22
+ .current(item.file, {
23
+ onProgress: (progress) => update(item.id, {
24
+ progress,
25
+ status: progress >= ps_upload_queue_config_1.PsUploadQueueConfig.progressDone
26
+ ? ps_upload_status_1.PsUploadStatus.processing
27
+ : ps_upload_status_1.PsUploadStatus.uploading,
28
+ }),
29
+ signal: controller.signal,
30
+ })
31
+ .then(() => update(item.id, {
32
+ progress: ps_upload_queue_config_1.PsUploadQueueConfig.progressDone,
33
+ status: ps_upload_status_1.PsUploadStatus.done,
34
+ }))
35
+ .catch((error) => update(item.id, controller.signal.aborted
36
+ ? { status: ps_upload_status_1.PsUploadStatus.cancelled }
37
+ : {
38
+ error: error instanceof Error ? error.message : null,
39
+ status: ps_upload_status_1.PsUploadStatus.failed,
40
+ }))
41
+ .finally(() => controllers.current.delete(item.id));
42
+ }, [update]);
43
+ (0, react_1.useEffect)(() => {
44
+ ps_upload_queue_service_1.PsUploadQueueService.next(items, concurrency)
45
+ .filter((item) => !controllers.current.has(item.id))
46
+ .forEach(start);
47
+ const isBusy = ps_upload_queue_service_1.PsUploadQueueService.isBusy(items);
48
+ if (wasBusy.current && !isBusy && onSettledRef.current)
49
+ onSettledRef.current();
50
+ wasBusy.current = isBusy;
51
+ }, [items, concurrency, start]);
52
+ (0, react_1.useEffect)(() => () => {
53
+ controllers.current.forEach((controller) => controller.abort());
54
+ }, []);
55
+ return {
56
+ add: (files) => setItems((current) => [...current, ...ps_upload_queue_service_1.PsUploadQueueService.itemsFor(files)]),
57
+ cancel: (id) => {
58
+ const controller = controllers.current.get(id);
59
+ if (controller)
60
+ controller.abort();
61
+ else
62
+ update(id, { status: ps_upload_status_1.PsUploadStatus.cancelled });
63
+ },
64
+ clear: () => setItems((current) => current.filter((item) => ps_upload_queue_service_1.PsUploadQueueService.isActive(item))),
65
+ isBusy: ps_upload_queue_service_1.PsUploadQueueService.isBusy(items),
66
+ items,
67
+ remove: (id) => setItems((current) => current.filter((item) => item.id !== id)),
68
+ retry: (id) => update(id, { error: null, progress: 0, status: ps_upload_status_1.PsUploadStatus.waiting }),
69
+ };
70
+ };
71
+ exports.usePsUploadQueue = usePsUploadQueue;
@@ -0,0 +1,62 @@
1
+ export * from './components/ps-file-delete-confirm';
2
+ export * from './components/ps-file-kind-icon';
3
+ export * from './components/ps-file-list';
4
+ export * from './components/ps-file-picker';
5
+ export * from './components/ps-file-viewer-button';
6
+ export * from './components/ps-file-viewer-content';
7
+ export * from './components/ps-file-viewer';
8
+ export * from './components/ps-progress-bar';
9
+ export * from './components/ps-upload-modal';
10
+ export * from './components/ps-upload-row';
11
+ export * from './components/viewers/ps-highlighted-text';
12
+ export * from './components/viewers/ps-image-viewer';
13
+ export * from './components/viewers/ps-media-viewer';
14
+ export * from './components/viewers/ps-pdf-page';
15
+ export * from './components/viewers/ps-pdf-thumbnail';
16
+ export * from './components/viewers/ps-pdf-viewer';
17
+ export * from './components/viewers/ps-text-viewer';
18
+ export * from './components/viewers/ps-unsupported-viewer';
19
+ export * from './constants/ps-file-kind-icons';
20
+ export * from './constants/ps-file-kind';
21
+ export * from './constants/ps-file-list-labels';
22
+ export * from './constants/ps-file-picker-labels';
23
+ export * from './constants/ps-file-type-config';
24
+ export * from './constants/ps-file-viewer-config';
25
+ export * from './constants/ps-file-viewer-kinds';
26
+ export * from './constants/ps-file-viewer-labels';
27
+ export * from './constants/ps-upload-labels';
28
+ export * from './constants/ps-upload-messages';
29
+ export * from './constants/ps-upload-queue-config';
30
+ export * from './constants/ps-upload-status-tones';
31
+ export * from './constants/ps-upload-status';
32
+ export * from './hooks/use-ps-active-match-scroll';
33
+ export * from './hooks/use-ps-file-text';
34
+ export * from './hooks/use-ps-in-view';
35
+ export * from './hooks/use-ps-upload-queue';
36
+ export * from './models/ps-file-rejection';
37
+ export * from './models/ps-file-selection-rules';
38
+ export * from './models/ps-file-selection';
39
+ export * from './models/ps-file-text-state';
40
+ export * from './models/ps-file-viewer-content-props';
41
+ export * from './models/ps-label-set';
42
+ export * from './models/ps-page-size';
43
+ export * from './models/ps-pdf-match';
44
+ export * from './models/ps-point';
45
+ export * from './models/ps-text-match';
46
+ export * from './models/ps-text-segment';
47
+ export * from './models/ps-upload-handler-options';
48
+ export * from './models/ps-upload-item';
49
+ export * from './models/ps-upload-queue-options';
50
+ export * from './models/ps-upload-queue-state';
51
+ export * from './models/ps-upload-summary';
52
+ export * from './models/ps-viewer-file';
53
+ export * from './models/ps-xhr-upload-request';
54
+ export * from './models/ps-xhr-upload-response';
55
+ export * from './services/ps-csv-service';
56
+ export * from './services/ps-file-selection-service';
57
+ export * from './services/ps-file-size-service';
58
+ export * from './services/ps-file-type-service';
59
+ export * from './services/ps-pdf-service';
60
+ export * from './services/ps-text-search-service';
61
+ export * from './services/ps-upload-queue-service';
62
+ export * from './services/ps-xhr-upload-service';
package/dist/index.js ADDED
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./components/ps-file-delete-confirm"), exports);
18
+ __exportStar(require("./components/ps-file-kind-icon"), exports);
19
+ __exportStar(require("./components/ps-file-list"), exports);
20
+ __exportStar(require("./components/ps-file-picker"), exports);
21
+ __exportStar(require("./components/ps-file-viewer-button"), exports);
22
+ __exportStar(require("./components/ps-file-viewer-content"), exports);
23
+ __exportStar(require("./components/ps-file-viewer"), exports);
24
+ __exportStar(require("./components/ps-progress-bar"), exports);
25
+ __exportStar(require("./components/ps-upload-modal"), exports);
26
+ __exportStar(require("./components/ps-upload-row"), exports);
27
+ __exportStar(require("./components/viewers/ps-highlighted-text"), exports);
28
+ __exportStar(require("./components/viewers/ps-image-viewer"), exports);
29
+ __exportStar(require("./components/viewers/ps-media-viewer"), exports);
30
+ __exportStar(require("./components/viewers/ps-pdf-page"), exports);
31
+ __exportStar(require("./components/viewers/ps-pdf-thumbnail"), exports);
32
+ __exportStar(require("./components/viewers/ps-pdf-viewer"), exports);
33
+ __exportStar(require("./components/viewers/ps-text-viewer"), exports);
34
+ __exportStar(require("./components/viewers/ps-unsupported-viewer"), exports);
35
+ __exportStar(require("./constants/ps-file-kind-icons"), exports);
36
+ __exportStar(require("./constants/ps-file-kind"), exports);
37
+ __exportStar(require("./constants/ps-file-list-labels"), exports);
38
+ __exportStar(require("./constants/ps-file-picker-labels"), exports);
39
+ __exportStar(require("./constants/ps-file-type-config"), exports);
40
+ __exportStar(require("./constants/ps-file-viewer-config"), exports);
41
+ __exportStar(require("./constants/ps-file-viewer-kinds"), exports);
42
+ __exportStar(require("./constants/ps-file-viewer-labels"), exports);
43
+ __exportStar(require("./constants/ps-upload-labels"), exports);
44
+ __exportStar(require("./constants/ps-upload-messages"), exports);
45
+ __exportStar(require("./constants/ps-upload-queue-config"), exports);
46
+ __exportStar(require("./constants/ps-upload-status-tones"), exports);
47
+ __exportStar(require("./constants/ps-upload-status"), exports);
48
+ __exportStar(require("./hooks/use-ps-active-match-scroll"), exports);
49
+ __exportStar(require("./hooks/use-ps-file-text"), exports);
50
+ __exportStar(require("./hooks/use-ps-in-view"), exports);
51
+ __exportStar(require("./hooks/use-ps-upload-queue"), exports);
52
+ __exportStar(require("./models/ps-file-rejection"), exports);
53
+ __exportStar(require("./models/ps-file-selection-rules"), exports);
54
+ __exportStar(require("./models/ps-file-selection"), exports);
55
+ __exportStar(require("./models/ps-file-text-state"), exports);
56
+ __exportStar(require("./models/ps-file-viewer-content-props"), exports);
57
+ __exportStar(require("./models/ps-label-set"), exports);
58
+ __exportStar(require("./models/ps-page-size"), exports);
59
+ __exportStar(require("./models/ps-pdf-match"), exports);
60
+ __exportStar(require("./models/ps-point"), exports);
61
+ __exportStar(require("./models/ps-text-match"), exports);
62
+ __exportStar(require("./models/ps-text-segment"), exports);
63
+ __exportStar(require("./models/ps-upload-handler-options"), exports);
64
+ __exportStar(require("./models/ps-upload-item"), exports);
65
+ __exportStar(require("./models/ps-upload-queue-options"), exports);
66
+ __exportStar(require("./models/ps-upload-queue-state"), exports);
67
+ __exportStar(require("./models/ps-upload-summary"), exports);
68
+ __exportStar(require("./models/ps-viewer-file"), exports);
69
+ __exportStar(require("./models/ps-xhr-upload-request"), exports);
70
+ __exportStar(require("./models/ps-xhr-upload-response"), exports);
71
+ __exportStar(require("./services/ps-csv-service"), exports);
72
+ __exportStar(require("./services/ps-file-selection-service"), exports);
73
+ __exportStar(require("./services/ps-file-size-service"), exports);
74
+ __exportStar(require("./services/ps-file-type-service"), exports);
75
+ __exportStar(require("./services/ps-pdf-service"), exports);
76
+ __exportStar(require("./services/ps-text-search-service"), exports);
77
+ __exportStar(require("./services/ps-upload-queue-service"), exports);
78
+ __exportStar(require("./services/ps-xhr-upload-service"), exports);
@@ -0,0 +1,4 @@
1
+ export interface PsFileRejection {
2
+ file: File;
3
+ message: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface PsFileSelectionRules {
2
+ accept: readonly string[];
3
+ invalidTypeMessage: string;
4
+ maxSizeBytes?: number;
5
+ tooLargeMessage: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { PsFileRejection } from './ps-file-rejection';
2
+ export interface PsFileSelection {
3
+ accepted: File[];
4
+ rejected: PsFileRejection[];
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsFileTextState {
2
+ hasFailed: boolean;
3
+ text: string | null;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ import type { PsFileViewerLabels } from '../constants/ps-file-viewer-labels';
2
+ import type { PsLabelSet } from './ps-label-set';
3
+ import type { PsViewerFile } from './ps-viewer-file';
4
+ export interface PsFileViewerContentProps {
5
+ activeMatch: number;
6
+ file: PsViewerFile;
7
+ labels: PsLabelSet<typeof PsFileViewerLabels>;
8
+ onMatchCount: (count: number) => void;
9
+ pdfWorkerSrc?: string;
10
+ query: string;
11
+ rotation: number;
12
+ zoom: number;
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export type PsLabelSet<T> = {
2
+ [K in keyof T]: string;
3
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsPageSize {
2
+ height: number;
3
+ width: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export interface PsPdfMatch {
2
+ height: number;
3
+ left: number;
4
+ pageNumber: number;
5
+ top: number;
6
+ width: number;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsPoint {
2
+ x: number;
3
+ y: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsTextMatch {
2
+ end: number;
3
+ start: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface PsTextSegment {
2
+ isMatch: boolean;
3
+ matchIndex: number | null;
4
+ text: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsUploadHandlerOptions {
2
+ onProgress: (progress: number) => void;
3
+ signal: AbortSignal;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import type { PsUploadStatus } from '../constants/ps-upload-status';
2
+ export interface PsUploadItem {
3
+ error: string | null;
4
+ file: File;
5
+ id: string;
6
+ progress: number;
7
+ status: PsUploadStatus;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { PsUploadHandlerOptions } from './ps-upload-handler-options';
2
+ export interface PsUploadQueueOptions {
3
+ concurrency?: number;
4
+ onSettled?: () => void;
5
+ upload: (file: File, options: PsUploadHandlerOptions) => Promise<void>;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import type { PsUploadItem } from './ps-upload-item';
2
+ export interface PsUploadQueueState {
3
+ add: (files: File[]) => void;
4
+ cancel: (id: string) => void;
5
+ clear: () => void;
6
+ isBusy: boolean;
7
+ items: PsUploadItem[];
8
+ remove: (id: string) => void;
9
+ retry: (id: string) => void;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface PsUploadSummary {
2
+ done: number;
3
+ failed: number;
4
+ total: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ export interface PsViewerFile {
2
+ contentType: string;
3
+ createdAt?: string;
4
+ downloadUrl?: string;
5
+ id: string;
6
+ name: string;
7
+ sizeBytes?: number;
8
+ url: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface PsXhrUploadRequest {
2
+ body: FormData;
3
+ headers?: Record<string, string>;
4
+ method?: string;
5
+ onProgress?: (progress: number) => void;
6
+ signal?: AbortSignal;
7
+ url: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsXhrUploadResponse {
2
+ body: unknown;
3
+ status: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export declare class PsCsvService {
2
+ static parse(text: string): string[][];
3
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsCsvService = void 0;
4
+ class PsCsvService {
5
+ static parse(text) {
6
+ const rows = [];
7
+ let row = [];
8
+ let cell = '';
9
+ let inQuotes = false;
10
+ for (let index = 0; index < text.length; index += 1) {
11
+ const char = text[index];
12
+ if (inQuotes) {
13
+ if (char === '"' && text[index + 1] === '"') {
14
+ cell += '"';
15
+ index += 1;
16
+ }
17
+ else if (char === '"')
18
+ inQuotes = false;
19
+ else
20
+ cell += char;
21
+ }
22
+ else if (char === '"')
23
+ inQuotes = true;
24
+ else if (char === ',') {
25
+ row.push(cell);
26
+ cell = '';
27
+ }
28
+ else if (char === '\n' || char === '\r') {
29
+ if (char === '\r' && text[index + 1] === '\n')
30
+ index += 1;
31
+ row.push(cell);
32
+ rows.push(row);
33
+ row = [];
34
+ cell = '';
35
+ }
36
+ else
37
+ cell += char;
38
+ }
39
+ if (cell.length > 0 || row.length > 0) {
40
+ row.push(cell);
41
+ rows.push(row);
42
+ }
43
+ return rows;
44
+ }
45
+ }
46
+ exports.PsCsvService = PsCsvService;
@@ -0,0 +1,5 @@
1
+ import type { PsFileSelection } from '../models/ps-file-selection';
2
+ import type { PsFileSelectionRules } from '../models/ps-file-selection-rules';
3
+ export declare class PsFileSelectionService {
4
+ static split(files: File[], rules: PsFileSelectionRules): PsFileSelection;
5
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsFileSelectionService = void 0;
4
+ const ps_file_type_service_1 = require("./ps-file-type-service");
5
+ class PsFileSelectionService {
6
+ static split(files, rules) {
7
+ const accepted = [];
8
+ const rejected = [];
9
+ files.forEach((file) => {
10
+ if (!ps_file_type_service_1.PsFileTypeService.isAccepted(file, rules.accept))
11
+ rejected.push({ file, message: `${file.name} ${rules.invalidTypeMessage}` });
12
+ else if (rules.maxSizeBytes !== undefined && file.size > rules.maxSizeBytes)
13
+ rejected.push({ file, message: `${file.name} ${rules.tooLargeMessage}` });
14
+ else
15
+ accepted.push(file);
16
+ });
17
+ return { accepted, rejected };
18
+ }
19
+ }
20
+ exports.PsFileSelectionService = PsFileSelectionService;
@@ -0,0 +1,3 @@
1
+ export declare class PsFileSizeService {
2
+ static format(bytes: number): string;
3
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsFileSizeService = void 0;
4
+ const ps_file_type_config_1 = require("../constants/ps-file-type-config");
5
+ class PsFileSizeService {
6
+ static format(bytes) {
7
+ if (bytes < 1024)
8
+ return `${bytes} ${ps_file_type_config_1.PsFileTypeConfig.sizeUnits[0]}`;
9
+ let value = bytes;
10
+ let unit = 0;
11
+ while (value >= 1024 && unit < ps_file_type_config_1.PsFileTypeConfig.sizeUnits.length - 1) {
12
+ value /= 1024;
13
+ unit += 1;
14
+ }
15
+ return `${value >= 10 ? Math.round(value) : Math.round(value * 10) / 10} ${ps_file_type_config_1.PsFileTypeConfig.sizeUnits[unit]}`;
16
+ }
17
+ }
18
+ exports.PsFileSizeService = PsFileSizeService;
@@ -0,0 +1,6 @@
1
+ import { PsFileKind } from '../constants/ps-file-kind';
2
+ export declare class PsFileTypeService {
3
+ static extension(name: string): string;
4
+ static kindOf(contentType: string, name: string): PsFileKind;
5
+ static isAccepted(file: File, accept: readonly string[]): boolean;
6
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsFileTypeService = void 0;
4
+ const ps_file_kind_1 = require("../constants/ps-file-kind");
5
+ const ps_file_type_config_1 = require("../constants/ps-file-type-config");
6
+ class PsFileTypeService {
7
+ static extension(name) {
8
+ const dot = name.lastIndexOf('.');
9
+ return dot <= 0 ? '' : name.slice(dot + 1).toLowerCase();
10
+ }
11
+ static kindOf(contentType, name) {
12
+ const type = contentType.toLowerCase();
13
+ if (type === 'application/pdf')
14
+ return ps_file_kind_1.PsFileKind.pdf;
15
+ if (ps_file_type_config_1.PsFileTypeConfig.csvTypes.includes(type))
16
+ return ps_file_kind_1.PsFileKind.csv;
17
+ if (type.startsWith('image/'))
18
+ return ps_file_kind_1.PsFileKind.image;
19
+ if (type.startsWith('video/'))
20
+ return ps_file_kind_1.PsFileKind.video;
21
+ if (type.startsWith('audio/'))
22
+ return ps_file_kind_1.PsFileKind.audio;
23
+ if (type.startsWith('text/') ||
24
+ ps_file_type_config_1.PsFileTypeConfig.textTypes.includes(type))
25
+ return ps_file_kind_1.PsFileKind.text;
26
+ const byExtension = ps_file_type_config_1.PsFileTypeConfig.extensionKinds[PsFileTypeService.extension(name)];
27
+ return byExtension === undefined ? ps_file_kind_1.PsFileKind.other : byExtension;
28
+ }
29
+ static isAccepted(file, accept) {
30
+ if (accept.length === 0)
31
+ return true;
32
+ return accept.some((entry) => {
33
+ const rule = entry.toLowerCase();
34
+ if (rule.startsWith('.'))
35
+ return file.name.toLowerCase().endsWith(rule);
36
+ if (rule.endsWith('/*'))
37
+ return file.type.toLowerCase().startsWith(rule.slice(0, -1));
38
+ return file.type.toLowerCase() === rule;
39
+ });
40
+ }
41
+ }
42
+ exports.PsFileTypeService = PsFileTypeService;
@@ -0,0 +1,11 @@
1
+ import type { PDFDocumentProxy, PDFPageProxy, RenderTask } from 'pdfjs-dist';
2
+ import type { PsPdfMatch } from '../models/ps-pdf-match';
3
+ type PdfLibrary = typeof import('pdfjs-dist');
4
+ export declare class PsPdfService {
5
+ private static library;
6
+ static load(workerSrc: string): Promise<PdfLibrary>;
7
+ static open(url: string, workerSrc: string): Promise<PDFDocumentProxy>;
8
+ static render(page: PDFPageProxy, canvas: HTMLCanvasElement, scale: number, rotation: number): RenderTask;
9
+ static search(document: PDFDocumentProxy, query: string, rotation: number): Promise<PsPdfMatch[]>;
10
+ }
11
+ export {};