notations 0.0.43 → 0.0.46
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.
- package/README.md +38 -0
- package/lib/cjs/beats.d.ts +111 -0
- package/lib/cjs/beats.js +527 -0
- package/lib/cjs/beats.js.map +1 -0
- package/lib/cjs/carnatic/LineView.d.ts +20 -0
- package/lib/cjs/carnatic/LineView.js +73 -0
- package/lib/cjs/carnatic/LineView.js.map +1 -0
- package/lib/cjs/carnatic/NotationView.d.ts +31 -0
- package/lib/cjs/carnatic/NotationView.js +254 -0
- package/lib/cjs/carnatic/NotationView.js.map +1 -0
- package/lib/cjs/carnatic/atomviews.d.ts +14 -7
- package/lib/cjs/carnatic/atomviews.js +175 -138
- package/lib/cjs/carnatic/atomviews.js.map +1 -1
- package/lib/cjs/carnatic/beatviews.d.ts +10 -14
- package/lib/cjs/carnatic/beatviews.js +58 -109
- package/lib/cjs/carnatic/beatviews.js.map +1 -1
- package/lib/cjs/carnatic/embelishments.d.ts +38 -32
- package/lib/cjs/carnatic/embelishments.js +39 -20
- package/lib/cjs/carnatic/embelishments.js.map +1 -1
- package/lib/cjs/carnatic/index.d.ts +2 -0
- package/lib/cjs/carnatic/index.js +7 -1
- package/lib/cjs/carnatic/index.js.map +1 -1
- package/lib/cjs/commands.js +5 -1
- package/lib/cjs/commands.js.map +1 -1
- package/lib/cjs/core.d.ts +15 -73
- package/lib/cjs/core.js +201 -565
- package/lib/cjs/core.js.map +1 -1
- package/lib/cjs/cycle.d.ts +47 -0
- package/lib/cjs/cycle.js +496 -0
- package/lib/cjs/cycle.js.map +1 -0
- package/lib/cjs/entity.d.ts +24 -0
- package/lib/cjs/entity.js +135 -0
- package/lib/cjs/entity.js.map +1 -0
- package/lib/cjs/index.d.ts +3 -0
- package/lib/cjs/index.js +8 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/iterators.d.ts +14 -2
- package/lib/cjs/iterators.js +82 -6
- package/lib/cjs/iterators.js.map +1 -1
- package/lib/cjs/layouts.d.ts +7 -106
- package/lib/cjs/layouts.js +9 -479
- package/lib/cjs/layouts.js.map +1 -1
- package/lib/cjs/loader.d.ts +2 -1
- package/lib/cjs/loader.js +36 -27
- package/lib/cjs/loader.js.map +1 -1
- package/lib/cjs/notation.d.ts +3 -1
- package/lib/cjs/notation.js +6 -4
- package/lib/cjs/notation.js.map +1 -1
- package/lib/cjs/parser.js +10 -5
- package/lib/cjs/parser.js.map +1 -1
- package/lib/cjs/shapes.d.ts +35 -14
- package/lib/cjs/shapes.js +158 -44
- package/lib/cjs/shapes.js.map +1 -1
- package/lib/cjs/utils.d.ts +2 -1
- package/lib/cjs/utils.js +9 -4
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/beats.d.ts +111 -0
- package/lib/esm/beats.js +501 -0
- package/lib/esm/beats.js.map +1 -0
- package/lib/esm/carnatic/LineView.d.ts +20 -0
- package/lib/esm/carnatic/LineView.js +47 -0
- package/lib/esm/carnatic/LineView.js.map +1 -0
- package/lib/esm/carnatic/NotationView.d.ts +31 -0
- package/lib/esm/carnatic/NotationView.js +228 -0
- package/lib/esm/carnatic/NotationView.js.map +1 -0
- package/lib/esm/carnatic/atomviews.d.ts +14 -7
- package/lib/esm/carnatic/atomviews.js +170 -137
- package/lib/esm/carnatic/atomviews.js.map +1 -1
- package/lib/esm/carnatic/beatviews.d.ts +10 -14
- package/lib/esm/carnatic/beatviews.js +54 -109
- package/lib/esm/carnatic/beatviews.js.map +1 -1
- package/lib/esm/carnatic/embelishments.d.ts +38 -32
- package/lib/esm/carnatic/embelishments.js +33 -18
- package/lib/esm/carnatic/embelishments.js.map +1 -1
- package/lib/esm/carnatic/index.d.ts +2 -0
- package/lib/esm/carnatic/index.js +2 -0
- package/lib/esm/carnatic/index.js.map +1 -1
- package/lib/esm/core.d.ts +15 -73
- package/lib/esm/core.js +192 -560
- package/lib/esm/core.js.map +1 -1
- package/lib/esm/cycle.d.ts +47 -0
- package/lib/esm/cycle.js +470 -0
- package/lib/esm/cycle.js.map +1 -0
- package/lib/esm/entity.d.ts +24 -0
- package/lib/esm/entity.js +132 -0
- package/lib/esm/entity.js.map +1 -0
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +3 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/iterators.d.ts +14 -2
- package/lib/esm/iterators.js +73 -1
- package/lib/esm/iterators.js.map +1 -1
- package/lib/esm/layouts.d.ts +7 -106
- package/lib/esm/layouts.js +1 -475
- package/lib/esm/layouts.js.map +1 -1
- package/lib/esm/loader.d.ts +2 -1
- package/lib/esm/loader.js +27 -23
- package/lib/esm/loader.js.map +1 -1
- package/lib/esm/notation.d.ts +3 -1
- package/lib/esm/notation.js +3 -1
- package/lib/esm/notation.js.map +1 -1
- package/lib/esm/parser.js +5 -4
- package/lib/esm/parser.js.map +1 -1
- package/lib/esm/shapes.d.ts +35 -14
- package/lib/esm/shapes.js +152 -42
- package/lib/esm/shapes.js.map +1 -1
- package/lib/esm/utils.d.ts +2 -1
- package/lib/esm/utils.js +3 -2
- package/lib/esm/utils.js.map +1 -1
- package/package.json +33 -28
- package/styles/NotationView.scss +35 -0
|
@@ -27,7 +27,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
27
27
|
};
|
|
28
28
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
29
|
if (k2 === undefined) k2 = k;
|
|
30
|
-
Object.
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
31
35
|
}) : (function(o, m, k, k2) {
|
|
32
36
|
if (k2 === undefined) k2 = k;
|
|
33
37
|
o[k2] = m[k];
|
|
@@ -56,12 +60,23 @@ var __values = (this && this.__values) || function(o) {
|
|
|
56
60
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
57
61
|
};
|
|
58
62
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
-
exports.createAtomView = exports.LeafAtomView = void 0;
|
|
63
|
+
exports.createAtomView = exports.LeafAtomView = exports.GroupView = void 0;
|
|
60
64
|
var TSU = __importStar(require("@panyam/tsutils"));
|
|
61
65
|
var core_1 = require("../core");
|
|
62
66
|
var shapes_1 = require("../shapes");
|
|
63
67
|
var embelishments_1 = require("./embelishments");
|
|
64
68
|
var gamakas_1 = require("./gamakas");
|
|
69
|
+
var GroupView = (function (_super) {
|
|
70
|
+
__extends(GroupView, _super);
|
|
71
|
+
function GroupView() {
|
|
72
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
73
|
+
}
|
|
74
|
+
GroupView.prototype.createAtomView = function (atom) {
|
|
75
|
+
return createAtomView(this.groupElement, atom, this.defaultToNotes, 0.7);
|
|
76
|
+
};
|
|
77
|
+
return GroupView;
|
|
78
|
+
}(shapes_1.GroupView));
|
|
79
|
+
exports.GroupView = GroupView;
|
|
65
80
|
var LeafAtomView = (function (_super) {
|
|
66
81
|
__extends(LeafAtomView, _super);
|
|
67
82
|
function LeafAtomView() {
|
|
@@ -72,8 +87,11 @@ var LeafAtomView = (function (_super) {
|
|
|
72
87
|
_this.bottomSlot = [];
|
|
73
88
|
return _this;
|
|
74
89
|
}
|
|
90
|
+
LeafAtomView.prototype.refreshBBox = function () {
|
|
91
|
+
return TSU.DOM.svgBBox(this.rootGroup.element);
|
|
92
|
+
};
|
|
75
93
|
LeafAtomView.prototype.refreshMinSize = function () {
|
|
76
|
-
var out = __assign({},
|
|
94
|
+
var out = __assign({}, this.rootText.minSize);
|
|
77
95
|
var totalWidth = this.leftSlot.reduce(function (a, b) { return a + b.minSize.width; }, 0) +
|
|
78
96
|
this.rightSlot.reduce(function (a, b) { return a + b.minSize.width; }, 0) +
|
|
79
97
|
this.leftSlot.length +
|
|
@@ -87,95 +105,92 @@ var LeafAtomView = (function (_super) {
|
|
|
87
105
|
LeafAtomView.prototype.updateBounds = function (x, y, w, h) {
|
|
88
106
|
return [x, y, NaN, NaN];
|
|
89
107
|
};
|
|
90
|
-
LeafAtomView.prototype.
|
|
108
|
+
LeafAtomView.prototype.layoutElements = function () {
|
|
91
109
|
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
|
|
92
|
-
var
|
|
93
|
-
var
|
|
94
|
-
this.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
110
|
+
var textSize = this.rootText.minSize;
|
|
111
|
+
var currX = 0;
|
|
112
|
+
var currY = this.hasY ? this.y : 0;
|
|
113
|
+
try {
|
|
114
|
+
for (var _e = __values(this.leftSlot), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
115
|
+
var emb = _f.value;
|
|
116
|
+
emb.x = currX;
|
|
117
|
+
emb.refreshLayout();
|
|
118
|
+
currX += emb.minSize.width + 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
122
|
+
finally {
|
|
98
123
|
try {
|
|
99
|
-
|
|
100
|
-
var emb = _f.value;
|
|
101
|
-
emb.x = currX;
|
|
102
|
-
emb.refreshLayout();
|
|
103
|
-
currX += emb.minSize.width + 1;
|
|
104
|
-
}
|
|
124
|
+
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
105
125
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
finally { if (e_1) throw e_1.error; }
|
|
127
|
+
}
|
|
128
|
+
var textX = currX;
|
|
129
|
+
this.rootText.x = currX;
|
|
130
|
+
this.rootText.refreshLayout();
|
|
131
|
+
currX += this.rootText.minSize.width;
|
|
132
|
+
try {
|
|
133
|
+
for (var _g = __values(this.rightSlot), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
134
|
+
var emb = _h.value;
|
|
135
|
+
emb.x = currX;
|
|
136
|
+
emb.refreshLayout();
|
|
137
|
+
currX += emb.minSize.width + 1;
|
|
112
138
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
currX += glyphRoot.minSize.width;
|
|
139
|
+
}
|
|
140
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
141
|
+
finally {
|
|
117
142
|
try {
|
|
118
|
-
|
|
119
|
-
var emb = _h.value;
|
|
120
|
-
emb.x = currX;
|
|
121
|
-
emb.refreshLayout();
|
|
122
|
-
currX += emb.minSize.width + 1;
|
|
123
|
-
}
|
|
143
|
+
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
|
|
124
144
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
145
|
+
finally { if (e_2) throw e_2.error; }
|
|
146
|
+
}
|
|
147
|
+
var gminSize = this.glyph.minSize;
|
|
148
|
+
var glyphX = textX + this.glyph.x;
|
|
149
|
+
var glyphY = this.glyph.y;
|
|
150
|
+
currY = glyphY - this.glyph.minSize.height + 5;
|
|
151
|
+
try {
|
|
152
|
+
for (var _j = __values(this.topSlot), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
153
|
+
var emb = _k.value;
|
|
154
|
+
var bb = emb.minSize;
|
|
155
|
+
emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY - bb.height, null, null, true);
|
|
156
|
+
currY = emb.y;
|
|
131
157
|
}
|
|
132
158
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var glyphX = this.glyph.x;
|
|
136
|
-
var glyphY = this.glyph.y;
|
|
137
|
-
currY = glyphY - 1;
|
|
159
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
160
|
+
finally {
|
|
138
161
|
try {
|
|
139
|
-
|
|
140
|
-
var emb = _k.value;
|
|
141
|
-
var bb = emb.minSize;
|
|
142
|
-
emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY - bb.height, null, null, true);
|
|
143
|
-
currY = emb.y;
|
|
144
|
-
}
|
|
162
|
+
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
|
|
145
163
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
164
|
+
finally { if (e_3) throw e_3.error; }
|
|
165
|
+
}
|
|
166
|
+
currY = glyphY + 7;
|
|
167
|
+
try {
|
|
168
|
+
for (var _l = __values(this.bottomSlot), _m = _l.next(); !_m.done; _m = _l.next()) {
|
|
169
|
+
var emb = _m.value;
|
|
170
|
+
var bb = emb.minSize;
|
|
171
|
+
emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY, null, null, true);
|
|
172
|
+
currY = emb.y + bb.height;
|
|
152
173
|
}
|
|
153
|
-
|
|
174
|
+
}
|
|
175
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
176
|
+
finally {
|
|
154
177
|
try {
|
|
155
|
-
|
|
156
|
-
var emb = _m.value;
|
|
157
|
-
var bb = emb.minSize;
|
|
158
|
-
emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY, null, null, true);
|
|
159
|
-
currY = emb.y + bb.height;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
163
|
-
finally {
|
|
164
|
-
try {
|
|
165
|
-
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
|
|
166
|
-
}
|
|
167
|
-
finally { if (e_4) throw e_4.error; }
|
|
178
|
+
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
|
|
168
179
|
}
|
|
180
|
+
finally { if (e_4) throw e_4.error; }
|
|
169
181
|
}
|
|
170
|
-
this.
|
|
182
|
+
this.invalidateBounds();
|
|
183
|
+
};
|
|
184
|
+
LeafAtomView.prototype.refreshLayout = function () {
|
|
185
|
+
this.layoutElements();
|
|
186
|
+
this.rootGroup.element.setAttribute("transform", "translate(" + this.x + "," + this.y + ")");
|
|
171
187
|
};
|
|
172
188
|
LeafAtomView.prototype.addEmbelishment = function (slot, emb) {
|
|
173
189
|
slot.push(emb);
|
|
174
|
-
this.addShape(emb);
|
|
175
190
|
};
|
|
176
191
|
LeafAtomView.prototype.orderEmbelishments = function () {
|
|
177
192
|
var e_5, _a;
|
|
178
|
-
var atom = this.
|
|
193
|
+
var atom = this.leafAtom;
|
|
179
194
|
if (atom.type != core_1.AtomType.SYLLABLE && atom.type != core_1.AtomType.NOTE) {
|
|
180
195
|
return;
|
|
181
196
|
}
|
|
@@ -228,86 +243,67 @@ var LeafAtomView = (function (_super) {
|
|
|
228
243
|
finally { if (e_5) throw e_5.error; }
|
|
229
244
|
}
|
|
230
245
|
};
|
|
246
|
+
LeafAtomView.prototype.embRoot = function () {
|
|
247
|
+
return this.rootGroup.element;
|
|
248
|
+
};
|
|
231
249
|
LeafAtomView.prototype.needsRootElement = function () {
|
|
232
|
-
return
|
|
250
|
+
return true;
|
|
233
251
|
};
|
|
234
252
|
LeafAtomView.prototype.createElements = function (parent) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
this.createGlyphRoot(parent);
|
|
238
|
-
}
|
|
239
|
-
this.createGlyphElement(((_a = this.rootShape) === null || _a === void 0 ? void 0 : _a.element) || parent);
|
|
253
|
+
this.createGlyphRoot(parent);
|
|
254
|
+
this.createGlyphElement();
|
|
240
255
|
this.orderEmbelishments();
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
this.createGlyphRoot(parent);
|
|
244
|
-
this.moveGlyphToRoot();
|
|
245
|
-
}
|
|
246
|
-
this.createPostSpacingElement();
|
|
247
|
-
}
|
|
248
|
-
this.resetMinSize();
|
|
256
|
+
this.createPostSpacingElement();
|
|
257
|
+
this.invalidateBounds();
|
|
249
258
|
};
|
|
250
259
|
LeafAtomView.prototype.createGlyphRoot = function (parent) {
|
|
251
|
-
this.
|
|
260
|
+
this.rootGroup = new shapes_1.ElementShape(TSU.DOM.createSVGNode("g", {
|
|
252
261
|
doc: document,
|
|
253
262
|
parent: parent,
|
|
254
263
|
attrs: {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
id: "
|
|
264
|
+
atomid: this.leafAtom.uuid,
|
|
265
|
+
class: "atomViewRootGroup",
|
|
266
|
+
id: "atomViewRootGroup" + this.leafAtom.uuid,
|
|
258
267
|
},
|
|
259
268
|
}));
|
|
260
|
-
|
|
261
|
-
LeafAtomView.prototype.createPostSpacingElement = function () {
|
|
262
|
-
this.postSpacingSpan = TSU.DOM.createSVGNode("tspan", {
|
|
269
|
+
this.rootText = new shapes_1.ElementShape(TSU.DOM.createSVGNode("text", {
|
|
263
270
|
doc: document,
|
|
264
|
-
parent: this.
|
|
271
|
+
parent: this.rootGroup.element,
|
|
265
272
|
attrs: {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
id: "
|
|
273
|
+
atomid: this.leafAtom.uuid,
|
|
274
|
+
class: "atomViewTextRoot",
|
|
275
|
+
id: "atomViewTextRoot" + this.leafAtom.uuid,
|
|
269
276
|
},
|
|
270
|
-
|
|
271
|
-
});
|
|
272
|
-
};
|
|
273
|
-
LeafAtomView.prototype.moveGlyphToRoot = function () {
|
|
274
|
-
this.rootShape.element.appendChild(this.glyph.element);
|
|
277
|
+
}));
|
|
275
278
|
};
|
|
276
|
-
LeafAtomView.prototype.createGlyphElement = function (
|
|
277
|
-
var atom = this.
|
|
279
|
+
LeafAtomView.prototype.createGlyphElement = function () {
|
|
280
|
+
var atom = this.leafAtom;
|
|
278
281
|
this.glyph = new shapes_1.ElementShape(TSU.DOM.createSVGNode("tspan", {
|
|
279
282
|
doc: document,
|
|
280
|
-
parent:
|
|
283
|
+
parent: this.rootText.element,
|
|
281
284
|
attrs: {
|
|
282
|
-
depth: this.flatAtom.depth || 0,
|
|
283
285
|
atomid: atom.uuid,
|
|
284
|
-
id: "
|
|
286
|
+
id: "atomGlyph" + atom.uuid,
|
|
285
287
|
},
|
|
286
288
|
text: this.glyphLabel,
|
|
287
289
|
}));
|
|
288
290
|
};
|
|
291
|
+
LeafAtomView.prototype.createPostSpacingElement = function () {
|
|
292
|
+
if (this.leafAtom.beforeRest) {
|
|
293
|
+
this.postSpacingSpan = TSU.DOM.createSVGNode("tspan", {
|
|
294
|
+
doc: document,
|
|
295
|
+
parent: this.rootText.element,
|
|
296
|
+
attrs: {
|
|
297
|
+
atomid: this.leafAtom.uuid,
|
|
298
|
+
id: "postSpacing" + this.leafAtom.uuid,
|
|
299
|
+
},
|
|
300
|
+
text: this.leafAtom.beforeRest ? " - " : " ",
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
};
|
|
289
304
|
return LeafAtomView;
|
|
290
|
-
}(shapes_1.
|
|
305
|
+
}(shapes_1.LeafAtomView));
|
|
291
306
|
exports.LeafAtomView = LeafAtomView;
|
|
292
|
-
function createAtomView(parent, atom) {
|
|
293
|
-
var out;
|
|
294
|
-
switch (atom.atom.type) {
|
|
295
|
-
case core_1.AtomType.SPACE:
|
|
296
|
-
out = new SpaceView(atom);
|
|
297
|
-
break;
|
|
298
|
-
case core_1.AtomType.SYLLABLE:
|
|
299
|
-
out = new SyllableView(atom);
|
|
300
|
-
break;
|
|
301
|
-
case core_1.AtomType.NOTE:
|
|
302
|
-
out = new NoteView(atom);
|
|
303
|
-
break;
|
|
304
|
-
default:
|
|
305
|
-
throw new Error("Invalid atom type: " + atom.atom.type);
|
|
306
|
-
}
|
|
307
|
-
out.createElements(parent);
|
|
308
|
-
return out;
|
|
309
|
-
}
|
|
310
|
-
exports.createAtomView = createAtomView;
|
|
311
307
|
var SpaceView = (function (_super) {
|
|
312
308
|
__extends(SpaceView, _super);
|
|
313
309
|
function SpaceView() {
|
|
@@ -315,14 +311,20 @@ var SpaceView = (function (_super) {
|
|
|
315
311
|
}
|
|
316
312
|
Object.defineProperty(SpaceView.prototype, "glyphLabel", {
|
|
317
313
|
get: function () {
|
|
318
|
-
|
|
314
|
+
if (this.space.isSilent)
|
|
315
|
+
return " ";
|
|
316
|
+
if (this.space.duration.isOne)
|
|
317
|
+
return ",";
|
|
318
|
+
if (this.space.duration.cmpNum(2) == 0)
|
|
319
|
+
return ";";
|
|
320
|
+
return "_";
|
|
319
321
|
},
|
|
320
322
|
enumerable: false,
|
|
321
323
|
configurable: true
|
|
322
324
|
});
|
|
323
325
|
Object.defineProperty(SpaceView.prototype, "space", {
|
|
324
326
|
get: function () {
|
|
325
|
-
return this.
|
|
327
|
+
return this.leafAtom;
|
|
326
328
|
},
|
|
327
329
|
enumerable: false,
|
|
328
330
|
configurable: true
|
|
@@ -342,17 +344,17 @@ var NoteView = (function (_super) {
|
|
|
342
344
|
configurable: true
|
|
343
345
|
});
|
|
344
346
|
NoteView.prototype.needsRootElement = function () {
|
|
345
|
-
return
|
|
347
|
+
return true;
|
|
346
348
|
};
|
|
347
|
-
NoteView.prototype.createGlyphElement = function (
|
|
348
|
-
_super.prototype.createGlyphElement.call(this
|
|
349
|
+
NoteView.prototype.createGlyphElement = function () {
|
|
350
|
+
_super.prototype.createGlyphElement.call(this);
|
|
349
351
|
if (this.note.shift == true || this.note.shift != 0) {
|
|
350
352
|
this.shiftElement = TSU.DOM.createSVGNode("tspan", {
|
|
351
353
|
doc: document,
|
|
352
|
-
parent: this.
|
|
354
|
+
parent: this.rootText.element,
|
|
353
355
|
attrs: {
|
|
354
|
-
depth: this.flatAtom.depth || 0,
|
|
355
356
|
atomid: this.note.uuid,
|
|
357
|
+
class: "noteShiftTSpan",
|
|
356
358
|
id: "noteShift" + this.note.uuid,
|
|
357
359
|
"baseline-shift": "sub",
|
|
358
360
|
},
|
|
@@ -361,9 +363,8 @@ var NoteView = (function (_super) {
|
|
|
361
363
|
}
|
|
362
364
|
};
|
|
363
365
|
NoteView.prototype.moveGlyphToRoot = function () {
|
|
364
|
-
_super.prototype.moveGlyphToRoot.call(this);
|
|
365
366
|
if (this.shiftElement) {
|
|
366
|
-
this.
|
|
367
|
+
this.rootGroup.element.appendChild(this.shiftElement);
|
|
367
368
|
}
|
|
368
369
|
};
|
|
369
370
|
NoteView.prototype.orderEmbelishments = function () {
|
|
@@ -378,7 +379,7 @@ var NoteView = (function (_super) {
|
|
|
378
379
|
};
|
|
379
380
|
Object.defineProperty(NoteView.prototype, "note", {
|
|
380
381
|
get: function () {
|
|
381
|
-
return this.
|
|
382
|
+
return this.leafAtom;
|
|
382
383
|
},
|
|
383
384
|
enumerable: false,
|
|
384
385
|
configurable: true
|
|
@@ -399,11 +400,47 @@ var SyllableView = (function (_super) {
|
|
|
399
400
|
});
|
|
400
401
|
Object.defineProperty(SyllableView.prototype, "syllable", {
|
|
401
402
|
get: function () {
|
|
402
|
-
return this.
|
|
403
|
+
return this.leafAtom;
|
|
403
404
|
},
|
|
404
405
|
enumerable: false,
|
|
405
406
|
configurable: true
|
|
406
407
|
});
|
|
407
408
|
return SyllableView;
|
|
408
409
|
}(LeafAtomView));
|
|
410
|
+
function createAtomView(parent, atom, litDefaultsToNote, groupViewScale) {
|
|
411
|
+
if (litDefaultsToNote === void 0) { litDefaultsToNote = false; }
|
|
412
|
+
if (groupViewScale === void 0) { groupViewScale = 1.0; }
|
|
413
|
+
var out;
|
|
414
|
+
switch (atom.type) {
|
|
415
|
+
case core_1.AtomType.SPACE:
|
|
416
|
+
out = new SpaceView(atom);
|
|
417
|
+
break;
|
|
418
|
+
case core_1.AtomType.SYLLABLE:
|
|
419
|
+
out = new SyllableView(atom);
|
|
420
|
+
break;
|
|
421
|
+
case core_1.AtomType.NOTE:
|
|
422
|
+
out = new NoteView(atom);
|
|
423
|
+
break;
|
|
424
|
+
case core_1.AtomType.LITERAL:
|
|
425
|
+
if (litDefaultsToNote) {
|
|
426
|
+
var lit = core_1.Note.fromLit(atom);
|
|
427
|
+
out = new NoteView(lit);
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
var lit = core_1.Syllable.fromLit(atom);
|
|
431
|
+
out = new SyllableView(lit);
|
|
432
|
+
}
|
|
433
|
+
break;
|
|
434
|
+
case core_1.AtomType.GROUP:
|
|
435
|
+
out = new GroupView(atom);
|
|
436
|
+
out.defaultToNotes = litDefaultsToNote;
|
|
437
|
+
out.scaleFactor = groupViewScale;
|
|
438
|
+
break;
|
|
439
|
+
default:
|
|
440
|
+
throw new Error("Invalid atom type: " + atom.type);
|
|
441
|
+
}
|
|
442
|
+
out.createElements(parent);
|
|
443
|
+
return out;
|
|
444
|
+
}
|
|
445
|
+
exports.createAtomView = createAtomView;
|
|
409
446
|
//# sourceMappingURL=atomviews.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomviews.js","sourceRoot":"","sources":["../../../src/carnatic/atomviews.ts"],"names":[],"mappings":"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","sourcesContent":["import * as TSU from \"@panyam/tsutils\";\nimport { Literal, AtomType, Note, Space, Syllable } from \"../core\";\nimport { AtomView, Embelishment, ElementShape } from \"../shapes\";\nimport { FlatAtom } from \"../iterators\";\nimport {\n OctaveIndicator,\n Kampitham,\n Nokku,\n Spuritham,\n Prathyagatham,\n Orikkai,\n Odukkal,\n Raavi,\n Kandippu,\n Vaali,\n Jaaru,\n} from \"./embelishments\";\nimport { GamakaType } from \"./gamakas\";\n\nexport abstract class LeafAtomView extends AtomView {\n leftSlot: Embelishment[] = [];\n topSlot: Embelishment[] = [];\n rightSlot: Embelishment[] = [];\n bottomSlot: Embelishment[] = [];\n\n // Spaces required before and after to accomodate for left and right slots\n protected postSpacingSpan: SVGTSpanElement;\n // Sometimes this.element may not be the root element if we need spacings\n // the rootElement is the top of the chain\n protected rootShape: ElementShape;\n\n abstract get glyphLabel(): string;\n\n protected refreshMinSize(): TSU.Geom.Size {\n const out = { ...(this.rootShape || this.glyph).minSize };\n const totalWidth =\n this.leftSlot.reduce((a, b) => a + b.minSize.width, 0) +\n this.rightSlot.reduce((a, b) => a + b.minSize.width, 0) +\n this.leftSlot.length + // Padding of 1\n this.rightSlot.length; // Padding of 1\n const totalHeight =\n this.topSlot.reduce((a, b) => a + b.minSize.height, 0) +\n this.bottomSlot.reduce((a, b) => a + b.minSize.height, 0);\n out.width += totalWidth;\n out.height += totalHeight;\n // if (this.postSpacingSpan) out.width += this.postSpacingSpan.getBBox().width;\n return out;\n }\n\n protected updateBounds(\n x: null | number,\n y: null | number,\n w: null | number,\n h: null | number,\n ): [number | null, number | null, number | null, number | null] {\n return [x, y, NaN, NaN];\n }\n\n refreshLayout(): void {\n // TODO - move this code out to refreshLayout?\n // set the glyphs Y first so we can layout others\n const x = this.x;\n const y = this.y;\n this.glyph.setBounds(null, y, null, null, true);\n\n // now layout leftSlots\n let currX = x;\n let currY = y;\n if (currX != null) {\n // place left embelishments\n for (const emb of this.leftSlot) {\n emb.x = currX;\n emb.refreshLayout();\n currX += emb.minSize.width + 1;\n }\n\n // now place the glyph\n const glyphRoot = this.rootShape || this.glyph;\n glyphRoot.x = currX;\n glyphRoot.refreshLayout();\n currX += glyphRoot.minSize.width;\n\n // And right embelishments\n for (const emb of this.rightSlot) {\n emb.x = currX;\n emb.refreshLayout();\n currX += emb.minSize.width + 1;\n }\n }\n\n // layout top and bottom if x or y has changed\n if (currX != null || currY != null) {\n const gminSize = this.glyph.minSize;\n\n // top embelishments\n const glyphX = this.glyph.x;\n const glyphY = this.glyph.y;\n currY = glyphY - 1;\n for (const emb of this.topSlot) {\n const bb = emb.minSize;\n emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY - bb.height, null, null, true);\n currY = emb.y;\n }\n\n // bottom embelishments\n currY = glyphY + gminSize.height + 2;\n for (const emb of this.bottomSlot) {\n const bb = emb.minSize;\n emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY, null, null, true);\n currY = emb.y + bb.height;\n }\n }\n this.resetMinSize();\n }\n\n protected addEmbelishment(slot: Embelishment[], emb: Embelishment): void {\n slot.push(emb);\n this.addShape(emb);\n }\n\n /**\n * Orders embelishments and creates their views.\n */\n orderEmbelishments(): void {\n const atom = this.flatAtom.atom;\n if (atom.type != AtomType.SYLLABLE && atom.type != AtomType.NOTE) {\n return;\n }\n const lit = atom as Literal;\n if (lit.embelishments.length == 0) return;\n for (const emb of lit.embelishments) {\n switch (emb.type) {\n case GamakaType.Kampitham:\n this.addEmbelishment(this.topSlot, new Kampitham(this));\n break;\n case GamakaType.Nokku:\n this.addEmbelishment(this.topSlot, new Nokku(this));\n break;\n case GamakaType.Spuritham:\n this.addEmbelishment(this.topSlot, new Spuritham(this));\n break;\n case GamakaType.Prathyagatham:\n this.addEmbelishment(this.topSlot, new Prathyagatham(this));\n break;\n case GamakaType.Orikkai:\n this.addEmbelishment(this.topSlot, new Orikkai(this));\n break;\n case GamakaType.Odukkal:\n this.addEmbelishment(this.topSlot, new Odukkal(this));\n break;\n case GamakaType.Aahaatam_Raavi:\n this.addEmbelishment(this.topSlot, new Raavi(this));\n break;\n case GamakaType.Aahaatam_Kandippu:\n this.addEmbelishment(this.topSlot, new Kandippu(this));\n break;\n case GamakaType.Vaali:\n this.addEmbelishment(this.topSlot, new Vaali(this));\n break;\n case GamakaType.Jaaru_Eetra:\n case GamakaType.Jaaru_Irakka:\n this.addEmbelishment(this.leftSlot, new Jaaru(emb, this));\n break;\n }\n }\n }\n\n needsRootElement(): boolean {\n return this.rightSlot.length > 0 || this.flatAtom.atom.beforeRest;\n }\n\n createElements(parent: SVGGraphicsElement): void {\n // Create the glyph element first before anything\n // this allows embelishments to get early access to this element\n if (this.needsRootElement()) {\n this.createGlyphRoot(parent);\n }\n this.createGlyphElement(this.rootShape?.element || parent);\n\n // Order embelishments (without creating any views)\n this.orderEmbelishments();\n if (this.needsRootElement()) {\n // create as 2 sub span elements\n if (!this.rootShape) {\n this.createGlyphRoot(parent);\n // move the element into the parent\n this.moveGlyphToRoot();\n }\n\n this.createPostSpacingElement();\n }\n this.resetMinSize();\n }\n\n protected createGlyphRoot(parent: SVGGraphicsElement): void {\n this.rootShape = new ElementShape(\n TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: parent,\n attrs: {\n depth: this.flatAtom.depth || 0,\n atomid: this.flatAtom.atom.uuid,\n id: \"atomViewRoot\" + this.flatAtom.atom.uuid,\n },\n }),\n );\n }\n\n protected createPostSpacingElement(): void {\n this.postSpacingSpan = TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: this.rootShape.element,\n attrs: {\n depth: this.flatAtom.depth || 0,\n atomid: this.flatAtom.atom.uuid,\n id: \"postSpacing\" + this.flatAtom.atom.uuid,\n },\n text: this.flatAtom.atom.beforeRest ? \" - \" : \" \",\n });\n }\n\n protected moveGlyphToRoot(): void {\n this.rootShape.element.appendChild(this.glyph.element);\n }\n\n protected createGlyphElement(parent: SVGGraphicsElement): void {\n const atom = this.flatAtom.atom;\n this.glyph = new ElementShape(\n TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: parent,\n attrs: {\n depth: this.flatAtom.depth || 0,\n atomid: atom.uuid,\n id: \"atom\" + atom.uuid,\n },\n text: this.glyphLabel, // + (note.beforeRest ? \" - \" : \" \"),\n }),\n );\n }\n}\n\nexport function createAtomView(parent: SVGGraphicsElement, atom: FlatAtom): AtomView {\n let out: AtomView;\n switch (atom.atom.type) {\n // Dealing with leaf atoms\n case AtomType.SPACE:\n out = new SpaceView(atom);\n break;\n case AtomType.SYLLABLE:\n out = new SyllableView(atom);\n break;\n case AtomType.NOTE:\n out = new NoteView(atom);\n break;\n default:\n // We should never get a group as we are iterating\n // at leaf atom levels\n throw new Error(\"Invalid atom type: \" + atom.atom.type);\n }\n out.createElements(parent);\n return out;\n}\n\nclass SpaceView extends LeafAtomView {\n get glyphLabel(): string {\n return this.space.isSilent ? \" \" : \",\";\n }\n\n get space(): Space {\n return this.flatAtom.atom as Space;\n }\n}\n\nclass NoteView extends LeafAtomView {\n protected shiftElement: SVGTSpanElement;\n get glyphLabel(): string {\n return this.note.value;\n }\n\n needsRootElement(): boolean {\n return this.note.shift == true || this.note.shift != 0 || super.needsRootElement();\n }\n\n protected createGlyphElement(parent: SVGGraphicsElement): void {\n super.createGlyphElement(parent);\n if (this.note.shift == true || this.note.shift != 0) {\n this.shiftElement = TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: this.rootShape.element,\n attrs: {\n depth: this.flatAtom.depth || 0,\n atomid: this.note.uuid,\n id: \"noteShift\" + this.note.uuid,\n \"baseline-shift\": \"sub\",\n },\n text: (this.note.shift == true ? \"*\" : this.note.shift) + \" \",\n });\n }\n }\n\n protected moveGlyphToRoot(): void {\n super.moveGlyphToRoot();\n if (this.shiftElement) {\n this.rootShape.element.appendChild(this.shiftElement);\n }\n }\n\n orderEmbelishments(): void {\n const note = this.note;\n // create the embelishments if needed\n if (note.octave > 0) {\n this.topSlot.push(new OctaveIndicator(this, note));\n } else if (this.note.octave < 0) {\n this.bottomSlot.push(new OctaveIndicator(this, note));\n }\n super.orderEmbelishments();\n }\n\n get note(): Note {\n return this.flatAtom.atom as Note;\n }\n}\n\nclass SyllableView extends LeafAtomView {\n get glyphLabel(): string {\n return this.syllable.value;\n }\n\n get syllable(): Syllable {\n return this.flatAtom.atom as Syllable;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"atomviews.js","sourceRoot":"","sources":["../../../src/carnatic/atomviews.ts"],"names":[],"mappings":"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","sourcesContent":["import * as TSU from \"@panyam/tsutils\";\nimport { Atom, Group, Literal, AtomType, Note, Space, Syllable } from \"../core\";\nimport {\n LeafAtomView as LeafAtomViewBase,\n GroupView as GroupViewBase,\n AtomView,\n Embelishment,\n ElementShape,\n} from \"../shapes\";\nimport {\n OctaveIndicator,\n Kampitham,\n Nokku,\n Spuritham,\n Prathyagatham,\n Orikkai,\n Odukkal,\n Raavi,\n Kandippu,\n Vaali,\n Jaaru,\n} from \"./embelishments\";\nimport { GamakaType } from \"./gamakas\";\n\nexport class GroupView extends GroupViewBase {\n createAtomView(atom: Atom): AtomView {\n return createAtomView(this.groupElement, atom, this.defaultToNotes, 0.7);\n }\n}\n\nexport abstract class LeafAtomView extends LeafAtomViewBase {\n leftSlot: Embelishment[] = [];\n topSlot: Embelishment[] = [];\n rightSlot: Embelishment[] = [];\n bottomSlot: Embelishment[] = [];\n glyph: ElementShape;\n\n // Spaces required before and after to accomodate for left and right slots\n protected postSpacingSpan: SVGTSpanElement;\n // Sometimes this.element may not be the root element if we need spacings\n // the rootElement is the top of the chain\n protected rootGroup: ElementShape;\n protected rootText: ElementShape;\n\n abstract get glyphLabel(): string;\n\n protected refreshBBox(): TSU.Geom.Rect {\n return TSU.DOM.svgBBox(this.rootGroup.element);\n }\n\n protected refreshMinSize(): TSU.Geom.Size {\n const out = { ...this.rootText.minSize };\n const totalWidth =\n this.leftSlot.reduce((a, b) => a + b.minSize.width, 0) +\n this.rightSlot.reduce((a, b) => a + b.minSize.width, 0) +\n this.leftSlot.length + // Padding of 1\n this.rightSlot.length; // Padding of 1\n const totalHeight =\n this.topSlot.reduce((a, b) => a + b.minSize.height, 0) +\n this.bottomSlot.reduce((a, b) => a + b.minSize.height, 0);\n out.width += totalWidth;\n out.height += totalHeight;\n // if (this.postSpacingSpan) out.width += this.postSpacingSpan.getBBox().width;\n return out;\n }\n\n protected updateBounds(\n x: null | number,\n y: null | number,\n w: null | number,\n h: null | number,\n ): [number | null, number | null, number | null, number | null] {\n return [x, y, NaN, NaN];\n }\n\n protected layoutElements(): void {\n // Lays out all the child elements locally\n const textSize = this.rootText.minSize;\n // assume text is at 0,0 and lay things around it\n\n // now layout leftSlots\n let currX = 0;\n let currY = this.hasY ? this.y : 0;\n // place left embelishments\n for (const emb of this.leftSlot) {\n emb.x = currX;\n emb.refreshLayout();\n currX += emb.minSize.width + 1;\n }\n\n // now place the text\n const textX = currX;\n this.rootText.x = currX;\n this.rootText.refreshLayout();\n\n // And right embelishments\n currX += this.rootText.minSize.width;\n for (const emb of this.rightSlot) {\n emb.x = currX;\n emb.refreshLayout();\n currX += emb.minSize.width + 1;\n }\n\n // layout top and bottom if x or y has changed\n const gminSize = this.glyph.minSize;\n\n // top embelishments\n const glyphX = textX + this.glyph.x;\n const glyphY = this.glyph.y;\n currY = glyphY - this.glyph.minSize.height + 5;\n for (const emb of this.topSlot) {\n const bb = emb.minSize;\n emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY - bb.height, null, null, true);\n currY = emb.y;\n }\n\n // bottom embelishments\n currY = glyphY + 7;\n for (const emb of this.bottomSlot) {\n const bb = emb.minSize;\n emb.setBounds(glyphX + (gminSize.width - bb.width) / 2, currY, null, null, true);\n currY = emb.y + bb.height;\n }\n this.invalidateBounds();\n }\n\n refreshLayout(): void {\n // TODO - move this code out to refreshLayout?\n // set the glyphs Y first so we can layout others\n this.layoutElements();\n this.rootGroup.element.setAttribute(\"transform\", \"translate(\" + this.x + \",\" + this.y + \")\");\n }\n\n protected addEmbelishment(slot: Embelishment[], emb: Embelishment): void {\n slot.push(emb);\n // this.addShape(emb);\n }\n\n /**\n * Orders embelishments and creates their views.\n */\n orderEmbelishments(): void {\n const atom = this.leafAtom;\n if (atom.type != AtomType.SYLLABLE && atom.type != AtomType.NOTE) {\n return;\n }\n const lit = atom as Literal;\n if (lit.embelishments.length == 0) return;\n for (const emb of lit.embelishments) {\n switch (emb.type) {\n case GamakaType.Kampitham:\n this.addEmbelishment(this.topSlot, new Kampitham(this));\n break;\n case GamakaType.Nokku:\n this.addEmbelishment(this.topSlot, new Nokku(this));\n break;\n case GamakaType.Spuritham:\n this.addEmbelishment(this.topSlot, new Spuritham(this));\n break;\n case GamakaType.Prathyagatham:\n this.addEmbelishment(this.topSlot, new Prathyagatham(this));\n break;\n case GamakaType.Orikkai:\n this.addEmbelishment(this.topSlot, new Orikkai(this));\n break;\n case GamakaType.Odukkal:\n this.addEmbelishment(this.topSlot, new Odukkal(this));\n break;\n case GamakaType.Aahaatam_Raavi:\n this.addEmbelishment(this.topSlot, new Raavi(this));\n break;\n case GamakaType.Aahaatam_Kandippu:\n this.addEmbelishment(this.topSlot, new Kandippu(this));\n break;\n case GamakaType.Vaali:\n this.addEmbelishment(this.topSlot, new Vaali(this));\n break;\n case GamakaType.Jaaru_Eetra:\n case GamakaType.Jaaru_Irakka:\n this.addEmbelishment(this.leftSlot, new Jaaru(emb, this));\n break;\n }\n }\n }\n\n embRoot(): SVGGraphicsElement {\n return this.rootGroup.element;\n }\n\n needsRootElement(): boolean {\n return true; // this.rightSlot.length > 0 || this.leafAtom.beforeRest;\n }\n\n createElements(parent: SVGGraphicsElement): void {\n // Create the glyph element first before anything\n // this allows embelishments to get early access to this element\n this.createGlyphRoot(parent);\n this.createGlyphElement();\n // Order embelishments (without creating any views)\n this.orderEmbelishments();\n this.createPostSpacingElement();\n this.invalidateBounds();\n }\n\n protected createGlyphRoot(parent: SVGGraphicsElement): void {\n this.rootGroup = new ElementShape(\n TSU.DOM.createSVGNode(\"g\", {\n doc: document,\n parent: parent,\n attrs: {\n atomid: this.leafAtom.uuid,\n class: \"atomViewRootGroup\",\n id: \"atomViewRootGroup\" + this.leafAtom.uuid,\n },\n }),\n );\n this.rootText = new ElementShape(\n TSU.DOM.createSVGNode(\"text\", {\n doc: document,\n parent: this.rootGroup.element,\n attrs: {\n atomid: this.leafAtom.uuid,\n class: \"atomViewTextRoot\",\n id: \"atomViewTextRoot\" + this.leafAtom.uuid,\n },\n }),\n );\n }\n\n protected createGlyphElement(): void {\n const atom = this.leafAtom;\n this.glyph = new ElementShape(\n TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: this.rootText.element,\n attrs: {\n atomid: atom.uuid,\n id: \"atomGlyph\" + atom.uuid,\n },\n text: this.glyphLabel, // + (note.beforeRest ? \" - \" : \" \"),\n }),\n );\n }\n\n protected createPostSpacingElement(): void {\n if (this.leafAtom.beforeRest) {\n this.postSpacingSpan = TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: this.rootText.element,\n attrs: {\n atomid: this.leafAtom.uuid,\n id: \"postSpacing\" + this.leafAtom.uuid,\n },\n text: this.leafAtom.beforeRest ? \" - \" : \" \",\n });\n }\n }\n}\n\nclass SpaceView extends LeafAtomView {\n get glyphLabel(): string {\n if (this.space.isSilent) return \" \";\n if (this.space.duration.isOne) return \",\";\n if (this.space.duration.cmpNum(2) == 0) return \";\";\n return \"_\";\n }\n\n get space(): Space {\n return this.leafAtom as Space;\n }\n}\n\nclass NoteView extends LeafAtomView {\n protected shiftElement: SVGTSpanElement;\n get glyphLabel(): string {\n return this.note.value;\n }\n\n needsRootElement(): boolean {\n return true; // this.note.shift == true || this.note.shift != 0 || super.needsRootElement();\n }\n\n protected createGlyphElement(): void {\n super.createGlyphElement();\n if (this.note.shift == true || this.note.shift != 0) {\n this.shiftElement = TSU.DOM.createSVGNode(\"tspan\", {\n doc: document,\n parent: this.rootText.element,\n attrs: {\n atomid: this.note.uuid,\n class: \"noteShiftTSpan\",\n id: \"noteShift\" + this.note.uuid,\n \"baseline-shift\": \"sub\",\n },\n text: (this.note.shift == true ? \"*\" : this.note.shift) + \" \",\n });\n }\n }\n\n protected moveGlyphToRoot(): void {\n // super.moveGlyphToRoot();\n if (this.shiftElement) {\n this.rootGroup.element.appendChild(this.shiftElement);\n }\n }\n\n orderEmbelishments(): void {\n const note = this.note;\n // create the embelishments if needed\n if (note.octave > 0) {\n this.topSlot.push(new OctaveIndicator(this, note));\n } else if (this.note.octave < 0) {\n this.bottomSlot.push(new OctaveIndicator(this, note));\n }\n super.orderEmbelishments();\n }\n\n get note(): Note {\n return this.leafAtom as Note;\n }\n}\n\nclass SyllableView extends LeafAtomView {\n get glyphLabel(): string {\n return this.syllable.value;\n }\n\n get syllable(): Syllable {\n return this.leafAtom as Syllable;\n }\n}\n\nexport function createAtomView(\n parent: SVGGraphicsElement,\n atom: Atom,\n litDefaultsToNote = false,\n groupViewScale = 1.0,\n): AtomView {\n let out: AtomView;\n switch (atom.type) {\n // Dealing with leaf atoms\n case AtomType.SPACE:\n out = new SpaceView(atom as Space);\n break;\n case AtomType.SYLLABLE:\n out = new SyllableView(atom as Syllable);\n break;\n case AtomType.NOTE:\n out = new NoteView(atom as Note);\n break;\n case AtomType.LITERAL:\n if (litDefaultsToNote) {\n const lit = Note.fromLit(atom as Note);\n out = new NoteView(lit);\n } else {\n const lit = Syllable.fromLit(atom as Syllable);\n out = new SyllableView(lit);\n }\n break;\n case AtomType.GROUP:\n out = new GroupView(atom as Group);\n (out as GroupView).defaultToNotes = litDefaultsToNote;\n (out as GroupView).scaleFactor = groupViewScale;\n break;\n default:\n // We should never get a group as we are iterating\n // at leaf atom levels\n throw new Error(\"Invalid atom type: \" + atom.type);\n }\n out.createElements(parent);\n return out;\n}\n"]}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export declare class BeatView extends Shape implements BeatViewBase {
|
|
1
|
+
import { Cycle } from "../cycle";
|
|
2
|
+
import { BeatView as BeatViewBase, Beat } from "../beats";
|
|
3
|
+
import { AtomView, Embelishment, ElementShape } from "../shapes";
|
|
4
|
+
export declare class BeatView extends ElementShape<SVGGElement> implements BeatViewBase {
|
|
6
5
|
readonly beat: Beat;
|
|
6
|
+
readonly rootElement: SVGGraphicsElement;
|
|
7
7
|
readonly cycle: Cycle;
|
|
8
|
-
protected atomSpacing: number;
|
|
9
|
-
needsLayout: boolean;
|
|
10
8
|
private _embelishments;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
constructor(beat: Beat, rootElement: Element, cycle: Cycle, config?: any);
|
|
15
|
-
protected refreshMinSize(): TSU.Geom.Size;
|
|
16
|
-
protected updateBounds(x: null | number, y: null | number, w: null | number, h: null | number): [number | null, number | null, number | null, number | null];
|
|
17
|
-
setStyles(config: any): void;
|
|
9
|
+
atomView: AtomView;
|
|
10
|
+
needsLayout: boolean;
|
|
11
|
+
constructor(beat: Beat, rootElement: SVGGraphicsElement, cycle: Cycle, config?: any);
|
|
18
12
|
refreshLayout(): void;
|
|
19
13
|
get embelishments(): Embelishment[];
|
|
14
|
+
protected createEmbelishments(): Embelishment[];
|
|
15
|
+
setStyles(config: any): void;
|
|
20
16
|
}
|