@angular-architects/ngrx-toolkit 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -76
- package/esm2022/index.mjs +4 -1
- package/esm2022/lib/assertions/assertions.mjs +1 -1
- package/esm2022/lib/shared/empty.mjs +2 -0
- package/esm2022/lib/with-call-state.mjs +58 -0
- package/esm2022/lib/with-data-service.mjs +147 -0
- package/esm2022/lib/with-devtools.mjs +1 -1
- package/esm2022/lib/with-redux.mjs +1 -1
- package/esm2022/lib/with-undo-redo.mjs +93 -0
- package/fesm2022/angular-architects-ngrx-toolkit.mjs +293 -3
- package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/shared/empty.d.ts +1 -0
- package/lib/with-call-state.d.ts +55 -0
- package/lib/with-data-service.d.ts +110 -0
- package/lib/with-undo-redo.d.ts +55 -0
- package/package.json +2 -2
|
@@ -92,4 +92,4 @@ export function withRedux(redux) {
|
|
|
92
92
|
};
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQU96RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXlDOUQsTUFBTSxVQUFVLE9BQU87SUFDckIsT0FBTyxFQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUEwQjVCLFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBa0UsRUFDbEUsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1YsT0FBc0QsQ0FDckQsV0FBc0IsRUFDdEIsS0FBSyxDQUNOLENBQUM7YUFDSDtZQUNELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLGFBQWEsRUFBRTtnQkFDaEIsYUFBNkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbEU7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcs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QUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLE9BQU8sRUFBRSxnQkFBOEI7UUFDdkMsYUFBYSxFQUFFLGFBQWE7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUt2QixLQUlEO0lBSUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxZQUFZLENBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQTZDLEVBQ25ELEtBQUssQ0FBQyxPQUFvQyxFQUMxQyxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpZ25hbFN0b3JlRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMvc3JjL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zdGF0ZS1zaWduYWwnO1xuaW1wb3J0IHsgYXNzZXJ0QWN0aW9uRm5TcGVjcyB9IGZyb20gJy4vYXNzZXJ0aW9ucy9hc3NlcnRpb25zJztcbmltcG9ydCB7IGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogQWN0aW9ucyAqKi9cblxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgQWN0aW9uRm48XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEFjdGlvblBheWxvYWQgZXh0ZW5kcyBQYXlsb2FkID0gUGF5bG9hZFxuPiA9ICgocGF5bG9hZDogQWN0aW9uUGF5bG9hZCkgPT4gQWN0aW9uUGF5bG9hZCAmIHsgdHlwZTogVHlwZSB9KSAmIHtcbiAgdHlwZTogVHlwZTtcbn07XG5cbnR5cGUgQWN0aW9uRm5zID0gUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25zRm5TcGVjcyA9IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xuXG50eXBlIEFjdGlvbkZuQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0ge1xuICBbQWN0aW9uTmFtZSBpbiBrZXlvZiBTcGVjXTogKChcbiAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdXG4gICkgPT4gU3BlY1tBY3Rpb25OYW1lXSAmIHsgdHlwZTogQWN0aW9uTmFtZSB9KSAmIHsgdHlwZTogQWN0aW9uTmFtZSAmIHN0cmluZyB9O1xufTtcblxudHlwZSBBY3Rpb25GblBheWxvYWQ8QWN0aW9uPiA9IEFjdGlvbiBleHRlbmRzIChwYXlsb2FkOiBpbmZlciBQYXlsb2FkKSA9PiB2b2lkXG4gID8gUGF5bG9hZFxuICA6IG5ldmVyO1xuXG50eXBlIEFjdGlvbkZuc0NyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IFNwZWMgZXh0ZW5kcyB7XG4gIHByaXZhdGU6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xuICBwdWJsaWM6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xufVxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwcml2YXRlJ10+ICYgQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxuICA6IEFjdGlvbkZuQ3JlYXRvcjxTcGVjPjtcblxudHlwZSBQdWJsaWNBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IFNwZWMgZXh0ZW5kcyB7XG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG59XG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxuICA6IEFjdGlvbkZuQ3JlYXRvcjxTcGVjPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBheWxvYWQ8VHlwZSBleHRlbmRzIFBheWxvYWQ+KCk6IFR5cGUge1xuICByZXR1cm4ge30gYXMgVHlwZTtcbn1cblxuZXhwb3J0IGNvbnN0IG5vUGF5bG9hZCA9IHt9O1xuXG4vKiogUmVkdWNlciAqKi9cblxudHlwZSBSZWR1Y2VyRnVuY3Rpb248UmVkdWNlckFjdGlvbiwgU3RhdGU+ID0gKFxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPixcbiAgc3RhdGU6IFN0YXRlXG4pID0+IHZvaWQ7XG5cbnR5cGUgUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnMsIFN0YXRlPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogUmVkdWNlckFjdGlvbixcbiAgICByZWR1Y2VyRm46IFJlZHVjZXJGdW5jdGlvbjxBY3Rpb25GblBheWxvYWQ8UmVkdWNlckFjdGlvbj4sIFN0YXRlPlxuICApID0+IHZvaWRcbikgPT4gdm9pZDtcblxuLyoqIEVmZmVjdCAqKi9cblxudHlwZSBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucyBleHRlbmRzIEFjdGlvbkZucz4gPSAoXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxuICBjcmVhdGU6IDxFZmZlY3RBY3Rpb24gZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PihcbiAgICBhY3Rpb246IEVmZmVjdEFjdGlvblxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+XG4pID0+IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8dW5rbm93bj4+O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PixcbiAgc3RhdGU6IHVua25vd25cbikge1xuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdHlwZSBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgZnVsbFBheWxvYWQgPSB7IC4uLnBheWxvYWQsIHR5cGUgfTtcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAocmVkdWNlciBhcyAocGF5bG9hZDogdW5rbm93biwgc3RhdGU6IHVua25vd24pID0+IHZvaWQpKFxuICAgICAgICAgIGZ1bGxQYXlsb2FkIGFzIHVua25vd24sXG4gICAgICAgICAgc3RhdGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVmZmVjdFN1YmplY3QgPSBlZmZlY3RzUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAoZWZmZWN0U3ViamVjdCkge1xuICAgICAgICAoZWZmZWN0U3ViamVjdCBhcyB1bmtub3duIGFzIFN1YmplY3Q8dW5rbm93bj4pLm5leHQoZnVsbFBheWxvYWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bGxQYXlsb2FkO1xuICAgIH07XG4gICAgYWN0aW9uRm4udHlwZSA9IHR5cGUudG9TdHJpbmcoKTtcbiAgICBhY3Rpb25GbnNbdHlwZV0gPSBhY3Rpb25GbjtcbiAgfVxuXG4gIHJldHVybiBhY3Rpb25GbnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVB1YmxpY0FuZEFsbEFjdGlvbnNGbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PixcbiAgc3RhdGU6IHVua25vd25cbik6IHsgYWxsOiBBY3Rpb25GbnM7IHB1YmxpY3M6IEFjdGlvbkZucyB9IHtcbiAgaWYgKCdwdWJsaWMnIGluIGFjdGlvbkZuU3BlY3MgfHwgJ3ByaXZhdGUnIGluIGFjdGlvbkZuU3BlY3MpIHtcbiAgICBjb25zdCBwcml2YXRlcyA9IGFjdGlvbkZuU3BlY3NbJ3ByaXZhdGUnXSB8fCB7fTtcbiAgICBjb25zdCBwdWJsaWNzID0gYWN0aW9uRm5TcGVjc1sncHVibGljJ10gfHwge307XG5cbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHByaXZhdGVzKTtcbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHB1YmxpY3MpO1xuXG4gICAgY29uc3QgcHJpdmF0ZUFjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICAgIHByaXZhdGVzLFxuICAgICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgICAgc3RhdGVcbiAgICApO1xuICAgIGNvbnN0IHB1YmxpY0FjdGlvbkZucyA9IGNyZWF0ZUFjdGlvbkZucyhcbiAgICAgIHB1YmxpY3MsXG4gICAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgICBzdGF0ZVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsOiB7IC4uLnByaXZhdGVBY3Rpb25GbnMsIC4uLnB1YmxpY0FjdGlvbkZucyB9LFxuICAgICAgcHVibGljczogcHVibGljQWN0aW9uRm5zLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWxsOiBhY3Rpb25GbnMsIHB1YmxpY3M6IGFjdGlvbkZucyB9O1xufVxuXG5mdW5jdGlvbiBmaWxsUmVkdWNlclJlZ2lzdHJ5KFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXG4gID5cbikge1xuICBmdW5jdGlvbiBvbihcbiAgICBhY3Rpb246IHsgdHlwZTogc3RyaW5nIH0sXG4gICAgcmVkdWNlckZuOiAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxuICApIHtcbiAgICByZWR1Y2VyUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gcmVkdWNlckZuO1xuICB9XG5cbiAgcmVkdWNlcihhY3Rpb25GbnMsIG9uKTtcblxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcbiAgZWZmZWN0czogRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PiA9IHt9XG4pOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICBmdW5jdGlvbiBjcmVhdGUoYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcbiAgICBlZmZlY3RzUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gc3ViamVjdDtcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZWZmZWN0cyhhY3Rpb25GbnMsIGNyZWF0ZSk7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcbiAgcmV0dXJuIG9ic2VydmFibGVzLm1hcCgob2JzZXJ2YWJsZSkgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoKSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWR1eDxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3MsIFJldHVyblR5cGU+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBzdG9yZTogdW5rbm93blxuKSB7XG4gIGNvbnN0IHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxuICA+ID0ge307XG4gIGNvbnN0IGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PiA9IHt9O1xuICBjb25zdCBhY3Rpb25zTWFwID0gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZucyhcbiAgICBhY3Rpb25GblNwZWNzLFxuICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICBlZmZlY3RzUmVnaXN0cnksXG4gICAgc3RvcmVcbiAgKTtcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XG4gIGNvbnN0IHB1YmxpY0FjdGlvbnNGbnMgPSBhY3Rpb25zTWFwLnB1YmxpY3M7XG5cbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZmlsbEVmZmVjdHMoZWZmZWN0cywgYWN0aW9uRm5zLCBlZmZlY3RzUmVnaXN0cnkpO1xuICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3RhcnRTdWJzY3JpcHRpb25zKGVmZmVjdE9ic2VydmFibGVzKTtcblxuICByZXR1cm4ge1xuICAgIG1ldGhvZHM6IHB1YmxpY0FjdGlvbnNGbnMgYXMgUmV0dXJuVHlwZSxcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWR1eCByZWR1eFxuICpcbiAqIHByb3BlcnRpZXMgZG8gbm90IHN0YXJ0IHdpdGggYHdpdGhgIHNpbmNlIHRoZXkgYXJlIG5vdCBleHRlbnNpb24gZnVuY3Rpb25zIG9uIHRoZWlyIG93bi5cbiAqXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcbiAqXG4gKiBhY3Rpb25zIGFyZSBwYXNzZWQgdG8gcmVkdWNlciBhbmQgZWZmZWN0cywgYnV0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG90aGVyIGFjdGlvbnMuXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVkdXg8XG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPiA9IEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4sXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+XG4+KHJlZHV4OiB7XG4gIGFjdGlvbnM6IFNwZWM7XG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zLCBTdGF0ZVNpZ25hbDxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcywgc3Vic2NyaXB0aW9ucyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgbWV0aG9kcyxcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQU96RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXlDOUQsTUFBTSxVQUFVLE9BQU87SUFDckIsT0FBTyxFQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUEwQjVCLFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBa0UsRUFDbEUsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1YsT0FBc0QsQ0FDckQsV0FBc0IsRUFDdEIsS0FBSyxDQUNOLENBQUM7YUFDSDtZQUNELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLGFBQWEsRUFBRTtnQkFDaEIsYUFBNkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbEU7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcs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QUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFNUQsT0FBTztRQUNMLE9BQU8sRUFBRSxnQkFBOEI7UUFDdkMsYUFBYSxFQUFFLGFBQWE7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUt2QixLQUlEO0lBSUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxZQUFZLENBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQTZDLEVBQ25ELEtBQUssQ0FBQyxPQUFvQyxFQUMxQyxLQUFLLENBQ04sQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2lnbmFsU3RvcmVGZWF0dXJlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XHJcbmltcG9ydCB7XHJcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxyXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcclxufSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUtbW9kZWxzJztcclxuaW1wb3J0IHsgU3RhdGVTaWduYWwgfSBmcm9tICdAbmdyeC9zaWduYWxzL3NyYy9zdGF0ZS1zaWduYWwnO1xyXG5pbXBvcnQgeyBhc3NlcnRBY3Rpb25GblNwZWNzIH0gZnJvbSAnLi9hc3NlcnRpb25zL2Fzc2VydGlvbnMnO1xyXG5pbXBvcnQgeyBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKiBBY3Rpb25zICoqL1xyXG5cclxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblxyXG50eXBlIEFjdGlvbkZuPFxyXG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXHJcbiAgQWN0aW9uUGF5bG9hZCBleHRlbmRzIFBheWxvYWQgPSBQYXlsb2FkXHJcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XHJcbiAgdHlwZTogVHlwZTtcclxufTtcclxuXHJcbnR5cGUgQWN0aW9uRm5zID0gUmVjb3JkPHN0cmluZywgQWN0aW9uRm4+O1xyXG5cclxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcclxuXHJcbnR5cGUgQWN0aW9uRm5DcmVhdG9yPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSB7XHJcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106ICgoXHJcbiAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdXHJcbiAgKSA9PiBTcGVjW0FjdGlvbk5hbWVdICYgeyB0eXBlOiBBY3Rpb25OYW1lIH0pICYgeyB0eXBlOiBBY3Rpb25OYW1lICYgc3RyaW5nIH07XHJcbn07XHJcblxyXG50eXBlIEFjdGlvbkZuUGF5bG9hZDxBY3Rpb24+ID0gQWN0aW9uIGV4dGVuZHMgKHBheWxvYWQ6IGluZmVyIFBheWxvYWQpID0+IHZvaWRcclxuICA/IFBheWxvYWRcclxuICA6IG5ldmVyO1xyXG5cclxudHlwZSBBY3Rpb25GbnNDcmVhdG9yPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4gPSBTcGVjIGV4dGVuZHMge1xyXG4gIHByaXZhdGU6IFJlY29yZDxzdHJpbmcsIFBheWxvYWQ+O1xyXG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XHJcbn1cclxuICA/IEFjdGlvbkZuQ3JlYXRvcjxTcGVjWydwcml2YXRlJ10+ICYgQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxyXG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xyXG5cclxudHlwZSBQdWJsaWNBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IFNwZWMgZXh0ZW5kcyB7XHJcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcclxufVxyXG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3B1YmxpYyddPlxyXG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBheWxvYWQ8VHlwZSBleHRlbmRzIFBheWxvYWQ+KCk6IFR5cGUge1xyXG4gIHJldHVybiB7fSBhcyBUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgbm9QYXlsb2FkID0ge307XHJcblxyXG4vKiogUmVkdWNlciAqKi9cclxuXHJcbnR5cGUgUmVkdWNlckZ1bmN0aW9uPFJlZHVjZXJBY3Rpb24sIFN0YXRlPiA9IChcclxuICBhY3Rpb246IEFjdGlvbkZuUGF5bG9hZDxSZWR1Y2VyQWN0aW9uPixcclxuICBzdGF0ZTogU3RhdGVcclxuKSA9PiB2b2lkO1xyXG5cclxudHlwZSBSZWR1Y2VyRmFjdG9yeTxTdGF0ZUFjdGlvbkZucyBleHRlbmRzIEFjdGlvbkZucywgU3RhdGU+ID0gKFxyXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxyXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxyXG4gICAgYWN0aW9uOiBSZWR1Y2VyQWN0aW9uLFxyXG4gICAgcmVkdWNlckZuOiBSZWR1Y2VyRnVuY3Rpb248QWN0aW9uRm5QYXlsb2FkPFJlZHVjZXJBY3Rpb24+LCBTdGF0ZT5cclxuICApID0+IHZvaWRcclxuKSA9PiB2b2lkO1xyXG5cclxuLyoqIEVmZmVjdCAqKi9cclxuXHJcbnR5cGUgRWZmZWN0c0ZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnM+ID0gKFxyXG4gIGFjdGlvbnM6IFN0YXRlQWN0aW9uRm5zLFxyXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxyXG4gICAgYWN0aW9uOiBFZmZlY3RBY3Rpb25cclxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+XHJcbikgPT4gUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj47XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcclxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxyXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPiwgc3RhdGU6IHVua25vd24pID0+IHZvaWRcclxuICA+LFxyXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PixcclxuICBzdGF0ZTogdW5rbm93blxyXG4pIHtcclxuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xyXG5cclxuICBmb3IgKGNvbnN0IHR5cGUgaW4gYWN0aW9uRm5TcGVjcykge1xyXG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xyXG4gICAgICBjb25zdCBmdWxsUGF5bG9hZCA9IHsgLi4ucGF5bG9hZCwgdHlwZSB9O1xyXG4gICAgICBjb25zdCByZWR1Y2VyID0gcmVkdWNlclJlZ2lzdHJ5W3R5cGVdO1xyXG4gICAgICBpZiAocmVkdWNlcikge1xyXG4gICAgICAgIChyZWR1Y2VyIGFzIChwYXlsb2FkOiB1bmtub3duLCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZCkoXHJcbiAgICAgICAgICBmdWxsUGF5bG9hZCBhcyB1bmtub3duLFxyXG4gICAgICAgICAgc3RhdGVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGVmZmVjdFN1YmplY3QgPSBlZmZlY3RzUmVnaXN0cnlbdHlwZV07XHJcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0KSB7XHJcbiAgICAgICAgKGVmZmVjdFN1YmplY3QgYXMgdW5rbm93biBhcyBTdWJqZWN0PHVua25vd24+KS5uZXh0KGZ1bGxQYXlsb2FkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZnVsbFBheWxvYWQ7XHJcbiAgICB9O1xyXG4gICAgYWN0aW9uRm4udHlwZSA9IHR5cGUudG9TdHJpbmcoKTtcclxuICAgIGFjdGlvbkZuc1t0eXBlXSA9IGFjdGlvbkZuO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGFjdGlvbkZucztcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+KFxyXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXHJcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxyXG4gID4sXHJcbiAgZWZmZWN0c1JlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4+LFxyXG4gIHN0YXRlOiB1bmtub3duXHJcbik6IHsgYWxsOiBBY3Rpb25GbnM7IHB1YmxpY3M6IEFjdGlvbkZucyB9IHtcclxuICBpZiAoJ3B1YmxpYycgaW4gYWN0aW9uRm5TcGVjcyB8fCAncHJpdmF0ZScgaW4gYWN0aW9uRm5TcGVjcykge1xyXG4gICAgY29uc3QgcHJpdmF0ZXMgPSBhY3Rpb25GblNwZWNzWydwcml2YXRlJ10gfHwge307XHJcbiAgICBjb25zdCBwdWJsaWNzID0gYWN0aW9uRm5TcGVjc1sncHVibGljJ10gfHwge307XHJcblxyXG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwcml2YXRlcyk7XHJcbiAgICBhc3NlcnRBY3Rpb25GblNwZWNzKHB1YmxpY3MpO1xyXG5cclxuICAgIGNvbnN0IHByaXZhdGVBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXHJcbiAgICAgIHByaXZhdGVzLFxyXG4gICAgICByZWR1Y2VyUmVnaXN0cnksXHJcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcclxuICAgICAgc3RhdGVcclxuICAgICk7XHJcbiAgICBjb25zdCBwdWJsaWNBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXHJcbiAgICAgIHB1YmxpY3MsXHJcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcclxuICAgICAgZWZmZWN0c1JlZ2lzdHJ5LFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhbGw6IHsgLi4ucHJpdmF0ZUFjdGlvbkZucywgLi4ucHVibGljQWN0aW9uRm5zIH0sXHJcbiAgICAgIHB1YmxpY3M6IHB1YmxpY0FjdGlvbkZucyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXHJcbiAgICBhY3Rpb25GblNwZWNzLFxyXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxyXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxyXG4gICAgc3RhdGVcclxuICApO1xyXG5cclxuICByZXR1cm4geyBhbGw6IGFjdGlvbkZucywgcHVibGljczogYWN0aW9uRm5zIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbGxSZWR1Y2VyUmVnaXN0cnkoXHJcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcclxuICBhY3Rpb25GbnM6IEFjdGlvbkZucyxcclxuICByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcclxuICAgIHN0cmluZyxcclxuICAgIChwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4sIHN0YXRlOiB1bmtub3duKSA9PiB2b2lkXHJcbiAgPlxyXG4pIHtcclxuICBmdW5jdGlvbiBvbihcclxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcclxuICAgIHJlZHVjZXJGbjogKHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPiwgc3RhdGU6IHVua25vd24pID0+IHZvaWRcclxuICApIHtcclxuICAgIHJlZHVjZXJSZWdpc3RyeVthY3Rpb24udHlwZV0gPSByZWR1Y2VyRm47XHJcbiAgfVxyXG5cclxuICByZWR1Y2VyKGFjdGlvbkZucywgb24pO1xyXG5cclxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcclxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxyXG4gIGFjdGlvbkZuczogQWN0aW9uRm5zLFxyXG4gIGVmZmVjdHNSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+PiA9IHt9XHJcbik6IE9ic2VydmFibGU8dW5rbm93bj5bXSB7XHJcbiAgZnVuY3Rpb24gY3JlYXRlKGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSkge1xyXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcclxuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0gPSBzdWJqZWN0O1xyXG4gICAgcmV0dXJuIHN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBlZmZlY3RPYnNlcnZhYmxlcyA9IGVmZmVjdHMoYWN0aW9uRm5zLCBjcmVhdGUpO1xyXG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcclxuICByZXR1cm4gb2JzZXJ2YWJsZXMubWFwKChvYnNlcnZhYmxlKSA9PiBvYnNlcnZhYmxlLnN1YnNjcmliZSgpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc1JlZHV4PFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcywgUmV0dXJuVHlwZT4oXHJcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcclxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxyXG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXHJcbiAgc3RvcmU6IHVua25vd25cclxuKSB7XHJcbiAgY29uc3QgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+LCBzdGF0ZTogdW5rbm93bikgPT4gdm9pZFxyXG4gID4gPSB7fTtcclxuICBjb25zdCBlZmZlY3RzUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+Pj4gPSB7fTtcclxuICBjb25zdCBhY3Rpb25zTWFwID0gY3JlYXRlUHVibGljQW5kQWxsQWN0aW9uc0ZucyhcclxuICAgIGFjdGlvbkZuU3BlY3MsXHJcbiAgICByZWR1Y2VyUmVnaXN0cnksXHJcbiAgICBlZmZlY3RzUmVnaXN0cnksXHJcbiAgICBzdG9yZVxyXG4gICk7XHJcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XHJcbiAgY29uc3QgcHVibGljQWN0aW9uc0ZucyA9IGFjdGlvbnNNYXAucHVibGljcztcclxuXHJcbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XHJcbiAgY29uc3QgZWZmZWN0T2JzZXJ2YWJsZXMgPSBmaWxsRWZmZWN0cyhlZmZlY3RzLCBhY3Rpb25GbnMsIGVmZmVjdHNSZWdpc3RyeSk7XHJcbiAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHN0YXJ0U3Vic2NyaXB0aW9ucyhlZmZlY3RPYnNlcnZhYmxlcyk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBtZXRob2RzOiBwdWJsaWNBY3Rpb25zRm5zIGFzIFJldHVyblR5cGUsXHJcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAcGFyYW0gcmVkdXggcmVkdXhcclxuICpcclxuICogcHJvcGVydGllcyBkbyBub3Qgc3RhcnQgd2l0aCBgd2l0aGAgc2luY2UgdGhleSBhcmUgbm90IGV4dGVuc2lvbiBmdW5jdGlvbnMgb24gdGhlaXIgb3duLlxyXG4gKlxyXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcclxuICpcclxuICogYWN0aW9ucyBhcmUgcGFzc2VkIHRvIHJlZHVjZXIgYW5kIGVmZmVjdHMsIGJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBvdGhlciBhY3Rpb25zLlxyXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlZHV4PFxyXG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcclxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcclxuICBTdGF0ZUFjdGlvbkZucyBleHRlbmRzIEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4gPSBBY3Rpb25GbnNDcmVhdG9yPFNwZWM+LFxyXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+XHJcbj4ocmVkdXg6IHtcclxuICBhY3Rpb25zOiBTcGVjO1xyXG4gIHJlZHVjZXI6IFJlZHVjZXJGYWN0b3J5PFN0YXRlQWN0aW9uRm5zLCBTdGF0ZVNpZ25hbDxJbnB1dFsnc3RhdGUnXT4+O1xyXG4gIGVmZmVjdHM6IEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zPjtcclxufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcclxuICBJbnB1dCxcclxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IG1ldGhvZHM6IFB1YmxpY1N0b3JlQWN0aW9uRm5zIH1cclxuPiB7XHJcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xyXG4gICAgY29uc3QgeyBtZXRob2RzLCBzdWJzY3JpcHRpb25zIH0gPSBwcm9jZXNzUmVkdXg8U3BlYywgUHVibGljU3RvcmVBY3Rpb25GbnM+KFxyXG4gICAgICByZWR1eC5hY3Rpb25zLFxyXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXHJcbiAgICAgIHJlZHV4LmVmZmVjdHMgYXMgRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcclxuICAgICAgc3RvcmVcclxuICAgICk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdG9yZSxcclxuICAgICAgbWV0aG9kcyxcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { patchState, signalStoreFeature, withComputed, withHooks, withMethods } from "@ngrx/signals";
|
|
2
|
+
import { effect, signal, untracked, isSignal } from "@angular/core";
|
|
3
|
+
import { capitalize } from "./with-data-service";
|
|
4
|
+
const defaultOptions = {
|
|
5
|
+
maxStackSize: 100
|
|
6
|
+
};
|
|
7
|
+
export function getUndoRedoKeys(collections) {
|
|
8
|
+
if (collections) {
|
|
9
|
+
return collections.flatMap(c => [`${c}EntityMap`, `${c}Ids`, `selected${capitalize(c)}Ids`, `${c}Filter`]);
|
|
10
|
+
}
|
|
11
|
+
return ['entityMap', 'ids', 'selectedIds', 'filter'];
|
|
12
|
+
}
|
|
13
|
+
export function withUndoRedo(options = {}) {
|
|
14
|
+
let previous = null;
|
|
15
|
+
let skipOnce = false;
|
|
16
|
+
const normalized = {
|
|
17
|
+
...defaultOptions,
|
|
18
|
+
...options
|
|
19
|
+
};
|
|
20
|
+
//
|
|
21
|
+
// Design Decision: This feature has its own
|
|
22
|
+
// internal state.
|
|
23
|
+
//
|
|
24
|
+
const undoStack = [];
|
|
25
|
+
const redoStack = [];
|
|
26
|
+
const canUndo = signal(false);
|
|
27
|
+
const canRedo = signal(false);
|
|
28
|
+
const updateInternal = () => {
|
|
29
|
+
canUndo.set(undoStack.length !== 0);
|
|
30
|
+
canRedo.set(redoStack.length !== 0);
|
|
31
|
+
};
|
|
32
|
+
const keys = getUndoRedoKeys(normalized?.collections);
|
|
33
|
+
return signalStoreFeature(withComputed(() => ({
|
|
34
|
+
canUndo: canUndo.asReadonly(),
|
|
35
|
+
canRedo: canRedo.asReadonly()
|
|
36
|
+
})), withMethods((store) => ({
|
|
37
|
+
undo() {
|
|
38
|
+
const item = undoStack.pop();
|
|
39
|
+
if (item && previous) {
|
|
40
|
+
redoStack.push(previous);
|
|
41
|
+
}
|
|
42
|
+
if (item) {
|
|
43
|
+
skipOnce = true;
|
|
44
|
+
patchState(store, item);
|
|
45
|
+
previous = item;
|
|
46
|
+
}
|
|
47
|
+
updateInternal();
|
|
48
|
+
},
|
|
49
|
+
redo() {
|
|
50
|
+
const item = redoStack.pop();
|
|
51
|
+
if (item && previous) {
|
|
52
|
+
undoStack.push(previous);
|
|
53
|
+
}
|
|
54
|
+
if (item) {
|
|
55
|
+
skipOnce = true;
|
|
56
|
+
patchState(store, item);
|
|
57
|
+
previous = item;
|
|
58
|
+
}
|
|
59
|
+
updateInternal();
|
|
60
|
+
}
|
|
61
|
+
})), withHooks({
|
|
62
|
+
onInit(store) {
|
|
63
|
+
effect(() => {
|
|
64
|
+
const cand = keys.reduce((acc, key) => {
|
|
65
|
+
const s = store[key];
|
|
66
|
+
if (s && isSignal(s)) {
|
|
67
|
+
return {
|
|
68
|
+
...acc,
|
|
69
|
+
[key]: s()
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return acc;
|
|
73
|
+
}, {});
|
|
74
|
+
if (skipOnce) {
|
|
75
|
+
skipOnce = false;
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Clear redoStack after recorded action
|
|
79
|
+
redoStack.splice(0);
|
|
80
|
+
if (previous) {
|
|
81
|
+
undoStack.push(previous);
|
|
82
|
+
}
|
|
83
|
+
if (redoStack.length > normalized.maxStackSize) {
|
|
84
|
+
undoStack.unshift();
|
|
85
|
+
}
|
|
86
|
+
previous = cand;
|
|
87
|
+
// Don't propogate current reactive context
|
|
88
|
+
untracked(() => updateInternal());
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpILE9BQU8sRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVXpELE1BQU0sY0FBYyxHQUE4QjtJQUM5QyxZQUFZLEVBQUUsR0FBRztDQUNwQixDQUFDO0FBWUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxXQUFzQjtJQUNsRCxJQUFJLFdBQVcsRUFBRTtRQUNiLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7S0FDN0c7SUFDRCxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQXdDRCxNQUFNLFVBQVUsWUFBWSxDQUE0QixVQUdwRCxFQUFFO0lBR0YsSUFBSSxRQUFRLEdBQXFCLElBQUksQ0FBQztJQUN0QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFckIsTUFBTSxVQUFVLEdBQUc7UUFDZixHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tBQ2IsQ0FBQztJQUVGLEVBQUU7SUFDRiw0Q0FBNEM7SUFDNUMsa0JBQWtCO0lBQ2xCLEVBQUU7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UUFBUSxHQUFHLElBQUksQ0FBQztnQkFFaEIsMkNBQTJDO2dCQUMzQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7S0FDSixDQUFDLENBRUwsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWxTdG9yZUZlYXR1cmUsIHBhdGNoU3RhdGUsIHNpZ25hbFN0b3JlRmVhdHVyZSwgd2l0aENvbXB1dGVkLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzIH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHNcIjtcclxuaW1wb3J0IHsgRW50aXR5SWQsIEVudGl0eU1hcCwgRW50aXR5U3RhdGUgfSBmcm9tIFwiQG5ncngvc2lnbmFscy9lbnRpdGllc1wiO1xyXG5pbXBvcnQgeyBTaWduYWwsIGVmZmVjdCwgc2lnbmFsLCB1bnRyYWNrZWQsIGlzU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRW50aXR5U2lnbmFscywgTmFtZWRFbnRpdHlTaWduYWxzIH0gZnJvbSBcIkBuZ3J4L3NpZ25hbHMvZW50aXRpZXMvc3JjL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBFbnRpdHksIGNhcGl0YWxpemUgfSBmcm9tIFwiLi93aXRoLWRhdGEtc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFbXRweSB9IGZyb20gXCIuL3NoYXJlZC9lbXB0eVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgU3RhY2tJdGVtID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblxyXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xyXG4gICAgbWF4U3RhY2tTaXplOiBudW1iZXI7XHJcbiAgICBjb2xsZWN0aW9ucz86IHN0cmluZ1tdXHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xyXG4gICAgbWF4U3RhY2tTaXplOiAxMDBcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIE5hbWVkVW5kb1JlZG9TdGF0ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPiA9IHtcclxuICAgIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7S31FbnRpdHlNYXBgXTogRW50aXR5TWFwPEVudGl0eT47XHJcbn0gJiB7XHJcbiAgICAgICAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtLfUlkc2BdOiBFbnRpdHlJZFtdO1xyXG4gICAgfVxyXG5cclxuZXhwb3J0IHR5cGUgTmFtZWRVbmRvUmVkb1NpZ25hbHM8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XHJcbiAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9RW50aXRpZXNgXTogU2lnbmFsPEVudGl0eVtdPlxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5kb1JlZG9LZXlzKGNvbGxlY3Rpb25zPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoY29sbGVjdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuZmxhdE1hcChjID0+IFtgJHtjfUVudGl0eU1hcGAsIGAke2N9SWRzYCwgYHNlbGVjdGVkJHtjYXBpdGFsaXplKGMpfUlkc2AsIGAke2N9RmlsdGVyYF0pXHJcbiAgICB9XHJcbiAgICByZXR1cm4gWydlbnRpdHlNYXAnLCAnaWRzJywgJ3NlbGVjdGVkSWRzJywgJ2ZpbHRlciddO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2l0aFVuZG9SZWRvPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7IG1heFN0YWNrU2l6ZT86IG51bWJlcjsgY29sbGVjdGlvbnM6IENvbGxlY3Rpb25bXSB9KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxyXG4gICAge1xyXG4gICAgICAgIHN0YXRlOiBFbXRweSxcclxuICAgICAgICAvLyBUaGlzIGFsdGVybmF0aXZlIGJyZWFrcyB0eXBlIGluZmVyZW5jZTpcclxuICAgICAgICAvLyBzdGF0ZTogTmFtZWRFbnRpdHlTdGF0ZTxFbnRpdHksIENvbGxlY3Rpb24+XHJcbiAgICAgICAgc2lnbmFsczogTmFtZWRFbnRpdHlTaWduYWxzPEVudGl0eSwgQ29sbGVjdGlvbj4sXHJcbiAgICAgICAgbWV0aG9kczogRW10cHlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgc3RhdGU6IEVtdHB5LFxyXG4gICAgICAgIHNpZ25hbHM6IHtcclxuICAgICAgICAgICAgY2FuVW5kbzogU2lnbmFsPGJvb2xlYW4+LFxyXG4gICAgICAgICAgICBjYW5SZWRvOiBTaWduYWw8Ym9vbGVhbj5cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgdW5kbzogKCkgPT4gdm9pZCxcclxuICAgICAgICAgICAgcmVkbzogKCkgPT4gdm9pZFxyXG4gICAgICAgIH1cclxuICAgIH0+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbyhvcHRpb25zPzogeyBtYXhTdGFja1NpemU/OiBudW1iZXIgfSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcclxuICAgIHtcclxuICAgICAgICBzdGF0ZTogRW50aXR5U3RhdGU8RW50aXR5PixcclxuICAgICAgICBzaWduYWxzOiBFbnRpdHlTaWduYWxzPEVudGl0eT4sXHJcbiAgICAgICAgbWV0aG9kczogRW10cHlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgc3RhdGU6IEVtdHB5LFxyXG4gICAgICAgIHNpZ25hbHM6IHtcclxuICAgICAgICAgICAgY2FuVW5kbzogU2lnbmFsPGJvb2xlYW4+LFxyXG4gICAgICAgICAgICBjYW5SZWRvOiBTaWduYWw8Ym9vbGVhbj5cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgdW5kbzogKCkgPT4gdm9pZCxcclxuICAgICAgICAgICAgcmVkbzogKCkgPT4gdm9pZFxyXG4gICAgICAgIH1cclxuICAgIH0+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbzxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihvcHRpb25zOiB7XHJcbiAgICBtYXhTdGFja1NpemU/OiBudW1iZXI7XHJcbiAgICBjb2xsZWN0aW9ucz86IENvbGxlY3Rpb25bXVxyXG59ID0ge30pOiBcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuU2lnbmFsU3RvcmVGZWF0dXJlPGFueSwgYW55PiB7XHJcbiAgICBsZXQgcHJldmlvdXM6IFN0YWNrSXRlbSB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IHNraXBPbmNlID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcclxuICAgICAgICAuLi5vcHRpb25zXHJcbiAgICB9O1xyXG5cclxuICAgIC8vXHJcbiAgICAvLyBEZXNpZ24gRGVjaXNpb246IFRoaXMgZmVhdHVyZSBoYXMgaXRzIG93blxyXG4gICAgLy8gaW50ZXJuYWwgc3RhdGUuXHJcbiAgICAvL1xyXG5cclxuICAgIGNvbnN0IHVuZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcclxuICAgIGNvbnN0IHJlZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBjYW5VbmRvID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIGNvbnN0IGNhblJlZG8gPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZUludGVybmFsID0gKCkgPT4ge1xyXG4gICAgICAgIGNhblVuZG8uc2V0KHVuZG9TdGFjay5sZW5ndGggIT09IDApO1xyXG4gICAgICAgIGNhblJlZG8uc2V0KHJlZG9TdGFjay5sZW5ndGggIT09IDApO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBrZXlzID0gZ2V0VW5kb1JlZG9LZXlzKG5vcm1hbGl6ZWQ/LmNvbGxlY3Rpb25zKTtcclxuXHJcbiAgICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxyXG5cclxuICAgICAgICB3aXRoQ29tcHV0ZWQoKCkgPT4gKHtcclxuICAgICAgICAgICAgY2FuVW5kbzogY2FuVW5kby5hc1JlYWRvbmx5KCksXHJcbiAgICAgICAgICAgIGNhblJlZG86IGNhblJlZG8uYXNSZWFkb25seSgpXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcclxuICAgICAgICAgICAgdW5kbygpOiB2b2lkIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB1bmRvU3RhY2sucG9wKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWRvU3RhY2sucHVzaChwcmV2aW91cyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwT25jZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZUludGVybmFsKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlZG8oKTogdm9pZCB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcmVkb1N0YWNrLnBvcCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIHByZXZpb3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5kb1N0YWNrLnB1c2gocHJldmlvdXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcE9uY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIHdpdGhIb29rcyh7XHJcbiAgICAgICAgICAgIG9uSW5pdChzdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcclxuICAgICAgICAgICAgICAgIGVmZmVjdCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHN0b3JlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzICYmIGlzU2lnbmFsKHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2V5XTogcygpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgICAgICAgICB9LCB7fSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChza2lwT25jZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwT25jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciByZWRvU3RhY2sgYWZ0ZXIgcmVjb3JkZWQgYWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgcmVkb1N0YWNrLnNwbGljZSgwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZG9TdGFjay5wdXNoKHByZXZpb3VzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWRvU3RhY2subGVuZ3RoID4gbm9ybWFsaXplZC5tYXhTdGFja1NpemUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kb1N0YWNrLnVuc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY2FuZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJvcG9nYXRlIGN1cnJlbnQgcmVhY3RpdmUgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB1cGRhdGVJbnRlcm5hbCgpKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgIClcclxufVxyXG4iXX0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { patchState as patchState$1 } from '@ngrx/signals';
|
|
2
|
-
import { signal, effect, PLATFORM_ID, inject } from '@angular/core';
|
|
1
|
+
import { patchState as patchState$1, withState, withComputed, signalStoreFeature, withMethods, withHooks } from '@ngrx/signals';
|
|
2
|
+
import { signal, effect, PLATFORM_ID, inject, computed, isSignal, untracked } from '@angular/core';
|
|
3
3
|
import { isPlatformServer } from '@angular/common';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
|
+
import { setAllEntities, addEntity, updateEntity, removeEntity } from '@ngrx/signals/entities';
|
|
5
6
|
|
|
6
7
|
const storeRegistry = signal({});
|
|
7
8
|
let currentActionNames = new Set();
|
|
@@ -178,9 +179,298 @@ function withRedux(redux) {
|
|
|
178
179
|
};
|
|
179
180
|
}
|
|
180
181
|
|
|
182
|
+
function getCallStateKeys(config) {
|
|
183
|
+
const prop = config?.collection;
|
|
184
|
+
return {
|
|
185
|
+
callStateKey: prop ? `${config.collection}CallState` : 'callState',
|
|
186
|
+
loadingKey: prop ? `${config.collection}Loading` : 'loading',
|
|
187
|
+
loadedKey: prop ? `${config.collection}Loaded` : 'loaded',
|
|
188
|
+
errorKey: prop ? `${config.collection}Error` : 'error',
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function withCallState(config) {
|
|
192
|
+
const { callStateKey, errorKey, loadedKey, loadingKey } = getCallStateKeys(config);
|
|
193
|
+
return signalStoreFeature(withState({ [callStateKey]: 'init' }), withComputed((state) => {
|
|
194
|
+
const callState = state[callStateKey];
|
|
195
|
+
return {
|
|
196
|
+
[loadingKey]: computed(() => callState() === 'loading'),
|
|
197
|
+
[loadedKey]: computed(() => callState() === 'loaded'),
|
|
198
|
+
[errorKey]: computed(() => {
|
|
199
|
+
const v = callState();
|
|
200
|
+
return typeof v === 'object' ? v.error : null;
|
|
201
|
+
})
|
|
202
|
+
};
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
function setLoading(prop) {
|
|
206
|
+
if (prop) {
|
|
207
|
+
return { [`${prop}CallState`]: 'loading' };
|
|
208
|
+
}
|
|
209
|
+
return { callState: 'loading' };
|
|
210
|
+
}
|
|
211
|
+
function setLoaded(prop) {
|
|
212
|
+
if (prop) {
|
|
213
|
+
return { [`${prop}CallState`]: 'loaded' };
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
return { callState: 'loaded' };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function setError(error, prop) {
|
|
220
|
+
let errorMessage = '';
|
|
221
|
+
if (!error) {
|
|
222
|
+
errorMessage = '';
|
|
223
|
+
}
|
|
224
|
+
else if (typeof error === 'object' && 'message' in error) {
|
|
225
|
+
errorMessage = String(error.message);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
errorMessage = String(error);
|
|
229
|
+
}
|
|
230
|
+
if (prop) {
|
|
231
|
+
return { [`${prop}CallState`]: { error: errorMessage } };
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
return { callState: { error: errorMessage } };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function capitalize(str) {
|
|
239
|
+
return str ? str[0].toUpperCase() + str.substring(1) : str;
|
|
240
|
+
}
|
|
241
|
+
function getDataServiceKeys(options) {
|
|
242
|
+
const filterKey = options.collection ? `${options.collection}Filter` : 'filter';
|
|
243
|
+
const selectedIdsKey = options.collection ? `selected${capitalize(options.collection)}Ids` : 'selectedIds';
|
|
244
|
+
const selectedEntitiesKey = options.collection ? `selected${capitalize(options.collection)}Entities` : 'selectedEntities';
|
|
245
|
+
const updateFilterKey = options.collection ? `update${capitalize(options.collection)}Filter` : 'updateFilter';
|
|
246
|
+
const updateSelectedKey = options.collection ? `updateSelected${capitalize(options.collection)}Entities` : 'updateSelected';
|
|
247
|
+
const loadKey = options.collection ? `load${capitalize(options.collection)}Entities` : 'load';
|
|
248
|
+
const currentKey = options.collection ? `current${capitalize(options.collection)}` : 'current';
|
|
249
|
+
const loadByIdKey = options.collection ? `load${capitalize(options.collection)}ById` : 'loadById';
|
|
250
|
+
const setCurrentKey = options.collection ? `setCurrent${capitalize(options.collection)}` : 'setCurrent';
|
|
251
|
+
const createKey = options.collection ? `create${capitalize(options.collection)}` : 'create';
|
|
252
|
+
const updateKey = options.collection ? `update${capitalize(options.collection)}` : 'update';
|
|
253
|
+
const deleteKey = options.collection ? `delete${capitalize(options.collection)}` : 'delete';
|
|
254
|
+
// TODO: Take these from @ngrx/signals/entities, when they are exported
|
|
255
|
+
const entitiesKey = options.collection ? `${options.collection}Entities` : 'entities';
|
|
256
|
+
const entityMapKey = options.collection ? `${options.collection}EntityMap` : 'entityMap';
|
|
257
|
+
const idsKey = options.collection ? `${options.collection}Ids` : 'ids';
|
|
258
|
+
return {
|
|
259
|
+
filterKey,
|
|
260
|
+
selectedIdsKey,
|
|
261
|
+
selectedEntitiesKey,
|
|
262
|
+
updateFilterKey,
|
|
263
|
+
updateSelectedKey,
|
|
264
|
+
loadKey,
|
|
265
|
+
entitiesKey,
|
|
266
|
+
entityMapKey,
|
|
267
|
+
idsKey,
|
|
268
|
+
currentKey,
|
|
269
|
+
loadByIdKey,
|
|
270
|
+
setCurrentKey,
|
|
271
|
+
createKey,
|
|
272
|
+
updateKey,
|
|
273
|
+
deleteKey
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
277
|
+
function withDataService(options) {
|
|
278
|
+
const { dataServiceType, filter, collection: prefix } = options;
|
|
279
|
+
const { entitiesKey, filterKey, loadKey, selectedEntitiesKey, selectedIdsKey, updateFilterKey, updateSelectedKey, currentKey, createKey, updateKey, deleteKey, loadByIdKey, setCurrentKey } = getDataServiceKeys(options);
|
|
280
|
+
const { callStateKey } = getCallStateKeys({ collection: prefix });
|
|
281
|
+
return signalStoreFeature(withState(() => ({
|
|
282
|
+
[filterKey]: filter,
|
|
283
|
+
[selectedIdsKey]: {},
|
|
284
|
+
[currentKey]: undefined
|
|
285
|
+
})), withComputed((store) => {
|
|
286
|
+
const entities = store[entitiesKey];
|
|
287
|
+
const selectedIds = store[selectedIdsKey];
|
|
288
|
+
return {
|
|
289
|
+
[selectedEntitiesKey]: computed(() => entities().filter(e => selectedIds()[e.id]))
|
|
290
|
+
};
|
|
291
|
+
}), withMethods((store) => {
|
|
292
|
+
const dataService = inject(dataServiceType);
|
|
293
|
+
return {
|
|
294
|
+
[updateFilterKey]: (filter) => {
|
|
295
|
+
patchState$1(store, { [filterKey]: filter });
|
|
296
|
+
},
|
|
297
|
+
[updateSelectedKey]: (id, selected) => {
|
|
298
|
+
patchState$1(store, (state) => ({
|
|
299
|
+
[selectedIdsKey]: {
|
|
300
|
+
...state[selectedIdsKey],
|
|
301
|
+
[id]: selected,
|
|
302
|
+
}
|
|
303
|
+
}));
|
|
304
|
+
},
|
|
305
|
+
[loadKey]: async () => {
|
|
306
|
+
const filter = store[filterKey];
|
|
307
|
+
store[callStateKey] && patchState$1(store, setLoading(prefix));
|
|
308
|
+
try {
|
|
309
|
+
const result = await dataService.load(filter());
|
|
310
|
+
patchState$1(store, prefix ? setAllEntities(result, { collection: prefix }) : setAllEntities(result));
|
|
311
|
+
store[callStateKey] && patchState$1(store, setLoaded(prefix));
|
|
312
|
+
}
|
|
313
|
+
catch (e) {
|
|
314
|
+
store[callStateKey] && patchState$1(store, setError(e, prefix));
|
|
315
|
+
throw e;
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
[loadByIdKey]: async (id) => {
|
|
319
|
+
store[callStateKey] && patchState$1(store, setLoading(prefix));
|
|
320
|
+
try {
|
|
321
|
+
const current = await dataService.loadById(id);
|
|
322
|
+
store[callStateKey] && patchState$1(store, setLoaded(prefix));
|
|
323
|
+
patchState$1(store, { [currentKey]: current });
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
store[callStateKey] && patchState$1(store, setError(e, prefix));
|
|
327
|
+
throw e;
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
[setCurrentKey]: (current) => {
|
|
331
|
+
patchState$1(store, { [currentKey]: current });
|
|
332
|
+
},
|
|
333
|
+
[createKey]: async (entity) => {
|
|
334
|
+
patchState$1(store, { [currentKey]: entity });
|
|
335
|
+
store[callStateKey] && patchState$1(store, setLoading(prefix));
|
|
336
|
+
try {
|
|
337
|
+
const created = await dataService.create(entity);
|
|
338
|
+
patchState$1(store, { [currentKey]: created });
|
|
339
|
+
patchState$1(store, prefix ? addEntity(created, { collection: prefix }) : addEntity(created));
|
|
340
|
+
store[callStateKey] && patchState$1(store, setLoaded(prefix));
|
|
341
|
+
}
|
|
342
|
+
catch (e) {
|
|
343
|
+
store[callStateKey] && patchState$1(store, setError(e, prefix));
|
|
344
|
+
throw e;
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
[updateKey]: async (entity) => {
|
|
348
|
+
patchState$1(store, { [currentKey]: entity });
|
|
349
|
+
store[callStateKey] && patchState$1(store, setLoading(prefix));
|
|
350
|
+
try {
|
|
351
|
+
const updated = await dataService.update(entity);
|
|
352
|
+
patchState$1(store, { [currentKey]: updated });
|
|
353
|
+
// Why do we need this cast to Partial<Entity>?
|
|
354
|
+
const updateArg = { id: updated.id, changes: updated };
|
|
355
|
+
patchState$1(store, prefix ? updateEntity(updateArg, { collection: prefix }) : updateEntity(updateArg));
|
|
356
|
+
store[callStateKey] && patchState$1(store, setLoaded(prefix));
|
|
357
|
+
}
|
|
358
|
+
catch (e) {
|
|
359
|
+
store[callStateKey] && patchState$1(store, setError(e, prefix));
|
|
360
|
+
throw e;
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
[deleteKey]: async (entity) => {
|
|
364
|
+
patchState$1(store, { [currentKey]: entity });
|
|
365
|
+
store[callStateKey] && patchState$1(store, setLoading(prefix));
|
|
366
|
+
try {
|
|
367
|
+
await dataService.delete(entity);
|
|
368
|
+
patchState$1(store, { [currentKey]: undefined });
|
|
369
|
+
patchState$1(store, prefix ? removeEntity(entity.id, { collection: prefix }) : removeEntity(entity.id));
|
|
370
|
+
store[callStateKey] && patchState$1(store, setLoaded(prefix));
|
|
371
|
+
}
|
|
372
|
+
catch (e) {
|
|
373
|
+
store[callStateKey] && patchState$1(store, setError(e, prefix));
|
|
374
|
+
throw e;
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}));
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const defaultOptions = {
|
|
382
|
+
maxStackSize: 100
|
|
383
|
+
};
|
|
384
|
+
function getUndoRedoKeys(collections) {
|
|
385
|
+
if (collections) {
|
|
386
|
+
return collections.flatMap(c => [`${c}EntityMap`, `${c}Ids`, `selected${capitalize(c)}Ids`, `${c}Filter`]);
|
|
387
|
+
}
|
|
388
|
+
return ['entityMap', 'ids', 'selectedIds', 'filter'];
|
|
389
|
+
}
|
|
390
|
+
function withUndoRedo(options = {}) {
|
|
391
|
+
let previous = null;
|
|
392
|
+
let skipOnce = false;
|
|
393
|
+
const normalized = {
|
|
394
|
+
...defaultOptions,
|
|
395
|
+
...options
|
|
396
|
+
};
|
|
397
|
+
//
|
|
398
|
+
// Design Decision: This feature has its own
|
|
399
|
+
// internal state.
|
|
400
|
+
//
|
|
401
|
+
const undoStack = [];
|
|
402
|
+
const redoStack = [];
|
|
403
|
+
const canUndo = signal(false);
|
|
404
|
+
const canRedo = signal(false);
|
|
405
|
+
const updateInternal = () => {
|
|
406
|
+
canUndo.set(undoStack.length !== 0);
|
|
407
|
+
canRedo.set(redoStack.length !== 0);
|
|
408
|
+
};
|
|
409
|
+
const keys = getUndoRedoKeys(normalized?.collections);
|
|
410
|
+
return signalStoreFeature(withComputed(() => ({
|
|
411
|
+
canUndo: canUndo.asReadonly(),
|
|
412
|
+
canRedo: canRedo.asReadonly()
|
|
413
|
+
})), withMethods((store) => ({
|
|
414
|
+
undo() {
|
|
415
|
+
const item = undoStack.pop();
|
|
416
|
+
if (item && previous) {
|
|
417
|
+
redoStack.push(previous);
|
|
418
|
+
}
|
|
419
|
+
if (item) {
|
|
420
|
+
skipOnce = true;
|
|
421
|
+
patchState$1(store, item);
|
|
422
|
+
previous = item;
|
|
423
|
+
}
|
|
424
|
+
updateInternal();
|
|
425
|
+
},
|
|
426
|
+
redo() {
|
|
427
|
+
const item = redoStack.pop();
|
|
428
|
+
if (item && previous) {
|
|
429
|
+
undoStack.push(previous);
|
|
430
|
+
}
|
|
431
|
+
if (item) {
|
|
432
|
+
skipOnce = true;
|
|
433
|
+
patchState$1(store, item);
|
|
434
|
+
previous = item;
|
|
435
|
+
}
|
|
436
|
+
updateInternal();
|
|
437
|
+
}
|
|
438
|
+
})), withHooks({
|
|
439
|
+
onInit(store) {
|
|
440
|
+
effect(() => {
|
|
441
|
+
const cand = keys.reduce((acc, key) => {
|
|
442
|
+
const s = store[key];
|
|
443
|
+
if (s && isSignal(s)) {
|
|
444
|
+
return {
|
|
445
|
+
...acc,
|
|
446
|
+
[key]: s()
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
return acc;
|
|
450
|
+
}, {});
|
|
451
|
+
if (skipOnce) {
|
|
452
|
+
skipOnce = false;
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
// Clear redoStack after recorded action
|
|
456
|
+
redoStack.splice(0);
|
|
457
|
+
if (previous) {
|
|
458
|
+
undoStack.push(previous);
|
|
459
|
+
}
|
|
460
|
+
if (redoStack.length > normalized.maxStackSize) {
|
|
461
|
+
undoStack.unshift();
|
|
462
|
+
}
|
|
463
|
+
previous = cand;
|
|
464
|
+
// Don't propogate current reactive context
|
|
465
|
+
untracked(() => updateInternal());
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
}));
|
|
469
|
+
}
|
|
470
|
+
|
|
181
471
|
/**
|
|
182
472
|
* Generated bundle index. Do not edit.
|
|
183
473
|
*/
|
|
184
474
|
|
|
185
|
-
export { noPayload, patchState, payload, withDevtools, withRedux };
|
|
475
|
+
export { capitalize, getCallStateKeys, getDataServiceKeys, getUndoRedoKeys, noPayload, patchState, payload, setError, setLoaded, setLoading, withCallState, withDataService, withDevtools, withRedux, withUndoRedo };
|
|
186
476
|
//# sourceMappingURL=angular-architects-ngrx-toolkit.mjs.map
|