UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

166 lines 4.36 kB
const queue = (state, action) => { return { ...state, requests: state.requests.concat(action.requests) }; }; const resolve = (state, action) => { const requests = state.requests.reduce((requests, request) => { if (request.url !== action.url) { requests.push(request); } return requests; }, []); return { ...state, requests }; }; const register = (state, action) => { return { ...state, cards: state.cards.filter(card => card.pos !== action.info.pos).concat(action.info) }; }; const removeCard = (state, action) => { return { ...state, cards: state.cards.filter(card => card.id !== action.info.id) }; }; const setProvider = (state, action) => { return { ...state, provider: action.provider }; }; const setCardLayout = (state, action) => { return { ...state, layout: action.layout }; }; const setDatasourceTableRef = (state, action) => { return { ...state, datasourceTableRef: action.datasourceTableRef }; }; const setResolvedToolbarAttributes = (state, action) => { return { ...state, resolvedToolbarAttributesByUrl: { ...state.resolvedToolbarAttributesByUrl, [action.url]: action.attributes } }; }; const setCardLayoutDatasourceTableRef = (state, action) => { return { ...state, datasourceTableRef: action.datasourceTableRef, layout: action.layout }; }; const registerEvents = (state, action) => { return { ...state, smartLinkEvents: action.smartLinkEvents }; }; const setLinkToolbar = (state, action) => { return { ...state, showLinkingToolbar: action.type === 'SHOW_LINK_TOOLBAR' }; }; const showDatasourceModal = (state, action) => { return { ...state, showDatasourceModal: true, datasourceModalType: action.type === 'SHOW_DATASOURCE_MODAL' ? action.modalType : undefined }; }; const hideDatasourceModal = state => { return { ...state, showDatasourceModal: false, datasourceModalType: undefined }; }; const clearOverlayCandidate = state => { return { ...state, overlayCandidatePosition: undefined }; }; const registerRemoveOverlayOnInsertedLink = (state, action) => { return { ...state, cards: action.info ? state.cards.filter(card => { var _action$info; return card.pos !== ((_action$info = action.info) === null || _action$info === void 0 ? void 0 : _action$info.pos); }).concat(action.info) : state.cards, removeOverlay: action.callback }; }; const setDatasourceStash = (state, action) => { return { ...state, datasourceStash: { ...state.datasourceStash, [action.datasourceStash.url]: { views: action.datasourceStash.views } } }; }; const removeDatasourceStash = (state, action) => { const { [action.url]: _, ...datasourceStash } = state.datasourceStash; return { ...state, datasourceStash }; }; export default ((state, action) => { switch (action.type) { case 'QUEUE': return queue(state, action); case 'SET_PROVIDER': return setProvider(state, action); case 'RESOLVE': return resolve(state, action); case 'REGISTER': return register(state, action); case 'REMOVE_CARD': return removeCard(state, action); case 'REGISTER_EVENTS': return registerEvents(state, action); case 'SET_DATASOURCE_TABLE_REF': return setDatasourceTableRef(state, action); case 'SET_RESOLVED_TOOLBAR_ATTRIBUTES': return setResolvedToolbarAttributes(state, action); case 'SET_CARD_LAYOUT': return setCardLayout(state, action); case 'SET_CARD_LAYOUT_AND_DATASOURCE_TABLE_REF': return setCardLayoutDatasourceTableRef(state, action); case 'SHOW_LINK_TOOLBAR': case 'HIDE_LINK_TOOLBAR': return setLinkToolbar(state, action); case 'SHOW_DATASOURCE_MODAL': return showDatasourceModal(state, action); case 'HIDE_DATASOURCE_MODAL': return hideDatasourceModal(state); case 'CLEAR_OVERLAY_CANDIDATE': return clearOverlayCandidate(state); case 'REGISTER_REMOVE_OVERLAY_ON_INSERTED_LINK': return registerRemoveOverlayOnInsertedLink(state, action); case 'SET_DATASOURCE_STASH': return setDatasourceStash(state, action); case 'REMOVE_DATASOURCE_STASH': return removeDatasourceStash(state, action); } });