aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/formattedText/nodes_rts.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2021-01-29 13:47:31 -0500
committerbobzel <zzzman@gmail.com>2021-01-29 13:47:31 -0500
commit80362228b691fd55b569f0f507c4ee9667644559 (patch)
tree0711711ac2a9e07d5d6a15e375b6ddd56f81e068 /src/client/views/nodes/formattedText/nodes_rts.ts
parent42d8bd5f673341682452c7c1f59b6b4b3a33d346 (diff)
changed how auto linking to audio is implemented. added audiotag html tags to click to play audio.
Diffstat (limited to 'src/client/views/nodes/formattedText/nodes_rts.ts')
-rw-r--r--src/client/views/nodes/formattedText/nodes_rts.ts38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/client/views/nodes/formattedText/nodes_rts.ts b/src/client/views/nodes/formattedText/nodes_rts.ts
index 64f7d27e5..f5bc05a2d 100644
--- a/src/client/views/nodes/formattedText/nodes_rts.ts
+++ b/src/client/views/nodes/formattedText/nodes_rts.ts
@@ -6,6 +6,14 @@ import { ParagraphNodeSpec, toParagraphDOM, getParagraphNodeAttrs } from "./Para
const blockquoteDOM: DOMOutputSpecArray = ["blockquote", 0], hrDOM: DOMOutputSpecArray = ["hr"],
preDOM: DOMOutputSpecArray = ["pre", ["code", 0]], brDOM: DOMOutputSpecArray = ["br"], ulDOM: DOMOutputSpecArray = ["ul", 0];
+function formatAudioTime(time: number) {
+ time = Math.round(time);
+ const hours = Math.floor(time / 60 / 60);
+ const minutes = Math.floor(time / 60) - (hours * 60);
+ const seconds = time % 60;
+
+ return minutes.toString().padStart(2, '0') + ':' + seconds.toString().padStart(2, '0');
+}
// :: Object
// [Specs](#model.NodeSpec) for the nodes defined in this schema.
export const nodes: { [index: string]: NodeSpec } = {
@@ -14,6 +22,34 @@ export const nodes: { [index: string]: NodeSpec } = {
content: "block+"
},
+ audiotag: {
+ group: "block",
+ attrs: {
+ timeCode: { default: 0 },
+ audioId: { default: "" }
+ },
+ toDOM(node) {
+ return ['audiotag',
+ {
+ // style: see FormattedTextBox.scss
+ "data-timecode": node.attrs.timeCode,
+ "data-audioid": node.attrs.audioId,
+ },
+ formatAudioTime(node.attrs.timeCode.toString())
+ ]
+ },
+ parseDOM: [
+ {
+ tag: "audiotag", getAttrs(dom: any) {
+ return {
+ timeCode: dom.getAttribute("data-timecode"),
+ audioId: dom.getAttribute("data-audioid")
+ };
+ }
+ },
+ ]
+ },
+
footnote: {
group: "inline",
content: "inline*",
@@ -315,7 +351,7 @@ export const nodes: { [index: string]: NodeSpec } = {
mapStyle: { default: "decimal" }, // "decimal", "multi", "bullet"
visibility: { default: true }
},
- content: 'paragraph+ | (paragraph ordered_list)',
+ content: '(paragraph|audiotag)+ | ((paragraph|audiotag)+ ordered_list)',
parseDOM: [{
tag: "li", getAttrs(dom: any) {
return { mapStyle: dom.getAttribute("data-mapStyle"), bulletStyle: dom.getAttribute("data-bulletStyle") };