UNPKG

cspace-ui

Version:
140 lines (134 loc) 6.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireWildcard(require("react-dom")); var _redux = require("redux"); var _reduxThunk = _interopRequireDefault(require("redux-thunk")); var _reactIntl = require("react-intl"); var _en = _interopRequireDefault(require("react-intl/locale-data/en")); var _warning = _interopRequireDefault(require("warning")); var _cspaceLayout = require("cspace-layout"); var _collectionspace = _interopRequireDefault(require("../images/collectionspace.svg")); var _cspace = require("./actions/cspace"); var _idGenerator = require("./actions/idGenerator"); var _login = require("./actions/login"); var _optionList = require("./actions/optionList"); var _prefs = require("./actions/prefs"); var _searchOperators = require("./constants/searchOperators"); var _plugins = _interopRequireDefault(require("./plugins")); var _reducers = _interopRequireDefault(require("./reducers")); var _AppContainer = _interopRequireDefault(require("./containers/AppContainer")); var _createConfigContext = _interopRequireDefault(require("./helpers/createConfigContext")); var _configHelpers = require("./helpers/configHelpers"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /* global document, window */ const configContext = (0, _createConfigContext.default)(); const defaultConfig = (0, _configHelpers.mergeConfig)({ allowDeleteHierarchyLeaves: false, autocompleteFindDelay: 500, autocompleteMinLength: 3, basename: '', className: '', container: '#cspace', defaultAdvancedSearchBooleanOp: _searchOperators.OP_OR, defaultDropdownFilter: 'substring', defaultSearchPageSize: 20, defaultSearchPanelSize: 5, defaultUserPrefs: { panels: { collectionobject: { mediaSnapshotPanel: { collapsed: false } } } }, disableAltTerms: false, index: '/search', locale: 'en-US', logo: _collectionspace.default, mediaSnapshotSort: 'title', messages: undefined, prettyUrls: false, relationMemberPerm: 'U', serverUrl: '', showTermListStateIcon: false, structDateOptionListNames: ['dateQualifiers'], structDateVocabNames: ['dateera', 'datecertainty', 'datequalifier'], tags: { defaultGroup: { sortOrder: 0 }, nagpra: { sortOrder: 1 }, legacy: { sortOrder: 3 } }, tenantId: '1', termDeprecationEnabled: false }, { plugins: _plugins.default.map(plugin => plugin()) }, configContext); var _default = uiConfig => { const resolvedUiConfig = (0, _configHelpers.evaluatePlugin)(uiConfig, configContext); const config = (0, _configHelpers.finalizeRecordTypes)((0, _configHelpers.mergeConfig)(defaultConfig, resolvedUiConfig, configContext)); const { container, idGenerators, optionLists } = config; const mountNode = document.querySelector(container); process.env.NODE_ENV !== "production" ? (0, _warning.default)(mountNode, `No container element was found using the selector '${container}'. The CollectionSpace UI will not be rendered.`) : void 0; if (mountNode) { process.env.NODE_ENV !== "production" ? (0, _warning.default)(mountNode !== document.body, `The container element for the CollectionSpace UI found using the selector '${container}' is the document body. This may cause problems, and is not supported.`) : void 0; (0, _reactIntl.addLocaleData)([..._en.default]); const intlProvider = new _reactIntl.IntlProvider({ locale: config.locale, messages: config.messages }); const { intl } = intlProvider.getChildContext(); // eslint-disable-next-line no-underscore-dangle const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || _redux.compose; const store = (0, _redux.createStore)(_reducers.default, composeEnhancers((0, _redux.applyMiddleware)(_reduxThunk.default.withExtraArgument(intl)))); window.addEventListener('beforeunload', () => { store.dispatch((0, _prefs.savePrefs)()); }); // A callback for logins occurring in a separate window. window.onAuthCodeReceived = (authCode, authCodeRequestData) => { store.dispatch((0, _login.login)(config, authCode, authCodeRequestData)); store.dispatch((0, _login.loginWindowClosed)()); }; store.dispatch((0, _cspace.configureCSpace)(config)); store.dispatch((0, _optionList.addOptionLists)(optionLists)); store.dispatch((0, _idGenerator.addIDGenerators)(idGenerators)); store.dispatch((0, _cspace.readSystemInfo)(config)); const props = { config, store }; _cspaceLayout.Modal.setAppElement(mountNode); (0, _reactDom.render)(/*#__PURE__*/_react.default.createElement(_AppContainer.default, props), mountNode); // HMR related: https://webpack.js.org/concepts/hot-module-replacement/ if (module.hot) { module.hot.accept('./containers/AppContainer', () => { (0, _reactDom.render)(/*#__PURE__*/_react.default.createElement(_AppContainer.default, props), mountNode); }); } // Run accessibility checks in dev and log issues in console if (process.env.NODE_ENV === 'development') { (async () => { // eslint-disable-next-line import/no-extraneous-dependencies const axe = await Promise.resolve().then(() => _interopRequireWildcard(require('@axe-core/react'))); await axe.default(_react.default, _reactDom.default, 1000); })(); } } }; exports.default = _default;