aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/app/services/TimelinePostBuilder.ts
diff options
context:
space:
mode:
Diffstat (limited to 'FrontEnd/src/app/services/TimelinePostBuilder.ts')
-rw-r--r--FrontEnd/src/app/services/TimelinePostBuilder.ts32
1 files changed, 10 insertions, 22 deletions
diff --git a/FrontEnd/src/app/services/TimelinePostBuilder.ts b/FrontEnd/src/app/services/TimelinePostBuilder.ts
index f6c8f881..92d8484b 100644
--- a/FrontEnd/src/app/services/TimelinePostBuilder.ts
+++ b/FrontEnd/src/app/services/TimelinePostBuilder.ts
@@ -1,8 +1,3 @@
-import {
- escapeHtml,
- replaceEntities,
- unescapeMd,
-} from "remarkable/lib/common/utils";
import { Remarkable } from "remarkable";
import { UiLogicError } from "@/common";
@@ -18,28 +13,16 @@ export default class TimelinePostBuilder {
constructor(onChange: () => void) {
this._onChange = onChange;
+ const oldImageRenderer = this._md.renderer.rules.image;
this._md.renderer.rules.image = ((
_t: TimelinePostBuilder
): Remarkable.Rule<Remarkable.ImageToken, string> =>
function (tokens, idx, options /*, env */) {
const i = parseInt(tokens[idx].src);
- const src =
- ' src="' +
- (isNaN(i) && i > 0 && i <= _t._images.length
- ? escapeHtml(tokens[idx].src)
- : _t._images[i - 1].url) +
- '"';
- const title = tokens[idx].title
- ? ' title="' + escapeHtml(replaceEntities(tokens[idx].title)) + '"'
- : "";
- const alt =
- ' alt="' +
- (tokens[idx].alt
- ? escapeHtml(replaceEntities(unescapeMd(tokens[idx].alt)))
- : "") +
- '"';
- const suffix = options?.xhtmlOut ? " /" : "";
- return "<img" + src + alt + title + suffix + ">";
+ if (!isNaN(i) && i > 0 && i <= _t._images.length) {
+ tokens[idx].src = _t._images[i - 1].url;
+ }
+ return oldImageRenderer(tokens, idx, options);
})(this);
}
@@ -49,6 +32,7 @@ export default class TimelinePostBuilder {
}
appendImage(file: File): void {
+ this._images = this._images.slice();
this._images.push({
file,
url: URL.createObjectURL(file),
@@ -69,6 +53,8 @@ export default class TimelinePostBuilder {
newIndex = this._images.length - 1;
}
+ this._images = this._images.slice();
+
const [old] = this._images.splice(oldIndex, 1);
this._images.splice(newIndex, 0, old);
@@ -80,6 +66,8 @@ export default class TimelinePostBuilder {
throw new UiLogicError("Old index out of range.");
}
+ this._images = this._images.slice();
+
URL.revokeObjectURL(this._images[index].url);
this._images.splice(index, 1);