From 55a53673d43729e7a8f9239253c6143d5a6447c0 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Fri, 12 Jun 2026 12:43:40 -0400 Subject: [PATCH 01/25] fix: pin diva.js to stable commit to fix fresh installs diva.js#master no longer exists; pin to last known good commit. See #1365. Co-Authored-By: Claude Sonnet 4.6 --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a7acae1c..d2f1fb37 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ }, "dependencies": { "d3": "^5.11.0", - "diva.js": "github:DDMAL/diva.js#master", + "diva.js": "github:DDMAL/diva.js#5f530483f653db68af1cbb92bc8cc967b51763c3", "http-server": "^14.1.1", "jsonschema": "^1.2.4", "pouchdb": "^7.1.1", diff --git a/yarn.lock b/yarn.lock index b9309f99..71aaf316 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3519,7 +3519,7 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -"diva.js@github:DDMAL/diva.js#master": +"diva.js@github:DDMAL/diva.js#5f530483f653db68af1cbb92bc8cc967b51763c3": version "6.0.2" resolved "https://codeload.github.com/DDMAL/diva.js/tar.gz/5f530483f653db68af1cbb92bc8cc967b51763c3" dependencies: From 807715ce33b15a2c3b8f409a9112753e0b143f18 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Fri, 12 Jun 2026 12:49:21 -0400 Subject: [PATCH 02/25] chore: add Hufnagel font zip at default location Adds assets/Hufnagel.zip for Verovio fontAddCustom integration. Font source files live in zih-syuan/hufnagel-font; this branch only tracks the packaged artifact. Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 1 + assets/Hufnagel.zip | Bin 0 -> 1643 bytes 2 files changed, 1 insertion(+) create mode 100644 assets/Hufnagel.zip diff --git a/.gitignore b/.gitignore index f20adbbf..6c0a4d7b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /cypress/downloads .idea + diff --git a/assets/Hufnagel.zip b/assets/Hufnagel.zip new file mode 100644 index 0000000000000000000000000000000000000000..c03663f708a5e6a6c87a243612b9c6c690592206 GIT binary patch literal 1643 zcmWIWW@h1H00Gz7lQCchl;C8LVelwT%S%j8&Cw4H;bdSAGSSEa;nE6j21b_ej0_Ac zAhiKNBSe5S2iS-g|1|zB1oCbHu^_S$u9lVtdKI}j_>5BRJI%*r$l+SwTC%kBXydkk zNi%Qm{GzP(b>@$*U7ubbEj-+M`ef@rj^}p;%+g{dejop0cks96-MIGOpRHQLXY2iD zU8|(aY_ZLhd9zrtYpP&}Xy;1f4!wxAP9lf>TI>77bLVW(k$9N4+ye ziYLgKa{u4GwW;yz${^Hn>{_jU;mw3-s@LsjO zU)+-K;_pXhA@?68aNTQOx4KJXM%T8;y(v3dt{4$fFJ(>^&# z{gq_Fho(7<0_*#V>q9-+A3Xe@AhhqrCl{4xJulKYEG_jHuYRj=he<}?gYoVo0S?Jy zljiwL_X*#bCGjvW?T3f_mAxJ__iYwQ&g{D>we4A>k@@cS{Uycgb|!1zx|rwF!uGjjKX{W9Dfh+wwA-5F z9;@|FSgdYTc@-w*Q2C1~+EM%q!_ride-|d#G+G^YHOL6$`8iQ$)44438s^ED-=BDK zXKu^2O=+#^oqLuU=qqTQdXu>5yW17xdFHE1AN25B2Cu%*aoR{&YTn$cyv>?iI=Ai> zMf88KUL(R*|Mpl@{`DQZT1?a|FRoo6bmN%D(N)&-t``cvx^ZRN8fDW!*B-NP{=SR) zr!_ad<~?|M)2GVt^I7889v96!ypZ1GDxSAVx{@1afw0pCMn9gMe$bpW)25tOT*-mX=np z#wfyk$zfPGEVvcdv z`nwn3TAS8(?W9w#>8*#WKfa1yX=SWXvGKHzzVSp!Q?0aPN(?8gGfd`f?hy>@og%ZS zcbmGVU-_R5pBc(w9DnLjG>;c}4OmfV) z3PTB?he1Gq;jJTxMk*RvAw?rbu?R8_SHTD|4p@XTENOH`HV#ot5@#%G8H8-CKG1ZS oD Date: Mon, 29 Jun 2026 11:49:28 -0400 Subject: [PATCH 03/25] chore: sync Hufnagel zip with neume glyphs from font branch --- assets/Hufnagel.zip | Bin 1643 -> 9404 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/Hufnagel.zip b/assets/Hufnagel.zip index c03663f708a5e6a6c87a243612b9c6c690592206..30dd8c51150ab3ed90b839655325f012be6d58e8 100644 GIT binary patch literal 9404 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 YFDDoRWcLIB@E~7UkPR=1`2TVMFtN;K2 literal 1643 zcmWIWW@h1H00Gz7lQCchl;C8LVelwT%S%j8&Cw4H;bdSAGSSEa;nE6j21b_ej0_Ac zAhiKNBSe5S2iS-g|1|zB1oCbHu^_S$u9lVtdKI}j_>5BRJI%*r$l+SwTC%kBXydkk zNi%Qm{GzP(b>@$*U7ubbEj-+M`ef@rj^}p;%+g{dejop0cks96-MIGOpRHQLXY2iD zU8|(aY_ZLhd9zrtYpP&}Xy;1f4!wxAP9lf>TI>77bLVW(k$9N4+ye ziYLgKa{u4GwW;yz${^Hn>{_jU;mw3-s@LsjO zU)+-K;_pXhA@?68aNTQOx4KJXM%T8;y(v3dt{4$fFJ(>^&# z{gq_Fho(7<0_*#V>q9-+A3Xe@AhhqrCl{4xJulKYEG_jHuYRj=he<}?gYoVo0S?Jy zljiwL_X*#bCGjvW?T3f_mAxJ__iYwQ&g{D>we4A>k@@cS{Uycgb|!1zx|rwF!uGjjKX{W9Dfh+wwA-5F z9;@|FSgdYTc@-w*Q2C1~+EM%q!_ride-|d#G+G^YHOL6$`8iQ$)44438s^ED-=BDK zXKu^2O=+#^oqLuU=qqTQdXu>5yW17xdFHE1AN25B2Cu%*aoR{&YTn$cyv>?iI=Ai> zMf88KUL(R*|Mpl@{`DQZT1?a|FRoo6bmN%D(N)&-t``cvx^ZRN8fDW!*B-NP{=SR) zr!_ad<~?|M)2GVt^I7889v96!ypZ1GDxSAVx{@1afw0pCMn9gMe$bpW)25tOT*-mX=np z#wfyk$zfPGEVvcdv z`nwn3TAS8(?W9w#>8*#WKfa1yX=SWXvGKHzzVSp!Q?0aPN(?8gGfd`f?hy>@og%ZS zcbmGVU-_R5pBc(w9DnLjG>;c}4OmfV) z3PTB?he1Gq;jJTxMk*RvAw?rbu?R8_SHTD|4p@XTENOH`HV#ot5@#%G8H8-CKG1ZS oD Date: Mon, 29 Jun 2026 14:01:40 -0400 Subject: [PATCH 04/25] feat: add Notation Type dropdown UI scaffold to Display panel Adds a Square/Hufnagel selector below Display Options. Clicking updates the label and logs to console; engine wiring (setFont / setNotationType) is the next step. Co-Authored-By: Claude Sonnet 4.6 --- src/DisplayPanel/DisplayControls.ts | 35 +++++++++++++++++++++++++++++ src/DisplayPanel/DisplayPanel.ts | 25 ++++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/DisplayPanel/DisplayControls.ts b/src/DisplayPanel/DisplayControls.ts index 50791b34..16f7f92d 100644 --- a/src/DisplayPanel/DisplayControls.ts +++ b/src/DisplayPanel/DisplayControls.ts @@ -491,6 +491,40 @@ function setBurgerControls(): void { }); } +/** + * Set click listeners for Notation Type dropdown (Square / Hufnagel). + * Currently only updates the label and logs to console; engine wiring is next. + */ +export function setNotationTypeControls(): void { + const dropdown = document.getElementById('notation-type-dropdown'); + const label = document.getElementById('notation-type-label'); + + function notationTypeClickaway(): void { + document.body.removeEventListener('click', notationTypeClickaway); + dropdown.classList.remove('is-active'); + } + + document.getElementById('notation-type-button').addEventListener('click', (evt) => { + evt.stopPropagation(); + dropdown.classList.toggle('is-active'); + if (dropdown.classList.contains('is-active')) { + document.body.addEventListener('click', notationTypeClickaway); + } else { + document.body.removeEventListener('click', notationTypeClickaway); + } + }); + + ['square', 'hufnagel'].forEach((type) => { + document.getElementById(`notation-type-${type}`).addEventListener('click', () => { + dropdown.classList.remove('is-active'); + document.body.removeEventListener('click', notationTypeClickaway); + label.textContent = `\xA0- ${type[0].toUpperCase() + type.slice(1)}`; + console.log(`[NotationType] switched to: ${type}`); + // TODO: wire up engine — call neonView.setNotationType(type) + }); + }); +} + /** * Set listener for "Display All" button in Display panel. */ @@ -583,6 +617,7 @@ export function initDisplayControls( setHighlightKeyControls(); setDisplayAllListener(); loadHighlightSettings(); + setNotationTypeControls(); const displayContents = document.getElementById('displayContents'); const toggleDisplay = document.getElementById('toggleDisplay'); diff --git a/src/DisplayPanel/DisplayPanel.ts b/src/DisplayPanel/DisplayPanel.ts index aa6096c2..888cf862 100644 --- a/src/DisplayPanel/DisplayPanel.ts +++ b/src/DisplayPanel/DisplayPanel.ts @@ -135,7 +135,30 @@ function displayControlsPanel(handleZoom: ZoomHandler): string { - + +
+
Notation Type:
+ +
+ `; return contents; From c158db3626919e72734c4ada309a3d8fd83cafb5 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Mon, 29 Jun 2026 15:29:05 -0400 Subject: [PATCH 05/25] feat: wire Notation Type dropdown to live font switching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VerovioWorker: add setFont handler (lazy-loads Hufnagel.zip as base64, calls toolkit.setOptions with full options) - NeonCore: add setNotationFont() — sends setFont to worker, clears lastPageLoaded to bypass cache on next render - NeonView: add setNotationType() — calls setNotationFont then re-renders - DisplayControls/DisplayPanel: thread neonView through setDisplayListeners → initDisplayControls → setNotationTypeControls so dropdown is wired - Interfaces/SingleView/DivaView: update setDisplayListeners signature Co-Authored-By: Claude Sonnet 4.6 --- src/DisplayPanel/DisplayControls.ts | 9 +++--- src/DisplayPanel/DisplayPanel.ts | 5 ++-- src/DivaView.ts | 2 +- src/Interfaces.ts | 2 +- src/NeonCore.ts | 19 ++++++++++++ src/NeonView.ts | 6 ++++ src/SingleView/SingleView.ts | 2 +- src/Types.ts | 1 + src/workers/VerovioWorker-dev.js | 45 ++++++++++++++++++++++++++++- 9 files changed, 81 insertions(+), 10 deletions(-) diff --git a/src/DisplayPanel/DisplayControls.ts b/src/DisplayPanel/DisplayControls.ts index 16f7f92d..2593996f 100644 --- a/src/DisplayPanel/DisplayControls.ts +++ b/src/DisplayPanel/DisplayControls.ts @@ -5,6 +5,7 @@ import ZoomHandler from '../SingleView/Zoom'; import { GroupingType } from '../Types'; import { getSettings, setSettings } from '../utils/LocalSettings'; import * as d3 from 'd3'; +import NeonView from '../NeonView'; let lastGlyphOpacity: number, lastImageOpacity: number, lastCircleSize: number; @@ -495,7 +496,7 @@ function setBurgerControls(): void { * Set click listeners for Notation Type dropdown (Square / Hufnagel). * Currently only updates the label and logs to console; engine wiring is next. */ -export function setNotationTypeControls(): void { +export function setNotationTypeControls(neonView: NeonView): void { const dropdown = document.getElementById('notation-type-dropdown'); const label = document.getElementById('notation-type-label'); @@ -519,8 +520,7 @@ export function setNotationTypeControls(): void { dropdown.classList.remove('is-active'); document.body.removeEventListener('click', notationTypeClickaway); label.textContent = `\xA0- ${type[0].toUpperCase() + type.slice(1)}`; - console.log(`[NotationType] switched to: ${type}`); - // TODO: wire up engine — call neonView.setNotationType(type) + neonView.setNotationType(type); }); }); } @@ -609,6 +609,7 @@ export function loadHighlightSettings(): void { export function initDisplayControls( meiClassName: string, background: string, + neonView: NeonView, ): void { setGlyphOpacityControls(meiClassName); setBgOpacityControls(background); @@ -617,7 +618,7 @@ export function initDisplayControls( setHighlightKeyControls(); setDisplayAllListener(); loadHighlightSettings(); - setNotationTypeControls(); + setNotationTypeControls(neonView); const displayContents = document.getElementById('displayContents'); const toggleDisplay = document.getElementById('toggleDisplay'); diff --git a/src/DisplayPanel/DisplayPanel.ts b/src/DisplayPanel/DisplayPanel.ts index 888cf862..b1e141bf 100644 --- a/src/DisplayPanel/DisplayPanel.ts +++ b/src/DisplayPanel/DisplayPanel.ts @@ -2,6 +2,7 @@ import * as DisplayControls from './DisplayControls'; import ZoomHandler from '../SingleView/Zoom'; import { DisplayInterface, ViewInterface } from '../Interfaces'; import { getSettings } from '../utils/LocalSettings'; +import NeonView from '../NeonView'; /** * Return the HTML for the display panel. @@ -203,12 +204,12 @@ class DisplayPanel implements DisplayInterface { /** * Apply event listeners related to the DisplayPanel. */ - setDisplayListeners(): void { + setDisplayListeners(neonView: NeonView): void { if (this.zoomHandler) { // Zoom handler stuff DisplayControls.setZoomControls(this.zoomHandler); } - DisplayControls.initDisplayControls(this.meiClass, this.background); + DisplayControls.initDisplayControls(this.meiClass, this.background, neonView); } /** diff --git a/src/DivaView.ts b/src/DivaView.ts index 6e76f0d2..651d9fe3 100644 --- a/src/DivaView.ts +++ b/src/DivaView.ts @@ -220,7 +220,7 @@ class DivaView implements ViewInterface { */ didLoad(): void { this.divaReady = true; - this.displayPanel.setDisplayListeners(); + this.displayPanel.setDisplayListeners(this.neonView); document.getElementById('loading').style.display = 'none'; } diff --git a/src/Interfaces.ts b/src/Interfaces.ts index 3a06283a..ad1f3a0e 100644 --- a/src/Interfaces.ts +++ b/src/Interfaces.ts @@ -17,7 +17,7 @@ export interface DisplayInterface { meiClass: string; background: string; zoomHandler: ZoomHandler; - setDisplayListeners(): void; + setDisplayListeners(neonView: NeonView): void; updateVisualization(): void; loadSettings(): void; } diff --git a/src/NeonCore.ts b/src/NeonCore.ts index 6a6285ff..0b15a806 100644 --- a/src/NeonCore.ts +++ b/src/NeonCore.ts @@ -304,6 +304,25 @@ class NeonCore { }); } + setNotationFont(type: string): Promise { + return new Promise((resolve): void => { + const message: VerovioMessage = { + id: uuidv4(), + action: 'setFont', + fontType: type, + }; + function handle(evt: MessageEvent): void { + if (evt.data.id === message.id) { + evt.target.removeEventListener('message', handle); + this.lastPageLoaded = ''; + resolve(); + } + } + this.verovioWrapper.addEventListener('message', handle.bind(this)); + this.verovioWrapper.postMessage(message); + }); + } + /** * Get the SVG for a specific page. * @param pageURI - The URI of the selected page. diff --git a/src/NeonView.ts b/src/NeonView.ts index 6688b8f8..8e8449f7 100644 --- a/src/NeonView.ts +++ b/src/NeonView.ts @@ -240,6 +240,12 @@ class NeonView { }); } + setNotationType(type: string): void { + this.core.setNotationFont(type).then(() => { + this.updateForCurrentPage(); + }); + } + /** * Get the page's MEI file as a string. * @param pageNo - The identifying URI of the page. diff --git a/src/SingleView/SingleView.ts b/src/SingleView/SingleView.ts index d9af3ea0..652a6a9d 100644 --- a/src/SingleView/SingleView.ts +++ b/src/SingleView/SingleView.ts @@ -110,7 +110,7 @@ class SingleView implements ViewInterface { onSVGLoad(): void { this.setViewEventHandlers(); - this.displayPanel.setDisplayListeners(); + this.displayPanel.setDisplayListeners(this.neonView); } /** diff --git a/src/Types.ts b/src/Types.ts index 6fb7f885..2344f4b1 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -272,6 +272,7 @@ export type VerovioMessage = { mei?: string; elementId?: string; editorAction?: EditorAction; + fontType?: string; }; export type VerovioResponse = { diff --git a/src/workers/VerovioWorker-dev.js b/src/workers/VerovioWorker-dev.js index 8e6472ac..41adfa6a 100644 --- a/src/workers/VerovioWorker-dev.js +++ b/src/workers/VerovioWorker-dev.js @@ -3,11 +3,27 @@ importScripts('../assets/js/verovio-toolkit-wasm.js'); let toolkit; const backlog = []; +let hufnagelBase64Promise = null; + +function fetchHufnagelBase64() { + if (!hufnagelBase64Promise) { + hufnagelBase64Promise = fetch('../assets/Hufnagel.zip') + .then(r => r.arrayBuffer()) + .then(buf => { + const bytes = new Uint8Array(buf); + let binary = ''; + for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); + return btoa(binary); + }); + } + return hufnagelBase64Promise; +} + /** * Parse and respond to messages sent by NeonCore. * @param {MessageEvent} evt */ -function handleNeonEvent(evt) { +async function handleNeonEvent(evt) { const data = evt.data; const result = { id: data.id, @@ -35,6 +51,33 @@ function handleNeonEvent(evt) { case 'renderToSVG': result.svg = toolkit.renderToSVG(1); break; + case 'setFont': { + const baseOptions = { + inputFrom: 'mei', + footer: 'none', + header: 'none', + pageMarginLeft: 0, + pageMarginTop: 0, + useFacsimile: false, + svgAdditionalAttribute: ['syllable@precedes', 'syllable@follows'], + svgCss: 'g.nc, g.custos, g.clef, g.accid, g.divLine {stroke: currentColor; stroke-width: 30px;}', + }; + try { + if (data.fontType === 'hufnagel') { + const b64 = await fetchHufnagelBase64(); + console.log('[VerovioWorker] b64 length:', b64.length); + toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64] }); + console.log('[VerovioWorker] setOptions Hufnagel done'); + } else { + toolkit.setOptions({ ...baseOptions, font: 'Bravura', fontAddCustom: '' }); + console.log('[VerovioWorker] setOptions Bravura done'); + } + console.log('[VerovioWorker] setFont done:', data.fontType); + } catch (e) { + console.error('[VerovioWorker] setFont ERROR:', e); + } + break; + } default: break; } From 5fc74499fa917cd1a879d96f6bc8901d938ee69f Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 09:50:10 -0400 Subject: [PATCH 06/25] style(display-panel): tweak notation dropdown tooltip text --- src/DisplayPanel/DisplayPanel.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DisplayPanel/DisplayPanel.ts b/src/DisplayPanel/DisplayPanel.ts index b1e141bf..94b24289 100644 --- a/src/DisplayPanel/DisplayPanel.ts +++ b/src/DisplayPanel/DisplayPanel.ts @@ -152,9 +152,9 @@ function displayControlsPanel(handleZoom: ZoomHandler): string { From 5602d3a3bf01a98dcb9ce5c9787b9ae2b6dd8e95 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 14:05:53 -0400 Subject: [PATCH 07/25] feat: render insert glyph icons dynamically --- assets/Bravura.zip | Bin 0 -> 458658 bytes assets/style.css | 17 ++++++ package.json | 2 + src/DisplayPanel/DisplayControls.ts | 12 ++++- src/NeonView.ts | 8 +-- src/SquareEdit/Contents.ts | 59 +++++++++++++++++++++ src/SquareEdit/Controls.ts | 77 ++++++++++++++++++++++------ src/SquareEdit/DivaEditMode.ts | 5 ++ src/SquareEdit/SingleEditMode.ts | 5 ++ src/utils/GlyphIcons.ts | 67 ++++++++++++++++++++++++ src/utils/LocalSettings.ts | 2 + yarn.lock | 9 +++- 12 files changed, 240 insertions(+), 23 deletions(-) create mode 100644 assets/Bravura.zip create mode 100644 src/utils/GlyphIcons.ts diff --git a/assets/Bravura.zip b/assets/Bravura.zip new file mode 100644 index 0000000000000000000000000000000000000000..e7c4ab083ee6418cef1b0965c35cfef60deac91f GIT binary patch literal 458658 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 z z;%WnZmW2Rq??q%bF#Y=vv4Vj--Sl*JbJkX_ zjZG6CzNLHCV|Ia{L!OG=p1JMgyZh!0dN0nl)j{FdJ6NkF%j3OKIY`MGX)zioa|uVs zS}unSRWC%9-8m^|-#t4;)w2*qiusu{szurQ->&0p_9`2dR4WgS zTy~Yl2EDrk5yv_&F~WMFfKBQ1x9up{kc}a6g#r>E?;Ol3V6nD0bG;oSt`%AiZ?`8i zmk+g@MH7S5CTARnqN`gqVqKtS{csjsyvSK@7);XGrX{)`pC=N)of=q9=ae|VU})Oc zUApn3DFHu-lFuf7M;QNCAX|*^SA3y{FU5)hdv5C^RToSC|0^40$>MEw32?(3|1RIX zIC@pD)EfC8^kykUuq|ov>otdzuS5n^gVrFsAJ0{P-HzB+O5s7wV^DhKKP+q~jhel=k`x0J{F)gPl)DDihX%d~Qa$9F8bm`C z7Ax(($>mPIcS|pYjU(@%VsuWVp`j>H6>n1S4px5G-Xn|Ly85er2X^98>YN#L026=~)v0>s&}aC~V% z5Bcom6@;@yElMORrrBr(O?`Z|T{+-o4<`^jk3wiC-eUx@(%_o*WPFIk3(w~q0n`4TPA;is+dG~vVwewu+XB`+4(NNZD@I%nJhp;dcE3>Hq{aw! z<}E{uyq>t>-zi_e31FwD+}h~$MK5uXKQEdk@3ROB>B@S<84x3E7osf+$_gCp2FSXU zWnIp1?R&VnaXn`Wz;}(ziL;`b_!t;yvuHLZ(!wx`}4yAyyaJtu_ zJ94j+tj~`=5vFB7rpUQ-6BJZ#E?uuXEa4Ad zoVoQQN1o#OTB*oK<}%Q6>3#FZ690bobj`#s#9WIqYmcgvTOgB3>+m#Km!uS_iDO~k!cllat z@WgqnX6_9|6J)J2#Ds!6kasR0wD& za2Y5b*c8#EFk)(Dt5TN6SrwXgKLbpCI?8iq)1vvgiqCYR!VL{cTqabXM-Z(8y=w8E zbLM>D*+qC7@Ov)C4rD!k@nugJ{#%Pn)H^>Vfs$Q@2RRTzqh*t9pva8W!Usd|Jx|O2 zenw{VF+`NK>DN_lpccDbYfnRX<>i&`&et+m4_)LBLfp70*2I*8pXi9cz!Zh}K_e8? z;^=^B8%jaq$IheUWr=~`e+w<_P}1p)xz3gpwBRYGglbSa^<^e=r<;{V5U6o1)#wH> zq-KGx-okE^Yq+#|Qe!{p_%lVaF07$^VpzQg{{H(JEyl|J@-rH!PXxra+$9th%4*dW zMAgOlY}$B09Iz+XCHcJ4>+sjLcwJAxLB{*Oycz0ifu&aucNaJEr|q+hZ{?ap-&=_G z{6DY~*R0;aY&AzyRIR-Q32!F7(V*2g)TAI_$r?%kime$6s@j(oxx-U;eu0ZpsNI}Z zPL$8_J-G4#kb}Lvx9;#huP}$* zDO%eDgGb2U^!hJm%jK%W7CKKTT|4!sh`o(PzJT5`EDix2TrWhnuLUY8inTkV!s#T~ z((U4F<3@;ab42}k7(U*w^`~q7QsWfz0~qpXU(dR~u&D zss}Q04=*D&O*cEke{_Mgvu(#lPSvo4C$8)4kga~(8#+brBMOp32? zsM)|$wIr=4Eq}$?&mT%-b{MNmfU0&ugT;Bbvc<8GXhI1FpW;OxX=z;K9d;~xXS(;8DzS9W@_AMM)tYRIO3IQiAYj@)x@E8 zxJUM2>H#4s+uTc`EM0Hh1&V{dtCgRsJBqex`o%Iepe*tD?8U@o-9!}XOJ76GaHqf; zL}kUd+2+3yz&yn62gXl$)ADVU@MVKH$Ry|tv!(WIk&0XG9D1fjJbcI^nx>9JGRf+x z4rfuW8<5ltmYM(RPgxJjxUH3m`@J#m9TcE1wToeO(*45oZkaeKKSw|md=2HBu^{#nUrGoP zDGR0oaP+!@bRg)SM2|)RY)}pM>c@ei)nv5W!K^-q;*c%%0K?~CA)Bxods5B%JJVyQ zH}B(e<2AT;J7JUviC4am!e+T===mAV;Rl^O<0dnv^c3O-#`wQE=viMJQUG#H{UdBt zgx4=ugJ!$cCr;cLAms_md3KpGNJ`-qd0fr$8YpWd=U)3zw{%bN-n3aKQeZCX+wiqh zOW)by19eBpX1xv5c?7{l3Ml!%^@-}OvC)T`~C{(rS zJbXW$b#I#+Nrgha6ANIj^9_d>)_1J{RUW+eyk7DA=e4A+bK2b0$+J8QQY5`A1bEw? z+9v-FjiOvHCjb;-qd?Tj6Ap4Rj?!lDDrhqAVrL@A45-~#1S-eh22XgEHh3h13#2YM zz|TAQU=ql!qnu5)+Tc8V>FeIm`niH9eK&IYu~)TCyP;xSS_N z!atYva_WdNG78tthyt;uj$^OHSQlq417;2A%6;Nv=n`0*^pii`sT&^YuOlN&`kFp@ zrhj|IL+eaC^*!@FP|6{N3wi7?kY~93V~qnM-p0@#v!n()EGcei*ms#*7w^}#=S34J z7YdUlkpm5um=S-|R_t8BP{hLND16 zdIl>xzPj&ccly3R8j8}s^<7$mWzEZcw74R7KUKaXT%+I@+qc!JS~iChBA~;fJw=Sq zAp1BNA+zubCPd#;61LPN`*TEo@-Mn2xP%&rU40|SU2(h`M^HS)S9K~?+U2HSw|5%S z;w>?CY(?ft%Sk0uT!6^M@k(+p#7G?n{FY}nvQuH2{TAq_T%Wx~fE*GpKFyvqT%U*~ zF{%qOEer?W&u=AedWk43)m3>$Z`D09;ZbSKYDG=Bd_GU%*SnsouHXES>@DAj+@d4* zZSMNh@SIo6fw`yqMpEb4t86PtYlTr&<$U58sX`DIjzBRuHj+;CXm5^Nuz2(M({*W5V~ z)PWj}6kj5RbRB9O)P&zrPOBf}5eF8JHm|l-o8jK$S_LK;_zZy+HBsh%3d0l*X$Mi7 ziw2=9%T~IA_kDwWutZv}xScHrrfl!^b3@m9-p2r?QVvo^_D!?Hcji6Fyi6*NKDI2% zuzW^RRsh5!ojm zFW?jl@4I|`GiH{I4_U`@&V)JPS^>AhO9_P>qA;*gThcrmcKgdQ@`IPhrW&XJg2fgb z${~@vL-X(`>qoOPEBYp)tiQ@h$g;`GhUqbth#=R-LJG)U2sb$e;1VAcnsHMo)D5sv z9ePXkKuKVrvtvZe$62rc?-1Fd##1_F;N{DBcKLun^%sMr?7v%p)eUj7H1&Ky^*4coJ-2WCb)EqIGam|qhl!S3B{?LJ=+f4GqAegTPe$}{7QSr?A>g!uYP$7AZ$GB z@40&BkfmmQ!+L=C4FEi#KSB)$$BVfdn;hVG1~Wues8%A1#xp3Ubu~*Cr2#4R#v0y` z>+E(>Gukk!KQn|c^UPtnbxdhqcGI!ld($iJakg^!*!gspouRPtJ79eUU;-UQUhHZt zX6PTSJ5kf=EJST%rh{zwhJ{K!+DxYh?Tf_@rXZ>!T_Tk7VOEhY>&RQ>C>u}ah^TbmCeq|VM%6}ackIHbTvr&y|=qLha9)@tPVfF1|J3r zyKx>B*g0oDhjOWNp`AZ*s4D(-QyE`;W&gn)U~zPx-yrRTpTn#W{j>Nubc&@RS~oMU znlDr4%Jj1UQA2;?uG8{ky3PA09XY+ZxzpiYgVx3U&22ft*yZ>73vsjItV#I+cLYz?m2gg8B$gtXE?G+{SiXt?HgCZ5Rf@U$e0$e)OcK{zc z|2SIJOEXD|Tgjv2u-ZY`5TUOd9hgKs;}cZQ`sifx!&z(@`L4{^?^7luXR3QsMz~Z^ z-(AAQX3$(>{&3lP_Y>S-Z^oTWl58@oFI%j!6X6bHW!K&cw$?8{l?Q;h`sNp$;g(_( zGU)lnnb~Jk#SY`+i#D>F3-&aD^Pi_Nx2*=w%co!a1^%piOy6slOarf{?DOj>B>Z9# zjY3{W8Uh%&-t_QOYg9;1IbmI4s(4(8)2hmMG1vfQRDepTLdns_lqn;xJwD?H6$bU+ z8Kij64fD|NUb?&Aad{I2m6w02IbOLteVL$V4oDVHeTV3~=1^~%RIRHk5xNaQN4aX|XHuqZ9 zNYK=eXU02konQ$8+?gkS)<29_NchFXg)MsYX&e=p`cA)+(7=0b7b~?wD2VSGOw(DT zbTi>3&&#)2(G-q1m+29=?|*)1_j_&+NEtnc{Puq)fRMEHW*d1tQQC+)tCJ?O@~^N_ zG1Q{rQWf3dV5$%%YLd|0e3FGW2Hwditd>8v1nuMm_UOQyuc&Uedbnx zR2DCyB?Dr9Q<8`_+FyzhqoVS-O48P65C_sed6pq@Yw@zoL-lAMSf!2LZ=0N@1evFE zQ^(6T1)~R^?rz=tRi1qO?F72BQxlDMLGaB|_FNwgoGrjfN8y!3kx6hCqydVo6>!5< z3q05o?}IS+j{3|}%%?*E?~&;0zf%@}r3oR4U^W^z+KG3FmtQXH@uSp*gfzV1tbFU& z3A)MW{GM0^oPAt!RG}bJbm%)iow6*z)LSy_HMO2w6fwN@bQ2D5cMtIdf-G;OF$ezVct!u`c>nqEj@@gLwaZSmb{`{7(m= z9Bks_51{k=U#87p9P*<3Iw}Y3AUr(-w;|BfHZOk}=d(kTNAil)2?A&YEZjHtaa!>= zBrY5R^ykJbB>ZBMP8TC>0|r14sWcp=i7{k4@sEZ36Rg zi<{&UOMNzIN*6R1hKj66mbGISsMD0G>*TuvZKSv^!$&)*$%Og{0L#85cHX%~|E_Uz zmiRZ*t-_8HSgDb6*&sp|=w`DA`q7jCT8ZySke1-#X#47#+0llZi`g21o92076hEeH z-!YP5Eo#}K$$jd_GV`MyTuV5@4M)T%%Po*J%uPNugPGpJ(WjLP*Wyl~2{<>q^LTS?a^N&cE@Llldi}SLJ8ektm597?GDxn2Q<}IJzyd zDD1?G-~#UsAP-z3FCDE}eE(cl0_JscvK!DE{u&u%6nilhpbP(96afai0m-iXR=l)^ zXei#j(V(Z1MG?G(I9H%Ad~ZmC5}-)9EYECeonT;Fm!UbqNP`QW1OwAMm%5V zGe^#R$L6LkXi2ATezqh^c1xXY_h{qWQy%Y!^>0fi9xY!A&qDlyvdHUO zFbkROBbN}Q=2irgGCxqnWfLN)8PP1|&lY4UznaQ5nsI=egB5tG&(8{YSg2%QoD5eJ z8&_*;73)RV&Q38-gbRwXFfuJsnE2Xfwno7bKIy~7)G&l8i%?bq6OJN&8z~cu1BroH zFK++i_~bw;RL0LC>ExrgQ>1IuFVSB>@w&O7G!7CA_0!4h1+$P#jN7crJ3Mn@!!uKPKwO9(Vu12OnqvwOGcHyaoh!pmM>TPSe@voEGj zMrivG&7PxXb!7l8USfE>BvKq$**39on%ukt3dEr_lC0V+o7m0c za2A4ZA-wbp(~zrasy>?aap4=Gh(KUPN+n2LlIf!t5|HO0<~a7OG89j~60^?;x06sQ zsxw!yu>oLZxGsj@6(vD_$pyvto75kFv*LR)ZVe4D_K&)^N({wp~*DFCmK;h^Fd=}Rf@g(_BA(cyv6HB!dO#@xB58I}t zmlng3Js|Dil#5w3DWh{#t^t<|4qi7^dA;Y#cYfR3#?_gi#*%9zajWv>x;4Vq_0Z$( z0>AEv7(W8iluMJ0{GV@_5MO%xrzQc*vl|O6zP*?qi2keofjZ+9yP~mp1=0TyOd|+@ zL#|gvzPk+PAkO1Nw&Z1T+IiI`a2ix-?uL(aetmW;Hg|q@{^Qp1*F18Pn-zoe50ou0 z;!aEhO4U}1+94G)(m_vEvMcR*CBP3lPAYkAC=-%huTb*oKqgX(Un7s&m#o*$vtDkg z)Oh(2zH(5Jj;PdmBXsdX!8G*Sq9JII+muJK#1GQKN&y=!y%K2Bco~gQSmL4|3y%@DAB7jYT zCvw*Og*Zy~hP(b)5RNE*2u%!`dw3Ki{cPZ|-R}5_={dKWSvulwgH_&If^#3eXe&t%m$;aD+R31?#^Q)?ZxU zzY6Qh|EG~};HdZSk#8Wq^#AY3cd!!E`y$|uKdC|ex$FN2$-qAtInw4+F{fK~Zc!$! zx#x*!bbnq*zb5l1*OQYw06j_SOV1^nn*HR3V~}z?=ix3t);Ch@{q{FFLqSslIxoW@*6H{x#&z z&h(B zyODO^uA4huly15C$nU-c4`0bJ8`R`UGpd95rU z_DB#3zt_+ng}G}Rg(RL8EN?<^aY2IE_k*Nz*}!qoLAuNwpC-I$UWeAtQd|6%P1gHo zyy^)G7EVvS5}9X?9SBBwF$7b{18l%afO5aV%5N|r@xa6C7L4Az_J%erNToGM*$*A^ zMEl_^0n52J;ipl#?u~C(m>9h=h^R z?7!$u)fPmOfGUQXnXKLx$_ei3-w&yeo-ajJBKvGXu&~KGgzf|5HDBz0Uzso%JCJo0<}a`kp! zjchs<;NMTm`@{iQDsKr%!Y@uEPs-z_i1770*DH^qv5)g_DMs(3ip>uTEpgGnAW+h= z#U@~C$*I7RSp8boEGEY6Ymx~??3h^yf?DYV{qSYp%&;6%#0<3kH(Z4Uy4TmIL`vX% zuh%)${{(6%F@;R?HS_oS$}OF7sR?=?2GJ7H9{nO@D7vowSd#{F@qAtzb_10RrU8W1 zmYl_$FQ8~yf$hhIA^A~jyDj{W3W)yNx9%SN&zTq$|p0)pF zwe7cjuELlo`yptrpcV7`ollAfx|gvw62)Lk)B{OgUn*485F~SN|0v!T=I5kJ0Q4y6 z#8!8wiPV`1Cl<_RLqg9@%T#{lfajO2Qp&d=Ba=Uj;tCJ9_qT7Kxn6ej1hjWRb1;AA z<$wsZ7iabmhX7CATFCKIk9Q_r*(`(PqcSr4!P=NDp_6Z@3SxxcK-Bo| zwEWGp|5ro9zvD?v&Hb+%%J$;qYCSN6w){m!4ZQ)^{xJ8V0M|pmhwr;jO6qNiC!-|N5Pz~x`x6prkNCxz|ixAH+`Z65>6XYHfvQ}zCksaR>LNmuef)ck|KnT zO_NRqy_U9=JF#WeIX~G&Jumc@Yn~L#Qvk6uxFFYAL{d-p|H?XGdfPUSYInDK!w!|KeKd6b3DX0KjRjoeZ>r z=zVKU1$hz<0U^o|*kniyWG~MWao4DQ&6biDi~7RK#>*cT$0iG9znpgExrv+w3ZuSl zUb}HctgJtL{DdYz@83|4o=u(s&0|5qB(?g^+|yVp18q}Wk+lxB&=)+Dh8T)-mv_B@ z1AlE#zh1foK!TXwWE;&nHVUF0sZAS!T_)!vMLDb4>vNRX8v!TD2XmuOiLoK{#Rzdl z1__S$Lof`XkqGpNA;e*?ZnZh6QOhtGw+Vw5IszimH|$}?Q1~VY)5$KAntqikEGGS* zO%UE9bK!0xyiI@tM+pI`Z@@SPGM(V1pOwyIeT(3+i`nqu1kG!dmkB zO))BrhwevwmQnm_f8Ec##=`{$W;&GuVcAB1@mZ7al;iQwd#0-T_2Q{Rjqxn{ivpNm ztiupQ4*upl@HUADHXVAuf+Z|U;dA~#Rn-XXEoj*2oHN>umPt%;1@^^0@i_AibUn4H z#enFP)XLNSh3002sNqnKUQ6iu4Dus@Y&P+C;#G_ZjfV(^ zS~0B!*V&~Em=aq5W>U%p)^a3I?X|U0;4ilJN|&)sBQAm6yRWpa>2hyYf-4Y%fnkt1 zl~Qp@2)9rZzgO5$$3nA)eBSMmx_TVge_@?o8$zuS)t4s+u)RSi;BX(!#3Xpd>61ro zR(&v_kP`sTva%5(&N)Pw8FBoJ0*lzLZ})7`LXM)^CBTjOE9M(*0llrLE~mZ5r03-; zSRUq;Cr)m!XVkes&Vv^p8J^0+7TN&dpw_x7e48=rGWb7}mRfw^n^ z2>320NcXK$o=I1URe^yhhU?Zb{sW+rv!~k)J;PYxr``7*nV(LacU|4?Zvg_XdK7W_Qf`ipgj?m4`OOa>9a6@Tbr*du!ujS>kHhaM zRG(vn!-Hfd2ZX$&S5}{Pe;+c?rf)(cil_Vr&KzlI7Xca9Tp3t80c$n_z zPKIm7SoT`Z^7$XyejXU;lfikFM85)06)3! zBC{dEjw6$KLRDcC&pgpb$jmUJhV!whd0Ef!WP4RR^^XsH{+tCy<3ay8v3~{h-5;=xr z)&tCXM?X-KbBEh0lbZ^F1(#7I!9z}UfdbeF;%?O(TFnZIlhq|HkyQqRWq5zt-3*y@ zG((@l9&Mdeb+~ihKO^Q_ELQM(V#j(CeE#EgD9rTYGlEXxAEy3pi}YR~xY@~1&|EaXCv1AK*2@^M*q zPP1945>92?FWF6`0znrE2x^^0k0s55xPWOI`|+6#)}h6m``{0w$+;u`esp~Oh`1Gs2sV#QtFzge@H!qz> z&ZU)+u%0>RePM}HXR!Hp^aNvTe5J%_t5hk*xOZr7@n3_u-^DUQyjR*(Jq$;yIWsWx zSE2m~CKLC)L+N35Lwev>rGzJ_=3}3YSLvqRXbs7>qnpa%eWW6YMcj5S>m1_%_spjv ztWLH!0<=GA&aiGs?I%n@hHr1F*!0^i6#Q1M}&$4Kjq!s|2qz$(zs$WV-_S>U}iOK`>onFl-wJV=43N~8Wl zMyLafRMws3U~!FhHKv{tm)J$&Xr-&Chy)U@A{WKo=1RIy)yakJPrhpFe;Hs>Nw)cRnS&?vG71MyTjnCc#CM)AT*SS#vH11_3*E zR6|Y@c_hV^U1f6q2&MR3M=LsI3^>n`cg{{aczX@GkWP*(Vi{cv0RIvP;~}=cr9=v* zz{Jd&`!SB4b-jb|9+D>Grx26Wn~@x=gXm-_-oP84h-AmF69(Jq?notptEd{P5xgTX zWm7b!0kg_y9v>owK<(3iFgcdRwj-v~09Kl;} z%(w43<`|y)AHRH;i(8=U{`K5-vkJcml!}Pvdn)Y*R0^3{_`sn`N+yEzOHVKb0m+Z( z$3GDxF>hT^6eH24X8T=|-=0n7_JM!qKVCNSpt8Y@I(PkeZvIO{k6-?jr?KJY_y*~e z&jvr(`V+Pxl{8YlVgQK!)c~amL#Bfjs7DOxAXYwi5&Oz8vQ)J77nkfDT@{}?Bgiq5 zu!>BS_qCG&?i=Ur?`yINtkcs}q+l zP{#YGrZZ~T!`VlN$g;UM{yGQH`cdu@4U&=M<)HLs(!kQG&g`Vb$3iKT1#{(7iBw;L z)qd43Z@$(cuqw23PkydWm}NaJ{8UAI(suhJ{ILRFghc|SIf2MKlsh2lw&+2yjBaZ} zVglzl9#J(MdUO_XcSvRbs*-3*(D5004?wOpVJYvj5ie-zf^%q-|Doa2;X{pmx!mqU zkY@>9x?n^7a#(>vn^|zq)t8e;_8ks?q?xx>1#6YiH_N!YZ32nylxJY_2&rZttCQXm z2XZ?P0J$=`L&QK)wb6yeIThi)@PH0Zu6LG{LcLBkO;&+I(ZU|tx&Hq+d#k8Aw`N-u zC%C&4+(K}7cPF^JJHg!v?(QC3fGkd)@Od);^8h?!$bW596y*RimU= zFMq`sex|HhkBy{qq)o4Jr3CmT@#Gi*txwU)5m+WB{;(Z>M$x+Ui_?SlxQW5%Z(;)< zmjz-+fN+8Uzkdiv@O>U6=J2l9nu?IO(PEsRq)Q`qL-Z~&V5co&JyN-ZhW*)5BsjuP zdK=>>pj*kPqC6;wKi?#SjKaq6Z&Lg4_fQGuBag)zJ~%lW6BenfCrO8gESuCYJEw00 z!J6~smX)9(f0nsc;*7oNe;JxNhs=R$$LfAl1rDo+j_wAW{53`W$LX2)-)-~0ZruFu z&KG>Lytwl*su<{T)fNx&*&JlFv*7e}yO)w5FpH5I>flDi(cb6QJyxi#Ge+)Dt~`a0 z_77ew-}KC;pX#UQi$4M9dy-Jg9qcCO6PD(qqj^n*r7Y+NR#Ca>2RV;ztjOWQOHWj* zcCnyMMUJQH&gCSk=xUC&IxWsoQ7H#_Ph#fG{aIR}s1ykvrBjSPv_(otELLD4&!Sw( z@EvGi4<$#lNabqH>%W-##AAQB^h~VF3;%d|_XeZ(#j!^n7a)hjx3b`8eiy_-DyL-u zki`?VXeLXtsp0T9I4eDW?i*258w;34Na+JX?`HsNnS3$b(dAdB?fnAWY2|^{g3X_A zjf~dwTjLkk?$5vABss^jWFLqhxP0pT)%_BuNPZH6b2yJ!ZL7&6<=72^Ax6wYG3fbG z*u`{y?7(zIN~3W913Ldj+ai;VR8vYu&h(RmPo@*y2O)DNCs0jAT@;Cr;h-@}Ld2h- z1FYlKd%wmOwlqnLH<(M0(N{_-PBMckXq7><;Hc}U>!GQ~lvPFsp~ire)|g32DA*Y} z+>Tyu{|?m3=A&?_&ZNB7oLY25bV4s;R@;f|pv=nVf?tZ;+tu{O$tt&y-kKsUo|imA zWkir1(L-vM;t?*|GUzn!SWUlqlavc=d5lW{B&_kKAR^4q{O-Ixv%HqL9(iT@Ip`7R1L~#=g45M$JE;JsBFY9eaICQls13ntyol zd|5##BS->30YA9$e$f4d9Y-SRa2ZcRVkYdTj==o2M}*XHC0-+yD>(p(b3MTa%3IA( z1!^}tM1x;PvS?i%S*3-+pumTewphHDj*kk&1xC3PBazjxyG;Zi6<=yfc$D!|9C0W#4{Y<5&O|sj*@A8NP_FfD zUg&UHWth77+ay?tB-E7$C~?gA?hND01vJ(6`rUfhiQ zAZD!2$jg@lHv#kgs~6Gpk47EO9NOBp_dH(dS-c%NM^`LSIw^Mm%Lc6u9fkXJu6!DqK~S)^s<8i{YCGFk34K$(u=5VRF|M6CDl) z+{-TTgITlt0`+yU@oxrDb{w&nyP+^QA^BS= zgFr_$@AWmaL@RxXrWQ9=l9$9)p0bHmAo3{?A<0eX>Y(KC487!&86Ch$!jmdvGGZsf ziA#}vf%D8rBC}`aj5*Ng-zNJFp)K)kS~ODxR_@t0M?4im2SFtS&#JrHDAvkb-oU?b z$f*G}#{ME!fU=koR(x0~T__~Rnf{`r3_m-Drxt5;$*JovTX}OYd;FQ7O#t56=FQt8 z!X*4|{TpqF`*oI@53t1Lbs;jFQ#m{l&MKSG41q!@2sB{-lgrbUHtxpb;Te%Qd`mUNLDyE(m9ub!F(#Mk->yuC?$3K2t@@ ze#gI%i~kn~_`C7@z&PNr!f#xt2$Rse4F+M^|K2%BO-`l9>{Sq2w~Dga2Y?MZ#v}$e z1CSKeKYay_%Uz8vWijqtxrTZqP-LpmW1woS9FhOS< z)SPk?lHL7brLqaJ4u|T9GJt3+#i($?Kokncz@OGA>V$DQLpjrc4*7-}wkXQk_RW;= zR%3xJz)SqifAdWEuuTc!x)4O-V~|XWSicPMS{!&IXMMB&=GZV6v)X6uOZ8phW^Q3J z>ce3s7IktL8!bm}+2bkHw@b&?k&b^_ST36Rc{V^Wubbij^PL4)*!#sez@RDMCIMJH zqgjdifqpX-s4vd_L~=_41utMB;6zPD^1l}4ENz2U0=;}eHDAz$&?FmWdjdNvStF;(0 zjB)A%Zey}vGD{ICS2UISUhz6UaG)WOFWfD%2Y??w z$yUc7C@+suB-Sr_AcYz%u!qT&%o4{YA({D+9bh9Ex=yZ@E`~<8PeG zNWhGbf9NwOEh~+p+t~d473N5~;txw#(N<_zE z{+x~(uRtopU1Reubq@K+-Y`sR2W+>o+@K`b9nq@{jEOE2@@17jgWP{U7whXpp1%Q9 zuC{MzSOUJw_g~-kzH7vjkbE8fZ5tXcXR;G0Ldp?8kVwMM1r|oR4?spw|3w*o>)qbp zXtBTXTcB&)?parBGx^sv15^CcoqNW1w>{bZiCL%WG`5m0BFqm;awEE0lWLrK6_@Xw zbSAx%Mddp&S4ztna$q`F8*hpn7;T{}U4Ro)zR@LN_V;y(6tF59P~-qWS+Bi0R>lI@4*!ZMbd5ouhd({sxVSWP@Ah!uJ4!T8Cm8R zKNoMsB`*#j9t664`FJt`d!TL&i!}#EZ8EPyJFczBsDJEZo=`rq>+;nxyR0X&FZ~&m zy<0cmkD-a#+wIeFY8G(tR}Rfx?|+&Vqq)by>-2ooo0ftw{rmH0+<&k61b_sK5o3_A zfnIs_MZwI|&~2B92M2Z5u*?-P6PsF)*%@&&vv%ei`={quh7ast9$f9Yg-bv)l) zK3urEX~;I7W?e~6jgxm(mtB+1U5;wjJut|}(WsL!PyUGAB}!F}9iuTefHc}4Vrc$? zb|Rb_o=}6DCa!!=WBnyb#juQS5F4R@L!~k{Xi$i1nENJIDhXFl6j;znQ)=l@q7Q=& zxsvR+63LEehJGz$?Me0~Ta77id!a&8UGv9$Dxf&3-@dEy5Y9uGmMQpWV#x$4iDIq4 zJMDpHBtBy@6>l;6?QF9Vs&AR2klPt;l0XYiwDUzz#5B|`ki|4h`W|AbGg-qBM1!Z2 zd~#QHnk%p;ElsH4%}dzi%8a>Lpfw@;oeOk0BMe(}(ok9qp+>APYeCX2&cq8s4LXme zm5Ej{8}&!vwvz_^4Exr?@jHkhl(fb#4m$#Lg`Bx7Ihov#^oxfZR6e#GmgPg~cSbaE z^D{ZJkk(NRs1Uanl)7w}v{>iMUp9h%Nb~1zgz8 z&@;3}TyMcmy!`SrMQgzYeX6EZUdzXF2+eaTwpMT%_X`t~wF2mdyunJWVljI|#UNP& zJ*UU&hhTKO9K`lIPG(4E7MCi)$k}~x8Ok%+5G6}_wZ|^%`NUHtJ-l3GMkJ(4XXnYr;pjZP|y)$4@ee9;Uaa@{X2;)g_6mp-V zQ`!(lD`NR=ARaSuU&J8 zR&39o@QI3N09hoh6PnQrry@be%1Xm&V}RRia1U_EnbP!Ct7KhGOfVh5RTg*Z9pSgs zKZ8A>KC(Z**<+PJqNb1!IQ}ax{+|M8dAFa;48Se;(*sCqjRr~s;WLCT5ta6HC3yv= zRA4-FHoGfN4X5a0qleiYitqvB_cJLg;`P@>IwF6M-^)836U=AuWdEYpEvK#nrlA!E zf%Uy(F zlG5d+Y|$ZM@bQj-dYOc4@@aI`*~nJW*79g;;w@d(pdXC#0^mzc-@1MQ;df(sZrS0m z*F+s{V;X&KCKiu0h$&bg>Jf>5xnICVBXvr!qx~ZW`ewBVBR2I`j8{9WUgN4=a^H~$ z@8mPfAKGBR$Sn$b+V~^FOGGO)*m9C%57l0IPp--brW_IxA{EM9L(xILBPjD6kzNQB zxt1VJeEBeSf&1SuDDGf5*n@FtQ{TbA;6z=cS}@aNa0GCwY{TYX;jbHhp^8Ce0wzXK zX+%wiVh0B;j$U_vkdUW^m*WQ$^&~J=ABcR}F+TGBlebT0blKsYis#0)HMG8mWy&3S zv~~3++liL*pXmcg$l+fSVt6;G4~&+6l~7>i#aU?}Qhh#~6X9Sk{V==G*$7kMRdAu> z{Q$#t@B#s<4Q zxv*~t5PAR)dMGy+o1cC=ySBJ1H>x&KX%M5t2P!druk0gUQzj-%^`~Hn(>TZkLS}xx z1a6`j;fr|bsY(4z0la;Aw?oA?skz3%uV98riVcwxizAm;hA`Q!zTzoPmmC`Pb5*?5 z#jL@~8kG$vc>grN* z9>F5m6cL;ysUFiN5;oEyask$s8-h9(w!`T+XG3_yGx2Eip(euh_%B3JN{*&}BynP2 ze$Ww9l4O0sR;>+i6Qt#27P-i8&#!(+m6{zK?7fbT%#8)_V6OZMO|EI|E1&P~9OH5L z@-=m&BGb>oT&mHNw84#H!W&@`S#!5^N^>s+TON!y5A6@GvP(i-f9cI#S>4dUD#g%I zvs@{;`OsNO%SfLH(NO&A`DT|^Q7@e;N|?QDBXF8o3%kslXPIRD6e1H4Cw_R_@n&Fo zHvx_W@N=)c`b~XV0IZg*BpBS%{^&CSQn6J7-vb}ZnH~UE8;?Y@1aZP2D;1KKOwm^gFs84AVxXY)Q{;Xe?*2GtwyL1mOl046j|&{jvY^Y1=7$w@ zhy_X=rN_KxyW+gY5h-DcS2BqO6`!okTJIMJoNKWz#C^v>>M4-`91gq7_p$X+a|CG1 zGuZ4;01+gqu6cZ}6G@~3TTE=%ME(e9kDPs02`nF&{qYrTa>+LAfe1w`h)gpk8dgHO z`EiL)^ca__v72(fh~d*-D3)@}o>A_QcQ*q=?+jz)7_CLx14)AjaXKVm01yd?%a>0> zY+VAZC#Sp0rIaV`@0Cz(U8X zh@BCch(s5$V0Z-ZyieS_xbx*Q;r-xx`Jp!Mk8WwI*HO5HtOIQ_o0c?mQ#pryQw&t$ zQ#pu=X;2(F8Z+kQ^`V?Ur9qsCkEl(dKWT#2cIY>Rri7ME1=V0=z!7)t6DA#- zq4o)I4vMNsW!?$-VAx<#_`^u<9CcxY{1J-dFPEd{W3VwC8{rrSQjIV_+n=#XsT_Yn zHOxqYh;)@GcE2I26?12y{NTr_2q~y{G2Eu2-QmY`oZYi{%PeR@8LudTV@c~b>$>g( zhlVM>hqK^eZdudOwrF7H3wguD5rrzqXgyj)=ZG&7sIIvY6qYp1Z~gllYm`gJn}ALT z>2l8+@cKo(jfR-t-&RRG{1=-QVCFaF7z%}zM$42f{ukE+qO>yMMn4dF)-MHa>5I{b zqt84X&CI#mtDLx?-)LzbEmn8G-C!1)$ZP#*Mw~jfhKmrJfdDDfo!+g&1}}Glkoh=f zzG)V_qeFs{|9I-^=k=k$#ptx-pRZJ{Y%N1B;LQ8~I``*yqd3xUe@|x)ig)Rfjmm;r zb@_`DZ^`;9uO*n2D+qDOj}942CB`S?srh&HLQ56&*tZ+;1w+y zQf}LxR-p1{Un14k{9;8ID+?6JK#~$h#ngS$+_EfD{|wY7E2stO!QKuNngjd8P`*O^Mk+vV53xBn;5>f2p@sx0VAeSxlj6$A8vrp=!`hi-U
g3LW{u-6)9z@e{m$#ehymiL>S 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%0D|dJMnhKfdAZsuomFcJpT20{O=YM{*D@% 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 i-b=tC { dropdown.classList.remove('is-active'); document.body.removeEventListener('click', notationTypeClickaway); - label.textContent = `\xA0- ${type[0].toUpperCase() + type.slice(1)}`; - neonView.setNotationType(type); + applyNotationType(type); }); }); + + applyNotationType(getSettings().notationType ?? 'square'); } /** diff --git a/src/NeonView.ts b/src/NeonView.ts index 8e8449f7..df772c6e 100644 --- a/src/NeonView.ts +++ b/src/NeonView.ts @@ -72,15 +72,15 @@ class NeonView { this.NeumeEdit = new params.NeumeEdit(this); this.textView.updateBBoxVisibility(); const { userMode, insertMode, selectionMode } = getSettings(); - document.getElementById(insertMode).classList.add('is-active'); - document.getElementById(selectionMode).classList.add('is-active'); + document.getElementById(insertMode)?.classList.add('is-active'); + document.getElementById(selectionMode)?.classList.add('is-active'); switch (userMode) { case 'insert': - document.getElementById(insertMode).click(); + document.getElementById(insertMode)?.click(); break; case 'edit': default: - document.getElementById(selectionMode).click(); + document.getElementById(selectionMode)?.click(); break; } } diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index 026ff3d6..fba18099 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -1,3 +1,62 @@ +import { getFontData, buildGlyphIcon } from '../utils/GlyphIcons'; + +export interface PrimitiveEntry { + id: string; + codepoint: string; + title: string; + pngFallback?: string; +} + +export const SQUARE_PRIMITIVES: PrimitiveEntry[] = [ + { id: 'punctum', codepoint: 'E990', title: 'punctum' }, + { id: 'virga', codepoint: 'E996', title: 'virga' }, + { id: 'virgaReversed', codepoint: 'E997', title: 'Reversed Virga', pngFallback: 'virga_reversed' }, + { id: 'diamond', codepoint: 'E991', title: 'inclinatum' }, + { id: 'custos', codepoint: 'EA06', title: 'custos' }, + { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, + { id: 'fClef', codepoint: 'E902', title: 'F Clef' }, + { id: 'gClef', codepoint: 'E900', title: 'G Clef' }, + { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent A' }, + { id: 'liquescentC', codepoint: 'E995', title: 'Liquescent C' }, + { id: 'quilisma', codepoint: 'E99B', title: 'quilisma' }, + { id: 'oriscus', codepoint: 'E99E', title: 'oriscus' }, + { id: 'flat', codepoint: 'E260', title: 'Flat', pngFallback: 'accidFlat' }, + { id: 'natural', codepoint: 'E261', title: 'Natural', pngFallback: 'accidNatural' }, + { id: 'divLineMaxima', codepoint: 'E8F5', title: 'DivLine Maxima', pngFallback: 'divisio' }, +]; + +export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ + { id: 'punctum', codepoint: 'E990', title: 'punctum' }, + { id: 'virga', codepoint: 'E996', title: 'virga' }, + { id: 'virgaReversed', codepoint: 'E997', title: 'UDV' }, + { id: 'custos', codepoint: 'EA06', title: 'custos' }, + { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, + { id: 'fClef', codepoint: 'E902', title: 'F Clef ①' }, + { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent up' }, + { id: 'liquescentC', codepoint: 'E995', title: 'Liquescent down' }, +]; + +export async function buildPrimitiveTabHtml(notationType: string): Promise { + const isHufnagel = notationType === 'hufnagel'; + const zipUrl = isHufnagel + ? `${__ASSET_PREFIX__}assets/Hufnagel.zip` + : `${__ASSET_PREFIX__}assets/Bravura.zip`; + const primitives = isHufnagel ? HUFNAGEL_PRIMITIVES : SQUARE_PRIMITIVES; + + const { fontName, bboxMap } = await getFontData(zipUrl); + + return primitives.map(({ id, codepoint, title, pngFallback }) => { + const bbox = bboxMap.get(codepoint); + const fallbackPng = pngFallback ?? id; + const icon = bbox + ? `${buildGlyphIcon(codepoint, fontName, bbox)}` + : ``; + return `

+ +

`; + }).join('\n'); +} + /** * HTML for each insert tab (neume, grouping, clef, system, and division). */ diff --git a/src/SquareEdit/Controls.ts b/src/SquareEdit/Controls.ts index e380656e..acc42456 100644 --- a/src/SquareEdit/Controls.ts +++ b/src/SquareEdit/Controls.ts @@ -36,21 +36,64 @@ export function bindInsertTabs(insertHandler: InsertHandler): void { deactivate('.insertTab'); activate(tab, insertHandler); setSettings({ insertTab: tab as InsertTabType }); - document.getElementById('insert_data').innerHTML = - Contents.insertTabHtml[tab]; - bindElements(insertHandler); - deactivate('.insertel'); - try { - const { insertMode } = getSettings(); - activate(insertMode, insertHandler); - } catch (e) { - const firstOption = document.getElementsByClassName('insertel')[0]; - activate(firstOption.id, insertHandler); + if (tab === 'primitiveTab') { + const { notationType } = getSettings(); + setPrimitiveFallback(insertHandler); + renderPrimitiveTab(notationType ?? 'square', insertHandler); + } else { + document.getElementById('insert_data').innerHTML = + Contents.insertTabHtml[tab]; + bindElements(insertHandler); + deactivate('.insertel'); + activateCurrentOrFirst(insertHandler); } }); }); } +export async function updatePrimitiveTab(notationType: string, insertHandler: InsertHandler): Promise { + const insertData = document.getElementById('insert_data'); + if (!insertData) return; + const { insertTab } = getSettings(); + if (insertTab !== 'primitiveTab') return; + setPrimitiveFallback(insertHandler); + await renderPrimitiveTab(notationType, insertHandler); +} + +function setPrimitiveFallback(insertHandler: InsertHandler): void { + const insertData = document.getElementById('insert_data'); + if (!insertData) return; + insertData.innerHTML = Contents.insertTabHtml['primitiveTab']; + bindElements(insertHandler); + deactivate('.insertel'); + activateCurrentOrFirst(insertHandler); +} + +async function renderPrimitiveTab(notationType: string, insertHandler: InsertHandler): Promise { + try { + const html = await Contents.buildPrimitiveTabHtml(notationType); + const insertData = document.getElementById('insert_data'); + if (!insertData) return; + const { insertTab } = getSettings(); + if (insertTab !== 'primitiveTab') return; + insertData.innerHTML = html; + bindElements(insertHandler); + deactivate('.insertel'); + activateCurrentOrFirst(insertHandler); + } catch (err) { + console.error('[GlyphIcons] Failed to load glyphs, using PNG fallback:', err); + } +} + +function activateCurrentOrFirst(insertHandler: InsertHandler): void { + const { insertMode } = getSettings(); + const currentOption = document.getElementById(insertMode); + const firstOption = document.getElementsByClassName('insertel')[0]; + const option = currentOption ?? firstOption; + if (!option) return; + activate(option.id, insertHandler); +} + /** * Initialize Edit and Insert control panels. */ @@ -77,13 +120,14 @@ export function initInsertEditControls(): void { setSettings({ userMode: 'insert' }); - (document.querySelector('.insertel.is-active')).click(); + const activeInsert = document.querySelector('.insertel.is-active'); + activeInsert?.click(); editPanel .querySelector('.side-panel-btn.sel-by.is-active') - .classList.add('unfocused'); + ?.classList.add('unfocused'); insertPanel .querySelector('.side-panel-btn.insertel.is-active') - .classList.remove('unfocused'); + ?.classList.remove('unfocused'); }); // event listener for when user clicks inside Edit panel @@ -96,10 +140,10 @@ export function initInsertEditControls(): void { insertPanel .querySelector('.side-panel-btn.insertel.is-active') - .classList.add('unfocused'); + ?.classList.add('unfocused'); editPanel .querySelector('.side-panel-btn.sel-by.is-active') - .classList.remove('unfocused'); + ?.classList.remove('unfocused'); }); insertHeading.addEventListener('click', (e) => { @@ -171,8 +215,9 @@ export function initInsertEditControls(): void { */ function activate(id: string, insertHandler: InsertHandler): void { const selectedTab = document.getElementById(id); + if (!selectedTab) return; selectedTab.classList.add('is-active'); - if (document.getElementById(id).classList.contains('insertel')) { + if (selectedTab.classList.contains('insertel')) { insertHandler.insertActive(id); setSettings({ insertMode: id as InsertType }); } diff --git a/src/SquareEdit/DivaEditMode.ts b/src/SquareEdit/DivaEditMode.ts index e707661a..613e598b 100644 --- a/src/SquareEdit/DivaEditMode.ts +++ b/src/SquareEdit/DivaEditMode.ts @@ -2,6 +2,7 @@ import { bindInsertTabs, initInsertEditControls, initSelectionButtons, + updatePrimitiveTab, } from './Controls'; import * as Select from '../utils/Select'; import InsertHandler from './InsertHandler'; @@ -36,6 +37,10 @@ class DivaEdit implements NeumeEditInterface { bindInsertTabs(this.insertHandler); const { insertTab } = getSettings(); document.getElementById(insertTab).click(); + document.addEventListener('notationtypechange', (evt: CustomEvent) => { + updatePrimitiveTab(evt.detail.type, this.insertHandler); + }); + updatePrimitiveTab(getSettings().notationType ?? 'square', this.insertHandler); Select.setSelectHelperObjects(this.neonView, this.dragHandler); this.setSelectListeners(); SelectOptions.initNeonView(this.neonView); diff --git a/src/SquareEdit/SingleEditMode.ts b/src/SquareEdit/SingleEditMode.ts index c2b13cd0..802c7982 100644 --- a/src/SquareEdit/SingleEditMode.ts +++ b/src/SquareEdit/SingleEditMode.ts @@ -2,6 +2,7 @@ import { bindInsertTabs, initInsertEditControls, initSelectionButtons, + updatePrimitiveTab, } from './Controls'; import { setHighlightOption } from '../DisplayPanel/DisplayControls'; import { initUndoRedoPanel } from '../utils/EditControls'; @@ -50,6 +51,10 @@ class SingleEditMode implements NeumeEditInterface { bindInsertTabs(this.insertHandler); const { insertTab } = getSettings(); document.getElementById(insertTab).click(); + document.addEventListener('notationtypechange', (evt: CustomEvent) => { + updatePrimitiveTab(evt.detail.type, this.insertHandler); + }); + updatePrimitiveTab(getSettings().notationType ?? 'square', this.insertHandler); Select.setSelectHelperObjects(this.neonView, this.dragHandler); this.setSelectListeners(); diff --git a/src/utils/GlyphIcons.ts b/src/utils/GlyphIcons.ts new file mode 100644 index 00000000..20eddd6e --- /dev/null +++ b/src/utils/GlyphIcons.ts @@ -0,0 +1,67 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const JSZip = require('jszip'); + +interface BBox { x: number; y: number; w: number; h: number; } + +interface FontData { + fontName: string; + bboxMap: Map; +} + +const ICON_SIZE = 24; + +const cache = new Map>(); + +async function loadFontData(zipUrl: string): Promise { + const response = await fetch(zipUrl); + const buf = await response.arrayBuffer(); + const zip = await JSZip.loadAsync(buf); + const fontName = zipUrl.split('/').pop()!.replace('.zip', ''); + + // Inject font CSS + const cssFile = zip.file(`${fontName}.css`); + if (cssFile) { + const css = await cssFile.async('string'); + const style = document.createElement('style'); + style.textContent = css; + document.head.appendChild(style); + } + + // Parse bounding boxes + const bboxMap = new Map(); + const bboxFile = zip.file(`${fontName}.xml`); + if (bboxFile) { + const xml = await bboxFile.async('string'); + const parser = new DOMParser(); + const doc = parser.parseFromString(xml, 'text/xml'); + doc.querySelectorAll('g[c]').forEach(el => { + const c = el.getAttribute('c'); + const x = parseFloat(el.getAttribute('x') ?? '0'); + const y = parseFloat(el.getAttribute('y') ?? '0'); + const w = parseFloat(el.getAttribute('w') ?? '0'); + const h = parseFloat(el.getAttribute('h') ?? '0'); + if (c && w > 0 && h > 0) bboxMap.set(c, { x, y, w, h }); + }); + } + + return { fontName, bboxMap }; +} + +export function getFontData(zipUrl: string): Promise { + if (!cache.has(zipUrl)) cache.set(zipUrl, loadFontData(zipUrl)); + return cache.get(zipUrl)!; +} + +export function buildGlyphIcon(codepoint: string, fontName: string, bbox: BBox): string { + const pad = bbox.h * 0.08; + const vx = bbox.x - pad; + const vy = bbox.y - pad; + const vw = bbox.w + pad * 2; + const vh = bbox.h + pad * 2; + const cp = parseInt(codepoint, 16); + const char = String.fromCodePoint(cp); + // font-size 1000 matches units-per-em=1000, so bbox coords directly frame the glyph + return ``; +} diff --git a/src/utils/LocalSettings.ts b/src/utils/LocalSettings.ts index d4be1d2c..700881e4 100644 --- a/src/utils/LocalSettings.ts +++ b/src/utils/LocalSettings.ts @@ -31,6 +31,7 @@ export interface Settings { userMode: UserType; insertMode: InsertType; insertTab: InsertTabType; + notationType: string; selectionMode: SelectionType; debugMode: boolean; displayBBox: boolean; @@ -56,6 +57,7 @@ const DEFAULT_SETTINGS: Settings = { userMode: 'edit', insertMode: 'punctum', insertTab: 'primitiveTab', + notationType: 'square', selectionMode: 'selBySyllable', debugMode: false, displayBBox: false, diff --git a/yarn.lock b/yarn.lock index 71aaf316..f996683e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1018,6 +1018,13 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/jszip@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@types/jszip/-/jszip-3.4.1.tgz#e7a4059486e494c949ef750933d009684227846f" + integrity sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A== + dependencies: + jszip "*" + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -6041,7 +6048,7 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -jszip@^3.10.0: +jszip@*, jszip@^3.10.0, jszip@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== From 7e8da3111a517d451d14c22abe1bed89bd674bd3 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 14:29:33 -0400 Subject: [PATCH 08/25] fix: align dynamic insert glyph icons --- src/SquareEdit/Contents.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index fba18099..572dfc0a 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -4,15 +4,16 @@ export interface PrimitiveEntry { id: string; codepoint: string; title: string; + iconDy?: number; pngFallback?: string; } export const SQUARE_PRIMITIVES: PrimitiveEntry[] = [ { id: 'punctum', codepoint: 'E990', title: 'punctum' }, - { id: 'virga', codepoint: 'E996', title: 'virga' }, - { id: 'virgaReversed', codepoint: 'E997', title: 'Reversed Virga', pngFallback: 'virga_reversed' }, + { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -9 }, + { id: 'virgaReversed', codepoint: 'E997', title: 'Reversed Virga', iconDy: -9, pngFallback: 'virga_reversed' }, { id: 'diamond', codepoint: 'E991', title: 'inclinatum' }, - { id: 'custos', codepoint: 'EA06', title: 'custos' }, + { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, { id: 'fClef', codepoint: 'E902', title: 'F Clef' }, { id: 'gClef', codepoint: 'E900', title: 'G Clef' }, @@ -20,16 +21,16 @@ export const SQUARE_PRIMITIVES: PrimitiveEntry[] = [ { id: 'liquescentC', codepoint: 'E995', title: 'Liquescent C' }, { id: 'quilisma', codepoint: 'E99B', title: 'quilisma' }, { id: 'oriscus', codepoint: 'E99E', title: 'oriscus' }, - { id: 'flat', codepoint: 'E260', title: 'Flat', pngFallback: 'accidFlat' }, + { id: 'flat', codepoint: 'E260', title: 'Flat', iconDy: 9, pngFallback: 'accidFlat' }, { id: 'natural', codepoint: 'E261', title: 'Natural', pngFallback: 'accidNatural' }, { id: 'divLineMaxima', codepoint: 'E8F5', title: 'DivLine Maxima', pngFallback: 'divisio' }, ]; export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ { id: 'punctum', codepoint: 'E990', title: 'punctum' }, - { id: 'virga', codepoint: 'E996', title: 'virga' }, - { id: 'virgaReversed', codepoint: 'E997', title: 'UDV' }, - { id: 'custos', codepoint: 'EA06', title: 'custos' }, + { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -9 }, + { id: 'virgaReversed', codepoint: 'E997', title: 'UDV', iconDy: -9 }, + { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, { id: 'fClef', codepoint: 'E902', title: 'F Clef ①' }, { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent up' }, @@ -45,11 +46,12 @@ export async function buildPrimitiveTabHtml(notationType: string): Promise { + return primitives.map(({ id, codepoint, title, iconDy, pngFallback }) => { const bbox = bboxMap.get(codepoint); const fallbackPng = pngFallback ?? id; + const iconStyle = iconDy ? ` style="transform: translateY(${iconDy}px)"` : ''; const icon = bbox - ? `${buildGlyphIcon(codepoint, fontName, bbox)}` + ? `${buildGlyphIcon(codepoint, fontName, bbox)}` : ``; return `

From b373d5f2cdeca8f8d9486f1a5d40d1a59e6b12e0 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 18:19:04 -0400 Subject: [PATCH 09/25] feat(insert): add Hufnagel primitives and fClef variant with Bravura fallback Co-Authored-By: Claude Sonnet 4.6 --- src/SquareEdit/Contents.ts | 21 +++++++++++++++++---- src/SquareEdit/InsertHandler.ts | 5 +++++ src/Types.ts | 2 ++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index 572dfc0a..3f7f9c2b 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -30,11 +30,16 @@ export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ { id: 'punctum', codepoint: 'E990', title: 'punctum' }, { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -9 }, { id: 'virgaReversed', codepoint: 'E997', title: 'UDV', iconDy: -9 }, + { id: 'distropha', codepoint: 'E99F', title: 'Distropha' }, { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, { id: 'fClef', codepoint: 'E902', title: 'F Clef ①' }, + { id: 'fClefHufnagel', codepoint: 'F49D', title: 'F Clef ②', pngFallback: 'fClef' }, { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent up' }, { id: 'liquescentC', codepoint: 'E995', title: 'Liquescent down' }, + { id: 'flat', codepoint: 'E260', title: 'Flat', iconDy: 9, pngFallback: 'accidFlat' }, + { id: 'natural', codepoint: 'E261', title: 'Natural', pngFallback: 'accidNatural' }, + { id: 'divLineMaxima', codepoint: 'E8F5', title: 'DivLine Maxima', pngFallback: 'divisio' }, ]; export async function buildPrimitiveTabHtml(notationType: string): Promise { @@ -44,14 +49,22 @@ export async function buildPrimitiveTabHtml(notationType: string): Promise { - const bbox = bboxMap.get(codepoint); + const bbox = fontData.bboxMap.get(codepoint); + const fallbackBBox = fallbackFontData?.bboxMap.get(codepoint); const fallbackPng = pngFallback ?? id; const iconStyle = iconDy ? ` style="transform: translateY(${iconDy}px)"` : ''; - const icon = bbox - ? `${buildGlyphIcon(codepoint, fontName, bbox)}` + const icon = bbox || fallbackBBox + ? `${buildGlyphIcon( + codepoint, + bbox ? fontData.fontName : fallbackFontData.fontName, + bbox ?? fallbackBBox, + )}` : ``; return `

diff --git a/src/SquareEdit/InsertHandler.ts b/src/SquareEdit/InsertHandler.ts index 9f9d717f..d6fab1bc 100644 --- a/src/SquareEdit/InsertHandler.ts +++ b/src/SquareEdit/InsertHandler.ts @@ -73,6 +73,7 @@ class InsertHandler { case 'torculus': case 'porrectus': case 'pressus': + case 'distropha': const contour = this.neonView.info.getContourByValue( buttonId.charAt(0).toUpperCase() + buttonId.slice(1), ); @@ -85,6 +86,10 @@ class InsertHandler { this.type = 'clef'; this.attributes = { shape: buttonId.charAt(0).toUpperCase() }; break; + case 'fClefHufnagel': + this.type = 'clef'; + this.attributes = { shape: 'F', 'glyph.num': 'U+F49D' }; + break; case 'custos': this.type = 'custos'; this.attributes = null; diff --git a/src/Types.ts b/src/Types.ts index 2344f4b1..c6ccea6d 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -392,9 +392,11 @@ export type InsertType = | 'custos' | 'cClef' | 'fClef' + | 'fClefHufnagel' | 'gClef' | 'liquescentA' | 'liquescentC' + | 'distropha' | 'quilisma' | 'orcisus' | 'flat' From d114fa118c5ab61591f6d253019ffbe221ca9c06 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:04:21 -0400 Subject: [PATCH 10/25] feat(insert): add Hufnagel grouping tab with font-specific preview icons Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 1 + assets/img/hufnagel/climacus.png | Bin 0 -> 1132 bytes assets/img/hufnagel/clivis.png | Bin 0 -> 1117 bytes assets/img/hufnagel/pes.png | Bin 0 -> 1101 bytes assets/img/hufnagel/porrectus.png | Bin 0 -> 1565 bytes assets/img/hufnagel/pressus.png | Bin 0 -> 1574 bytes assets/img/hufnagel/scandicus.png | Bin 0 -> 1147 bytes assets/img/hufnagel/torculus.png | Bin 0 -> 1572 bytes src/SquareEdit/Contents.ts | 35 ++++++++++++------------------ src/SquareEdit/Controls.ts | 7 ++++++ 10 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 assets/img/hufnagel/climacus.png create mode 100644 assets/img/hufnagel/clivis.png create mode 100644 assets/img/hufnagel/pes.png create mode 100644 assets/img/hufnagel/porrectus.png create mode 100644 assets/img/hufnagel/pressus.png create mode 100644 assets/img/hufnagel/scandicus.png create mode 100644 assets/img/hufnagel/torculus.png diff --git a/.gitignore b/.gitignore index 6c0a4d7b..9fa9aaf1 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ .idea +scripts/gen-hufnagel-grouping/ diff --git a/assets/img/hufnagel/climacus.png b/assets/img/hufnagel/climacus.png new file mode 100644 index 0000000000000000000000000000000000000000..c2612d931c30e3097202a3edd8b8222dd0d53934 GIT binary patch literal 1132 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 literal 0 HcmV?d00001 diff --git a/assets/img/hufnagel/porrectus.png b/assets/img/hufnagel/porrectus.png new file mode 100644 index 0000000000000000000000000000000000000000..3e737833fcf8d5ef55190274d1ba033dd0d77f9a GIT binary patch literal 1565 zcmV+&2IBdNP)|O!Ro~*qK9fEDyb+UgXm$vd5O@Mk}QdOh@!%7 zFI|WbOY@Djg*|3b9z|o&-%_j_p{gDb2;Y^o4seBy}sM}*0;X( ztu>GiJwPEPjoF3*^G~PFg?jQ5VA%iNGjrlZfkxd$!1?5?lb98NJ-{aazBexcGJ*{F zA@GKO&P^vVzY{0{e=-9-8yPa*YMf3dfR+AT<~k{epAH-Vie8A<^AaEf$Qk;9y*PbJ zz(@Xl=995{bdzU11xy2zxL$_2XV^Y}e-x+Fw7*KY(Fhra0TEsa9QBNgMu4w@Q?Kby8R3+A*0YHL-him5qeZZWy;?-`|taz(3owIK0Uw()YfUM|GtmN&LSf{ zonWY|=->SZ+>&TBTOs+@Q(vbN@IazXH0Jji=9-|ALX?2tf#tD11cS2XO{% z#5@^`egUraG?bdmBzg%kaTNHQ$~f9cr#}ecO))CETj(9$=ACJ`0HM zB491>O@=xhz}an}o=!`F7YM^PjmN6(aa>qg+=hW-U=Vl;w>XKV(=@OJ7;41a=3k?@ zwQoDUYgZ$CfvXMOyz8!(-)i7n+BdA)>;rBzbQ|WaHU$|0cGFrsvXj$R;0&YOOch!R z1jUDOWxZAnE5~{tILp&&Stl8GkWg@FMhG$AP=!_+#8^B?jy~XJnjeMw=D8}g+7_Z8 zmzOmXLccxk+r=*M#-P<>?yu3)#->B3{&p!fZN90=u z1^RKy4XKIg1aOuACPoa^FzW$!dR|*1(ubhay;SO?9RL+jGRaz`q^89|i;$>b$Z2rmudM@imbvZs3Gzla4PZka-{4M;0MZ6x?KcA#GJSk z+EhR~1e}xjCNqe^ON61a#=nd0rOyz&$Hu(-BlD9^;#UG5iOi#+00mqx{sVl18y>NG zQ%c-`t6kdCqn;;l2RI~8S}1m(>1pr7rIEQFz>^|lgymYy8F`4XoJ^)V`gbZ>dBsB9d8T?vxlPDz+q5Xuc+M5E7~AFJTQs*M*6&XkSz=9+bLB8d zO~{~&fp=)F(4koSEWx0&ZTB`;*dco<@CB_^!(>!-zz*Dwf@sh5?rrX{yPFRIf6;m= zuG-}FD{f~&=orJwJC_qyF=-51t^Iqz#R-1%7V@0+gke5Odt2a*!oj5HWBKNSyoW~# z=Q+D^X%o1Kr5K5Rkq}z81D|_-rAYK=E$nc-i}HQ2c0JZ^;p_))tHEzx!_NG}z}r-& zNv%#&C0spXsi!-a{|6xzY_VdDu!Y>LVeLtgyKB(xNZ6e6cH9|(W(+HXPT+P1Ae02V z@X$)=R-DJyI}0m=9wz0P(N4eue_uz)J(Gr2+H@SaInl0*DzFDR-lTFOvPu59|E}wy zO+cB!5bp4oHLUKth+7!%2*_L45R9qo7_I2HE+EP)oTw)q{nsR7Nxz`oSA$PAoRsiCV@fIUbm3O>1j>cJZZ9yWcF zC^b~>tfOIR7G_e@7g+*4L9KhIxyq*BPrwGl#}3{ou%FriNpsm){4Q{*p9{AFTn&6n z>&n$W2Z8Gi-9jY|R_Gx_Db}si2zm$!FBp0uFBN_%u#fc0)wX+pvmLEg)9JRrt~oa% z?wZ7M)&0Lhk_(u7O{oKUJn&pVCkd||%$oj?U@QZEp*H-eq7UI?YAj1F0jC0A1J?xalN$joB<8neZ%vtx;{{erodiyEzh||edbXrG0Gohy!LuyT5HO5S-5YI?P9Z5i zw0U8KRuR+v)#C3bS#3fscQ2B>K*0(;orblv zN2tyilNNj4qq^AB@j7oOp$AAnmQOE}PN|`C4^myV>#5L?6n3IpgFkeliA_?ahGAg_ z*A^(R0#s=aAj;IeynXl$)IkVn z0a`>~gq&tCBUzOmxgS_-2B`AZBG&qp`#y-P5uonA9r-)np8ls3oj_my|Cs^07@4j0 Yf6d!?khn}Kn*aa+07*qoM6N<$f&j7nng9R* literal 0 HcmV?d00001 diff --git a/assets/img/hufnagel/scandicus.png b/assets/img/hufnagel/scandicus.png new file mode 100644 index 0000000000000000000000000000000000000000..ea999218b8034794fcb6eee205661a3cc5cb6410 GIT binary patch literal 1147 zcmV->1cdvEP)UAYkJj3 zw0{dFbsizx1!UZ42S&U3hS7WqPkJk!bk>cG`+NxWck2>Qz6tNK*CD2zLCidBhCYZJ zK(kw)ShKf+??=e$$QBq%{sAz~-De+MqA(h`iud5fNJq(k0yfk^-m0OVdl0Y(_=qP| zj&zi~n*KbqZ?Mo5bPVtauW3uB+^}ITiyRXOoH*nPxEc6Dz9x%}jQM^Ym{4HPpkYmO zJaCutu+8ihL}-h1)@=Ol3tXl+c_rNr%rW-|;nAx#x3u}ZLO%I!g!p%0mRlQ4 z3|HZo0t+M8DuHUQ1$aTOmh~aDxi!6OlJqY^O|Cca5_m>+iG@C>*+3^kT)p>MHy4bi z!3(?{Z=M??bCp7goxp4RJyNj+bEd(^<&lWv(d_FZFqHVh>V89jcL@1)ZY~J#4Y^)f z)6NY3OkQ$xy@==dl;BR_G5**D5vx;pC$o!uPpsd!xHWMcl7_@)V63@Tci1-2TD+ER zuB~Zk7v3AE34}m3u;*+CrK>7?eQS|DN+Bp`2I6?MJyfogwDT8$VRewVCZv$IPa6`e ziHcbMNAqJlEzLQw5YMf%*9P$i|LuDcD)Bms>B z3l%gC9Kh$&wni>iRdoRefj&Jea%sd#4(!^cz*mZE-j&&%Uq=S7x&yL`PJlld7Hc}kF2dbl;l9*GqBrTueO>xg(t6}>zJDh zhBSDBM-U-DAjw7CY)RL*ATe6a{W;K&fQk$7q$dGC@ftekuE#C*b-y+E^SvlCS9fTE z(FEKf*F3xN-nSa^DWq3^(_9MzwthZDZuzK5##>;7TT@NXY&tN7fC>ytdOd}6ZH>G4 z5ibvc^|<1~YHkz$g?pi-LoMJQFv{E?C&39u(;(dpZQzwFC6)YZU`c_!f`0P;)zoC(ucG!qHq?``Vv@X$0i7ia|58;lN?w7x|hjS3j#|JONe# z14w|zqnL@bYAYdc%gm!lTAMi7FxCuQq%?UY{S8=Q_6a5#i3=#NvKBnm)aRaLD};;s0~ErB&vGRQsxMXx{s8|X*Fy&WDn>o0hqV`b%|7Qlw{L&vHs=q+eCIp++iR`=x7ONw zue}d+4)U#5pj(k^wF2FO9B?kMpw)_W3pC`H00)8D!TlcUL=GWu8n6Q>0Gl(DU&oG(LVsL-6 zdnQMZ*b=CRo)3ILWkN$@U&0SqJz^0ul+cTSkEo5%FcrLpthxaDo1}YN!g|#r;5+<$ zv=%}`kKF|fyZ)wRI#7cLfYrb$>hsVfVt)fh@#$d7%wyHig}`T&hH|5S_Jw>5+z`m? zTBwIUjVE9NnR})o)XrmV`gkUg+m*<G=9wx7r z8YNV(cLR%?X+*ogj?NbXn`k_@s&^KEb-;Aj@02aL*me6#{4AhWVzu2d;2zUgN9WKO z`6`bmcPa2Er6FC3&;!7Y?)m-*`gBze)|Jo_V4TW1RtY@>TpK*!vCua;2e^cIZ&!&~ zfgjC7VzsXNH*j0mvwid9F(n-DjJnGuT@=&#D8}O>T zZd$EYg)c{pI|^Juy!E#BGadMz$>Fa5KO}A)Rmr=>$ruMl+`Y^PJvDd`F<3)$V`K%? z$h+{>fBicNToqBC+B5)sfscr7MnF@3AUSYUlDhgQ~S9Z_`}Ki2DpHDp|3J#0f+JSs7*fsGstMr zviWj5r4w`=Jl484u?7$IkY`>0%Yyr9UWn+>xEsC_+d!)P!5?e@|7B8MH^mLl`( za$#S|rbGBuT+M@}_0B$I>J(1A>nX<_2Ocv0_tE@fg|!Lb2_*N|Ym>G;1w3y0t7wyD zeHhv2v4c>p!b2sB$f1YJ0z;btD`z&aH9@~dY_qj^J%dvvp&g>p>F(iec45e#Ys7b8U<4f`}U*_5~msnAt~oqs)ypLR5oTUGHN zfIAXoGy^t=-;3n-Mv2vD#*oF3qN+`H&u9erx=tl*BHxN1^;F1B0k@J8O6WTGTsxk= zQ+>|C&s!@wi+=Yyp2*ZT*(2j)BonK`w-~|gy49)0tr8KK>yF+bSMQIvPQtx+dGO + `

+ +

` + ).join('\n'); +} + /** * HTML for each insert tab (neume, grouping, clef, system, and division). */ @@ -121,27 +134,7 @@ export const insertTabHtml: Record = {

`, - groupingTab: `

- -

-

- -

-

- -

-

- -

-

- -

-

- -

-

- -

`, + groupingTab: '', // unused — call buildGroupingTabHtml(notationType) instead systemTab: `

diff --git a/src/SquareEdit/Controls.ts b/src/SquareEdit/Controls.ts index acc42456..201e6fe8 100644 --- a/src/SquareEdit/Controls.ts +++ b/src/SquareEdit/Controls.ts @@ -40,6 +40,13 @@ export function bindInsertTabs(insertHandler: InsertHandler): void { const { notationType } = getSettings(); setPrimitiveFallback(insertHandler); renderPrimitiveTab(notationType ?? 'square', insertHandler); + } else if (tab === 'groupingTab') { + const { notationType } = getSettings(); + document.getElementById('insert_data').innerHTML = + Contents.buildGroupingTabHtml(notationType ?? 'square'); + bindElements(insertHandler); + deactivate('.insertel'); + activateCurrentOrFirst(insertHandler); } else { document.getElementById('insert_data').innerHTML = Contents.insertTabHtml[tab]; From 41900211194bc0c1433adf1603cc2d9751847bf7 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:14:30 -0400 Subject: [PATCH 11/25] fix(insert): refresh grouping tab icons on notation type change Co-Authored-By: Claude Sonnet 4.6 --- src/SquareEdit/Controls.ts | 11 +++++++++++ src/SquareEdit/DivaEditMode.ts | 2 ++ src/SquareEdit/SingleEditMode.ts | 2 ++ 3 files changed, 15 insertions(+) diff --git a/src/SquareEdit/Controls.ts b/src/SquareEdit/Controls.ts index 201e6fe8..c9da05e8 100644 --- a/src/SquareEdit/Controls.ts +++ b/src/SquareEdit/Controls.ts @@ -67,6 +67,17 @@ export async function updatePrimitiveTab(notationType: string, insertHandler: In await renderPrimitiveTab(notationType, insertHandler); } +export function updateGroupingTab(notationType: string, insertHandler: InsertHandler): void { + const insertData = document.getElementById('insert_data'); + if (!insertData) return; + const { insertTab } = getSettings(); + if (insertTab !== 'groupingTab') return; + insertData.innerHTML = Contents.buildGroupingTabHtml(notationType); + bindElements(insertHandler); + deactivate('.insertel'); + activateCurrentOrFirst(insertHandler); +} + function setPrimitiveFallback(insertHandler: InsertHandler): void { const insertData = document.getElementById('insert_data'); if (!insertData) return; diff --git a/src/SquareEdit/DivaEditMode.ts b/src/SquareEdit/DivaEditMode.ts index 613e598b..ee0f6cf2 100644 --- a/src/SquareEdit/DivaEditMode.ts +++ b/src/SquareEdit/DivaEditMode.ts @@ -3,6 +3,7 @@ import { initInsertEditControls, initSelectionButtons, updatePrimitiveTab, + updateGroupingTab, } from './Controls'; import * as Select from '../utils/Select'; import InsertHandler from './InsertHandler'; @@ -39,6 +40,7 @@ class DivaEdit implements NeumeEditInterface { document.getElementById(insertTab).click(); document.addEventListener('notationtypechange', (evt: CustomEvent) => { updatePrimitiveTab(evt.detail.type, this.insertHandler); + updateGroupingTab(evt.detail.type, this.insertHandler); }); updatePrimitiveTab(getSettings().notationType ?? 'square', this.insertHandler); Select.setSelectHelperObjects(this.neonView, this.dragHandler); diff --git a/src/SquareEdit/SingleEditMode.ts b/src/SquareEdit/SingleEditMode.ts index 802c7982..e2f744cc 100644 --- a/src/SquareEdit/SingleEditMode.ts +++ b/src/SquareEdit/SingleEditMode.ts @@ -3,6 +3,7 @@ import { initInsertEditControls, initSelectionButtons, updatePrimitiveTab, + updateGroupingTab, } from './Controls'; import { setHighlightOption } from '../DisplayPanel/DisplayControls'; import { initUndoRedoPanel } from '../utils/EditControls'; @@ -53,6 +54,7 @@ class SingleEditMode implements NeumeEditInterface { document.getElementById(insertTab).click(); document.addEventListener('notationtypechange', (evt: CustomEvent) => { updatePrimitiveTab(evt.detail.type, this.insertHandler); + updateGroupingTab(evt.detail.type, this.insertHandler); }); updatePrimitiveTab(getSettings().notationType ?? 'square', this.insertHandler); Select.setSelectHelperObjects(this.neonView, this.dragHandler); From 696c13e6a13a322f3cc4ca5630c198210a339a37 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:28:27 -0400 Subject: [PATCH 12/25] fix(insert): use Hufnagel-rendered icon for distropha primitive E99F is absent from Hufnagel.zip so Bravura fallback showed a square notation glyph. Generate a two-diamond icon via Verovio and use it as pngFallback for the distropha button in Hufnagel mode. Co-Authored-By: Claude Sonnet 4.6 --- assets/img/hufnagel/distropha.png | Bin 0 -> 1795 bytes src/SquareEdit/Contents.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/img/hufnagel/distropha.png diff --git a/assets/img/hufnagel/distropha.png b/assets/img/hufnagel/distropha.png new file mode 100644 index 0000000000000000000000000000000000000000..3cda313fc8d747900733ff3b21e541f2ff06f2cc GIT binary patch literal 1795 zcmV+e2mJVnP)9Xn2HqBhb~l5bc1}6itJ){ zqYTV4(va%G?4I4M5K<&bsY!-(#+f<0hi`waZ*R{zv(K4*J97T8m~qZNYkjx%t?#n7 z&_okWG;!Rbm^A?rPyj}ywOEn@DfmCf1J?j&r?BQo&;oeC65t|){zBDnZJ14j{to&nks>(9%UR>5}wUn6u5BF1vM|5;vW9TrOHB;YfInSNjh_y_T+Aj-)a z1w{DcfQJ!Uhkyb9_Xlyx$-M&fkZJ*z;jGC1d>@!$p34%t{)Nc7R6>MbLKM&gETTaU z-vZ)t<^czAjCeSP27wib>&a61>Kdm5ZxS>R-2oo33FjtrtpFu%9YF?kD091kGyP|? zQh*+$HzQ}#0M1Y>y#xL;xfedbQiK_6MdcK*4hiRqq#se}db5D4&>ZM zJ}n3{y9p9rj-f$BLDr(uvMN>fWZ)$#3qI_A-Z0+L%>SlL_TaX^H${TQk9S1y) z)7%l#@tL()RlooHK42~GQ0*sZby<%=Tr=JS9wkCj){a=x7v_suxf~tVpO%nP@FJv6 z(}`G?T78x-r<}Y#1+E1qRuZ_vYGf{OAJWHEtIL8ZdvI<8x{&6)#YEr+T*1sLD{Wd; z@OzPRNk;|wmPNR+eF>7qWx2Nss0H8QLMW+1yj zL(Zg`vPs;>NZhRcvfM=`ZH9vc4Oam_8d{Uyu_})}KsT;G5td_3u)ClYiG;rO7fR|N zE}8k)Ac|KEmoeJUXX3)oq=avcWDBsstY1@d6_u&kxI$G@OdUkZ18VKH)Jp7g6M*}X za4!kLEC0{o?skUd6$>m=ZNT#hFyjHg;_h^Y*R2IAfL7$*WlzlXdceO(CYy8@?tkb4 zqmcGroPz%aca_|(HBwqZuBpdajXex3CzzBG~1$6?hFHuj(yf!pn zE^t0_IX0@`mGQet?;@(sKLz-J+7+-BdEp~hf>*2{*jT7El;KUlG=j~Wq@jYFha^QF z(Q=l9NF1L_!K?7p|5sv2|Gp3DvD)vZ0o`Fm#Q*EH^-2aa_MH=fu5xM$(fM610 z-HkGP2a*NG(rm7S&LXnw)>GO2sG)46L9U1wfx9T*>$PvEoJ=;?!xdUKS%@ z9P*#Z!boaH0m*=O5VRguMh|lD2eR!rY2B&~cm!u0C4z=>FY#aEN(@@&U4nFSlp$5Z zlSs`a53NZR>TH5E!4bLudCRXKcMmh%0LdEK3z&wx!R!I=5Ui>;6!brlSdK8Wne=1&s8C~AjKuT3 zxQkDDqcsxL`a6J6fLr{3=gI07YA9on(DNx8=;h~X7>&F}Kb3sP%1YNP+#%aUipZ;B lj0layRGxQd6HOck_z&T&>>1hp)GPo1002ovPDHLkV1fuVP&NPn literal 0 HcmV?d00001 diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index 69e18cec..b1f6ee80 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -30,7 +30,7 @@ export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ { id: 'punctum', codepoint: 'E990', title: 'punctum' }, { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -9 }, { id: 'virgaReversed', codepoint: 'E997', title: 'UDV', iconDy: -9 }, - { id: 'distropha', codepoint: 'E99F', title: 'Distropha' }, + { id: 'distropha', codepoint: 'E99F', title: 'Distropha', pngFallback: 'hufnagel/distropha' }, { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, { id: 'fClef', codepoint: 'E902', title: 'F Clef ①' }, From 12ff298327695fef57d9ab927c8a6e6fa1ef89c4 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:30:27 -0400 Subject: [PATCH 13/25] fix(insert): prioritize hufnagel PNG override over Bravura glyph fallback Co-Authored-By: Claude Sonnet 4.6 --- src/SquareEdit/Contents.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index b1f6ee80..8fcda1b2 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -59,7 +59,10 @@ export async function buildPrimitiveTabHtml(notationType: string): Promise${buildGlyphIcon( codepoint, bbox ? fontData.fontName : fallbackFontData.fontName, From 82a1841477272db1f62adce54583860f4e93627b Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:40:18 -0400 Subject: [PATCH 14/25] fix(verovio): set fontFallback to Bravura for Hufnagel mode Co-Authored-By: Claude Sonnet 4.6 --- src/workers/VerovioWorker-dev.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/workers/VerovioWorker-dev.js b/src/workers/VerovioWorker-dev.js index 41adfa6a..64f26ec5 100644 --- a/src/workers/VerovioWorker-dev.js +++ b/src/workers/VerovioWorker-dev.js @@ -66,7 +66,7 @@ async function handleNeonEvent(evt) { if (data.fontType === 'hufnagel') { const b64 = await fetchHufnagelBase64(); console.log('[VerovioWorker] b64 length:', b64.length); - toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64] }); + toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64], fontFallback: 'Bravura' }); console.log('[VerovioWorker] setOptions Hufnagel done'); } else { toolkit.setOptions({ ...baseOptions, font: 'Bravura', fontAddCustom: '' }); From 2545e1a125afe11b739d041e3b574cb979271a72 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 30 Jun 2026 19:40:33 -0400 Subject: [PATCH 15/25] fix(display): update Hufnagel tooltip to reflect Bravura fallback Co-Authored-By: Claude Sonnet 4.6 --- src/DisplayPanel/DisplayPanel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DisplayPanel/DisplayPanel.ts b/src/DisplayPanel/DisplayPanel.ts index 94b24289..21a80ddf 100644 --- a/src/DisplayPanel/DisplayPanel.ts +++ b/src/DisplayPanel/DisplayPanel.ts @@ -154,7 +154,7 @@ function displayControlsPanel(handleZoom: ZoomHandler): string {
Square Hufnagel + title="Font: Hufnagel (custom). Fallback: Bravura.">Hufnagel From 723b52c35ffc16fcaaaa862cba942bce48430b6a Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Thu, 2 Jul 2026 11:56:40 -0400 Subject: [PATCH 16/25] fix(mei): keep Verovio-safe MEI in sync with canonical Hufnagel encoding Verovio segfaults on staffDef notationtype="neume.hufnagel" (and "neume.square" is unverified) and doesn't render @con, so canonical Hufnagel connections (@con="e") and the real notationtype must never reach the Verovio worker directly. Add a temporary conversion shim in ConvertMei.ts (stripHufnagelForVerovio / restoreHufnagelForStorage) applied unconditionally at the two real boundaries - NeonCore.loadData() before anything reaches Verovio, and NeonCore.updateDatabase()/save()/ export() before anything is persisted or downloaded - so every load path (fresh fetch, cache hit, undo, redo) and every persistence path (save, export, download) stays consistent. See issues #1360, #1366. Co-Authored-By: Claude --- src/NeonCore.ts | 27 +++++++-- src/NeonView.ts | 4 +- src/utils/ConvertMei.ts | 116 +++++++++++++++++++++++++++++++++++++- src/utils/EditControls.ts | 4 +- 4 files changed, 142 insertions(+), 9 deletions(-) diff --git a/src/NeonCore.ts b/src/NeonCore.ts index 0b15a806..94fdbea7 100644 --- a/src/NeonCore.ts +++ b/src/NeonCore.ts @@ -2,6 +2,8 @@ import { checkOutOfBoundsGlyphs, convertToVerovio, removeColumnLabel, + restoreHufnagelForStorage, + stripHufnagelForVerovio, } from './utils/ConvertMei'; import * as Validation from './Validation'; import VerovioWrapper from './VerovioWrapper'; @@ -268,6 +270,11 @@ class NeonCore { */ loadData(pageURI: string, data: string, dirty = false): Promise { Validation.sendForValidation(removeColumnLabel(data)); + // TEMPORARY Verovio compatibility shim (see ConvertMei.ts) - every path + // into the worker funnels through here, so this is the one place that + // unconditionally keeps notationtype="neume.hufnagel"/"neume.square" + // and @con from ever reaching Verovio. + data = stripHufnagelForVerovio(data); this.lastPageLoaded = pageURI; /* A promise is returned that will resolve to the result of the action. * However the value that is must return comes from the Web Worker and @@ -575,7 +582,7 @@ class NeonCore { * This is based on the data stored in the cache. To save time, * only entries marked as dirty will be updated. */ - async updateDatabase(): Promise { + async updateDatabase(notationType?: string): Promise { type Doc = PouchDB.Core.GetMeta & PouchDB.Core.IdMeta & { body: string; timestamp: string }; let updateTimestamp = false; @@ -587,6 +594,14 @@ class NeonCore { const index = this.annotations.findIndex((elem) => { return elem.target === key; }); + // TEMPORARY Verovio compatibility shim (see ConvertMei.ts) - restore + // the canonical notationtype/@con encoding before persisting outside + // of Verovio's control. Does not mutate value.mei: the live cache + // entry must stay in Verovio-safe form for subsequent reloads/edits. + const meiForStorage = restoreHufnagelForStorage( + value.mei, + notationType, + ); // try to update server with PUT request (if applicable) // this is simpler than expecting a specific API on the server // and using POST requests, although that would be better if there @@ -599,23 +614,25 @@ class NeonCore { .fetch(this.annotations[index].body, { method: 'PUT', headers: { 'Content-Type': 'application/mei+xml' }, - body: value.mei, + body: meiForStorage, }) .then((response) => { if (response.ok) { uri = this.annotations[index].body; } else { uri = - 'data:application/mei+xml;base64,' + window.btoa(value.mei); + 'data:application/mei+xml;base64,' + + window.btoa(meiForStorage); } }) .catch((err) => { console.error(err); console.warn('Falling back to data URI'); - uri = 'data:application/mei+xml;base64,' + window.btoa(value.mei); + uri = + 'data:application/mei+xml;base64,' + window.btoa(meiForStorage); }); } else { - uri = 'data:application/mei+xml;base64,' + window.btoa(value.mei); + uri = 'data:application/mei+xml;base64,' + window.btoa(meiForStorage); } // Update URI in annotations, database this.annotations[index].body = uri; diff --git a/src/NeonView.ts b/src/NeonView.ts index df772c6e..7dccd591 100644 --- a/src/NeonView.ts +++ b/src/NeonView.ts @@ -187,7 +187,7 @@ class NeonView { export(): Promise { return new Promise((resolve, reject): void => { this.core - .updateDatabase() + .updateDatabase(getSettings().notationType) .then(() => { this.manifest['mei_annotations'] = this.core.getAnnotations(); this.manifest.timestamp = new Date().toISOString(); @@ -212,7 +212,7 @@ class NeonView { */ save(): Promise { setSavedStatus(true); - return this.core.updateDatabase(); + return this.core.updateDatabase(getSettings().notationType); } /** diff --git a/src/utils/ConvertMei.ts b/src/utils/ConvertMei.ts index 1cc338e1..f23f9b4c 100644 --- a/src/utils/ConvertMei.ts +++ b/src/utils/ConvertMei.ts @@ -24,7 +24,119 @@ function copyAttributes(src: Element, dst: Element): void { } } -export function convertToNeon(staffBasedMei: string): string { +// --- BEGIN TEMPORARY Verovio compatibility shim (see issue #1360) --- +// +// Verovio does not yet accept notationtype="neume.hufnagel" on +// (it segfaults on it) and notationtype="neume.square" has never been +// exercised either (every existing file/fixture only uses bare "neume"). +// Verovio also does not render @con. So Neon's canonical MEI (what gets +// downloaded/saved) keeps the correct staffDef notationtype +// ("neume.hufnagel" / "neume.square") and, for Hufnagel, @con="e" +// connections on . But whatever is actually handed to the Verovio +// worker must always use bare notationtype="neume" (the Hufnagel/Square +// look is forced via font substitution instead - see setNotationFont / +// VerovioWorker-dev.js, which this shim does not touch) and, for +// Hufnagel, @ligated="true" connections (the attribute Verovio's own +// toggleLigature editor action already understands and renders +// correctly). +// +// This entire block can be deleted once Verovio natively supports +// notationtype="neume.hufnagel"/"neume.square" and @con. +const HUFNAGEL_NOTATIONTYPE = 'neume.hufnagel'; +const SQUARE_NOTATIONTYPE = 'neume.square'; +const HUFNAGEL_CON_VALUE = 'e'; + +// Strips a "neume.hufnagel"/"neume.square" staffDef notationtype down to +// bare "neume", returning which one it was (or null if already bare/other). +function stripStaffDefNotationTypeSuffix( + mei: Element, +): 'hufnagel' | 'square' | null { + const staffDef = mei.querySelector('staffDef'); + const value = staffDef?.getAttribute('notationtype'); + if (value === HUFNAGEL_NOTATIONTYPE) { + staffDef.setAttribute('notationtype', 'neume'); + return 'hufnagel'; + } + if (value === SQUARE_NOTATIONTYPE) { + staffDef.setAttribute('notationtype', 'neume'); + return 'square'; + } + return null; +} + +// Restores a bare staffDef notationtype back to "neume.hufnagel"/"neume.square" +// given the notation type Neon already knows it's displaying. +function restoreStaffDefNotationTypeSuffix( + mei: Element, + notationType?: string, +): void { + if (notationType !== 'hufnagel' && notationType !== 'square') return; + mei + .querySelector('staffDef') + ?.setAttribute( + 'notationtype', + notationType === 'hufnagel' ? HUFNAGEL_NOTATIONTYPE : SQUARE_NOTATIONTYPE, + ); +} + +function convertConToLigated(mei: Element): void { + for (const nc of Array.from(mei.getElementsByTagName('nc'))) { + if (nc.getAttribute('con') === HUFNAGEL_CON_VALUE) { + nc.removeAttribute('con'); + nc.setAttribute('ligated', 'true'); + } + } +} + +function convertLigatedToCon(mei: Element): void { + for (const nc of Array.from(mei.getElementsByTagName('nc'))) { + if (nc.getAttribute('ligated')) { + nc.removeAttribute('ligated'); + nc.setAttribute('con', HUFNAGEL_CON_VALUE); + } + } +} + +// Neon's canonical encoding -> what Verovio can safely load/render. +function stripHufnagelNotation(mei: Element): void { + const notationType = stripStaffDefNotationTypeSuffix(mei); + if (notationType === 'hufnagel') convertConToLigated(mei); +} + +// What Verovio hands back -> Neon's canonical encoding. Verovio's own copy +// has no memory of being Hufnagel/Square once stripped above, so the +// caller must pass in the notation type Neon already knows it's displaying +// (e.g. getSettings().notationType), rather than trying to infer it here. +function restoreHufnagelNotation(mei: Element, notationType?: string): void { + if (notationType !== 'hufnagel' && notationType !== 'square') return; + restoreStaffDefNotationTypeSuffix(mei, notationType); + if (notationType === 'hufnagel') convertLigatedToCon(mei); +} + +// String-in/string-out wrappers for callers (NeonCore.ts) that only have +// the MEI as a string, not an already-parsed DOM. +export function stripHufnagelForVerovio(meiString: string): string { + const parser = new DOMParser(); + const meiDoc = parser.parseFromString(meiString, 'text/xml'); + stripHufnagelNotation(meiDoc.documentElement); + return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); +} + +export function restoreHufnagelForStorage( + meiString: string, + notationType?: string, +): string { + const parser = new DOMParser(); + const meiDoc = parser.parseFromString(meiString, 'text/xml'); + restoreHufnagelNotation(meiDoc.documentElement, notationType); + return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); +} +// --- END TEMPORARY Verovio compatibility shim --- + +export function convertToNeon( + staffBasedMei: string, + notationType?: string, +): string { const parser = new DOMParser(); const serializer = new XMLSerializer(); const meiDoc = parser.parseFromString(staffBasedMei, 'text/xml'); @@ -148,6 +260,8 @@ export function convertToNeon(staffBasedMei: string): string { scoreDef.insertAdjacentElement('afterend', colLayout); } + restoreHufnagelNotation(mei, notationType); + return vkbeautify.xml(serializer.serializeToString(meiDoc)); function calculateAndAddZone( diff --git a/src/utils/EditControls.ts b/src/utils/EditControls.ts index c052352b..39046a03 100644 --- a/src/utils/EditControls.ts +++ b/src/utils/EditControls.ts @@ -2,6 +2,7 @@ import * as Notification from './Notification'; import NeonView from '../NeonView'; import { convertToNeon } from './ConvertMei'; import { EditorAction } from '../Types'; +import { getSettings } from './LocalSettings'; /** * Set top navbar event listeners. @@ -49,7 +50,8 @@ export function initNavbar(neonView: NeonView): void { const uri = neonView.view.getCurrentPageURI(); neonView.getPageMEI(uri).then((mei) => { const data = - 'data:application/mei+xml;base64,' + window.btoa(convertToNeon(mei)); + 'data:application/mei+xml;base64,' + + window.btoa(convertToNeon(mei, getSettings().notationType)); document.getElementById('getmei').setAttribute('href', data); document .getElementById('getmei') From a1ce92188b821c8120e2d64feec54a186a346553 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Thu, 2 Jul 2026 12:04:47 -0400 Subject: [PATCH 17/25] fix(insert): remove hufnagel liquescent down and duplicate F clef Drop the hufnagel liquescent down primitive and the alternate F clef variant (fClefHufnagel) from the Insert panel, leaving one F clef button shared with square notation. --- src/SquareEdit/Contents.ts | 4 +--- src/SquareEdit/InsertHandler.ts | 4 ---- src/Types.ts | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index 8fcda1b2..c1f5e882 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -33,10 +33,8 @@ export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ { id: 'distropha', codepoint: 'E99F', title: 'Distropha', pngFallback: 'hufnagel/distropha' }, { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, - { id: 'fClef', codepoint: 'E902', title: 'F Clef ①' }, - { id: 'fClefHufnagel', codepoint: 'F49D', title: 'F Clef ②', pngFallback: 'fClef' }, + { id: 'fClef', codepoint: 'E902', title: 'F Clef' }, { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent up' }, - { id: 'liquescentC', codepoint: 'E995', title: 'Liquescent down' }, { id: 'flat', codepoint: 'E260', title: 'Flat', iconDy: 9, pngFallback: 'accidFlat' }, { id: 'natural', codepoint: 'E261', title: 'Natural', pngFallback: 'accidNatural' }, { id: 'divLineMaxima', codepoint: 'E8F5', title: 'DivLine Maxima', pngFallback: 'divisio' }, diff --git a/src/SquareEdit/InsertHandler.ts b/src/SquareEdit/InsertHandler.ts index d6fab1bc..f6ab4838 100644 --- a/src/SquareEdit/InsertHandler.ts +++ b/src/SquareEdit/InsertHandler.ts @@ -86,10 +86,6 @@ class InsertHandler { this.type = 'clef'; this.attributes = { shape: buttonId.charAt(0).toUpperCase() }; break; - case 'fClefHufnagel': - this.type = 'clef'; - this.attributes = { shape: 'F', 'glyph.num': 'U+F49D' }; - break; case 'custos': this.type = 'custos'; this.attributes = null; diff --git a/src/Types.ts b/src/Types.ts index c6ccea6d..c93b25f8 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -392,7 +392,6 @@ export type InsertType = | 'custos' | 'cClef' | 'fClef' - | 'fClefHufnagel' | 'gClef' | 'liquescentA' | 'liquescentC' From 063e0380cdb2e37e6ac770845c1e1576b6273b5f Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Thu, 2 Jul 2026 14:40:17 -0400 Subject: [PATCH 18/25] fix(insert): adjust hufnagel primitive icon vertical alignment Nudge virga, virgaReversed, and custos icon offsets in the Insert panel so they align visually with the rest of the hufnagel primitives. --- src/SquareEdit/Contents.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index c1f5e882..dffb7c74 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -28,10 +28,10 @@ export const SQUARE_PRIMITIVES: PrimitiveEntry[] = [ export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ { id: 'punctum', codepoint: 'E990', title: 'punctum' }, - { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -9 }, - { id: 'virgaReversed', codepoint: 'E997', title: 'UDV', iconDy: -9 }, + { id: 'virga', codepoint: 'E996', title: 'virga', iconDy: -13 }, + { id: 'virgaReversed', codepoint: 'E997', title: 'UDV', iconDy: 13 }, { id: 'distropha', codepoint: 'E99F', title: 'Distropha', pngFallback: 'hufnagel/distropha' }, - { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 9 }, + { id: 'custos', codepoint: 'EA06', title: 'custos', iconDy: 6 }, { id: 'cClef', codepoint: 'E906', title: 'C Clef' }, { id: 'fClef', codepoint: 'E902', title: 'F Clef' }, { id: 'liquescentA', codepoint: 'E994', title: 'Liquescent up' }, From 7a95714332751bd65cf360d80b23dc09c91854fb Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Thu, 2 Jul 2026 17:23:26 -0400 Subject: [PATCH 19/25] feat(upload): write notationtype on upload, fix Hufnagel con/ligated handling - Upload modal now has a Notation Type choice, written into the MEI and synced to the Editing page dropdown. - Removed the auto con->ligated conversion before Verovio; it was corrupting real content. @con now passes through untouched. - Save no longer converts @ligated back to @con (only Download does), so a manually toggled connection survives a reload. Co-Authored-By: Claude --- deployment/server/css/dashboard.css | 35 +++++++- src/Dashboard/DashboardContent.ts | 14 ++++ src/Dashboard/Storage.ts | 36 ++++++++- src/Dashboard/UploadArea.ts | 7 +- src/Dashboard/UploadTools.ts | 6 +- src/utils/ConvertMei.ts | 119 +++++++++++++++------------- 6 files changed, 152 insertions(+), 65 deletions(-) diff --git a/deployment/server/css/dashboard.css b/deployment/server/css/dashboard.css index c526567f..20fea773 100644 --- a/deployment/server/css/dashboard.css +++ b/deployment/server/css/dashboard.css @@ -617,7 +617,7 @@ input.filename-input, select.file-input, textarea.file-input { } .folio_list { - height: 80%; + height: 65%; width: 100%; overflow: scroll; } @@ -647,6 +647,39 @@ input.filename-input, select.file-input, textarea.file-input { opacity: 0.4; } +#notation_type_container { + height: 15%; + width: 100%; + border-top: 1px solid #dfdfdf; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +/* .file-container-title normally sizes to 10% of a much taller panel; + inside this short container that shrinks it below its own text height, + so it visually overlaps the radio row underneath. Override to auto. */ +#notation_type_container .file-container-title { + height: auto; + border-bottom: none; + margin-bottom: 4px; +} + +.notation_type_options { + display: flex; + align-items: center; + justify-content: center; +} + +.notation_type_option { + font-size: 12px; + cursor: pointer; + display: inline-flex; + align-items: center; + margin: 0 6px; +} + #upload_button_container { float: right; height: 10%; diff --git a/src/Dashboard/DashboardContent.ts b/src/Dashboard/DashboardContent.ts index 9299f81d..0376dba8 100644 --- a/src/Dashboard/DashboardContent.ts +++ b/src/Dashboard/DashboardContent.ts @@ -56,6 +56,20 @@ export const uploadAreaHTML = `
+
+
Notation Type
+
+ + +
+
+
Upload diff --git a/src/Dashboard/Storage.ts b/src/Dashboard/Storage.ts index 3b2053fb..eb32fcd5 100644 --- a/src/Dashboard/Storage.ts +++ b/src/Dashboard/Storage.ts @@ -26,11 +26,26 @@ export async function fetchUploads(): Promise { } } +// Sets on the given +// MEI text. This is the only place a freshly-uploaded/created MEI file gets +// its notation type recorded - the Edit page's notation type dropdown does +// not lock or otherwise depend on this; it can still be changed afterward. +function setMeiNotationType(meiText: string, notationType: string): string { + const parser = new DOMParser(); + const serializer = new XMLSerializer(); + const meiDoc = parser.parseFromString(meiText, 'text/xml'); + meiDoc.documentElement + .querySelector('staffDef') + ?.setAttribute('notationtype', `neume.${notationType}`); + return serializer.serializeToString(meiDoc); +} + export function createManifest( id: string, title: string, mei: File, bg: File, + notationType: string, ): Promise { return new Promise(async (resolve) => { const manifest = JSON.parse(JSON.stringify(localManifest)); @@ -38,12 +53,12 @@ export function createManifest( manifest['title'] = title; manifest['timestamp'] = new Date().toISOString(); - const meiPromise = new Promise((resolve) => { + const meiTextPromise = new Promise((resolve) => { const meiReader = new FileReader(); meiReader.addEventListener('load', () => { - resolve(meiReader.result); + resolve(meiReader.result as string); }); - meiReader.readAsDataURL(mei); + meiReader.readAsText(mei); }); const bgPromise = new Promise((resolve) => { @@ -54,9 +69,22 @@ export function createManifest( bgReader.readAsDataURL(bg); }); - const meiUri = await meiPromise; + const meiText = await meiTextPromise; + const meiUri = + 'data:application/mei+xml;base64,' + + window.btoa(setMeiNotationType(meiText, notationType)); const bgUri = await bgPromise; + // Pre-seed this folio's LocalSettings entry (keyed by id, same format + // LocalSettings itself writes) so the Editing page's notation type + // dropdown reflects this choice on first open. The Editing page never + // reads @notationtype back out of the MEI to initialize the dropdown - + // it relies solely on this per-folio localStorage entry - and by the + // time it's loaded there, the MEI's real notationtype has already been + // stripped to a generic value for Verovio (see ConvertMei.ts), so it + // can't be recovered from the MEI at that point either. + window.localStorage.setItem(id, JSON.stringify({ notationType })); + manifest['image'] = bgUri; manifest['mei_annotations'] = [ { diff --git a/src/Dashboard/UploadArea.ts b/src/Dashboard/UploadArea.ts index e564c6f1..c26fa1fc 100644 --- a/src/Dashboard/UploadArea.ts +++ b/src/Dashboard/UploadArea.ts @@ -15,7 +15,12 @@ async function handleUploadUpdate( const spinner = document.querySelector('#uploading_spinner'); spinner.classList.add('visible'); - handleUploadAllDocuments(currentFolder) + const selectedNotationType: HTMLInputElement = document.querySelector( + 'input[name="upload_notation_type"]:checked', + ); + const notationType = selectedNotationType?.value ?? 'square'; + + handleUploadAllDocuments(currentFolder, notationType) .then((results) => { setTimeout(async () => { await updateDashboard(); diff --git a/src/Dashboard/UploadTools.ts b/src/Dashboard/UploadTools.ts index f5f5829d..28502390 100644 --- a/src/Dashboard/UploadTools.ts +++ b/src/Dashboard/UploadTools.ts @@ -178,12 +178,13 @@ function createPairedFolio( export async function handleUploadAllDocuments( currentFolder: IFolder, + notationType: string, ): Promise<{ status: string; value?: string; reason?: any }[]> { const folioPromises = fm .getFolios() .map(async ([name, mei, image]: [string, File, File]) => { const id = uuidv4(); - return await uploadFolio(id, name, mei, image, currentFolder); + return await uploadFolio(id, name, mei, image, currentFolder, notationType); }); const manuscriptPromises = []; //fm.getManuscripts() @@ -208,13 +209,14 @@ async function uploadFolio( mei: File, image: File, currentFolder: IFolder, + notationType: string, ): Promise { const newName = fnConflictHandler( name, FileSystemTools.getAllNames(currentFolder), ); return ( - createManifest(id, newName, mei, image) + createManifest(id, newName, mei, image, notationType) .then((manifest) => { const manifestBlob = new Blob([JSON.stringify(manifest, null, 2)], { type: 'application/ld+json', diff --git a/src/utils/ConvertMei.ts b/src/utils/ConvertMei.ts index f23f9b4c..f8fc34d8 100644 --- a/src/utils/ConvertMei.ts +++ b/src/utils/ConvertMei.ts @@ -26,42 +26,49 @@ function copyAttributes(src: Element, dst: Element): void { // --- BEGIN TEMPORARY Verovio compatibility shim (see issue #1360) --- // -// Verovio does not yet accept notationtype="neume.hufnagel" on -// (it segfaults on it) and notationtype="neume.square" has never been -// exercised either (every existing file/fixture only uses bare "neume"). -// Verovio also does not render @con. So Neon's canonical MEI (what gets -// downloaded/saved) keeps the correct staffDef notationtype -// ("neume.hufnagel" / "neume.square") and, for Hufnagel, @con="e" -// connections on . But whatever is actually handed to the Verovio -// worker must always use bare notationtype="neume" (the Hufnagel/Square -// look is forced via font substitution instead - see setNotationFont / -// VerovioWorker-dev.js, which this shim does not touch) and, for -// Hufnagel, @ligated="true" connections (the attribute Verovio's own -// toggleLigature editor action already understands and renders -// correctly). +// Verovio segfaults on notationtype="neume.hufnagel" on , and +// notationtype="neume.square" has never been exercised either (every +// existing file/fixture only uses bare "neume"). So Neon's canonical MEI +// (what gets downloaded/saved) keeps the correct staffDef notationtype +// ("neume.hufnagel" / "neume.square"), but whatever is actually handed to +// the Verovio worker must always use bare notationtype="neume" (the +// Hufnagel/Square look is forced via font substitution instead - see +// setNotationFont / VerovioWorker-dev.js, which this shim does not touch). +// +// @con/@ligated on are NOT touched on the way INTO Verovio, for either +// notation type. Square's connections are Square's own real @ligated +// (needed for Verovio's ligature-merge glyph rendering - that mechanism is +// real and unrelated to this shim). Hufnagel's connections are rendered +// from each note's own individual glyph (e.g. virga + UDV are two separate +// primitives, not a merged glyph) - @con is pure semantic metadata Verovio +// does not need for rendering Hufnagel at all. An earlier version of this +// shim auto-derived @ligated from @con before Verovio to try to force the +// same merge-rendering Square uses, and that was simply wrong: it made +// Verovio invoke the Square ligature-glyph codepath, which the Hufnagel +// font substitution does not cover, corrupting the render (UDV disappeared, +// its partner note misshapen). Removed for good - do not reintroduce. +// +// The one place @con/@ligated IS still touched: if Verovio's own +// toggleLigature editor action is used on a Hufnagel document (reusing +// Square's button, planned but not yet wired up) and leaves @ligated="true" +// behind after live editing, that must be converted back to @con="e" before +// download/save, since "ligature" must never appear in Hufnagel's canonical +// MEI. This is a no-op for documents that never went through that action. // // This entire block can be deleted once Verovio natively supports -// notationtype="neume.hufnagel"/"neume.square" and @con. +// notationtype="neume.hufnagel"/"neume.square". const HUFNAGEL_NOTATIONTYPE = 'neume.hufnagel'; const SQUARE_NOTATIONTYPE = 'neume.square'; const HUFNAGEL_CON_VALUE = 'e'; // Strips a "neume.hufnagel"/"neume.square" staffDef notationtype down to -// bare "neume", returning which one it was (or null if already bare/other). -function stripStaffDefNotationTypeSuffix( - mei: Element, -): 'hufnagel' | 'square' | null { +// bare "neume". +function stripStaffDefNotationTypeSuffix(mei: Element): void { const staffDef = mei.querySelector('staffDef'); const value = staffDef?.getAttribute('notationtype'); - if (value === HUFNAGEL_NOTATIONTYPE) { - staffDef.setAttribute('notationtype', 'neume'); - return 'hufnagel'; - } - if (value === SQUARE_NOTATIONTYPE) { + if (value === HUFNAGEL_NOTATIONTYPE || value === SQUARE_NOTATIONTYPE) { staffDef.setAttribute('notationtype', 'neume'); - return 'square'; } - return null; } // Restores a bare staffDef notationtype back to "neume.hufnagel"/"neume.square" @@ -79,56 +86,51 @@ function restoreStaffDefNotationTypeSuffix( ); } -function convertConToLigated(mei: Element): void { - for (const nc of Array.from(mei.getElementsByTagName('nc'))) { - if (nc.getAttribute('con') === HUFNAGEL_CON_VALUE) { - nc.removeAttribute('con'); - nc.setAttribute('ligated', 'true'); - } - } -} - +// Hufnagel only: reverse of Verovio's own toggleLigature editor action. For +// each adjacent pair of @ligated s, remove @ligated from both and +// restore @con="e" on the second one only. function convertLigatedToCon(mei: Element): void { - for (const nc of Array.from(mei.getElementsByTagName('nc'))) { - if (nc.getAttribute('ligated')) { - nc.removeAttribute('ligated'); - nc.setAttribute('con', HUFNAGEL_CON_VALUE); + const ncs = Array.from(mei.getElementsByTagName('nc')); + let idx = 0; + while (idx < ncs.length) { + if ( + ncs[idx].getAttribute('ligated') && + idx + 1 < ncs.length && + ncs[idx + 1].getAttribute('ligated') + ) { + ncs[idx].removeAttribute('ligated'); + ncs[idx + 1].removeAttribute('ligated'); + ncs[idx + 1].setAttribute('con', HUFNAGEL_CON_VALUE); + idx += 2; + } else { + idx += 1; } } } -// Neon's canonical encoding -> what Verovio can safely load/render. -function stripHufnagelNotation(mei: Element): void { - const notationType = stripStaffDefNotationTypeSuffix(mei); - if (notationType === 'hufnagel') convertConToLigated(mei); -} - -// What Verovio hands back -> Neon's canonical encoding. Verovio's own copy -// has no memory of being Hufnagel/Square once stripped above, so the -// caller must pass in the notation type Neon already knows it's displaying -// (e.g. getSettings().notationType), rather than trying to infer it here. -function restoreHufnagelNotation(mei: Element, notationType?: string): void { - if (notationType !== 'hufnagel' && notationType !== 'square') return; - restoreStaffDefNotationTypeSuffix(mei, notationType); - if (notationType === 'hufnagel') convertLigatedToCon(mei); -} - // String-in/string-out wrappers for callers (NeonCore.ts) that only have // the MEI as a string, not an already-parsed DOM. export function stripHufnagelForVerovio(meiString: string): string { const parser = new DOMParser(); const meiDoc = parser.parseFromString(meiString, 'text/xml'); - stripHufnagelNotation(meiDoc.documentElement); + stripStaffDefNotationTypeSuffix(meiDoc.documentElement); return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); } +// Used by Save (NeonCore.updateDatabase) - this is Neon's own internal +// working copy, which gets fed straight back into Verovio on next load, so +// it must faithfully keep whatever Verovio's live in-memory document +// actually has (including @ligated from a real toggleLigature action, and +// whatever else that action changed, e.g. clearing @tilt) rather than +// "fixing" it to the canonical @con-only form. Only @notationtype is +// restored here, since Verovio itself never remembers that. export function restoreHufnagelForStorage( meiString: string, notationType?: string, ): string { const parser = new DOMParser(); const meiDoc = parser.parseFromString(meiString, 'text/xml'); - restoreHufnagelNotation(meiDoc.documentElement, notationType); + restoreStaffDefNotationTypeSuffix(meiDoc.documentElement, notationType); return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); } // --- END TEMPORARY Verovio compatibility shim --- @@ -260,7 +262,10 @@ export function convertToNeon( scoreDef.insertAdjacentElement('afterend', colLayout); } - restoreHufnagelNotation(mei, notationType); + restoreStaffDefNotationTypeSuffix(mei, notationType); + if (notationType === 'hufnagel') { + convertLigatedToCon(mei); + } return vkbeautify.xml(serializer.serializeToString(meiDoc)); From 4e52519428317d18c326644fd0874b1aa009ba0d Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Thu, 2 Jul 2026 18:09:05 -0400 Subject: [PATCH 20/25] chore: sync Hufnagel zip with latest font branch update --- assets/Hufnagel.zip | Bin 9404 -> 9238 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/Hufnagel.zip b/assets/Hufnagel.zip index 30dd8c51150ab3ed90b839655325f012be6d58e8..457961df7d63115a96f2fb364d4cdbfff6918d85 100644 GIT binary patch delta 5959 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 delta 5995 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 Ce>b`S From 3028e601df850bc6082f268fe53c8db0b8eabcaf Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 7 Jul 2026 12:03:09 -0400 Subject: [PATCH 21/25] Update hufnagel font (custos) --- assets/Hufnagel.zip | Bin 9238 -> 9049 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/Hufnagel.zip b/assets/Hufnagel.zip index 457961df7d63115a96f2fb364d4cdbfff6918d85..25f162cd118e203a86c6723aede6af077b2e1621 100644 GIT binary patch delta 3899 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 Date: Tue, 7 Jul 2026 12:35:49 -0400 Subject: [PATCH 22/25] feat(verovio): port Hufnagel font-switching to production worker --- src/workers/VerovioWorker.js | 45 +++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/workers/VerovioWorker.js b/src/workers/VerovioWorker.js index f8c63b3e..25a5442d 100644 --- a/src/workers/VerovioWorker.js +++ b/src/workers/VerovioWorker.js @@ -1,11 +1,27 @@ let toolkit; const backlog = []; +let hufnagelBase64Promise = null; + +function fetchHufnagelBase64() { + if (!hufnagelBase64Promise) { + hufnagelBase64Promise = fetch('../assets/Hufnagel.zip') + .then(r => r.arrayBuffer()) + .then(buf => { + const bytes = new Uint8Array(buf); + let binary = ''; + for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); + return btoa(binary); + }); + } + return hufnagelBase64Promise; +} + /** * Parse and respond to messages sent by NeonCore. * @param {MessageEvent} evt */ -function handleNeonEvent(evt) { +async function handleNeonEvent(evt) { const data = evt.data; const result = { id: data.id, @@ -33,6 +49,33 @@ function handleNeonEvent(evt) { case 'renderToSVG': result.svg = toolkit.renderToSVG(1); break; + case 'setFont': { + const baseOptions = { + inputFrom: 'mei', + footer: 'none', + header: 'none', + pageMarginLeft: 0, + pageMarginTop: 0, + useFacsimile: false, + svgAdditionalAttribute: ['syllable@precedes', 'syllable@follows'], + svgCss: 'g.nc, g.custos, g.clef, g.accid, g.divLine {stroke: currentColor; stroke-width: 30px;}', + }; + try { + if (data.fontType === 'hufnagel') { + const b64 = await fetchHufnagelBase64(); + console.log('[VerovioWorker] b64 length:', b64.length); + toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64], fontFallback: 'Bravura' }); + console.log('[VerovioWorker] setOptions Hufnagel done'); + } else { + toolkit.setOptions({ ...baseOptions, font: 'Bravura', fontAddCustom: '' }); + console.log('[VerovioWorker] setOptions Bravura done'); + } + console.log('[VerovioWorker] setFont done:', data.fontType); + } catch (e) { + console.error('[VerovioWorker] setFont ERROR:', e); + } + break; + } default: break; } From 1e40fb50ab6f8739a5267cf20f47ffa60bf35fc9 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 21 Jul 2026 10:41:54 -0400 Subject: [PATCH 23/25] refactor(mei): simplify notation type handling --- src/Dashboard/Storage.ts | 17 ++------------ src/utils/ConvertMei.ts | 50 ++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/src/Dashboard/Storage.ts b/src/Dashboard/Storage.ts index eb32fcd5..6e017de7 100644 --- a/src/Dashboard/Storage.ts +++ b/src/Dashboard/Storage.ts @@ -2,6 +2,7 @@ import { v4 as uuidv4 } from 'uuid'; import PouchDB from 'pouchdb'; import { AllDocs, Doc, uploadsInfo } from '../Types'; import * as localManifest from '../../assets/manifest.json'; +import { restoreHufnagelForStorage } from '../utils/ConvertMei'; export const db = new PouchDB('Neon-User-Storage'); @@ -26,20 +27,6 @@ export async function fetchUploads(): Promise { } } -// Sets on the given -// MEI text. This is the only place a freshly-uploaded/created MEI file gets -// its notation type recorded - the Edit page's notation type dropdown does -// not lock or otherwise depend on this; it can still be changed afterward. -function setMeiNotationType(meiText: string, notationType: string): string { - const parser = new DOMParser(); - const serializer = new XMLSerializer(); - const meiDoc = parser.parseFromString(meiText, 'text/xml'); - meiDoc.documentElement - .querySelector('staffDef') - ?.setAttribute('notationtype', `neume.${notationType}`); - return serializer.serializeToString(meiDoc); -} - export function createManifest( id: string, title: string, @@ -72,7 +59,7 @@ export function createManifest( const meiText = await meiTextPromise; const meiUri = 'data:application/mei+xml;base64,' + - window.btoa(setMeiNotationType(meiText, notationType)); + window.btoa(restoreHufnagelForStorage(meiText, notationType)); const bgUri = await bgPromise; // Pre-seed this folio's LocalSettings entry (keyed by id, same format diff --git a/src/utils/ConvertMei.ts b/src/utils/ConvertMei.ts index f8fc34d8..96dfaf39 100644 --- a/src/utils/ConvertMei.ts +++ b/src/utils/ConvertMei.ts @@ -61,31 +61,6 @@ const HUFNAGEL_NOTATIONTYPE = 'neume.hufnagel'; const SQUARE_NOTATIONTYPE = 'neume.square'; const HUFNAGEL_CON_VALUE = 'e'; -// Strips a "neume.hufnagel"/"neume.square" staffDef notationtype down to -// bare "neume". -function stripStaffDefNotationTypeSuffix(mei: Element): void { - const staffDef = mei.querySelector('staffDef'); - const value = staffDef?.getAttribute('notationtype'); - if (value === HUFNAGEL_NOTATIONTYPE || value === SQUARE_NOTATIONTYPE) { - staffDef.setAttribute('notationtype', 'neume'); - } -} - -// Restores a bare staffDef notationtype back to "neume.hufnagel"/"neume.square" -// given the notation type Neon already knows it's displaying. -function restoreStaffDefNotationTypeSuffix( - mei: Element, - notationType?: string, -): void { - if (notationType !== 'hufnagel' && notationType !== 'square') return; - mei - .querySelector('staffDef') - ?.setAttribute( - 'notationtype', - notationType === 'hufnagel' ? HUFNAGEL_NOTATIONTYPE : SQUARE_NOTATIONTYPE, - ); -} - // Hufnagel only: reverse of Verovio's own toggleLigature editor action. For // each adjacent pair of @ligated s, remove @ligated from both and // restore @con="e" on the second one only. @@ -113,7 +88,16 @@ function convertLigatedToCon(mei: Element): void { export function stripHufnagelForVerovio(meiString: string): string { const parser = new DOMParser(); const meiDoc = parser.parseFromString(meiString, 'text/xml'); - stripStaffDefNotationTypeSuffix(meiDoc.documentElement); + const staffDef = meiDoc.documentElement.querySelector('staffDef'); + const notationType = staffDef?.getAttribute('notationtype'); + + if ( + notationType === HUFNAGEL_NOTATIONTYPE || + notationType === SQUARE_NOTATIONTYPE + ) { + staffDef.setAttribute('notationtype', 'neume'); + } + return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); } @@ -130,7 +114,12 @@ export function restoreHufnagelForStorage( ): string { const parser = new DOMParser(); const meiDoc = parser.parseFromString(meiString, 'text/xml'); - restoreStaffDefNotationTypeSuffix(meiDoc.documentElement, notationType); + if (notationType === 'hufnagel' || notationType === 'square') { + meiDoc.documentElement + .querySelector('staffDef') + ?.setAttribute('notationtype', `neume.${notationType}`); + } + return vkbeautify.xml(new XMLSerializer().serializeToString(meiDoc)); } // --- END TEMPORARY Verovio compatibility shim --- @@ -262,7 +251,12 @@ export function convertToNeon( scoreDef.insertAdjacentElement('afterend', colLayout); } - restoreStaffDefNotationTypeSuffix(mei, notationType); + if (notationType === 'hufnagel' || notationType === 'square') { + mei + .querySelector('staffDef') + ?.setAttribute('notationtype', `neume.${notationType}`); + } + if (notationType === 'hufnagel') { convertLigatedToCon(mei); } From 44e33344ac477e7e78b80354519e8e749e2f6d47 Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 21 Jul 2026 13:16:37 -0400 Subject: [PATCH 24/25] refactor(display): decouple notation controls from NeonView --- src/DisplayPanel/DisplayControls.ts | 13 ++++++------- src/DisplayPanel/DisplayPanel.ts | 5 ++--- src/DivaView.ts | 5 ++++- src/Interfaces.ts | 2 +- src/SingleView/SingleView.ts | 5 ++++- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/DisplayPanel/DisplayControls.ts b/src/DisplayPanel/DisplayControls.ts index 2b3a4398..c3d9e79b 100644 --- a/src/DisplayPanel/DisplayControls.ts +++ b/src/DisplayPanel/DisplayControls.ts @@ -5,7 +5,6 @@ import ZoomHandler from '../SingleView/Zoom'; import { GroupingType } from '../Types'; import { getSettings, setSettings } from '../utils/LocalSettings'; import * as d3 from 'd3'; -import NeonView from '../NeonView'; let lastGlyphOpacity: number, lastImageOpacity: number, lastCircleSize: number; @@ -494,17 +493,18 @@ function setBurgerControls(): void { /** * Set click listeners for Notation Type dropdown (Square / Hufnagel). - * Currently only updates the label and logs to console; engine wiring is next. + * Update the stored setting and notify the active view when the type changes. */ -export function setNotationTypeControls(neonView: NeonView): void { +export function setNotationTypeControls(): void { const dropdown = document.getElementById('notation-type-dropdown'); const label = document.getElementById('notation-type-label'); function applyNotationType(type: string): void { label.textContent = `\xA0- ${type[0].toUpperCase() + type.slice(1)}`; setSettings({ notationType: type }); - neonView.setNotationType(type); - document.dispatchEvent(new CustomEvent('notationtypechange', { detail: { type } })); + document.dispatchEvent( + new CustomEvent('notationtypechange', { detail: { type } }), + ); } function notationTypeClickaway(): void { @@ -617,7 +617,6 @@ export function loadHighlightSettings(): void { export function initDisplayControls( meiClassName: string, background: string, - neonView: NeonView, ): void { setGlyphOpacityControls(meiClassName); setBgOpacityControls(background); @@ -626,7 +625,7 @@ export function initDisplayControls( setHighlightKeyControls(); setDisplayAllListener(); loadHighlightSettings(); - setNotationTypeControls(neonView); + setNotationTypeControls(); const displayContents = document.getElementById('displayContents'); const toggleDisplay = document.getElementById('toggleDisplay'); diff --git a/src/DisplayPanel/DisplayPanel.ts b/src/DisplayPanel/DisplayPanel.ts index 21a80ddf..6470766e 100644 --- a/src/DisplayPanel/DisplayPanel.ts +++ b/src/DisplayPanel/DisplayPanel.ts @@ -2,7 +2,6 @@ import * as DisplayControls from './DisplayControls'; import ZoomHandler from '../SingleView/Zoom'; import { DisplayInterface, ViewInterface } from '../Interfaces'; import { getSettings } from '../utils/LocalSettings'; -import NeonView from '../NeonView'; /** * Return the HTML for the display panel. @@ -204,12 +203,12 @@ class DisplayPanel implements DisplayInterface { /** * Apply event listeners related to the DisplayPanel. */ - setDisplayListeners(neonView: NeonView): void { + setDisplayListeners(): void { if (this.zoomHandler) { // Zoom handler stuff DisplayControls.setZoomControls(this.zoomHandler); } - DisplayControls.initDisplayControls(this.meiClass, this.background, neonView); + DisplayControls.initDisplayControls(this.meiClass, this.background); } /** diff --git a/src/DivaView.ts b/src/DivaView.ts index 651d9fe3..992818cc 100644 --- a/src/DivaView.ts +++ b/src/DivaView.ts @@ -33,6 +33,9 @@ class DivaView implements ViewInterface { manifest: string, ) { this.neonView = neonView; + document.addEventListener('notationtypechange', (evt: CustomEvent) => { + this.neonView.setNotationType(evt.detail.type); + }); this.updateCallbacks = []; this.divaReady = false; this.diva = new Diva('container', { @@ -220,7 +223,7 @@ class DivaView implements ViewInterface { */ didLoad(): void { this.divaReady = true; - this.displayPanel.setDisplayListeners(this.neonView); + this.displayPanel.setDisplayListeners(); document.getElementById('loading').style.display = 'none'; } diff --git a/src/Interfaces.ts b/src/Interfaces.ts index ad1f3a0e..3a06283a 100644 --- a/src/Interfaces.ts +++ b/src/Interfaces.ts @@ -17,7 +17,7 @@ export interface DisplayInterface { meiClass: string; background: string; zoomHandler: ZoomHandler; - setDisplayListeners(neonView: NeonView): void; + setDisplayListeners(): void; updateVisualization(): void; loadSettings(): void; } diff --git a/src/SingleView/SingleView.ts b/src/SingleView/SingleView.ts index 652a6a9d..362f8600 100644 --- a/src/SingleView/SingleView.ts +++ b/src/SingleView/SingleView.ts @@ -31,6 +31,9 @@ class SingleView implements ViewInterface { */ constructor(neonView: NeonView, panel: DisplayConstructable, image: string) { this.neonView = neonView; + document.addEventListener('notationtypechange', (evt: CustomEvent) => { + this.neonView.setNotationType(evt.detail.type); + }); this.container = document.getElementById('container'); this.updateCallbacks = new Array(0); // Group will contain the image and the rendered SVG @@ -110,7 +113,7 @@ class SingleView implements ViewInterface { onSVGLoad(): void { this.setViewEventHandlers(); - this.displayPanel.setDisplayListeners(this.neonView); + this.displayPanel.setDisplayListeners(); } /** From 47171777fa3494333d4f944564c1e56cd2693aca Mon Sep 17 00:00:00 2001 From: Zih-Syuan Lin Date: Tue, 21 Jul 2026 14:00:53 -0400 Subject: [PATCH 25/25] refactor(font): simplify custom font loading --- .gitignore | 2 - assets/fonts/Bravura.woff2 | Bin 0 -> 59996 bytes assets/fonts/Bravura.xml | 1311 ++++++++++++++++++++++++++++++ assets/fonts/Hufnagel.woff2 | Bin 0 -> 1328 bytes assets/fonts/Hufnagel.xml | 21 + assets/style.css | 14 + package.json | 2 - src/SquareEdit/Contents.ts | 14 +- src/utils/GlyphIcons.ts | 63 +- src/workers/FontLoader.js | 16 + src/workers/VerovioWorker-dev.js | 19 +- src/workers/VerovioWorker.js | 20 +- yarn.lock | 9 +- 13 files changed, 1404 insertions(+), 87 deletions(-) create mode 100644 assets/fonts/Bravura.woff2 create mode 100644 assets/fonts/Bravura.xml create mode 100644 assets/fonts/Hufnagel.woff2 create mode 100644 assets/fonts/Hufnagel.xml create mode 100644 src/workers/FontLoader.js diff --git a/.gitignore b/.gitignore index 9fa9aaf1..f20adbbf 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,3 @@ /cypress/downloads .idea - -scripts/gen-hufnagel-grouping/ diff --git a/assets/fonts/Bravura.woff2 b/assets/fonts/Bravura.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2ff4668180eaa74ba0dc2a84362b2c401c6aa386 GIT binary patch literal 59996 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/Bravura.xml b/assets/fonts/Bravura.xml new file mode 100644 index 00000000..5eff2763 --- /dev/null +++ b/assets/fonts/Bravura.xml @@ -0,0 +1,1311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/fonts/Hufnagel.woff2 b/assets/fonts/Hufnagel.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..42d5ea14b7a3de437654c47ebbc9e1c63e9aea71 GIT binary patch literal 1328 zcmV-01<(3-Pew8T0RR9100l4r4FCWD01Kc100h|p0RR9100000000000000000000 z0000#Mn+Uk92y=5Rse$%5eN#3Fo*>UEC2yE0we=e1Rw>23lO(gP-9MAK=_P>4Z%)BpV2^vH^xvowVEd@_d35leMkTgWm|A9tk z{vJ1dKR``1P&Xr+({2t~4=OY8xhjO)I#XMSR-?fb1m_s|d)U9z->bpBa4wJM{S1L< zgvNf^+s3qD&I6PSL2xV`i$_Z}O2KO7T7`>TYjgVG{?B3dJSya(@3Kd0V`DcV@O|Lb zDe&X++rRkMK|dyeA}ZsM8U@L4{%LfVJ7o{<;qH90C557?FxId)aQxC(uwFJg)pF}A zKmO%12%rL?d4+rrO!*#E*PvgwqGr9b{$%~lMyG9Iy{tc4f1dwfz{Gz+uTd5N-GD9? zV3anRjvl@G^cyf}$S@sX1f)X%DJa;VCxTAeRzaQcn$5r*$RqL*u%k~ASa5`3oglMT z_diKlg#?zS$|}yBqhP1_6>_9P2a(8iy(D0lIO|ZbBx7$-j_&d+w#=&_@gc4u4xitc zpF>Q`p1DttqsND+ z&hq#@b9hYMaYME~*L;;Rd0pR_wT;i$v)X=Kd6bJ#7C|5-<`rNI)@HL^H`PiG-TZVb~Jd51OW^weyQDVJI{y8UIH)ir&q`oJvF>++O>_FBh z-~9@~9UW(`VC5?ly1In17s(|_Qh&P$m{Orohk3;y$_jBe@0RGVx}?Ms=Fzr*#n`*p zdxk|rDH)O6PoKDvvWj6`$fFlg?RC{-6`9$$CRni793DFnD{WzyExv@buWx2&s+gUl zm9o^`RFf=lL`!~Ao=1cfVLb3QsEs1S&Q#5eY;{+5L!s&hLD{csO_^~iHgDhZl`d{r z&UVrTG+*z53;jtH+LmS>9GXGb9%UBqzT*|+-Bh0 zeNUwu)OpRbI&0XS*r0v(BNl2N-Pj>tZ4;gn_wC*}!S72Om#y*F1v8G(L%oOabVecu zii#AVP<(6#4^LZV8tAV1x<^$B#j9Sl)H3@X{7w-QI7RPvDQC~4s@B#QY7pt-I|A#ilcaQ=6U1oho1ONzNPdI&XiF)8y z1!c;MI}-c9x4VxfO4$ZR&_BCb#lv@AQ*qbw3#^qo(iCm+y7R8lGlW{p%3&w z+-pC&)9%ef1QT#nP!Pc$0Qx-^5Zy*0P;_j9KxIv@0&3l!325~BAfTh$UzOB7Vi*+4 zqTigdvR75shVhh*N!#DJW7uu`U0axpI@o`E$22`~gj(G7;J04`_Im5^N0iuO$j*vwdN!kC*_Wq@+rnCY^MpJ3Z-5U-~nU!3dkC^ mcpnDtjb|{zJqca}Z-NiOm*7VTBZT9l7=E5uFS`|p00026J#fVU literal 0 HcmV?d00001 diff --git a/assets/fonts/Hufnagel.xml b/assets/fonts/Hufnagel.xml new file mode 100644 index 00000000..70c3afc6 --- /dev/null +++ b/assets/fonts/Hufnagel.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/style.css b/assets/style.css index ac60bf79..6c11a030 100644 --- a/assets/style.css +++ b/assets/style.css @@ -6,6 +6,20 @@ @import url('https://unpkg.com/diva.js@6.0.2/build/diva.css'); +@font-face { + font-family: 'Bravura'; + src: url('./fonts/Bravura.woff2') format('woff2'); + font-style: normal; + font-weight: normal; +} + +@font-face { + font-family: 'Hufnagel'; + src: url('./fonts/Hufnagel.woff2') format('woff2'); + font-style: normal; + font-weight: normal; +} + /* ----------------------- */ /* General styles /* ----------------------- */ diff --git a/package.json b/package.json index 5d9c9df0..d2f1fb37 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "diva.js": "github:DDMAL/diva.js#5f530483f653db68af1cbb92bc8cc967b51763c3", "http-server": "^14.1.1", "jsonschema": "^1.2.4", - "jszip": "^3.10.1", "pouchdb": "^7.1.1", "vkbeautify": "^0.99.3" }, @@ -67,7 +66,6 @@ "@types/elementtree": "^0.1.0", "@types/fs-extra": "^9.0.1", "@types/jest": "^26.0.8", - "@types/jszip": "^3.4.1", "@types/pouchdb": "^6.4.0", "@types/request": "^2.48.2", "@types/selenium-webdriver": "^4.0.2", diff --git a/src/SquareEdit/Contents.ts b/src/SquareEdit/Contents.ts index dffb7c74..8f55a507 100644 --- a/src/SquareEdit/Contents.ts +++ b/src/SquareEdit/Contents.ts @@ -42,14 +42,18 @@ export const HUFNAGEL_PRIMITIVES: PrimitiveEntry[] = [ export async function buildPrimitiveTabHtml(notationType: string): Promise { const isHufnagel = notationType === 'hufnagel'; - const zipUrl = isHufnagel - ? `${__ASSET_PREFIX__}assets/Hufnagel.zip` - : `${__ASSET_PREFIX__}assets/Bravura.zip`; + const fontName = isHufnagel ? 'Hufnagel' : 'Bravura'; const primitives = isHufnagel ? HUFNAGEL_PRIMITIVES : SQUARE_PRIMITIVES; - const fontData = await getFontData(zipUrl); + const fontData = await getFontData( + fontName, + `${__ASSET_PREFIX__}assets/fonts/${fontName}.xml`, + ); const fallbackFontData = isHufnagel - ? await getFontData(`${__ASSET_PREFIX__}assets/Bravura.zip`) + ? await getFontData( + 'Bravura', + `${__ASSET_PREFIX__}assets/fonts/Bravura.xml`, + ) : null; return primitives.map(({ id, codepoint, title, iconDy, pngFallback }) => { diff --git a/src/utils/GlyphIcons.ts b/src/utils/GlyphIcons.ts index 20eddd6e..c6952d23 100644 --- a/src/utils/GlyphIcons.ts +++ b/src/utils/GlyphIcons.ts @@ -1,6 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const JSZip = require('jszip'); - interface BBox { x: number; y: number; w: number; h: number; } interface FontData { @@ -12,44 +9,38 @@ const ICON_SIZE = 24; const cache = new Map>(); -async function loadFontData(zipUrl: string): Promise { - const response = await fetch(zipUrl); - const buf = await response.arrayBuffer(); - const zip = await JSZip.loadAsync(buf); - const fontName = zipUrl.split('/').pop()!.replace('.zip', ''); - - // Inject font CSS - const cssFile = zip.file(`${fontName}.css`); - if (cssFile) { - const css = await cssFile.async('string'); - const style = document.createElement('style'); - style.textContent = css; - document.head.appendChild(style); - } - - // Parse bounding boxes +async function loadFontData( + fontName: string, + bboxUrl: string, +): Promise { + const response = await fetch(bboxUrl); + if (!response.ok) throw new Error(`Unable to load ${bboxUrl}`); + const xml = await response.text(); const bboxMap = new Map(); - const bboxFile = zip.file(`${fontName}.xml`); - if (bboxFile) { - const xml = await bboxFile.async('string'); - const parser = new DOMParser(); - const doc = parser.parseFromString(xml, 'text/xml'); - doc.querySelectorAll('g[c]').forEach(el => { - const c = el.getAttribute('c'); - const x = parseFloat(el.getAttribute('x') ?? '0'); - const y = parseFloat(el.getAttribute('y') ?? '0'); - const w = parseFloat(el.getAttribute('w') ?? '0'); - const h = parseFloat(el.getAttribute('h') ?? '0'); - if (c && w > 0 && h > 0) bboxMap.set(c, { x, y, w, h }); - }); - } + const parser = new DOMParser(); + const doc = parser.parseFromString(xml, 'text/xml'); + doc.querySelectorAll('g[c]').forEach(el => { + const c = el.getAttribute('c'); + const x = parseFloat(el.getAttribute('x') ?? '0'); + const y = parseFloat(el.getAttribute('y') ?? '0'); + const w = parseFloat(el.getAttribute('w') ?? '0'); + const h = parseFloat(el.getAttribute('h') ?? '0'); + if (c && w > 0 && h > 0) bboxMap.set(c, { x, y, w, h }); + }); + + await document.fonts.load(`1000px "${fontName}"`); return { fontName, bboxMap }; } -export function getFontData(zipUrl: string): Promise { - if (!cache.has(zipUrl)) cache.set(zipUrl, loadFontData(zipUrl)); - return cache.get(zipUrl)!; +export function getFontData( + fontName: string, + bboxUrl: string, +): Promise { + if (!cache.has(fontName)) { + cache.set(fontName, loadFontData(fontName, bboxUrl)); + } + return cache.get(fontName)!; } export function buildGlyphIcon(codepoint: string, fontName: string, bbox: BBox): string { diff --git a/src/workers/FontLoader.js b/src/workers/FontLoader.js new file mode 100644 index 00000000..493d3672 --- /dev/null +++ b/src/workers/FontLoader.js @@ -0,0 +1,16 @@ +const fontBase64Promises = new Map(); + +function fetchFontBase64(url) { + if (!fontBase64Promises.has(url)) { + const base64Promise = fetch(url) + .then(response => response.arrayBuffer()) + .then(buffer => { + const bytes = new Uint8Array(buffer); + let binary = ''; + for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); + return btoa(binary); + }); + fontBase64Promises.set(url, base64Promise); + } + return fontBase64Promises.get(url); +} diff --git a/src/workers/VerovioWorker-dev.js b/src/workers/VerovioWorker-dev.js index 64f26ec5..0e5aa207 100644 --- a/src/workers/VerovioWorker-dev.js +++ b/src/workers/VerovioWorker-dev.js @@ -1,24 +1,9 @@ importScripts('../assets/js/verovio-toolkit-wasm.js'); +importScripts('./FontLoader.js'); let toolkit; const backlog = []; -let hufnagelBase64Promise = null; - -function fetchHufnagelBase64() { - if (!hufnagelBase64Promise) { - hufnagelBase64Promise = fetch('../assets/Hufnagel.zip') - .then(r => r.arrayBuffer()) - .then(buf => { - const bytes = new Uint8Array(buf); - let binary = ''; - for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); - return btoa(binary); - }); - } - return hufnagelBase64Promise; -} - /** * Parse and respond to messages sent by NeonCore. * @param {MessageEvent} evt @@ -64,7 +49,7 @@ async function handleNeonEvent(evt) { }; try { if (data.fontType === 'hufnagel') { - const b64 = await fetchHufnagelBase64(); + const b64 = await fetchFontBase64('../assets/Hufnagel.zip'); console.log('[VerovioWorker] b64 length:', b64.length); toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64], fontFallback: 'Bravura' }); console.log('[VerovioWorker] setOptions Hufnagel done'); diff --git a/src/workers/VerovioWorker.js b/src/workers/VerovioWorker.js index 25a5442d..03446ba0 100644 --- a/src/workers/VerovioWorker.js +++ b/src/workers/VerovioWorker.js @@ -1,22 +1,8 @@ +importScripts('./FontLoader.js'); + let toolkit; const backlog = []; -let hufnagelBase64Promise = null; - -function fetchHufnagelBase64() { - if (!hufnagelBase64Promise) { - hufnagelBase64Promise = fetch('../assets/Hufnagel.zip') - .then(r => r.arrayBuffer()) - .then(buf => { - const bytes = new Uint8Array(buf); - let binary = ''; - for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); - return btoa(binary); - }); - } - return hufnagelBase64Promise; -} - /** * Parse and respond to messages sent by NeonCore. * @param {MessageEvent} evt @@ -62,7 +48,7 @@ async function handleNeonEvent(evt) { }; try { if (data.fontType === 'hufnagel') { - const b64 = await fetchHufnagelBase64(); + const b64 = await fetchFontBase64('../assets/Hufnagel.zip'); console.log('[VerovioWorker] b64 length:', b64.length); toolkit.setOptions({ ...baseOptions, font: 'Hufnagel', fontAddCustom: [b64], fontFallback: 'Bravura' }); console.log('[VerovioWorker] setOptions Hufnagel done'); diff --git a/yarn.lock b/yarn.lock index f996683e..71aaf316 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1018,13 +1018,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/jszip@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@types/jszip/-/jszip-3.4.1.tgz#e7a4059486e494c949ef750933d009684227846f" - integrity sha512-TezXjmf3lj+zQ651r6hPqvSScqBLvyPI9FxdXBqpEwBijNGQ2NXpaFW/7joGzveYkKQUil7iiDHLo6LV71Pc0A== - dependencies: - jszip "*" - "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -6048,7 +6041,7 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -jszip@*, jszip@^3.10.0, jszip@^3.10.1: +jszip@^3.10.0: version "3.10.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==