@d-i-t-a/reader 2.4.9 → 2.5.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 (111) hide show
  1. package/README.md +66 -59
  2. package/dist/esm/index.js +64489 -40503
  3. package/dist/esm/index.js.map +4 -4
  4. package/dist/images/altText_add.svg +3 -0
  5. package/dist/images/altText_disclaimer.svg +3 -0
  6. package/dist/images/altText_done.svg +3 -0
  7. package/dist/images/altText_spinner.svg +30 -0
  8. package/dist/images/altText_warning.svg +3 -0
  9. package/dist/images/annotation-check.svg +11 -0
  10. package/dist/images/annotation-comment.svg +16 -0
  11. package/dist/images/annotation-help.svg +26 -0
  12. package/dist/images/annotation-insert.svg +10 -0
  13. package/dist/images/annotation-key.svg +11 -0
  14. package/dist/images/annotation-newparagraph.svg +11 -0
  15. package/dist/images/annotation-noicon.svg +7 -0
  16. package/dist/images/annotation-note.svg +42 -0
  17. package/dist/images/annotation-paperclip.svg +6 -0
  18. package/dist/images/annotation-paragraph.svg +16 -0
  19. package/dist/images/annotation-pushpin.svg +7 -0
  20. package/dist/images/checkmark.svg +5 -0
  21. package/dist/images/comment-actionsButton.svg +3 -0
  22. package/dist/images/comment-closeButton.svg +3 -0
  23. package/dist/images/comment-editButton.svg +8 -0
  24. package/dist/images/comment-popup-editButton.svg +5 -0
  25. package/dist/images/cursor-editorFreeHighlight.svg +6 -0
  26. package/dist/images/cursor-editorFreeText.svg +3 -0
  27. package/dist/images/cursor-editorInk.svg +4 -0
  28. package/dist/images/cursor-editorTextHighlight.svg +8 -0
  29. package/dist/images/editor-toolbar-delete.svg +5 -0
  30. package/dist/images/editor-toolbar-edit.svg +3 -0
  31. package/dist/images/findbarButton-next.svg +3 -0
  32. package/dist/images/findbarButton-previous.svg +3 -0
  33. package/dist/images/gv-toolbarButton-download.svg +3 -0
  34. package/dist/images/loading-icon.gif +0 -0
  35. package/dist/images/loading.svg +1 -0
  36. package/dist/images/messageBar_closingButton.svg +3 -0
  37. package/dist/images/messageBar_info.svg +3 -0
  38. package/dist/images/messageBar_warning.svg +3 -0
  39. package/dist/images/pages_closeButton.svg +3 -0
  40. package/dist/images/pages_selected.svg +7 -0
  41. package/dist/images/pages_viewArrow.svg +3 -0
  42. package/dist/images/pages_viewButton.svg +3 -0
  43. package/dist/images/secondaryToolbarButton-documentProperties.svg +3 -0
  44. package/dist/images/secondaryToolbarButton-firstPage.svg +3 -0
  45. package/dist/images/secondaryToolbarButton-handTool.svg +3 -0
  46. package/dist/images/secondaryToolbarButton-lastPage.svg +3 -0
  47. package/dist/images/secondaryToolbarButton-rotateCcw.svg +3 -0
  48. package/dist/images/secondaryToolbarButton-rotateCw.svg +3 -0
  49. package/dist/images/secondaryToolbarButton-scrollHorizontal.svg +3 -0
  50. package/dist/images/secondaryToolbarButton-scrollPage.svg +3 -0
  51. package/dist/images/secondaryToolbarButton-scrollVertical.svg +3 -0
  52. package/dist/images/secondaryToolbarButton-scrollWrapped.svg +3 -0
  53. package/dist/images/secondaryToolbarButton-selectTool.svg +3 -0
  54. package/dist/images/secondaryToolbarButton-spreadEven.svg +3 -0
  55. package/dist/images/secondaryToolbarButton-spreadNone.svg +3 -0
  56. package/dist/images/secondaryToolbarButton-spreadOdd.svg +3 -0
  57. package/dist/images/toolbarButton-bookmark.svg +3 -0
  58. package/dist/images/toolbarButton-currentOutlineItem.svg +3 -0
  59. package/dist/images/toolbarButton-download.svg +4 -0
  60. package/dist/images/toolbarButton-editorFreeText.svg +5 -0
  61. package/dist/images/toolbarButton-editorHighlight.svg +6 -0
  62. package/dist/images/toolbarButton-editorInk.svg +4 -0
  63. package/dist/images/toolbarButton-editorSignature.svg +6 -0
  64. package/dist/images/toolbarButton-editorStamp.svg +8 -0
  65. package/dist/images/toolbarButton-menuArrow.svg +3 -0
  66. package/dist/images/toolbarButton-openFile.svg +3 -0
  67. package/dist/images/toolbarButton-pageDown.svg +3 -0
  68. package/dist/images/toolbarButton-pageUp.svg +3 -0
  69. package/dist/images/toolbarButton-presentationMode.svg +3 -0
  70. package/dist/images/toolbarButton-print.svg +3 -0
  71. package/dist/images/toolbarButton-search.svg +3 -0
  72. package/dist/images/toolbarButton-secondaryToolbarToggle.svg +3 -0
  73. package/dist/images/toolbarButton-viewAttachments.svg +3 -0
  74. package/dist/images/toolbarButton-viewLayers.svg +3 -0
  75. package/dist/images/toolbarButton-viewOutline.svg +3 -0
  76. package/dist/images/toolbarButton-viewThumbnail.svg +3 -0
  77. package/dist/images/toolbarButton-viewsManagerToggle.svg +3 -0
  78. package/dist/images/toolbarButton-zoomIn.svg +3 -0
  79. package/dist/images/toolbarButton-zoomOut.svg +3 -0
  80. package/dist/images/treeitem-collapsed.svg +1 -0
  81. package/dist/images/treeitem-expanded.svg +1 -0
  82. package/dist/injectables/click/click.js +637 -153
  83. package/dist/injectables/click/click.js.map +4 -4
  84. package/dist/pdf.worker.min.mjs +28 -0
  85. package/dist/pdf_viewer.css +7129 -0
  86. package/dist/reader.css +1 -1
  87. package/dist/reader.css.map +1 -1
  88. package/dist/reader.js +572 -59
  89. package/dist/reader.js.map +4 -4
  90. package/dist/types/index.d.ts +5 -1
  91. package/dist/types/model/user-settings/ReadiumCSS.d.ts +14 -0
  92. package/dist/types/model/user-settings/UserProperties.d.ts +1 -1
  93. package/dist/types/model/user-settings/UserSettings.d.ts +26 -2
  94. package/dist/types/modules/AnnotationModule.d.ts +2 -2
  95. package/dist/types/modules/BookmarkModule.d.ts +2 -2
  96. package/dist/types/modules/ReaderModule.d.ts +6 -0
  97. package/dist/types/modules/citation/CitationModule.d.ts +21 -5
  98. package/dist/types/modules/highlight/TextHighlighter.d.ts +2 -0
  99. package/dist/types/modules/mediaoverlays/MediaOverlayModule.d.ts +4 -0
  100. package/dist/types/modules/protection/ContentProtectionModule.d.ts +1 -2
  101. package/dist/types/navigator/IFrameNavigator.d.ts +37 -16
  102. package/dist/types/navigator/Navigator.d.ts +25 -22
  103. package/dist/types/navigator/PDFNavigator.d.ts +140 -17
  104. package/dist/types/reader.d.ts +23 -7
  105. package/dist/types/store/Annotator.d.ts +26 -22
  106. package/dist/types/store/LocalAnnotator.d.ts +5 -4
  107. package/dist/types/store/LocalStorageStore.d.ts +4 -4
  108. package/dist/types/utils/EventHandler.d.ts +1 -3
  109. package/dist/types/views/BookView.d.ts +1 -0
  110. package/dist/types/views/ReflowableBookView.d.ts +7 -0
  111. package/package.json +49 -58
@@ -34,7 +34,7 @@ export default class D2Reader {
34
34
  private readonly citationModule?;
35
35
  private readonly consumptionModule?;
36
36
  private constructor();
37
- addEventListener(): void;
37
+ addEventListener(event: string, handler: (...args: any[]) => void): void;
38
38
  /**
39
39
  * The async builder.
40
40
  */
@@ -75,6 +75,16 @@ export default class D2Reader {
75
75
  deleteAnnotation: (highlight: Annotation) => Promise<any>;
76
76
  /** Add annotation */
77
77
  addAnnotation: (highlight: Annotation) => Promise<any>;
78
+ /**
79
+ * Update annotation
80
+ *
81
+ * This should be used only when the add/delete of the annotation note
82
+ * is not directly handled in the `addAnnotation`/`addCommentToAnnotation`
83
+ * callback defined in the configuration of the D2Reader.load() method
84
+ * */
85
+ updateAnnotation: (highlight: Annotation) => Promise<any>;
86
+ /** Change highlighter color to a specific HEX string */
87
+ changeHighlighterColor: (color: string) => void;
78
88
  /** Hide Annotation Layer */
79
89
  hideAnnotationLayer: () => void | undefined;
80
90
  /** Show Annotation Layer */
@@ -107,7 +117,7 @@ export default class D2Reader {
107
117
  get bookmarks(): any;
108
118
  /** Current Annotations */
109
119
  get annotations(): any;
110
- get publicationLayout(): any;
120
+ get publicationLayout(): "fixed" | "reflowable";
111
121
  /** History */
112
122
  get history(): Locator[] | undefined;
113
123
  /** Current index of history */
@@ -129,10 +139,10 @@ export default class D2Reader {
129
139
  /**
130
140
  * Resources
131
141
  */
132
- get currentResource(): any;
142
+ get currentResource(): number | undefined;
133
143
  get mostRecentNavigatedTocItem(): string | false;
134
- get totalResources(): any;
135
- get publicationLanguage(): any;
144
+ get totalResources(): number;
145
+ get publicationLanguage(): string[];
136
146
  /**
137
147
  * Settings
138
148
  */
@@ -148,6 +158,12 @@ export default class D2Reader {
148
158
  letterSpacing: number;
149
159
  pageMargins: number;
150
160
  lineHeight: number;
161
+ bodyHyphens: boolean;
162
+ paraSpacing: number;
163
+ paraIndent: number;
164
+ typeScale: number;
165
+ backgroundColor: string;
166
+ textColor: string;
151
167
  };
152
168
  resetUserSettings: () => Promise<void>;
153
169
  applyUserSettings: (userSettings: Partial<UserSettings>) => Promise<void>;
@@ -186,10 +202,10 @@ export default class D2Reader {
186
202
  * Navigation
187
203
  * @TODO : These should return promises that complete when they are done.
188
204
  */
189
- get currentLocator(): any;
205
+ get currentLocator(): Locator;
190
206
  get positions(): any;
191
207
  goTo: (locator: Locator) => Promise<void>;
192
- goToPosition: (value: number) => Promise<any>;
208
+ goToPosition: (value: number) => Promise<void>;
193
209
  goToPage: (page: number) => Promise<void>;
194
210
  fitToPage: () => void;
195
211
  fitToWidth: () => void;
@@ -1,27 +1,31 @@
1
- import { ReadingPosition } from "../model/Locator";
1
+ import { Annotation, Bookmark, ReadingPosition } from "../model/Locator";
2
2
  import { IHighlight } from "../modules/highlight/common/highlight";
3
+ import { ISelectionInfo } from "../modules/highlight/common/selection";
3
4
  interface Annotator {
4
- initLastReadingPosition(position: ReadingPosition): any;
5
- getLastReadingPosition(): any;
6
- saveLastReadingPosition(position: any): any;
7
- initBookmarks(list: any): any;
8
- saveBookmark(bookmark: any): any;
9
- deleteBookmark(bookmark: any): any;
10
- getBookmarks(href?: string): any;
11
- locatorExists(locator: any, type: AnnotationType): any;
12
- initAnnotations(list: any): any;
13
- saveAnnotation(annotation: any): any;
14
- deleteAnnotation(id: any): any;
15
- deleteSelectedAnnotation(annotation: any): any;
16
- getAnnotations(): any;
17
- getAnnotationsByChapter(chapter: string): any;
18
- getAnnotation(annotation: IHighlight): any;
19
- getAnnotationByID(id: string): any;
20
- getAnnotationPosition(id: any, iframeWin: any): any;
21
- getAnnotationElement(id: any, iframeWin: any): any;
22
- saveTemporarySelectionInfo(selectionInfo: any): any;
23
- getTemporarySelectionInfo(doc: any): any;
24
- deleteTemporarySelectionInfo(): any;
5
+ initLastReadingPosition(position: ReadingPosition): void;
6
+ getLastReadingPosition(): ReadingPosition | null;
7
+ saveLastReadingPosition(position: ReadingPosition | string): void;
8
+ initBookmarks(list: Bookmark[] | string): Bookmark[];
9
+ saveBookmark(bookmark: Bookmark): Bookmark;
10
+ deleteBookmark(bookmark: Bookmark): Bookmark;
11
+ getBookmarks(href?: string): Bookmark[];
12
+ locatorExists(locator: Bookmark, type: AnnotationType): Bookmark | null;
13
+ initAnnotations(list: Annotation[] | string): Annotation[];
14
+ saveAnnotation(annotation: Annotation): Annotation;
15
+ deleteAnnotation(id: string): string;
16
+ deleteSelectedAnnotation(annotation: Annotation): Annotation;
17
+ getAnnotations(): Annotation[];
18
+ getAnnotationsByChapter(chapter: string): Annotation[];
19
+ getAnnotation(annotation: IHighlight): Annotation | null;
20
+ getAnnotationByID(id: string): Annotation | null;
21
+ /** Returns the pixel top offset of the annotation highlight element, or null if not found. */
22
+ getAnnotationPosition(id: string, iframeWin: Window): number | null;
23
+ /** Returns the highlight DOM element for an annotation, or null if not found. */
24
+ getAnnotationElement(id: string, iframeWin: Window): HTMLElement | null;
25
+ saveTemporarySelectionInfo(selectionInfo: ISelectionInfo): void;
26
+ /** Returns the reconstituted selection info with a live Range, or null. */
27
+ getTemporarySelectionInfo(doc: Document | null): ISelectionInfo | null;
28
+ deleteTemporarySelectionInfo(): void;
25
29
  }
26
30
  export declare enum AnnotationType {
27
31
  Bookmark = 0,
@@ -2,6 +2,7 @@ import Annotator, { AnnotationType } from "./Annotator";
2
2
  import Store from "./Store";
3
3
  import { ReadingPosition } from "../model/Locator";
4
4
  import { IHighlight } from "../modules/highlight/common/highlight";
5
+ import { ISelectionInfo } from "../modules/highlight/common/selection";
5
6
  export interface LocalAnnotatorConfig {
6
7
  store: Store;
7
8
  }
@@ -22,16 +23,16 @@ export default class LocalAnnotator implements Annotator {
22
23
  deleteBookmark(bookmark: any): any;
23
24
  getBookmarks(href?: string): any;
24
25
  initAnnotations(list: any): any;
25
- saveTemporarySelectionInfo(selectionInfo: any): void;
26
- getTemporarySelectionInfo(doc: any): any;
26
+ saveTemporarySelectionInfo(selectionInfo: ISelectionInfo): void;
27
+ getTemporarySelectionInfo(doc: Document | null): ISelectionInfo | null;
27
28
  deleteTemporarySelectionInfo(): void;
28
29
  saveAnnotation(annotation: any): any;
29
30
  deleteAnnotation(id: any): any;
30
31
  deleteSelectedAnnotation(annotation: any): any;
31
32
  getAnnotations(): any;
32
33
  getAnnotationsByChapter(chapter: string): any;
33
- getAnnotationPosition(id: any, iframeWin: any): any;
34
- getAnnotationElement(id: any, iframeWin: any): any;
34
+ getAnnotationPosition(id: string, iframeWin: Window): number | null;
35
+ getAnnotationElement(id: string, iframeWin: Window): HTMLElement | null;
35
36
  getAnnotation(highlight: IHighlight): any;
36
37
  getAnnotationByID(id: string): any;
37
38
  }
@@ -1,9 +1,9 @@
1
1
  import Store from "./Store";
2
2
  export interface LocalStorageStoreConfig {
3
- /** String to prepend to keys in localStorage. If the same prefix is shared
4
- across LocalStorageStores on the same domain, they will have the same
5
- value for each key. */
6
- prefix: string;
3
+ /** String (or URL, which is coerced via .toString()) to prepend to keys in
4
+ * localStorage. If the same prefix is shared across LocalStorageStores on
5
+ * the same domain, they will have the same value for each key. */
6
+ prefix: string | URL;
7
7
  useLocalStorage: boolean;
8
8
  useStorageType: string | undefined;
9
9
  }
@@ -19,8 +19,6 @@ export default class EventHandler {
19
19
  */
20
20
  private isReadingOrderInternal;
21
21
  private isResourceInternal;
22
- clicks: number;
23
- clickTimer: any;
24
- dblClickTimeSpan: number;
22
+ private clickTimeout;
25
23
  private handleLinks;
26
24
  }
@@ -31,5 +31,6 @@ interface BookView {
31
31
  goToNextPage?(): void;
32
32
  getCurrentPage(): number;
33
33
  getPageCount(): number;
34
+ padOddColumns?(): void;
34
35
  }
35
36
  export default BookView;
@@ -51,4 +51,11 @@ export default class ReflowableBookView implements BookView {
51
51
  private setLeftColumnsWidth;
52
52
  get scrollingElement(): Element;
53
53
  get scrollWidth(): number;
54
+ /**
55
+ * In multi-column paginated mode, if the content produces an odd number
56
+ * of CSS columns the last page will only show one column and navigation
57
+ * may skip it. This injects an invisible spacer to force an even column
58
+ * count so every page is full.
59
+ */
60
+ padOddColumns(): boolean;
54
61
  }
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@d-i-t-a/reader",
3
- "version": "2.4.9",
3
+ "version": "2.5.0",
4
4
  "description": "A viewer application for EPUB files.",
5
5
  "repository": "https://github.com/d-i-t-a/R2D2BC",
6
6
  "license": "Apache-2.0",
7
7
  "main": "dist/esm/index.js",
8
8
  "typings": "dist/types/index.d.ts",
9
+ "targets": {
10
+ "main": false
11
+ },
9
12
  "engines": {
10
- "node": ">=16"
13
+ "node": ">=20"
11
14
  },
12
15
  "publishConfig": {
13
16
  "registry": "https://registry.npmjs.org/"
@@ -21,30 +24,35 @@
21
24
  "sass:release": "sass --style=compressed src/styles/sass/:dist",
22
25
  "examples": "npx ts-node examples/server.ts",
23
26
  "lint": "eslint '*/**/*.{js,ts,tsx}' --fix",
24
- "example:react": "parcel examples/react/index.html --dist-dir parcel-dist"
27
+ "example:clean": "rm -rf parcel-dist .parcel-cache",
28
+ "example:react": "npm run example:clean && parcel examples/react/index.html --dist-dir parcel-dist",
29
+ "example:vue": "npm run example:clean && parcel examples/vue/index.html --dist-dir parcel-dist --no-hmr",
30
+ "example:angular": "npm run example:clean && parcel examples/angular/index.html --dist-dir parcel-dist",
31
+ "example:nextjs": "npm run example:clean && parcel examples/nextjs/index.html --dist-dir parcel-dist",
32
+ "example:remix": "npm run example:clean && parcel examples/remix/index.html --dist-dir parcel-dist",
33
+ "example:pdf": "npm run build && npx ts-node examples/pdf/serve.ts",
34
+ "example:vanilla": "npm run build && npx ts-node examples/vanilla/serve.ts",
35
+ "format": "prettier --write src/",
36
+ "format:check": "prettier --check src/",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest"
25
39
  },
26
40
  "dependencies": {
27
- "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
28
- "@types/pdfjs-dist": "^2.7.4",
29
- "@types/sass": "^1.43.1",
30
- "browserslist-useragent": "^4.0.0",
41
+ "browserslist-useragent-regexp": "^4.1.0",
31
42
  "cssesc": "^3.0.0",
32
- "detect-browser": "^5.2.0",
43
+ "debounce": "^2.0.0",
33
44
  "devtools-detector": "^2.0.14",
34
45
  "eventemitter3": "^5.0.1",
35
46
  "jscrypto": "^1.0.3",
36
- "lodash.clonedeep": "^4.5.0",
47
+ "lodash": "^4.17.21",
37
48
  "loglevel": "^1.8.0",
38
- "mark.js": "^8.11.1",
39
- "pdfjs-dist": "2.14.305",
40
- "promise-polyfill": "^8.2.0",
41
- "r2-shared-js": "^1.0.51",
49
+ "pdfjs-dist": "^5.5.207",
50
+ "r2-shared-js": "^1.0.82",
42
51
  "recursive-readdir": "^2.2.2",
43
52
  "sanitize-html": "^2.3.3",
44
- "sass": "^1.54.4",
45
- "sentence-splitter": "^5.0.0",
53
+ "ta-json-x": "^2.5.3",
46
54
  "util": "^0.12.4",
47
- "whatwg-fetch": "^3.6.2"
55
+ "uuid": "^11.0.0"
48
56
  },
49
57
  "browserslist": {
50
58
  "production": [
@@ -59,39 +67,30 @@
59
67
  ]
60
68
  },
61
69
  "devDependencies": {
70
+ "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
62
71
  "@parcel/transformer-sass": "^2.7.0",
63
72
  "@parcel/transformer-typescript-tsc": "^2.7.0",
64
- "@types/chai": "^4.2.15",
65
- "@types/copy": "^0.3.1",
73
+ "@parcel/transformer-vue": "^2.16.4",
66
74
  "@types/cssesc": "^3.0.0",
67
75
  "@types/debounce": "^3.0.0",
68
- "@types/express": "^4.17.12",
69
- "@types/jquery": "^3.5.5",
70
- "@types/mark.js": "^8.11.5",
71
- "@types/mocha": "^10.0.1",
72
- "@types/pako": "^2.0.0",
73
- "@types/parse5": "^7.0.0",
74
- "@types/promise-polyfill": "^6.0.5",
76
+ "@types/express": "^5.0.6",
77
+ "@types/glob": "^8.1.0",
78
+ "@types/lodash": "^4.17.0",
75
79
  "@types/react": "^18.2.31",
76
80
  "@types/react-dom": "^18.2.14",
77
81
  "@types/rimraf": "^4.0.5",
78
- "@types/sanitize-html": "^2.9.0",
79
- "@types/uuid": "^9.0.4",
80
- "@typescript-eslint/eslint-plugin": "^7.0.1",
81
- "@typescript-eslint/parser": "^7.0.1",
82
+ "@types/sanitize-html": "^2.13.0",
83
+ "@types/sass": "^1.43.1",
84
+ "@types/uuid": "^10.0.0",
85
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
86
+ "@typescript-eslint/parser": "^8.0.1",
82
87
  "ansi-regex": ">=5.0.1",
83
88
  "babel-eslint": "^10.1.0",
84
89
  "braces": ">=3.0.2",
85
- "browserslist-useragent-regexp": "^4.1.0",
86
90
  "buffer": "^6.0.3",
87
- "chai": "^5.0.3",
88
91
  "chalk": "^4.1.2",
89
- "chokidar": "^3.5.2",
90
- "copy": "^0.3.2",
91
- "debounce": "^2.0.0",
92
- "dita-streamer-js": "^1.1.3",
93
- "ecstatic": "^4.1.4",
94
- "esbuild": "^0.20.0",
92
+ "chokidar": "^4.0.1",
93
+ "esbuild": "^0.27.2",
95
94
  "eslint": "^8.52.0",
96
95
  "eslint-config-prettier": "^9.0.0",
97
96
  "eslint-config-react-app": "^7.0.1",
@@ -100,41 +99,33 @@
100
99
  "eslint-plugin-jsx-a11y": "^6.7.1",
101
100
  "eslint-plugin-prettier": "^5.0.1",
102
101
  "eslint-plugin-react": "^7.33.2",
103
- "eslint-plugin-react-hooks": "^4.6.0",
104
- "express": "^4.17.1",
102
+ "eslint-plugin-react-hooks": "^5.0.0",
103
+ "express": "^5.2.1",
104
+ "glob": "^13.0.6",
105
105
  "json-schema": ">=0.4.0",
106
- "minimist": "^1.2.6",
107
- "mocha": "^10.2.0",
108
- "moment": "^2.29.3",
109
- "npm-force-resolutions": "0.0.10",
110
106
  "parcel": "^2.7.0",
111
107
  "parcel-config-precache-manifest": "^0.0.4",
112
- "parcel-plugin-static-files-copy": "^2.6.0",
113
108
  "parcel-reporter-static-files-copy": "^1.4.0",
114
- "path-parse": "^1.0.7",
115
- "prettier": "^3.0.3",
109
+ "prettier": "^3.3.3",
116
110
  "process": "^0.11.10",
117
- "rangy": "^1.3.0",
111
+ "r2-streamer-js": "^1.0.51",
118
112
  "react": "^18.2.0",
119
- "react-app-polyfill": "^3.0.0",
120
113
  "react-dom": "^18.2.0",
121
- "regenerator-runtime": "^0.14.0",
122
- "rimraf": "^5.0.5",
123
- "sinon": "^17.0.0",
124
- "ta-json-x": "^2.5.3",
114
+ "rimraf": "^6.0.1",
115
+ "sass": "^1.54.4",
125
116
  "tar": ">=6.1.9",
126
- "ts-loader": "^9.4.4",
127
117
  "ts-node": "^10.9.1",
128
- "typedoc": "^0.25.1",
129
- "typedoc-plugin-rename-defaults": "^0.7.0",
130
- "typescript": "5.3.3",
131
- "urijs": "^1.19.11"
118
+ "typedoc": "^0.28.15",
119
+ "typedoc-plugin-rename-defaults": "^0.7.3",
120
+ "typescript": "5.9.3",
121
+ "vitest": "^4.0.18",
122
+ "vue": "^3.5.30"
132
123
  },
133
124
  "files": [
134
125
  "dist"
135
126
  ],
136
127
  "resolutions": {
137
- "braces": "3.0.2"
128
+ "braces": "3.0.3"
138
129
  },
139
130
  "prettier": {
140
131
  "printWidth": 80,