From 3d5f670a8f1b78fce529c31b904bf749a8b47d34 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 08:49:06 -0400 Subject: [PATCH 1/6] Save mirador instance in drupalSettings --- js/mirador_viewer.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index 2d30fc4..f464ddb 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -12,10 +12,13 @@ */ Drupal.behaviors.Mirador = { attach: function (context, settings) { + settings.mirador.instances = {} Object.entries(settings.mirador.viewers).forEach(entry => { - const [base, values] = entry; - once('mirador-viewer', base, context).forEach(() => - Mirador.viewer(values, window.miradorPlugins || {}) + const [viewerId, settings] = entry; + once('mirador-viewer', viewerId, context).forEach(() => + // save the mirador instance so other modules can interact + // with the store/actions at e.g. drupalSettings.mirador.instances["#mirador-xyz"].store + settings.mirador.instances[viewerId] = Mirador.viewer(settings, window.miradorPlugins || {}) ); }); }, From d313a9484002a4e79ed8aab8e294116a6944f125 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 09:57:52 -0400 Subject: [PATCH 2/6] Update js/mirador_viewer.js Co-authored-by: Adam <607975+adam-vessey@users.noreply.github.com> --- js/mirador_viewer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index f464ddb..48f36a3 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -12,7 +12,7 @@ */ Drupal.behaviors.Mirador = { attach: function (context, settings) { - settings.mirador.instances = {} + Drupal.IslandoraMirador.instances = Drupal.IslandoraMirador.instances || {} Object.entries(settings.mirador.viewers).forEach(entry => { const [viewerId, settings] = entry; once('mirador-viewer', viewerId, context).forEach(() => From d68af1fdc9490ac806bc1cadf28a7b57255e7a95 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 09:58:06 -0400 Subject: [PATCH 3/6] Update js/mirador_viewer.js Co-authored-by: Adam <607975+adam-vessey@users.noreply.github.com> --- js/mirador_viewer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index 48f36a3..7a54dd0 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -14,11 +14,11 @@ attach: function (context, settings) { Drupal.IslandoraMirador.instances = Drupal.IslandoraMirador.instances || {} Object.entries(settings.mirador.viewers).forEach(entry => { - const [viewerId, settings] = entry; - once('mirador-viewer', viewerId, context).forEach(() => + const [base, values] = entry; + once('mirador-viewer', base, context).forEach(() => // save the mirador instance so other modules can interact - // with the store/actions at e.g. drupalSettings.mirador.instances["#mirador-xyz"].store - settings.mirador.instances[viewerId] = Mirador.viewer(settings, window.miradorPlugins || {}) + // with the store/actions at e.g. Drupal.IslandoraMirador.instances["#mirador-xyz"].store + Drupal.IslandoraMirador.instances[viewerId] = Mirador.viewer(values, window.miradorPlugins || {}) ); }); }, From 5478b892b31f50c11bd8023bc57a3e20c1290cf1 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 10:12:47 -0400 Subject: [PATCH 4/6] Fix instantiation issues --- js/mirador_viewer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index 7a54dd0..c3dc74d 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -12,13 +12,14 @@ */ Drupal.behaviors.Mirador = { attach: function (context, settings) { - Drupal.IslandoraMirador.instances = Drupal.IslandoraMirador.instances || {} + Drupal.IslandoraMirador = Drupal.IslandoraMirador || {} + Drupal.IslandoraMirador.instances = Drupal.IslandoraMirador.instances || {} Object.entries(settings.mirador.viewers).forEach(entry => { const [base, values] = entry; once('mirador-viewer', base, context).forEach(() => // save the mirador instance so other modules can interact // with the store/actions at e.g. Drupal.IslandoraMirador.instances["#mirador-xyz"].store - Drupal.IslandoraMirador.instances[viewerId] = Mirador.viewer(values, window.miradorPlugins || {}) + Drupal.IslandoraMirador.instances[base] = Mirador.viewer(values, window.miradorPlugins || {}) ); }); }, From 6c96969ed8565d443a2560f7ac0d62ce22761321 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 11:14:53 -0400 Subject: [PATCH 5/6] Cleanup in detach --- js/mirador_viewer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index c3dc74d..5d6b2f9 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -27,6 +27,7 @@ Object.entries(settings.mirador.viewers).forEach(entry => { const [base, ] = entry; once.remove('mirador-viewer', base, context); + delete Drupal.IslandoraMirador.instances[base]; }); } }; From e13486cc622a36b3b4aff4351ae03d68b1affd60 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Wed, 26 Jun 2024 12:04:58 -0400 Subject: [PATCH 6/6] Update js/mirador_viewer.js Co-authored-by: Adam <607975+adam-vessey@users.noreply.github.com> --- js/mirador_viewer.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/mirador_viewer.js b/js/mirador_viewer.js index 5d6b2f9..c520e40 100644 --- a/js/mirador_viewer.js +++ b/js/mirador_viewer.js @@ -26,8 +26,10 @@ detach: function (context, settings) { Object.entries(settings.mirador.viewers).forEach(entry => { const [base, ] = entry; - once.remove('mirador-viewer', base, context); - delete Drupal.IslandoraMirador.instances[base]; + const removed = once.remove('mirador-viewer', base, context); + if (removed.length > 0) { + delete Drupal.IslandoraMirador.instances[base]; + } }); } };