cspace-ui
Version:
CollectionSpace user interface for browsers
125 lines (120 loc) • 4.87 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactDom = 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(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* 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);
}
};
exports.default = _default;
;