notations 0.0.48 → 0.0.51

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 (113) hide show
  1. package/lib/cjs/beats.d.ts +36 -71
  2. package/lib/cjs/beats.js +225 -432
  3. package/lib/cjs/beats.js.map +1 -1
  4. package/lib/cjs/beatutils.d.ts +3 -0
  5. package/lib/cjs/beatutils.js +64 -0
  6. package/lib/cjs/beatutils.js.map +1 -0
  7. package/lib/cjs/beatview.d.ts +18 -0
  8. package/lib/cjs/beatview.js +62 -0
  9. package/lib/cjs/beatview.js.map +1 -0
  10. package/lib/cjs/carnatic/LineView.d.ts +2 -7
  11. package/lib/cjs/carnatic/LineView.js +13 -31
  12. package/lib/cjs/carnatic/LineView.js.map +1 -1
  13. package/lib/cjs/carnatic/NotationView.d.ts +9 -7
  14. package/lib/cjs/carnatic/NotationView.js +90 -153
  15. package/lib/cjs/carnatic/NotationView.js.map +1 -1
  16. package/lib/cjs/carnatic/atomviews.js +149 -287
  17. package/lib/cjs/carnatic/atomviews.js.map +1 -1
  18. package/lib/cjs/carnatic/beatviews.d.ts +18 -10
  19. package/lib/cjs/carnatic/beatviews.js +59 -91
  20. package/lib/cjs/carnatic/beatviews.js.map +1 -1
  21. package/lib/cjs/carnatic/embelishments.d.ts +1 -1
  22. package/lib/cjs/carnatic/embelishments.js +189 -283
  23. package/lib/cjs/carnatic/embelishments.js.map +1 -1
  24. package/lib/cjs/carnatic/gamakas.js +15 -47
  25. package/lib/cjs/carnatic/gamakas.js.map +1 -1
  26. package/lib/cjs/commands.js +111 -271
  27. package/lib/cjs/commands.js.map +1 -1
  28. package/lib/cjs/core.d.ts +6 -1
  29. package/lib/cjs/core.js +288 -493
  30. package/lib/cjs/core.js.map +1 -1
  31. package/lib/cjs/cycle.js +175 -367
  32. package/lib/cjs/cycle.js.map +1 -1
  33. package/lib/cjs/entity.js +48 -102
  34. package/lib/cjs/entity.js.map +1 -1
  35. package/lib/cjs/grids.d.ts +124 -1
  36. package/lib/cjs/grids.js +546 -6
  37. package/lib/cjs/grids.js.map +1 -1
  38. package/lib/cjs/iterators.js +96 -234
  39. package/lib/cjs/iterators.js.map +1 -1
  40. package/lib/cjs/layouts.d.ts +1 -1
  41. package/lib/cjs/layouts.js +62 -98
  42. package/lib/cjs/layouts.js.map +1 -1
  43. package/lib/cjs/loader.d.ts +2 -2
  44. package/lib/cjs/loader.js +23 -123
  45. package/lib/cjs/loader.js.map +1 -1
  46. package/lib/cjs/notation.d.ts +0 -3
  47. package/lib/cjs/notation.js +139 -241
  48. package/lib/cjs/notation.js.map +1 -1
  49. package/lib/cjs/parser.d.ts +2 -0
  50. package/lib/cjs/parser.js +222 -219
  51. package/lib/cjs/parser.js.map +1 -1
  52. package/lib/cjs/shapes.js +149 -283
  53. package/lib/cjs/shapes.js.map +1 -1
  54. package/lib/cjs/utils.d.ts +8 -0
  55. package/lib/cjs/utils.js +60 -55
  56. package/lib/cjs/utils.js.map +1 -1
  57. package/lib/esm/beats.d.ts +36 -71
  58. package/lib/esm/beats.js +218 -430
  59. package/lib/esm/beats.js.map +1 -1
  60. package/lib/esm/beatutils.d.ts +3 -0
  61. package/lib/esm/beatutils.js +37 -0
  62. package/lib/esm/beatutils.js.map +1 -0
  63. package/lib/esm/beatview.d.ts +18 -0
  64. package/lib/esm/beatview.js +35 -0
  65. package/lib/esm/beatview.js.map +1 -0
  66. package/lib/esm/carnatic/LineView.d.ts +2 -7
  67. package/lib/esm/carnatic/LineView.js +12 -31
  68. package/lib/esm/carnatic/LineView.js.map +1 -1
  69. package/lib/esm/carnatic/NotationView.d.ts +9 -7
  70. package/lib/esm/carnatic/NotationView.js +88 -152
  71. package/lib/esm/carnatic/NotationView.js.map +1 -1
  72. package/lib/esm/carnatic/atomviews.js +144 -284
  73. package/lib/esm/carnatic/atomviews.js.map +1 -1
  74. package/lib/esm/carnatic/beatviews.d.ts +18 -10
  75. package/lib/esm/carnatic/beatviews.js +53 -87
  76. package/lib/esm/carnatic/beatviews.js.map +1 -1
  77. package/lib/esm/carnatic/embelishments.d.ts +1 -1
  78. package/lib/esm/carnatic/embelishments.js +187 -296
  79. package/lib/esm/carnatic/embelishments.js.map +1 -1
  80. package/lib/esm/carnatic/gamakas.js +14 -48
  81. package/lib/esm/carnatic/gamakas.js.map +1 -1
  82. package/lib/esm/commands.js +100 -271
  83. package/lib/esm/commands.js.map +1 -1
  84. package/lib/esm/core.d.ts +6 -1
  85. package/lib/esm/core.js +286 -502
  86. package/lib/esm/core.js.map +1 -1
  87. package/lib/esm/cycle.js +172 -367
  88. package/lib/esm/cycle.js.map +1 -1
  89. package/lib/esm/entity.js +48 -104
  90. package/lib/esm/entity.js.map +1 -1
  91. package/lib/esm/grids.d.ts +124 -1
  92. package/lib/esm/grids.js +515 -5
  93. package/lib/esm/grids.js.map +1 -1
  94. package/lib/esm/iterators.js +93 -235
  95. package/lib/esm/iterators.js.map +1 -1
  96. package/lib/esm/layouts.d.ts +1 -1
  97. package/lib/esm/layouts.js +60 -97
  98. package/lib/esm/layouts.js.map +1 -1
  99. package/lib/esm/loader.d.ts +2 -2
  100. package/lib/esm/loader.js +20 -120
  101. package/lib/esm/loader.js.map +1 -1
  102. package/lib/esm/notation.d.ts +0 -3
  103. package/lib/esm/notation.js +135 -242
  104. package/lib/esm/notation.js.map +1 -1
  105. package/lib/esm/parser.d.ts +2 -0
  106. package/lib/esm/parser.js +216 -214
  107. package/lib/esm/parser.js.map +1 -1
  108. package/lib/esm/shapes.js +148 -288
  109. package/lib/esm/shapes.js.map +1 -1
  110. package/lib/esm/utils.d.ts +8 -0
  111. package/lib/esm/utils.js +55 -51
  112. package/lib/esm/utils.js.map +1 -1
  113. package/package.json +2 -1
@@ -1,16 +1,24 @@
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 {
1
+ import { Embelishment } from "../shapes";
2
+ import { GridCell, GridCellView } from "../grids";
3
+ import { ElementShape } from "../shapes";
4
+ import { Marker } from "../core";
5
+ import { Beat } from "../beats";
6
+ import { BeatView as BeatViewBase } from "../beatview";
7
+ export declare class MarkerView extends ElementShape<SVGGElement> implements GridCellView {
8
+ readonly cell: GridCell;
5
9
  readonly beat: Beat;
10
+ readonly markers: Marker[];
11
+ readonly isPreMarker: boolean;
6
12
  readonly rootElement: SVGGraphicsElement;
7
- readonly cycle: Cycle;
8
- private _embelishments;
9
- atomView: AtomView;
10
13
  needsLayout: boolean;
11
- constructor(beat: Beat, rootElement: SVGGraphicsElement, cycle: Cycle, config?: any);
14
+ rootGroup: SVGGElement;
15
+ textElement: SVGTextElement;
16
+ constructor(cell: GridCell, beat: Beat, markers: Marker[], isPreMarker: boolean, rootElement: SVGGraphicsElement, config?: any);
17
+ refreshLayout(): void;
18
+ protected updateBounds(x: null | number, y: null | number, w: null | number, h: null | number): [number | null, number | null, number | null, number | null];
19
+ }
20
+ export declare class BeatView extends BeatViewBase {
21
+ createAtomView(): import("../shapes").AtomView;
12
22
  refreshLayout(): void;
13
- get embelishments(): Embelishment[];
14
23
  protected createEmbelishments(): Embelishment[];
15
- setStyles(config: any): void;
16
24
  }
@@ -1,19 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
3
  if (k2 === undefined) k2 = k;
19
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -37,107 +22,90 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
22
  __setModuleDefault(result, mod);
38
23
  return result;
39
24
  };
40
- var __values = (this && this.__values) || function(o) {
41
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
42
- if (m) return m.call(o);
43
- if (o && typeof o.length === "number") return {
44
- next: function () {
45
- if (o && i >= o.length) o = void 0;
46
- return { value: o && o[i++], done: !o };
47
- }
48
- };
49
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
50
- };
51
25
  Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.BeatView = void 0;
53
- var TSU = __importStar(require("@panyam/tsutils"));
54
- var shapes_1 = require("../shapes");
55
- var atomviews_1 = require("./atomviews");
56
- var embelishments_1 = require("./embelishments");
57
- var BeatView = (function (_super) {
58
- __extends(BeatView, _super);
59
- function BeatView(beat, rootElement, cycle, config) {
60
- var _this = _super.call(this, TSU.DOM.createSVGNode("g", {
26
+ exports.BeatView = exports.MarkerView = void 0;
27
+ const TSU = __importStar(require("@panyam/tsutils"));
28
+ const shapes_1 = require("../shapes");
29
+ const atomviews_1 = require("./atomviews");
30
+ const beatview_1 = require("../beatview");
31
+ const embelishments_1 = require("./embelishments");
32
+ class MarkerView extends shapes_1.ElementShape {
33
+ constructor(cell, beat, markers, isPreMarker, rootElement, config) {
34
+ const rootGroup = TSU.DOM.createSVGNode("g", {
61
35
  parent: rootElement,
62
36
  attrs: {
63
- class: "beatView",
64
- beatId: "" + beat.uuid,
65
- id: "" + beat.uuid,
37
+ class: "markerView",
38
+ pre: isPreMarker,
66
39
  roleName: beat.role.name,
67
- layoutLine: "" + beat.layoutLine,
68
- layoutColumn: "" + beat.layoutColumn,
69
40
  beatIndex: "" + beat.index,
41
+ gridRow: cell.rowIndex,
42
+ gridCol: cell.colIndex,
43
+ },
44
+ });
45
+ super(rootGroup);
46
+ this.cell = cell;
47
+ this.beat = beat;
48
+ this.markers = markers;
49
+ this.isPreMarker = isPreMarker;
50
+ this.rootElement = rootElement;
51
+ this.needsLayout = true;
52
+ this.rootGroup = rootGroup;
53
+ this.textElement = TSU.DOM.createSVGNode("text", {
54
+ parent: rootGroup,
55
+ attrs: {
56
+ class: "markerText",
57
+ pre: isPreMarker,
70
58
  },
71
- })) || this;
72
- _this.beat = beat;
73
- _this.rootElement = rootElement;
74
- _this.cycle = cycle;
75
- _this.needsLayout = true;
76
- _this.atomView = (0, atomviews_1.createAtomView)(_this.element, beat.atom, beat.role.defaultToNotes);
77
- _this.atomView.refreshLayout();
78
- return _this;
59
+ text: this.markers[0].text,
60
+ });
61
+ }
62
+ refreshLayout() {
63
+ this.rootGroup.setAttribute("transform", "translate(" + this.x + "," + this.y + ")");
64
+ }
65
+ updateBounds(x, y, w, h) {
66
+ return [x, y, NaN, NaN];
67
+ }
68
+ }
69
+ exports.MarkerView = MarkerView;
70
+ class BeatView extends beatview_1.BeatView {
71
+ createAtomView() {
72
+ return (0, atomviews_1.createAtomView)(this.element, this.beat.atom, this.beat.role.defaultToNotes);
79
73
  }
80
- BeatView.prototype.refreshLayout = function () {
81
- var e_1, _a;
82
- var newX = this.hasX ? this._x : 0;
83
- var newY = this.hasY ? this._y : 0;
74
+ refreshLayout() {
75
+ const newX = this.hasX ? this._x : 0;
76
+ const newY = this.hasY ? this._y : 0;
84
77
  this.element.setAttribute("transform", "translate(" + newX + "," + newY + ")");
85
78
  this.invalidateBounds();
86
- try {
87
- for (var _b = __values(this.embelishments), _c = _b.next(); !_c.done; _c = _b.next()) {
88
- var e = _c.value;
89
- e.refreshLayout();
90
- }
91
- }
92
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
93
- finally {
94
- try {
95
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
96
- }
97
- finally { if (e_1) throw e_1.error; }
98
- }
79
+ for (const e of this.embelishments)
80
+ e.refreshLayout();
99
81
  this.invalidateBounds();
100
- };
101
- Object.defineProperty(BeatView.prototype, "embelishments", {
102
- get: function () {
103
- if (!this._embelishments) {
104
- this._embelishments = this.createEmbelishments();
105
- }
106
- return this._embelishments;
107
- },
108
- enumerable: false,
109
- configurable: true
110
- });
111
- BeatView.prototype.createEmbelishments = function () {
112
- var embelishments = [];
113
- var beat = this.beat;
114
- var rootElement = this.rootElement;
82
+ }
83
+ createEmbelishments() {
84
+ let embelishments = [];
85
+ const beat = this.beat;
86
+ const rootElement = this.rootElement;
115
87
  if (beat.beatIndex == 0 && beat.barIndex == 0 && beat.instance == 0) {
116
- var emb = new embelishments_1.BeatStartLines(this, rootElement);
88
+ const emb = new embelishments_1.BeatStartLines(this, rootElement);
117
89
  embelishments = [emb];
118
90
  }
119
91
  else {
120
- var cycle = this.cycle;
121
- var bar = cycle.bars[beat.barIndex];
92
+ const cycle = this.cycle;
93
+ const bar = cycle.bars[beat.barIndex];
122
94
  if (beat.beatIndex == bar.beatCount - 1) {
123
95
  if (beat.instance == bar.instanceCount(beat.beatIndex) - 1) {
124
96
  if (beat.barIndex == cycle.bars.length - 1) {
125
- var emb = new embelishments_1.BeatEndLines(this, rootElement, 2);
97
+ const emb = new embelishments_1.BeatEndLines(this, rootElement, 2);
126
98
  embelishments = [emb];
127
99
  }
128
100
  else {
129
- var emb = new embelishments_1.BeatEndLines(this, rootElement);
101
+ const emb = new embelishments_1.BeatEndLines(this, rootElement);
130
102
  embelishments = [emb];
131
103
  }
132
104
  }
133
105
  }
134
106
  }
135
107
  return embelishments;
136
- };
137
- BeatView.prototype.setStyles = function (config) {
138
- this.needsLayout = true;
139
- };
140
- return BeatView;
141
- }(shapes_1.ElementShape));
108
+ }
109
+ }
142
110
  exports.BeatView = BeatView;
143
111
  //# sourceMappingURL=beatviews.js.map
@@ -1 +1 @@
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 { AtomType } from \"../core\";\nimport { Cycle } from \"../cycle\";\nimport { BeatView as BeatViewBase, Beat } from \"../beats\";\nimport { AtomView, GroupView, Embelishment, ElementShape } from \"../shapes\";\nimport { createAtomView } from \"./atomviews\";\nimport { BeatStartLines, BeatEndLines } from \"./embelishments\";\n\nexport class BeatView extends ElementShape<SVGGElement> implements BeatViewBase {\n private _embelishments: Embelishment[];\n atomView: AtomView;\n needsLayout = true;\n constructor(\n public readonly beat: Beat,\n public readonly rootElement: SVGGraphicsElement,\n public readonly cycle: Cycle,\n config?: any,\n ) {\n super(\n TSU.DOM.createSVGNode(\"g\", {\n parent: rootElement,\n attrs: {\n class: \"beatView\",\n beatId: \"\" + beat.uuid,\n id: \"\" + beat.uuid,\n roleName: beat.role.name,\n layoutLine: \"\" + beat.layoutLine,\n layoutColumn: \"\" + beat.layoutColumn,\n beatIndex: \"\" + beat.index,\n },\n }),\n );\n this.atomView = createAtomView(this.element, beat.atom, beat.role.defaultToNotes);\n this.atomView.refreshLayout();\n }\n\n refreshLayout(): void {\n const newX = this.hasX ? this._x : 0;\n const newY = this.hasY ? this._y : 0;\n this.element.setAttribute(\"transform\", \"translate(\" + newX + \",\" + newY + \")\");\n this.invalidateBounds();\n for (const e of this.embelishments) e.refreshLayout();\n this.invalidateBounds();\n }\n\n get embelishments(): Embelishment[] {\n if (!this._embelishments) {\n this._embelishments = this.createEmbelishments();\n }\n return this._embelishments;\n }\n\n protected createEmbelishments(): Embelishment[] {\n let embelishments: Embelishment[] = [];\n const beat = this.beat;\n // TODO - Should this be the group's parent element?\n const rootElement = this.rootElement;\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 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.instanceCount(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 embelishments = [emb];\n } else {\n // end of a bar so single line end\n const emb = new BeatEndLines(this, rootElement);\n embelishments = [emb];\n }\n }\n }\n }\n return embelishments;\n }\n\n setStyles(config: any): void {\n this.needsLayout = true;\n }\n}\n"]}
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 { Embelishment } from \"../shapes\";\nimport { GridCell, GridCellView } from \"../grids\";\nimport { ElementShape } from \"../shapes\";\nimport { createAtomView } from \"./atomviews\";\nimport { Marker } from \"../core\";\nimport { Beat } from \"../beats\";\nimport { BeatView as BeatViewBase } from \"../beatview\";\nimport { BeatStartLines, BeatEndLines } from \"./embelishments\";\n\nexport class MarkerView extends ElementShape<SVGGElement> implements GridCellView {\n needsLayout = true;\n rootGroup: SVGGElement;\n textElement: SVGTextElement;\n constructor(\n public readonly cell: GridCell,\n public readonly beat: Beat,\n public readonly markers: Marker[],\n public readonly isPreMarker: boolean,\n public readonly rootElement: SVGGraphicsElement,\n config?: any,\n ) {\n const rootGroup = TSU.DOM.createSVGNode(\"g\", {\n parent: rootElement,\n attrs: {\n class: \"markerView\",\n pre: isPreMarker,\n roleName: beat.role.name,\n beatIndex: \"\" + beat.index,\n gridRow: cell.rowIndex,\n gridCol: cell.colIndex,\n },\n });\n super(rootGroup);\n this.rootGroup = rootGroup as SVGGElement;\n this.textElement = TSU.DOM.createSVGNode(\"text\", {\n parent: rootGroup,\n attrs: {\n class: \"markerText\",\n pre: isPreMarker,\n },\n text: this.markers[0].text,\n });\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.rootGroup.setAttribute(\"transform\", \"translate(\" + this.x + \",\" + this.y + \")\");\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\nexport class BeatView extends BeatViewBase {\n createAtomView() {\n return createAtomView(this.element, this.beat.atom, this.beat.role.defaultToNotes);\n }\n\n refreshLayout(): void {\n const newX = this.hasX ? this._x : 0;\n const newY = this.hasY ? this._y : 0;\n this.element.setAttribute(\"transform\", \"translate(\" + newX + \",\" + newY + \")\");\n this.invalidateBounds();\n for (const e of this.embelishments) e.refreshLayout();\n this.invalidateBounds();\n }\n\n protected createEmbelishments(): Embelishment[] {\n let embelishments: Embelishment[] = [];\n const beat = this.beat;\n // TODO - Should this be the group's parent element?\n const rootElement = this.rootElement;\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 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.instanceCount(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 embelishments = [emb];\n } else {\n // end of a bar so single line end\n const emb = new BeatEndLines(this, rootElement);\n embelishments = [emb];\n }\n }\n }\n }\n return embelishments;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import * as TSU from "@panyam/tsutils";
2
2
  import { Note } from "../core";
3
- import { BeatView } from "../beats";
3
+ import { BeatView } from "../beatview";
4
4
  import { Embelishment } from "../shapes";
5
5
  import { LeafAtomView } from "./atomviews";
6
6
  import { JaaruGamaka } from "./gamakas";