From 39cded93ab053756310bbffa2080c48065993198 Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 21:12:22 -0400 Subject: [PATCH 1/9] refetch probe response be service, not obsolete response - add anyTokenServices in getServices.js - the accomodates the intermediation of access services in Auth2 --- src/lib/getServices.js | 28 +++++++++++++++++++++++----- src/state/sagas/auth.js | 22 +++++++++++++--------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/lib/getServices.js b/src/lib/getServices.js index 28ba82779d..ddb800f366 100644 --- a/src/lib/getServices.js +++ b/src/lib/getServices.js @@ -1,14 +1,15 @@ import { Utils } from 'manifesto.js'; import { filterByTypes } from './typeFilters'; +import flatten from 'lodash/flatten'; /** */ export function anyAuthServices(resource) { + console.log({resource, services: Utils.getServices(resource)}); return resource && Utils.getServices(resource).filter(s => (s.getProfile() && s.getProfile().match(/http:\/\/iiif.io\/api\/auth\//)) - || (s.getProperty('type') - && s.getProperty('type').match(/^Auth.*2$/))); + || (s.getProperty('type')?.match(/^Auth.*Service2$/))); } /** @@ -26,9 +27,7 @@ export function getProbeService(resource) { && anyProbeServices(resource)[0]; } -/** - */ -export function getTokenService(resource) { +function auth1TokenService(resource) { return resource && ( Utils.getService(resource, 'http://iiif.io/api/auth/1/token') @@ -37,6 +36,25 @@ export function getTokenService(resource) { ); } +export function anyTokenServices(resource) { + const v1TokenService = auth1TokenService(resource); + if (v1TokenService) return [ v1TokenService ]; + const services = resource && filterByTypes(Utils.getServices(resource), 'AuthAccessTokenService2'); + if (services && services[0]) return services; + if (resource) { + // probe services are separated from token services by access services + const authServices = anyAuthServices(resource); + if (authServices[0]) return flatten(authServices.map(authSvc => anyTokenServices(authSvc))); + } + return []; +} + +/** + */ +export function getTokenService(resource) { + return anyTokenServices(resource)[0]; +} + /** */ export function getLogoutService(resource) { diff --git a/src/state/sagas/auth.js b/src/state/sagas/auth.js index 3fe5dd81d2..93c64f0dfd 100644 --- a/src/state/sagas/auth.js +++ b/src/state/sagas/auth.js @@ -5,7 +5,7 @@ import { Utils } from 'manifesto.js'; import flatten from 'lodash/flatten'; import ActionTypes from '../actions/action-types'; import MiradorCanvas from '../../lib/MiradorCanvas'; -import { getTokenService, getProbeService } from '../../lib/getServices'; +import { anyTokenServices, getTokenService, getProbeService } from '../../lib/getServices'; import { addAuthenticationRequest, resolveAuthenticationRequest, @@ -92,19 +92,22 @@ export function* refetchProbeResponses({ serviceId }) { Object.keys(windows).map(windowId => select(getVisibleCanvases, { windowId })), ); - const visibleProbeServiceIds = flatten(flatten(canvases).map((canvas) => { + const visibleProbeServices = flatten(flatten(canvases).map((canvas) => { const miradorCanvas = new MiradorCanvas(canvas); return miradorCanvas.imageResources.filter((r) => getProbeService(r)).map((r) => getProbeService(r)); })); + const probeTokenServices = {}; + visibleProbeServices.reduce((acc, probeService) => { + acc[probeService.id] = anyTokenServices(probeService); + return acc; + }, probeTokenServices) const probeResponses = yield select(selectProbeResponses); + /** */ const haveThisTokenService = probeResponse => { - const services = Utils.getServices(probeResponse); - return services.some(e => { - const probeTokenService = getTokenService(e); - return probeTokenService && probeTokenService.id === serviceId; - }); + const tokenServices = probeTokenServices[probeResponse.id]; + return tokenServices && tokenServices.find(s => s.id === serviceId); }; const obsoleteProbeResponses = Object.values(probeResponses).filter( @@ -112,8 +115,9 @@ export function* refetchProbeResponses({ serviceId }) { ); yield all(obsoleteProbeResponses.map(({ id: probeId }) => { - if (visibleProbeServiceIds.includes(probeId)) { - return call(fetchProbeResponse, { probeId }); + const refetchableProbeService = visibleProbeServices.find(s=> s.id === probeId); + if (refetchableProbeService) { + return call(fetchProbeResponse, { probeId, resource: refetchableProbeService }); } return put({ probeId, type: ActionTypes.REMOVE_PROBE_RESPONSE }); })); From 4e306a220f0b898c9e29a865820cd694d65417c1 Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Thu, 7 Mar 2024 12:59:21 -0500 Subject: [PATCH 2/9] COLUMBIA: move culPlugins to isolated directory and add index.js entries, webpack config - add test pages demonstrating cul content at /cul.html, /canvaslink.html - use vjs-fill on videojs player - wip audio plugin override --- __tests__/integration/mirador/canvaslink.html | 63 +++++++++++++++++ __tests__/integration/mirador/cul.html | 45 +++++++++++++ package.json | 8 ++- .../ForbiddenComponent.js | 0 src/culPlugins/index.js | 15 +++++ .../components/CanvasRelatedLinks.js | 0 .../containers/CanvasRelatedLinks.js | 0 .../mirador-canvasRelatedLinks/index.js | 0 .../state/selectors.js | 0 .../components/ShareCanvasLinkDialog.js | 0 .../components/ShareControl.js | 0 .../components/dialog/CopyToClipboard.js | 0 .../components/dialog/RightsInformation.js | 0 .../components/dialog/ShareButton.js | 0 .../mirador-canvaslink/components/utils.js | 0 .../mirador-canvaslink/index.js | 0 .../mirador-canvaslink/locales.js | 0 .../mirador-canvaslink/state/selectors.js | 0 .../WindowSideBarCitationButton.js | 0 .../WindowSideBarCitationPanel.js | 0 .../mirador-citations/index.js | 0 .../mirador-citations/state/selectors.js | 0 .../components/DownloadButton.js | 1 - .../components/DownloadDialog.js | 0 .../components/dialog/CanvasDownloadLinks.js | 0 .../dialog/DownloadDialogPluginArea.js | 0 .../components/dialog/ImageLink.js | 0 .../dialog/DownloadDialogPluginArea.js | 0 .../mirador-downloaddialog/index.js | 0 .../mirador-downloaddialog/locales.js | 0 .../mirador-downloaddialog/state/selectors.js | 0 .../mirador-videojs/components/VideoJS.js | 0 .../components/VideoJSAudioViewer.js | 67 +++++++++++++++++++ .../components/VideoJSViewer.js | 2 +- src/culPlugins/mirador-videojs/index.js | 19 ++++++ .../mirador-viewXml/MiradorViewXmlDialog.js | 0 .../mirador-viewXml/MiradorViewXmlPlugin.js | 0 .../mirador-viewXml/index.js | 0 .../mirador-viewXml/state/selectors.js | 0 src/index.js | 2 + src/init.js | 1 - src/plugins/mirador-videojs/index.js | 12 ---- webpack.config.js | 14 ++++ 43 files changed, 232 insertions(+), 17 deletions(-) create mode 100644 __tests__/integration/mirador/canvaslink.html create mode 100644 __tests__/integration/mirador/cul.html rename src/{plugins => culPlugins}/ForbiddenComponent.js (100%) create mode 100644 src/culPlugins/index.js rename src/{plugins => culPlugins}/mirador-canvasRelatedLinks/components/CanvasRelatedLinks.js (100%) rename src/{plugins => culPlugins}/mirador-canvasRelatedLinks/containers/CanvasRelatedLinks.js (100%) rename src/{plugins => culPlugins}/mirador-canvasRelatedLinks/index.js (100%) rename src/{plugins => culPlugins}/mirador-canvasRelatedLinks/state/selectors.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/ShareCanvasLinkDialog.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/ShareControl.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/dialog/CopyToClipboard.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/dialog/RightsInformation.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/dialog/ShareButton.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/components/utils.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/index.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/locales.js (100%) rename src/{plugins => culPlugins}/mirador-canvaslink/state/selectors.js (100%) rename src/{plugins => culPlugins}/mirador-citations/WindowSideBarCitationButton.js (100%) rename src/{plugins => culPlugins}/mirador-citations/WindowSideBarCitationPanel.js (100%) rename src/{plugins => culPlugins}/mirador-citations/index.js (100%) rename src/{plugins => culPlugins}/mirador-citations/state/selectors.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/components/DownloadButton.js (96%) rename src/{plugins => culPlugins}/mirador-downloaddialog/components/DownloadDialog.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/components/dialog/CanvasDownloadLinks.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/components/dialog/DownloadDialogPluginArea.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/components/dialog/ImageLink.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/containers/dialog/DownloadDialogPluginArea.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/index.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/locales.js (100%) rename src/{plugins => culPlugins}/mirador-downloaddialog/state/selectors.js (100%) rename src/{plugins => culPlugins}/mirador-videojs/components/VideoJS.js (100%) create mode 100644 src/culPlugins/mirador-videojs/components/VideoJSAudioViewer.js rename src/{plugins => culPlugins}/mirador-videojs/components/VideoJSViewer.js (96%) create mode 100644 src/culPlugins/mirador-videojs/index.js rename src/{plugins => culPlugins}/mirador-viewXml/MiradorViewXmlDialog.js (100%) rename src/{plugins => culPlugins}/mirador-viewXml/MiradorViewXmlPlugin.js (100%) rename src/{plugins => culPlugins}/mirador-viewXml/index.js (100%) rename src/{plugins => culPlugins}/mirador-viewXml/state/selectors.js (100%) delete mode 100644 src/plugins/mirador-videojs/index.js diff --git a/__tests__/integration/mirador/canvaslink.html b/__tests__/integration/mirador/canvaslink.html new file mode 100644 index 0000000000..1f3a8d2ad4 --- /dev/null +++ b/__tests__/integration/mirador/canvaslink.html @@ -0,0 +1,63 @@ + + + + + + + Mirador + + + +
+ + + + diff --git a/__tests__/integration/mirador/cul.html b/__tests__/integration/mirador/cul.html new file mode 100644 index 0000000000..f5b5f2361a --- /dev/null +++ b/__tests__/integration/mirador/cul.html @@ -0,0 +1,45 @@ + + + + + + + Mirador + + + +
+ + + + diff --git a/package.json b/package.json index ed44a62126..cff865b6e9 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "stylis-plugin-rtl": "^2.1.1", "url": "^0.11.0", "uuid": "^8.1.0 || ^9.0.0", - "video.js": "^7.17.0", "whatwg-fetch": "^3.6.20" }, "devDependencies": { @@ -109,6 +108,7 @@ "canvas": "^2.11.0", "chalk": "^4.1.0", "core-js": "^3.21.1", + "css-loader": "^6.8.1", "eslint": "^8.11.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-react-app": "^7.0.0", @@ -134,6 +134,8 @@ "react-refresh": "^0.14.0", "redux-mock-store": "^1.5.1", "redux-saga-test-plan": "^4.0.0-rc.3", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", "terser-webpack-plugin": "^5.3.1", "webpack": "^5.70.0", "webpack-cli": "^5.0.0", @@ -141,6 +143,8 @@ }, "peerDependencies": { "react": "^18.0.0", - "react-dom": "^18.0.0" + "react-dom": "^18.0.0", + "sass": "^1.34.0", + "video.js": "^7.17.0" } } diff --git a/src/plugins/ForbiddenComponent.js b/src/culPlugins/ForbiddenComponent.js similarity index 100% rename from src/plugins/ForbiddenComponent.js rename to src/culPlugins/ForbiddenComponent.js diff --git a/src/culPlugins/index.js b/src/culPlugins/index.js new file mode 100644 index 0000000000..318efcfec9 --- /dev/null +++ b/src/culPlugins/index.js @@ -0,0 +1,15 @@ +import canvasLinkPlugin from './mirador-canvaslink'; +import canvasRelatedLinksPlugin from './mirador-canvasRelatedLinks'; +import citationsSidebarPlugin from './mirador-citations'; +import downloadDialogPlugin from './mirador-downloaddialog'; +import videojsPlugin from './mirador-videojs'; +import viewXmlPlugin from './mirador-viewXml'; + +export default { + canvasLinkPlugin, + canvasRelatedLinksPlugin, + citationsSidebarPlugin, + downloadDialogPlugin, + videojsPlugin, + viewXmlPlugin, +}; diff --git a/src/plugins/mirador-canvasRelatedLinks/components/CanvasRelatedLinks.js b/src/culPlugins/mirador-canvasRelatedLinks/components/CanvasRelatedLinks.js similarity index 100% rename from src/plugins/mirador-canvasRelatedLinks/components/CanvasRelatedLinks.js rename to src/culPlugins/mirador-canvasRelatedLinks/components/CanvasRelatedLinks.js diff --git a/src/plugins/mirador-canvasRelatedLinks/containers/CanvasRelatedLinks.js b/src/culPlugins/mirador-canvasRelatedLinks/containers/CanvasRelatedLinks.js similarity index 100% rename from src/plugins/mirador-canvasRelatedLinks/containers/CanvasRelatedLinks.js rename to src/culPlugins/mirador-canvasRelatedLinks/containers/CanvasRelatedLinks.js diff --git a/src/plugins/mirador-canvasRelatedLinks/index.js b/src/culPlugins/mirador-canvasRelatedLinks/index.js similarity index 100% rename from src/plugins/mirador-canvasRelatedLinks/index.js rename to src/culPlugins/mirador-canvasRelatedLinks/index.js diff --git a/src/plugins/mirador-canvasRelatedLinks/state/selectors.js b/src/culPlugins/mirador-canvasRelatedLinks/state/selectors.js similarity index 100% rename from src/plugins/mirador-canvasRelatedLinks/state/selectors.js rename to src/culPlugins/mirador-canvasRelatedLinks/state/selectors.js diff --git a/src/plugins/mirador-canvaslink/components/ShareCanvasLinkDialog.js b/src/culPlugins/mirador-canvaslink/components/ShareCanvasLinkDialog.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/ShareCanvasLinkDialog.js rename to src/culPlugins/mirador-canvaslink/components/ShareCanvasLinkDialog.js diff --git a/src/plugins/mirador-canvaslink/components/ShareControl.js b/src/culPlugins/mirador-canvaslink/components/ShareControl.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/ShareControl.js rename to src/culPlugins/mirador-canvaslink/components/ShareControl.js diff --git a/src/plugins/mirador-canvaslink/components/dialog/CopyToClipboard.js b/src/culPlugins/mirador-canvaslink/components/dialog/CopyToClipboard.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/dialog/CopyToClipboard.js rename to src/culPlugins/mirador-canvaslink/components/dialog/CopyToClipboard.js diff --git a/src/plugins/mirador-canvaslink/components/dialog/RightsInformation.js b/src/culPlugins/mirador-canvaslink/components/dialog/RightsInformation.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/dialog/RightsInformation.js rename to src/culPlugins/mirador-canvaslink/components/dialog/RightsInformation.js diff --git a/src/plugins/mirador-canvaslink/components/dialog/ShareButton.js b/src/culPlugins/mirador-canvaslink/components/dialog/ShareButton.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/dialog/ShareButton.js rename to src/culPlugins/mirador-canvaslink/components/dialog/ShareButton.js diff --git a/src/plugins/mirador-canvaslink/components/utils.js b/src/culPlugins/mirador-canvaslink/components/utils.js similarity index 100% rename from src/plugins/mirador-canvaslink/components/utils.js rename to src/culPlugins/mirador-canvaslink/components/utils.js diff --git a/src/plugins/mirador-canvaslink/index.js b/src/culPlugins/mirador-canvaslink/index.js similarity index 100% rename from src/plugins/mirador-canvaslink/index.js rename to src/culPlugins/mirador-canvaslink/index.js diff --git a/src/plugins/mirador-canvaslink/locales.js b/src/culPlugins/mirador-canvaslink/locales.js similarity index 100% rename from src/plugins/mirador-canvaslink/locales.js rename to src/culPlugins/mirador-canvaslink/locales.js diff --git a/src/plugins/mirador-canvaslink/state/selectors.js b/src/culPlugins/mirador-canvaslink/state/selectors.js similarity index 100% rename from src/plugins/mirador-canvaslink/state/selectors.js rename to src/culPlugins/mirador-canvaslink/state/selectors.js diff --git a/src/plugins/mirador-citations/WindowSideBarCitationButton.js b/src/culPlugins/mirador-citations/WindowSideBarCitationButton.js similarity index 100% rename from src/plugins/mirador-citations/WindowSideBarCitationButton.js rename to src/culPlugins/mirador-citations/WindowSideBarCitationButton.js diff --git a/src/plugins/mirador-citations/WindowSideBarCitationPanel.js b/src/culPlugins/mirador-citations/WindowSideBarCitationPanel.js similarity index 100% rename from src/plugins/mirador-citations/WindowSideBarCitationPanel.js rename to src/culPlugins/mirador-citations/WindowSideBarCitationPanel.js diff --git a/src/plugins/mirador-citations/index.js b/src/culPlugins/mirador-citations/index.js similarity index 100% rename from src/plugins/mirador-citations/index.js rename to src/culPlugins/mirador-citations/index.js diff --git a/src/plugins/mirador-citations/state/selectors.js b/src/culPlugins/mirador-citations/state/selectors.js similarity index 100% rename from src/plugins/mirador-citations/state/selectors.js rename to src/culPlugins/mirador-citations/state/selectors.js diff --git a/src/plugins/mirador-downloaddialog/components/DownloadButton.js b/src/culPlugins/mirador-downloaddialog/components/DownloadButton.js similarity index 96% rename from src/plugins/mirador-downloaddialog/components/DownloadButton.js rename to src/culPlugins/mirador-downloaddialog/components/DownloadButton.js index e10e6b6410..9a84516a54 100644 --- a/src/plugins/mirador-downloaddialog/components/DownloadButton.js +++ b/src/culPlugins/mirador-downloaddialog/components/DownloadButton.js @@ -15,7 +15,6 @@ const DownloadButton = ({ aria-expanded={dialogOpen} aria-haspopup aria-label={t('showDownloadOptions')} - containerId={containerId} onClick={() => updateConfig({ ...config, dialogOpen: !dialogOpen, diff --git a/src/plugins/mirador-downloaddialog/components/DownloadDialog.js b/src/culPlugins/mirador-downloaddialog/components/DownloadDialog.js similarity index 100% rename from src/plugins/mirador-downloaddialog/components/DownloadDialog.js rename to src/culPlugins/mirador-downloaddialog/components/DownloadDialog.js diff --git a/src/plugins/mirador-downloaddialog/components/dialog/CanvasDownloadLinks.js b/src/culPlugins/mirador-downloaddialog/components/dialog/CanvasDownloadLinks.js similarity index 100% rename from src/plugins/mirador-downloaddialog/components/dialog/CanvasDownloadLinks.js rename to src/culPlugins/mirador-downloaddialog/components/dialog/CanvasDownloadLinks.js diff --git a/src/plugins/mirador-downloaddialog/components/dialog/DownloadDialogPluginArea.js b/src/culPlugins/mirador-downloaddialog/components/dialog/DownloadDialogPluginArea.js similarity index 100% rename from src/plugins/mirador-downloaddialog/components/dialog/DownloadDialogPluginArea.js rename to src/culPlugins/mirador-downloaddialog/components/dialog/DownloadDialogPluginArea.js diff --git a/src/plugins/mirador-downloaddialog/components/dialog/ImageLink.js b/src/culPlugins/mirador-downloaddialog/components/dialog/ImageLink.js similarity index 100% rename from src/plugins/mirador-downloaddialog/components/dialog/ImageLink.js rename to src/culPlugins/mirador-downloaddialog/components/dialog/ImageLink.js diff --git a/src/plugins/mirador-downloaddialog/containers/dialog/DownloadDialogPluginArea.js b/src/culPlugins/mirador-downloaddialog/containers/dialog/DownloadDialogPluginArea.js similarity index 100% rename from src/plugins/mirador-downloaddialog/containers/dialog/DownloadDialogPluginArea.js rename to src/culPlugins/mirador-downloaddialog/containers/dialog/DownloadDialogPluginArea.js diff --git a/src/plugins/mirador-downloaddialog/index.js b/src/culPlugins/mirador-downloaddialog/index.js similarity index 100% rename from src/plugins/mirador-downloaddialog/index.js rename to src/culPlugins/mirador-downloaddialog/index.js diff --git a/src/plugins/mirador-downloaddialog/locales.js b/src/culPlugins/mirador-downloaddialog/locales.js similarity index 100% rename from src/plugins/mirador-downloaddialog/locales.js rename to src/culPlugins/mirador-downloaddialog/locales.js diff --git a/src/plugins/mirador-downloaddialog/state/selectors.js b/src/culPlugins/mirador-downloaddialog/state/selectors.js similarity index 100% rename from src/plugins/mirador-downloaddialog/state/selectors.js rename to src/culPlugins/mirador-downloaddialog/state/selectors.js diff --git a/src/plugins/mirador-videojs/components/VideoJS.js b/src/culPlugins/mirador-videojs/components/VideoJS.js similarity index 100% rename from src/plugins/mirador-videojs/components/VideoJS.js rename to src/culPlugins/mirador-videojs/components/VideoJS.js diff --git a/src/culPlugins/mirador-videojs/components/VideoJSAudioViewer.js b/src/culPlugins/mirador-videojs/components/VideoJSAudioViewer.js new file mode 100644 index 0000000000..1cbfae2c05 --- /dev/null +++ b/src/culPlugins/mirador-videojs/components/VideoJSAudioViewer.js @@ -0,0 +1,67 @@ +import { Component } from 'react'; +import { connect } from 'react-redux'; +import { compose } from 'redux'; +import { withTranslation } from 'react-i18next'; +import { AudioViewer } from '../../../components/AudioViewer'; +import { getConfig, getVisibleCanvasCaptions, getVisibleCanvasAudioResources } from '../../../state/selectors'; + +import { VideoJS } from './VideoJS'; +import ForbiddenComponent from '../../ForbiddenComponent'; + +/** */ +const mapStateToProps = (state, { windowId }) => ( + { + captions: getVisibleCanvasCaptions(state, { windowId }) || [], + audioOptions: getConfig(state).audioOptions, + audioResources: getVisibleCanvasAudioResources(state, { windowId }) || [], + } +); + +const enhance = compose( + withTranslation(), + connect(mapStateToProps, null), +); + +/** */ +class VideoJSAudioViewerBase extends Component { + /** */ + render() { + const { + captions, audioOptions, audioResources, + } = this.props; + + const debugResources = audioResources.filter(audio => audio.id && audio.getFormat()).map( + audio => ({ src: audio.id, type: audio.getFormat() }), + ); + console.log({audioResources, debugResources}); + const videoJsOptions = { + autoplay: false, + controlBar: { + remainingTimeDisplay: false, + }, + controls: true, + fluid: true, + playbackRates: [0.5, 1, 1.5, 2], + responsive: true, + sources: audioResources.filter(audio => audio.id && audio.getFormat()).map( + audio => ({ src: audio.id, type: audio.getFormat() }), + ), + tracks: captions.filter(caption => caption.id).map(caption => ({ kind: (caption.kind || 'captions'), src: caption.id })), + }; + + console.log({ state: this.state, videoJsOptions }); + if (videoJsOptions.sources.length === 0) return ; + return ( +
+ +
+ ); + } +} + +export const VideoJSAudioViewer = enhance(VideoJSAudioViewerBase); + +/** */ +export default function ({ _targetComponent, targetProps }) { + return ; +} diff --git a/src/plugins/mirador-videojs/components/VideoJSViewer.js b/src/culPlugins/mirador-videojs/components/VideoJSViewer.js similarity index 96% rename from src/plugins/mirador-videojs/components/VideoJSViewer.js rename to src/culPlugins/mirador-videojs/components/VideoJSViewer.js index ac32cdd547..d1ce4e96bc 100644 --- a/src/plugins/mirador-videojs/components/VideoJSViewer.js +++ b/src/culPlugins/mirador-videojs/components/VideoJSViewer.js @@ -47,7 +47,7 @@ class VideoJSViewerBase extends VideoViewer { console.log({ state: this.state, videoJsOptions }); if (videoJsOptions.sources.length === 0) return ; return ( -
+
); diff --git a/src/culPlugins/mirador-videojs/index.js b/src/culPlugins/mirador-videojs/index.js new file mode 100644 index 0000000000..2450e8397c --- /dev/null +++ b/src/culPlugins/mirador-videojs/index.js @@ -0,0 +1,19 @@ +import VideoJSAudioViewerComponent from './components/VideoJSAudioViewer'; +import VideoJSViewerComponent from './components/VideoJSViewer'; + +export default [ + { + component: VideoJSAudioViewerComponent, + mode: 'wrap', + name: 'VideoJSAudioViewer', + target: 'AudioViewer', + }, + { + component: VideoJSViewerComponent, + mode: 'wrap', + name: 'VideoJSViewer', + target: 'VideoViewer', + }, +]; + +export { VideoJSAudioViewerComponent, VideoJSViewerComponent }; diff --git a/src/plugins/mirador-viewXml/MiradorViewXmlDialog.js b/src/culPlugins/mirador-viewXml/MiradorViewXmlDialog.js similarity index 100% rename from src/plugins/mirador-viewXml/MiradorViewXmlDialog.js rename to src/culPlugins/mirador-viewXml/MiradorViewXmlDialog.js diff --git a/src/plugins/mirador-viewXml/MiradorViewXmlPlugin.js b/src/culPlugins/mirador-viewXml/MiradorViewXmlPlugin.js similarity index 100% rename from src/plugins/mirador-viewXml/MiradorViewXmlPlugin.js rename to src/culPlugins/mirador-viewXml/MiradorViewXmlPlugin.js diff --git a/src/plugins/mirador-viewXml/index.js b/src/culPlugins/mirador-viewXml/index.js similarity index 100% rename from src/plugins/mirador-viewXml/index.js rename to src/culPlugins/mirador-viewXml/index.js diff --git a/src/plugins/mirador-viewXml/state/selectors.js b/src/culPlugins/mirador-viewXml/state/selectors.js similarity index 100% rename from src/plugins/mirador-viewXml/state/selectors.js rename to src/culPlugins/mirador-viewXml/state/selectors.js diff --git a/src/index.js b/src/index.js index 84091415de..c2760b6d2d 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,9 @@ import init from './init'; import state from './state'; +import culPlugins from './culPlugins'; export default { ...init, ...state, + culPlugins, }; diff --git a/src/init.js b/src/init.js index 1604375329..4a39f5be12 100644 --- a/src/init.js +++ b/src/init.js @@ -1,5 +1,4 @@ import MiradorViewer from './lib/MiradorViewer'; - /** * Default Mirador instantiation */ diff --git a/src/plugins/mirador-videojs/index.js b/src/plugins/mirador-videojs/index.js deleted file mode 100644 index b958acfd8d..0000000000 --- a/src/plugins/mirador-videojs/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import VideoJSViewerComponent from './components/VideoJSViewer'; - -export default [ - { - component: VideoJSViewerComponent, - mode: 'wrap', - name: 'VideoJSViewer', - target: 'VideoViewer', - }, -]; - -export { VideoJSViewerComponent }; diff --git a/webpack.config.js b/webpack.config.js index 6e3c1e838f..e6510105af 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -21,6 +21,20 @@ const baseConfig = mode => ({ }, test: /\.(js|mjs|jsx)$/, }, + { + include: path.resolve(fs.realpathSync(process.cwd()), '.'), // CRL + test: /\.(css|scss|sass)$/, + use: [ + 'style-loader', + 'css-loader', + { + loader: require.resolve('sass-loader'), + options: { + sourceMap: (mode !== 'production'), + }, + }, + ], + }, ], }, optimization: { From da904131465ebfa3d72c01bda6ecaed275c565f3 Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Thu, 7 Mar 2024 13:00:34 -0500 Subject: [PATCH 3/9] COLUMBIA: bump artifact size in bundlewatch to accommodate videojs --- bundlewatch.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundlewatch.config.json b/bundlewatch.config.json index 0ac8112952..23db3232be 100644 --- a/bundlewatch.config.json +++ b/bundlewatch.config.json @@ -2,7 +2,7 @@ "files": [ { "path": "dist/mirador.min.js", - "maxSize": "625 KB" + "maxSize": "850 KB" } ] } From 78fe4d565585feffaf0dca49c953cb065d7a0e2e Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Thu, 7 Mar 2024 16:14:16 -0500 Subject: [PATCH 4/9] COLUMBIA: bump fork artifact version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cff865b6e9..19467184fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@columbia-libraries/mirador", - "version": "3.3.1-3789.2", + "version": "3.3.1-3789.4", "description": "An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.", "main": "dist/cjs/src/index.js", "module": "dist/es/src/index.js", From a4b8cbdcb79109d7e73aec9e97d2e3e81488579d Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 10:45:54 -0400 Subject: [PATCH 5/9] COLUMBIA: update CUL AV example page --- __tests__/integration/mirador/cul.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/__tests__/integration/mirador/cul.html b/__tests__/integration/mirador/cul.html index f5b5f2361a..e05f2ff029 100644 --- a/__tests__/integration/mirador/cul.html +++ b/__tests__/integration/mirador/cul.html @@ -17,8 +17,7 @@ transitions: window.location.port === '4488' ? { create: () => 'none' } : {}, }, windows: [{ - manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D8F76D6D/manifest', - canvasId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D8F76D6D/canvas/10.7916/D8FN1932', + manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-346v-m088/manifest', thumbnailNavigationPosition: 'far-bottom', }], catalog: [ @@ -34,7 +33,7 @@ // a resource with an AV canvas { manifestId: "https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D8698MF9/manifest", provider: 'Public AV canvas examples'}, // a resource with a limited-access AV canvas - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-cfya-fv28/manifest', provider: 'Columbia community AV canvas examples'}, + { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-346v-m088/manifest', provider: 'Columbia community AV canvas examples'}, { manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843', provider: 'Other Organization' }, ] }, From a0641b46b4fda8c93e895614acdde36085211fe8 Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 10:51:20 -0400 Subject: [PATCH 6/9] REMOVE: IIIF example manifest for auth --- __tests__/integration/mirador/cul.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/__tests__/integration/mirador/cul.html b/__tests__/integration/mirador/cul.html index e05f2ff029..5ce6b1cc04 100644 --- a/__tests__/integration/mirador/cul.html +++ b/__tests__/integration/mirador/cul.html @@ -18,7 +18,11 @@ }, windows: [{ manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-346v-m088/manifest', - thumbnailNavigationPosition: 'far-bottom', + thumbnailNavigationPosition: 'far-bottom' + }, + { + manifestId: 'https://iiifauth.digtest.co.uk/manifest/01_standard-login', + thumbnailNavigationPosition: 'far-bottom' }], catalog: [ // a resource with an image canvas From 4309da6b70172d0302f468db75217c7920ef1b5b Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 11:12:33 -0400 Subject: [PATCH 7/9] REMOVE: webpack ssl config --- webpack.config.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index e6510105af..b176936f82 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -85,7 +85,14 @@ module.exports = (env, options) => { ...config, devServer: { hot: true, - port: 4444, + host: 'dev.local', + server: { + type: 'https', + options: { + key: fs.readFileSync("./local/dev.local.key"), + cert: fs.readFileSync("./local/dev.local.crt") + } + }, static: [ './__tests__/integration/mirador', './__tests__/fixtures', From ccba34e12e6bc9727416f1ad77f65d82a251ee7f Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 21:08:47 -0400 Subject: [PATCH 8/9] REMOVE: IIIF example manifest for auth --- __tests__/integration/mirador/authz.html | 24 ++++++++++++++++++++++++ __tests__/integration/mirador/cul.html | 18 +++++++----------- 2 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 __tests__/integration/mirador/authz.html diff --git a/__tests__/integration/mirador/authz.html b/__tests__/integration/mirador/authz.html new file mode 100644 index 0000000000..caec359a05 --- /dev/null +++ b/__tests__/integration/mirador/authz.html @@ -0,0 +1,24 @@ + + + + + + + Mirador + + + +
+ + + + diff --git a/__tests__/integration/mirador/cul.html b/__tests__/integration/mirador/cul.html index 5ce6b1cc04..ca99410887 100644 --- a/__tests__/integration/mirador/cul.html +++ b/__tests__/integration/mirador/cul.html @@ -17,27 +17,23 @@ transitions: window.location.port === '4488' ? { create: () => 'none' } : {}, }, windows: [{ - manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-346v-m088/manifest', - thumbnailNavigationPosition: 'far-bottom' - }, - { - manifestId: 'https://iiifauth.digtest.co.uk/manifest/01_standard-login', + manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/d8-346v-m088/manifest', thumbnailNavigationPosition: 'far-bottom' }], catalog: [ // a resource with an image canvas - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D8F76D6D/manifest', + { manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/D8F76D6D/manifest', provider: 'Basic image examples' }, // a resource with multiple paginated image canvases - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-bjct-g075/manifest', provider: 'Paginated images examples' }, + { manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/d8-bjct-g075/manifest', provider: 'Paginated images examples' }, // a resource with a PDF canvas - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/n8qs-6964/manifest', provider: 'Public PDF examples'}, + { manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/n8qs-6964/manifest', provider: 'Public PDF examples'}, // a resource with a limited-access PDF canvas - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D88D13C6/manifest', provider: 'Columbia community PDF examples'}, + { manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/D88D13C6/manifest', provider: 'Columbia community PDF examples'}, // a resource with an AV canvas - { manifestId: "https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/D8698MF9/manifest", provider: 'Public AV canvas examples'}, + { manifestId: "https://www.dev.local:3000/iiif/3/presentation/10.7916/D8698MF9/manifest", provider: 'Public AV canvas examples'}, // a resource with a limited-access AV canvas - { manifestId: 'https://dlc-staging.library.columbia.edu/iiif/3/presentation/10.7916/d8-346v-m088/manifest', provider: 'Columbia community AV canvas examples'}, + { manifestId: 'https://www.dev.local:3000/iiif/3/presentation/10.7916/d8-346v-m088/manifest', provider: 'Columbia community AV canvas examples'}, { manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843', provider: 'Other Organization' }, ] }, From f75e2a89a476d672073e2f1daf4c39b385492e1a Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Sun, 10 Mar 2024 21:13:08 -0400 Subject: [PATCH 9/9] REMOVE: webpack ssl config --- webpack.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index b176936f82..96f3e507c2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -89,8 +89,8 @@ module.exports = (env, options) => { server: { type: 'https', options: { - key: fs.readFileSync("./local/dev.local.key"), - cert: fs.readFileSync("./local/dev.local.crt") + key: fs.readFileSync("/Users/benjamin/local-ssl/dev.local.key"), + cert: fs.readFileSync("/Users/benjamin/local-ssl/dev.local.crt") } }, static: [