@onjmin/dtm 0.1.5 → 0.1.6

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.js CHANGED
@@ -7145,8 +7145,10 @@ var createDtmStudio = async (options = {}) => {
7145
7145
  ...dawOverrides
7146
7146
  };
7147
7147
  const wantPresetUI = presetUI ?? features.presetUI;
7148
+ let select = null;
7148
7149
  if (wantPresetUI) {
7149
- const select = target.ownerDocument.createElement("select");
7150
+ editorPresetSelects.get(target)?.remove();
7151
+ select = target.ownerDocument.createElement("select");
7150
7152
  select.className = "dtm-studio-preset";
7151
7153
  for (const [key, p] of Object.entries(INSTRUMENT_PRESETS)) {
7152
7154
  const opt = target.ownerDocument.createElement("option");
@@ -7158,6 +7160,7 @@ var createDtmStudio = async (options = {}) => {
7158
7160
  target.appendChild(select);
7159
7161
  editorPresetSelects.set(target, select);
7160
7162
  select.addEventListener("change", async () => {
7163
+ if (!select) return;
7161
7164
  daw.setInstrument(select.value);
7162
7165
  await loadPreset(select.value, trackIds);
7163
7166
  });
@@ -7167,7 +7170,15 @@ var createDtmStudio = async (options = {}) => {
7167
7170
  const presetKey = preset && INSTRUMENT_PRESETS[preset] ? preset : defaultPreset;
7168
7171
  daw.setInstrument(presetKey);
7169
7172
  void loadPreset(presetKey, trackIds);
7170
- return daw;
7173
+ const destroy = () => {
7174
+ daw.destroy();
7175
+ select?.remove();
7176
+ if (editorPresetSelects.get(target) === select)
7177
+ editorPresetSelects.delete(target);
7178
+ const i = mountedEditors.indexOf(daw);
7179
+ if (i >= 0) mountedEditors.splice(i, 1);
7180
+ };
7181
+ return { ...daw, destroy };
7171
7182
  };
7172
7183
  const mountPlayer = (target, mml, opts = {}) => {
7173
7184
  const meta = parseMML(mml, {}).meta ?? {};
@@ -7183,7 +7194,12 @@ var createDtmStudio = async (options = {}) => {
7183
7194
  ...opts
7184
7195
  });
7185
7196
  mountedPlayers.push(player);
7186
- return player;
7197
+ const destroy = () => {
7198
+ player.destroy();
7199
+ const i = mountedPlayers.indexOf(player);
7200
+ if (i >= 0) mountedPlayers.splice(i, 1);
7201
+ };
7202
+ return { ...player, destroy };
7187
7203
  };
7188
7204
  const dispose = () => {
7189
7205
  for (const p of mountedPlayers) p.destroy();
package/dist/index.mjs CHANGED
@@ -7040,8 +7040,10 @@ var createDtmStudio = async (options = {}) => {
7040
7040
  ...dawOverrides
7041
7041
  };
7042
7042
  const wantPresetUI = presetUI ?? features.presetUI;
7043
+ let select = null;
7043
7044
  if (wantPresetUI) {
7044
- const select = target.ownerDocument.createElement("select");
7045
+ editorPresetSelects.get(target)?.remove();
7046
+ select = target.ownerDocument.createElement("select");
7045
7047
  select.className = "dtm-studio-preset";
7046
7048
  for (const [key, p] of Object.entries(INSTRUMENT_PRESETS)) {
7047
7049
  const opt = target.ownerDocument.createElement("option");
@@ -7053,6 +7055,7 @@ var createDtmStudio = async (options = {}) => {
7053
7055
  target.appendChild(select);
7054
7056
  editorPresetSelects.set(target, select);
7055
7057
  select.addEventListener("change", async () => {
7058
+ if (!select) return;
7056
7059
  daw.setInstrument(select.value);
7057
7060
  await loadPreset(select.value, trackIds);
7058
7061
  });
@@ -7062,7 +7065,15 @@ var createDtmStudio = async (options = {}) => {
7062
7065
  const presetKey = preset && INSTRUMENT_PRESETS[preset] ? preset : defaultPreset;
7063
7066
  daw.setInstrument(presetKey);
7064
7067
  void loadPreset(presetKey, trackIds);
7065
- return daw;
7068
+ const destroy = () => {
7069
+ daw.destroy();
7070
+ select?.remove();
7071
+ if (editorPresetSelects.get(target) === select)
7072
+ editorPresetSelects.delete(target);
7073
+ const i = mountedEditors.indexOf(daw);
7074
+ if (i >= 0) mountedEditors.splice(i, 1);
7075
+ };
7076
+ return { ...daw, destroy };
7066
7077
  };
7067
7078
  const mountPlayer = (target, mml, opts = {}) => {
7068
7079
  const meta = parseMML(mml, {}).meta ?? {};
@@ -7078,7 +7089,12 @@ var createDtmStudio = async (options = {}) => {
7078
7089
  ...opts
7079
7090
  });
7080
7091
  mountedPlayers.push(player);
7081
- return player;
7092
+ const destroy = () => {
7093
+ player.destroy();
7094
+ const i = mountedPlayers.indexOf(player);
7095
+ if (i >= 0) mountedPlayers.splice(i, 1);
7096
+ };
7097
+ return { ...player, destroy };
7082
7098
  };
7083
7099
  const dispose = () => {
7084
7100
  for (const p of mountedPlayers) p.destroy();
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.5",
5
+ "version": "0.1.6",
6
6
  "description": "MMLを中間言語に用いた、モバイルファーストなDAW / ピアノロール打ち込みコンポーネント",
7
7
  "homepage": "https://onjmin.github.io/dtm",
8
8
  "repository": {