Skip to content

Commit dd5de5b

Browse files
authored
Merge pull request #3980 from ProjectMirador/viewer-initiaizer
2 parents 44e7b2b + 23b8e24 commit dd5de5b

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

__tests__/src/lib/MiradorViewer.test.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@ describe('MiradorViewer', () => {
1919
});
2020
describe('constructor', () => {
2121
it('returns viewer store', () => {
22-
const instance = new MiradorViewer({ id: 'mirador' });
22+
const instance = new MiradorViewer({});
23+
24+
act(() => { instance.renderInto(document.getElementById('mirador')); }); // eslint-disable-line testing-library/no-unnecessary-act
2325
expect(instance.store.dispatch).toBeDefined();
2426
});
2527
it('renders via ReactDOM', () => {
26-
act(() => { new MiradorViewer({ id: 'mirador' }); }); // eslint-disable-line no-new
28+
const instance = new MiradorViewer({});
29+
30+
act(() => { instance.renderInto(document.getElementById('mirador')); }); // eslint-disable-line testing-library/no-unnecessary-act
2731

2832
expect(screen.getByTestId('container')).not.toBeEmptyDOMElement();
2933
});
@@ -35,7 +39,6 @@ describe('MiradorViewer', () => {
3539
catalog: [
3640
{ manifestId: 'http://media.nga.gov/public/manifests/nga_highlights.json', provider: 'National Gallery of Art' },
3741
],
38-
id: 'mirador',
3942
windows: [
4043
{
4144
canvasId: 'https://iiif.harvardartmuseums.org/manifests/object/299843/canvas/canvas-47174892',
@@ -60,6 +63,8 @@ describe('MiradorViewer', () => {
6063
},
6164
);
6265

66+
act(() => { instance.renderInto(document.getElementById('mirador')); }); // eslint-disable-line testing-library/no-unnecessary-act
67+
6368
const { windows, catalog, config } = instance.store.getState();
6469
const windowIds = Object.keys(windows);
6570
expect(Object.keys(windowIds).length).toBe(2);

src/lib/MiradorViewer.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,18 @@ class MiradorViewer {
1818
this.store = viewerConfig.store
1919
|| createPluggableStore(this.config, this.plugins);
2020

21-
if (config.id) {
22-
this.container = document.getElementById(config.id);
23-
this.root = createRoot(this.container);
21+
if (config.id) this.renderInto(document.getElementById(config.id));
22+
}
23+
24+
/**
25+
* @private
26+
* @param {*} container
27+
*/
28+
renderInto(container) {
29+
this.container = container;
30+
this.root = createRoot(this.container);
2431

25-
this.root.render(this.render());
26-
}
32+
this.root.render(this.render());
2733
}
2834

2935
/**

0 commit comments

Comments
 (0)