@fiduswriter/editor 0.1.17 → 0.1.18

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.
@@ -1,76 +1,20 @@
1
- import { keyName } from "w3c-keyname";
1
+ import { AddButton, ContributorsPartView as CommonContributorsPartView } from "@fiduswriter/common/state_plugins/contributor_input";
2
+ import { ContributorDialog } from "../../dialogs/index.js";
2
3
  import { addDeletedPartWidget } from "../document_template.js";
3
- import { AddButton } from "./add_button.js";
4
- export class ContributorsPartView {
5
- constructor(node, view, getPos) {
6
- this.node = node;
7
- this.view = view;
8
- this.getPos = getPos;
9
- this.idTypes =
10
- (view.state &&
11
- view.state.doc &&
12
- view.state.doc.attrs &&
13
- view.state.doc.attrs.id_types) ||
14
- [];
15
- this.dom = document.createElement("div");
16
- this.dom.classList.add("doc-part");
17
- this.dom.classList.add(`doc-${this.node.type.name}`);
18
- this.dom.classList.add(`doc-${this.node.attrs.id}`);
19
- if (node.attrs.hidden) {
20
- this.dom.dataset.hidden = true;
21
- }
22
- this.contentDOM = document.createElement("span");
23
- this.contentDOM.classList.add("contributors-inner");
24
- this.contentDOM.contentEditable = node.attrs.locking !== "fixed";
25
- this.dom.appendChild(this.contentDOM);
26
- if (node.attrs.locking !== "fixed") {
27
- this.addButton = new AddButton(this.dom, () => this.getNode(), this.getPos, this.view, this.idTypes);
28
- this.addButton.init();
29
- }
30
- if (node.attrs.deleted) {
31
- addDeletedPartWidget(this.dom, view, getPos);
32
- }
33
- }
34
- stopEvent(event) {
35
- // Trap events for addButton
36
- if (["click", "mousedown"].includes(event.type)) {
37
- return false;
38
- }
39
- else if (!this.addButton || this.node.attrs.locking === "fixed") {
40
- return false;
41
- }
42
- else if (this.addButton.hasFocus() && event.type === "keydown") {
43
- return true;
44
- }
45
- else {
46
- return false;
47
- }
48
- }
49
- update(node, _decorations, _innerDecorations) {
50
- this.node = node;
51
- if (node.attrs.hidden) {
52
- this.dom.dataset.hidden = true;
53
- }
54
- else {
55
- delete this.dom.dataset.hidden;
56
- }
57
- return true;
58
- }
59
- getNode() {
60
- return this.node;
4
+ class EditorAddButton extends AddButton {
5
+ handleActivation(event) {
6
+ event.preventDefault();
7
+ const node = this.getNode();
8
+ const dialog = new ContributorDialog(node, this.view, false, this.idTypes);
9
+ dialog.init();
61
10
  }
62
- setSelection(anchor, head, _root) {
63
- if (anchor === head && this.view.hasFocus()) {
64
- // We must be in last position.
65
- // Activate the tag input tag editor.
66
- this.addButton.focus();
67
- }
68
- }
69
- ignoreMutation(_record) {
70
- if (this.addButton?.hasFocus()) {
71
- return true;
72
- }
73
- return false;
11
+ }
12
+ export class ContributorsPartView extends CommonContributorsPartView {
13
+ constructor(node, view, getPos) {
14
+ super(node, view, getPos, {
15
+ addDeletedPartWidget,
16
+ AddButton: EditorAddButton
17
+ });
74
18
  }
75
19
  }
76
20
  //# sourceMappingURL=node_view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node_view.js","sourceRoot":"","sources":["../../../src/state_plugins/contributor_input/node_view.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node_view.js","sourceRoot":"","sources":["../../../src/state_plugins/contributor_input/node_view.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,oBAAoB,IAAI,0BAA0B,EAAC,MAAM,qDAAqD,CAAA;AAEjI,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAA;AAE5D,MAAM,eAAgB,SAAQ,SAAS;IACnC,gBAAgB,CAAC,KAAK;QAClB,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAChC,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,KAAK,EACL,IAAI,CAAC,OAAO,CACf,CAAA;QACD,MAAM,CAAC,IAAI,EAAE,CAAA;IACjB,CAAC;CACJ;AAED,MAAM,OAAO,oBAAqB,SAAQ,0BAA0B;IAChE,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM;QAC1B,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,oBAAoB;YACpB,SAAS,EAAE,eAAe;SAC7B,CAAC,CAAA;IACN,CAAC;CACJ"}
@@ -10,10 +10,10 @@
10
10
  */
11
11
  import { NodeSelection, Plugin, PluginKey } from "prosemirror-state";
12
12
  import { Decoration, DecorationSet } from "prosemirror-view";
13
+ import { nextSelection } from "@fiduswriter/common/state_plugins/contributor_input";
13
14
  import { ContributorDialog } from "../../dialogs/index.js";
14
- import { createDropUp } from "./dropup.js";
15
- import { nextSelection } from "./helpers.js";
16
15
  import { ContributorsPartView } from "./node_view.js";
16
+ import { createDropUp } from "./dropup.js";
17
17
  const key = new PluginKey("contributorInput");
18
18
  /**
19
19
  * Create the contributor input plugin
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/state_plugins/contributor_input/plugin.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/state_plugins/contributor_input/plugin.js"],"names":[],"mappings":"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"}
@@ -1,77 +1,14 @@
1
- import { GapCursor } from "prosemirror-gapcursor";
2
- import { TextSelection } from "prosemirror-state";
1
+ import { TagsPartView as CommonTagsPartView, createTagEditor as commonCreateTagEditor } from "@fiduswriter/common/state_plugins/tag_input";
3
2
  import { addDeletedPartWidget } from "../document_template.js";
4
3
  import { shouldPreventTagInputFocus } from "./plugin.js";
5
- import { createTagEditor } from "./tag_editor.js";
6
- export class TagsPartView {
4
+ const createTagEditor = (view, getPos, getNode) => commonCreateTagEditor(view, getPos, getNode);
5
+ export class TagsPartView extends CommonTagsPartView {
7
6
  constructor(node, view, getPos) {
8
- this.node = node;
9
- this.view = view;
10
- this.getPos = getPos;
11
- this.dom = document.createElement("div");
12
- this.dom.classList.add("doc-part");
13
- this.dom.classList.add(`doc-${this.node.type.name}`);
14
- this.dom.classList.add(`doc-${this.node.attrs.id}`);
15
- if (node.attrs.hidden) {
16
- this.dom.dataset.hidden = true;
17
- }
18
- this.contentDOM = document.createElement("span");
19
- this.contentDOM.classList.add("tags-inner");
20
- this.contentDOM.contentEditable = node.attrs.locking !== "fixed";
21
- this.dom.appendChild(this.contentDOM);
22
- if (node.attrs.locking !== "fixed") {
23
- const [tagInputDOM, tagInputView] = createTagEditor(view, getPos, () => this.getNode());
24
- this.tagInputView = tagInputView;
25
- this.dom.appendChild(tagInputDOM);
26
- }
27
- if (node.attrs.deleted) {
28
- addDeletedPartWidget(this.dom, view, getPos);
29
- }
30
- }
31
- stopEvent(event) {
32
- // Trap events for tagInputView
33
- if (["click", "mousedown"].includes(event.type)) {
34
- return false;
35
- }
36
- else if (!this.tagInputView || this.node.attrs.locking === "fixed") {
37
- return false;
38
- }
39
- else if (event.type === "keydown" && this.tagInputView.hasFocus()) {
40
- return true;
41
- }
42
- else {
43
- return false;
44
- }
45
- }
46
- update(node, _decorations, _innerDecorations) {
47
- this.node = node;
48
- if (node.attrs.hidden) {
49
- this.dom.dataset.hidden = true;
50
- }
51
- else {
52
- delete this.dom.dataset.hidden;
53
- }
54
- return true;
55
- }
56
- getNode() {
57
- return this.node;
58
- }
59
- setSelection(anchor, head, _root) {
60
- if (anchor === head && this.view.hasFocus()) {
61
- // Check if we should prevent refocusing (e.g., user just clicked on a tag)
62
- if (shouldPreventTagInputFocus()) {
63
- return;
64
- }
65
- // We must be in last position.
66
- // Activate the tag input tag editor.
67
- this.tagInputView.focus();
68
- }
69
- }
70
- ignoreMutation(_record) {
71
- if (this.tagInputView?.hasFocus()) {
72
- return true;
73
- }
74
- return false;
7
+ super(node, view, getPos, {
8
+ addDeletedPartWidget,
9
+ createTagEditor,
10
+ shouldPreventTagInputFocus
11
+ });
75
12
  }
76
13
  }
77
14
  //# sourceMappingURL=node_view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node_view.js","sourceRoot":"","sources":["../../../src/state_plugins/tag_input/node_view.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node_view.js","sourceRoot":"","sources":["../../../src/state_plugins/tag_input/node_view.js"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,IAAI,kBAAkB,EAClC,eAAe,IAAI,qBAAqB,EAC3C,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,aAAa,CAAA;AAEtD,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAC9C,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhD,MAAM,OAAO,YAAa,SAAQ,kBAAkB;IAChD,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM;QAC1B,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,oBAAoB;YACpB,eAAe;YACf,0BAA0B;SAC7B,CAAC,CAAA;IACN,CAAC;CACJ"}
@@ -1,8 +1,7 @@
1
1
  import { GapCursor } from "prosemirror-gapcursor";
2
2
  import { NodeSelection, Plugin, PluginKey, TextSelection } from "prosemirror-state";
3
- import { nextSelection, submitTag } from "./helpers.js";
3
+ import { nextSelection, submitTag, tagInputReferences } from "@fiduswriter/common/state_plugins/tag_input";
4
4
  import { TagsPartView } from "./node_view.js";
5
- import { tagInputReferences } from "./tag_editor.js";
6
5
  const key = new PluginKey("tagInput");
7
6
  // Track mouse click state across transactions using closure variable
8
7
  let mouseClickActive = false;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/state_plugins/tag_input/plugin.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/state_plugins/tag_input/plugin.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiduswriter/editor",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "description": "Fidus Writer browser editor",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,86 +1,28 @@
1
- import {keyName} from "w3c-keyname"
2
- import {addDeletedPartWidget} from "../document_template.js"
3
-
4
- import {AddButton} from "./add_button.js"
5
-
6
- export class ContributorsPartView {
7
- constructor(node, view, getPos) {
8
- this.node = node
9
- this.view = view
10
- this.getPos = getPos
11
- this.idTypes =
12
- (view.state &&
13
- view.state.doc &&
14
- view.state.doc.attrs &&
15
- view.state.doc.attrs.id_types) ||
16
- []
17
- this.dom = document.createElement("div")
18
- this.dom.classList.add("doc-part")
19
- this.dom.classList.add(`doc-${this.node.type.name}`)
20
- this.dom.classList.add(`doc-${this.node.attrs.id}`)
21
- if (node.attrs.hidden) {
22
- this.dom.dataset.hidden = true
23
- }
1
+ import {AddButton, ContributorsPartView as CommonContributorsPartView} from "@fiduswriter/common/state_plugins/contributor_input"
24
2
 
25
- this.contentDOM = document.createElement("span")
26
- this.contentDOM.classList.add("contributors-inner")
27
- this.contentDOM.contentEditable = node.attrs.locking !== "fixed"
28
- this.dom.appendChild(this.contentDOM)
29
- if (node.attrs.locking !== "fixed") {
30
- this.addButton = new AddButton(
31
- this.dom,
32
- () => this.getNode(),
33
- this.getPos,
34
- this.view,
35
- this.idTypes
36
- )
37
- this.addButton.init()
38
- }
39
-
40
- if (node.attrs.deleted) {
41
- addDeletedPartWidget(this.dom, view, getPos)
42
- }
43
- }
44
-
45
- stopEvent(event) {
46
- // Trap events for addButton
47
- if (["click", "mousedown"].includes(event.type)) {
48
- return false
49
- } else if (!this.addButton || this.node.attrs.locking === "fixed") {
50
- return false
51
- } else if (this.addButton.hasFocus() && event.type === "keydown") {
52
- return true
53
- } else {
54
- return false
55
- }
56
- }
57
-
58
- update(node, _decorations, _innerDecorations) {
59
- this.node = node
60
- if (node.attrs.hidden) {
61
- this.dom.dataset.hidden = true
62
- } else {
63
- delete this.dom.dataset.hidden
64
- }
65
- return true
66
- }
67
-
68
- getNode() {
69
- return this.node
70
- }
3
+ import {ContributorDialog} from "../../dialogs/index.js"
4
+ import {addDeletedPartWidget} from "../document_template.js"
71
5
 
72
- setSelection(anchor, head, _root) {
73
- if (anchor === head && this.view.hasFocus()) {
74
- // We must be in last position.
75
- // Activate the tag input tag editor.
76
- this.addButton.focus()
77
- }
6
+ class EditorAddButton extends AddButton {
7
+ handleActivation(event) {
8
+ event.preventDefault()
9
+ const node = this.getNode()
10
+
11
+ const dialog = new ContributorDialog(
12
+ node,
13
+ this.view,
14
+ false,
15
+ this.idTypes
16
+ )
17
+ dialog.init()
78
18
  }
19
+ }
79
20
 
80
- ignoreMutation(_record) {
81
- if (this.addButton?.hasFocus()) {
82
- return true
83
- }
84
- return false
21
+ export class ContributorsPartView extends CommonContributorsPartView {
22
+ constructor(node, view, getPos) {
23
+ super(node, view, getPos, {
24
+ addDeletedPartWidget,
25
+ AddButton: EditorAddButton
26
+ })
85
27
  }
86
28
  }
@@ -11,10 +11,11 @@
11
11
  import {NodeSelection, Plugin, PluginKey} from "prosemirror-state"
12
12
  import {Decoration, DecorationSet} from "prosemirror-view"
13
13
 
14
+ import {nextSelection} from "@fiduswriter/common/state_plugins/contributor_input"
15
+
14
16
  import {ContributorDialog} from "../../dialogs/index.js"
15
- import {createDropUp} from "./dropup.js"
16
- import {nextSelection} from "./helpers.js"
17
17
  import {ContributorsPartView} from "./node_view.js"
18
+ import {createDropUp} from "./dropup.js"
18
19
 
19
20
  const key = new PluginKey("contributorInput")
20
21
 
@@ -1,85 +1,20 @@
1
- import {GapCursor} from "prosemirror-gapcursor"
2
- import {TextSelection} from "prosemirror-state"
3
- import {addDeletedPartWidget} from "../document_template.js"
1
+ import {
2
+ TagsPartView as CommonTagsPartView,
3
+ createTagEditor as commonCreateTagEditor
4
+ } from "@fiduswriter/common/state_plugins/tag_input"
4
5
 
6
+ import {addDeletedPartWidget} from "../document_template.js"
5
7
  import {shouldPreventTagInputFocus} from "./plugin.js"
6
- import {createTagEditor} from "./tag_editor.js"
7
-
8
- export class TagsPartView {
9
- constructor(node, view, getPos) {
10
- this.node = node
11
- this.view = view
12
- this.getPos = getPos
13
- this.dom = document.createElement("div")
14
- this.dom.classList.add("doc-part")
15
- this.dom.classList.add(`doc-${this.node.type.name}`)
16
- this.dom.classList.add(`doc-${this.node.attrs.id}`)
17
- if (node.attrs.hidden) {
18
- this.dom.dataset.hidden = true
19
- }
20
8
 
21
- this.contentDOM = document.createElement("span")
22
- this.contentDOM.classList.add("tags-inner")
23
- this.contentDOM.contentEditable = node.attrs.locking !== "fixed"
24
- this.dom.appendChild(this.contentDOM)
25
- if (node.attrs.locking !== "fixed") {
26
- const [tagInputDOM, tagInputView] = createTagEditor(
27
- view,
28
- getPos,
29
- () => this.getNode()
30
- )
31
- this.tagInputView = tagInputView
32
- this.dom.appendChild(tagInputDOM)
33
- }
34
-
35
- if (node.attrs.deleted) {
36
- addDeletedPartWidget(this.dom, view, getPos)
37
- }
38
- }
39
-
40
- stopEvent(event) {
41
- // Trap events for tagInputView
42
- if (["click", "mousedown"].includes(event.type)) {
43
- return false
44
- } else if (!this.tagInputView || this.node.attrs.locking === "fixed") {
45
- return false
46
- } else if (event.type === "keydown" && this.tagInputView.hasFocus()) {
47
- return true
48
- } else {
49
- return false
50
- }
51
- }
9
+ const createTagEditor = (view, getPos, getNode) =>
10
+ commonCreateTagEditor(view, getPos, getNode)
52
11
 
53
- update(node, _decorations, _innerDecorations) {
54
- this.node = node
55
- if (node.attrs.hidden) {
56
- this.dom.dataset.hidden = true
57
- } else {
58
- delete this.dom.dataset.hidden
59
- }
60
- return true
61
- }
62
-
63
- getNode() {
64
- return this.node
65
- }
66
-
67
- setSelection(anchor, head, _root) {
68
- if (anchor === head && this.view.hasFocus()) {
69
- // Check if we should prevent refocusing (e.g., user just clicked on a tag)
70
- if (shouldPreventTagInputFocus()) {
71
- return
72
- }
73
- // We must be in last position.
74
- // Activate the tag input tag editor.
75
- this.tagInputView.focus()
76
- }
77
- }
78
-
79
- ignoreMutation(_record) {
80
- if (this.tagInputView?.hasFocus()) {
81
- return true
82
- }
83
- return false
12
+ export class TagsPartView extends CommonTagsPartView {
13
+ constructor(node, view, getPos) {
14
+ super(node, view, getPos, {
15
+ addDeletedPartWidget,
16
+ createTagEditor,
17
+ shouldPreventTagInputFocus
18
+ })
84
19
  }
85
20
  }
@@ -6,9 +6,9 @@ import {
6
6
  TextSelection
7
7
  } from "prosemirror-state"
8
8
 
9
- import {nextSelection, submitTag} from "./helpers.js"
9
+ import {nextSelection, submitTag, tagInputReferences} from "@fiduswriter/common/state_plugins/tag_input"
10
+
10
11
  import {TagsPartView} from "./node_view.js"
11
- import {tagInputReferences} from "./tag_editor.js"
12
12
 
13
13
  const key = new PluginKey("tagInput")
14
14
 
@@ -1,134 +0,0 @@
1
- import {keyName} from "w3c-keyname"
2
-
3
- import {NodeSelection} from "prosemirror-state"
4
- import {ContributorDialog} from "../../dialogs/index.js"
5
- import {nextSelection} from "./helpers.js"
6
-
7
- export class AddButton {
8
- constructor(dom, getNode, getPos, view, idTypes) {
9
- this.dom = dom
10
- this.getNode = getNode
11
- this.getPos = getPos
12
- this.view = view
13
-
14
- this.idTypes = idTypes
15
-
16
- this.button = null
17
- }
18
-
19
- init() {
20
- const node = this.getNode()
21
- const nodeTitle = node.attrs.item_title
22
- this.dom.insertAdjacentHTML(
23
- "beforeend",
24
- `<button class="fw-button fw-light">${gettext("Add")} ${nodeTitle.toLowerCase()}...</button>`
25
- )
26
- this.button = this.dom.lastElementChild
27
- this.button.addEventListener("click", event =>
28
- this.handleActivation(event)
29
- )
30
- this.button.addEventListener("keydown", event =>
31
- this.handleKeyDown(event)
32
- )
33
- }
34
-
35
- handleKeyDown(event) {
36
- const key = keyName(event)
37
- switch (key) {
38
- case "Enter":
39
- case " ":
40
- this.handleActivation(event)
41
- break
42
- case "ArrowRight":
43
- case "ArrowDown":
44
- if (this.handleArrowDown()) {
45
- event.preventDefault()
46
- }
47
- break
48
- case "ArrowLeft":
49
- if (this.handleArrowLeft()) {
50
- event.preventDefault()
51
- }
52
- break
53
- case "ArrowUp":
54
- if (this.handleArrowUp()) {
55
- event.preventDefault()
56
- }
57
- break
58
- default:
59
- break
60
- }
61
- }
62
-
63
- handleActivation(event) {
64
- event.preventDefault()
65
- const node = this.getNode()
66
-
67
- const dialog = new ContributorDialog(
68
- node,
69
- this.view,
70
- false,
71
- this.idTypes
72
- )
73
- dialog.init()
74
- }
75
-
76
- handleArrowLeft() {
77
- const node = this.getNode()
78
- if (node.nodeSize > 2) {
79
- // At least one contributor
80
- const startPos = this.getPos() + node.nodeSize - 2
81
- this.view.dispatch(
82
- this.view.state.tr.setSelection(
83
- NodeSelection.create(this.view.state.doc, startPos)
84
- )
85
- )
86
- this.view.focus()
87
- return true
88
- } else {
89
- // There is no tag
90
- return this.handleArrowUp()
91
- }
92
- }
93
-
94
- handleArrowUp() {
95
- // We jump to the section before this one.
96
- const startPos = this.getPos()
97
-
98
- const newSelection = nextSelection(this.view.state, startPos, -1)
99
-
100
- if (!newSelection) {
101
- return false
102
- }
103
-
104
- this.view.dispatch(this.view.state.tr.setSelection(newSelection))
105
- this.view.focus()
106
- return true
107
- }
108
-
109
- handleArrowDown() {
110
- // Move the cursor beyond the contributors part
111
- const node = this.getNode()
112
- const pos = this.getPos() + node.nodeSize + 1
113
-
114
- const newSelection = nextSelection(this.view.state, pos, 1)
115
-
116
- if (!newSelection) {
117
- return false
118
- }
119
-
120
- this.view.dispatch(this.view.state.tr.setSelection(newSelection))
121
- this.view.focus()
122
- return true
123
- }
124
-
125
- hasFocus() {
126
- return this.button === window.document.activeElement
127
- }
128
-
129
- focus() {
130
- if (this.button) {
131
- this.button.focus()
132
- }
133
- }
134
- }
@@ -1,24 +0,0 @@
1
- import {GapCursor} from "prosemirror-gapcursor"
2
- import {TextSelection} from "prosemirror-state"
3
-
4
- export const nextSelection = (state, pos, dir) => {
5
- let newSelection
6
- let newPos = pos
7
- let $newPos
8
-
9
- while (!newSelection) {
10
- newPos += dir
11
- if (newPos === 0 || newPos === state.doc.nodeSize) {
12
- // Could not find any valid position
13
- break
14
- }
15
- $newPos = state.doc.resolve(newPos)
16
- if ($newPos.parent.inlineContent) {
17
- newSelection = new TextSelection($newPos)
18
- } else if (GapCursor.valid($newPos)) {
19
- newSelection = new GapCursor($newPos)
20
- }
21
- }
22
-
23
- return newSelection
24
- }
@@ -1,69 +0,0 @@
1
- import {GapCursor} from "prosemirror-gapcursor"
2
- import {TextSelection} from "prosemirror-state"
3
-
4
- export const nextSelection = (state, pos, dir) => {
5
- let newSelection
6
- let newPos = pos
7
- let $newPos
8
-
9
- while (!newSelection) {
10
- newPos += dir
11
- if (newPos === 0 || newPos === state.doc.nodeSize) {
12
- // Could not find any valid position
13
- break
14
- }
15
- $newPos = state.doc.resolve(newPos)
16
- if ($newPos.parent.inlineContent) {
17
- newSelection = new TextSelection($newPos)
18
- } else if (GapCursor.valid($newPos)) {
19
- newSelection = new GapCursor($newPos)
20
- }
21
- }
22
-
23
- return newSelection
24
- }
25
-
26
- export const submitTag = (tagInputView, view, getPos) => {
27
- const tagState = tagInputView.state
28
- const selectionTo = tagState.selection.to
29
- const tag =
30
- selectionTo > 1
31
- ? tagState.doc.textBetween(1, selectionTo)
32
- : tagState.doc.textContent
33
- if (tag.length) {
34
- try {
35
- const eState = view.state,
36
- startPos = getPos()
37
-
38
- // Validate that the position is still valid
39
- if (
40
- startPos === null ||
41
- startPos === undefined ||
42
- startPos < 0 ||
43
- startPos >= eState.doc.content.size
44
- ) {
45
- // Position is out of range, node was likely removed or moved
46
- return
47
- }
48
-
49
- const nodeAtPos = view.state.doc.nodeAt(startPos)
50
- if (!nodeAtPos) {
51
- // Node no longer exists at this position
52
- return
53
- }
54
-
55
- const pos = startPos + nodeAtPos.nodeSize - 1,
56
- node = eState.schema.nodes.tag.create({tag})
57
- view.dispatch(view.state.tr.insert(pos, node))
58
- tagInputView.dispatch(
59
- tagState.tr.delete(
60
- 1,
61
- selectionTo > 1 ? selectionTo : tagState.doc.nodeSize - 3
62
- )
63
- )
64
- } catch (_e) {
65
- // If there's any error during tag submission (e.g., position became invalid),
66
- // silently fail to avoid disrupting the user's workflow
67
- }
68
- }
69
- }
@@ -1,202 +0,0 @@
1
- import {history, redo, undo} from "prosemirror-history"
2
- import {keymap} from "prosemirror-keymap"
3
- import {Schema} from "prosemirror-model"
4
- import {NodeSelection, TextSelection} from "prosemirror-state"
5
- import {EditorState} from "prosemirror-state"
6
- import {EditorView} from "prosemirror-view"
7
-
8
- import {nextSelection, submitTag} from "./helpers.js"
9
- import {pastePlugin, placeholderPlugin} from "./tag_editor_plugins.js"
10
-
11
- // WeakMap to store tag input references for access from the plugin
12
- export const tagInputReferences = new WeakMap()
13
-
14
- const doc = {content: "tag"},
15
- tag = {
16
- content: "inline*",
17
- parseDOM: [{tag: "div.tag-input-editor"}],
18
- toDOM() {
19
- return [
20
- "div",
21
- {
22
- class: "tag-input-editor"
23
- },
24
- 0
25
- ]
26
- }
27
- },
28
- text = {group: "inline"}
29
-
30
- const schema = new Schema({
31
- nodes: {doc, tag, text},
32
- marks: {}
33
- })
34
-
35
- const ArrowLeft = (state, dispatch, getNode, view, getPos) => {
36
- // If we're at the leftmost position (position 1), stopEvent will handle moving out of the tag
37
- if (state.selection.to > 1) {
38
- // Inside the tag input, move caret left normally
39
- const tr = state.tr.setSelection(
40
- TextSelection.create(
41
- state.doc,
42
- state.selection.from - 1,
43
- state.selection.to - 1
44
- )
45
- )
46
- dispatch(tr)
47
- return true
48
- } else {
49
- const node = getNode()
50
- // Exit tag input to the left
51
- if (node.nodeSize > 2) {
52
- // At least one tag
53
- const startPos = getPos() + node.nodeSize - 2
54
- view.dispatch(
55
- view.state.tr.setSelection(
56
- NodeSelection.create(view.state.doc, startPos)
57
- )
58
- )
59
- view.focus()
60
- return true
61
- } else {
62
- // There is no tag
63
- return ArrowUp(state, dispatch, getNode, view, getPos)
64
- }
65
- }
66
- }
67
-
68
- const ArrowUp = (_state, _dispatch, _getNode, view, getPos) => {
69
- // We jump to the section before this one.
70
- const startPos = getPos()
71
-
72
- const newSelection = nextSelection(view.state, startPos, -1)
73
-
74
- if (!newSelection) {
75
- return false
76
- }
77
-
78
- view.dispatch(view.state.tr.setSelection(newSelection))
79
- view.focus()
80
- return true
81
- }
82
-
83
- const ArrowRight = (state, dispatch, getNode, view, getPos) => {
84
- const docSize = state.doc.nodeSize - 3
85
- // If we're at the rightmost position, stopEvent will handle moving out of the tag
86
- if (state.selection.from < docSize) {
87
- // Inside the tag input, move caret right normally
88
- const tr = state.tr.setSelection(
89
- TextSelection.create(
90
- state.doc,
91
- state.selection.from + 1,
92
- state.selection.from + 1
93
- )
94
- )
95
- dispatch(tr)
96
- return true
97
- } else {
98
- return ArrowDown(state, dispatch, getNode, view, getPos)
99
- }
100
- }
101
-
102
- const ArrowDown = (_state, _dispatch, getNode, view, getPos) => {
103
- // We are at the end of the tag input. Move the cursor beyond
104
- const node = getNode()
105
- const startPos = getPos(),
106
- pos = startPos + node.nodeSize + 1
107
-
108
- const newSelection = nextSelection(view.state, pos, 1)
109
-
110
- if (!newSelection) {
111
- return false
112
- }
113
-
114
- view.dispatch(view.state.tr.setSelection(newSelection))
115
- view.focus()
116
- return true
117
- }
118
-
119
- export const createTagEditor = (view, getPos, getNode) => {
120
- const dom = document.createElement("div")
121
- dom.classList.add("tag-input")
122
- dom.setAttribute("contenteditable", false)
123
- const node = getNode()
124
-
125
- const tagInputView = new EditorView(dom, {
126
- state: EditorState.create({
127
- schema,
128
- doc: schema.nodeFromJSON({
129
- type: "doc",
130
- content: [
131
- {
132
- type: "tag",
133
- content: []
134
- }
135
- ]
136
- }),
137
- plugins: [
138
- history(),
139
- placeholderPlugin(node.attrs.item_title),
140
- pastePlugin(view),
141
- keymap({
142
- "Mod-z": undo,
143
- "Mod-shift-z": undo,
144
- "Mod-y": redo,
145
- Enter: (_state, _dispatch, tagInputView) =>
146
- submitTag(tagInputView, view, getPos),
147
- ArrowLeft: (state, dispatch, _tagInputView) =>
148
- ArrowLeft(state, dispatch, getNode, view, getPos),
149
- ArrowRight: (state, dispatch, _tagInputView) =>
150
- ArrowRight(state, dispatch, getNode, view, getPos),
151
- ArrowUp: (state, dispatch, _tagInputView) =>
152
- ArrowUp(state, dispatch, getNode, view, getPos),
153
- ArrowDown: (state, dispatch, _tagInputView) =>
154
- ArrowDown(state, dispatch, getNode, view, getPos)
155
- })
156
- ]
157
- }),
158
- handleDOMEvents: {
159
- blur: (tagInputView, event) => {
160
- // Handle blur event
161
- event.preventDefault()
162
- // Set a timeout so that change of focus can take place first
163
- window.setTimeout(() => {
164
- // Check if getPos still returns a valid position
165
- const pos = getPos()
166
- if (pos !== undefined && pos !== null) {
167
- submitTag(tagInputView, view, getPos)
168
- }
169
- }, 1)
170
- },
171
- focus: (tagInputView, _event) => {
172
- const startPos = getPos(),
173
- pos =
174
- startPos + view.state.doc.nodeAt(startPos).nodeSize - 1,
175
- $pos = view.state.doc.resolve(pos)
176
- view.dispatch(
177
- view.state.tr.setSelection(new TextSelection($pos))
178
- )
179
- tagInputView.focus()
180
- }
181
- },
182
- handleTextInput: (_view, _from, _to, text) => {
183
- if ([",", ".", ";"].includes(text)) {
184
- submitTag(tagInputView, view, getPos)
185
- return true
186
- }
187
- },
188
- dispatchTransaction: tr => {
189
- const newState = tagInputView.state.apply(tr)
190
- tagInputView.updateState(newState)
191
- }
192
- })
193
-
194
- // Store references in WeakMap for access from the plugin
195
- tagInputReferences.set(dom, {
196
- tagInputView,
197
- mainView: view,
198
- getPos
199
- })
200
-
201
- return [dom, tagInputView]
202
- }
@@ -1,74 +0,0 @@
1
- import {Plugin} from "prosemirror-state"
2
- import {Decoration, DecorationSet} from "prosemirror-view"
3
-
4
- export const placeholderPlugin = nodeTitle =>
5
- new Plugin({
6
- props: {
7
- decorations: state => {
8
- const doc = state.doc
9
- if (
10
- doc.childCount === 1 &&
11
- doc.firstChild.isTextblock &&
12
- doc.firstChild.content.size === 0
13
- ) {
14
- const placeHolder = document.createElement("span")
15
- placeHolder.classList.add("fw-placeholder")
16
- // There is only one field, so we know the selection is there
17
- placeHolder.classList.add("fw-selected")
18
- placeHolder.setAttribute(
19
- "data-placeholder",
20
- `${gettext("Add")} ${nodeTitle.toLowerCase()}...`
21
- )
22
- return DecorationSet.create(doc, [
23
- Decoration.widget(1, placeHolder)
24
- ])
25
- }
26
- }
27
- }
28
- })
29
-
30
- export const pastePlugin = editorView => {
31
- return new Plugin({
32
- props: {
33
- handleDOMEvents: {
34
- paste(_view, event) {
35
- const html = event.clipboardData.getData("text/html"),
36
- text = event.clipboardData.getData("text/plain"),
37
- slice = text
38
- .split(/[,;.]/)
39
- .map(item => item.trim())
40
- .filter(item => item.length)
41
- let tags
42
- if (text && !html) {
43
- tags = slice
44
- } else {
45
- // Make a paste DOM document
46
- const clipboardDoc =
47
- document.implementation.createHTMLDocument(
48
- "paste document"
49
- )
50
- const pasteHTML = document.createElement("body")
51
- clipboardDoc.body.appendChild(pasteHTML)
52
- pasteHTML.innerHTML = html
53
- tags = Array.from(
54
- pasteHTML.querySelectorAll("span.tag")
55
- ).map(tag => tag.textContent)
56
- }
57
- if (!tags.length) {
58
- return
59
- }
60
- const pos = editorView.state.selection.from
61
- const tr = editorView.state.tr
62
- tags.reverse().forEach(tag => {
63
- const node = editorView.state.schema.nodes.tag.create({
64
- tag
65
- })
66
- tr.insert(pos, node)
67
- })
68
- editorView.dispatch(tr)
69
- return true
70
- }
71
- }
72
- }
73
- })
74
- }