@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.
@@ -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