@onjmin/dtm 0.1.77 → 0.1.78

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/dist/index.d.mts CHANGED
@@ -25,6 +25,8 @@ type MountChordPlayerOptions = {
25
25
  volume?: number;
26
26
  /** BPM 既定120 */
27
27
  bpm?: number;
28
+ /** ループ再生(既定オフ)。#loop=on メタ行でも指定可 */
29
+ loop?: boolean;
28
30
  /** スタジオインスタンス(DtmStudio)。指定時は高品質SoundFontが使われます */
29
31
  studio?: any;
30
32
  /** 再生終了時コールバック */
package/dist/index.d.ts CHANGED
@@ -25,6 +25,8 @@ type MountChordPlayerOptions = {
25
25
  volume?: number;
26
26
  /** BPM 既定120 */
27
27
  bpm?: number;
28
+ /** ループ再生(既定オフ)。#loop=on メタ行でも指定可 */
29
+ loop?: boolean;
28
30
  /** スタジオインスタンス(DtmStudio)。指定時は高品質SoundFontが使われます */
29
31
  studio?: any;
30
32
  /** 再生終了時コールバック */
package/dist/index.js CHANGED
@@ -6988,6 +6988,12 @@ var parseBpmMeta = (chords) => {
6988
6988
  if (Number.isNaN(val)) return null;
6989
6989
  return Math.max(40, Math.min(240, val));
6990
6990
  };
6991
+ var parseLoopMeta = (chords) => {
6992
+ const m = chords.match(/^#\s*loop\s*=\s*(on|off|1|0|true|false)\s*$/im);
6993
+ if (!m) return null;
6994
+ const v = m[1].toLowerCase();
6995
+ return v === "on" || v === "1" || v === "true";
6996
+ };
6991
6997
  var _nameToKeyCache = null;
6992
6998
  var getNameToKey = async () => {
6993
6999
  if (!_nameToKeyCache) _nameToKeyCache = await buildNameToKeyMapping();
@@ -7158,7 +7164,7 @@ var mountChordPlayer = (target, chords, options = {}) => {
7158
7164
  let masterVolume = options.volume ?? 80;
7159
7165
  let isLoading = false;
7160
7166
  let loadAbortId = 0;
7161
- let loopEnabled = false;
7167
+ let loopEnabled = options.loop ?? parseLoopMeta(chords) ?? false;
7162
7168
  let metronomeEnabled = parseMetronomeMeta(chords);
7163
7169
  let playOffsetSec = 0;
7164
7170
  let currentPlaySec = 0;
@@ -7233,7 +7239,8 @@ var mountChordPlayer = (target, chords, options = {}) => {
7233
7239
  loopBtn.type = "button";
7234
7240
  loopBtn.className = "dtm-cp-loop";
7235
7241
  loopBtn.innerHTML = icon("loop", 12);
7236
- loopBtn.title = "LOOP OFF";
7242
+ loopBtn.title = loopEnabled ? "LOOP ON" : "LOOP OFF";
7243
+ loopBtn.classList.toggle("dtm-cp-loop--on", loopEnabled);
7237
7244
  loopBtn.addEventListener("click", () => {
7238
7245
  loopEnabled = !loopEnabled;
7239
7246
  loopBtn.classList.toggle("dtm-cp-loop--on", loopEnabled);
package/dist/index.mjs CHANGED
@@ -6865,6 +6865,12 @@ var parseBpmMeta = (chords) => {
6865
6865
  if (Number.isNaN(val)) return null;
6866
6866
  return Math.max(40, Math.min(240, val));
6867
6867
  };
6868
+ var parseLoopMeta = (chords) => {
6869
+ const m = chords.match(/^#\s*loop\s*=\s*(on|off|1|0|true|false)\s*$/im);
6870
+ if (!m) return null;
6871
+ const v = m[1].toLowerCase();
6872
+ return v === "on" || v === "1" || v === "true";
6873
+ };
6868
6874
  var _nameToKeyCache = null;
6869
6875
  var getNameToKey = async () => {
6870
6876
  if (!_nameToKeyCache) _nameToKeyCache = await buildNameToKeyMapping();
@@ -7035,7 +7041,7 @@ var mountChordPlayer = (target, chords, options = {}) => {
7035
7041
  let masterVolume = options.volume ?? 80;
7036
7042
  let isLoading = false;
7037
7043
  let loadAbortId = 0;
7038
- let loopEnabled = false;
7044
+ let loopEnabled = options.loop ?? parseLoopMeta(chords) ?? false;
7039
7045
  let metronomeEnabled = parseMetronomeMeta(chords);
7040
7046
  let playOffsetSec = 0;
7041
7047
  let currentPlaySec = 0;
@@ -7110,7 +7116,8 @@ var mountChordPlayer = (target, chords, options = {}) => {
7110
7116
  loopBtn.type = "button";
7111
7117
  loopBtn.className = "dtm-cp-loop";
7112
7118
  loopBtn.innerHTML = icon("loop", 12);
7113
- loopBtn.title = "LOOP OFF";
7119
+ loopBtn.title = loopEnabled ? "LOOP ON" : "LOOP OFF";
7120
+ loopBtn.classList.toggle("dtm-cp-loop--on", loopEnabled);
7114
7121
  loopBtn.addEventListener("click", () => {
7115
7122
  loopEnabled = !loopEnabled;
7116
7123
  loopBtn.classList.toggle("dtm-cp-loop--on", loopEnabled);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "onjmin",
3
3
  "license": "MIT",
4
4
  "name": "@onjmin/dtm",
5
- "version": "0.1.77",
5
+ "version": "0.1.78",
6
6
  "description": "MMLを中間言語に用いた、モバイルファーストなDAW / ピアノロール打ち込みコンポーネント",
7
7
  "homepage": "https://onjmin.github.io/dtm",
8
8
  "repository": {