notations 0.0.43 → 0.0.44
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.
|
@@ -172,13 +172,15 @@ var BeatView = (function (_super) {
|
|
|
172
172
|
var cycle = this.cycle;
|
|
173
173
|
var bar = cycle.bars[beat.barIndex];
|
|
174
174
|
if (beat.beatIndex == bar.beatCount - 1) {
|
|
175
|
-
if (beat.
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
if (beat.instance == bar.beatCounts[beat.beatIndex] - 1) {
|
|
176
|
+
if (beat.barIndex == cycle.bars.length - 1) {
|
|
177
|
+
var emb = new embelishments_1.BeatEndLines(this, rootElement, 2);
|
|
178
|
+
this._embelishments = [emb];
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
var emb = new embelishments_1.BeatEndLines(this, rootElement);
|
|
182
|
+
this._embelishments = [emb];
|
|
183
|
+
}
|
|
182
184
|
}
|
|
183
185
|
}
|
|
184
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beatviews.js","sourceRoot":"","sources":["../../../src/carnatic/beatviews.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"beatviews.js","sourceRoot":"","sources":["../../../src/carnatic/beatviews.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAuC;AACvC,gCAAmE;AAEnE,oCAA0D;AAC1D,yCAA6C;AAC7C,iDAA+D;AAE/D;IAA8B,4BAAK;IAOjC,kBAA4B,IAAU,EAAE,WAAoB,EAAkB,KAAY,EAAE,MAAY;;QAAxG,YACE,iBAAO,SA+CR;QAhD2B,UAAI,GAAJ,IAAI,CAAM;QAAwC,WAAK,GAAL,KAAK,CAAO;QAL1F,iBAAW,GAAG,IAAI,CAAC;QAEX,eAAS,GAAe,EAAE,CAAC;QAKjC,KAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,KAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE;YAC7C,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,IAAI;gBAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,KAAK;aACtB;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;YAC/C,MAAM,EAAE,KAAI,CAAC,YAAY;YACzB,KAAK,EAAE;gBACL,KAAK,EAAE,eAAe;gBAEtB,KAAK,EAAE,4BAA4B;gBACnC,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,IAAI;gBAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,KAAK;aACtB;SACF,CAAmB,CAAC;;YAGrB,KAAuB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;gBAA9B,IAAM,QAAQ,WAAA;gBACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,eAAQ,CAAC,OAAO,EAAE;oBAC1C,IAAM,GAAG,GAAG,QAAQ,CAAC,IAAe,CAAC;oBAErC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;wBAC5B,QAAQ,CAAC,IAAI,GAAG,WAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBACnC;yBAAM;wBACL,QAAQ,CAAC,IAAI,GAAG,eAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBACvC;oBAED,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;iBAC3C;gBACD,IAAM,QAAQ,GAAG,IAAA,0BAAc,EAAC,KAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC5D,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAChC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC/B;;;;;;;;;QAED,KAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;;IAC/B,CAAC;IAGS,iCAAc,GAAxB;QAAA,iBASC;QARC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,EAAE,EAAE,KAAK;YAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC;YACtB,UAAU,IAAI,EAAE,CAAC,KAAK,GAAG,KAAI,CAAC,WAAW,CAAC;YAC1C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAES,+BAAY,GAAtB,UACE,CAAgB,EAChB,CAAgB,EAChB,CAAgB,EAChB,CAAgB;QAEhB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,4BAAS,GAAT,UAAU,MAAW;QACnB,IAAI,aAAa,IAAI,MAAM;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,gCAAa,GAAb;;QAAA,iBAiBC;QAhBC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAOxF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAM,KAAK,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,EAAE,EAAE,KAAK;YAC/B,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,IAAI,KAAI,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;;YACpB,KAAgB,IAAA,KAAA,SAAA,IAAI,CAAC,aAAa,CAAA,gBAAA;gBAA7B,IAAM,CAAC,WAAA;gBAAwB,CAAC,CAAC,aAAa,EAAE,CAAC;aAAA;;;;;;;;;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,sBAAI,mCAAa;aAAjB;YACE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;gBACzB,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEvB,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAA0C,CAAC;gBAChF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;oBAEnE,IAAM,GAAG,GAAG,IAAI,8BAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oBAClD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC7B;qBAAM;oBACL,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzB,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACtC,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE;wBAIvC,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;4BACvD,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gCAE1C,IAAM,GAAG,GAAG,IAAI,4BAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gCACnD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;6BAC7B;iCAAM;gCAEL,IAAM,GAAG,GAAG,IAAI,4BAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gCAChD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;6BAC7B;yBACF;qBACF;iBACF;aACF;YACD,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;;;OAAA;IACH,eAAC;AAAD,CAAC,AAvID,CAA8B,cAAK,GAuIlC;AAvIY,4BAAQ","sourcesContent":["import * as TSU from \"@panyam/tsutils\";\nimport { Cycle, AtomType, Syllable, Note, Literal } from \"../core\";\nimport { BeatView as BeatViewBase, Beat } from \"../layouts\";\nimport { AtomView, Embelishment, Shape } from \"../shapes\";\nimport { createAtomView } from \"./atomviews\";\nimport { BeatStartLines, BeatEndLines } from \"./embelishments\";\n\nexport class BeatView extends Shape implements BeatViewBase {\n protected atomSpacing: number;\n needsLayout = true;\n private _embelishments: Embelishment[];\n private atomViews: AtomView[] = [];\n groupElement: SVGGElement;\n textElement: SVGTextElement;\n constructor(public readonly beat: Beat, rootElement: Element, public readonly cycle: Cycle, config?: any) {\n super();\n this.atomSpacing = 5;\n this.groupElement = TSU.DOM.createSVGNode(\"g\", {\n parent: rootElement,\n attrs: {\n beatId: beat.uuid,\n id: \"beatGroup\" + beat.uuid,\n roleName: beat.role.name,\n layoutLine: beat.layoutLine,\n layoutColumn: beat.layoutColumn,\n beatIndex: beat.index,\n },\n });\n this.textElement = TSU.DOM.createSVGNode(\"text\", {\n parent: this.groupElement,\n attrs: {\n class: \"roleAtomsText\",\n // y: \"0%\",\n style: \"dominant-baseline: hanging\",\n beatId: beat.uuid,\n id: \"beatText\" + beat.uuid,\n roleName: beat.role.name,\n layoutLine: beat.layoutLine,\n layoutColumn: beat.layoutColumn,\n beatIndex: beat.index,\n },\n }) as SVGTextElement;\n\n // create the children\n for (const flatAtom of beat.atoms) {\n if (flatAtom.atom.type == AtomType.LITERAL) {\n const lit = flatAtom.atom as Literal;\n // convert to note or syllable here\n if (beat.role.defaultToNotes) {\n flatAtom.atom = Note.fromLit(lit);\n } else {\n flatAtom.atom = Syllable.fromLit(lit);\n }\n // carry over rest info\n flatAtom.atom.beforeRest = lit.beforeRest;\n }\n const atomView = createAtomView(this.textElement, flatAtom);\n atomView.depth = flatAtom.depth;\n this.atomViews.push(atomView);\n }\n\n this.setStyles(config || {});\n }\n\n // protected refreshMinSize(): TSU.Geom.Size { return TSU.DOM.svgBBox(this.groupElement); }\n protected refreshMinSize(): TSU.Geom.Size {\n let totalWidth = 0;\n let maxHeight = 0;\n this.atomViews.forEach((av, index) => {\n const ms = av.minSize;\n totalWidth += ms.width + this.atomSpacing;\n maxHeight = Math.max(maxHeight, ms.height);\n });\n return new TSU.Geom.Size(totalWidth, maxHeight);\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, w, h];\n }\n\n setStyles(config: any): void {\n if (\"atomSpacing\" in config) this.atomSpacing = config.atomSpacing;\n this.needsLayout = true;\n }\n\n refreshLayout(): void {\n this.groupElement.setAttribute(\"transform\", \"translate(\" + this.x + \",\" + this.y + \")\");\n // if (this.widthChanged) {\n // All our atoms have to be laid out between startX and endX\n // old way of doing where we just set dx between atom views\n // this worked when atomviews were single glyphs. But\n // as atomViews can be complex (eg with accents and pre/post\n // spaces etc) explicitly setting x/y may be important\n let currX = 0;\n const currY = 0; // null; // this.y; // + 10;\n this.atomViews.forEach((av, index) => {\n av.setBounds(currX, currY, null, null, true);\n currX += this.atomSpacing + av.minSize.width;\n });\n this.resetMinSize();\n for (const e of this.embelishments) e.refreshLayout();\n this.resetMinSize();\n }\n\n get embelishments(): Embelishment[] {\n if (!this._embelishments) {\n this._embelishments = [];\n const beat = this.beat;\n // TODO - Should this be the group's parent element?\n const rootElement = this.textElement.parentElement as any as SVGGraphicsElement;\n if (beat.beatIndex == 0 && beat.barIndex == 0 && beat.instance == 0) {\n // first beat in bar - Do a BarStart\n const emb = new BeatStartLines(this, rootElement);\n this._embelishments = [emb];\n } else {\n const cycle = this.cycle;\n const bar = cycle.bars[beat.barIndex];\n if (beat.beatIndex == bar.beatCount - 1) {\n // It is important that we are not just looking at the last beat of the bar\n // but also in the last \"instance\" of the beat in this bar to account for\n // kalais\n if (beat.instance == bar.beatCounts[beat.beatIndex] - 1) {\n if (beat.barIndex == cycle.bars.length - 1) {\n // last beat in last bar so - do a thalam end (2 lines)\n const emb = new BeatEndLines(this, rootElement, 2);\n this._embelishments = [emb];\n } else {\n // end of a bar so single line end\n const emb = new BeatEndLines(this, rootElement);\n this._embelishments = [emb];\n }\n }\n }\n }\n }\n return this._embelishments;\n }\n}\n"]}
|
|
@@ -150,13 +150,15 @@ var BeatView = (function (_super) {
|
|
|
150
150
|
var cycle = this.cycle;
|
|
151
151
|
var bar = cycle.bars[beat.barIndex];
|
|
152
152
|
if (beat.beatIndex == bar.beatCount - 1) {
|
|
153
|
-
if (beat.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
153
|
+
if (beat.instance == bar.beatCounts[beat.beatIndex] - 1) {
|
|
154
|
+
if (beat.barIndex == cycle.bars.length - 1) {
|
|
155
|
+
var emb = new BeatEndLines(this, rootElement, 2);
|
|
156
|
+
this._embelishments = [emb];
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
var emb = new BeatEndLines(this, rootElement);
|
|
160
|
+
this._embelishments = [emb];
|
|
161
|
+
}
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beatviews.js","sourceRoot":"","sources":["../../../src/carnatic/beatviews.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"beatviews.js","sourceRoot":"","sources":["../../../src/carnatic/beatviews.ts"],"names":[],"mappings":"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","sourcesContent":["import * as TSU from \"@panyam/tsutils\";\nimport { Cycle, AtomType, Syllable, Note, Literal } from \"../core\";\nimport { BeatView as BeatViewBase, Beat } from \"../layouts\";\nimport { AtomView, Embelishment, Shape } from \"../shapes\";\nimport { createAtomView } from \"./atomviews\";\nimport { BeatStartLines, BeatEndLines } from \"./embelishments\";\n\nexport class BeatView extends Shape implements BeatViewBase {\n protected atomSpacing: number;\n needsLayout = true;\n private _embelishments: Embelishment[];\n private atomViews: AtomView[] = [];\n groupElement: SVGGElement;\n textElement: SVGTextElement;\n constructor(public readonly beat: Beat, rootElement: Element, public readonly cycle: Cycle, config?: any) {\n super();\n this.atomSpacing = 5;\n this.groupElement = TSU.DOM.createSVGNode(\"g\", {\n parent: rootElement,\n attrs: {\n beatId: beat.uuid,\n id: \"beatGroup\" + beat.uuid,\n roleName: beat.role.name,\n layoutLine: beat.layoutLine,\n layoutColumn: beat.layoutColumn,\n beatIndex: beat.index,\n },\n });\n this.textElement = TSU.DOM.createSVGNode(\"text\", {\n parent: this.groupElement,\n attrs: {\n class: \"roleAtomsText\",\n // y: \"0%\",\n style: \"dominant-baseline: hanging\",\n beatId: beat.uuid,\n id: \"beatText\" + beat.uuid,\n roleName: beat.role.name,\n layoutLine: beat.layoutLine,\n layoutColumn: beat.layoutColumn,\n beatIndex: beat.index,\n },\n }) as SVGTextElement;\n\n // create the children\n for (const flatAtom of beat.atoms) {\n if (flatAtom.atom.type == AtomType.LITERAL) {\n const lit = flatAtom.atom as Literal;\n // convert to note or syllable here\n if (beat.role.defaultToNotes) {\n flatAtom.atom = Note.fromLit(lit);\n } else {\n flatAtom.atom = Syllable.fromLit(lit);\n }\n // carry over rest info\n flatAtom.atom.beforeRest = lit.beforeRest;\n }\n const atomView = createAtomView(this.textElement, flatAtom);\n atomView.depth = flatAtom.depth;\n this.atomViews.push(atomView);\n }\n\n this.setStyles(config || {});\n }\n\n // protected refreshMinSize(): TSU.Geom.Size { return TSU.DOM.svgBBox(this.groupElement); }\n protected refreshMinSize(): TSU.Geom.Size {\n let totalWidth = 0;\n let maxHeight = 0;\n this.atomViews.forEach((av, index) => {\n const ms = av.minSize;\n totalWidth += ms.width + this.atomSpacing;\n maxHeight = Math.max(maxHeight, ms.height);\n });\n return new TSU.Geom.Size(totalWidth, maxHeight);\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, w, h];\n }\n\n setStyles(config: any): void {\n if (\"atomSpacing\" in config) this.atomSpacing = config.atomSpacing;\n this.needsLayout = true;\n }\n\n refreshLayout(): void {\n this.groupElement.setAttribute(\"transform\", \"translate(\" + this.x + \",\" + this.y + \")\");\n // if (this.widthChanged) {\n // All our atoms have to be laid out between startX and endX\n // old way of doing where we just set dx between atom views\n // this worked when atomviews were single glyphs. But\n // as atomViews can be complex (eg with accents and pre/post\n // spaces etc) explicitly setting x/y may be important\n let currX = 0;\n const currY = 0; // null; // this.y; // + 10;\n this.atomViews.forEach((av, index) => {\n av.setBounds(currX, currY, null, null, true);\n currX += this.atomSpacing + av.minSize.width;\n });\n this.resetMinSize();\n for (const e of this.embelishments) e.refreshLayout();\n this.resetMinSize();\n }\n\n get embelishments(): Embelishment[] {\n if (!this._embelishments) {\n this._embelishments = [];\n const beat = this.beat;\n // TODO - Should this be the group's parent element?\n const rootElement = this.textElement.parentElement as any as SVGGraphicsElement;\n if (beat.beatIndex == 0 && beat.barIndex == 0 && beat.instance == 0) {\n // first beat in bar - Do a BarStart\n const emb = new BeatStartLines(this, rootElement);\n this._embelishments = [emb];\n } else {\n const cycle = this.cycle;\n const bar = cycle.bars[beat.barIndex];\n if (beat.beatIndex == bar.beatCount - 1) {\n // It is important that we are not just looking at the last beat of the bar\n // but also in the last \"instance\" of the beat in this bar to account for\n // kalais\n if (beat.instance == bar.beatCounts[beat.beatIndex] - 1) {\n if (beat.barIndex == cycle.bars.length - 1) {\n // last beat in last bar so - do a thalam end (2 lines)\n const emb = new BeatEndLines(this, rootElement, 2);\n this._embelishments = [emb];\n } else {\n // end of a bar so single line end\n const emb = new BeatEndLines(this, rootElement);\n this._embelishments = [emb];\n }\n }\n }\n }\n }\n return this._embelishments;\n }\n}\n"]}
|
package/package.json
CHANGED