@fiduswriter/image-manager 0.1.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 (63) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +5 -0
  3. package/dist/copyright_dialog/index.d.ts +17 -0
  4. package/dist/copyright_dialog/index.d.ts.map +1 -0
  5. package/dist/copyright_dialog/index.js +148 -0
  6. package/dist/copyright_dialog/index.js.map +1 -0
  7. package/dist/copyright_dialog/templates.d.ts +13 -0
  8. package/dist/copyright_dialog/templates.d.ts.map +1 -0
  9. package/dist/copyright_dialog/templates.js +48 -0
  10. package/dist/copyright_dialog/templates.js.map +1 -0
  11. package/dist/database.d.ts +9 -0
  12. package/dist/database.d.ts.map +1 -0
  13. package/dist/database.js +51 -0
  14. package/dist/database.js.map +1 -0
  15. package/dist/edit_dialog/index.d.ts +24 -0
  16. package/dist/edit_dialog/index.d.ts.map +1 -0
  17. package/dist/edit_dialog/index.js +186 -0
  18. package/dist/edit_dialog/index.js.map +1 -0
  19. package/dist/edit_dialog/model.d.ts +20 -0
  20. package/dist/edit_dialog/model.d.ts.map +1 -0
  21. package/dist/edit_dialog/model.js +153 -0
  22. package/dist/edit_dialog/model.js.map +1 -0
  23. package/dist/edit_dialog/templates.d.ts +5 -0
  24. package/dist/edit_dialog/templates.d.ts.map +1 -0
  25. package/dist/edit_dialog/templates.js +33 -0
  26. package/dist/edit_dialog/templates.js.map +1 -0
  27. package/dist/index.d.ts +5 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +5 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/overview/categories.d.ts +8 -0
  32. package/dist/overview/categories.d.ts.map +1 -0
  33. package/dist/overview/categories.js +94 -0
  34. package/dist/overview/categories.js.map +1 -0
  35. package/dist/overview/index.d.ts +39 -0
  36. package/dist/overview/index.d.ts.map +1 -0
  37. package/dist/overview/index.js +358 -0
  38. package/dist/overview/index.js.map +1 -0
  39. package/dist/overview/menu.d.ts +48 -0
  40. package/dist/overview/menu.d.ts.map +1 -0
  41. package/dist/overview/menu.js +67 -0
  42. package/dist/overview/menu.js.map +1 -0
  43. package/dist/overview/templates.d.ts +4 -0
  44. package/dist/overview/templates.d.ts.map +1 -0
  45. package/dist/overview/templates.js +24 -0
  46. package/dist/overview/templates.js.map +1 -0
  47. package/dist/selection_dialog/index.d.ts +19 -0
  48. package/dist/selection_dialog/index.d.ts.map +1 -0
  49. package/dist/selection_dialog/index.js +149 -0
  50. package/dist/selection_dialog/index.js.map +1 -0
  51. package/package.json +53 -0
  52. package/src/copyright_dialog/index.js +179 -0
  53. package/src/copyright_dialog/templates.js +56 -0
  54. package/src/database.js +57 -0
  55. package/src/edit_dialog/index.js +222 -0
  56. package/src/edit_dialog/model.js +184 -0
  57. package/src/edit_dialog/templates.js +41 -0
  58. package/src/index.js +4 -0
  59. package/src/overview/categories.js +115 -0
  60. package/src/overview/index.js +435 -0
  61. package/src/overview/menu.js +75 -0
  62. package/src/overview/templates.js +30 -0
  63. package/src/selection_dialog/index.js +176 -0
@@ -0,0 +1,358 @@
1
+ import { baseBodyTemplate } from "@fiduswriter/common/common";
2
+ import { FeedbackTab } from "@fiduswriter/common/feedback";
3
+ import { SiteMenu } from "@fiduswriter/common/menu";
4
+ import { Dialog, OverviewDataTable, OverviewMenuView, activateWait, addAlert, deactivateWait, ensureCSS, escapeText, findTarget, gettext, isActivationEvent, localizeDate, post, setDocTitle, staticUrl, whenReady } from "fwtoolkit";
5
+ import { ImageOverviewCategories } from "./categories";
6
+ import { bulkMenuModel, menuModel } from "./menu";
7
+ /** Helper functions for user added images/SVGs.*/
8
+ export class ImageOverview {
9
+ constructor({ app, user, plugins = [] }) {
10
+ this.app = app;
11
+ this.user = user;
12
+ this.plugins = plugins;
13
+ this.mod = {};
14
+ this.lastSort = { column: 0, dir: "asc" };
15
+ }
16
+ init() {
17
+ ensureCSS([
18
+ staticUrl("css/dialog_usermedia.css"),
19
+ staticUrl("css/dot_menu.css")
20
+ ]);
21
+ return whenReady().then(() => {
22
+ this.render();
23
+ new ImageOverviewCategories(this);
24
+ const smenu = new SiteMenu(this.app, "images");
25
+ smenu.init();
26
+ this.menu = new OverviewMenuView(this, menuModel);
27
+ this.menu.init();
28
+ this.activatePlugins();
29
+ this.bindEvents();
30
+ this.mod.categories.setImageCategoryList(this.app.imageDB.cats);
31
+ this.initTable(Object.keys(this.app.imageDB.db));
32
+ // Reset scroll position to top to prevent Safari from auto-scrolling
33
+ // to the focused table element, which would hide the header/menu
34
+ window.scrollTo(0, 0);
35
+ });
36
+ }
37
+ render() {
38
+ this.dom = document.createElement("body");
39
+ this.dom.innerHTML = baseBodyTemplate({
40
+ contents: "",
41
+ user: this.user,
42
+ hasOverview: true,
43
+ app: this.app
44
+ });
45
+ document.body = this.dom;
46
+ ensureCSS([staticUrl("css/cropper.min.css")]);
47
+ setDocTitle(gettext("Media Manager"), this.app);
48
+ const feedbackTab = new FeedbackTab();
49
+ feedbackTab.init();
50
+ }
51
+ activatePlugins() {
52
+ if (this.pluginsActivated) {
53
+ // Plugins have been activated already
54
+ return;
55
+ }
56
+ this.pluginsActivated = true;
57
+ // Add plugins.
58
+ this.plugins = {};
59
+ return Promise.all(this.plugins.map(([app, plugin]) => {
60
+ if (!this.app.settings.APPS.includes(app)) {
61
+ return Promise.resolve();
62
+ }
63
+ return Promise.all(Object.values(plugin).map(pluginExport => {
64
+ if (typeof pluginExport === "function") {
65
+ this.plugins[pluginExport.name] = new pluginExport(this);
66
+ return (this.plugins[pluginExport.name].init() ||
67
+ Promise.resolve());
68
+ }
69
+ return Promise.resolve();
70
+ }));
71
+ }));
72
+ }
73
+ //delete image
74
+ deleteImage(ids) {
75
+ ids = ids.map(id => Number.parseInt(id));
76
+ if (this.app.isOffline()) {
77
+ addAlert("error", gettext("You are currently offline. Please try again when you are back online."));
78
+ return;
79
+ }
80
+ activateWait();
81
+ post("/api/usermedia/delete/", { ids })
82
+ .catch(error => {
83
+ addAlert("error", gettext("The image(s) could not be deleted"));
84
+ deactivateWait();
85
+ if (this.app.isOffline()) {
86
+ addAlert("error", gettext("You are currently offline. Please try again when you are back online."));
87
+ }
88
+ else {
89
+ throw error;
90
+ }
91
+ })
92
+ .then(() => {
93
+ ids.forEach(id => delete this.app.imageDB.db[id]);
94
+ this.removeTableRows(ids);
95
+ addAlert("success", gettext("The image(s) have been deleted"));
96
+ })
97
+ .then(() => deactivateWait());
98
+ }
99
+ deleteImageDialog(ids) {
100
+ const buttons = [
101
+ {
102
+ text: gettext("Delete"),
103
+ classes: "fw-dark",
104
+ click: () => {
105
+ this.deleteImage(ids);
106
+ dialog.close();
107
+ }
108
+ },
109
+ {
110
+ type: "cancel"
111
+ }
112
+ ];
113
+ const dialog = new Dialog({
114
+ id: "confirmdeletion",
115
+ icon: "exclamation-triangle",
116
+ title: gettext("Confirm deletion"),
117
+ body: `<p>${gettext("Delete the image(s)")}?</p>`,
118
+ buttons
119
+ });
120
+ dialog.open();
121
+ }
122
+ updateTable(ids) {
123
+ // Remove items that already exist
124
+ this.removeTableRows(ids);
125
+ this.table.insert({ data: ids.map(id => this.createTableRow(id)) });
126
+ // Redo last sort
127
+ this.table.columns.sort(this.lastSort.column, this.lastSort.dir);
128
+ }
129
+ createTableRow(id) {
130
+ const image = this.app.imageDB.db[id];
131
+ const cats = image.cats.map(cat => `cat_${cat}`);
132
+ let fileType = image.file_type.split("/");
133
+ if (1 < fileType.length) {
134
+ fileType = fileType[1].toUpperCase();
135
+ }
136
+ else {
137
+ fileType = fileType[0].toUpperCase();
138
+ }
139
+ return [
140
+ id,
141
+ false, // checkbox
142
+ `<span class="fw-usermedia-image ${cats.join(" ")}">
143
+ <img src="${image.thumbnail ? image.thumbnail : image.image}">
144
+ </span>
145
+ <span class="fw-usermedia-title">
146
+ <span class="edit-image fw-link-text fw-searchable" data-id="${id}">
147
+ ${image.title.length ? escapeText(image.title) : gettext("Untitled")}
148
+ </span>
149
+ <span class="fw-usermedia-type">${fileType}</span>
150
+ </span>`,
151
+ `<span>${image.width} x ${image.height}</span>`,
152
+ `<span class="fw-date">${localizeDate(image.added, "sortable-date")}</span>`,
153
+ `<span class="delete-image fw-link-text" data-id="${id}">
154
+ <i class="fa fa-trash-alt"></i>
155
+ </span>`
156
+ ];
157
+ }
158
+ removeTableRows(ids) {
159
+ ids = ids.map(id => Number.parseInt(id));
160
+ const existingRows = this.table.data.data
161
+ .map((row, index) => {
162
+ const id = row.cells[0].data;
163
+ if (ids.includes(id)) {
164
+ return index;
165
+ }
166
+ else {
167
+ return false;
168
+ }
169
+ })
170
+ .filter(rowIndex => rowIndex !== false);
171
+ if (existingRows.length) {
172
+ this.table.rows.remove(existingRows);
173
+ }
174
+ }
175
+ onResize() {
176
+ if (!this.table) {
177
+ return;
178
+ }
179
+ this.initTable(Object.keys(this.app.imageDB.db));
180
+ }
181
+ /* Initialize the overview table */
182
+ initTable(ids) {
183
+ if (this.overviewTable) {
184
+ this.overviewTable.destroy();
185
+ this.overviewTable = null;
186
+ }
187
+ this.table = null;
188
+ this.dtBulk = null;
189
+ const contentsEl = this.dom.querySelector(".fw-contents");
190
+ contentsEl.innerHTML = "";
191
+ const hiddenCols = [0];
192
+ if (window.innerWidth < 500) {
193
+ hiddenCols.push(1);
194
+ }
195
+ this.overviewTable = new OverviewDataTable({
196
+ dom: contentsEl,
197
+ classes: ["fw-data-table", "fw-large"],
198
+ columns: [
199
+ {
200
+ select: 0,
201
+ type: "number"
202
+ },
203
+ {
204
+ select: 1,
205
+ type: "boolean"
206
+ },
207
+ {
208
+ select: hiddenCols,
209
+ hidden: true
210
+ },
211
+ {
212
+ select: [1, 3, 5],
213
+ sortable: false
214
+ },
215
+ {
216
+ select: [this.lastSort.column],
217
+ sort: this.lastSort.dir
218
+ }
219
+ ],
220
+ data: ids.map(id => this.createTableRow(id)),
221
+ idColumn: 0,
222
+ checkboxColumn: 1,
223
+ bulkMenu: bulkMenuModel(),
224
+ bulkMenuPage: this,
225
+ searchable: true,
226
+ scrollY: `${Math.max(window.innerHeight - 360, 100)}px`,
227
+ tabIndex: 1,
228
+ labels: {
229
+ noRows: gettext("No images available"), // Message shown when there are no images
230
+ noResults: gettext("No images found") // Message shown when no images are found after search
231
+ },
232
+ headings: [
233
+ "",
234
+ "",
235
+ gettext("File"),
236
+ gettext("Size (px)"),
237
+ gettext("Added"),
238
+ ""
239
+ ],
240
+ template: (options, _dom) => `<div class='${options.classes.container}'${options.scrollY.length ? ` style='height: ${options.scrollY}; overflow-Y: auto;'` : ""}></div>
241
+ <div class='${options.classes.bottom}'>
242
+ ${options.paging
243
+ ? `<div class='${options.classes.info}'></div>`
244
+ : ""}
245
+ <nav class='${options.classes.pagination}'></nav>
246
+ </div>`,
247
+ rowRender: (row, tr, _index) => {
248
+ const id = row.cells[0].data;
249
+ const inputNode = {
250
+ nodeName: "input",
251
+ attributes: {
252
+ type: "checkbox",
253
+ class: "entry-select fw-check",
254
+ "data-id": id,
255
+ id: `doc-img-${id}`
256
+ }
257
+ };
258
+ if (row.cells[1].data) {
259
+ inputNode.attributes.checked = true;
260
+ }
261
+ tr.childNodes[0].childNodes = [
262
+ inputNode,
263
+ {
264
+ nodeName: "label",
265
+ attributes: {
266
+ for: `doc-img-${id}`
267
+ }
268
+ }
269
+ ];
270
+ },
271
+ onEnter: (row, _event) => {
272
+ if (this.getSelected().length > 0) {
273
+ return;
274
+ }
275
+ const rowIndex = this.table.data.data.indexOf(row);
276
+ const button = this.table.dom.querySelector(`tr[data-index="${rowIndex}"] span.edit-image`);
277
+ if (button) {
278
+ button.click();
279
+ }
280
+ },
281
+ onDelete: row => {
282
+ const imageId = row.cells[0].data;
283
+ this.deleteImageDialog([imageId]);
284
+ }
285
+ });
286
+ this.overviewTable.init();
287
+ this.table = this.overviewTable.table;
288
+ this.table.id = "imagelist";
289
+ this.dtBulk = this.overviewTable.dtBulk;
290
+ this.table.on("datatable.sort", (column, dir) => {
291
+ this.lastSort = { column, dir };
292
+ });
293
+ this.table.dom.focus();
294
+ }
295
+ // get IDs of selected bib entries
296
+ getSelected() {
297
+ return Array.from(this.dom.querySelectorAll(".entry-select:checked:not(:disabled)")).map(el => Number.parseInt(el.getAttribute("data-id")));
298
+ }
299
+ bindEvents() {
300
+ this.dom.addEventListener("click", event => this.handleActivation(event));
301
+ this.dom.addEventListener("keydown", event => this.handleActivation(event));
302
+ }
303
+ handleActivation(event) {
304
+ if (!isActivationEvent(event)) {
305
+ return;
306
+ }
307
+ const el = {};
308
+ switch (true) {
309
+ case findTarget(event, ".delete-image", el): {
310
+ const imageId = el.target.dataset.id;
311
+ this.deleteImageDialog([imageId]);
312
+ break;
313
+ }
314
+ case findTarget(event, ".edit-image", el): {
315
+ const imageId = el.target.dataset.id;
316
+ import("../edit_dialog").then(({ ImageEditDialog }) => {
317
+ const dialog = new ImageEditDialog(this.app.imageDB, imageId, this);
318
+ dialog.init().then(() => {
319
+ this.updateTable([imageId]);
320
+ });
321
+ });
322
+ break;
323
+ }
324
+ case findTarget(event, ".fw-add-input", el): {
325
+ const itemEl = el.target.closest(".fw-list-input");
326
+ if (!itemEl.nextElementSibling) {
327
+ itemEl.insertAdjacentHTML("afterend", `<tr class="fw-list-input">
328
+ <td>
329
+ <input type="text" class="category-form">
330
+ <span class="fw-add-input icon-addremove" tabindex="0"></span>
331
+ </td>
332
+ </tr>`);
333
+ }
334
+ else {
335
+ itemEl.parentElement.removeChild(itemEl);
336
+ }
337
+ break;
338
+ }
339
+ default:
340
+ break;
341
+ }
342
+ }
343
+ close() {
344
+ if (this.table) {
345
+ this.table.destroy();
346
+ this.table = null;
347
+ }
348
+ if (this.dtBulk) {
349
+ this.dtBulk.destroy();
350
+ this.dtBulk = null;
351
+ }
352
+ if (this.menu) {
353
+ this.menu.destroy();
354
+ this.menu = null;
355
+ }
356
+ }
357
+ }
358
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/overview/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export function bulkMenuModel(): {
2
+ content: {
3
+ title: string;
4
+ tooltip: string;
5
+ action: (overview: any) => void;
6
+ disabled: (overview: any) => any;
7
+ }[];
8
+ };
9
+ export function menuModel(): {
10
+ content: ({
11
+ type: string;
12
+ id: string;
13
+ keys: string;
14
+ content: {
15
+ title: string;
16
+ action: (_overview: any) => void;
17
+ }[];
18
+ order: number;
19
+ title?: undefined;
20
+ action?: undefined;
21
+ disabled?: undefined;
22
+ icon?: undefined;
23
+ input?: undefined;
24
+ } | {
25
+ type: string;
26
+ title: string;
27
+ keys: string;
28
+ action: (overview: any) => any;
29
+ order: number;
30
+ disabled: (overview: any) => any;
31
+ id?: undefined;
32
+ content?: undefined;
33
+ icon?: undefined;
34
+ input?: undefined;
35
+ } | {
36
+ type: string;
37
+ icon: string;
38
+ title: string;
39
+ keys: string;
40
+ input: (overview: any, text: any) => any;
41
+ order: number;
42
+ id?: undefined;
43
+ content?: undefined;
44
+ action?: undefined;
45
+ disabled?: undefined;
46
+ })[];
47
+ };
48
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/overview/menu.js"],"names":[],"mappings":"AAEO;;;;;;;EAeL;AAEK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDL"}
@@ -0,0 +1,67 @@
1
+ import { gettext } from "fwtoolkit";
2
+ export const bulkMenuModel = () => ({
3
+ content: [
4
+ {
5
+ title: gettext("Delete selected"),
6
+ tooltip: gettext("Delete selected images."),
7
+ action: overview => {
8
+ const ids = overview.getSelected();
9
+ if (ids.length) {
10
+ overview.deleteImageDialog(ids);
11
+ }
12
+ },
13
+ disabled: overview => !overview.getSelected().length || overview.app.isOffline()
14
+ }
15
+ ]
16
+ });
17
+ export const menuModel = () => ({
18
+ content: [
19
+ {
20
+ type: "dropdown",
21
+ id: "cat_selector",
22
+ keys: "Alt-c",
23
+ content: [
24
+ {
25
+ title: gettext("All categories"),
26
+ action: _overview => {
27
+ const trs = document.querySelectorAll("#imagelist > tbody > tr");
28
+ trs.forEach(tr => (tr.style.display = ""));
29
+ }
30
+ }
31
+ ],
32
+ order: 1
33
+ },
34
+ {
35
+ type: "text",
36
+ title: gettext("Edit categories"),
37
+ keys: "Alt-e",
38
+ action: overview => overview.mod.categories.editCategoryDialog(),
39
+ order: 2,
40
+ disabled: overview => overview.app.isOffline()
41
+ },
42
+ {
43
+ type: "text",
44
+ title: gettext("Upload new image"),
45
+ keys: "Alt-u",
46
+ action: overview => {
47
+ import("../edit_dialog").then(({ ImageEditDialog }) => {
48
+ const imageUpload = new ImageEditDialog(overview.app.imageDB, false, overview);
49
+ imageUpload.init().then(imageId => {
50
+ overview.updateTable([imageId]);
51
+ });
52
+ });
53
+ },
54
+ order: 3,
55
+ disabled: overview => overview.app.isOffline()
56
+ },
57
+ {
58
+ type: "search",
59
+ icon: "search",
60
+ title: gettext("Search images"),
61
+ keys: "Alt-s",
62
+ input: (overview, text) => overview.table.search(text),
63
+ order: 4
64
+ }
65
+ ]
66
+ });
67
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/overview/menu.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;IAChC,OAAO,EAAE;QACL;YACI,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;YACjC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC;YAC3C,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;gBAClC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBACnC,CAAC;YACL,CAAC;YACD,QAAQ,EAAE,QAAQ,CAAC,EAAE,CACjB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;SACjE;KACJ;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE;QACL;YACI,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,cAAc;YAClB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACL;oBACI,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC;oBAChC,MAAM,EAAE,SAAS,CAAC,EAAE;wBAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CACjC,yBAAyB,CAC5B,CAAA;wBACD,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAA;oBAC9C,CAAC;iBACJ;aACJ;YACD,KAAK,EAAE,CAAC;SACX;QACD;YACI,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC;YACjC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE;YAChE,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;SACjD;QACD;YACI,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,eAAe,EAAC,EAAE,EAAE;oBAChD,MAAM,WAAW,GAAG,IAAI,eAAe,CACnC,QAAQ,CAAC,GAAG,CAAC,OAAO,EACpB,KAAK,EACL,QAAQ,CACX,CAAA;oBACD,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBAC9B,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;oBACnC,CAAC,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;YACN,CAAC;YACD,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;SACjD;QACD;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC;YAC/B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACtD,KAAK,EAAE,CAAC;SACX;KACJ;CACJ,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export function usermediaEditcategoriesTemplate({ categories }: {
2
+ categories: any;
3
+ }): string;
4
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/overview/templates.js"],"names":[],"mappings":"AAwBO;;WAKM"}
@@ -0,0 +1,24 @@
1
+ import { escapeText } from "fwtoolkit";
2
+ /** A template for the image category edit form. */
3
+ const usermediaCategoryformsTemplate = ({ categories }) => `${categories
4
+ .map(cat => `<tr id="categoryTr_${cat.id}" class="fw-list-input">
5
+ <td>
6
+ <input type="text" class="category-form" id="categoryTitle_${cat.id}"
7
+ value="${escapeText(cat.category_title)}" data-id="${cat.id}" />
8
+ <span class="fw-add-input icon-addremove" tabindex="0"></span>
9
+ </td>
10
+ </tr>`)
11
+ .join("")}
12
+ <tr class="fw-list-input">
13
+ <td>
14
+ <input type="text" class="category-form" />
15
+ <span class="fw-add-input icon-addremove" tabindex="0"></span>
16
+ </td>
17
+ </tr>`;
18
+ /** A template to edit image categories. */
19
+ export const usermediaEditcategoriesTemplate = ({ categories }) => `<table id="editCategoryList" class="fw-dialog-table">
20
+ <tbody>
21
+ ${usermediaCategoryformsTemplate({ categories })}
22
+ </tbody>
23
+ </table>`;
24
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/overview/templates.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAA;AAEpC,mDAAmD;AACnD,MAAM,8BAA8B,GAAG,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CACpD,GAAG,UAAU;KACR,GAAG,CACA,GAAG,CAAC,EAAE,CACF,sBAAsB,GAAG,CAAC,EAAE;;iFAEqC,GAAG,CAAC,EAAE;qCAClD,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,CAAC,EAAE;;;kBAGrE,CACT;KACA,IAAI,CAAC,EAAE,CAAC;;;;;;UAMP,CAAA;AAEV,2CAA2C;AAC3C,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAC5D;;cAEU,8BAA8B,CAAC,EAAC,UAAU,EAAC,CAAC;;aAE7C,CAAA"}
@@ -0,0 +1,19 @@
1
+ export class ImageSelectionDialog {
2
+ constructor(imageDB: any, userImageDB: any, imgId: any, page: any);
3
+ imageDB: any;
4
+ userImageDB: any;
5
+ page: any;
6
+ imgId: any;
7
+ imgDb: string;
8
+ images: any[];
9
+ isE2EE(): boolean;
10
+ init(): Promise<any>;
11
+ imageDialog: Dialog | undefined;
12
+ initTable(): void;
13
+ selectionTable: SelectionDataTable | undefined;
14
+ table: import("simple-datatables").DataTable | undefined;
15
+ createTableRow(image: any): string[];
16
+ }
17
+ import { Dialog } from "fwtoolkit";
18
+ import { SelectionDataTable } from "fwtoolkit";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/selection_dialog/index.js"],"names":[],"mappings":"AAEA;IACI,mEAOC;IANG,aAAsB;IACtB,iBAA8B;IAC9B,UAAgB;IAChB,WAAkB;IAClB,cAAuB;IACvB,cAAgB;IAGpB,kBAEC;IAED,qBA6FC;IAXG,gCAME;IAON,kBAqDC;IAvCG,+CAoCE;IAEF,yDAAsC;IAG1C,qCAQC;CACJ;uBA/K4E,WAAW;mCAAX,WAAW"}