ukelli-ui
Version:
Base on React's UI lib. Make frontend's dev simpler and faster.
111 lines (110 loc) • 4.71 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
import createStore from 'unistore';
import { RemoveArrayItem } from 'basic-helper';
var DefaultWindowManagerState = {
minSecQueue: [],
sectionsQueue: [],
sectionsList: {},
};
var windowManagerStore = createStore(DefaultWindowManagerState);
var windowManagerActions = function (store) { return ({
closeAllWindow: function () {
store.setState(__assign({}, DefaultWindowManagerState));
},
closeWindow: function (_a, sectionId) {
var sectionsList = _a.sectionsList, sectionsQueue = _a.sectionsQueue, minSecQueue = _a.minSecQueue;
if (!sectionId)
return;
var nextSectionList = sectionsList;
var nextSectionQueue = RemoveArrayItem(sectionsQueue, sectionId);
delete nextSectionList[sectionId];
store.setState({
sectionsList: nextSectionList,
sectionsQueue: nextSectionQueue,
minSecQueue: RemoveArrayItem(minSecQueue, sectionId)
});
},
openWindow: function (_a, modalConfig) {
var sectionsList = _a.sectionsList, sectionsQueue = _a.sectionsQueue, minSecQueue = _a.minSecQueue;
var sectionId = modalConfig.id;
var nextListState = Object.assign({}, sectionsList);
var hasCurrSection = !!nextListState[sectionId];
nextListState[sectionId] = Object.assign({}, nextListState[sectionId], modalConfig, {
isMinimize: false
});
store.setState({
sectionsList: nextListState,
sectionsQueue: hasCurrSection ? sectionsQueue : __spreadArrays([sectionId], sectionsQueue),
minSecQueue: RemoveArrayItem(minSecQueue, sectionId)
});
},
selectWindow: function (_a, sectionId) {
var sectionsQueue = _a.sectionsQueue, sectionsList = _a.sectionsList, minSecQueue = _a.minSecQueue;
if (!sectionId)
return;
var nextSectionQueue = __spreadArrays(sectionsQueue);
var nextSectionList = sectionsList;
var selectedCodeIdx = nextSectionQueue.indexOf(sectionId);
var nextMinSecQueue = RemoveArrayItem(minSecQueue, sectionId);
if (!nextSectionList[sectionId])
return;
nextSectionList[sectionId] = Object.assign({}, nextSectionList[sectionId], {
isMinimize: false
});
nextSectionQueue.splice(selectedCodeIdx, 1);
nextSectionQueue = [sectionId].concat(nextSectionQueue);
store.setState({
sectionsList: nextSectionList,
sectionsQueue: nextSectionQueue,
minSecQueue: nextMinSecQueue
});
},
minimizeWindow: function (_a, sectionId) {
var minSecQueue = _a.minSecQueue, sectionsQueue = _a.sectionsQueue, sectionsList = _a.sectionsList;
if (!sectionId)
return;
var nextSectionQueue = __spreadArrays(sectionsQueue);
var nextMinSecQueue = __spreadArrays(minSecQueue);
var nextSectionList = Object.assign({}, sectionsList);
var displayingQueue = __spreadArrays(nextSectionQueue);
var miniArr = [sectionId].concat(nextMinSecQueue);
miniArr = miniArr.deduplication();
nextSectionList[sectionId] = Object.assign({}, nextSectionList[sectionId], {
isMinimize: true,
});
miniArr.forEach(function (minItem) {
var currIdx = displayingQueue.indexOf(minItem);
if (currIdx !== -1)
displayingQueue.splice(currIdx, 1);
});
// nextSectionQueue = displayingQueue;
if (displayingQueue.length !== 0) {
// this.selectWindow(displayingQueue[0]);
// nextSectionList =
}
nextSectionQueue = RemoveArrayItem(nextSectionQueue, sectionId).concat(sectionId);
store.setState({
sectionsList: nextSectionList,
sectionsQueue: nextSectionQueue,
minSecQueue: miniArr
});
}
}); };
export { windowManagerActions, windowManagerStore, DefaultWindowManagerState };