vibe-editor 0.0.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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/package.json +56 -0
  4. package/src/fonts/bravura/FONTLOG.txt +243 -0
  5. package/src/fonts/bravura/OFL-FAQ.txt +369 -0
  6. package/src/fonts/bravura/OFL.txt +94 -0
  7. package/src/fonts/bravura/bravura-text.md +153 -0
  8. package/src/fonts/bravura/bravura_metadata.json +34718 -0
  9. package/src/fonts/bravura/eot/Bravura.eot +0 -0
  10. package/src/fonts/bravura/eot/BravuraText.eot +0 -0
  11. package/src/fonts/bravura/otf/Bravura.otf +0 -0
  12. package/src/fonts/bravura/otf/BravuraText.otf +0 -0
  13. package/src/fonts/bravura/svg/Bravura.svg +3517 -0
  14. package/src/fonts/bravura/svg/BravuraText.svg +18879 -0
  15. package/src/fonts/bravura/woff/Bravura.woff +0 -0
  16. package/src/fonts/bravura/woff/BravuraText.woff +0 -0
  17. package/src/fonts/colaborate/ColabBol-webfont.eot +0 -0
  18. package/src/fonts/colaborate/ColabBol-webfont.svg +976 -0
  19. package/src/fonts/colaborate/ColabBol-webfont.ttf +0 -0
  20. package/src/fonts/colaborate/ColabBol-webfont.woff +0 -0
  21. package/src/fonts/colaborate/ColabLig-webfont.eot +0 -0
  22. package/src/fonts/colaborate/ColabLig-webfont.svg +976 -0
  23. package/src/fonts/colaborate/ColabLig-webfont.ttf +0 -0
  24. package/src/fonts/colaborate/ColabLig-webfont.woff +0 -0
  25. package/src/fonts/colaborate/ColabMed-webfont.eot +0 -0
  26. package/src/fonts/colaborate/ColabMed-webfont.svg +976 -0
  27. package/src/fonts/colaborate/ColabMed-webfont.ttf +0 -0
  28. package/src/fonts/colaborate/ColabMed-webfont.woff +0 -0
  29. package/src/fonts/colaborate/ColabReg-webfont.eot +0 -0
  30. package/src/fonts/colaborate/ColabReg-webfont.svg +976 -0
  31. package/src/fonts/colaborate/ColabReg-webfont.ttf +0 -0
  32. package/src/fonts/colaborate/ColabReg-webfont.woff +0 -0
  33. package/src/fonts/colaborate/ColabThi-webfont.eot +0 -0
  34. package/src/fonts/colaborate/ColabThi-webfont.svg +970 -0
  35. package/src/fonts/colaborate/ColabThi-webfont.ttf +0 -0
  36. package/src/fonts/colaborate/ColabThi-webfont.woff +0 -0
  37. package/src/images/GUI/.DS_Store +0 -0
  38. package/src/images/GUI/backward-fast-solid.svg +1 -0
  39. package/src/images/GUI/bars-solid.svg +1 -0
  40. package/src/images/GUI/caret-left-solid.svg +1 -0
  41. package/src/images/GUI/caret-right-solid.svg +1 -0
  42. package/src/images/GUI/edit-solid.svg +1 -0
  43. package/src/images/GUI/pause-solid.svg +1 -0
  44. package/src/images/GUI/play-solid.svg +1 -0
  45. package/src/images/GUI/triplet.svg +21 -0
  46. package/src/images/GUI/zoomin.svg +1 -0
  47. package/src/images/GUI/zoomout.svg +1 -0
  48. package/src/images/bravura_notes/.DS_Store +0 -0
  49. package/src/images/bravura_notes/16th.svg +1 -0
  50. package/src/images/bravura_notes/32th.svg +1 -0
  51. package/src/images/bravura_notes/alterDDown.svg +1 -0
  52. package/src/images/bravura_notes/alterDUp.svg +1 -0
  53. package/src/images/bravura_notes/alterDown.svg +1 -0
  54. package/src/images/bravura_notes/alterNeutral.svg +1 -0
  55. package/src/images/bravura_notes/alterUp.svg +1 -0
  56. package/src/images/bravura_notes/beams.svg +1 -0
  57. package/src/images/bravura_notes/eigth.svg +1 -0
  58. package/src/images/bravura_notes/full.svg +1 -0
  59. package/src/images/bravura_notes/half.svg +1 -0
  60. package/src/images/bravura_notes/oneDot.svg +1 -0
  61. package/src/images/bravura_notes/pauseNote.svg +1 -0
  62. package/src/images/bravura_notes/quarter.svg +1 -0
  63. package/src/images/bravura_notes/tie.svg +1 -0
  64. package/src/images/bravura_notes/twoDot.svg +1 -0
  65. package/src/scripts/js/.DS_Store +0 -0
  66. package/src/scripts/js/Core.js +887 -0
  67. package/src/scripts/js/MusicPlayer.js +572 -0
  68. package/src/scripts/js/MusicProcessor.js +652 -0
  69. package/src/scripts/js/VerovioScoreEditor.js +183 -0
  70. package/src/scripts/js/assets/mei_template.js +161 -0
  71. package/src/scripts/js/constants.js +20 -0
  72. package/src/scripts/js/datastructures/MeasureMatrix.js +235 -0
  73. package/src/scripts/js/datastructures/ScoreGraph.js +432 -0
  74. package/src/scripts/js/datastructures/ScoreNode.js +78 -0
  75. package/src/scripts/js/entry.js +4 -0
  76. package/src/scripts/js/gui/Annotations.js +456 -0
  77. package/src/scripts/js/gui/Cursor.js +203 -0
  78. package/src/scripts/js/gui/CustomAnnotationDrawer.js +114 -0
  79. package/src/scripts/js/gui/CustomAnnotationShapeDrawer.js +114 -0
  80. package/src/scripts/js/gui/HarmonyLabel.js +104 -0
  81. package/src/scripts/js/gui/Label.js +2 -0
  82. package/src/scripts/js/gui/PhantomElement.js +132 -0
  83. package/src/scripts/js/gui/ScoreManipulator.js +156 -0
  84. package/src/scripts/js/gui/Tabbar.js +675 -0
  85. package/src/scripts/js/gui/TempoLabel.js +60 -0
  86. package/src/scripts/js/gui/Toolbar copy.js +614 -0
  87. package/src/scripts/js/gui/Toolbar.js +618 -0
  88. package/src/scripts/js/handlers/AnnotationChangeHandler.js +567 -0
  89. package/src/scripts/js/handlers/AnnotationDragHandler.js +113 -0
  90. package/src/scripts/js/handlers/AnnotationLineHandler.js +113 -0
  91. package/src/scripts/js/handlers/ArticulationHandler.js +20 -0
  92. package/src/scripts/js/handlers/ClickModeHandler.js +265 -0
  93. package/src/scripts/js/handlers/CustomAnnotationShapeDrawer.js +131 -0
  94. package/src/scripts/js/handlers/CustomToolbarHandler.js +297 -0
  95. package/src/scripts/js/handlers/DeleteHandler.js +102 -0
  96. package/src/scripts/js/handlers/GlobalKeyboardHandler.js +367 -0
  97. package/src/scripts/js/handlers/Handler.js +2 -0
  98. package/src/scripts/js/handlers/HarmonyHandler.js +282 -0
  99. package/src/scripts/js/handlers/InsertModeHandler copy.js +423 -0
  100. package/src/scripts/js/handlers/InsertModeHandler.js +380 -0
  101. package/src/scripts/js/handlers/InsertModeHandler_deprecated.js +424 -0
  102. package/src/scripts/js/handlers/KeyModeHandler copy.js +407 -0
  103. package/src/scripts/js/handlers/KeyModeHandler.js +456 -0
  104. package/src/scripts/js/handlers/KeyModeHandler_deprecated.js +411 -0
  105. package/src/scripts/js/handlers/LabelHandler.js +461 -0
  106. package/src/scripts/js/handlers/ModHandler.js +311 -0
  107. package/src/scripts/js/handlers/NoteDragHandler copy.js +148 -0
  108. package/src/scripts/js/handlers/NoteDragHandler.js +97 -0
  109. package/src/scripts/js/handlers/NoteDragHandler_deprecated.js +150 -0
  110. package/src/scripts/js/handlers/PhantomElementHandler.js +168 -0
  111. package/src/scripts/js/handlers/ScoreManipulatorHandler.js +135 -0
  112. package/src/scripts/js/handlers/SelectionHandler.js +218 -0
  113. package/src/scripts/js/handlers/SideBarHandler.js +499 -0
  114. package/src/scripts/js/handlers/TooltipHandler.js +132 -0
  115. package/src/scripts/js/handlers/WindowHandler.js +257 -0
  116. package/src/scripts/js/utils/DOMCreator.js +174 -0
  117. package/src/scripts/js/utils/MEIConverter.js +64 -0
  118. package/src/scripts/js/utils/MEIOperations.js +2112 -0
  119. package/src/scripts/js/utils/Mouse2MEI.js +735 -0
  120. package/src/scripts/js/utils/Mouse2SVG.js +737 -0
  121. package/src/scripts/js/utils/SVGEditor.js +352 -0
  122. package/src/scripts/js/utils/SVGFiller.js +245 -0
  123. package/src/scripts/js/utils/Types.js +2 -0
  124. package/src/scripts/js/utils/VerovioWrapper copy.js +156 -0
  125. package/src/scripts/js/utils/VerovioWrapper.js +165 -0
  126. package/src/scripts/js/utils/VerovioWrapperLocal.js +156 -0
  127. package/src/scripts/js/utils/convenienceQueries.js +37 -0
  128. package/src/scripts/js/utils/coordinates.js +54 -0
  129. package/src/scripts/js/utils/firefoxBBoxes.js +143 -0
  130. package/src/scripts/js/utils/mappings.js +332 -0
  131. package/src/scripts/js/utils/random.js +45 -0
  132. package/src/styles/VerovioScoreEditor.css +694 -0
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //@ts-ignore
4
+ //const $ = H5P.jQuery;
5
+ /**
6
+ * A wrapper around the verovio web worker to permit mocking in tests.
7
+ */
8
+ class VerovioWrapper {
9
+ constructor() {
10
+ //@ts-ignore
11
+ this.vrvToolkit = new verovio.toolkit() || null;
12
+ this.r = 1;
13
+ if (this.isRetina()) {
14
+ this.r = 2;
15
+ }
16
+ this.widthValue = 2500;
17
+ this.options = {
18
+ // from: 'mei',
19
+ footer: 'none',
20
+ header: 'none',
21
+ pageMarginLeft: 50,
22
+ pageMarginTop: 100,
23
+ pageMarginBottom: 0,
24
+ font: 'Bravura',
25
+ //adjustPageWidth: 0,
26
+ //adjustPageHeight: 0,
27
+ noJustification: 1,
28
+ pageWidth: (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth),
29
+ //svgRemoveXlink: true,
30
+ svgViewBox: true,
31
+ //svgBoundingBoxes: true
32
+ //pageHeight: 60000
33
+ };
34
+ this.vrvToolkit.setOptions(this.options);
35
+ }
36
+ /**
37
+ * Detect, if retina display is used.
38
+ * This will be important to adjust the pagewith with the given zoom level
39
+ * @returns
40
+ */
41
+ isRetina() {
42
+ if (window.matchMedia) {
43
+ var mq = window.matchMedia("only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)");
44
+ return (mq && mq.matches);
45
+ }
46
+ }
47
+ setMessage(data) {
48
+ this.r = 1;
49
+ if (this.isRetina()) {
50
+ this.r = 2;
51
+ }
52
+ this.vrvToolkit.setOptions({
53
+ //pageWidth: (this.vrvToolkit.getOptions().pageWidth / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
54
+ pageWidth: (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
55
+ });
56
+ this.data = data || null;
57
+ var result = {
58
+ id: data.id
59
+ };
60
+ switch (data.action) {
61
+ case 'renderData':
62
+ result.mei = this.renderData();
63
+ break;
64
+ case 'getElementAttr':
65
+ result.attributes = this.getElementAttr();
66
+ break;
67
+ case 'getTimeForElement':
68
+ result.time = this.getTimeForElement();
69
+ break;
70
+ case "getTimesForElement":
71
+ result.times = this.getTimesForElement();
72
+ case 'edit':
73
+ result.result = this.edit();
74
+ break;
75
+ case 'getMEI':
76
+ result.mei = this.getMEI();
77
+ break;
78
+ case 'editInfo':
79
+ result.info = this.editInfo();
80
+ break;
81
+ case 'renderToSVG':
82
+ result.svg = this.renderToSVG();
83
+ break;
84
+ case 'renderToMidi':
85
+ result.midi = this.renderToMidi();
86
+ default:
87
+ break;
88
+ }
89
+ return result;
90
+ }
91
+ getID() {
92
+ return this.data.id;
93
+ }
94
+ renderData() {
95
+ var meiString;
96
+ if (this.data.isUrl) {
97
+ const req = new XMLHttpRequest();
98
+ req.open('GET', this.data.mei, false);
99
+ //req.onload = () => req.status === 200 ? resolve(req.response) : reject(Error(req.statusText));
100
+ //req.onerror = (e) => reject(Error(`Network Error: ` + e));
101
+ req.send();
102
+ if (req.status === 200) {
103
+ meiString = req.response;
104
+ }
105
+ }
106
+ else {
107
+ meiString = this.data.mei;
108
+ }
109
+ return this.vrvToolkit.renderData(meiString, {});
110
+ }
111
+ getElementAttr() {
112
+ return this.vrvToolkit.getElementAttr(this.data.elementId);
113
+ }
114
+ getTimeForElement() {
115
+ return this.vrvToolkit.getTimeForElement(this.data.elementId);
116
+ }
117
+ getTimesForElement() {
118
+ return this.vrvToolkit.getTimesForElement(this.data.elementId);
119
+ }
120
+ edit() {
121
+ return this.vrvToolkit.edit(this.data.editorAction);
122
+ }
123
+ getMEI() {
124
+ return this.vrvToolkit.getMEI({
125
+ pageNo: 0,
126
+ scoreBased: true
127
+ });
128
+ }
129
+ editInfo() {
130
+ return this.vrvToolkit.editInfo();
131
+ }
132
+ renderToSVG() {
133
+ return this.vrvToolkit.renderToSVG(1);
134
+ }
135
+ renderToMidi() {
136
+ return this.vrvToolkit.renderToMIDI();
137
+ }
138
+ /**
139
+ * Get Toolkit instance to use any method of verovio outside of score editor.
140
+ * FOr all available methods go to: https://book.verovio.org/toolkit-reference/toolkit-methods.html
141
+ * @returns toolkit instance
142
+ */
143
+ getToolkit() {
144
+ return this.vrvToolkit;
145
+ }
146
+ getOptions() {
147
+ return this.options;
148
+ }
149
+ setWidthValue(wv) {
150
+ this.widthValue = wv;
151
+ }
152
+ setHeightValue(hv) {
153
+ this.heightValue = hv;
154
+ }
155
+ }
156
+ exports.default = VerovioWrapper;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const midi_1 = require("@tonejs/midi");
4
+ const buffer_1 = require("buffer");
5
+ //@ts-ignore
6
+ //const $ = H5P.jQuery;
7
+ /**
8
+ * A wrapper around the verovio web worker to permit mocking in tests.
9
+ */
10
+ class VerovioWrapper {
11
+ constructor() {
12
+ //@ts-ignore
13
+ this.vrvToolkit = new verovio.toolkit() || null;
14
+ this.r = 1;
15
+ // if (this.isRetina()) {
16
+ // this.r = 2
17
+ // }
18
+ this.widthValue = 1500;
19
+ var pageWidth = (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth);
20
+ this.options = {
21
+ footer: 'none',
22
+ header: 'none',
23
+ pageMarginLeft: 50,
24
+ pageMarginTop: 50,
25
+ adjustPageHeight: true,
26
+ font: 'Bravura',
27
+ pageWidth: pageWidth / 2,
28
+ //pageHeight: pageWidth / 4,
29
+ //justifyVertically: true,
30
+ svgViewBox: true,
31
+ };
32
+ this.vrvToolkit.setOptions(this.options);
33
+ }
34
+ /**
35
+ * Detect, if retina display is used.
36
+ * This will be important to adjust the pagewith with the given zoom level
37
+ * @returns
38
+ */
39
+ isRetina() {
40
+ if (window.matchMedia) {
41
+ var mq = window.matchMedia("only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)");
42
+ return (mq && mq.matches);
43
+ }
44
+ }
45
+ setMessage(data) {
46
+ this.r = 1;
47
+ if (this.isRetina()) {
48
+ this.r = 2;
49
+ }
50
+ this.vrvToolkit.setOptions({
51
+ //pageWidth: (this.vrvToolkit.getOptions().pageWidth / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
52
+ pageWidth: (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
53
+ });
54
+ this.data = data || null;
55
+ var result = {
56
+ id: data.id
57
+ };
58
+ switch (data.action) {
59
+ case 'renderData':
60
+ result.svg = this.renderData();
61
+ break;
62
+ case 'getElementAttr':
63
+ result.attributes = this.getElementAttr();
64
+ break;
65
+ case 'getTimeForElement':
66
+ result.time = this.getTimeForElement();
67
+ break;
68
+ case "getTimesForElement":
69
+ result.times = this.getTimesForElement();
70
+ case 'edit':
71
+ result.result = this.edit();
72
+ break;
73
+ case 'getMEI':
74
+ result.mei = this.getMEI();
75
+ break;
76
+ case 'editInfo':
77
+ result.info = this.editInfo();
78
+ break;
79
+ case 'renderToSVG':
80
+ result.svg = this.renderToSVG(data.pageNo);
81
+ break;
82
+ case 'renderToMidi':
83
+ result.midi = this.renderToMidi();
84
+ default:
85
+ break;
86
+ }
87
+ return result;
88
+ }
89
+ getID() {
90
+ return this.data.id;
91
+ }
92
+ renderData() {
93
+ var meiString;
94
+ if (this.data.isUrl) {
95
+ const req = new XMLHttpRequest();
96
+ req.open('GET', this.data.mei, false);
97
+ //req.onload = () => req.status === 200 ? resolve(req.response) : reject(Error(req.statusText));
98
+ //req.onerror = (e) => reject(Error(`Network Error: ` + e));
99
+ req.send();
100
+ if (req.status === 200) {
101
+ meiString = req.response;
102
+ }
103
+ }
104
+ else {
105
+ meiString = this.data.mei;
106
+ }
107
+ var render = this.vrvToolkit.renderData(meiString, {});
108
+ // when page count reaches 2 then each one should be rendered seperately
109
+ return render;
110
+ }
111
+ getElementAttr() {
112
+ return this.vrvToolkit.getElementAttr(this.data.elementId);
113
+ }
114
+ getTimeForElement() {
115
+ return this.vrvToolkit.getTimeForElement(this.data.elementId);
116
+ }
117
+ getTimesForElement() {
118
+ return this.vrvToolkit.getTimesForElement(this.data.elementId);
119
+ }
120
+ edit() {
121
+ return this.vrvToolkit.edit(this.data.editorAction);
122
+ }
123
+ getMEI() {
124
+ return this.vrvToolkit.getMEI({
125
+ pageNo: 0,
126
+ scoreBased: true
127
+ });
128
+ }
129
+ editInfo() {
130
+ return this.vrvToolkit.editInfo();
131
+ }
132
+ renderToSVG(pageNo) {
133
+ return this.vrvToolkit.renderToSVG(pageNo);
134
+ }
135
+ renderToMidi() {
136
+ return this.vrvToolkit.renderToMIDI();
137
+ }
138
+ getMidiJSON() {
139
+ var midiString = this.renderToMidi();
140
+ var buffer = buffer_1.Buffer.from(midiString, "base64");
141
+ return new midi_1.Midi(buffer);
142
+ }
143
+ /**
144
+ * Get Toolkit instance to use any method of verovio outside of score editor.
145
+ * FOr all available methods go to: https://book.verovio.org/toolkit-reference/toolkit-methods.html
146
+ * @returns toolkit instance
147
+ */
148
+ getToolkit() {
149
+ return this.vrvToolkit;
150
+ }
151
+ getOptions() {
152
+ return this.options;
153
+ }
154
+ setWidthValue(wv) {
155
+ this.options.pageWidth = wv;
156
+ this.vrvToolkit.setOptions(this.options);
157
+ }
158
+ setHeightValue(hv) {
159
+ if (typeof hv === "string")
160
+ hv = parseFloat(hv);
161
+ this.options.pageHeight = hv + 250;
162
+ this.vrvToolkit.setOptions(this.options);
163
+ }
164
+ }
165
+ exports.default = VerovioWrapper;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const verovio_1 = require("verovio");
4
+ //@ts-ignore
5
+ //const $ = H5P.jQuery;
6
+ /**
7
+ * A wrapper around the verovio web worker to permit mocking in tests.
8
+ */
9
+ class VerovioWrapper {
10
+ constructor() {
11
+ this.vrvToolkit = new verovio_1.default.toolkit() || null;
12
+ this.r = 1;
13
+ if (this.isRetina()) {
14
+ this.r = 2;
15
+ }
16
+ this.widthValue = 2500;
17
+ this.options = {
18
+ // from: 'mei',
19
+ footer: 'none',
20
+ header: 'none',
21
+ pageMarginLeft: 50,
22
+ pageMarginTop: 100,
23
+ pageMarginBottom: 0,
24
+ font: 'Bravura',
25
+ //adjustPageWidth: 0,
26
+ //adjustPageHeight: 0,
27
+ noJustification: 1,
28
+ pageWidth: (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth),
29
+ //svgRemoveXlink: true,
30
+ svgViewBox: true,
31
+ //svgBoundingBoxes: true
32
+ //pageHeight: 60000
33
+ };
34
+ this.vrvToolkit.setOptions(this.options);
35
+ }
36
+ /**
37
+ * Detect, if retina display is used.
38
+ * This will be important to adjust the pagewith with the given zoom level
39
+ * @returns
40
+ */
41
+ isRetina() {
42
+ if (window.matchMedia) {
43
+ var mq = window.matchMedia("only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)");
44
+ return (mq && mq.matches);
45
+ }
46
+ }
47
+ setMessage(data) {
48
+ this.r = 1;
49
+ if (this.isRetina()) {
50
+ this.r = 2;
51
+ }
52
+ this.vrvToolkit.setOptions({
53
+ //pageWidth: (this.vrvToolkit.getOptions().pageWidth / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
54
+ pageWidth: (this.widthValue / (window.devicePixelRatio / this.r)) / (screen.availHeight / window.innerWidth)
55
+ });
56
+ this.data = data || null;
57
+ var result = {
58
+ id: data.id
59
+ };
60
+ switch (data.action) {
61
+ case 'renderData':
62
+ result.mei = this.renderData();
63
+ break;
64
+ case 'getElementAttr':
65
+ result.attributes = this.getElementAttr();
66
+ break;
67
+ case 'getTimeForElement':
68
+ result.time = this.getTimeForElement();
69
+ break;
70
+ case "getTimesForElement":
71
+ result.times = this.getTimesForElement();
72
+ case 'edit':
73
+ result.result = this.edit();
74
+ break;
75
+ case 'getMEI':
76
+ result.mei = this.getMEI();
77
+ break;
78
+ case 'editInfo':
79
+ result.info = this.editInfo();
80
+ break;
81
+ case 'renderToSVG':
82
+ result.svg = this.renderToSVG();
83
+ break;
84
+ case 'renderToMidi':
85
+ result.midi = this.renderToMidi();
86
+ default:
87
+ break;
88
+ }
89
+ return result;
90
+ }
91
+ getID() {
92
+ return this.data.id;
93
+ }
94
+ renderData() {
95
+ var meiString;
96
+ if (this.data.isUrl) {
97
+ const req = new XMLHttpRequest();
98
+ req.open('GET', this.data.mei, false);
99
+ //req.onload = () => req.status === 200 ? resolve(req.response) : reject(Error(req.statusText));
100
+ //req.onerror = (e) => reject(Error(`Network Error: ` + e));
101
+ req.send();
102
+ if (req.status === 200) {
103
+ meiString = req.response;
104
+ }
105
+ }
106
+ else {
107
+ meiString = this.data.mei;
108
+ }
109
+ return this.vrvToolkit.renderData(meiString, {});
110
+ }
111
+ getElementAttr() {
112
+ return this.vrvToolkit.getElementAttr(this.data.elementId);
113
+ }
114
+ getTimeForElement() {
115
+ return this.vrvToolkit.getTimeForElement(this.data.elementId);
116
+ }
117
+ getTimesForElement() {
118
+ return this.vrvToolkit.getTimesForElement(this.data.elementId);
119
+ }
120
+ edit() {
121
+ return this.vrvToolkit.edit(this.data.editorAction);
122
+ }
123
+ getMEI() {
124
+ return this.vrvToolkit.getMEI({
125
+ pageNo: 0,
126
+ scoreBased: true
127
+ });
128
+ }
129
+ editInfo() {
130
+ return this.vrvToolkit.editInfo();
131
+ }
132
+ renderToSVG() {
133
+ return this.vrvToolkit.renderToSVG(1);
134
+ }
135
+ renderToMidi() {
136
+ return this.vrvToolkit.renderToMIDI();
137
+ }
138
+ /**
139
+ * Get Toolkit instance to use any method of verovio outside of score editor.
140
+ * FOr all available methods go to: https://book.verovio.org/toolkit-reference/toolkit-methods.html
141
+ * @returns toolkit instance
142
+ */
143
+ getToolkit() {
144
+ return this.vrvToolkit;
145
+ }
146
+ getOptions() {
147
+ return this.options;
148
+ }
149
+ setWidthValue(wv) {
150
+ this.widthValue = wv;
151
+ }
152
+ setHeightValue(hv) {
153
+ this.heightValue = hv;
154
+ }
155
+ }
156
+ exports.default = VerovioWrapper;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasActiveElement = exports.getBySelector = exports.getContainer = exports.getInteractOverlay = exports.getVrvSVG = void 0;
4
+ function getVrvSVG(containerId, pageNo = 1) {
5
+ return document.querySelector("#" + containerId + " #vrvSVG");
6
+ }
7
+ exports.getVrvSVG = getVrvSVG;
8
+ function getInteractOverlay(containerId) {
9
+ return document.querySelector("#" + containerId + " #interactionOverlay");
10
+ }
11
+ exports.getInteractOverlay = getInteractOverlay;
12
+ function getContainer(id) {
13
+ return document.getElementById(id);
14
+ }
15
+ exports.getContainer = getContainer;
16
+ /**
17
+ * Get any element by defining parent, target an selector. Booleans will define if the strings are handeled as ids
18
+ */
19
+ function getBySelector(parent, parentModulator, target, targetModulator, selector, all = false) {
20
+ if (parentModulator !== null) {
21
+ parent = parentModulator + parent;
22
+ }
23
+ if (targetModulator) {
24
+ target = targetModulator + target;
25
+ }
26
+ if (all) {
27
+ return Array.from(document.querySelectorAll(parent + " " + selector + " " + target));
28
+ }
29
+ else {
30
+ return document.querySelector(parent + " " + selector + " " + target);
31
+ }
32
+ }
33
+ exports.getBySelector = getBySelector;
34
+ function hasActiveElement(containerId) {
35
+ return document.getElementById(containerId).classList.contains("activeContainer");
36
+ }
37
+ exports.hasActiveElement = hasActiveElement;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformToDOMMatrixCoordinates = exports.getDOMMatrixCoordinates = void 0;
4
+ /**
5
+ * Get DOMMatrix coordnates of element according to parent canvas class. Returns null if no canvas is found. If element is DOMRect, canvas must be provided
6
+ * @param element
7
+ * @param canvas provide canvas for element, otherwise closest canvas class will be retrieved
8
+ * @returns
9
+ */
10
+ function getDOMMatrixCoordinates(element, canvas = null) {
11
+ if (canvas === null) {
12
+ canvas = element instanceof Element ? element.closest(".canvas") : null;
13
+ if (element instanceof DOMRect) {
14
+ throw new Error("Canvas must be provided, if input is instance of DOMRect. Actual instance: " + element.constructor.name);
15
+ }
16
+ if (canvas === null)
17
+ return;
18
+ }
19
+ if (canvas.id === "vrvSVG")
20
+ canvas = canvas.previousElementSibling;
21
+ var canvasMatrix = canvas.getScreenCTM().inverse();
22
+ //var elementBBox = !(element instanceof Element) ? element : element.getBoundingClientRect()
23
+ var elementBBox;
24
+ try {
25
+ elementBBox = element.getBoundingClientRect();
26
+ }
27
+ catch (error) {
28
+ elementBBox = element;
29
+ }
30
+ var ptLT = new DOMPoint(elementBBox.left, elementBBox.top);
31
+ ptLT = ptLT.matrixTransform(canvasMatrix);
32
+ var ptRB = new DOMPoint(elementBBox.right, elementBBox.bottom);
33
+ ptRB = ptRB.matrixTransform(canvasMatrix);
34
+ var width = ptRB.x - ptLT.x;
35
+ var height = ptRB.y - ptLT.y;
36
+ return { left: ptLT.x, top: ptLT.y, right: ptRB.x, bottom: ptRB.y, width: width, height: height, x: ptLT.x, y: ptLT.y };
37
+ }
38
+ exports.getDOMMatrixCoordinates = getDOMMatrixCoordinates;
39
+ /**
40
+ * Transforms the given coordinates for a given canvas
41
+ * @param x
42
+ * @param y
43
+ * @param canvas
44
+ * @returns
45
+ */
46
+ function transformToDOMMatrixCoordinates(x, y, canvas) {
47
+ if (canvas.id === "vrvSVG")
48
+ canvas = canvas.previousElementSibling;
49
+ var canvasMatrix = canvas.getScreenCTM().inverse();
50
+ var pt = new DOMPoint(x, y);
51
+ pt = pt.matrixTransform(canvasMatrix);
52
+ return { x: pt.x, y: pt.y };
53
+ }
54
+ exports.transformToDOMMatrixCoordinates = transformToDOMMatrixCoordinates;