@fiduswriter/image-manager 0.1.4 → 0.1.6

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 (65) hide show
  1. package/README.md +53 -3
  2. package/dist/copyright_dialog/index.d.ts +10 -13
  3. package/dist/copyright_dialog/index.d.ts.map +1 -1
  4. package/dist/copyright_dialog/index.js +32 -14
  5. package/dist/copyright_dialog/index.js.map +1 -1
  6. package/dist/copyright_dialog/templates.d.ts +16 -12
  7. package/dist/copyright_dialog/templates.d.ts.map +1 -1
  8. package/dist/copyright_dialog/templates.js.map +1 -1
  9. package/dist/database.d.ts +7 -6
  10. package/dist/database.d.ts.map +1 -1
  11. package/dist/database.js +17 -11
  12. package/dist/database.js.map +1 -1
  13. package/dist/edit_dialog/index.d.ts +22 -19
  14. package/dist/edit_dialog/index.d.ts.map +1 -1
  15. package/dist/edit_dialog/index.js +65 -33
  16. package/dist/edit_dialog/index.js.map +1 -1
  17. package/dist/edit_dialog/model.d.ts +2 -19
  18. package/dist/edit_dialog/model.d.ts.map +1 -1
  19. package/dist/edit_dialog/model.js +51 -31
  20. package/dist/edit_dialog/model.js.map +1 -1
  21. package/dist/edit_dialog/templates.d.ts +7 -4
  22. package/dist/edit_dialog/templates.d.ts.map +1 -1
  23. package/dist/edit_dialog/templates.js.map +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/overview/categories.d.ts +7 -5
  27. package/dist/overview/categories.d.ts.map +1 -1
  28. package/dist/overview/categories.js +18 -13
  29. package/dist/overview/categories.js.map +1 -1
  30. package/dist/overview/index.d.ts +31 -27
  31. package/dist/overview/index.d.ts.map +1 -1
  32. package/dist/overview/index.js +64 -33
  33. package/dist/overview/index.js.map +1 -1
  34. package/dist/overview/menu.d.ts +4 -47
  35. package/dist/overview/menu.d.ts.map +1 -1
  36. package/dist/overview/menu.js +13 -8
  37. package/dist/overview/menu.js.map +1 -1
  38. package/dist/overview/templates.d.ts +7 -3
  39. package/dist/overview/templates.d.ts.map +1 -1
  40. package/dist/overview/templates.js.map +1 -1
  41. package/dist/selection_dialog/index.d.ts +17 -15
  42. package/dist/selection_dialog/index.d.ts.map +1 -1
  43. package/dist/selection_dialog/index.js +18 -8
  44. package/dist/selection_dialog/index.js.map +1 -1
  45. package/dist/types.d.ts +118 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +2 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +94 -78
  50. package/src/copyright_dialog/{index.js → index.ts} +70 -38
  51. package/src/copyright_dialog/{templates.js → templates.ts} +19 -3
  52. package/src/database.ts +83 -0
  53. package/src/edit_dialog/{index.js → index.ts} +110 -45
  54. package/src/edit_dialog/{model.js → model.ts} +95 -46
  55. package/src/edit_dialog/{templates.js → templates.ts} +13 -2
  56. package/src/global.d.ts +37 -0
  57. package/src/overview/{categories.js → categories.ts} +34 -21
  58. package/src/overview/{index.js → index.ts} +157 -75
  59. package/src/overview/menu.ts +85 -0
  60. package/src/overview/{templates.js → templates.ts} +16 -2
  61. package/src/selection_dialog/{index.js → index.ts} +85 -49
  62. package/src/types.ts +133 -0
  63. package/src/database.js +0 -57
  64. package/src/overview/menu.js +0 -75
  65. /package/src/{index.js → index.ts} +0 -0
package/README.md CHANGED
@@ -1,5 +1,55 @@
1
- # @fiduswriter/image-manager
1
+ <p align="center">
2
+ <img src="logo.svg" alt="@fiduswriter/image-manager" width="100" height="100">
3
+ </p>
2
4
 
3
- Fidus Writer image/media manager overview, upload/edit dialog and selection dialog.
5
+ <h1 align="center">@fiduswriter/image-manager</h1>
4
6
 
5
- This package is a freestanding JavaScript library extracted from the main Fidus Writer Django application.
7
+ <p align="center">Image and media manager for Fidus Writer</p>
8
+
9
+ ---
10
+
11
+ ## What it does
12
+
13
+ Manages images and other media for Fidus Writer. Provides a client-side image
14
+ database, an overview table for browsing images, an edit dialog for cropping
15
+ and metadata, and a selection dialog for inserting images into documents.
16
+
17
+ ## Exports
18
+
19
+ | Export | Description |
20
+ | ---------------------- | ----------------------------------------------------------- |
21
+ | `ImageDB` | Client-side connector to the server's image database |
22
+ | `ImageOverview` | Overview component for browsing all images in the library |
23
+ | `ImageEditDialog` | Dialog for editing image properties, cropping, and metadata |
24
+ | `ImageSelectionDialog` | Dialog for selecting images to insert into documents |
25
+
26
+ ## Installation
27
+
28
+ ```bash
29
+ npm install @fiduswriter/image-manager
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ ```ts
35
+ import {
36
+ ImageDB,
37
+ ImageOverview,
38
+ ImageEditDialog,
39
+ ImageSelectionDialog,
40
+ } from "@fiduswriter/image-manager";
41
+ ```
42
+
43
+ ## Development
44
+
45
+ ```bash
46
+ npm install # Install dependencies
47
+ npm run build # Compile TypeScript to dist/
48
+ npm run typecheck # Check types without emitting
49
+ npm run lint # Lint with ESLint
50
+ npm run format:check # Check formatting with Prettier
51
+ ```
52
+
53
+ ## License
54
+
55
+ AGPL-3.0 — see [LICENSE](LICENSE) for details.
@@ -1,17 +1,14 @@
1
- export const LICENSE_URLS: string[][];
2
- export class CopyrightDialog {
3
- constructor(copyright: any);
4
- copyright: any;
5
- origCopyright: any;
6
- dialog: boolean;
1
+ import { Dialog, InputList } from "fwtoolkit";
2
+ import type { Copyright, License } from "../types.js";
3
+ export declare const LICENSE_URLS: [string, string][];
4
+ export declare class CopyrightDialog {
5
+ copyright: Copyright;
6
+ origCopyright: Copyright;
7
+ dialog: Dialog | false;
8
+ licensesList: InputList<License>;
9
+ constructor(copyright: Copyright);
7
10
  getCurrentValue(): void;
8
- init(): Promise<any>;
11
+ init(): Promise<Copyright | false>;
9
12
  bind(): void;
10
- licensesList: InputList<{
11
- url: string;
12
- title: string;
13
- start: boolean;
14
- }> | undefined;
15
13
  }
16
- import { InputList } from "fwtoolkit";
17
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/copyright_dialog/index.js"],"names":[],"mappings":"AASA,sCAQC;AAOD;IACI,4BAIC;IAHG,eAA0B;IAC1B,mBAA8B;IAC9B,gBAAmB;IAGvB,wBAuCC;IAED,qBAiCC;IAED,aAsEC;IArEG;;;;mBAoEE;CAET;0BAhLuD,WAAW"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/copyright_dialog/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAE,SAAS,EAAyB,MAAM,WAAW,CAAA;AAQnE,OAAO,KAAK,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,aAAa,CAAA;AAEnD,eAAO,MAAM,YAAY,EAQpB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;AAOvB,qBAAa,eAAe;IACxB,SAAS,EAAE,SAAS,CAAA;IAEpB,aAAa,EAAE,SAAS,CAAA;IAExB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAQ;IAE9B,YAAY,EAAG,SAAS,CAAC,OAAO,CAAC,CAAA;gBAErB,SAAS,EAAE,SAAS;IAMhC,eAAe,IAAI,IAAI;IAiDvB,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;IAoClC,IAAI,IAAI,IAAI;CAmFf"}
@@ -16,23 +16,31 @@ function getLicenseTitle(url) {
16
16
  return license ? license[0] : "";
17
17
  }
18
18
  export class CopyrightDialog {
19
+ copyright;
20
+ origCopyright;
21
+ dialog = false;
22
+ licensesList;
19
23
  constructor(copyright) {
20
24
  this.copyright = copyright;
21
25
  this.origCopyright = copyright;
22
26
  this.dialog = false;
23
27
  }
24
28
  getCurrentValue() {
29
+ if (!this.dialog) {
30
+ return;
31
+ }
32
+ const dialogEl = this.dialog.dialogEl;
25
33
  this.copyright = {};
26
- const holder = this.dialog.dialogEl.querySelector(".holder").value;
34
+ const holder = dialogEl.querySelector(".holder").value;
27
35
  this.copyright.holder = holder.length ? holder : false;
28
- const year = this.dialog.dialogEl.querySelector(".year").value;
36
+ const year = dialogEl.querySelector(".year").value;
29
37
  this.copyright.year = year.length
30
38
  ? Math.max(0, Math.min(Number.parseInt(year) || 0, 2100))
31
39
  : false;
32
- this.copyright.freeToRead = this.dialog.dialogEl.querySelector(".free-to-read:checked")
40
+ this.copyright.freeToRead = dialogEl.querySelector(".free-to-read:checked")
33
41
  ? true
34
42
  : false;
35
- const licenseStartDates = Array.from(this.dialog.dialogEl.querySelectorAll(".license-start")).map(el => el.value);
43
+ const licenseStartDates = Array.from(dialogEl.querySelectorAll(".license-start")).map(el => el.value);
36
44
  this.copyright.licenses = this.licensesList.values
37
45
  .map((license, index) => {
38
46
  if (!license.url.length) {
@@ -53,7 +61,7 @@ export class CopyrightDialog {
53
61
  }
54
62
  return returnValue;
55
63
  })
56
- .filter(license => license);
64
+ .filter((license) => license !== false);
57
65
  }
58
66
  init() {
59
67
  return new Promise(resolve => {
@@ -62,7 +70,7 @@ export class CopyrightDialog {
62
70
  text: gettext("Change"),
63
71
  classes: "fw-dark",
64
72
  click: () => {
65
- this.dialog.close();
73
+ dialog.close();
66
74
  this.getCurrentValue();
67
75
  if (deepEqual(this.copyright, this.origCopyright)) {
68
76
  // No change.
@@ -74,7 +82,7 @@ export class CopyrightDialog {
74
82
  buttons.push({
75
83
  type: "cancel"
76
84
  });
77
- this.dialog = new Dialog({
85
+ const dialog = new Dialog({
78
86
  width: 940,
79
87
  height: 300,
80
88
  id: "configure-copyright",
@@ -82,16 +90,21 @@ export class CopyrightDialog {
82
90
  body: copyrightTemplate(this.copyright),
83
91
  buttons
84
92
  });
85
- this.dialog.open();
93
+ this.dialog = dialog;
94
+ dialog.open();
86
95
  this.bind();
87
96
  });
88
97
  }
89
98
  bind() {
99
+ if (!this.dialog) {
100
+ return;
101
+ }
102
+ const dialogEl = this.dialog.dialogEl;
90
103
  this.licensesList = new InputList({
91
- dom: this.dialog.dialogEl.querySelector(".copyright-licenses-list"),
104
+ dom: dialogEl.querySelector(".copyright-licenses-list"),
92
105
  initialValues: this.copyright.licenses || [],
93
106
  emptyValue: { url: "", title: "", start: false },
94
- renderItem: license => ({
107
+ renderItem: (license) => ({
95
108
  html: `<div class="copyright-license-switch"></div>
96
109
  <div class="field-part field-part-small">
97
110
  <input type="text" class="license-start" value="${license.start ? escapeText(license.start) : ""}" placeholder="${gettext("Start date")}">
@@ -99,7 +112,8 @@ export class CopyrightDialog {
99
112
  bind: el => {
100
113
  const licenseContainer = el.closest("tr");
101
114
  const startInput = licenseContainer.querySelector(".license-start");
102
- if (license.start) {
115
+ if (license.start && startInput) {
116
+ ;
103
117
  startInput.value = license.start;
104
118
  }
105
119
  const mode = license.url === "" ||
@@ -120,6 +134,7 @@ export class CopyrightDialog {
120
134
  // Restore focus to the license input after switching.
121
135
  const focusable = el.querySelector(".fw-type-switch-input-inner input, .fw-type-switch-input-inner select");
122
136
  if (focusable) {
137
+ ;
123
138
  focusable.focus();
124
139
  }
125
140
  }
@@ -138,9 +153,12 @@ export class CopyrightDialog {
138
153
  url = licenseInput.querySelector("input.license").value;
139
154
  title = licenseInput.querySelector("input.license-title").value;
140
155
  }
141
- const start = el.closest("tr").querySelector(".license-start").value ||
142
- false;
143
- return { url, title, start };
156
+ const start = el.closest("tr").querySelector(".license-start");
157
+ return {
158
+ url,
159
+ title,
160
+ start: start ? start.value || false : false
161
+ };
144
162
  }
145
163
  });
146
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/copyright_dialog/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/copyright_dialog/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,17 @@
1
- export function licenseSelectTemplate({ url }: {
2
- url: any;
3
- }): string;
4
- export function licenseInputTemplate({ url, title }: {
5
- url: any;
6
- title: any;
7
- }): string;
8
- export function copyrightTemplate({ holder, year, freeToRead }: {
9
- holder: any;
10
- year: any;
11
- freeToRead: any;
12
- }): string;
1
+ interface LicenseSelectTemplateData {
2
+ url: string;
3
+ }
4
+ interface LicenseInputTemplateData {
5
+ url: string;
6
+ title: string;
7
+ }
8
+ interface CopyrightTemplateData {
9
+ holder?: string | false;
10
+ year?: number | false;
11
+ freeToRead: boolean;
12
+ }
13
+ export declare const licenseSelectTemplate: ({ url }: LicenseSelectTemplateData) => string;
14
+ export declare const licenseInputTemplate: ({ url, title }: LicenseInputTemplateData) => string;
15
+ export declare const copyrightTemplate: ({ holder, year, freeToRead }: CopyrightTemplateData) => string;
16
+ export {};
13
17
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/copyright_dialog/templates.js"],"names":[],"mappings":"AAGO;;WAQkD;AAElD;;;WAMI;AAEJ;;;;WAkCM"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/copyright_dialog/templates.ts"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IAC/B,GAAG,EAAE,MAAM,CAAA;CACd;AAED,UAAU,wBAAwB;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,qBAAqB;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAO,yBAAyB,WAQb,CAAA;AAEzD,eAAO,MAAM,oBAAoB,GAAI,gBAAc,wBAAwB,WAMhE,CAAA;AAEX,eAAO,MAAM,iBAAiB,GAAI,8BAA4B,qBAAqB,WAkCtE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/copyright_dialog/templates.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAA;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AAEvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,CAC3C;;UAEM,YAAY,CAAC,GAAG,CACd,UAAU,CAAC,EAAE,CACT,kBAAkB,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAC9G,CAAC,IAAI,CAAC,EAAE,CAAC;;yDAEuC,CAAA;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAE,EAAE,CACjD;oDACgD,UAAU,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,CAAC;;;0DAGjD,UAAU,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,eAAe,CAAC;WAC1G,CAAA;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAC,EAAE,EAAE,CAC5D;;;;sBAIkB,OAAO,CAAC,kBAAkB,CAAC;+CACF,OAAO,CAAC,+EAA+E,CAAC;;sFAEjD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;;;;sBAIhG,OAAO,CAAC,gBAAgB,CAAC;+CACA,OAAO,CAAC,6EAA6E,CAAC;;qGAEhC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;;;sBAI/F,OAAO,CAAC,6BAA6B,CAAC;+CACb,OAAO,CAAC,gEAAgE,CAAC;;wFAEhC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;;sBAI9F,OAAO,CAAC,YAAY,CAAC;+CACI,OAAO,CAAC,qKAAqK,CAAC;;;;;;;aAOhN,CAAA"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/copyright_dialog/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AAiBvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAC,GAAG,EAA4B,EAAE,EAAE,CACtE;;UAEM,YAAY,CAAC,GAAG,CACd,UAAU,CAAC,EAAE,CACT,kBAAkB,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAC9G,CAAC,IAAI,CAAC,EAAE,CAAC;;yDAEuC,CAAA;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAA2B,EAAE,EAAE,CAC3E;oDACgD,UAAU,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,CAAC;;;0DAGjD,UAAU,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,eAAe,CAAC;WAC1G,CAAA;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAwB,EAAE,EAAE,CACnF;;;;sBAIkB,OAAO,CAAC,kBAAkB,CAAC;+CACF,OAAO,CAAC,+EAA+E,CAAC;;sFAEjD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;;;;sBAIhG,OAAO,CAAC,gBAAgB,CAAC;+CACA,OAAO,CAAC,6EAA6E,CAAC;;qGAEhC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;;;sBAI/F,OAAO,CAAC,6BAA6B,CAAC;+CACb,OAAO,CAAC,gEAAgE,CAAC;;wFAEhC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;;sBAI9F,OAAO,CAAC,YAAY,CAAC;+CACI,OAAO,CAAC,qKAAqK,CAAC;;;;;;;aAOhN,CAAA"}
@@ -1,9 +1,10 @@
1
- export class ImageDB {
2
- constructor(app: any);
3
- app: any;
4
- db: {};
5
- cats: any[];
1
+ import type { Image, ImageCategory, ImageManagerApp, SaveImageRequest } from "./types.js";
2
+ export declare class ImageDB {
3
+ app: ImageManagerApp;
4
+ db: Record<number, Image>;
5
+ cats: ImageCategory[];
6
+ constructor(app: ImageManagerApp);
6
7
  getDB(): Promise<void>;
7
- saveImage(imageData: any): Promise<any>;
8
+ saveImage(imageData: SaveImageRequest): Promise<number>;
8
9
  }
9
10
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.js"],"names":[],"mappings":"AAIA;IACI,sBAIC;IAHG,SAAc;IACd,OAAY;IACZ,YAAc;IAGlB,uBAcC;IAED,wCA4BC;CACJ"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,KAAK,EACL,aAAa,EACb,eAAe,EAEf,gBAAgB,EAEnB,MAAM,YAAY,CAAA;AAInB,qBAAa,OAAO;IAChB,GAAG,EAAE,eAAe,CAAA;IAEpB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAEzB,IAAI,EAAE,aAAa,EAAE,CAAA;gBAET,GAAG,EAAE,eAAe;IAMhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,SAAS,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CAuC1D"}
package/dist/database.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import { activateWait, addAlert, deactivateWait, gettext, postJson } from "fwtoolkit";
2
2
  /* A class that holds information about images uploaded by the user. */
3
3
  export class ImageDB {
4
+ app;
5
+ db;
6
+ cats;
4
7
  constructor(app) {
5
8
  this.app = app;
6
9
  this.db = {};
@@ -11,8 +14,9 @@ export class ImageDB {
11
14
  this.cats = [];
12
15
  activateWait();
13
16
  return postJson("/api/usermedia/images/").then(({ json }) => {
14
- this.cats = json.imageCategories;
15
- json.images.forEach(image => {
17
+ const response = json;
18
+ this.cats = response.imageCategories;
19
+ response.images.forEach(image => {
16
20
  this.db[image.id] = image;
17
21
  });
18
22
  deactivateWait();
@@ -24,24 +28,26 @@ export class ImageDB {
24
28
  const { image, ...jsonData } = imageData;
25
29
  return postJson("/api/usermedia/save/", jsonData, image ? { image } : {})
26
30
  .then(({ json }) => {
31
+ const response = json;
27
32
  deactivateWait();
28
- if (Object.keys(json.errormsg).length) {
29
- return Promise.reject(new Error(json.errormsg.error));
33
+ if (Object.keys(response.errormsg).length) {
34
+ return Promise.reject(new Error(response.errormsg.error));
30
35
  }
31
36
  else {
32
- this.db[json.values.id] = json.values;
33
- return json.values.id;
37
+ this.db[response.values.id] = response.values;
38
+ return response.values.id;
34
39
  }
35
40
  })
36
41
  .catch(error => {
37
- if (error.status === 413) {
38
- addAlert("error", `${gettext("Image is larger than the maximum permitted size")}${this.app.settings?.MEDIA_MAX_SIZE ? `: ${Number.parseInt(this.app.settings.MEDIA_MAX_SIZE / 1000000)}MB` : "."}`);
42
+ const networkError = error;
43
+ if (networkError.status === 413) {
44
+ addAlert("error", `${gettext("Image is larger than the maximum permitted size")}${this.app.settings?.MEDIA_MAX_SIZE ? `: ${Number.parseInt(String(this.app.settings.MEDIA_MAX_SIZE / 1000000))}MB` : "."}`);
39
45
  }
40
- else if (error.message) {
41
- addAlert("error", gettext(error.message));
46
+ else if (networkError.message) {
47
+ addAlert("error", gettext(networkError.message));
42
48
  }
43
49
  else {
44
- addAlert("error", gettext(error.statusText));
50
+ addAlert("error", gettext(networkError.statusText || ""));
45
51
  }
46
52
  deactivateWait();
47
53
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAA;AAEnF,uEAAuE;AAEvE,MAAM,OAAO,OAAO;IAChB,YAAY,GAAG;QACX,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QAEd,YAAY,EAAE,CAAA;QAEd,OAAO,QAAQ,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAA;YAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;YAC7B,CAAC,CAAC,CAAA;YACF,cAAc,EAAE,CAAA;YAChB,OAAM;QACV,CAAC,CAAC,CAAA;IACN,CAAC;IAED,SAAS,CAAC,SAAS;QACf,YAAY,EAAE,CAAA;QACd,MAAM,EAAC,KAAK,EAAE,GAAG,QAAQ,EAAC,GAAG,SAAS,CAAA;QAEtC,OAAO,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;YACb,cAAc,EAAE,CAAA;YAChB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACzD,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;YACzB,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,QAAQ,CACJ,OAAO,EACP,GAAG,OAAO,CAAC,iDAAiD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CACnL,CAAA;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,cAAc,EAAE,CAAA;YAChB,MAAM,KAAK,CAAA;QACf,CAAC,CAAC,CAAA;IACV,CAAC;CACJ"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,27 @@
1
- export class ImageEditDialog {
2
- constructor(imageDB: any, imageId: boolean | undefined, page: any);
3
- imageDB: any;
4
- page: any;
5
- imageId: boolean;
6
- dialog: boolean;
7
- copyright: any;
8
- menu: any;
9
- init(): Promise<any>;
1
+ import { CheckableList, Dialog } from "fwtoolkit";
2
+ import type { ContentMenuInit } from "fwtoolkit/content_menu";
3
+ import type { ImageDB } from "../database.js";
4
+ import type { Copyright, ImageManagerPage } from "../types.js";
5
+ export declare class ImageEditDialog {
6
+ imageDB: ImageDB;
7
+ page: ImageManagerPage;
8
+ imageId: number | false;
9
+ dialog: Dialog | false;
10
+ copyright: Copyright;
11
+ menu: ContentMenuInit;
10
12
  catsList: CheckableList | {
11
- value: never[];
12
- } | undefined;
13
+ value: (string | number)[];
14
+ };
15
+ mediaPreviewerDiv?: HTMLElement;
16
+ mediaPreviewer?: HTMLElement;
17
+ rotation: number;
18
+ cropped: boolean;
19
+ mediaInput?: File;
20
+ constructor(imageDB: ImageDB, imageId: number | false | undefined, page: ImageManagerPage);
21
+ init(): Promise<number | void>;
13
22
  bindMediaUploadEvents(): void;
14
- mediaPreviewerDiv: Element | null | undefined;
15
- rotation: number | undefined;
16
- cropped: boolean | undefined;
17
- mediaInput: any;
18
- mediaPreviewer: Element | null | undefined;
19
- displayCreateImageError(errors: any): void;
20
- saveImage(): Promise<any>;
23
+ displayCreateImageError(errors: Record<string, string>): void;
24
+ saveImage(): Promise<number | void>;
21
25
  showOffline(): void;
22
26
  }
23
- import { CheckableList } from "fwtoolkit";
24
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edit_dialog/index.js"],"names":[],"mappings":"AAIA;IACI,mEAcC;IAbG,aAAsB;IACtB,UAAgB;IAChB,iBAAsB;IACtB,gBAAmB;IACnB,eAOO;IACP,UAA8D;IAIlE,qBAsEC;IAjCO;;kBAQE;IA4BV,8BA6BC;IAtBG,8CAEC;IACD,6BAAiB;IACjB,6BAAoB;IAOhB,gBAA6C;IAIzC,2CACgD;IAQ5D,2CAaC;IAED,0BAsEC;IAED,oBAOC;CACJ;8BA7NmE,WAAW"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edit_dialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAe,MAAM,EAAoB,MAAM,WAAW,CAAA;AAE/E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAK3D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EACR,SAAS,EAGT,gBAAgB,EAEnB,MAAM,aAAa,CAAA;AAEpB,qBAAa,eAAe;IACxB,OAAO,EAAE,OAAO,CAAA;IAEhB,IAAI,EAAE,gBAAgB,CAAA;IAEtB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAA;IAEvB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAQ;IAE9B,SAAS,EAAE,SAAS,CAAA;IAEpB,IAAI,EAAE,eAAe,CAAA;IAErB,QAAQ,EAAE,aAAa,GAAG;QAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAC,CAAc;IAEpE,iBAAiB,CAAC,EAAE,WAAW,CAAA;IAE/B,cAAc,CAAC,EAAE,WAAW,CAAA;IAE5B,QAAQ,SAAI;IAEZ,OAAO,UAAQ;IAEf,UAAU,CAAC,EAAE,IAAI,CAAA;gBAEL,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,YAAQ,EAAE,IAAI,EAAE,gBAAgB;IAkBrF,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+E9B,qBAAqB,IAAI,IAAI;IAwC7B,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAgBvD,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoFzC,WAAW,IAAI,IAAI;CAQtB"}
@@ -3,11 +3,22 @@ import { E2EEEncryptor } from "fwtoolkit/e2ee/encryptor";
3
3
  import { imageEditModel } from "./model.js";
4
4
  import { imageEditTemplate } from "./templates.js";
5
5
  export class ImageEditDialog {
6
+ imageDB;
7
+ page;
8
+ imageId;
9
+ dialog = false;
10
+ copyright;
11
+ menu;
12
+ catsList = { value: [] };
13
+ mediaPreviewerDiv;
14
+ mediaPreviewer;
15
+ rotation = 0;
16
+ cropped = false;
17
+ mediaInput;
6
18
  constructor(imageDB, imageId = false, page) {
7
19
  this.imageDB = imageDB;
8
20
  this.page = page;
9
21
  this.imageId = imageId;
10
- this.dialog = false;
11
22
  this.copyright = this.imageId
12
23
  ? this.imageDB.db[this.imageId].copyright
13
24
  : {
@@ -16,7 +27,9 @@ export class ImageEditDialog {
16
27
  freeToRead: true,
17
28
  licenses: []
18
29
  };
19
- this.menu = this.page.menu?.imageEditModel || imageEditModel();
30
+ this.menu =
31
+ this.page.menu
32
+ ?.imageEditModel || imageEditModel();
20
33
  }
21
34
  //open a dialog for uploading an image
22
35
  init() {
@@ -25,7 +38,8 @@ export class ImageEditDialog {
25
38
  return Promise.resolve();
26
39
  }
27
40
  const returnPromise = new Promise(resolve => {
28
- this.dialog = new Dialog({
41
+ let dialog;
42
+ dialog = new Dialog({
29
43
  title: this.imageId
30
44
  ? gettext("Update Image Information")
31
45
  : gettext("Upload Image"),
@@ -46,24 +60,28 @@ export class ImageEditDialog {
46
60
  {
47
61
  type: "cancel",
48
62
  classes: "fw-orange",
49
- click: () => this.dialog.close()
63
+ click: () => dialog.close()
50
64
  }
51
65
  ]
52
66
  });
53
- this.dialog.open();
67
+ this.dialog = dialog;
68
+ dialog.open();
54
69
  });
55
- const image = this.imageId ? this.imageDB.db[this.imageId] : false;
70
+ const image = this.imageId
71
+ ? this.imageDB.db[this.imageId]
72
+ : false;
56
73
  const catsEl = document.getElementById("image-edit-categories");
57
74
  if (catsEl) {
58
- this.catsList = new CheckableList({
75
+ const checkableOptions = {
59
76
  dom: catsEl,
60
- options: this.imageDB.cats.map(cat => ({
77
+ options: this.imageDB.cats.map((cat) => ({
61
78
  id: cat.id,
62
79
  label: cat.category_title
63
80
  })),
64
81
  initialValue: image ? image.cats : [],
65
82
  multiple: true
66
- });
83
+ };
84
+ this.catsList = new CheckableList(checkableOptions);
67
85
  }
68
86
  else {
69
87
  this.catsList = { value: [] };
@@ -71,39 +89,47 @@ export class ImageEditDialog {
71
89
  if (!this.imageId) {
72
90
  this.bindMediaUploadEvents();
73
91
  }
74
- document
75
- .querySelector(".figure-edit-menu")
76
- .addEventListener("click", event => {
77
- event.preventDefault();
78
- event.stopImmediatePropagation();
79
- const contentMenu = new ContentMenu({
80
- menu: this.menu,
81
- width: 220,
82
- page: this,
83
- menuPos: { X: event.pageX - 50, Y: event.pageY + 50 }
92
+ const figureEditMenu = document.querySelector(".figure-edit-menu");
93
+ if (figureEditMenu) {
94
+ figureEditMenu.addEventListener("click", event => {
95
+ event.preventDefault();
96
+ event.stopImmediatePropagation();
97
+ const contentMenu = new ContentMenu({
98
+ menu: this.menu,
99
+ width: 220,
100
+ page: this,
101
+ menuPos: { X: event.pageX - 50, Y: event.pageY + 50 }
102
+ });
103
+ contentMenu.open();
84
104
  });
85
- contentMenu.open();
86
- });
105
+ }
87
106
  return returnPromise;
88
107
  }
89
108
  //add image upload events
90
109
  bindMediaUploadEvents() {
91
110
  const selectButton = document.querySelector("#editimage .fw-media-select-button"), mediaInputSelector = document.querySelector("#editimage .fw-media-file-input");
92
- this.mediaPreviewerDiv = document.querySelector("#editimage .figure-preview > div");
111
+ this.mediaPreviewerDiv = document.querySelector("#editimage .figure-preview > div") || undefined;
93
112
  this.rotation = 0;
94
113
  this.cropped = false;
114
+ if (!selectButton || !mediaInputSelector || !this.mediaPreviewerDiv) {
115
+ return;
116
+ }
95
117
  selectButton.addEventListener("click", () => {
96
118
  mediaInputSelector.click();
97
119
  });
120
+ const dialog = this.dialog;
121
+ if (!dialog) {
122
+ return;
123
+ }
98
124
  mediaInputSelector.addEventListener("change", () => {
99
125
  this.mediaInput = mediaInputSelector.files[0];
100
126
  const fr = new window.FileReader();
101
127
  fr.onload = () => {
102
128
  this.mediaPreviewerDiv.innerHTML = `<div class="img" style="background-image: url(${fr.result});" />`;
103
129
  this.mediaPreviewer =
104
- this.mediaPreviewerDiv.querySelector(".img");
130
+ this.mediaPreviewerDiv.querySelector(".img") || undefined;
105
131
  this.mediaPreviewerDiv.classList.remove("crop-mode");
106
- this.dialog.centerDialog();
132
+ dialog.centerDialog();
107
133
  };
108
134
  fr.readAsDataURL(this.mediaInput);
109
135
  });
@@ -117,27 +143,30 @@ export class ImageEditDialog {
117
143
  .insertAdjacentHTML("afterbegin", eMsg);
118
144
  }
119
145
  else {
120
- document
121
- .getElementById(`id_${eKey}`)
122
- .insertAdjacentHTML("afterend", eMsg);
146
+ const fieldEl = document.getElementById(`id_${eKey}`);
147
+ if (fieldEl) {
148
+ fieldEl.insertAdjacentHTML("afterend", eMsg);
149
+ }
123
150
  }
124
151
  });
125
152
  }
126
153
  async saveImage() {
154
+ const titleInput = document.querySelector("#editimage .fw-media-title");
127
155
  const imageData = {
128
- title: document.querySelector("#editimage .fw-media-title").value,
156
+ title: titleInput ? titleInput.value : "",
129
157
  copyright: this.copyright,
130
158
  cats: this.catsList.value
131
159
  };
132
160
  if (this.imageId) {
133
161
  imageData.id = this.imageId;
134
162
  }
135
- else if (!this.rotation && !this.cropped) {
163
+ else if (!this.rotation && !this.cropped && this.mediaInput) {
136
164
  imageData.image = this.mediaInput;
137
165
  }
138
- else {
139
- const mediaPreviewerStyle = this.mediaPreviewer.currentStyle ||
140
- window.getComputedStyle(this.mediaPreviewer, false);
166
+ else if (this.mediaPreviewer && this.mediaInput) {
167
+ const mediaPreviewer = this.mediaPreviewer;
168
+ const mediaPreviewerStyle = mediaPreviewer.currentStyle ||
169
+ window.getComputedStyle(mediaPreviewer, false);
141
170
  const base64data = mediaPreviewerStyle.backgroundImage
142
171
  .slice(4, -1)
143
172
  .replace(/"/g, "");
@@ -164,8 +193,11 @@ export class ImageEditDialog {
164
193
  .querySelectorAll("#editimage .fw-warning")
165
194
  .forEach(el => el.parentElement.removeChild(el));
166
195
  return new Promise(resolve => {
196
+ const dialog = this.dialog;
167
197
  this.imageDB.saveImage(imageData).then(imageId => {
168
- this.dialog.close();
198
+ if (dialog) {
199
+ dialog.close();
200
+ }
169
201
  addAlert("success", gettext("The image has been updated."));
170
202
  this.imageId = imageId;
171
203
  resolve(imageId);