@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
166 lines • 4.36 kB
JavaScript
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);
}
});