@dereekb/dbx-firebase 12.5.8 → 12.5.10

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.
@@ -11,6 +11,7 @@ import { provideDbxFirebaseNotifications } from './modules/notification/notifica
11
11
  import { provideDbxFirebaseModelContextService } from './model/service/model.context.providers';
12
12
  import { provideDbxFirebaseModelTypesService } from './model/modules/model/model.types.providers';
13
13
  import { provideDbxFirebaseAnalyticsUserEventsListenerService } from './analytics';
14
+ import { provideDbxFirebaseStorageFileService } from './modules/storagefile/storagefile.providers';
14
15
  /**
15
16
  * All-in-one provider for providing the main configurations for DbxFirebase.
16
17
  *
@@ -21,7 +22,7 @@ import { provideDbxFirebaseAnalyticsUserEventsListenerService } from './analytic
21
22
  * @returns EnvironmentProviders for the DbxFirebase configuration.
22
23
  */
23
24
  export function provideDbxFirebase(config) {
24
- const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener } = config;
25
+ const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener, provideStorageFileService } = config;
25
26
  const providers = [provideDbxFirebaseApp(app), provideDbxFirebaseEmulator(emulator), providedDbxFirebaseStorage(storage), provideDbxFirebaseAuth(auth), provideDbxFirebaseFunctions(functions), provideDbxFirebaseModelContextService(modelContextService), provideDbxFirebaseModelTypesService(modelTypesService)];
26
27
  asArray(firestores).forEach((firestore) => {
27
28
  providers.push(provideDbxFirestoreCollection(firestore));
@@ -35,6 +36,9 @@ export function provideDbxFirebase(config) {
35
36
  if (notifications != null) {
36
37
  providers.push(provideDbxFirebaseNotifications(notifications));
37
38
  }
39
+ if (provideStorageFileService) {
40
+ providers.push(provideDbxFirebaseStorageFileService());
41
+ }
38
42
  return makeEnvironmentProviders(providers);
39
43
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXVDbkY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQTJELE1BQXNDO0lBQ2pJLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRS9LLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTVVLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGtDQUFrQyxFQUFFLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBBcnJheU9yVmFsdWUsIGFzQXJyYXksIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBGaXJlYmFzZUZ1bmN0aW9uc01hcCB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlQXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC8vZmlyZWJhc2UuYXV0aC5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRW11bGF0b3IsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnIH0gZnJvbSAnLi9maXJlYmFzZS9maXJlYmFzZS5lbXVsYXRvci5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQXBwLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUFwcENvbmZpZyB9IGZyb20gJy4vZmlyZWJhc2UvZmlyZWJhc2UucHJvdmlkZXJzJztcbmltcG9ydCB7IHR5cGUgUHJvdmlkZURieEZpcmViYXNlRmlyZXN0b3JlQ29sbGVjdGlvbkNvbmZpZywgcHJvdmlkZURieEZpcmVzdG9yZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ZpcmVzdG9yZS9maXJlYmFzZS5maXJlc3RvcmUucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucywgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VGdW5jdGlvbnNDb25maWcgfSBmcm9tICcuL2Z1bmN0aW9uL2ZpcmViYXNlLmZ1bmN0aW9uLnByb3ZpZGVycyc7XG5pbXBvcnQgeyB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZVN0b3JhZ2VDb25maWcsIHByb3ZpZGVkRGJ4RmlyZWJhc2VTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlL2ZpcmViYXNlLnN0b3JhZ2UucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50LCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50Q29uZmlnIH0gZnJvbSAnLi9kZXZlbG9wbWVudC9kZXZlbG9wbWVudC5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucywgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9tb2R1bGVzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24ucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvc2VydmljZS9tb2RlbC5jb250ZXh0LnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50eXBlcy5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlRGJ4RmlyZWJhc2VDb25maWc8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+IHtcbiAgLy8gUmVxdWlyZWQgQ29uZmlndXJhdGlvbnNcbiAgcmVhZG9ubHkgYXBwOiBQcm92aWRlRGJ4RmlyZWJhc2VBcHBDb25maWc7XG4gIHJlYWRvbmx5IGVtdWxhdG9yOiBQcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcnNDb25maWc7XG4gIHJlYWRvbmx5IHN0b3JhZ2U6IFByb3ZpZGVEYnhGaXJlYmFzZVN0b3JhZ2VDb25maWc7XG4gIHJlYWRvbmx5IGF1dGg6IFByb3ZpZGVEYnhGaXJlYmFzZUF1dGhDb25maWc7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uczogUHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zQ29uZmlnPFQsIE0+O1xuICByZWFkb25seSBmaXJlc3RvcmVzOiBBcnJheU9yVmFsdWU8UHJvdmlkZURieEZpcmViYXNlRmlyZXN0b3JlQ29sbGVjdGlvbkNvbmZpZzxhbnk+PjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UoKS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsQ29udGV4dFNlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VDb25maWc8YW55PjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbFR5cGVzU2VydmljZTogUHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWc7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudC5cbiAgICpcbiAgICogSWYgZmFsc2UsIHByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50KCkgd2lsbCBub3QgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ/OiBQcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudENvbmZpZyB8IGZhbHNlO1xuXG4gIC8vIE9wdGlvbmFsXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zKCkuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnM/OiBQcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlKCkgd2lsbCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyPzogTWF5YmU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogQWxsLWluLW9uZSBwcm92aWRlciBmb3IgcHJvdmlkaW5nIHRoZSBtYWluIGNvbmZpZ3VyYXRpb25zIGZvciBEYnhGaXJlYmFzZS5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgZm9sbG93aW5nIGFscmVhZHkgYmUgcHJvdmlkZWQvY2FsbGVkOlxuICogLSBwcm92aWRlRGJ4TW9kZWxTZXJ2aWNlKClcbiAqXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZSgpLlxuICogQHJldHVybnMgRW52aXJvbm1lbnRQcm92aWRlcnMgZm9yIHRoZSBEYnhGaXJlYmFzZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURieEZpcmViYXNlPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPihjb25maWc6IFByb3ZpZGVEYnhGaXJlYmFzZUNvbmZpZzxULCBNPikge1xuICBjb25zdCB7IGFwcCwgZW11bGF0b3IsIHN0b3JhZ2UsIGF1dGgsIGZ1bmN0aW9ucywgZmlyZXN0b3JlcywgbW9kZWxDb250ZXh0U2VydmljZSwgbW9kZWxUeXBlc1NlcnZpY2UsIGRldmVsb3BtZW50LCBub3RpZmljYXRpb25zLCBwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyIH0gPSBjb25maWc7XG5cbiAgY29uc3QgcHJvdmlkZXJzOiBFbnZpcm9ubWVudFByb3ZpZGVyc1tdID0gW3Byb3ZpZGVEYnhGaXJlYmFzZUFwcChhcHApLCBwcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcihlbXVsYXRvciksIHByb3ZpZGVkRGJ4RmlyZWJhc2VTdG9yYWdlKHN0b3JhZ2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VBdXRoKGF1dGgpLCBwcm92aWRlRGJ4RmlyZWJhc2VGdW5jdGlvbnMoZnVuY3Rpb25zKSwgcHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZShtb2RlbENvbnRleHRTZXJ2aWNlKSwgcHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UobW9kZWxUeXBlc1NlcnZpY2UpXTtcblxuICBhc0FycmF5KGZpcmVzdG9yZXMpLmZvckVhY2goKGZpcmVzdG9yZSkgPT4ge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlc3RvcmVDb2xsZWN0aW9uKGZpcmVzdG9yZSkpO1xuICB9KTtcblxuICBpZiAocHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lclNlcnZpY2UoKSk7XG4gIH1cblxuICBpZiAoZGV2ZWxvcG1lbnQgIT09IGZhbHNlKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQoZGV2ZWxvcG1lbnQgPz8ge30pKTtcbiAgfVxuXG4gIGlmIChub3RpZmljYXRpb25zICE9IG51bGwpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpKTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQTRDbkc7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQTJELE1BQXNDO0lBQ2pJLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFNLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTVVLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGtDQUFrQyxFQUFFLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIEZpcmViYXNlRnVuY3Rpb25zTWFwIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQXV0aCwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLy9maXJlYmFzZS5hdXRoLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvciwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcnNDb25maWcgfSBmcm9tICcuL2ZpcmViYXNlL2ZpcmViYXNlLmVtdWxhdG9yLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBcHAsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnIH0gZnJvbSAnLi9maXJlYmFzZS9maXJlYmFzZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VGaXJlc3RvcmVDb2xsZWN0aW9uQ29uZmlnLCBwcm92aWRlRGJ4RmlyZXN0b3JlQ29sbGVjdGlvbiB9IGZyb20gJy4vZmlyZXN0b3JlL2ZpcmViYXNlLmZpcmVzdG9yZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZyB9IGZyb20gJy4vZnVuY3Rpb24vZmlyZWJhc2UuZnVuY3Rpb24ucHJvdmlkZXJzJztcbmltcG9ydCB7IHR5cGUgUHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUNvbmZpZywgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UvZmlyZWJhc2Uuc3RvcmFnZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfSBmcm9tICcuL2RldmVsb3BtZW50L2RldmVsb3BtZW50LnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnNDb25maWcgfSBmcm9tICcuL21vZHVsZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9zZXJ2aWNlL21vZGVsLmNvbnRleHQucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3N0b3JhZ2VmaWxlLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPiB7XG4gIC8vIFJlcXVpcmVkIENvbmZpZ3VyYXRpb25zXG4gIHJlYWRvbmx5IGFwcDogUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnO1xuICByZWFkb25seSBlbXVsYXRvcjogUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnO1xuICByZWFkb25seSBzdG9yYWdlOiBQcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnO1xuICByZWFkb25seSBmdW5jdGlvbnM6IFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZzxULCBNPjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlczogQXJyYXlPclZhbHVlPFByb3ZpZGVEYnhGaXJlYmFzZUZpcmVzdG9yZUNvbGxlY3Rpb25Db25maWc8YW55Pj47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbENvbnRleHRTZXJ2aWNlOiBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnPGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSgpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxUeXBlc1NlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIElmIGZhbHNlLCBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudCgpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmVsb3BtZW50PzogUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfCBmYWxzZTtcblxuICAvLyBPcHRpb25hbFxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMoKSB3aWxsIG5vdCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25zPzogUHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9uc0NvbmZpZztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpIHdpbGwgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcj86IE1heWJlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSB3aWxsIGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2U/OiBNYXliZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBBbGwtaW4tb25lIHByb3ZpZGVyIGZvciBwcm92aWRpbmcgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgZm9yIERieEZpcmViYXNlLlxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYWxyZWFkeSBiZSBwcm92aWRlZC9jYWxsZWQ6XG4gKiAtIHByb3ZpZGVEYnhNb2RlbFNlcnZpY2UoKVxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlKCkuXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudFByb3ZpZGVycyBmb3IgdGhlIERieEZpcmViYXNlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGJ4RmlyZWJhc2U8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+KGNvbmZpZzogUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0+KSB7XG4gIGNvbnN0IHsgYXBwLCBlbXVsYXRvciwgc3RvcmFnZSwgYXV0aCwgZnVuY3Rpb25zLCBmaXJlc3RvcmVzLCBtb2RlbENvbnRleHRTZXJ2aWNlLCBtb2RlbFR5cGVzU2VydmljZSwgZGV2ZWxvcG1lbnQsIG5vdGlmaWNhdGlvbnMsIHByb3ZpZGVBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXIsIHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UgfSA9IGNvbmZpZztcblxuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbcHJvdmlkZURieEZpcmViYXNlQXBwKGFwcCksIHByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yKGVtdWxhdG9yKSwgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2Uoc3RvcmFnZSksIHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgoYXV0aCksIHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKG1vZGVsQ29udGV4dFNlcnZpY2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZShtb2RlbFR5cGVzU2VydmljZSldO1xuXG4gIGFzQXJyYXkoZmlyZXN0b3JlcykuZm9yRWFjaCgoZmlyZXN0b3JlKSA9PiB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmVzdG9yZUNvbGxlY3Rpb24oZmlyZXN0b3JlKSk7XG4gIH0pO1xuXG4gIGlmIChwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpKTtcbiAgfVxuXG4gIGlmIChkZXZlbG9wbWVudCAhPT0gZmFsc2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudChkZXZlbG9wbWVudCA/PyB7fSkpO1xuICB9XG5cbiAgaWYgKG5vdGlmaWNhdGlvbnMgIT0gbnVsbCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucykpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSk7XG4gIH1cblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG4iXX0=
@@ -2,23 +2,23 @@ import * as i0 from '@angular/core';
2
2
  import { inject, Injectable, APP_INITIALIZER, makeEnvironmentProviders, InjectionToken, Component, Optional, Inject, model, computed, ChangeDetectionStrategy, signal, Directive, input, EventEmitter, output, NgModule, Injector, viewChild, HostListener, ElementRef, forwardRef, effect, Pipe } from '@angular/core';
3
3
  import { DbxAnalyticsService } from '@dereekb/dbx-analytics';
4
4
  import { asObservable, timeoutStartWith, filterMaybe, isNot, SubscriptionObject, lazyFrom, switchMapWhileTrue, loadingStateFromObs, distinctUntilKeysChange, cleanupDestroyable, iterationHasNextAndCanLoadMore, pageItemAccumulatorCurrentPage, accumulatorFlattenPageListLoadingState, useFirst, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageLoadingStateFromObs, useAsObservable, filterMaybeArray, mapEachAsync, invertObservableDecision, filterItemsWithObservableDecision, skipInitialMaybe, distinctUntilModelKeyChange, successResult, beginLoading, errorResult, isLoadingStateLoading, cleanup, mapLoadingState, mapLoadingStateValueWithOperator, distinctUntilHasDifferentValues, MultiSubscriptionObject, startWithBeginLoading, skipAllInitialMaybe } from '@dereekb/rxjs';
5
- import { switchMap, of, shareReplay, map, distinctUntilChanged, EMPTY, catchError, firstValueFrom, BehaviorSubject, combineLatest, first, from, tap, interval, exhaustMap, filter, take, startWith, Subject, throttleTime, NEVER, combineLatestWith, Observable } from 'rxjs';
5
+ import { switchMap, of, shareReplay, map, distinctUntilChanged, EMPTY, catchError, firstValueFrom, BehaviorSubject, combineLatest, first, from, tap, interval, exhaustMap, filter, take, startWith, Subject, throttleTime, NEVER, combineLatestWith, mergeMap, Observable } from 'rxjs';
6
6
  import * as i2 from '@dereekb/dbx-core';
7
- import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, DbxInjectionComponent, AbstractForwardDbxInjectionContextDirective, DbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxAuthService, DbxActionButtonDirective, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionAutoTriggerDirective, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore, newWithInjector, CutTextPipe, DbxActionContextStoreSourceInstance, DbxActionHandlerInstance, dbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance } from '@dereekb/dbx-core';
7
+ import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, DbxInjectionComponent, AbstractForwardDbxInjectionContextDirective, DbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxAuthService, DbxActionButtonDirective, DbxActionDirective, DbxActionEnforceModifiedDirective, DbxActionHandlerDirective, DbxActionAutoTriggerDirective, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore, newWithInjector, CutTextPipe, DbxActionContextStoreSourceInstance, DbxActionHandlerInstance, SimpleStorageAccessorFactory, dbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance } from '@dereekb/dbx-core';
8
8
  import { Auth, authState, idToken, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, reauthenticateWithPopup, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
9
- import { AUTH_ADMIN_ROLE, cachedGetter, urlWithoutParameters, addToSet, removeFromSet, filterMaybeArrayValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, iterableToArray, runAsyncTasksForValues, pushArrayItemsIntoArray, forEachKeyValue, countAllInNestedArray, invertDecision, readableError, isMaybeSo, firstValue, separateValues } from '@dereekb/util';
9
+ import { AUTH_ADMIN_ROLE, cachedGetter, urlWithoutParameters, addToSet, removeFromSet, filterMaybeArrayValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, iterableToArray, runAsyncTasksForValues, pushArrayItemsIntoArray, forEachKeyValue, countAllInNestedArray, invertDecision, readableError, isMaybeSo, firstValue, MS_IN_DAY, SECONDS_IN_MINUTE, MS_IN_HOUR, MS_IN_MINUTE, unixTimeNumberForNow, addMilliseconds, unixTimeNumberFromDate, dateFromDateOrTimeNumber, MS_IN_SECOND, isPast, separateValues } from '@dereekb/util';
10
10
  import { safeFormatToISO8601DateString, msToSeconds, isSameDate } from '@dereekb/date';
11
11
  import { sendPasswordResetEmail } from 'firebase/auth';
12
12
  import { getToken, initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';
13
13
  import { AppCheck, provideAppCheck } from '@angular/fire/app-check';
14
14
  import * as i1$1 from '@dereekb/dbx-web';
15
- import { DbxLinkComponent, DbxActionModule, DbxButtonModule, DbxErrorComponent, DbxActionErrorDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxRouterAnchorModule, DbxWidgetService, AbstractDbxSelectionListWrapperDirective, provideDbxListViewWrapper, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, provideDbxListView, DbxSelectionValueListViewComponentImportsModule, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, TwoColumnsContextStore, DbxAnchorComponent, DbxTwoColumnFullLeftDirective, DbxWidgetViewComponent, DbxTwoColumnComponent, DbxTwoBlockComponent, DbxTwoColumnRightComponent, AbstractPopupDirective, DbxPopupService, DbxPopupContentComponent, DbxPopupControlsComponent, DbxModelTypesService, DbxModelTrackerService, allDbxModelViewTrackerEventModelKeys, DbxListItemAnchorModifierDirective, DbxValueListItemModifierDirective, AbstractPopoverDirective, DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxListEmptyContentComponent, AbstractPopoverRefDirective, DbxPopoverService, DbxIconButtonComponent, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule, DbxFileUploadComponent, DbxLoadingComponent, DbxActionLoadingContextDirective, DbxActionSnackbarErrorDirective, DbxFileUploadActionSyncDirective } from '@dereekb/dbx-web';
15
+ import { DbxLinkComponent, DbxActionModule, DbxButtonModule, DbxErrorComponent, DbxActionErrorDirective, DbxButtonComponent, DbxButtonSpacerDirective, DbxRouterAnchorModule, DbxWidgetService, AbstractDbxSelectionListWrapperDirective, provideDbxListViewWrapper, DbxListWrapperComponentImportsModule, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxSelectionListViewDirective, provideDbxListView, DbxSelectionValueListViewComponentImportsModule, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, AbstractDbxValueListViewItemComponent, TwoColumnsContextStore, DbxAnchorComponent, DbxTwoColumnFullLeftDirective, DbxWidgetViewComponent, DbxTwoColumnComponent, DbxTwoBlockComponent, DbxTwoColumnRightComponent, AbstractPopupDirective, DbxPopupService, DbxPopupContentComponent, DbxPopupControlsComponent, DbxModelTypesService, DbxModelTrackerService, allDbxModelViewTrackerEventModelKeys, DbxListItemAnchorModifierDirective, DbxValueListItemModifierDirective, AbstractPopoverDirective, DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxListEmptyContentComponent, AbstractPopoverRefDirective, DbxPopoverService, DbxIconButtonComponent, DbxModelObjectStateService, DbxListViewWrapper, AbstractDbxWidgetComponent, DbxPopoverInteractionModule, DbxListModifierModule, DbxEmbedDialogComponent, DbxActionSnackbarErrorDirective, DbxActionDialogDirective, DbxFileUploadComponent, DbxLoadingComponent, DbxActionLoadingContextDirective, DbxFileUploadActionSyncDirective } from '@dereekb/dbx-web';
16
16
  import * as i1 from '@angular/material/icon';
17
17
  import { MatIconModule } from '@angular/material/icon';
18
18
  import * as i1$2 from '@dereekb/dbx-form';
19
19
  import { AbstractSyncFormlyFormDirective, emailField, dbxFormlyFormComponentProviders, DbxFormlyFormComponentImportsModule, DBX_FORMLY_FORM_COMPONENT_TEMPLATE, AbstractConfigAsyncFormlyFormDirective, usernamePasswordLoginFields, DbxActionFormDirective, DbxFormSourceDirective, pickableItemChipField, filterPickableItemFieldValuesByLabel } from '@dereekb/dbx-form';
20
20
  import * as i1$4 from '@dereekb/firebase';
21
- import { firebaseAuthErrorToReadableError, FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFunctionTypeEnum, clientFirebaseFirestoreContextFactory, SystemStateFirestoreCollections, NotificationFirestoreCollections, StorageFileFirestoreCollections, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, iterationQueryDocChangeWatcher, firebaseQuerySnapshotAccumulator, firebaseQueryItemAccumulator, firestoreModelKeysFromDocuments, firestoreModelIdsFromDocuments, documentReferencesFromDocuments, getDocumentSnapshots, getDataFromDocumentSnapshots, latestSnapshotsFromDocuments, dataFromDocumentSnapshots, loadDocumentsForKeys, loadDocumentsForDocumentReferences, loadDocumentsForIds, firestoreModelKeyCollectionTypePair, buildFirebaseCollectionTypeModelTypeMap, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, StorageFileFunctions, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
21
+ import { firebaseAuthErrorToReadableError, FirebaseDevelopmentFunctions, ScheduledFunctionDevelopmentFunctionTypeEnum, clientFirebaseFirestoreContextFactory, SystemStateFirestoreCollections, NotificationFirestoreCollections, StorageFileFirestoreCollections, FIREBASE_DEVELOPMENT_FUNCTIONS_MAP_KEY, iterationQueryDocChangeWatcher, firebaseQuerySnapshotAccumulator, firebaseQueryItemAccumulator, firestoreModelKeysFromDocuments, firestoreModelIdsFromDocuments, documentReferencesFromDocuments, getDocumentSnapshots, getDataFromDocumentSnapshots, latestSnapshotsFromDocuments, dataFromDocumentSnapshots, loadDocumentsForKeys, loadDocumentsForDocumentReferences, loadDocumentsForIds, firestoreModelKeyCollectionTypePair, buildFirebaseCollectionTypeModelTypeMap, FirestoreAccessorStreamMode, firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, flatFirestoreModelKey, twoWayFlatFirestoreModelKey, documentDataWithIdAndKey, isClientFirebaseError, FIRESTORE_PERMISSION_DENIED_ERROR_CODE, inferKeyFromTwoWayFlatFirestoreModelKey, firestoreModelKeyParentKey, AppNotificationTemplateTypeInfoRecordService, NotificationFunctions, unreadNotificationItems, firestoreModelId, StorageFileFunctions, firestoreModelKey, storageFileIdentity, clientFirebaseStorageContextFactory } from '@dereekb/firebase';
22
22
  import { NgTemplateOutlet, DatePipe } from '@angular/common';
23
23
  import * as i1$3 from '@angular/material/button';
24
24
  import { MatButtonModule } from '@angular/material/button';
@@ -32,6 +32,7 @@ import { provideFirestore, persistentMultipleTabManager, persistentSingleTabMana
32
32
  import { HTTP_INTERCEPTORS } from '@angular/common/http';
33
33
  import { __decorate, __param, __metadata } from 'tslib';
34
34
  import { ComponentStore } from '@ngrx/component-store';
35
+ import { MatDialog } from '@angular/material/dialog';
35
36
  import { BaseError } from 'make-error';
36
37
 
37
38
  function authUserInfoFromAuthUser(user) {
@@ -5303,6 +5304,405 @@ function provideDbxFirebaseNotifications(config) {
5303
5304
  return makeEnvironmentProviders(providers);
5304
5305
  }
5305
5306
 
5307
+ /**
5308
+ * Token that corresponds to a StorageAccessor<DbxFirebaseStorageFileDownloadUserCache> that is used by DbxModelViewTrackerStorage.
5309
+ */
5310
+ const DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN = new InjectionToken('DbxFirebaseStorageFileDownloadStorageAccessor');
5311
+ /**
5312
+ * Used for managing DbxModelViewTrackerEvent storage.
5313
+ */
5314
+ class DbxFirebaseStorageFileDownloadStorage {
5315
+ static DEFAULT_MAX_DOWNLOAD_URLS = 100;
5316
+ authService = inject(DbxFirebaseAuthService);
5317
+ storageAccessor = inject(DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN);
5318
+ addDownloadUrl({ id, downloadUrl, expiresAt }) {
5319
+ return this.getCurrentUserDownloadCache().pipe(mergeMap((cache) => {
5320
+ const { uid, pairs: currentPairs } = cache;
5321
+ const storageKey = this.getStorageKeyForUid(uid);
5322
+ const pairs = {
5323
+ ...currentPairs,
5324
+ [id]: `${expiresAt}_${downloadUrl}`
5325
+ };
5326
+ return this.storageAccessor.set(storageKey, {
5327
+ uid,
5328
+ pairs
5329
+ });
5330
+ }), first());
5331
+ }
5332
+ /**
5333
+ * Returns the cached download URL pair for the given key.
5334
+ *
5335
+ * The pair may be expired.
5336
+ *
5337
+ * @param key
5338
+ * @returns
5339
+ */
5340
+ getDownloadUrlPair(input) {
5341
+ const id = firestoreModelId(input);
5342
+ return this.authService.uid$.pipe(switchMap((uid) => {
5343
+ return this.getUserDownloadCache(uid).pipe(map((cache) => {
5344
+ const pair = cache?.pairs[id];
5345
+ let result;
5346
+ if (pair) {
5347
+ const [expiresAt, downloadUrl] = pair.split('_', 2);
5348
+ result = {
5349
+ id,
5350
+ downloadUrl,
5351
+ expiresAt: Number(expiresAt)
5352
+ };
5353
+ }
5354
+ return result;
5355
+ }));
5356
+ }), first());
5357
+ }
5358
+ getAllDownloadUrlPairsRecord(uid) {
5359
+ return this.getUserDownloadCache(uid).pipe(map((x) => x.pairs));
5360
+ }
5361
+ getCurrentUserDownloadCache() {
5362
+ return this.authService.uid$.pipe(switchMap((uid) => this.getUserDownloadCache(uid)));
5363
+ }
5364
+ getUserDownloadCache(uid) {
5365
+ const storageKey = this.getStorageKeyForUid(uid);
5366
+ return this._getUserDownloadCacheForStorageKey(storageKey, uid);
5367
+ }
5368
+ clearCurrentUserDownloadCache() {
5369
+ return this.authService.uid$.pipe(switchMap((uid) => this.clearUserDownloadCache(uid)));
5370
+ }
5371
+ clearUserDownloadCache(uid) {
5372
+ const storageKey = this.getStorageKeyForUid(uid);
5373
+ return this.storageAccessor.remove(storageKey);
5374
+ }
5375
+ _getUserDownloadCacheForStorageKey(storageKey, uid) {
5376
+ return this.storageAccessor.get(storageKey).pipe(catchError((e) => {
5377
+ return of(undefined);
5378
+ }), map((result) => result ?? { uid, pairs: {} }));
5379
+ }
5380
+ getStorageKeyForUid(uid) {
5381
+ const storageKey = `sf_dl_cache_${uid}`;
5382
+ return storageKey;
5383
+ }
5384
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5385
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage });
5386
+ }
5387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, decorators: [{
5388
+ type: Injectable
5389
+ }] });
5390
+
5391
+ /**
5392
+ * Service used for retrieving download links for StorageFiles.
5393
+ */
5394
+ class DbxFirebaseStorageFileDownloadService {
5395
+ /**
5396
+ * Expiration duration for cached download URLs.
5397
+ */
5398
+ _expiresAfterTime = 3 * MS_IN_DAY;
5399
+ /**
5400
+ * When reading cached values, this buffer is added to the expiration time to prevent the URL from expiring while it is being used.
5401
+ */
5402
+ _expiresAfterTimeBuffer = SECONDS_IN_MINUTE * 10;
5403
+ storageFileFunctions = inject(StorageFileFunctions);
5404
+ storageFileDownloadStorage = inject(DbxFirebaseStorageFileDownloadStorage);
5405
+ // MARK: Config
5406
+ getExpiresAfterTime() {
5407
+ return this._expiresAfterTime;
5408
+ }
5409
+ setExpiresAfterTime(expiresAfter) {
5410
+ const maxAllowed = MS_IN_DAY * 20;
5411
+ if (expiresAfter > maxAllowed) {
5412
+ throw new Error(`Expires after time cannot be greater than 20 days.`);
5413
+ }
5414
+ else if (expiresAfter < MS_IN_HOUR) {
5415
+ throw new Error(`Expires after time cannot be less than 1 hour.`);
5416
+ }
5417
+ this._expiresAfterTime = expiresAfter;
5418
+ }
5419
+ // MARK: Download
5420
+ /**
5421
+ * Returns an observable that returns the cached download URL pair for the StorageFile, and emits null once it expires.
5422
+ *
5423
+ * @param storageFileIdOrKey
5424
+ * @returns
5425
+ */
5426
+ getCachedDownloadPairForStorageFile(storageFileIdOrKey) {
5427
+ const storageFileId = firestoreModelId(storageFileIdOrKey);
5428
+ return this.storageFileDownloadStorage.getDownloadUrlPair(storageFileId).pipe(switchMap((pair) => {
5429
+ let result;
5430
+ if (pair) {
5431
+ const expiresAt = pair.expiresAt - this._expiresAfterTimeBuffer;
5432
+ // every minute emit the result again
5433
+ result = interval(MS_IN_MINUTE)
5434
+ .pipe(map(() => {
5435
+ const now = unixTimeNumberForNow();
5436
+ const isExpired = now > expiresAt;
5437
+ return isExpired ? null : pair; // emit null once expired
5438
+ }))
5439
+ .pipe(filter((x) => x == null), first(), startWith(pair), distinctUntilChanged(), shareReplay(1));
5440
+ }
5441
+ else {
5442
+ result = of(null);
5443
+ }
5444
+ return result;
5445
+ }));
5446
+ }
5447
+ /**
5448
+ * Retrieves the download URL for the StorageFile using the default parameters.
5449
+ *
5450
+ * These URLs are cached locally to prevent extra/redundant calls to the server.
5451
+ *
5452
+ * @param storageFileIdOrKey
5453
+ * @returns
5454
+ */
5455
+ downloadPairForStorageFile(storageFileIdOrKey) {
5456
+ const storageFileId = firestoreModelId(storageFileIdOrKey);
5457
+ const obs = this.getCachedDownloadPairForStorageFile(storageFileId).pipe(switchMap((cachedPair) => {
5458
+ let result;
5459
+ const downloadAndCacheResult = () => {
5460
+ const expiresAt = addMilliseconds(new Date(), this._expiresAfterTime);
5461
+ return from(this.createDownloadPairForStorageFile(storageFileIdOrKey, { expiresAt })).pipe(tap((downloadUrlPair) => {
5462
+ // add to the cache
5463
+ this.storageFileDownloadStorage.addDownloadUrl(downloadUrlPair).pipe(first()).subscribe();
5464
+ }));
5465
+ };
5466
+ if (cachedPair) {
5467
+ result = of(cachedPair);
5468
+ }
5469
+ else {
5470
+ result = downloadAndCacheResult();
5471
+ }
5472
+ return result;
5473
+ }), first(), shareReplay(1));
5474
+ return obs;
5475
+ }
5476
+ /**
5477
+ * Creates a new download URL for the StorageFile.
5478
+ *
5479
+ * @param storageFileIdOrKey
5480
+ * @param inputParams
5481
+ * @returns
5482
+ */
5483
+ createDownloadPairForStorageFile(storageFileIdOrKey, inputParams) {
5484
+ const storageFileId = firestoreModelId(storageFileIdOrKey);
5485
+ const expiresAt = inputParams?.expiresAt ?? addMilliseconds(new Date(), this._expiresAfterTime);
5486
+ const params = {
5487
+ ...inputParams,
5488
+ key: firestoreModelKey(storageFileIdentity, storageFileId)
5489
+ };
5490
+ return this.storageFileFunctions.storageFile.readStorageFile.download(params).then((x) => {
5491
+ return {
5492
+ id: storageFileId,
5493
+ downloadUrl: x.url,
5494
+ expiresAt: unixTimeNumberFromDate(expiresAt)
5495
+ };
5496
+ });
5497
+ }
5498
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5499
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadService });
5500
+ }
5501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadService, decorators: [{
5502
+ type: Injectable
5503
+ }] });
5504
+
5505
+ class DbxFirebaseStorageFileDownloadButton {
5506
+ dbxFirebaseStorageFileDownloadService = inject(DbxFirebaseStorageFileDownloadService);
5507
+ matDialog = inject(MatDialog);
5508
+ /**
5509
+ * The StorageFileKey to set up the download button for.
5510
+ */
5511
+ storageFileKey = input();
5512
+ /**
5513
+ * The download URL to use for the download button.
5514
+ */
5515
+ storageFileDownloadUrl = input();
5516
+ /**
5517
+ * The MIME type to use the embed component.
5518
+ */
5519
+ embedMimeType = input();
5520
+ /**
5521
+ * Whether or not to show a preview button.
5522
+ *
5523
+ * Defaults to true.
5524
+ */
5525
+ showPreviewButton = input(true);
5526
+ /**
5527
+ * Output event emitted when the download URL changes.
5528
+ */
5529
+ downloadUrlChange = output();
5530
+ config = input();
5531
+ configSignal = computed(() => {
5532
+ const config = this.config();
5533
+ const result = {
5534
+ buttonStyle: config?.buttonStyle,
5535
+ previewButtonStyle: config?.previewButtonStyle,
5536
+ icon: config?.icon ?? 'cloud_download',
5537
+ text: config?.text ?? 'Start Download',
5538
+ downloadReadyIcon: config?.downloadReadyIcon ?? 'download',
5539
+ downloadReadyText: config?.downloadReadyText ?? 'Save File',
5540
+ previewIcon: config?.previewIcon ?? 'preview',
5541
+ previewText: config?.previewText ?? 'View File'
5542
+ };
5543
+ return result;
5544
+ });
5545
+ preloadSignal = computed(() => {
5546
+ const config = this.configSignal();
5547
+ return config.preload ?? false;
5548
+ });
5549
+ downloadUrlSignal = signal(undefined);
5550
+ downloadUrlExpiresAtSignal = signal(undefined);
5551
+ storageFileKey$ = toObservable(this.storageFileKey).pipe(distinctUntilChanged(), shareReplay(1));
5552
+ hasDownloadUrlSignal = computed(() => Boolean(this.downloadUrlSignal()));
5553
+ buttonStyleSignal = computed(() => {
5554
+ const config = this.configSignal();
5555
+ const result = {
5556
+ type: 'raised',
5557
+ ...config.buttonStyle
5558
+ };
5559
+ return result;
5560
+ });
5561
+ previewButtonStyleSignal = computed(() => {
5562
+ const config = this.configSignal();
5563
+ const result = {
5564
+ type: 'raised',
5565
+ ...config.previewButtonStyle
5566
+ };
5567
+ return result;
5568
+ });
5569
+ iconSignal = computed(() => {
5570
+ const config = this.configSignal();
5571
+ const hasDownloadUrl = this.hasDownloadUrlSignal();
5572
+ return hasDownloadUrl ? (config.downloadReadyIcon ?? config.icon) : config.icon;
5573
+ });
5574
+ textSignal = computed(() => {
5575
+ const config = this.configSignal();
5576
+ const hasDownloadUrl = this.hasDownloadUrlSignal();
5577
+ return hasDownloadUrl ? (config.downloadReadyText ?? config.text) : config.text;
5578
+ });
5579
+ previewIconSignal = computed(() => {
5580
+ const config = this.configSignal();
5581
+ return config.previewIcon;
5582
+ });
5583
+ previewTextSignal = computed(() => {
5584
+ const config = this.configSignal();
5585
+ return config.previewText;
5586
+ });
5587
+ anchorSignal = computed(() => {
5588
+ const downloadUrl = this.downloadUrlSignal();
5589
+ let result;
5590
+ if (downloadUrl) {
5591
+ result = {
5592
+ url: downloadUrl
5593
+ };
5594
+ }
5595
+ return result;
5596
+ });
5597
+ storageFileDownloadUrlEffect = effect(() => {
5598
+ const downloadUrl = this.storageFileDownloadUrl();
5599
+ if (downloadUrl || downloadUrl === null) {
5600
+ this.downloadUrlSignal.set(downloadUrl);
5601
+ }
5602
+ }, {
5603
+ allowSignalWrites: true
5604
+ });
5605
+ // Preview
5606
+ showPreviewButtonSignal = computed(() => {
5607
+ const config = this.configSignal();
5608
+ const hasDownloadUrl = this.hasDownloadUrlSignal();
5609
+ return hasDownloadUrl && (config.showPreviewButton ?? true);
5610
+ });
5611
+ handleOpenPreviewDialog = () => {
5612
+ const srcUrl = this.downloadUrlSignal();
5613
+ const embedMimeType = this.embedMimeType();
5614
+ return DbxEmbedDialogComponent.openDialog(this.matDialog, {
5615
+ srcUrl,
5616
+ embedMimeType,
5617
+ sanitizeUrl: true
5618
+ });
5619
+ };
5620
+ // Cached Url Effect
5621
+ // When the key changes, check the cache to see if it is already available, and populate the download url if it is.
5622
+ cachedUrlForStorageFileKey$ = this.storageFileKey$.pipe(switchMap((key) => (key ? this.dbxFirebaseStorageFileDownloadService.getCachedDownloadPairForStorageFile(key) : of(null))), shareReplay(1));
5623
+ cachedUrlForStorageFileKeySignal = toSignal(this.cachedUrlForStorageFileKey$);
5624
+ cachedUrlEffect = effect(() => {
5625
+ const cachedPair = this.cachedUrlForStorageFileKeySignal();
5626
+ if (cachedPair) {
5627
+ this.downloadUrlSignal.set(cachedPair.downloadUrl);
5628
+ this.downloadUrlExpiresAtSignal.set(cachedPair.expiresAt);
5629
+ }
5630
+ }, {
5631
+ allowSignalWrites: true
5632
+ });
5633
+ // Expiration Effect
5634
+ downloadUrlExpiresAt$ = toObservable(this.downloadUrlExpiresAtSignal).pipe(map(dateFromDateOrTimeNumber), distinctUntilChanged(), shareReplay(1));
5635
+ downloadUrlHasExpired$ = this.downloadUrlExpiresAt$.pipe(switchMap((x) => {
5636
+ let obs;
5637
+ if (x) {
5638
+ obs = interval(MS_IN_SECOND).pipe(map(() => isPast(x)), distinctUntilChanged(), shareReplay(1));
5639
+ }
5640
+ else {
5641
+ obs = of(false);
5642
+ }
5643
+ return obs;
5644
+ }), distinctUntilChanged(), shareReplay(1));
5645
+ downloadUrlHasExpiredSignal = toSignal(this.downloadUrlHasExpired$);
5646
+ downloadUrlHasExpiredEffect = effect(() => {
5647
+ const expired = this.downloadUrlHasExpiredSignal();
5648
+ if (expired) {
5649
+ this.downloadUrlSignal.set(undefined);
5650
+ this.downloadUrlExpiresAtSignal.set(undefined);
5651
+ }
5652
+ }, {
5653
+ allowSignalWrites: true
5654
+ });
5655
+ // Output Effect
5656
+ downloadUrlChangeEffect = effect(() => {
5657
+ const downloadUrl = this.downloadUrlSignal();
5658
+ this.downloadUrlChange.emit(downloadUrl);
5659
+ });
5660
+ // Handlers
5661
+ handleGetDownloadUrl = (value) => {
5662
+ return this.dbxFirebaseStorageFileDownloadService.downloadPairForStorageFile(value);
5663
+ };
5664
+ handleGetDownloadUrlSuccess = (value) => {
5665
+ this.downloadUrlSignal.set(value.downloadUrl);
5666
+ this.downloadUrlExpiresAtSignal.set(value.expiresAt);
5667
+ };
5668
+ handleGetDownloadUrlError = (error) => {
5669
+ this.downloadUrlSignal.set(undefined);
5670
+ this.downloadUrlExpiresAtSignal.set(undefined);
5671
+ };
5672
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
5673
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFirebaseStorageFileDownloadButton, isStandalone: true, selector: "dbx-firebase-storagefile-download-button", inputs: { storageFileKey: { classPropertyName: "storageFileKey", publicName: "storageFileKey", isSignal: true, isRequired: false, transformFunction: null }, storageFileDownloadUrl: { classPropertyName: "storageFileDownloadUrl", publicName: "storageFileDownloadUrl", isSignal: true, isRequired: false, transformFunction: null }, embedMimeType: { classPropertyName: "embedMimeType", publicName: "embedMimeType", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { downloadUrlChange: "downloadUrlChange" }, ngImport: i0, template: `
5674
+ <dbx-anchor dbxActionAnchor [anchor]="anchorSignal()" dbxAction [dbxActionAutoTrigger]="preloadSignal()" dbxActionSnackbarError [dbxActionDisabled]="!storageFileKey()" [dbxActionValue]="storageFileKey" [dbxActionHandler]="handleGetDownloadUrl" [dbxActionSuccessHandler]="handleGetDownloadUrlSuccess" [dbxActionErrorHandler]="handleGetDownloadUrlError">
5675
+ <dbx-button dbxActionButton [buttonStyle]="buttonStyleSignal()" [icon]="iconSignal()" [text]="textSignal()"></dbx-button>
5676
+ </dbx-anchor>
5677
+ @if (showPreviewButtonSignal()) {
5678
+ <ng-container dbxAction [dbxActionDialog]="handleOpenPreviewDialog" dbxActionHandlerValue>
5679
+ <span class="dbx-button-spacer"></span>
5680
+ <dbx-button dbxActionButton [buttonStyle]="previewButtonStyleSignal()" [icon]="previewIconSignal()" [text]="previewTextSignal()"></dbx-button>
5681
+ </ng-container>
5682
+ }
5683
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionHandlerValueDirective, selector: "[dbxActionHandlerValue]", inputs: ["dbxActionHandlerValue"] }, { kind: "directive", type: i2.DbxActionDisabledDirective, selector: "[dbxActionDisabled]", inputs: ["dbxActionDisabled"] }, { kind: "directive", type: i2.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionErrorHandlerDirective, selector: "[dbxActionErrorHandler]", inputs: ["dbxActionErrorHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxActionDialogDirective, selector: "[dbxActionDialog]", inputs: ["dbxActionDialog", "dbxActionDialogIsModified", "dbxActionDialogIsEqual"], exportAs: ["dbxActionDialog"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5684
+ }
5685
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButton, decorators: [{
5686
+ type: Component,
5687
+ args: [{
5688
+ selector: 'dbx-firebase-storagefile-download-button',
5689
+ template: `
5690
+ <dbx-anchor dbxActionAnchor [anchor]="anchorSignal()" dbxAction [dbxActionAutoTrigger]="preloadSignal()" dbxActionSnackbarError [dbxActionDisabled]="!storageFileKey()" [dbxActionValue]="storageFileKey" [dbxActionHandler]="handleGetDownloadUrl" [dbxActionSuccessHandler]="handleGetDownloadUrlSuccess" [dbxActionErrorHandler]="handleGetDownloadUrlError">
5691
+ <dbx-button dbxActionButton [buttonStyle]="buttonStyleSignal()" [icon]="iconSignal()" [text]="textSignal()"></dbx-button>
5692
+ </dbx-anchor>
5693
+ @if (showPreviewButtonSignal()) {
5694
+ <ng-container dbxAction [dbxActionDialog]="handleOpenPreviewDialog" dbxActionHandlerValue>
5695
+ <span class="dbx-button-spacer"></span>
5696
+ <dbx-button dbxActionButton [buttonStyle]="previewButtonStyleSignal()" [icon]="previewIconSignal()" [text]="previewTextSignal()"></dbx-button>
5697
+ </ng-container>
5698
+ }
5699
+ `,
5700
+ imports: [DbxButtonComponent, DbxActionModule, DbxActionSnackbarErrorDirective, DbxActionDialogDirective, DbxAnchorComponent],
5701
+ changeDetection: ChangeDetectionStrategy.OnPush,
5702
+ standalone: true
5703
+ }]
5704
+ }] });
5705
+
5306
5706
  /**
5307
5707
  * Store used for selecting a specific NotificationItem from a list of notification items.
5308
5708
  */
@@ -5778,6 +6178,7 @@ class StorageFileDocumentStore extends AbstractDbxFirebaseDocumentStore {
5778
6178
  updateStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.update);
5779
6179
  processStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.process);
5780
6180
  deleteStorageFile = firebaseDocumentStoreDeleteFunction(this, this.storageFileFunctions.storageFile.deleteStorageFile.delete);
6181
+ downloadStorageFile = firebaseDocumentStoreReadFunction(this, this.storageFileFunctions.storageFile.readStorageFile.download);
5781
6182
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5782
6183
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore });
5783
6184
  }
@@ -5976,6 +6377,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
5976
6377
  }]
5977
6378
  }] });
5978
6379
 
6380
+ /**
6381
+ * Factory function for creating a StorageAccessor for the model view tracker.
6382
+ */
6383
+ function defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory(storageAccessorFactory) {
6384
+ const accessor = storageAccessorFactory.createStorageAccessor({
6385
+ prefix: 'sfds'
6386
+ });
6387
+ return accessor;
6388
+ }
6389
+ /**
6390
+ * Creates EnvironmentProviders for providing DbxModelTrackerService, DbxModelObjectStateService and sets up the NgRx store for DbxModelTrackerEffects.
6391
+ *
6392
+ * @returns EnvironmentProviders
6393
+ */
6394
+ function provideDbxFirebaseStorageFileService() {
6395
+ const providers = [
6396
+ // Storage accessor
6397
+ {
6398
+ provide: DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN,
6399
+ useFactory: defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory,
6400
+ deps: [SimpleStorageAccessorFactory]
6401
+ },
6402
+ // Service
6403
+ DbxFirebaseStorageFileDownloadStorage,
6404
+ DbxFirebaseStorageFileDownloadService
6405
+ ];
6406
+ return makeEnvironmentProviders(providers);
6407
+ }
6408
+
5979
6409
  class FlatFirestoreModelKeyPipe {
5980
6410
  transform(input) {
5981
6411
  if (input != null) {
@@ -6221,7 +6651,7 @@ function provideDbxFirebaseModelTypesService(config) {
6221
6651
  * @returns EnvironmentProviders for the DbxFirebase configuration.
6222
6652
  */
6223
6653
  function provideDbxFirebase(config) {
6224
- const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener } = config;
6654
+ const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener, provideStorageFileService } = config;
6225
6655
  const providers = [provideDbxFirebaseApp(app), provideDbxFirebaseEmulator(emulator), providedDbxFirebaseStorage(storage), provideDbxFirebaseAuth(auth), provideDbxFirebaseFunctions(functions), provideDbxFirebaseModelContextService(modelContextService), provideDbxFirebaseModelTypesService(modelTypesService)];
6226
6656
  asArray(firestores).forEach((firestore) => {
6227
6657
  providers.push(provideDbxFirestoreCollection(firestore));
@@ -6235,6 +6665,9 @@ function provideDbxFirebase(config) {
6235
6665
  if (notifications != null) {
6236
6666
  providers.push(provideDbxFirebaseNotifications(notifications));
6237
6667
  }
6668
+ if (provideStorageFileService) {
6669
+ providers.push(provideDbxFirebaseStorageFileService());
6670
+ }
6238
6671
  return makeEnvironmentProviders(providers);
6239
6672
  }
6240
6673
 
@@ -6242,5 +6675,5 @@ function provideDbxFirebase(config) {
6242
6675
  * Generated bundle index. Do not edit.
6243
6676
  */
6244
6677
 
6245
- export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageModule, DbxFirebaseStorageService, DbxFirebaseSystemStateCollectionStoreDirective, DbxFirebaseSystemStateDocumentStoreDirective, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX, FlatFirestoreModelKeyPipe, NotificationBoxCollectionStore, NotificationBoxDocumentStore, NotificationCollectionStore, NotificationDocumentStore, NotificationSummaryCollectionStore, NotificationSummaryDocumentStore, NotificationUserCollectionStore, NotificationUserDocumentStore, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, StorageFileCollectionStore, StorageFileDocumentStore, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, importsAndExports$1 as importsAndExports, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseNotifications, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
6678
+ export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileDownloadButton, DbxFirebaseStorageFileDownloadService, DbxFirebaseStorageFileDownloadStorage, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageModule, DbxFirebaseStorageService, DbxFirebaseSystemStateCollectionStoreDirective, DbxFirebaseSystemStateDocumentStoreDirective, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX, FlatFirestoreModelKeyPipe, NotificationBoxCollectionStore, NotificationBoxDocumentStore, NotificationCollectionStore, NotificationDocumentStore, NotificationSummaryCollectionStore, NotificationSummaryDocumentStore, NotificationUserCollectionStore, NotificationUserDocumentStore, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, StorageFileCollectionStore, StorageFileDocumentStore, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, importsAndExports$1 as importsAndExports, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseNotifications, provideDbxFirebaseStorageFileService, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
6246
6679
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map