@stenajs-webui/redux
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -16,3 +16,3 @@ import { Reducer } from "redux"; | ||
export declare type ModifiedFieldStateSelector<TStoreState> = (state: TStoreState) => ModifiedFieldState; | ||
declare type ModifiedStateReducer = Reducer<ModifiedFieldState, ModifiedFieldAction>; | ||
export declare type ModifiedStateReducer = Reducer<ModifiedFieldState, ModifiedFieldAction>; | ||
export interface ModifiedFieldRedux<TStoreState> { | ||
@@ -24,2 +24,1 @@ reducer: ModifiedStateReducer; | ||
export declare const createModifiedFieldRedux: <TStoreState>(reducerId: string, stateSelector: ModifiedFieldStateSelector<TStoreState>) => ModifiedFieldRedux<TStoreState>; | ||
export {}; |
@@ -7,2 +7,6 @@ export * from "./common/EntityWithId"; | ||
export * from "./features/commit-reducer/state"; | ||
export * from "./features/entity-list-reducer/entity-list-actions"; | ||
export * from "./features/entity-list-reducer/entity-list-action-creators"; | ||
export * from "./features/entity-list-reducer/entity-list-reducer"; | ||
export * from "./features/entity-list-reducer/entity-list-selectors"; | ||
export * from "./features/entity-reducer/entity-actions"; | ||
@@ -9,0 +13,0 @@ export * from "./features/entity-reducer/entity-reducer"; |
@@ -45,2 +45,10 @@ var createCommitReducerActions = function (id) { | ||
function __spreadArrays() { | ||
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; | ||
} | ||
var createCommitReducer = function (id, initialState) { return function (state, action) { | ||
@@ -74,2 +82,124 @@ if (state === void 0) { state = initialState; } | ||
var createEntityListActions = function (reducerId) { | ||
return { | ||
addAtEnd: function (entity) { return ({ type: "ENTITY_LIST:ADD_AT_END", reducerId: reducerId, entity: entity }); }, | ||
addAtStart: function (entity) { return ({ | ||
entity: entity, | ||
reducerId: reducerId, | ||
type: "ENTITY_LIST:ADD_AT_START" | ||
}); }, | ||
clearList: function () { return ({ type: "ENTITY_LIST:CLEAR_LIST", reducerId: reducerId }); }, | ||
removeFirst: function () { return ({ type: "ENTITY_LIST:REMOVE_FIRST", reducerId: reducerId }); }, | ||
removeLast: function () { return ({ type: "ENTITY_LIST:REMOVE_LAST", reducerId: reducerId }); }, | ||
removeAtIndex: function (index) { return ({ | ||
type: "ENTITY_LIST:REMOVE_AT_INDEX", | ||
index: index, | ||
reducerId: reducerId | ||
}); }, | ||
removeByFieldMatch: function (fields) { return ({ | ||
type: "ENTITY_LIST:REMOVE_BY_FIELD_MATCH", | ||
fields: fields, | ||
reducerId: reducerId | ||
}); }, | ||
remove: function (entity) { return ({ type: "ENTITY_LIST:REMOVE", reducerId: reducerId, entity: entity }); }, | ||
setList: function (list) { return ({ type: "ENTITY_LIST:SET_LIST", reducerId: reducerId, list: list }); }, | ||
toggle: function (entity) { return ({ type: "ENTITY_LIST:TOGGLE", reducerId: reducerId, entity: entity }); } | ||
}; | ||
}; | ||
var fieldsMatch = function (entity, fields) { | ||
var keys = Object.keys(fields); | ||
if (keys.length === 0) { | ||
return false; | ||
} | ||
for (var i = 0; i < keys.length; i++) { | ||
var key = keys[i]; | ||
if (entity[key] !== fields[key]) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}; | ||
var INITIAL_STATE = { | ||
list: [] | ||
}; | ||
var createEntityListReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE; } | ||
if (action.reducerId !== reducerId) { | ||
return state; | ||
} | ||
switch (action.type) { | ||
case "ENTITY_LIST:SET_LIST": { | ||
var list = action.list; | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:CLEAR_LIST": { | ||
return __assign(__assign({}, state), { list: [] }); | ||
} | ||
case "ENTITY_LIST:ADD_AT_END": { | ||
var entity = action.entity; | ||
return __assign(__assign({}, state), { list: __spreadArrays(state.list, [entity]) }); | ||
} | ||
case "ENTITY_LIST:ADD_AT_START": { | ||
var entity = action.entity; | ||
return __assign(__assign({}, state), { list: __spreadArrays([entity], state.list) }); | ||
} | ||
case "ENTITY_LIST:REMOVE_FIRST": { | ||
if (state.list.length === 0) { | ||
throw new Error("Cannot remove, list is empty."); | ||
} | ||
var _a = state.list, list = _a.slice(1); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_LAST": { | ||
if (state.list.length === 0) { | ||
throw new Error("Cannot remove, list is empty."); | ||
} | ||
var list = __spreadArrays(state.list); | ||
list.pop(); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_AT_INDEX": { | ||
var index = action.index; | ||
if (index < 0) { | ||
throw new Error("Index is lower than 0."); | ||
} | ||
if (index >= state.list.length) { | ||
throw new Error("Index is outside of list bounds."); | ||
} | ||
var list = __spreadArrays(state.list); | ||
list.splice(index, 1); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_BY_FIELD_MATCH": { | ||
var fields_1 = action.fields; | ||
return __assign(__assign({}, state), { list: state.list.filter(function (item) { return !fieldsMatch(item, fields_1); }) }); | ||
} | ||
case "ENTITY_LIST:REMOVE": { | ||
var entity_1 = action.entity; | ||
return __assign(__assign({}, state), { list: state.list.filter(function (item) { return item !== entity_1; }) }); | ||
} | ||
case "ENTITY_LIST:TOGGLE": { | ||
var entity_2 = action.entity; | ||
var index = state.list.findIndex(function (item) { return item === entity_2 || fieldsMatch(item, entity_2); }); | ||
if (index >= 0) { | ||
var list = __spreadArrays(state.list); | ||
list.splice(index, index); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
else { | ||
return __assign(__assign({}, state), { list: __spreadArrays(state.list, [entity_2]) }); | ||
} | ||
} | ||
default: | ||
return state; | ||
} | ||
}; }; | ||
var createEntityListSelectors = function (stateSelector) { return ({ | ||
getState: stateSelector, | ||
getList: function (store) { return stateSelector(store).list; } | ||
}); }; | ||
var createEntityActions = function (reducerId) { return ({ | ||
@@ -206,5 +336,5 @@ setEntity: function (entity) { return ({ | ||
}); }; | ||
var INITIAL_STATE = createSelectedIdsReducerInitialState(); | ||
var INITIAL_STATE$1 = createSelectedIdsReducerInitialState(); | ||
var createSelectedIdsReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE; } | ||
if (state === void 0) { state = INITIAL_STATE$1; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -242,7 +372,7 @@ return state; | ||
var INITIAL_STATE$1 = { | ||
var INITIAL_STATE$2 = { | ||
ids: undefined | ||
}; | ||
var createSortOrderByIdReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE$1; } | ||
if (state === void 0) { state = INITIAL_STATE$2; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -294,3 +424,3 @@ return state; | ||
}; | ||
var INITIAL_STATE$2 = { | ||
var INITIAL_STATE$3 = { | ||
sortBy: undefined, | ||
@@ -300,3 +430,3 @@ desc: false | ||
var createSortOrderReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE$2; } | ||
if (state === void 0) { state = INITIAL_STATE$3; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -336,3 +466,3 @@ return state; | ||
export { createCommitReducer, createCommitReducerActions, createCommitReducerSelectors, createEntityActions, createEntityByIdActions, createEntityByIdReducer, createEntityByIdSelectors, createEntityCrudStatusActions, createEntityCrudStatusReducer, createEntityCrudStatusRedux, createEntityCrudStatusSelectors, createEntityReducer, createEntitySelectors, createModifiedFieldRedux, createSelectedIdsActions, createSelectedIdsReducer, createSelectedIdsReducerInitialState, createSelectedIdsSelectors, createSortOrderActions, createSortOrderByIdActions, createSortOrderByIdReducer, createSortOrderByIdSelectors, createSortOrderReducer, createSortOrderReducerInitialState, createSortOrderSelectors, entityByIdInitialState }; | ||
export { createCommitReducer, createCommitReducerActions, createCommitReducerSelectors, createEntityActions, createEntityByIdActions, createEntityByIdReducer, createEntityByIdSelectors, createEntityCrudStatusActions, createEntityCrudStatusReducer, createEntityCrudStatusRedux, createEntityCrudStatusSelectors, createEntityListActions, createEntityListReducer, createEntityListSelectors, createEntityReducer, createEntitySelectors, createModifiedFieldRedux, createSelectedIdsActions, createSelectedIdsReducer, createSelectedIdsReducerInitialState, createSelectedIdsSelectors, createSortOrderActions, createSortOrderByIdActions, createSortOrderByIdReducer, createSortOrderByIdSelectors, createSortOrderReducer, createSortOrderReducerInitialState, createSortOrderSelectors, entityByIdInitialState }; | ||
//# sourceMappingURL=index.es.js.map |
@@ -49,2 +49,10 @@ 'use strict'; | ||
function __spreadArrays() { | ||
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; | ||
} | ||
var createCommitReducer = function (id, initialState) { return function (state, action) { | ||
@@ -78,2 +86,124 @@ if (state === void 0) { state = initialState; } | ||
var createEntityListActions = function (reducerId) { | ||
return { | ||
addAtEnd: function (entity) { return ({ type: "ENTITY_LIST:ADD_AT_END", reducerId: reducerId, entity: entity }); }, | ||
addAtStart: function (entity) { return ({ | ||
entity: entity, | ||
reducerId: reducerId, | ||
type: "ENTITY_LIST:ADD_AT_START" | ||
}); }, | ||
clearList: function () { return ({ type: "ENTITY_LIST:CLEAR_LIST", reducerId: reducerId }); }, | ||
removeFirst: function () { return ({ type: "ENTITY_LIST:REMOVE_FIRST", reducerId: reducerId }); }, | ||
removeLast: function () { return ({ type: "ENTITY_LIST:REMOVE_LAST", reducerId: reducerId }); }, | ||
removeAtIndex: function (index) { return ({ | ||
type: "ENTITY_LIST:REMOVE_AT_INDEX", | ||
index: index, | ||
reducerId: reducerId | ||
}); }, | ||
removeByFieldMatch: function (fields) { return ({ | ||
type: "ENTITY_LIST:REMOVE_BY_FIELD_MATCH", | ||
fields: fields, | ||
reducerId: reducerId | ||
}); }, | ||
remove: function (entity) { return ({ type: "ENTITY_LIST:REMOVE", reducerId: reducerId, entity: entity }); }, | ||
setList: function (list) { return ({ type: "ENTITY_LIST:SET_LIST", reducerId: reducerId, list: list }); }, | ||
toggle: function (entity) { return ({ type: "ENTITY_LIST:TOGGLE", reducerId: reducerId, entity: entity }); } | ||
}; | ||
}; | ||
var fieldsMatch = function (entity, fields) { | ||
var keys = Object.keys(fields); | ||
if (keys.length === 0) { | ||
return false; | ||
} | ||
for (var i = 0; i < keys.length; i++) { | ||
var key = keys[i]; | ||
if (entity[key] !== fields[key]) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}; | ||
var INITIAL_STATE = { | ||
list: [] | ||
}; | ||
var createEntityListReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE; } | ||
if (action.reducerId !== reducerId) { | ||
return state; | ||
} | ||
switch (action.type) { | ||
case "ENTITY_LIST:SET_LIST": { | ||
var list = action.list; | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:CLEAR_LIST": { | ||
return __assign(__assign({}, state), { list: [] }); | ||
} | ||
case "ENTITY_LIST:ADD_AT_END": { | ||
var entity = action.entity; | ||
return __assign(__assign({}, state), { list: __spreadArrays(state.list, [entity]) }); | ||
} | ||
case "ENTITY_LIST:ADD_AT_START": { | ||
var entity = action.entity; | ||
return __assign(__assign({}, state), { list: __spreadArrays([entity], state.list) }); | ||
} | ||
case "ENTITY_LIST:REMOVE_FIRST": { | ||
if (state.list.length === 0) { | ||
throw new Error("Cannot remove, list is empty."); | ||
} | ||
var _a = state.list, list = _a.slice(1); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_LAST": { | ||
if (state.list.length === 0) { | ||
throw new Error("Cannot remove, list is empty."); | ||
} | ||
var list = __spreadArrays(state.list); | ||
list.pop(); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_AT_INDEX": { | ||
var index = action.index; | ||
if (index < 0) { | ||
throw new Error("Index is lower than 0."); | ||
} | ||
if (index >= state.list.length) { | ||
throw new Error("Index is outside of list bounds."); | ||
} | ||
var list = __spreadArrays(state.list); | ||
list.splice(index, 1); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
case "ENTITY_LIST:REMOVE_BY_FIELD_MATCH": { | ||
var fields_1 = action.fields; | ||
return __assign(__assign({}, state), { list: state.list.filter(function (item) { return !fieldsMatch(item, fields_1); }) }); | ||
} | ||
case "ENTITY_LIST:REMOVE": { | ||
var entity_1 = action.entity; | ||
return __assign(__assign({}, state), { list: state.list.filter(function (item) { return item !== entity_1; }) }); | ||
} | ||
case "ENTITY_LIST:TOGGLE": { | ||
var entity_2 = action.entity; | ||
var index = state.list.findIndex(function (item) { return item === entity_2 || fieldsMatch(item, entity_2); }); | ||
if (index >= 0) { | ||
var list = __spreadArrays(state.list); | ||
list.splice(index, index); | ||
return __assign(__assign({}, state), { list: list }); | ||
} | ||
else { | ||
return __assign(__assign({}, state), { list: __spreadArrays(state.list, [entity_2]) }); | ||
} | ||
} | ||
default: | ||
return state; | ||
} | ||
}; }; | ||
var createEntityListSelectors = function (stateSelector) { return ({ | ||
getState: stateSelector, | ||
getList: function (store) { return stateSelector(store).list; } | ||
}); }; | ||
var createEntityActions = function (reducerId) { return ({ | ||
@@ -210,5 +340,5 @@ setEntity: function (entity) { return ({ | ||
}); }; | ||
var INITIAL_STATE = createSelectedIdsReducerInitialState(); | ||
var INITIAL_STATE$1 = createSelectedIdsReducerInitialState(); | ||
var createSelectedIdsReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE; } | ||
if (state === void 0) { state = INITIAL_STATE$1; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -246,7 +376,7 @@ return state; | ||
var INITIAL_STATE$1 = { | ||
var INITIAL_STATE$2 = { | ||
ids: undefined | ||
}; | ||
var createSortOrderByIdReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE$1; } | ||
if (state === void 0) { state = INITIAL_STATE$2; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -298,3 +428,3 @@ return state; | ||
}; | ||
var INITIAL_STATE$2 = { | ||
var INITIAL_STATE$3 = { | ||
sortBy: undefined, | ||
@@ -304,3 +434,3 @@ desc: false | ||
var createSortOrderReducer = function (reducerId) { return function (state, action) { | ||
if (state === void 0) { state = INITIAL_STATE$2; } | ||
if (state === void 0) { state = INITIAL_STATE$3; } | ||
if (action.reducerId !== reducerId) { | ||
@@ -351,2 +481,5 @@ return state; | ||
exports.createEntityCrudStatusSelectors = createEntityCrudStatusSelectors; | ||
exports.createEntityListActions = createEntityListActions; | ||
exports.createEntityListReducer = createEntityListReducer; | ||
exports.createEntityListSelectors = createEntityListSelectors; | ||
exports.createEntityReducer = createEntityReducer; | ||
@@ -353,0 +486,0 @@ exports.createEntitySelectors = createEntitySelectors; |
{ | ||
"name": "@stenajs-webui/redux", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "", | ||
@@ -50,3 +50,3 @@ "author": "mattias800", | ||
], | ||
"gitHead": "02d14febb8aac11d0e26e09cfe7f0b6e5e485a61" | ||
"gitHead": "7ca5bb17e9afa5fbf54c2b466f75a1f8a6a71e88" | ||
} |
@@ -18,2 +18,6 @@ # stenajs-webui/redux | ||
### entity-list-reducer | ||
This reducer stores a list and provides actions for manipulating the items in the list. | ||
### entity-crud-status-reducer | ||
@@ -20,0 +24,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
137914
44
1274
106