@osovitny/anatoly 3.17.76 → 3.17.79

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.
Files changed (201) hide show
  1. package/esm2022/lib/anatoly.module.mjs +2 -3
  2. package/esm2022/lib/billing/billing.module.mjs +70 -0
  3. package/esm2022/lib/billing/exports.mjs +19 -0
  4. package/esm2022/lib/billing/models/paypal-models.mjs +16 -0
  5. package/esm2022/lib/billing/payments/components/braintree/braintree.component.mjs +155 -0
  6. package/esm2022/lib/billing/payments/components/exports.mjs +22 -0
  7. package/esm2022/lib/billing/payments/components/index.mjs +25 -0
  8. package/esm2022/lib/billing/payments/components/paypal/paypal-button.component.mjs +157 -0
  9. package/esm2022/lib/billing/payments/components/paypal/paypal.component.mjs +316 -0
  10. package/esm2022/lib/billing/payments/components/stripe/stripe.component.mjs +109 -0
  11. package/esm2022/lib/billing/payments/services/payments.service.mjs +173 -0
  12. package/esm2022/lib/billing/services/paypal-script.service.mjs +84 -0
  13. package/esm2022/lib/core/browser.mjs +3 -3
  14. package/esm2022/lib/core/consts/app-settings.mjs +3 -3
  15. package/esm2022/lib/core/consts/core-settings.mjs +3 -3
  16. package/esm2022/lib/core/consts/formats.mjs +3 -3
  17. package/esm2022/lib/core/consts/ga.mjs +26 -0
  18. package/esm2022/lib/core/converts/convert.mjs +3 -3
  19. package/esm2022/lib/core/converts/dateConvert.mjs +3 -3
  20. package/esm2022/lib/core/converts/tz/tzParseTimezone.mjs +3 -3
  21. package/esm2022/lib/core/converts/tz/tzTokenizeDate.mjs +3 -3
  22. package/esm2022/lib/core/converts/xmlFormatter.mjs +3 -3
  23. package/esm2022/lib/core/core.module.mjs +10 -3
  24. package/esm2022/lib/core/dom.mjs +7 -7
  25. package/esm2022/lib/core/enums/billing.mjs +51 -0
  26. package/esm2022/lib/core/enums/enums.mjs +21 -0
  27. package/esm2022/lib/core/exports.mjs +64 -0
  28. package/esm2022/lib/core/go/base-go.service.mjs +4 -4
  29. package/esm2022/lib/core/guards/once-import.guard.mjs +4 -4
  30. package/esm2022/lib/core/guards/starter.guard.mjs +3 -3
  31. package/esm2022/lib/core/guid.mjs +3 -3
  32. package/esm2022/lib/core/interceptors/httpInterceptor.mjs +4 -4
  33. package/esm2022/lib/core/is.mjs +3 -3
  34. package/esm2022/lib/core/localization/localization.module.mjs +3 -3
  35. package/esm2022/lib/core/localization/localization.service.mjs +3 -3
  36. package/esm2022/lib/core/localization/localize.pipe.mjs +3 -3
  37. package/esm2022/lib/core/localization/settings.module.mjs +3 -3
  38. package/esm2022/lib/core/localization/utils.mjs +3 -3
  39. package/esm2022/lib/core/logging/globalErrorHandler.mjs +3 -3
  40. package/esm2022/lib/core/logging/logging.service.mjs +3 -3
  41. package/esm2022/lib/core/models/qs.mjs +17 -0
  42. package/esm2022/lib/core/notifications/alerts.mjs +3 -3
  43. package/esm2022/lib/core/notifications/interfaces/notification.mjs +3 -3
  44. package/esm2022/lib/core/notifications/services/notification-service.mjs +3 -3
  45. package/esm2022/lib/core/performance/stopwatch.mjs +4 -4
  46. package/esm2022/lib/core/services/appcontext.service.mjs +3 -3
  47. package/esm2022/lib/core/services/dm.service.mjs +3 -3
  48. package/esm2022/lib/core/services/google-analytics.service.mjs +3 -3
  49. package/esm2022/lib/core/services/idle.service.mjs +3 -3
  50. package/esm2022/lib/core/services/loading.service.mjs +3 -3
  51. package/esm2022/lib/core/services/script.service.mjs +77 -0
  52. package/esm2022/lib/core/services/starter.service.mjs +1 -1
  53. package/esm2022/lib/core/services/web-storage.service.mjs +4 -4
  54. package/esm2022/lib/core/subs.mjs +3 -3
  55. package/esm2022/lib/core/utils/qsutils.mjs +3 -3
  56. package/esm2022/lib/core/utils/utils.mjs +3 -3
  57. package/esm2022/lib/data/base/api.service.mjs +2 -3
  58. package/esm2022/lib/data/base/grid/grid-edit.service.mjs +2 -3
  59. package/esm2022/lib/data/base/grid/grid-read.service.mjs +2 -3
  60. package/esm2022/lib/data/data.module.mjs +10 -3
  61. package/esm2022/lib/data/exports.mjs +22 -0
  62. package/esm2022/lib/data/services/billing/payments-api.service.mjs +67 -0
  63. package/esm2022/lib/data/services/core-api.service.mjs +5 -5
  64. package/esm2022/lib/data/services/emails-api.service.mjs +5 -5
  65. package/esm2022/lib/external/fa.module.mjs +45 -0
  66. package/esm2022/lib/external/kendo.module.mjs +90 -0
  67. package/esm2022/lib/iam/b2c/b2c.mjs +3 -3
  68. package/esm2022/lib/iam/b2c/consts.mjs +3 -3
  69. package/esm2022/lib/iam/b2c/index.mjs +3 -3
  70. package/esm2022/lib/iam/configs.mjs +3 -3
  71. package/esm2022/lib/iam/consts.mjs +3 -3
  72. package/esm2022/lib/iam/exports.mjs +22 -0
  73. package/esm2022/lib/iam/guards/admin.guard.mjs +3 -3
  74. package/esm2022/lib/iam/guards/authentication.guard.mjs +1 -1
  75. package/esm2022/lib/iam/guards/index.mjs +2 -2
  76. package/esm2022/lib/iam/iam-pages.module.mjs +3 -3
  77. package/esm2022/lib/iam/iam-pages.routes.mjs +3 -3
  78. package/esm2022/lib/iam/iam.module.mjs +3 -3
  79. package/esm2022/lib/iam/pages/signin.page.mjs +3 -3
  80. package/esm2022/lib/iam/pages/signout.page.mjs +3 -3
  81. package/esm2022/lib/iam/pages/signup.page.mjs +3 -3
  82. package/esm2022/lib/iam/redirect.mjs +3 -3
  83. package/esm2022/lib/iam/services/auth.service.mjs +2 -2
  84. package/esm2022/lib/iam/storage.mjs +3 -3
  85. package/esm2022/lib/iam/utils.mjs +3 -3
  86. package/esm2022/lib/ui/components/base/components/component.mjs +4 -4
  87. package/esm2022/lib/ui/components/base/components/edit.component.mjs +4 -4
  88. package/esm2022/lib/ui/components/base/components/enum-edit.component.mjs +4 -4
  89. package/esm2022/lib/ui/components/base/dialog.mjs +3 -3
  90. package/esm2022/lib/ui/components/base/list.mjs +3 -3
  91. package/esm2022/lib/ui/components/base/pages/edit.page.mjs +3 -3
  92. package/esm2022/lib/ui/components/base/pages/page.mjs +3 -3
  93. package/esm2022/lib/ui/components/base/pages/paged.page.mjs +3 -3
  94. package/esm2022/lib/ui/components/billing/buyaccess-button.component.mjs +3 -3
  95. package/esm2022/lib/ui/components/billing/subscribe-plan-button.component.mjs +3 -3
  96. package/esm2022/lib/ui/components/card/card-body.component.mjs +3 -4
  97. package/esm2022/lib/ui/components/card/card-footer.component.mjs +3 -4
  98. package/esm2022/lib/ui/components/card/card-header.component.mjs +3 -4
  99. package/esm2022/lib/ui/components/card/card.component.mjs +3 -4
  100. package/esm2022/lib/ui/components/check-icon/check-icon.component.mjs +3 -3
  101. package/esm2022/lib/ui/components/copy-2-clipboard/copy-2-clipboard.component.mjs +3 -3
  102. package/esm2022/lib/ui/components/datapager/datapager.component.mjs +3 -3
  103. package/esm2022/lib/ui/components/dropdownlists/country/country.dropdownlist.mjs +3 -3
  104. package/esm2022/lib/ui/components/dropdownlists/timezone/timezone.dropdownlist.mjs +3 -3
  105. package/esm2022/lib/ui/components/exports.mjs +50 -0
  106. package/esm2022/lib/ui/components/html-editor/base-html-editor.component.mjs +1 -1
  107. package/esm2022/lib/ui/components/html-editor/forms-html-editor.component.mjs +3 -3
  108. package/esm2022/lib/ui/components/html-editor/html-editor.component.mjs +3 -3
  109. package/esm2022/lib/ui/components/html-editor/html-editor.defaultoptions.mjs +3 -3
  110. package/esm2022/lib/ui/components/identity/signin-button.component.mjs +3 -3
  111. package/esm2022/lib/ui/components/identity/signout-button.component.mjs +3 -3
  112. package/esm2022/lib/ui/components/identity/signup-button.component.mjs +3 -3
  113. package/esm2022/lib/ui/components/index.mjs +44 -37
  114. package/esm2022/lib/ui/components/nodata/nodata.component.mjs +3 -3
  115. package/esm2022/lib/ui/components/spinners/loading/loading.component.mjs +3 -3
  116. package/esm2022/lib/ui/components/spinners/pagespinner/pagespinner.component.mjs +3 -3
  117. package/esm2022/lib/ui/components/urlslug/urlslug.component.mjs +3 -3
  118. package/esm2022/lib/ui/dialogs/contact-us/contact-us.dialog.mjs +3 -3
  119. package/esm2022/lib/ui/dialogs/exports.mjs +17 -0
  120. package/esm2022/lib/ui/dialogs/index.mjs +7 -4
  121. package/esm2022/lib/ui/directives/exports.mjs +18 -0
  122. package/esm2022/lib/ui/directives/hover.directive.mjs +3 -3
  123. package/esm2022/lib/ui/directives/index.mjs +8 -5
  124. package/esm2022/lib/ui/directives/native-element.directive.mjs +3 -3
  125. package/esm2022/lib/ui/exports.mjs +22 -0
  126. package/esm2022/lib/ui/forms/components/address/address.component.mjs +6 -6
  127. package/esm2022/lib/ui/forms/components/company/company.component.mjs +4 -4
  128. package/esm2022/lib/ui/forms/contact-us/contact-us.mjs +3 -3
  129. package/esm2022/lib/ui/forms/exports.mjs +21 -0
  130. package/esm2022/lib/ui/forms/index.mjs +9 -8
  131. package/esm2022/lib/ui/pipes/exports.mjs +19 -0
  132. package/esm2022/lib/ui/pipes/filesize.pipe.mjs +3 -3
  133. package/esm2022/lib/ui/pipes/index.mjs +9 -6
  134. package/esm2022/lib/ui/pipes/replace-text.pipe.mjs +3 -3
  135. package/esm2022/lib/ui/pipes/safeHtml.pipe.mjs +3 -3
  136. package/esm2022/lib/ui/ui.module.mjs +51 -137
  137. package/esm2022/lib/ui/validation/exports.mjs +19 -0
  138. package/esm2022/lib/ui/validation/form-validation-summary.component.mjs +3 -3
  139. package/esm2022/lib/ui/validation/index.mjs +8 -6
  140. package/esm2022/lib/ui/validation/item-validation-summary.component.mjs +3 -3
  141. package/esm2022/lib/ui/validation/validation-summary.component.mjs +3 -3
  142. package/esm2022/public-api.mjs +9 -14
  143. package/fesm2022/osovitny-anatoly.mjs +1671 -891
  144. package/fesm2022/osovitny-anatoly.mjs.map +1 -1
  145. package/lib/billing/billing.module.d.ts +13 -0
  146. package/lib/billing/exports.d.ts +3 -0
  147. package/lib/{payments/PayPal → billing}/models/paypal-models.d.ts +1 -4
  148. package/lib/billing/payments/components/braintree/braintree.component.d.ts +25 -0
  149. package/lib/billing/payments/components/exports.d.ts +4 -0
  150. package/lib/billing/payments/components/index.d.ts +2 -0
  151. package/lib/billing/payments/components/paypal/paypal-button.component.d.ts +18 -0
  152. package/lib/{payments/PayPal/components → billing/payments/components/paypal}/paypal.component.d.ts +3 -3
  153. package/lib/billing/payments/components/stripe/stripe.component.d.ts +21 -0
  154. package/lib/billing/payments/services/payments.service.d.ts +50 -0
  155. package/lib/{payments/PayPal → billing}/services/paypal-script.service.d.ts +3 -4
  156. package/lib/core/consts/ga.d.ts +11 -0
  157. package/lib/core/enums/billing.d.ts +29 -0
  158. package/lib/core/enums/enums.d.ts +4 -0
  159. package/lib/core/{index.d.ts → exports.d.ts} +4 -0
  160. package/lib/core/interceptors/httpInterceptor.d.ts +1 -1
  161. package/lib/core/models/qs.d.ts +4 -0
  162. package/lib/{payments → core}/services/script.service.d.ts +3 -1
  163. package/lib/data/services/billing/payments-api.service.d.ts +13 -0
  164. package/lib/ui/components/base/components/component.d.ts +1 -1
  165. package/lib/ui/components/exports.d.ts +30 -0
  166. package/lib/ui/components/index.d.ts +2 -30
  167. package/lib/ui/dialogs/exports.d.ts +1 -0
  168. package/lib/ui/dialogs/index.d.ts +2 -1
  169. package/lib/ui/directives/exports.d.ts +2 -0
  170. package/lib/ui/directives/index.d.ts +2 -2
  171. package/lib/ui/exports.d.ts +6 -0
  172. package/lib/ui/forms/components/address/address.component.d.ts +2 -2
  173. package/lib/ui/forms/components/company/company.component.d.ts +1 -1
  174. package/lib/ui/forms/exports.d.ts +3 -0
  175. package/lib/ui/forms/index.d.ts +2 -3
  176. package/lib/ui/pipes/exports.d.ts +3 -0
  177. package/lib/ui/pipes/index.d.ts +2 -3
  178. package/lib/ui/ui.module.d.ts +21 -21
  179. package/lib/ui/validation/exports.d.ts +3 -0
  180. package/lib/ui/validation/index.d.ts +2 -3
  181. package/package.json +4 -2
  182. package/public-api.d.ts +6 -11
  183. package/esm2022/lib/core/index.mjs +0 -59
  184. package/esm2022/lib/data/index.mjs +0 -23
  185. package/esm2022/lib/data/urls.mjs +0 -22
  186. package/esm2022/lib/iam/index.mjs +0 -22
  187. package/esm2022/lib/payments/PayPal/components/paypal.component.mjs +0 -317
  188. package/esm2022/lib/payments/PayPal/models/paypal-models.mjs +0 -17
  189. package/esm2022/lib/payments/PayPal/services/paypal-script.service.mjs +0 -98
  190. package/esm2022/lib/payments/index.mjs +0 -22
  191. package/esm2022/lib/payments/payments.module.mjs +0 -54
  192. package/esm2022/lib/payments/services/script.service.mjs +0 -63
  193. package/esm2022/lib/ui/external/fa.module.mjs +0 -46
  194. package/esm2022/lib/ui/external/kendo.module.mjs +0 -91
  195. package/lib/data/urls.d.ts +0 -4
  196. package/lib/payments/index.d.ts +0 -4
  197. package/lib/payments/payments.module.d.ts +0 -8
  198. /package/lib/data/{index.d.ts → exports.d.ts} +0 -0
  199. /package/lib/{ui/external → external}/fa.module.d.ts +0 -0
  200. /package/lib/{ui/external → external}/kendo.module.d.ts +0 -0
  201. /package/lib/iam/{index.d.ts → exports.d.ts} +0 -0
@@ -1,12 +1,15 @@
1
- import js_beautify from 'js-beautify';
2
1
  import * as i0 from '@angular/core';
3
- import { Injectable, Inject, EventEmitter, Output, Pipe, APP_INITIALIZER, Injector, NgModule, Component, ChangeDetectionStrategy, Input, ViewChild, ViewEncapsulation, Directive, HostBinding, HostListener, Optional, SkipSelf } from '@angular/core';
2
+ import { Injectable, Inject, EventEmitter, Output, Pipe, APP_INITIALIZER, Injector, NgModule, Component, Input, ChangeDetectionStrategy, ViewChild, ViewEncapsulation, Directive, HostBinding, HostListener, Optional, SkipSelf } from '@angular/core';
3
+ import * as dropin from 'braintree-web-drop-in';
4
+ import * as i2$1 from '@angular/forms';
5
+ import { FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
6
+ import js_beautify from 'js-beautify';
4
7
  import * as i1 from '@angular/router';
5
8
  import { NavigationEnd, NavigationStart, NavigationCancel, NavigationError, RouterModule } from '@angular/router';
6
9
  import * as i1$1 from '@angular/common/http';
7
10
  import { HttpResponse, HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
8
11
  import { map, tap, mergeMap } from 'rxjs/operators';
9
- import { BehaviorSubject, Subject, filter, takeUntil, map as map$1, catchError, of, merge, forkJoin, timer, fromEvent } from 'rxjs';
12
+ import { BehaviorSubject, Subject, filter, takeUntil, map as map$1, catchError, of, merge, forkJoin, timer, fromEvent, firstValueFrom } from 'rxjs';
10
13
  import * as i4 from '@azure/msal-angular';
11
14
  import { MSAL_GUARD_CONFIG, MsalGuard, MsalInterceptor, MSAL_INTERCEPTOR_CONFIG, MSAL_INSTANCE, MsalService, MsalBroadcastService, MsalModule } from '@azure/msal-angular';
12
15
  import { BrowserUtils, EventType, InteractionStatus, InteractionType, InteractionRequiredAuthError, PromptValue, PublicClientApplication, LogLevel } from '@azure/msal-browser';
@@ -22,16 +25,15 @@ import * as i1$4 from 'ngx-toastr';
22
25
  import { ToastrModule } from 'ngx-toastr';
23
26
  import * as i1$5 from '@angular/platform-browser';
24
27
  import { v4 } from 'uuid';
25
- import * as i2 from '@angular/forms';
26
- import { FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
28
+ import * as i2 from '@progress/kendo-angular-dialog';
29
+ import { DialogsModule } from '@progress/kendo-angular-dialog';
30
+ import { loadStripe } from '@stripe/stripe-js';
27
31
  import * as i1$6 from '@fortawesome/angular-fontawesome';
28
32
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
29
33
  import * as i1$7 from '@progress/kendo-angular-pager';
30
34
  import { PagerModule } from '@progress/kendo-angular-pager';
31
35
  import * as i3 from 'angular-froala-wysiwyg';
32
36
  import { FERootModule } from 'angular-froala-wysiwyg';
33
- import * as i2$1 from '@progress/kendo-angular-dialog';
34
- import { DialogsModule } from '@progress/kendo-angular-dialog';
35
37
  import * as i1$8 from 'ngx-captcha';
36
38
  import { NgxCaptchaModule } from 'ngx-captcha';
37
39
  import { faCheckCircle, faCircleXmark, faDatabase, faCopy } from '@fortawesome/free-solid-svg-icons';
@@ -48,8 +50,8 @@ import { IconsModule } from '@progress/kendo-angular-icons';
48
50
  @osovitny/anatoly
49
51
 
50
52
  Authors:
51
- Vadim Osovitny vadim@osovitny.com
52
- Anatoly Osovitny anatoly@osovitny.com
53
+ Vadim Osovitny vadim.osovitny@osovitny.com
54
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
53
55
 
54
56
  Created:
55
57
  26 Jun 2020
@@ -77,8 +79,8 @@ const ClientApps = AppCoreSettings?.clientApps;
77
79
  @osovitny/anatoly
78
80
 
79
81
  Authors:
80
- Vadim Osovitny vadim@osovitny.com
81
- Anatoly Osovitny anatoly@osovitny.com
82
+ Vadim Osovitny vadim.osovitny@osovitny.com
83
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
82
84
 
83
85
  Created:
84
86
  1 Apr 2024
@@ -119,8 +121,8 @@ const AppSettings = getAppSettingsByName(AppName);
119
121
  @osovitny/anatoly
120
122
 
121
123
  Authors:
122
- Vadim Osovitny vadim@osovitny.com
123
- Anatoly Osovitny anatoly@osovitny.com
124
+ Vadim Osovitny vadim.osovitny@osovitny.com
125
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
124
126
 
125
127
  Created:
126
128
  1 Apr 2024
@@ -146,8 +148,34 @@ const timeFormats = {
146
148
  @osovitny/anatoly
147
149
 
148
150
  Authors:
149
- Vadim Osovitny vadim@osovitny.com
150
- Anatoly Osovitny anatoly@osovitny.com
151
+ Vadim Osovitny vadim.osovitny@osovitny.com
152
+
153
+ Created:
154
+ 11 Nov 2024
155
+
156
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
157
+ </file>
158
+ */
159
+ const GAEvents = {
160
+ login: {
161
+ signin: 'osa_login_signin',
162
+ signin_success: 'osa_login_signin_success',
163
+ signup: 'osa_login_signup',
164
+ signup_success: 'osa_login_signup_success'
165
+ }
166
+ };
167
+ const GABillingEvents = {
168
+ payment: 'osa_billing_payment'
169
+ };
170
+
171
+ /*
172
+ <file>
173
+ Project:
174
+ @osovitny/anatoly
175
+
176
+ Authors:
177
+ Vadim Osovitny vadim.osovitny@osovitny.com
178
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
151
179
 
152
180
  Created:
153
181
  29 June 2020
@@ -243,8 +271,8 @@ class Convert {
243
271
  @osovitny/anatoly
244
272
 
245
273
  Authors:
246
- Vadim Osovitny vadim@osovitny.com
247
- Anatoly Osovitny anatoly@osovitny.com
274
+ Vadim Osovitny vadim.osovitny@osovitny.com
275
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
248
276
 
249
277
  Created:
250
278
  10 Feb 2024
@@ -344,8 +372,8 @@ function getDateTimeFormat(timeZone) {
344
372
  @osovitny/anatoly
345
373
 
346
374
  Authors:
347
- Vadim Osovitny vadim@osovitny.com
348
- Anatoly Osovitny anatoly@osovitny.com
375
+ Vadim Osovitny vadim.osovitny@osovitny.com
376
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
349
377
 
350
378
  Created:
351
379
  10 Feb 2024
@@ -465,8 +493,8 @@ function isValidTimezoneIANAString(timeZoneString) {
465
493
  @osovitny/anatoly
466
494
 
467
495
  Authors:
468
- Vadim Osovitny vadim@osovitny.com
469
- Anatoly Osovitny anatoly@osovitny.com
496
+ Vadim Osovitny vadim.osovitny@osovitny.com
497
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
470
498
 
471
499
  Created:
472
500
  09 Feb 2024
@@ -525,8 +553,8 @@ class DateConvert {
525
553
  @osovitny/anatoly
526
554
 
527
555
  Authors:
528
- Vadim Osovitny vadim@osovitny.com
529
- Anatoly Osovitny anatoly@osovitny.com
556
+ Vadim Osovitny vadim.osovitny@osovitny.com
557
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
530
558
 
531
559
  Created:
532
560
  10 Sep 2022
@@ -558,12 +586,84 @@ class XmlFormatter {
558
586
  @osovitny/anatoly
559
587
 
560
588
  Authors:
561
- Vadim Osovitny vadim@osovitny.com
562
- Anatoly Osovitny anatoly@osovitny.com
589
+ Vadim Osovitny vadim.osovitny@osovitny.com
590
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
591
+
592
+ Created:
593
+ 11 Nov 2024
594
+
595
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
596
+ </file>
597
+ */
598
+ var DiscountCodeType;
599
+ (function (DiscountCodeType) {
600
+ DiscountCodeType[DiscountCodeType["Standard"] = 1] = "Standard";
601
+ DiscountCodeType[DiscountCodeType["UseOnce"] = 2] = "UseOnce";
602
+ })(DiscountCodeType || (DiscountCodeType = {}));
603
+ var DiscountCodeStatus;
604
+ (function (DiscountCodeStatus) {
605
+ DiscountCodeStatus[DiscountCodeStatus["Exist"] = 1] = "Exist";
606
+ DiscountCodeStatus[DiscountCodeStatus["NotFound"] = 2] = "NotFound";
607
+ DiscountCodeStatus[DiscountCodeStatus["AlreadyUsed"] = 3] = "AlreadyUsed";
608
+ })(DiscountCodeStatus || (DiscountCodeStatus = {}));
609
+ var PaymentType;
610
+ (function (PaymentType) {
611
+ PaymentType[PaymentType["FullPayment"] = 1] = "FullPayment";
612
+ PaymentType[PaymentType["WeeklyPayment"] = 2] = "WeeklyPayment";
613
+ PaymentType[PaymentType["BiWeeklyPayment"] = 3] = "BiWeeklyPayment";
614
+ PaymentType[PaymentType["MonthlyPayment"] = 4] = "MonthlyPayment";
615
+ })(PaymentType || (PaymentType = {}));
616
+ var PaymentMethod;
617
+ (function (PaymentMethod) {
618
+ PaymentMethod[PaymentMethod["None"] = 1] = "None";
619
+ PaymentMethod[PaymentMethod["DigitalWallet"] = 2] = "DigitalWallet";
620
+ PaymentMethod[PaymentMethod["CreditCard"] = 3] = "CreditCard";
621
+ PaymentMethod[PaymentMethod["PayPal"] = 4] = "PayPal";
622
+ PaymentMethod[PaymentMethod["Stripe"] = 5] = "Stripe";
623
+ PaymentMethod[PaymentMethod["Venmo"] = 6] = "Venmo";
624
+ PaymentMethod[PaymentMethod["ApplePay"] = 7] = "ApplePay";
625
+ PaymentMethod[PaymentMethod["GooglePay"] = 8] = "GooglePay";
626
+ })(PaymentMethod || (PaymentMethod = {}));
627
+ var PaymentStage;
628
+ (function (PaymentStage) {
629
+ //PayPal/Stripe
630
+ PaymentStage[PaymentStage["External"] = 1] = "External";
631
+ PaymentStage[PaymentStage["Internal"] = 2] = "Internal";
632
+ })(PaymentStage || (PaymentStage = {}));
633
+
634
+ /*
635
+ <file>
636
+ Project:
637
+ @osovitny/anatoly
638
+
639
+ Authors:
640
+ Vadim Osovitny vadim.osovitny@osovitny.com
641
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
642
+
643
+ Created:
644
+ 11 Nov 2024
645
+
646
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
647
+ </file>
648
+ */
649
+ var DataViewType;
650
+ (function (DataViewType) {
651
+ DataViewType["Grid"] = "grid";
652
+ DataViewType["List"] = "list";
653
+ })(DataViewType || (DataViewType = {}));
654
+
655
+ /*
656
+ <file>
657
+ Project:
658
+ @osovitny/anatoly
659
+
660
+ Authors:
661
+ Vadim Osovitny vadim.osovitny@osovitny.com
662
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
563
663
 
564
664
  Created:
565
665
  17 Jun 2018
566
-
666
+
567
667
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
568
668
  </file>
569
669
  */
@@ -603,8 +703,7 @@ class BaseGoService {
603
703
  @osovitny/anatoly
604
704
 
605
705
  Authors:
606
- Vadim Osovitny vadim@osovitny.com
607
- Anatoly Osovitny anatoly@osovitny.com
706
+ Vadim Osovitny vadim.osovitny@osovitny.com
608
707
 
609
708
  Created:
610
709
  13 Nov 2017
@@ -691,8 +790,8 @@ class ApiServiceBase {
691
790
  @osovitny/anatoly
692
791
 
693
792
  Authors:
694
- Vadim Osovitny vadim@osovitny.com
695
- Anatoly Osovitny anatoly@osovitny.com
793
+ Vadim Osovitny vadim.osovitny@osovitny.com
794
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
696
795
 
697
796
  Created:
698
797
  20 Sep 2023
@@ -733,8 +832,8 @@ class MSALStorage {
733
832
  @osovitny/anatoly
734
833
 
735
834
  Authors:
736
- Vadim Osovitny vadim@osovitny.com
737
- Anatoly Osovitny anatoly@osovitny.com
835
+ Vadim Osovitny vadim.osovitny@osovitny.com
836
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
738
837
 
739
838
  Created:
740
839
  20 Sep 2023
@@ -761,8 +860,8 @@ class MSALRedirect {
761
860
  @osovitny/anatoly
762
861
 
763
862
  Authors:
764
- Vadim Osovitny vadim@osovitny.com
765
- Anatoly Osovitny anatoly@osovitny.com
863
+ Vadim Osovitny vadim.osovitny@osovitny.com
864
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
766
865
 
767
866
  Created:
768
867
  20 Sep 2023
@@ -784,8 +883,8 @@ let MSALB2CConfig = MSALConfig?.b2c;
784
883
  @osovitny/anatoly
785
884
 
786
885
  Authors:
787
- Vadim Osovitny vadim@osovitny.com
788
- Anatoly Osovitny anatoly@osovitny.com
886
+ Vadim Osovitny vadim.osovitny@osovitny.com
887
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
789
888
 
790
889
  Created:
791
890
  27 Nov 2023
@@ -830,8 +929,8 @@ class MSALUtils {
830
929
  @osovitny/anatoly
831
930
 
832
931
  Authors:
833
- Vadim Osovitny vadim@osovitny.com
834
- Anatoly Osovitny anatoly@osovitny.com
932
+ Vadim Osovitny vadim.osovitny@osovitny.com
933
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
835
934
 
836
935
  Created:
837
936
  20 Sep 2023
@@ -869,8 +968,8 @@ class MSALB2C {
869
968
  @osovitny/anatoly
870
969
 
871
970
  Authors:
872
- Vadim Osovitny vadim@osovitny.com
873
- Anatoly Osovitny anatoly@osovitny.com
971
+ Vadim Osovitny vadim.osovitny@osovitny.com
972
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
874
973
 
875
974
  Created:
876
975
  20 Sep 2023
@@ -894,8 +993,8 @@ const PolicyType = {
894
993
  @osovitny/anatoly
895
994
 
896
995
  Authors:
897
- Vadim Osovitny vadim@osovitny.com
898
- Anatoly Osovitny anatoly@osovitny.com
996
+ Vadim Osovitny vadim.osovitny@osovitny.com
997
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
899
998
 
900
999
  Created:
901
1000
  20 Sep 2023
@@ -913,12 +1012,12 @@ const PolicyType = {
913
1012
  @osovitny/anatoly
914
1013
 
915
1014
  Authors:
916
- Vadim Osovitny vadim@osovitny.com
917
- Anatoly Osovitny anatoly@osovitny.com
1015
+ Vadim Osovitny vadim.osovitny@osovitny.com
1016
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
918
1017
 
919
1018
  Created:
920
1019
  17 Apr 2023
921
-
1020
+
922
1021
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
923
1022
  </file>
924
1023
  */
@@ -963,12 +1062,12 @@ class Stopwatch {
963
1062
  @osovitny/anatoly
964
1063
 
965
1064
  Authors:
966
- Vadim Osovitny vadim@osovitny.com
967
- Anatoly Osovitny anatoly@osovitny.com
1065
+ Vadim Osovitny vadim.osovitny@osovitny.com
1066
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
968
1067
 
969
1068
  Created:
970
1069
  26 Jun 2020
971
-
1070
+
972
1071
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
973
1072
  </file>
974
1073
  */
@@ -1027,8 +1126,8 @@ class SessionStorageService extends WebStorageService {
1027
1126
  @osovitny/anatoly
1028
1127
 
1029
1128
  Authors:
1030
- Vadim Osovitny vadim@osovitny.com
1031
- Anatoly Osovitny anatoly@osovitny.com
1129
+ Vadim Osovitny vadim.osovitny@osovitny.com
1130
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1032
1131
 
1033
1132
  Created:
1034
1133
  13 Nov 2017
@@ -1595,8 +1694,8 @@ class AuthService extends ApiServiceBase {
1595
1694
  @osovitny/anatoly
1596
1695
 
1597
1696
  Authors:
1598
- Vadim Osovitny vadim@osovitny.com
1599
- Anatoly Osovitny anatoly@osovitny.com
1697
+ Vadim Osovitny vadim.osovitny@osovitny.com
1698
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1600
1699
 
1601
1700
  Created:
1602
1701
  6 Dec 2018
@@ -1660,7 +1759,7 @@ class AuthenticationGuard extends MsalGuard {
1660
1759
  QA
1661
1760
 
1662
1761
  Authors:
1663
- Vadim Osovitny vadim@osovitny.com
1762
+ Vadim Osovitny vadim.osovitny@osovitny.com
1664
1763
 
1665
1764
  Created:
1666
1765
  6 Dec 2018
@@ -1678,8 +1777,8 @@ class AuthenticationGuard extends MsalGuard {
1678
1777
  @osovitny/anatoly
1679
1778
 
1680
1779
  Authors:
1681
- Vadim Osovitny vadim@osovitny.com
1682
- Anatoly Osovitny anatoly@osovitny.com
1780
+ Vadim Osovitny vadim.osovitny@osovitny.com
1781
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1683
1782
 
1684
1783
  Created:
1685
1784
  27 Nov 2023
@@ -1695,8 +1794,8 @@ class AuthenticationGuard extends MsalGuard {
1695
1794
  @osovitny/anatoly
1696
1795
 
1697
1796
  Authors:
1698
- Vadim Osovitny vadim@osovitny.com
1699
- Anatoly Osovitny anatoly@osovitny.com
1797
+ Vadim Osovitny vadim.osovitny@osovitny.com
1798
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1700
1799
 
1701
1800
  Created:
1702
1801
  26 Jun 2020
@@ -1759,8 +1858,8 @@ class LoadingService extends BehaviorSubject {
1759
1858
  @osovitny/anatoly
1760
1859
 
1761
1860
  Authors:
1762
- Vadim Osovitny vadim@osovitny.com
1763
- Anatoly Osovitny anatoly@osovitny.com
1861
+ Vadim Osovitny vadim.osovitny@osovitny.com
1862
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1764
1863
 
1765
1864
  Created:
1766
1865
  26 Jun 2020
@@ -1797,8 +1896,8 @@ class LoggingService {
1797
1896
  @osovitny/anatoly
1798
1897
 
1799
1898
  Authors:
1800
- Vadim Osovitny vadim@osovitny.com
1801
- Anatoly Osovitny anatoly@osovitny.com
1899
+ Vadim Osovitny vadim.osovitny@osovitny.com
1900
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1802
1901
 
1803
1902
  Created:
1804
1903
  25 March 2020
@@ -1940,12 +2039,12 @@ class AnatolyHttpInterceptor {
1940
2039
  @osovitny/anatoly
1941
2040
 
1942
2041
  Authors:
1943
- Vadim Osovitny vadim@osovitny.com
1944
- Anatoly Osovitny anatoly@osovitny.com
2042
+ Vadim Osovitny vadim.osovitny@osovitny.com
2043
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1945
2044
 
1946
2045
  Created:
1947
2046
  26 Jun 2020
1948
-
2047
+
1949
2048
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1950
2049
  </file>
1951
2050
  */
@@ -1961,8 +2060,8 @@ function throwIfAlreadyLoaded(parentModule, moduleName) {
1961
2060
  @osovitny/anatoly
1962
2061
 
1963
2062
  Authors:
1964
- Vadim Osovitny vadim@osovitny.com
1965
- Anatoly Osovitny anatoly@osovitny.com
2063
+ Vadim Osovitny vadim.osovitny@osovitny.com
2064
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
1966
2065
 
1967
2066
  Created:
1968
2067
  09 Feb 2024
@@ -2133,8 +2232,8 @@ class StarterService extends ApiServiceBase {
2133
2232
  @osovitny/anatoly
2134
2233
 
2135
2234
  Authors:
2136
- Vadim Osovitny vadim@osovitny.com
2137
- Anatoly Osovitny anatoly@osovitny.com
2235
+ Vadim Osovitny vadim.osovitny@osovitny.com
2236
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2138
2237
 
2139
2238
  Created:
2140
2239
  15 Nov 2023
@@ -2174,8 +2273,8 @@ class StarterGuard {
2174
2273
  @osovitny/anatoly
2175
2274
 
2176
2275
  Authors:
2177
- Vadim Osovitny vadim@osovitny.com
2178
- Anatoly Osovitny anatoly@osovitny.com
2276
+ Vadim Osovitny vadim.osovitny@osovitny.com
2277
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2179
2278
 
2180
2279
  Created:
2181
2280
  26 Jun 2020
@@ -2205,8 +2304,8 @@ class Subs {
2205
2304
  @osovitny/anatoly
2206
2305
 
2207
2306
  Authors:
2208
- Vadim Osovitny vadim@osovitny.com
2209
- Anatoly Osovitny anatoly@osovitny.com
2307
+ Vadim Osovitny vadim.osovitny@osovitny.com
2308
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2210
2309
 
2211
2310
  Created:
2212
2311
  05 May 2020
@@ -2356,8 +2455,8 @@ class LocalizationService {
2356
2455
  @osovitny/anatoly
2357
2456
 
2358
2457
  Authors:
2359
- Vadim Osovitny vadim@osovitny.com
2360
- Anatoly Osovitny anatoly@osovitny.com
2458
+ Vadim Osovitny vadim.osovitny@osovitny.com
2459
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2361
2460
 
2362
2461
  Created:
2363
2462
  10 May 2020
@@ -2436,8 +2535,8 @@ class LocalizePipe {
2436
2535
  @osovitny/anatoly
2437
2536
 
2438
2537
  Authors:
2439
- Vadim Osovitny vadim@osovitny.com
2440
- Anatoly Osovitny anatoly@osovitny.com
2538
+ Vadim Osovitny vadim.osovitny@osovitny.com
2539
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2441
2540
 
2442
2541
  Created:
2443
2542
  05 May 2020
@@ -2523,8 +2622,8 @@ class LocalizationSettingsModule {
2523
2622
  @osovitny/anatoly
2524
2623
 
2525
2624
  Authors:
2526
- Vadim Osovitny vadim@osovitny.com
2527
- Anatoly Osovitny anatoly@osovitny.com
2625
+ Vadim Osovitny vadim.osovitny@osovitny.com
2626
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2528
2627
 
2529
2628
  Created:
2530
2629
  12 May 2020
@@ -2563,8 +2662,8 @@ class LocalizationModule {
2563
2662
  @osovitny/anatoly
2564
2663
 
2565
2664
  Authors:
2566
- Vadim Osovitny vadim@osovitny.com
2567
- Anatoly Osovitny anatoly@osovitny.com
2665
+ Vadim Osovitny vadim.osovitny@osovitny.com
2666
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2568
2667
 
2569
2668
  Created:
2570
2669
  2 July 2020
@@ -2602,8 +2701,8 @@ class L10nUtils {
2602
2701
  @osovitny/anatoly
2603
2702
 
2604
2703
  Authors:
2605
- Vadim Osovitny vadim@osovitny.com
2606
- Anatoly Osovitny anatoly@osovitny.com
2704
+ Vadim Osovitny vadim.osovitny@osovitny.com
2705
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2607
2706
 
2608
2707
  Created:
2609
2708
  26 Jun 2020
@@ -2639,8 +2738,8 @@ class GlobalErrorHandler {
2639
2738
  @osovitny/anatoly
2640
2739
 
2641
2740
  Authors:
2642
- Vadim Osovitny vadim@osovitny.com
2643
- Anatoly Osovitny anatoly@osovitny.com
2741
+ Vadim Osovitny vadim.osovitny@osovitny.com
2742
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2644
2743
 
2645
2744
  Created:
2646
2745
  3 March 2020
@@ -2752,8 +2851,8 @@ class Alerts {
2752
2851
  @osovitny/anatoly
2753
2852
 
2754
2853
  Authors:
2755
- Vadim Osovitny vadim@osovitny.com
2756
- Anatoly Osovitny anatoly@osovitny.com
2854
+ Vadim Osovitny vadim.osovitny@osovitny.com
2855
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2757
2856
 
2758
2857
  Created:
2759
2858
  2 Jun 2020
@@ -2768,8 +2867,8 @@ class Alerts {
2768
2867
  @osovitny/anatoly
2769
2868
 
2770
2869
  Authors:
2771
- Vadim Osovitny vadim@osovitny.com
2772
- Anatoly Osovitny anatoly@osovitny.com
2870
+ Vadim Osovitny vadim.osovitny@osovitny.com
2871
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2773
2872
 
2774
2873
  Created:
2775
2874
  2 Jun 2020
@@ -2846,8 +2945,8 @@ class NotificationService {
2846
2945
  @osovitny/anatoly
2847
2946
 
2848
2947
  Authors:
2849
- Vadim Osovitny vadim@osovitny.com
2850
- Anatoly Osovitny anatoly@osovitny.com
2948
+ Vadim Osovitny vadim.osovitny@osovitny.com
2949
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2851
2950
 
2852
2951
  Created:
2853
2952
  29 Nov 2020
@@ -2911,8 +3010,8 @@ class DigitalMarketingService {
2911
3010
  @osovitny/anatoly
2912
3011
 
2913
3012
  Authors:
2914
- Vadim Osovitny vadim@osovitny.com
2915
- Anatoly Osovitny anatoly@osovitny.com
3013
+ Vadim Osovitny vadim.osovitny@osovitny.com
3014
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2916
3015
 
2917
3016
  Created:
2918
3017
  29 Nov 2020
@@ -2982,8 +3081,8 @@ class GoogleAnalyticsService {
2982
3081
  @osovitny/anatoly
2983
3082
 
2984
3083
  Authors:
2985
- Vadim Osovitny vadim@osovitny.com
2986
- Anatoly Osovitny anatoly@osovitny.com
3084
+ Vadim Osovitny vadim.osovitny@osovitny.com
3085
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
2987
3086
 
2988
3087
  Created:
2989
3088
  26 Jun 2020
@@ -3055,8 +3154,83 @@ class IdleService {
3055
3154
  @osovitny/anatoly
3056
3155
 
3057
3156
  Authors:
3058
- Vadim Osovitny vadim@osovitny.com
3059
- Anatoly Osovitny anatoly@osovitny.com
3157
+ Vadim Osovitny vadim.osovitny@osovitny.com
3158
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3159
+
3160
+ Created:
3161
+ 14 Jun 2024
3162
+
3163
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3164
+ </file>
3165
+ */
3166
+ //Node
3167
+ class ScriptService {
3168
+ constructor(zone) {
3169
+ this.zone = zone;
3170
+ }
3171
+ getElemId(globalVar) {
3172
+ return `anatoly-script-${globalVar}`;
3173
+ }
3174
+ registerScript(url, globalVar, onReady) {
3175
+ const existingGlobalVar = window[globalVar];
3176
+ if (existingGlobalVar) {
3177
+ // global variable is present = script was already loaded
3178
+ this.zone.run(() => {
3179
+ onReady(existingGlobalVar);
3180
+ });
3181
+ return;
3182
+ }
3183
+ // prepare script elem
3184
+ const scriptElem = document.createElement('script');
3185
+ scriptElem.id = this.getElemId(globalVar);
3186
+ scriptElem.innerHTML = '';
3187
+ scriptElem.onload = () => {
3188
+ this.zone.run(() => {
3189
+ onReady(window[globalVar]);
3190
+ });
3191
+ };
3192
+ scriptElem.src = url;
3193
+ scriptElem.async = true;
3194
+ scriptElem.defer = true;
3195
+ // add script to header
3196
+ document.getElementsByTagName('head')[0].appendChild(scriptElem);
3197
+ }
3198
+ cleanup(globalVar) {
3199
+ // remove script from DOM
3200
+ const scriptElem = document.getElementById(this.getElemId(globalVar));
3201
+ if (scriptElem) {
3202
+ scriptElem.remove();
3203
+ }
3204
+ }
3205
+ getQueryString(queryParams) {
3206
+ let queryString = '';
3207
+ for (let i = 0; i < queryParams.length; i++) {
3208
+ const queryParam = queryParams[i];
3209
+ if (i === 0) {
3210
+ queryString += '?';
3211
+ }
3212
+ else {
3213
+ queryString += '&';
3214
+ }
3215
+ queryString += `${queryParam.name}=${queryParam.value}`;
3216
+ }
3217
+ return queryString;
3218
+ }
3219
+ static { this.ɵfac = function ScriptService_Factory(t) { return new (t || ScriptService)(i0.ɵɵinject(i0.NgZone)); }; }
3220
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ScriptService, factory: ScriptService.ɵfac }); }
3221
+ }
3222
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScriptService, [{
3223
+ type: Injectable
3224
+ }], () => [{ type: i0.NgZone }], null); })();
3225
+
3226
+ /*
3227
+ <file>
3228
+ Project:
3229
+ @osovitny/anatoly
3230
+
3231
+ Authors:
3232
+ Vadim Osovitny vadim.osovitny@osovitny.com
3233
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3060
3234
 
3061
3235
  Created:
3062
3236
  2 May 2023
@@ -3079,8 +3253,8 @@ class Browser {
3079
3253
  @osovitny/anatoly
3080
3254
 
3081
3255
  Authors:
3082
- Vadim Osovitny vadim@osovitny.com
3083
- Anatoly Osovitny anatoly@osovitny.com
3256
+ Vadim Osovitny vadim.osovitny@osovitny.com
3257
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3084
3258
 
3085
3259
  Created:
3086
3260
  8 Aug 2022
@@ -3188,10 +3362,10 @@ class DOM {
3188
3362
  } else if (!DOM.hasClass(e, className)) {
3189
3363
  e.setAttribute('class', `${class} ${className}`);
3190
3364
  }
3191
-
3365
+
3192
3366
  return e;
3193
3367
  }
3194
-
3368
+
3195
3369
  public static removeClass(e: Element, className: string): Element {
3196
3370
  const class = e.getAttribute('class')
3197
3371
  if (class !== null && class !== '') {
@@ -3205,10 +3379,10 @@ class DOM {
3205
3379
  e.setAttribute('class', result);
3206
3380
  }
3207
3381
  }
3208
-
3382
+
3209
3383
  return e;
3210
3384
  }
3211
-
3385
+
3212
3386
  public static hasClass(e: Element, className: string): boolean {
3213
3387
  const class = e.getAttribute('class') || '';
3214
3388
  const r = new RegExp(`\\b${className}\\b`, '');
@@ -3232,8 +3406,8 @@ class DOM {
3232
3406
  @osovitny/anatoly
3233
3407
 
3234
3408
  Authors:
3235
- Vadim Osovitny vadim@osovitny.com
3236
- Anatoly Osovitny anatoly@osovitny.com
3409
+ Vadim Osovitny vadim.osovitny@osovitny.com
3410
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3237
3411
 
3238
3412
  Created:
3239
3413
  26 Jun 2020
@@ -3253,8 +3427,8 @@ class Guid {
3253
3427
  @osovitny/anatoly
3254
3428
 
3255
3429
  Authors:
3256
- Vadim Osovitny vadim@osovitny.com
3257
- Anatoly Osovitny anatoly@osovitny.com
3430
+ Vadim Osovitny vadim.osovitny@osovitny.com
3431
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3258
3432
 
3259
3433
  Created:
3260
3434
  14 Feb 2024
@@ -3330,8 +3504,8 @@ class QSUtils {
3330
3504
  @osovitny/anatoly
3331
3505
 
3332
3506
  Authors:
3333
- Vadim Osovitny vadim@osovitny.com
3334
- Anatoly Osovitny anatoly@osovitny.com
3507
+ Vadim Osovitny vadim.osovitny@osovitny.com
3508
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3335
3509
 
3336
3510
  Created:
3337
3511
  19 March 2020
@@ -3406,8 +3580,8 @@ class Utils {
3406
3580
  @osovitny/anatoly
3407
3581
 
3408
3582
  Authors:
3409
- Vadim Osovitny vadim@osovitny.com
3410
- Anatoly Osovitny anatoly@osovitny.com
3583
+ Vadim Osovitny vadim.osovitny@osovitny.com
3584
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3411
3585
 
3412
3586
  Created:
3413
3587
  2 Aug 2022
@@ -3423,55 +3597,76 @@ class Utils {
3423
3597
  @osovitny/anatoly
3424
3598
 
3425
3599
  Authors:
3426
- Vadim Osovitny vadim@osovitny.com
3427
- Anatoly Osovitny anatoly@osovitny.com
3600
+ Vadim Osovitny vadim.osovitny@osovitny.com
3601
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3428
3602
 
3429
3603
  Created:
3430
- 29 Apr 2018
3604
+ 28 Aug 2018
3431
3605
 
3432
3606
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3433
3607
  </file>
3434
3608
  */
3435
3609
  //Node
3436
- class GridReadServiceBase extends BehaviorSubject {
3437
- constructor(http) {
3438
- super([]);
3439
- this.http = http;
3440
- this.data = [];
3610
+ class ComponentBase {
3611
+ constructor() {
3612
+ this.isDevMode = false;
3613
+ this.subs = new Subs();
3614
+ //Component Data => usually loading from API
3615
+ this.dataLoading = true;
3616
+ this.dataLoaded = false;
3617
+ this.dataFound = false;
3618
+ this.title = '';
3619
+ this.isTitleVisible = true;
3620
+ this.isRequired = false;
3621
+ this.isDevMode = IsDevMode;
3622
+ this.applicationType = 1;
3623
+ this.applicationRoot = '/';
3624
+ if (AppSettings) {
3625
+ this.applicationType = AppSettings.id;
3626
+ if (AppSettings.root != '/') {
3627
+ this.applicationRoot = AppSettings.root;
3628
+ }
3629
+ }
3441
3630
  }
3442
- serializeParams(data) {
3443
- return data ? ('?' + $.param(data)) : '';
3631
+ ngOnInit() {
3444
3632
  }
3445
- read(params, success, error) {
3446
- if (this.data.length) {
3447
- return super.next(this.data);
3448
- }
3449
- var url = this.baseReadUrl;
3450
- if (typeof params === 'undefined') {
3451
- params = this.savedReadParams;
3452
- }
3453
- if (params) {
3454
- url = this.baseReadUrl + `${this.serializeParams(params)}`;
3455
- this.savedReadParams = params;
3456
- }
3457
- this.http.get(url).pipe(map(res => res)).subscribe({
3458
- next: (data) => {
3459
- super.next(data);
3460
- if (success)
3461
- success();
3462
- },
3463
- error: (e) => {
3464
- if (error)
3465
- error(e);
3466
- }
3467
- });
3633
+ ngOnDestroy() {
3634
+ this.subs.unsubscribe();
3468
3635
  }
3469
- static { this.ɵfac = function GridReadServiceBase_Factory(t) { return new (t || GridReadServiceBase)(i0.ɵɵinject(i1$1.HttpClient)); }; }
3470
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GridReadServiceBase, factory: GridReadServiceBase.ɵfac }); }
3636
+ getEntityId() {
3637
+ return QSUtils.getValueByName("id");
3638
+ }
3639
+ dataStartedLoading() {
3640
+ this.dataLoading = true;
3641
+ this.dataLoaded = false;
3642
+ this.dataFound = false;
3643
+ }
3644
+ dataLoadedAndNothingFound() {
3645
+ this.dataLoadedAndFound(false);
3646
+ }
3647
+ dataLoadedAndFound(found = true) {
3648
+ this.dataLoading = false;
3649
+ this.dataLoaded = true;
3650
+ this.dataFound = found;
3651
+ }
3652
+ static { this.ɵfac = function ComponentBase_Factory(t) { return new (t || ComponentBase)(); }; }
3653
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ComponentBase, selectors: [["ng-component"]], inputs: { classes: "classes", title: "title", isTitleVisible: "isTitleVisible", isRequired: "isRequired" }, decls: 0, vars: 0, template: function ComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
3471
3654
  }
3472
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GridReadServiceBase, [{
3473
- type: Injectable
3474
- }], () => [{ type: i1$1.HttpClient }], null); })();
3655
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentBase, [{
3656
+ type: Component,
3657
+ args: [{
3658
+ template: ''
3659
+ }]
3660
+ }], () => [], { classes: [{
3661
+ type: Input
3662
+ }], title: [{
3663
+ type: Input
3664
+ }], isTitleVisible: [{
3665
+ type: Input
3666
+ }], isRequired: [{
3667
+ type: Input
3668
+ }] }); })();
3669
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ComponentBase, { className: "ComponentBase", filePath: "lib\\ui\\components\\base\\components\\component.ts", lineNumber: 26 }); })();
3475
3670
 
3476
3671
  /*
3477
3672
  <file>
@@ -3479,74 +3674,136 @@ class GridReadServiceBase extends BehaviorSubject {
3479
3674
  @osovitny/anatoly
3480
3675
 
3481
3676
  Authors:
3482
- Vadim Osovitny vadim@osovitny.com
3483
- Anatoly Osovitny anatoly@osovitny.com
3677
+ Vadim Osovitny vadim.osovitny@osovitny.com
3678
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3484
3679
 
3485
3680
  Created:
3486
- 29 Apr 2018
3681
+ 20 Nov 2017
3487
3682
 
3488
3683
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3489
3684
  </file>
3490
3685
  */
3491
3686
  //Node
3492
- class GridEditServiceBase extends GridReadServiceBase {
3493
- constructor(http) {
3494
- super(http);
3495
- this.http = http;
3687
+ class EditComponentBase extends ComponentBase {
3688
+ constructor() {
3689
+ super();
3690
+ //Modes
3691
+ this.isAddMode = false;
3692
+ this.isEditMode = false;
3693
+ this.formSubmitted = false;
3694
+ this.controlName = null;
3695
+ this.isEditMode = QSUtils.idExists();
3696
+ this.isAddMode = !this.isEditMode;
3496
3697
  }
3497
- reset() {
3498
- this.data = [];
3698
+ isControlValid(name, frmGroup = null) {
3699
+ return !this.isControlInvalid(name, frmGroup);
3499
3700
  }
3500
- resetItem(dataItem) {
3501
- if (!dataItem) {
3502
- return;
3701
+ isControlInvalid(name, frmGroup = null) {
3702
+ if (typeof name === "undefined" || name == "") {
3703
+ return false;
3503
3704
  }
3504
- //find orignal data item
3505
- const originalDataItem = this.data.find(item => item.Id === dataItem.Id);
3506
- //revert changes
3507
- Object.assign(originalDataItem, dataItem);
3508
- super.next(this.data);
3509
- }
3510
- save(data, isNew, sucess) {
3511
- const action = isNew ? 'add' : 'update';
3512
- this.reset();
3513
- this.post(action, data).subscribe({
3514
- next: (data) => {
3515
- },
3516
- error: (e) => {
3517
- this.read();
3518
- },
3519
- complete: () => {
3520
- this.read();
3521
- if (sucess)
3522
- sucess();
3523
- }
3524
- });
3705
+ let fg = frmGroup ? frmGroup : this.formGroup;
3706
+ if (!fg) {
3707
+ return false;
3708
+ }
3709
+ let control = fg.get(name);
3710
+ if (control) {
3711
+ return ((this.formSubmitted && control.invalid) || (control.touched && control.invalid));
3712
+ }
3713
+ return false;
3525
3714
  }
3526
- delete(data, sucess) {
3527
- this.reset();
3528
- const url = `${this.baseUrl}/delete${this.serializeParams(data)}`;
3529
- return this.http.delete(url).subscribe({
3530
- next: (data) => {
3531
- this.read();
3532
- if (sucess)
3533
- sucess();
3534
- },
3535
- error: (e) => {
3536
- this.read();
3537
- }
3538
- });
3715
+ //FormGroup functions
3716
+ getFormValue(name, frmGroup = null) {
3717
+ let fg = frmGroup ? frmGroup : this.formGroup;
3718
+ return fg.controls[name].value;
3539
3719
  }
3540
- post(action, data) {
3541
- const url = `${this.baseUrl}/${action}${this.serializeParams(data)}`;
3542
- return this.http.post(url, data).pipe(map(res => res));
3720
+ setFormValue(name, value, frmGroup = null) {
3721
+ let fg = frmGroup ? frmGroup : this.formGroup;
3722
+ fg.controls[name].setValue(value);
3543
3723
  }
3544
- static { this.ɵfac = function GridEditServiceBase_Factory(t) { return new (t || GridEditServiceBase)(i0.ɵɵinject(i1$1.HttpClient)); }; }
3545
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GridEditServiceBase, factory: GridEditServiceBase.ɵfac }); }
3724
+ getFormGroupValue(groupName, name, frmGroup = null) {
3725
+ let fg = frmGroup ? frmGroup : this.formGroup;
3726
+ return fg.controls[groupName].get(name).value;
3727
+ }
3728
+ setFormGroupValue(groupName, name, value, frmGroup = null) {
3729
+ let fg = frmGroup ? frmGroup : this.formGroup;
3730
+ fg.controls[groupName].get(name).setValue(value);
3731
+ }
3732
+ /**
3733
+ * Add control to form group
3734
+ * @param name
3735
+ * @param formControl
3736
+ * @param frmGroup
3737
+ */
3738
+ addControl(name, formControl, frmGroup = null) {
3739
+ let fg = frmGroup ? frmGroup : this.formGroup;
3740
+ fg.addControl(name, formControl);
3741
+ }
3742
+ /**
3743
+ * Removes control from form group
3744
+ * @param name
3745
+ * @param frmGroup
3746
+ */
3747
+ removeControl(name, frmGroup = null) {
3748
+ let fg = frmGroup ? frmGroup : this.formGroup;
3749
+ if (fg.get(name)) {
3750
+ fg.removeControl(name);
3751
+ }
3752
+ }
3753
+ /**
3754
+ * return new form control
3755
+ * @param formState
3756
+ * @param validatorOrOpts
3757
+ * @param asyncValidator
3758
+ */
3759
+ createFormControl(formState, validatorOrOpts, asyncValidator) {
3760
+ return new FormControl(formState, validatorOrOpts, asyncValidator);
3761
+ }
3762
+ /**
3763
+ * Set error to control
3764
+ * @param controlName formControl name
3765
+ * @param err error expect {erroname: boolean} format
3766
+ * @param frmGroup
3767
+ */
3768
+ setControlError(controlName, err, frmGroup = null) {
3769
+ let fg = frmGroup ? frmGroup : this.formGroup;
3770
+ fg.get(controlName)?.setErrors(err);
3771
+ }
3772
+ /**
3773
+ * Set {invalid: true} for the specified form
3774
+ * @param controlName form control name
3775
+ * @param frmGroup
3776
+ */
3777
+ setInValidError(controlName, frmGroup = null) {
3778
+ let fg = frmGroup ? frmGroup : this.formGroup;
3779
+ fg.get(controlName)?.setErrors({ invalid: true });
3780
+ }
3781
+ /**
3782
+ * returns formgroup controls.
3783
+ * main use case is used in html pages
3784
+ */
3785
+ get fc() {
3786
+ return this.formGroup.controls;
3787
+ }
3788
+ get isNgModelBased() {
3789
+ return this.controlName == null;
3790
+ }
3791
+ static { this.ɵfac = function EditComponentBase_Factory(t) { return new (t || EditComponentBase)(); }; }
3792
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EditComponentBase, selectors: [["ng-component"]], inputs: { formGroup: "formGroup", formSubmitted: "formSubmitted", controlName: "controlName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EditComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
3546
3793
  }
3547
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GridEditServiceBase, [{
3548
- type: Injectable
3549
- }], () => [{ type: i1$1.HttpClient }], null); })();
3794
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditComponentBase, [{
3795
+ type: Component,
3796
+ args: [{
3797
+ template: ''
3798
+ }]
3799
+ }], () => [], { formGroup: [{
3800
+ type: Input
3801
+ }], formSubmitted: [{
3802
+ type: Input
3803
+ }], controlName: [{
3804
+ type: Input
3805
+ }] }); })();
3806
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EditComponentBase, { className: "EditComponentBase", filePath: "lib\\ui\\components\\base\\components\\edit.component.ts", lineNumber: 28 }); })();
3550
3807
 
3551
3808
  /*
3552
3809
  <file>
@@ -3554,58 +3811,66 @@ class GridEditServiceBase extends GridReadServiceBase {
3554
3811
  @osovitny/anatoly
3555
3812
 
3556
3813
  Authors:
3557
- Vadim Osovitny vadim@osovitny.com
3558
- Anatoly Osovitny anatoly@osovitny.com
3814
+ Vadim Osovitny vadim.osovitny@osovitny.com
3815
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
3559
3816
 
3560
3817
  Created:
3561
- 30 April 2020
3818
+ 24 Jan 2022
3562
3819
 
3563
3820
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3564
3821
  </file>
3565
3822
  */
3566
- //App
3567
- const Urls = {
3568
- coreApiUrl: `${ApiUrl}/core`,
3569
- emailsApiUrl: `${ApiUrl}/emails`
3570
- };
3571
-
3572
- /*
3573
- <file>
3574
- Project:
3575
- @osovitny/anatoly
3576
-
3577
- Authors:
3578
- Vadim Osovitny vadim@osovitny.com
3579
- Anatoly Osovitny anatoly@osovitny.com
3580
-
3581
- Created:
3582
- 02 Aug 2022
3583
-
3584
- Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3585
- </file>
3586
- */
3587
3823
  //Node
3588
- class CoreApiService extends ApiServiceBase {
3589
- constructor(http) {
3590
- super(http);
3591
- this.http = http;
3592
- this.baseUrl = Urls.coreApiUrl;
3824
+ class DialogBase extends EditComponentBase {
3825
+ get isOpen() {
3826
+ return this._isOpen;
3593
3827
  }
3594
- getTimezonesJsonFile() {
3595
- return this.getExternalJsonFile('anatoly', 'timezones.json');
3828
+ set isOpen(value) {
3829
+ if (value) {
3830
+ if (this.osOnBeforeOpen) {
3831
+ this.osOnBeforeOpen();
3832
+ }
3833
+ this.opened.emit();
3834
+ }
3835
+ this._isOpen = value;
3596
3836
  }
3597
- getCountriesJsonFile() {
3598
- return this.getExternalJsonFile('anatoly', 'countries.json');
3837
+ constructor() {
3838
+ super();
3839
+ //Private
3840
+ this._isOpen = false;
3841
+ //Public
3842
+ this.themeColor = "primary";
3843
+ //Events
3844
+ this.opened = new EventEmitter();
3845
+ this.closed = new EventEmitter();
3599
3846
  }
3600
- getUSStatesJsonFile() {
3601
- return this.getExternalJsonFile('anatoly', 'usStates.json');
3847
+ open() {
3848
+ this.isOpen = true;
3602
3849
  }
3603
- static { this.ɵfac = function CoreApiService_Factory(t) { return new (t || CoreApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
3604
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CoreApiService, factory: CoreApiService.ɵfac }); }
3850
+ close(returnValue = "OK") {
3851
+ this.isOpen = false;
3852
+ this.closed.emit(returnValue);
3853
+ }
3854
+ cancel() {
3855
+ this.isOpen = false;
3856
+ this.closed.emit(-1);
3857
+ }
3858
+ static { this.ɵfac = function DialogBase_Factory(t) { return new (t || DialogBase)(); }; }
3859
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogBase, selectors: [["ng-component"]], inputs: { isOpen: "isOpen" }, outputs: { opened: "opened", closed: "closed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DialogBase_Template(rf, ctx) { }, encapsulation: 2 }); }
3605
3860
  }
3606
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CoreApiService, [{
3607
- type: Injectable
3608
- }], () => [{ type: i1$1.HttpClient }], null); })();
3861
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogBase, [{
3862
+ type: Component,
3863
+ args: [{
3864
+ template: ''
3865
+ }]
3866
+ }], () => [], { isOpen: [{
3867
+ type: Input
3868
+ }], opened: [{
3869
+ type: Output
3870
+ }], closed: [{
3871
+ type: Output
3872
+ }] }); })();
3873
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogBase, { className: "DialogBase", filePath: "lib\\ui\\components\\base\\dialog.ts", lineNumber: 27 }); })();
3609
3874
 
3610
3875
  /*
3611
3876
  <file>
@@ -3613,24 +3878,44 @@ class CoreApiService extends ApiServiceBase {
3613
3878
  @osovitny/anatoly
3614
3879
 
3615
3880
  Authors:
3616
- Vadim Osovitny vadim@osovitny.com
3617
- Anatoly Osovitny anatoly@osovitny.com
3881
+ Vadim Osovitny vadim.osovitny@osovitny.com
3618
3882
 
3619
3883
  Created:
3620
- 16 Jun 2022
3884
+ 10 Nov 2024
3621
3885
 
3622
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3886
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3623
3887
  </file>
3624
3888
  */
3625
3889
  //Node
3626
- class EmailsApiService extends ApiServiceBase {
3890
+ class PaymentsApiService extends ApiServiceBase {
3627
3891
  constructor(http) {
3628
3892
  super(http);
3629
3893
  this.http = http;
3630
- this.baseUrl = Urls.emailsApiUrl;
3631
- }
3632
- sendContactUs(captcha, name, email, topic, subject, message, success, error) {
3633
- return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe({
3894
+ this.baseUrl = `${ApiUrl}/billing/payments`;
3895
+ }
3896
+ //Stripe
3897
+ createStripeSession(amount, currency, name, description, image) {
3898
+ return this.post('createStripeSession', { amount, currency, name, description, image }, 'json');
3899
+ }
3900
+ //Braintree
3901
+ createBraintreeToken() {
3902
+ return this.get('createBraintreeToken');
3903
+ }
3904
+ pay(
3905
+ //System
3906
+ paidFor, payMethod,
3907
+ //Amount
3908
+ subtotal, promoCode, total, currency,
3909
+ //Payment method details (PayPal/Stripe/Braintree)
3910
+ payId, payStatus, payDetails, success, error) {
3911
+ return this.post('pay', {
3912
+ //System
3913
+ paidFor, payMethod,
3914
+ //Amount
3915
+ subtotal, promoCode, total, currency,
3916
+ //Payment method details (PayPal/Stripe/Braintree)
3917
+ payId, payStatus, payDetails,
3918
+ }, 'json').subscribe({
3634
3919
  next: (data) => {
3635
3920
  if (success)
3636
3921
  success(data);
@@ -3641,10 +3926,10 @@ class EmailsApiService extends ApiServiceBase {
3641
3926
  }
3642
3927
  });
3643
3928
  }
3644
- static { this.ɵfac = function EmailsApiService_Factory(t) { return new (t || EmailsApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
3645
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EmailsApiService, factory: EmailsApiService.ɵfac }); }
3929
+ static { this.ɵfac = function PaymentsApiService_Factory(t) { return new (t || PaymentsApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
3930
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsApiService, factory: PaymentsApiService.ɵfac }); }
3646
3931
  }
3647
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EmailsApiService, [{
3932
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentsApiService, [{
3648
3933
  type: Injectable
3649
3934
  }], () => [{ type: i1$1.HttpClient }], null); })();
3650
3935
 
@@ -3654,77 +3939,163 @@ class EmailsApiService extends ApiServiceBase {
3654
3939
  @osovitny/anatoly
3655
3940
 
3656
3941
  Authors:
3657
- Vadim Osovitny vadim@osovitny.com
3658
- Anatoly Osovitny anatoly@osovitny.com
3942
+ Vadim Osovitny vadim.osovitny@osovitny.com
3943
+ Dhruv Agarwal dhruv.agarwal@osovitny.com
3659
3944
 
3660
3945
  Created:
3661
- 2 Aug 2022
3662
-
3663
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3664
- </file>
3665
- */
3666
- //base
3667
-
3668
- /*
3669
- <file>
3670
- Project:
3671
- @osovitny/anatoly
3672
-
3673
- Authors:
3674
- Vadim Osovitny vadim@osovitny.com
3675
- Anatoly Osovitny anatoly@osovitny.com
3946
+ 11 Aug 2024
3676
3947
 
3677
- Created:
3678
- 14 Jun 2024
3948
+ Details:
3949
+ https://blog.thoughtram.io/angular/2017/02/21/using-zones-in-angular-for-better-performance.html
3679
3950
 
3680
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3951
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
3681
3952
  </file>
3682
3953
  */
3683
3954
  //Node
3684
- class ScriptService {
3685
- constructor(zone) {
3955
+ class PaymentsService {
3956
+ constructor(zone, api, ns, ga) {
3686
3957
  this.zone = zone;
3958
+ this.api = api;
3959
+ this.ns = ns;
3960
+ this.ga = ga;
3961
+ this.paymentInProgress = false;
3962
+ this.isPaymentFailed = false;
3963
+ this.subtotal = 0;
3964
+ this.discountCode = null;
3965
+ this.discountPercentage = null;
3966
+ this.discountAmount = null;
3967
+ this.total = 0;
3968
+ this.currency = 'USD';
3969
+ //Private Streams
3970
+ this._discountCodeApplied = new Subject();
3971
+ this._paymentAdded = new Subject();
3972
+ this._showStripeDialog = new Subject();
3973
+ this._showBraintreeDialog = new Subject();
3974
+ //Public Streams
3975
+ this.discountCodeApplied$ = this._discountCodeApplied.asObservable();
3976
+ this.paymentAdded$ = this._paymentAdded.asObservable();
3977
+ this.showStripeDialog$ = this._showStripeDialog.asObservable();
3978
+ this.showBraintreeDialog$ = this._showBraintreeDialog.asObservable();
3687
3979
  }
3688
- registerScript(url, globalVar, onReady) {
3689
- const existingGlobalVar = window[globalVar];
3690
- if (existingGlobalVar) {
3691
- // global variable is present = script was already loaded
3692
- this.zone.run(() => {
3693
- onReady(existingGlobalVar);
3694
- });
3695
- return;
3696
- }
3697
- // prepare script elem
3698
- const scriptElem = document.createElement('script');
3699
- scriptElem.id = this.getElemId(globalVar);
3700
- scriptElem.innerHTML = '';
3701
- scriptElem.onload = () => {
3702
- this.zone.run(() => {
3703
- onReady(window[globalVar]);
3704
- });
3705
- };
3706
- scriptElem.src = url;
3707
- scriptElem.async = true;
3708
- scriptElem.defer = true;
3709
- // add script to header
3710
- document.getElementsByTagName('head')[0].appendChild(scriptElem);
3980
+ setDefaults() {
3711
3981
  }
3712
- cleanup(globalVar) {
3713
- // remove script from DOM
3714
- const scriptElem = document.getElementById(this.getElemId(globalVar));
3715
- if (scriptElem) {
3716
- scriptElem.remove();
3982
+ setValues() {
3983
+ }
3984
+ //fires
3985
+ fireDiscountCodeApplied() {
3986
+ this._discountCodeApplied.next(this.discountCode);
3987
+ }
3988
+ firePaymentAdded(paymentId) {
3989
+ this._paymentAdded.next(paymentId);
3990
+ }
3991
+ //Public
3992
+ init() {
3993
+ this.setDefaults();
3994
+ this.setValues();
3995
+ }
3996
+ resetState() {
3997
+ this.subtotal = 0;
3998
+ this.total = 0;
3999
+ }
4000
+ getTotal() {
4001
+ let subtotal = this.subtotal;
4002
+ if (this.discountAmount != 0) {
4003
+ subtotal = subtotal - this.discountAmount;
4004
+ }
4005
+ else if (this.discountPercentage != 0) {
4006
+ subtotal = subtotal - (subtotal * (this.discountPercentage / 100));
4007
+ subtotal = +subtotal.toFixed(2);
3717
4008
  }
4009
+ return subtotal > 0 ? subtotal : 0;
3718
4010
  }
3719
- getElemId(globalVar) {
3720
- return `anatoly-script-${globalVar}`;
4011
+ //DiscountCode
4012
+ applyDiscountCode(discountCode, data) {
4013
+ if (!data) {
4014
+ return;
4015
+ }
4016
+ this.discountCode = discountCode;
4017
+ if (data.amount) {
4018
+ this.discountPercentage = 0;
4019
+ this.discountAmount = parseInt(data.amount);
4020
+ }
4021
+ else if (data.percentage) {
4022
+ this.discountPercentage = parseInt(data.percentage);
4023
+ this.discountAmount = 0;
4024
+ }
4025
+ this.fireDiscountCodeApplied();
4026
+ }
4027
+ getDiscountCodeAsString() {
4028
+ if (this.discountAmount > 0) {
4029
+ return "$" + this.discountAmount;
4030
+ }
4031
+ else if (this.discountPercentage > 0) {
4032
+ return this.discountPercentage + "%";
4033
+ }
4034
+ return '$0';
4035
+ }
4036
+ openStripePaymentDialog() {
4037
+ this._showStripeDialog.next(true);
4038
+ }
4039
+ openBraintreePaymentDialog() {
4040
+ this._showBraintreeDialog.next(true);
4041
+ }
4042
+ closeBraintreePaymentDialog() {
4043
+ this._showBraintreeDialog.next(false);
4044
+ }
4045
+ createStripeSession(title, description, image) {
4046
+ const amount = this.getTotal();
4047
+ const currency = this.currency;
4048
+ return this.api.createStripeSession(amount, currency, title, description, image);
4049
+ }
4050
+ createBraintreeToken() {
4051
+ return this.api.createBraintreeToken();
4052
+ }
4053
+ pay(paidFor, payId, payStatus, payDetails) {
4054
+ //GA
4055
+ this.ga.event(GABillingEvents.payment);
4056
+ let paidForAsString = JSON.stringify(paidFor);
4057
+ let payType = this.selectedPaymentType;
4058
+ let payMethod = this.selectedPaymentMethod;
4059
+ //Amount
4060
+ let subtotal = this.subtotal;
4061
+ let promoCode = this.discountCode;
4062
+ let total = this.getTotal();
4063
+ let currency = this.currency;
4064
+ if (total == 0) {
4065
+ payMethod = PaymentMethod.None;
4066
+ }
4067
+ this.zone.run(() => {
4068
+ this.api.pay(paidForAsString, payMethod,
4069
+ //Amount
4070
+ subtotal, promoCode, total, currency,
4071
+ //Payment method details (PayPal/Stripe/Braintree)
4072
+ payId, payStatus, payDetails, (data) => {
4073
+ if (!data || !data?.isPaymentValid) {
4074
+ this.paymentFailed(PaymentStage.External);
4075
+ return;
4076
+ }
4077
+ if (payMethod == PaymentMethod.CreditCard) {
4078
+ //this.closeBraintreePaymentDialog();
4079
+ }
4080
+ this.paymentInProgress = false;
4081
+ this.firePaymentAdded(data.paymentId);
4082
+ }, () => {
4083
+ this.paymentFailed(PaymentStage.External);
4084
+ });
4085
+ });
3721
4086
  }
3722
- static { this.ɵfac = function ScriptService_Factory(t) { return new (t || ScriptService)(i0.ɵɵinject(i0.NgZone)); }; }
3723
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ScriptService, factory: ScriptService.ɵfac }); }
4087
+ paymentFailed(stage) {
4088
+ this.paymentStage = stage;
4089
+ this.paymentInProgress = false;
4090
+ this.isPaymentFailed = true;
4091
+ this.ns.error("Payment Failed");
4092
+ }
4093
+ static { this.ɵfac = function PaymentsService_Factory(t) { return new (t || PaymentsService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(PaymentsApiService), i0.ɵɵinject(NotificationService), i0.ɵɵinject(GoogleAnalyticsService)); }; }
4094
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsService, factory: PaymentsService.ɵfac }); }
3724
4095
  }
3725
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScriptService, [{
4096
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentsService, [{
3726
4097
  type: Injectable
3727
- }], () => [{ type: i0.NgZone }], null); })();
4098
+ }], () => [{ type: i0.NgZone }, { type: PaymentsApiService }, { type: NotificationService }, { type: GoogleAnalyticsService }], null); })();
3728
4099
 
3729
4100
  /*
3730
4101
  <file>
@@ -3732,8 +4103,154 @@ class ScriptService {
3732
4103
  @osovitny/anatoly
3733
4104
 
3734
4105
  Authors:
3735
- Vadim Osovitny vadim@osovitny.com
3736
- Anatoly Osovitny anatoly@osovitny.com
4106
+ Dhruv Agarwal dhruv.agarwal@osovitny.com
4107
+
4108
+ Created:
4109
+ 14 Aug 2024
4110
+
4111
+ Description:
4112
+ Credit Card payment form via braintree integration
4113
+
4114
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
4115
+ </file>
4116
+ */
4117
+ //Node
4118
+ function BraintreeDialog_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4119
+ const _r2 = i0.ɵɵgetCurrentView();
4120
+ i0.ɵɵelementStart(0, "div", 1)(1, "kendo-dialog", 2);
4121
+ i0.ɵɵlistener("close", function BraintreeDialog_Conditional_0_Template_kendo_dialog_close_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onClose()); });
4122
+ i0.ɵɵelementStart(2, "kendo-dialog-titlebar");
4123
+ i0.ɵɵtext(3, "Pay with Credit Card");
4124
+ i0.ɵɵelementEnd();
4125
+ i0.ɵɵelementStart(4, "div", 3);
4126
+ i0.ɵɵelement(5, "div", 4);
4127
+ i0.ɵɵelementEnd();
4128
+ i0.ɵɵelementStart(6, "kendo-dialog-actions", 5)(7, "button", 6);
4129
+ i0.ɵɵlistener("click", function BraintreeDialog_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onPay()); });
4130
+ i0.ɵɵtext(8, "Pay");
4131
+ i0.ɵɵelementEnd();
4132
+ i0.ɵɵelementStart(9, "button", 7);
4133
+ i0.ɵɵlistener("click", function BraintreeDialog_Conditional_0_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r2); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onClose()); });
4134
+ i0.ɵɵtext(10, "Cancel");
4135
+ i0.ɵɵelementEnd()()()();
4136
+ } if (rf & 2) {
4137
+ const ctx_r0 = i0.ɵɵnextContext();
4138
+ i0.ɵɵadvance();
4139
+ i0.ɵɵproperty("width", 480)("height", 560)("themeColor", ctx_r0.themeColor);
4140
+ } }
4141
+ class BraintreeDialog extends DialogBase {
4142
+ constructor(ps, ns) {
4143
+ super();
4144
+ this.ps = ps;
4145
+ this.ns = ns;
4146
+ }
4147
+ ngOnInit() {
4148
+ this.setValues();
4149
+ }
4150
+ setValues() {
4151
+ this.ps.showBraintreeDialog$.subscribe((isOpen) => {
4152
+ this.isOpen = true;
4153
+ this.initializeEmbedForm();
4154
+ });
4155
+ }
4156
+ initializeEmbedForm() {
4157
+ const that = this;
4158
+ // let totalPrice = this.bs.getTotal().toString();
4159
+ // let currency = this.bs.currency;
4160
+ this.ps.createBraintreeToken().subscribe((response) => {
4161
+ if (response?.token) {
4162
+ dropin.create({
4163
+ authorization: response?.token,
4164
+ container: '#braintree-container',
4165
+ card: {
4166
+ cardholderName: true
4167
+ },
4168
+ //UNCOMMENT BELOW FOR GOOGLEPAY / VENMO
4169
+ // googlePay: {
4170
+ // merchantId: '',
4171
+ // transactionInfo: {
4172
+ // currencyCode: currency,
4173
+ // totalPriceStatus: 'FINAL',
4174
+ // totalPrice: totalPrice,
4175
+ // }
4176
+ // },
4177
+ // venmo: {
4178
+ // allowNewBrowserTab: false
4179
+ // },
4180
+ dataCollector: true
4181
+ }, function (createErr, instance) {
4182
+ if (instance) {
4183
+ that.braintreeInstance = instance;
4184
+ instance._dataCollector._instance.getDeviceData().then((deviceData) => {
4185
+ that.deviceData = deviceData;
4186
+ });
4187
+ }
4188
+ else {
4189
+ that.ns.error('Credit Card Payment is facing issues. Please try other payment methods.');
4190
+ that.closeDialog();
4191
+ }
4192
+ });
4193
+ }
4194
+ });
4195
+ }
4196
+ submitPayment(payload) {
4197
+ this.ps.pay(this.paidFor, payload.nonce, 'COMPLETED', this.deviceData);
4198
+ }
4199
+ closeDialog() {
4200
+ super.close();
4201
+ this.braintreeInstance = null;
4202
+ }
4203
+ //Events
4204
+ onPay() {
4205
+ if (this.braintreeInstance && this.deviceData) {
4206
+ const that = this;
4207
+ this.braintreeInstance.requestPaymentMethod(function (requestPaymentErr, payload) {
4208
+ that.submitPayment(payload);
4209
+ });
4210
+ }
4211
+ }
4212
+ onClose() {
4213
+ const closeDialog = this.closeDialog;
4214
+ if (this.braintreeInstance) {
4215
+ this.braintreeInstance.teardown(function (err) {
4216
+ closeDialog();
4217
+ });
4218
+ }
4219
+ else {
4220
+ closeDialog();
4221
+ }
4222
+ }
4223
+ get visible() {
4224
+ return this.isOpen && this.ps.getTotal() > 0;
4225
+ }
4226
+ static { this.ɵfac = function BraintreeDialog_Factory(t) { return new (t || BraintreeDialog)(i0.ɵɵdirectiveInject(PaymentsService), i0.ɵɵdirectiveInject(NotificationService)); }; }
4227
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BraintreeDialog, selectors: [["anatoly-payments-braintree-dialog"]], inputs: { paidFor: "paidFor", title: "title", description: "description", image: "image" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["class", "send-message__kendo-dialog"], [1, "send-message__kendo-dialog"], [3, "width", "height", "themeColor", "close"], [1, "kendo-dialog-content"], ["id", "braintree-container"], ["layout", "end"], ["type", "button", 1, "btn", "btn-sm", "btn-success", 3, "click"], ["type", "button", 1, "btn", "btn-sm", "btn-danger", 3, "click"]], template: function BraintreeDialog_Template(rf, ctx) { if (rf & 1) {
4228
+ i0.ɵɵtemplate(0, BraintreeDialog_Conditional_0_Template, 11, 3, "div", 0);
4229
+ } if (rf & 2) {
4230
+ i0.ɵɵconditional(0, ctx.visible ? 0 : -1);
4231
+ } }, dependencies: [i2.DialogComponent, i2.DialogTitleBarComponent, i2.DialogActionsComponent], encapsulation: 2 }); }
4232
+ }
4233
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BraintreeDialog, [{
4234
+ type: Component,
4235
+ args: [{ selector: 'anatoly-payments-braintree-dialog', template: "@if (visible) {\r\n <div class='send-message__kendo-dialog'>\r\n <kendo-dialog [width]='480' [height]='560' [themeColor]='themeColor' (close)='onClose()'>\r\n <kendo-dialog-titlebar>Pay with Credit Card</kendo-dialog-titlebar>\r\n <div class='kendo-dialog-content'>\r\n <div id=\"braintree-container\"></div>\r\n </div>\r\n <kendo-dialog-actions layout='end'>\r\n <button class='btn btn-sm btn-success' type='button' (click)='onPay()'>Pay</button>\r\n <button class='btn btn-sm btn-danger' type='button' (click)='onClose()'>Cancel</button>\r\n </kendo-dialog-actions>\r\n </kendo-dialog>\r\n </div>\r\n}\r\n" }]
4236
+ }], () => [{ type: PaymentsService }, { type: NotificationService }], { paidFor: [{
4237
+ type: Input
4238
+ }], title: [{
4239
+ type: Input
4240
+ }], description: [{
4241
+ type: Input
4242
+ }], image: [{
4243
+ type: Input
4244
+ }] }); })();
4245
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BraintreeDialog, { className: "BraintreeDialog", filePath: "lib\\billing\\payments\\components\\braintree\\braintree.component.ts", lineNumber: 32 }); })();
4246
+
4247
+ /*
4248
+ <file>
4249
+ Project:
4250
+ @osovitny/anatoly
4251
+
4252
+ Authors:
4253
+ Vadim Osovitny vadim.osovitny@osovitny.com
3737
4254
 
3738
4255
  Created:
3739
4256
  14 Jun 2024
@@ -3741,16 +4258,17 @@ class ScriptService {
3741
4258
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3742
4259
  </file>
3743
4260
  */
4261
+ //Node
3744
4262
  class PayPalScriptService {
3745
- constructor(scriptService) {
3746
- this.scriptService = scriptService;
4263
+ constructor(ss) {
4264
+ this.ss = ss;
3747
4265
  this.paypalWindowName = 'paypal';
3748
4266
  }
3749
4267
  registerPayPalScript(config, onReady) {
3750
- this.scriptService.registerScript(this.getUrlForConfig(config), this.paypalWindowName, onReady);
4268
+ this.ss.registerScript(this.getUrlForConfig(config), this.paypalWindowName, onReady);
3751
4269
  }
3752
4270
  destroyPayPalScript() {
3753
- this.scriptService.cleanup(this.paypalWindowName);
4271
+ this.ss.cleanup(this.paypalWindowName);
3754
4272
  }
3755
4273
  getUrlForConfig(config) {
3756
4274
  const params = [
@@ -3798,21 +4316,7 @@ class PayPalScriptService {
3798
4316
  if (config.extraParams) {
3799
4317
  params.push(...config.extraParams);
3800
4318
  }
3801
- return `https://www.paypal.com/sdk/js${this.getQueryString(params)}`;
3802
- }
3803
- getQueryString(queryParams) {
3804
- let queryString = '';
3805
- for (let i = 0; i < queryParams.length; i++) {
3806
- const queryParam = queryParams[i];
3807
- if (i === 0) {
3808
- queryString += '?';
3809
- }
3810
- else {
3811
- queryString += '&';
3812
- }
3813
- queryString += `${queryParam.name}=${queryParam.value}`;
3814
- }
3815
- return queryString;
4319
+ return `https://www.paypal.com/sdk/js${this.ss.getQueryString(params)}`;
3816
4320
  }
3817
4321
  static { this.ɵfac = function PayPalScriptService_Factory(t) { return new (t || PayPalScriptService)(i0.ɵɵinject(ScriptService)); }; }
3818
4322
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PayPalScriptService, factory: PayPalScriptService.ɵfac }); }
@@ -3827,8 +4331,7 @@ class PayPalScriptService {
3827
4331
  @osovitny/anatoly
3828
4332
 
3829
4333
  Authors:
3830
- Vadim Osovitny vadim@osovitny.com
3831
- Anatoly Osovitny anatoly@osovitny.com
4334
+ Vadim Osovitny vadim.osovitny@osovitny.com
3832
4335
 
3833
4336
  Created:
3834
4337
  14 Jun 2024
@@ -4102,7 +4605,7 @@ class PayPalComponent {
4102
4605
  });
4103
4606
  }
4104
4607
  static { this.ɵfac = function PayPalComponent_Factory(t) { return new (t || PayPalComponent)(i0.ɵɵdirectiveInject(PayPalScriptService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); }; }
4105
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PayPalComponent, selectors: [["anatoly-paypal"]], viewQuery: function PayPalComponent_Query(rf, ctx) { if (rf & 1) {
4608
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PayPalComponent, selectors: [["anatoly-payments-paypal-container"]], viewQuery: function PayPalComponent_Query(rf, ctx) { if (rf & 1) {
4106
4609
  i0.ɵɵviewQuery(_c0$f, 5);
4107
4610
  } if (rf & 2) {
4108
4611
  let _t;
@@ -4117,7 +4620,7 @@ class PayPalComponent {
4117
4620
  type: Component,
4118
4621
  args: [{
4119
4622
  changeDetection: ChangeDetectionStrategy.OnPush,
4120
- selector: "anatoly-paypal",
4623
+ selector: 'anatoly-payments-paypal-container',
4121
4624
  template: `
4122
4625
  <div #payPalButtonContainer [id]="payPalButtonContainerId"></div>
4123
4626
  `,
@@ -4132,23 +4635,272 @@ class PayPalComponent {
4132
4635
  type: ViewChild,
4133
4636
  args: ["payPalButtonContainer", { static: false }]
4134
4637
  }] }); })();
4135
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PayPalComponent, { className: "PayPalComponent", filePath: "lib\\payments\\PayPal\\components\\paypal.component.ts", lineNumber: 58 }); })();
4638
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PayPalComponent, { className: "PayPalComponent", filePath: "lib\\billing\\payments\\components\\paypal\\paypal.component.ts", lineNumber: 57 }); })();
4136
4639
 
4137
4640
  /*
4138
4641
  <file>
4139
4642
  Project:
4140
- @osovitny/anatoly
4643
+ Atlas Cross
4141
4644
 
4142
4645
  Authors:
4143
- Vadim Osovitny vadim@osovitny.com
4144
- Anatoly Osovitny anatoly@osovitny.com
4646
+ Vadim Osovitny vadim.osovitny@osovitny.com
4145
4647
 
4146
4648
  Created:
4147
4649
  14 Jun 2024
4148
4650
 
4651
+ Description:
4652
+ https://github.com/braintree/braintree-web-drop-in/issues/433
4653
+ It's impossible to trigger the paypal flow programmatically, as opening a popup window must be as a result of
4654
+ a direct user action. If it is not, the browser will usually block it.
4655
+
4656
+ https://stackoverflow.com/questions/43276570/trigger-paypal-checkout-button-click
4657
+ This isn't something that's supported by the PayPal button right now. The official policy is, only a click on the button
4658
+ itself should open a checkout window.
4659
+
4660
+ shipping_preference:
4661
+ https://developer.paypal.com/docs/api/payments/v1/?mark=shipping_preference%20#definition-application_context
4662
+
4663
+ Copyright (c) 2023-2024 Atlas Cross Inc. All rights reserved.
4664
+ </file>
4665
+ */
4666
+ //Node
4667
+ function PaypalButtonComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4668
+ i0.ɵɵelement(0, "anatoly-payments-paypal-container", 0);
4669
+ } if (rf & 2) {
4670
+ const ctx_r0 = i0.ɵɵnextContext();
4671
+ i0.ɵɵproperty("config", ctx_r0.payPalConfig);
4672
+ } }
4673
+ class PaypalButtonComponent extends ComponentBase {
4674
+ constructor(ps) {
4675
+ super();
4676
+ this.ps = ps;
4677
+ this.paidForTitle = 'Payment for Prodiuct';
4678
+ }
4679
+ ngOnInit() {
4680
+ this.setDefaults();
4681
+ this.setValues();
4682
+ }
4683
+ setDefaults() {
4684
+ }
4685
+ setValues() {
4686
+ this.initPayPal();
4687
+ this.ps.discountCodeApplied$.subscribe((data) => {
4688
+ this.initPayPal();
4689
+ });
4690
+ }
4691
+ initPayPal() {
4692
+ let that = this;
4693
+ let clientId = AppCoreSettings.external.pm.payPal.clientId;
4694
+ let totalPrice = this.ps.getTotal().toString();
4695
+ let currency = this.ps.currency;
4696
+ this.payPalConfig = {
4697
+ currency: currency,
4698
+ clientId: clientId,
4699
+ advanced: {
4700
+ commit: 'true',
4701
+ extraQueryParams: [
4702
+ {
4703
+ name: "disable-funding",
4704
+ value: "credit,card"
4705
+ }
4706
+ ]
4707
+ },
4708
+ style: {
4709
+ color: 'white'
4710
+ },
4711
+ createOrderOnClient: (data) => ({
4712
+ intent: 'CAPTURE',
4713
+ application_context: {
4714
+ shipping_preference: "NO_SHIPPING"
4715
+ },
4716
+ purchase_units: [
4717
+ {
4718
+ amount: {
4719
+ currency_code: currency,
4720
+ value: totalPrice,
4721
+ breakdown: {
4722
+ item_total: {
4723
+ currency_code: currency,
4724
+ value: totalPrice
4725
+ }
4726
+ }
4727
+ },
4728
+ items: [
4729
+ {
4730
+ name: this.paidForTitle,
4731
+ quantity: '1',
4732
+ category: 'DIGITAL_GOODS',
4733
+ unit_amount: {
4734
+ currency_code: currency,
4735
+ value: totalPrice
4736
+ },
4737
+ }
4738
+ ]
4739
+ }
4740
+ ]
4741
+ }),
4742
+ onApprove: (data, actions) => {
4743
+ return actions.order.capture().then(function (orderData) {
4744
+ try {
4745
+ let payment = orderData.purchase_units[0].payments.captures[0];
4746
+ let paymentId = payment.id;
4747
+ let status = payment.status;
4748
+ let amount = payment.amount.value;
4749
+ let currencyCode = payment.amount.currency_code;
4750
+ let details = JSON.stringify(orderData);
4751
+ that.ps.pay(that.paidFor, paymentId, status, details);
4752
+ }
4753
+ catch {
4754
+ that.ps.paymentFailed(PaymentStage.External);
4755
+ }
4756
+ });
4757
+ },
4758
+ onCancel: (data, actions) => {
4759
+ that.ps.paymentInProgress = false;
4760
+ },
4761
+ onError: err => {
4762
+ that.ps.paymentInProgress = false;
4763
+ },
4764
+ onClick: (data, actions) => {
4765
+ that.ps.paymentInProgress = true;
4766
+ }
4767
+ };
4768
+ }
4769
+ get visible() {
4770
+ return this.ps.selectedPaymentMethod == PaymentMethod.PayPal && this.ps.getTotal() > 0;
4771
+ }
4772
+ static { this.ɵfac = function PaypalButtonComponent_Factory(t) { return new (t || PaypalButtonComponent)(i0.ɵɵdirectiveInject(PaymentsService)); }; }
4773
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaypalButtonComponent, selectors: [["anatoly-payments-paypal-button"]], inputs: { paidForTitle: "paidForTitle", paidFor: "paidFor" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "config"]], template: function PaypalButtonComponent_Template(rf, ctx) { if (rf & 1) {
4774
+ i0.ɵɵtemplate(0, PaypalButtonComponent_Conditional_0_Template, 1, 1, "anatoly-payments-paypal-container", 0);
4775
+ } if (rf & 2) {
4776
+ i0.ɵɵconditional(0, ctx.visible ? 0 : -1);
4777
+ } }, dependencies: [PayPalComponent], encapsulation: 2 }); }
4778
+ }
4779
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaypalButtonComponent, [{
4780
+ type: Component,
4781
+ args: [{ selector: 'anatoly-payments-paypal-button', template: "@if (visible) {\r\n <anatoly-payments-paypal-container [config]='payPalConfig' />\r\n}\r\n" }]
4782
+ }], () => [{ type: PaymentsService }], { paidForTitle: [{
4783
+ type: Input
4784
+ }], paidFor: [{
4785
+ type: Input
4786
+ }] }); })();
4787
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaypalButtonComponent, { className: "PaypalButtonComponent", filePath: "lib\\billing\\payments\\components\\paypal\\paypal-button.component.ts", lineNumber: 42 }); })();
4788
+
4789
+ /*
4790
+ <file>
4791
+ Project:
4792
+ @osovitny/anatoly
4793
+
4794
+ Authors:
4795
+ Dhruv Agarwal dhruv.agarwal@osovitny.com
4796
+
4797
+ Created:
4798
+ 5 Aug 2024
4799
+
4800
+ Description:
4801
+ Credit Card payment form via stripe integration
4802
+
4803
+ Copyright (c) 2016-2024 Osovitny Inc. All rights reserved.
4804
+ </file>
4805
+ */
4806
+ //Node
4807
+ function StripeDialog_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4808
+ const _r2 = i0.ɵɵgetCurrentView();
4809
+ i0.ɵɵelementStart(0, "div", 1)(1, "kendo-dialog", 2);
4810
+ i0.ɵɵlistener("close", function StripeDialog_Conditional_0_Template_kendo_dialog_close_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onClose()); });
4811
+ i0.ɵɵelementStart(2, "kendo-dialog-titlebar");
4812
+ i0.ɵɵtext(3, "Pay with Stripe");
4813
+ i0.ɵɵelementEnd();
4814
+ i0.ɵɵelementStart(4, "div", 3);
4815
+ i0.ɵɵelement(5, "div", 4);
4816
+ i0.ɵɵelementEnd()()();
4817
+ } if (rf & 2) {
4818
+ const ctx_r0 = i0.ɵɵnextContext();
4819
+ i0.ɵɵadvance();
4820
+ i0.ɵɵproperty("width", 1080)("height", 800)("themeColor", ctx_r0.themeColor);
4821
+ } }
4822
+ class StripeDialog extends DialogBase {
4823
+ constructor(ps) {
4824
+ super();
4825
+ this.ps = ps;
4826
+ }
4827
+ ngOnInit() {
4828
+ this.setValues();
4829
+ }
4830
+ setValues() {
4831
+ this.ps.showStripeDialog$.subscribe(async () => {
4832
+ this.isOpen = true;
4833
+ await this.initializeEmbedForm();
4834
+ });
4835
+ }
4836
+ async initializeEmbedForm() {
4837
+ let stripePk = AppCoreSettings.external.pm.stripe.publishableKey;
4838
+ this.stripe = await loadStripe(stripePk);
4839
+ const that = this;
4840
+ this.stripeCheckout = await this.stripe.initEmbeddedCheckout({
4841
+ fetchClientSecret: async () => {
4842
+ const response = await firstValueFrom(that.ps.createStripeSession(this.title, this.description, this.image));
4843
+ if (response) {
4844
+ that.sessionId = response.sessionId;
4845
+ return response?.sessionSecret ? response.sessionSecret : '';
4846
+ }
4847
+ return '';
4848
+ },
4849
+ onComplete: () => {
4850
+ that.ps.pay(this.paidFor, this.sessionId, 'COMPLETED', '');
4851
+ that.onClose();
4852
+ }
4853
+ });
4854
+ // Mount Checkout
4855
+ this.stripeCheckout.mount('#stripeCheckout');
4856
+ }
4857
+ //Events
4858
+ onClose() {
4859
+ if (this.stripeCheckout) {
4860
+ // Destroy Checkout instance
4861
+ this.stripeCheckout.destroy();
4862
+ }
4863
+ super.close();
4864
+ }
4865
+ get visible() {
4866
+ return this.isOpen && this.ps.getTotal() > 0;
4867
+ }
4868
+ static { this.ɵfac = function StripeDialog_Factory(t) { return new (t || StripeDialog)(i0.ɵɵdirectiveInject(PaymentsService)); }; }
4869
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StripeDialog, selectors: [["anatoly-payments-stripe-dialog"]], inputs: { paidFor: "paidFor", title: "title", description: "description", image: "image" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["class", "send-message__kendo-dialog"], [1, "send-message__kendo-dialog"], [3, "width", "height", "themeColor", "close"], [1, "kendo-dialog-content"], ["id", "stripeCheckout"]], template: function StripeDialog_Template(rf, ctx) { if (rf & 1) {
4870
+ i0.ɵɵtemplate(0, StripeDialog_Conditional_0_Template, 6, 3, "div", 0);
4871
+ } if (rf & 2) {
4872
+ i0.ɵɵconditional(0, ctx.visible ? 0 : -1);
4873
+ } }, dependencies: [i2.DialogComponent, i2.DialogTitleBarComponent], encapsulation: 2 }); }
4874
+ }
4875
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StripeDialog, [{
4876
+ type: Component,
4877
+ args: [{ selector: 'anatoly-payments-stripe-dialog', template: "@if (visible) {\r\n <div class='send-message__kendo-dialog'>\r\n <kendo-dialog [width]='1080' [height]='800' [themeColor]='themeColor' (close)='onClose()'>\r\n <kendo-dialog-titlebar>Pay with Stripe</kendo-dialog-titlebar> \r\n <div class='kendo-dialog-content'>\r\n <div id=\"stripeCheckout\"></div>\r\n </div>\r\n </kendo-dialog>\r\n </div>\r\n}\r\n" }]
4878
+ }], () => [{ type: PaymentsService }], { paidFor: [{
4879
+ type: Input
4880
+ }], title: [{
4881
+ type: Input
4882
+ }], description: [{
4883
+ type: Input
4884
+ }], image: [{
4885
+ type: Input
4886
+ }] }); })();
4887
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StripeDialog, { className: "StripeDialog", filePath: "lib\\billing\\payments\\components\\stripe\\stripe.component.ts", lineNumber: 33 }); })();
4888
+
4889
+ /*
4890
+ <file>
4891
+ Project:
4892
+ @osovitny/anatoly
4893
+
4894
+ Authors:
4895
+ Vadim Osovitny vadim.osovitny@osovitny.com
4896
+
4897
+ Created:
4898
+ 11 Nov 2024
4899
+
4149
4900
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4150
4901
  </file>
4151
4902
  */
4903
+ //braintree
4152
4904
 
4153
4905
  /*
4154
4906
  <file>
@@ -4156,16 +4908,15 @@ class PayPalComponent {
4156
4908
  @osovitny/anatoly
4157
4909
 
4158
4910
  Authors:
4159
- Vadim Osovitny vadim@osovitny.com
4160
- Anatoly Osovitny anatoly@osovitny.com
4911
+ Vadim Osovitny vadim.osovitny@osovitny.com
4161
4912
 
4162
4913
  Created:
4163
- 14 Jun 2024
4914
+ 8 Nov 2024
4164
4915
 
4165
4916
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4166
4917
  </file>
4167
4918
  */
4168
- //services
4919
+ //Payments
4169
4920
 
4170
4921
  /*
4171
4922
  <file>
@@ -4173,76 +4924,166 @@ class PayPalComponent {
4173
4924
  @osovitny/anatoly
4174
4925
 
4175
4926
  Authors:
4176
- Vadim Osovitny vadim@osovitny.com
4177
- Anatoly Osovitny anatoly@osovitny.com
4927
+ Vadim Osovitny vadim.osovitny@osovitny.com
4178
4928
 
4179
4929
  Created:
4180
- 28 Aug 2018
4930
+ 29 Apr 2018
4181
4931
 
4182
4932
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4183
4933
  </file>
4184
4934
  */
4185
4935
  //Node
4186
- class ComponentBase {
4187
- constructor() {
4188
- this.isDevMode = false;
4189
- this.subs = new Subs();
4190
- //Component Data => usually loading from API
4191
- this.dataLoading = true;
4192
- this.dataLoaded = false;
4193
- this.dataFound = false;
4194
- this.title = '';
4195
- this.isTitleVisible = true;
4196
- this.isRequired = false;
4197
- this.isDevMode = IsDevMode;
4198
- this.applicationType = 1;
4199
- this.applicationRoot = '/';
4200
- if (AppSettings) {
4201
- this.applicationType = AppSettings.id;
4202
- if (AppSettings.root != '/') {
4203
- this.applicationRoot = AppSettings.root;
4936
+ class GridReadServiceBase extends BehaviorSubject {
4937
+ constructor(http) {
4938
+ super([]);
4939
+ this.http = http;
4940
+ this.data = [];
4941
+ }
4942
+ serializeParams(data) {
4943
+ return data ? ('?' + $.param(data)) : '';
4944
+ }
4945
+ read(params, success, error) {
4946
+ if (this.data.length) {
4947
+ return super.next(this.data);
4948
+ }
4949
+ var url = this.baseReadUrl;
4950
+ if (typeof params === 'undefined') {
4951
+ params = this.savedReadParams;
4952
+ }
4953
+ if (params) {
4954
+ url = this.baseReadUrl + `${this.serializeParams(params)}`;
4955
+ this.savedReadParams = params;
4956
+ }
4957
+ this.http.get(url).pipe(map(res => res)).subscribe({
4958
+ next: (data) => {
4959
+ super.next(data);
4960
+ if (success)
4961
+ success();
4962
+ },
4963
+ error: (e) => {
4964
+ if (error)
4965
+ error(e);
4204
4966
  }
4967
+ });
4968
+ }
4969
+ static { this.ɵfac = function GridReadServiceBase_Factory(t) { return new (t || GridReadServiceBase)(i0.ɵɵinject(i1$1.HttpClient)); }; }
4970
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GridReadServiceBase, factory: GridReadServiceBase.ɵfac }); }
4971
+ }
4972
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GridReadServiceBase, [{
4973
+ type: Injectable
4974
+ }], () => [{ type: i1$1.HttpClient }], null); })();
4975
+
4976
+ /*
4977
+ <file>
4978
+ Project:
4979
+ @osovitny/anatoly
4980
+
4981
+ Authors:
4982
+ Vadim Osovitny vadim.osovitny@osovitny.com
4983
+
4984
+ Created:
4985
+ 29 Apr 2018
4986
+
4987
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4988
+ </file>
4989
+ */
4990
+ //Node
4991
+ class GridEditServiceBase extends GridReadServiceBase {
4992
+ constructor(http) {
4993
+ super(http);
4994
+ this.http = http;
4995
+ }
4996
+ reset() {
4997
+ this.data = [];
4998
+ }
4999
+ resetItem(dataItem) {
5000
+ if (!dataItem) {
5001
+ return;
4205
5002
  }
5003
+ //find orignal data item
5004
+ const originalDataItem = this.data.find(item => item.Id === dataItem.Id);
5005
+ //revert changes
5006
+ Object.assign(originalDataItem, dataItem);
5007
+ super.next(this.data);
4206
5008
  }
4207
- ngOnInit() {
5009
+ save(data, isNew, sucess) {
5010
+ const action = isNew ? 'add' : 'update';
5011
+ this.reset();
5012
+ this.post(action, data).subscribe({
5013
+ next: (data) => {
5014
+ },
5015
+ error: (e) => {
5016
+ this.read();
5017
+ },
5018
+ complete: () => {
5019
+ this.read();
5020
+ if (sucess)
5021
+ sucess();
5022
+ }
5023
+ });
4208
5024
  }
4209
- ngOnDestroy() {
4210
- this.subs.unsubscribe();
5025
+ delete(data, sucess) {
5026
+ this.reset();
5027
+ const url = `${this.baseUrl}/delete${this.serializeParams(data)}`;
5028
+ return this.http.delete(url).subscribe({
5029
+ next: (data) => {
5030
+ this.read();
5031
+ if (sucess)
5032
+ sucess();
5033
+ },
5034
+ error: (e) => {
5035
+ this.read();
5036
+ }
5037
+ });
4211
5038
  }
4212
- getEntityId() {
4213
- return QSUtils.getValueByName("id");
5039
+ post(action, data) {
5040
+ const url = `${this.baseUrl}/${action}${this.serializeParams(data)}`;
5041
+ return this.http.post(url, data).pipe(map(res => res));
4214
5042
  }
4215
- dataStartedLoading() {
4216
- this.dataLoading = true;
4217
- this.dataLoaded = false;
4218
- this.dataFound = false;
5043
+ static { this.ɵfac = function GridEditServiceBase_Factory(t) { return new (t || GridEditServiceBase)(i0.ɵɵinject(i1$1.HttpClient)); }; }
5044
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GridEditServiceBase, factory: GridEditServiceBase.ɵfac }); }
5045
+ }
5046
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GridEditServiceBase, [{
5047
+ type: Injectable
5048
+ }], () => [{ type: i1$1.HttpClient }], null); })();
5049
+
5050
+ /*
5051
+ <file>
5052
+ Project:
5053
+ @osovitny/anatoly
5054
+
5055
+ Authors:
5056
+ Vadim Osovitny vadim.osovitny@osovitny.com
5057
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5058
+
5059
+ Created:
5060
+ 02 Aug 2022
5061
+
5062
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
5063
+ </file>
5064
+ */
5065
+ //Node
5066
+ class CoreApiService extends ApiServiceBase {
5067
+ constructor(http) {
5068
+ super(http);
5069
+ this.http = http;
5070
+ this.baseUrl = `${ApiUrl}/core`;
4219
5071
  }
4220
- dataLoadedAndNothingFound() {
4221
- this.dataLoadedAndFound(false);
5072
+ getTimezonesJsonFile() {
5073
+ return this.getExternalJsonFile('anatoly', 'timezones.json');
4222
5074
  }
4223
- dataLoadedAndFound(found = true) {
4224
- this.dataLoading = false;
4225
- this.dataLoaded = true;
4226
- this.dataFound = found;
5075
+ getCountriesJsonFile() {
5076
+ return this.getExternalJsonFile('anatoly', 'countries.json');
4227
5077
  }
4228
- static { this.ɵfac = function ComponentBase_Factory(t) { return new (t || ComponentBase)(); }; }
4229
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ComponentBase, selectors: [["ng-component"]], inputs: { classes: "classes", title: "title", isTitleVisible: "isTitleVisible", isRequired: "isRequired" }, decls: 0, vars: 0, template: function ComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
5078
+ getUSStatesJsonFile() {
5079
+ return this.getExternalJsonFile('anatoly', 'usStates.json');
5080
+ }
5081
+ static { this.ɵfac = function CoreApiService_Factory(t) { return new (t || CoreApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
5082
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CoreApiService, factory: CoreApiService.ɵfac }); }
4230
5083
  }
4231
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentBase, [{
4232
- type: Component,
4233
- args: [{
4234
- template: ''
4235
- }]
4236
- }], () => [], { classes: [{
4237
- type: Input
4238
- }], title: [{
4239
- type: Input
4240
- }], isTitleVisible: [{
4241
- type: Input
4242
- }], isRequired: [{
4243
- type: Input
4244
- }] }); })();
4245
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ComponentBase, { className: "ComponentBase", filePath: "lib\\ui\\components\\base\\components\\component.ts", lineNumber: 26 }); })();
5084
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CoreApiService, [{
5085
+ type: Injectable
5086
+ }], () => [{ type: i1$1.HttpClient }], null); })();
4246
5087
 
4247
5088
  /*
4248
5089
  <file>
@@ -4250,136 +5091,56 @@ class ComponentBase {
4250
5091
  @osovitny/anatoly
4251
5092
 
4252
5093
  Authors:
4253
- Vadim Osovitny vadim@osovitny.com
4254
- Anatoly Osovitny anatoly@osovitny.com
5094
+ Vadim Osovitny vadim.osovitny@osovitny.com
5095
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4255
5096
 
4256
5097
  Created:
4257
- 20 Nov 2017
5098
+ 16 Jun 2022
4258
5099
 
4259
5100
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4260
5101
  </file>
4261
5102
  */
4262
5103
  //Node
4263
- class EditComponentBase extends ComponentBase {
4264
- constructor() {
4265
- super();
4266
- //Modes
4267
- this.isAddMode = false;
4268
- this.isEditMode = false;
4269
- this.formSubmitted = false;
4270
- this.controlName = null;
4271
- this.isEditMode = QSUtils.idExists();
4272
- this.isAddMode = !this.isEditMode;
4273
- }
4274
- isControlValid(name, frmGroup = null) {
4275
- return !this.isControlInvalid(name, frmGroup);
4276
- }
4277
- isControlInvalid(name, frmGroup = null) {
4278
- if (typeof name === "undefined" || name == "") {
4279
- return false;
4280
- }
4281
- let fg = frmGroup ? frmGroup : this.formGroup;
4282
- if (!fg) {
4283
- return false;
4284
- }
4285
- let control = fg.get(name);
4286
- if (control) {
4287
- return ((this.formSubmitted && control.invalid) || (control.touched && control.invalid));
4288
- }
4289
- return false;
4290
- }
4291
- //FormGroup functions
4292
- getFormValue(name, frmGroup = null) {
4293
- let fg = frmGroup ? frmGroup : this.formGroup;
4294
- return fg.controls[name].value;
4295
- }
4296
- setFormValue(name, value, frmGroup = null) {
4297
- let fg = frmGroup ? frmGroup : this.formGroup;
4298
- fg.controls[name].setValue(value);
4299
- }
4300
- getFormGroupValue(groupName, name, frmGroup = null) {
4301
- let fg = frmGroup ? frmGroup : this.formGroup;
4302
- return fg.controls[groupName].get(name).value;
4303
- }
4304
- setFormGroupValue(groupName, name, value, frmGroup = null) {
4305
- let fg = frmGroup ? frmGroup : this.formGroup;
4306
- fg.controls[groupName].get(name).setValue(value);
4307
- }
4308
- /**
4309
- * Add control to form group
4310
- * @param name
4311
- * @param formControl
4312
- * @param frmGroup
4313
- */
4314
- addControl(name, formControl, frmGroup = null) {
4315
- let fg = frmGroup ? frmGroup : this.formGroup;
4316
- fg.addControl(name, formControl);
4317
- }
4318
- /**
4319
- * Removes control from form group
4320
- * @param name
4321
- * @param frmGroup
4322
- */
4323
- removeControl(name, frmGroup = null) {
4324
- let fg = frmGroup ? frmGroup : this.formGroup;
4325
- if (fg.get(name)) {
4326
- fg.removeControl(name);
4327
- }
4328
- }
4329
- /**
4330
- * return new form control
4331
- * @param formState
4332
- * @param validatorOrOpts
4333
- * @param asyncValidator
4334
- */
4335
- createFormControl(formState, validatorOrOpts, asyncValidator) {
4336
- return new FormControl(formState, validatorOrOpts, asyncValidator);
4337
- }
4338
- /**
4339
- * Set error to control
4340
- * @param controlName formControl name
4341
- * @param err error expect {erroname: boolean} format
4342
- * @param frmGroup
4343
- */
4344
- setControlError(controlName, err, frmGroup = null) {
4345
- let fg = frmGroup ? frmGroup : this.formGroup;
4346
- fg.get(controlName)?.setErrors(err);
4347
- }
4348
- /**
4349
- * Set {invalid: true} for the specified form
4350
- * @param controlName form control name
4351
- * @param frmGroup
4352
- */
4353
- setInValidError(controlName, frmGroup = null) {
4354
- let fg = frmGroup ? frmGroup : this.formGroup;
4355
- fg.get(controlName)?.setErrors({ invalid: true });
4356
- }
4357
- /**
4358
- * returns formgroup controls.
4359
- * main use case is used in html pages
4360
- */
4361
- get fc() {
4362
- return this.formGroup.controls;
5104
+ class EmailsApiService extends ApiServiceBase {
5105
+ constructor(http) {
5106
+ super(http);
5107
+ this.http = http;
5108
+ this.baseUrl = `${ApiUrl}/emails`;
4363
5109
  }
4364
- get isNgModelBased() {
4365
- return this.controlName == null;
5110
+ sendContactUs(captcha, name, email, topic, subject, message, success, error) {
5111
+ return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe({
5112
+ next: (data) => {
5113
+ if (success)
5114
+ success(data);
5115
+ },
5116
+ error: (e) => {
5117
+ if (error)
5118
+ error(e);
5119
+ }
5120
+ });
4366
5121
  }
4367
- static { this.ɵfac = function EditComponentBase_Factory(t) { return new (t || EditComponentBase)(); }; }
4368
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EditComponentBase, selectors: [["ng-component"]], inputs: { formGroup: "formGroup", formSubmitted: "formSubmitted", controlName: "controlName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EditComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
5122
+ static { this.ɵfac = function EmailsApiService_Factory(t) { return new (t || EmailsApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
5123
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EmailsApiService, factory: EmailsApiService.ɵfac }); }
4369
5124
  }
4370
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditComponentBase, [{
4371
- type: Component,
4372
- args: [{
4373
- template: ''
4374
- }]
4375
- }], () => [], { formGroup: [{
4376
- type: Input
4377
- }], formSubmitted: [{
4378
- type: Input
4379
- }], controlName: [{
4380
- type: Input
4381
- }] }); })();
4382
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EditComponentBase, { className: "EditComponentBase", filePath: "lib\\ui\\components\\base\\components\\edit.component.ts", lineNumber: 28 }); })();
5125
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EmailsApiService, [{
5126
+ type: Injectable
5127
+ }], () => [{ type: i1$1.HttpClient }], null); })();
5128
+
5129
+ /*
5130
+ <file>
5131
+ Project:
5132
+ @osovitny/anatoly
5133
+
5134
+ Authors:
5135
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5136
+
5137
+ Created:
5138
+ 2 Aug 2022
5139
+
5140
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
5141
+ </file>
5142
+ */
5143
+ //base
4383
5144
 
4384
5145
  /*
4385
5146
  <file>
@@ -4387,8 +5148,8 @@ class EditComponentBase extends ComponentBase {
4387
5148
  @osovitny/anatoly
4388
5149
 
4389
5150
  Authors:
4390
- Vadim Osovitny vadim@osovitny.com
4391
- Anatoly Osovitny anatoly@osovitny.com
5151
+ Vadim Osovitny vadim.osovitny@osovitny.com
5152
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4392
5153
 
4393
5154
  Created:
4394
5155
  20 Jan 2024
@@ -4468,8 +5229,8 @@ class EnumEditComponentBase extends EditComponentBase {
4468
5229
  @osovitny/anatoly
4469
5230
 
4470
5231
  Authors:
4471
- Vadim Osovitny vadim@osovitny.com
4472
- Anatoly Osovitny anatoly@osovitny.com
5232
+ Vadim Osovitny vadim.osovitny@osovitny.com
5233
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4473
5234
 
4474
5235
  Created:
4475
5236
  20 Aug 2022
@@ -4496,8 +5257,8 @@ class PageBase extends ComponentBase {
4496
5257
  @osovitny/anatoly
4497
5258
 
4498
5259
  Authors:
4499
- Vadim Osovitny vadim@osovitny.com
4500
- Anatoly Osovitny anatoly@osovitny.com
5260
+ Vadim Osovitny vadim.osovitny@osovitny.com
5261
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4501
5262
 
4502
5263
  Created:
4503
5264
  20 Aug 2022
@@ -4524,8 +5285,8 @@ class EditPageBase extends EditComponentBase {
4524
5285
  @osovitny/anatoly
4525
5286
 
4526
5287
  Authors:
4527
- Vadim Osovitny vadim@osovitny.com
4528
- Anatoly Osovitny anatoly@osovitny.com
5288
+ Vadim Osovitny vadim.osovitny@osovitny.com
5289
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4529
5290
 
4530
5291
  Created:
4531
5292
  20 Aug 2022
@@ -4558,96 +5319,29 @@ class PagedPageBase extends PageBase {
4558
5319
  }
4559
5320
  setFilter(filter) {
4560
5321
  this.currentFilter = filter;
4561
- this.loadPageOne();
4562
- }
4563
- //Tos
4564
- toIndex(index) {
4565
- return ((this.currentPage - 1) * this.pageSize) + index + 1;
4566
- }
4567
- //Events
4568
- onPageChange(e) {
4569
- this.pageSize = e.take;
4570
- this.skipItems = e.skip;
4571
- this.currentPage = (this.skipItems / this.pageSize) + 1;
4572
- this.loadPage();
4573
- }
4574
- static { this.ɵfac = /*@__PURE__*/ (() => { let ɵPagedPageBase_BaseFactory; return function PagedPageBase_Factory(t) { return (ɵPagedPageBase_BaseFactory || (ɵPagedPageBase_BaseFactory = i0.ɵɵgetInheritedFactory(PagedPageBase)))(t || PagedPageBase); }; })(); }
4575
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PagedPageBase, selectors: [["ng-component"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PagedPageBase_Template(rf, ctx) { }, encapsulation: 2 }); }
4576
- }
4577
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PagedPageBase, [{
4578
- type: Component,
4579
- args: [{
4580
- template: ''
4581
- }]
4582
- }], null, null); })();
4583
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PagedPageBase, { className: "PagedPageBase", filePath: "lib\\ui\\components\\base\\pages\\paged.page.ts", lineNumber: 26 }); })();
4584
-
4585
- /*
4586
- <file>
4587
- Project:
4588
- @osovitny/anatoly
4589
-
4590
- Authors:
4591
- Vadim Osovitny vadim@osovitny.com
4592
- Anatoly Osovitny anatoly@osovitny.com
4593
-
4594
- Created:
4595
- 24 Jan 2022
4596
-
4597
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
4598
- </file>
4599
- */
4600
- //Node
4601
- class DialogBase extends EditComponentBase {
4602
- get isOpen() {
4603
- return this._isOpen;
4604
- }
4605
- set isOpen(value) {
4606
- if (value) {
4607
- if (this.osOnBeforeOpen) {
4608
- this.osOnBeforeOpen();
4609
- }
4610
- this.opened.emit();
4611
- }
4612
- this._isOpen = value;
4613
- }
4614
- constructor() {
4615
- super();
4616
- //Private
4617
- this._isOpen = false;
4618
- //Public
4619
- this.themeColor = "primary";
4620
- //Events
4621
- this.opened = new EventEmitter();
4622
- this.closed = new EventEmitter();
4623
- }
4624
- open() {
4625
- this.isOpen = true;
4626
- }
4627
- close(returnValue = "OK") {
4628
- this.isOpen = false;
4629
- this.closed.emit(returnValue);
5322
+ this.loadPageOne();
4630
5323
  }
4631
- cancel() {
4632
- this.isOpen = false;
4633
- this.closed.emit(-1);
5324
+ //Tos
5325
+ toIndex(index) {
5326
+ return ((this.currentPage - 1) * this.pageSize) + index + 1;
4634
5327
  }
4635
- static { this.ɵfac = function DialogBase_Factory(t) { return new (t || DialogBase)(); }; }
4636
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogBase, selectors: [["ng-component"]], inputs: { isOpen: "isOpen" }, outputs: { opened: "opened", closed: "closed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DialogBase_Template(rf, ctx) { }, encapsulation: 2 }); }
5328
+ //Events
5329
+ onPageChange(e) {
5330
+ this.pageSize = e.take;
5331
+ this.skipItems = e.skip;
5332
+ this.currentPage = (this.skipItems / this.pageSize) + 1;
5333
+ this.loadPage();
5334
+ }
5335
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵPagedPageBase_BaseFactory; return function PagedPageBase_Factory(t) { return (ɵPagedPageBase_BaseFactory || (ɵPagedPageBase_BaseFactory = i0.ɵɵgetInheritedFactory(PagedPageBase)))(t || PagedPageBase); }; })(); }
5336
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PagedPageBase, selectors: [["ng-component"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function PagedPageBase_Template(rf, ctx) { }, encapsulation: 2 }); }
4637
5337
  }
4638
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogBase, [{
5338
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PagedPageBase, [{
4639
5339
  type: Component,
4640
5340
  args: [{
4641
5341
  template: ''
4642
5342
  }]
4643
- }], () => [], { isOpen: [{
4644
- type: Input
4645
- }], opened: [{
4646
- type: Output
4647
- }], closed: [{
4648
- type: Output
4649
- }] }); })();
4650
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogBase, { className: "DialogBase", filePath: "lib\\ui\\components\\base\\dialog.ts", lineNumber: 27 }); })();
5343
+ }], null, null); })();
5344
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PagedPageBase, { className: "PagedPageBase", filePath: "lib\\ui\\components\\base\\pages\\paged.page.ts", lineNumber: 26 }); })();
4651
5345
 
4652
5346
  /*
4653
5347
  <file>
@@ -4655,8 +5349,8 @@ class DialogBase extends EditComponentBase {
4655
5349
  @osovitny/anatoly
4656
5350
 
4657
5351
  Authors:
4658
- Vadim Osovitny vadim@osovitny.com
4659
- Anatoly Osovitny anatoly@osovitny.com
5352
+ Vadim Osovitny vadim.osovitny@osovitny.com
5353
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4660
5354
 
4661
5355
  Created:
4662
5356
  20 Aug 2022
@@ -4751,8 +5445,8 @@ class ListBase extends ComponentBase {
4751
5445
  @osovitny/anatoly
4752
5446
 
4753
5447
  Authors:
4754
- Vadim Osovitny vadim@osovitny.com
4755
- Anatoly Osovitny anatoly@osovitny.com
5448
+ Vadim Osovitny vadim.osovitny@osovitny.com
5449
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4756
5450
 
4757
5451
  Created:
4758
5452
  4 Jul 2018
@@ -4848,8 +5542,8 @@ class SignUpButtonComponent extends ComponentBase {
4848
5542
  @osovitny/anatoly
4849
5543
 
4850
5544
  Authors:
4851
- Vadim Osovitny vadim@osovitny.com
4852
- Anatoly Osovitny anatoly@osovitny.com
5545
+ Vadim Osovitny vadim.osovitny@osovitny.com
5546
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4853
5547
 
4854
5548
  Created:
4855
5549
  14 Aug 2018
@@ -4951,8 +5645,8 @@ class BuyAccessButtonComponent {
4951
5645
  @osovitny/anatoly
4952
5646
 
4953
5647
  Authors:
4954
- Vadim Osovitny vadim@osovitny.com
4955
- Anatoly Osovitny anatoly@osovitny.com
5648
+ Vadim Osovitny vadim.osovitny@osovitny.com
5649
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
4956
5650
 
4957
5651
  Created:
4958
5652
  1 Jun 2018
@@ -5065,8 +5759,8 @@ class SubscribePlanButtonComponent {
5065
5759
  @osovitny/anatoly
5066
5760
 
5067
5761
  Authors:
5068
- Vadim Osovitny vadim@osovitny.com
5069
- Anatoly Osovitny anatoly@osovitny.com
5762
+ Vadim Osovitny vadim.osovitny@osovitny.com
5763
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5070
5764
 
5071
5765
  Created:
5072
5766
  15 Aug 2022
@@ -5104,8 +5798,8 @@ class CheckIconComponent {
5104
5798
  @osovitny/anatoly
5105
5799
 
5106
5800
  Authors:
5107
- Vadim Osovitny vadim@osovitny.com
5108
- Anatoly Osovitny anatoly@osovitny.com
5801
+ Vadim Osovitny vadim.osovitny@osovitny.com
5802
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5109
5803
 
5110
5804
  Created:
5111
5805
  28 Aug 2022
@@ -5194,8 +5888,8 @@ class DataPagerComponent extends ComponentBase {
5194
5888
  @osovitny/anatoly
5195
5889
 
5196
5890
  Authors:
5197
- Vadim Osovitny vadim@osovitny.com
5198
- Anatoly Osovitny anatoly@osovitny.com
5891
+ Vadim Osovitny vadim.osovitny@osovitny.com
5892
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5199
5893
 
5200
5894
  Created:
5201
5895
  4 Jul 2018
@@ -5291,8 +5985,8 @@ class SignInButtonComponent extends ComponentBase {
5291
5985
  @osovitny/anatoly
5292
5986
 
5293
5987
  Authors:
5294
- Vadim Osovitny vadim@osovitny.com
5295
- Anatoly Osovitny anatoly@osovitny.com
5988
+ Vadim Osovitny vadim.osovitny@osovitny.com
5989
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5296
5990
 
5297
5991
  Created:
5298
5992
  4 Jul 2018
@@ -5388,8 +6082,8 @@ class SignOutButtonComponent extends ComponentBase {
5388
6082
  @osovitny/anatoly
5389
6083
 
5390
6084
  Authors:
5391
- Vadim Osovitny vadim@osovitny.com
5392
- Anatoly Osovitny anatoly@osovitny.com
6085
+ Vadim Osovitny vadim.osovitny@osovitny.com
6086
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5393
6087
 
5394
6088
  Created:
5395
6089
  29 Jul 2022
@@ -5463,8 +6157,8 @@ class NodataComponent {
5463
6157
  @osovitny/anatoly
5464
6158
 
5465
6159
  Authors:
5466
- Vadim Osovitny vadim@osovitny.com
5467
- Anatoly Osovitny anatoly@osovitny.com
6160
+ Vadim Osovitny vadim.osovitny@osovitny.com
6161
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5468
6162
 
5469
6163
  Created:
5470
6164
  9 May 2020
@@ -5522,8 +6216,8 @@ const Spinkit = {
5522
6216
  @osovitny/anatoly
5523
6217
 
5524
6218
  Authors:
5525
- Vadim Osovitny vadim@osovitny.com
5526
- Anatoly Osovitny anatoly@osovitny.com
6219
+ Vadim Osovitny vadim.osovitny@osovitny.com
6220
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5527
6221
 
5528
6222
  Created:
5529
6223
  16 May 2020
@@ -5600,8 +6294,8 @@ class PageSpinnerComponent {
5600
6294
  @osovitny/anatoly
5601
6295
 
5602
6296
  Authors:
5603
- Vadim Osovitny vadim@osovitny.com
5604
- Anatoly Osovitny anatoly@osovitny.com
6297
+ Vadim Osovitny vadim.osovitny@osovitny.com
6298
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5605
6299
 
5606
6300
  Created:
5607
6301
  9 Jun 2020
@@ -5647,8 +6341,8 @@ class Copy2ClipboardComponent {
5647
6341
  @osovitny/anatoly
5648
6342
 
5649
6343
  Authors:
5650
- Vadim Osovitny vadim@osovitny.com
5651
- Anatoly Osovitny anatoly@osovitny.com
6344
+ Vadim Osovitny vadim.osovitny@osovitny.com
6345
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5652
6346
 
5653
6347
  Created:
5654
6348
  28 Jun 2020
@@ -5666,7 +6360,7 @@ class NativeElementDirective {
5666
6360
  // sets the localization key to the control
5667
6361
  this.control.control.nativeElement = this.el.nativeElement;
5668
6362
  }
5669
- static { this.ɵfac = function NativeElementDirective_Factory(t) { return new (t || NativeElementDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.NgControl)); }; }
6363
+ static { this.ɵfac = function NativeElementDirective_Factory(t) { return new (t || NativeElementDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2$1.NgControl)); }; }
5670
6364
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: NativeElementDirective, selectors: [["", "formControl", ""], ["", "formControlName", ""]] }); }
5671
6365
  }
5672
6366
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeElementDirective, [{
@@ -5674,7 +6368,7 @@ class NativeElementDirective {
5674
6368
  args: [{
5675
6369
  selector: '[formControl], [formControlName]'
5676
6370
  }]
5677
- }], () => [{ type: i0.ElementRef }, { type: i2.NgControl }], null); })();
6371
+ }], () => [{ type: i0.ElementRef }, { type: i2$1.NgControl }], null); })();
5678
6372
 
5679
6373
  /*
5680
6374
  <file>
@@ -5682,8 +6376,8 @@ class NativeElementDirective {
5682
6376
  @osovitny/anatoly
5683
6377
 
5684
6378
  Authors:
5685
- Vadim Osovitny vadim@osovitny.com
5686
- Anatoly Osovitny anatoly@osovitny.com
6379
+ Vadim Osovitny vadim.osovitny@osovitny.com
6380
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5687
6381
 
5688
6382
  Created:
5689
6383
  8 Dec 2017
@@ -5802,8 +6496,8 @@ class ValidationSummaryComponent extends EditComponentBase {
5802
6496
  @osovitny/anatoly
5803
6497
 
5804
6498
  Authors:
5805
- Vadim Osovitny vadim@osovitny.com
5806
- Anatoly Osovitny anatoly@osovitny.com
6499
+ Vadim Osovitny vadim.osovitny@osovitny.com
6500
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5807
6501
 
5808
6502
  Created:
5809
6503
  6 Dec 2017
@@ -5850,8 +6544,8 @@ class ItemValidationSummaryComponent extends ValidationSummaryComponent {
5850
6544
  @osovitny/anatoly
5851
6545
 
5852
6546
  Authors:
5853
- Vadim Osovitny vadim@osovitny.com
5854
- Anatoly Osovitny anatoly@osovitny.com
6547
+ Vadim Osovitny vadim.osovitny@osovitny.com
6548
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5855
6549
 
5856
6550
  Created:
5857
6551
  02 Aug 2022
@@ -5947,7 +6641,7 @@ class UrlSlugComponent extends EditComponentBase {
5947
6641
  i0.ɵɵproperty("formControlName", ctx.controlName);
5948
6642
  i0.ɵɵadvance();
5949
6643
  i0.ɵɵproperty("ngIf", ctx.isGoButtonVisible);
5950
- } }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
6644
+ } }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
5951
6645
  }
5952
6646
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlSlugComponent, [{
5953
6647
  type: Component,
@@ -5969,8 +6663,8 @@ class UrlSlugComponent extends EditComponentBase {
5969
6663
  @osovitny/anatoly
5970
6664
 
5971
6665
  Authors:
5972
- Vadim Osovitny vadim@osovitny.com
5973
- Anatoly Osovitny anatoly@osovitny.com
6666
+ Vadim Osovitny vadim.osovitny@osovitny.com
6667
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
5974
6668
 
5975
6669
  Created:
5976
6670
  2 Feb 2024
@@ -6041,7 +6735,7 @@ class CountryDropdownlist extends EditComponentBase {
6041
6735
  i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
6042
6736
  i0.ɵɵadvance();
6043
6737
  i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
6044
- } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective], encapsulation: 2 }); }
6738
+ } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2$1.NgSelectOption, i2$1.ɵNgSelectMultipleOption, i2$1.SelectControlValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, NativeElementDirective], encapsulation: 2 }); }
6045
6739
  }
6046
6740
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CountryDropdownlist, [{
6047
6741
  type: Component,
@@ -6055,8 +6749,8 @@ class CountryDropdownlist extends EditComponentBase {
6055
6749
  @osovitny/anatoly
6056
6750
 
6057
6751
  Authors:
6058
- Vadim Osovitny vadim@osovitny.com
6059
- Anatoly Osovitny anatoly@osovitny.com
6752
+ Vadim Osovitny vadim.osovitny@osovitny.com
6753
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6060
6754
 
6061
6755
  Created:
6062
6756
  02 Aug 2022
@@ -6144,7 +6838,7 @@ class TimezoneDropdownlist extends EditComponentBase {
6144
6838
  i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
6145
6839
  i0.ɵɵadvance();
6146
6840
  i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
6147
- } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective], encapsulation: 2 }); }
6841
+ } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2$1.NgSelectOption, i2$1.ɵNgSelectMultipleOption, i2$1.SelectControlValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, NativeElementDirective], encapsulation: 2 }); }
6148
6842
  }
6149
6843
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimezoneDropdownlist, [{
6150
6844
  type: Component,
@@ -6158,8 +6852,7 @@ class TimezoneDropdownlist extends EditComponentBase {
6158
6852
  @osovitny/anatoly
6159
6853
 
6160
6854
  Authors:
6161
- Vadim Osovitny vadim@osovitny.com
6162
- Anatoly Osovitny anatoly@osovitny.com
6855
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6163
6856
 
6164
6857
  Created:
6165
6858
  29 July 2022
@@ -6188,7 +6881,7 @@ class CardComponent extends ComponentBase {
6188
6881
  type: Component,
6189
6882
  args: [{ selector: 'anatoly-card', template: "<div class='card {{ classes }}'>\r\n <ng-content select='mex-card-header'></ng-content>\r\n <ng-content select='mex-card-body'></ng-content>\r\n <ng-content></ng-content>\r\n <ng-content select='mex-card-footer'></ng-content>\r\n</div>\r\n" }]
6190
6883
  }], null, null); })();
6191
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardComponent, { className: "CardComponent", filePath: "lib\\ui\\components\\card\\card.component.ts", lineNumber: 27 }); })();
6884
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardComponent, { className: "CardComponent", filePath: "lib\\ui\\components\\card\\card.component.ts", lineNumber: 26 }); })();
6192
6885
 
6193
6886
  /*
6194
6887
  <file>
@@ -6196,8 +6889,7 @@ class CardComponent extends ComponentBase {
6196
6889
  @osovitny/anatoly
6197
6890
 
6198
6891
  Authors:
6199
- Vadim Osovitny vadim@osovitny.com
6200
- Anatoly Osovitny anatoly@osovitny.com
6892
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6201
6893
 
6202
6894
  Created:
6203
6895
  29 July 2022
@@ -6234,7 +6926,7 @@ class CardHeaderComponent extends ComponentBase {
6234
6926
  type: Component,
6235
6927
  args: [{ selector: 'anatoly-card-header', template: "<div class='card-header {{ classes }}'>\r\n <h3 *ngIf='title' class='card-title'>{{ title }}</h3>\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
6236
6928
  }], null, null); })();
6237
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardHeaderComponent, { className: "CardHeaderComponent", filePath: "lib\\ui\\components\\card\\card-header.component.ts", lineNumber: 27 }); })();
6929
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardHeaderComponent, { className: "CardHeaderComponent", filePath: "lib\\ui\\components\\card\\card-header.component.ts", lineNumber: 26 }); })();
6238
6930
 
6239
6931
  /*
6240
6932
  <file>
@@ -6242,8 +6934,7 @@ class CardHeaderComponent extends ComponentBase {
6242
6934
  @osovitny/anatoly
6243
6935
 
6244
6936
  Authors:
6245
- Vadim Osovitny vadim@osovitny.com
6246
- Anatoly Osovitny anatoly@osovitny.com
6937
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6247
6938
 
6248
6939
  Created:
6249
6940
  29 July 2022
@@ -6268,7 +6959,7 @@ class CardBodyComponent extends ComponentBase {
6268
6959
  type: Component,
6269
6960
  args: [{ selector: 'anatoly-card-body', template: "<div class='card-body {{ classes }}'>\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
6270
6961
  }], null, null); })();
6271
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardBodyComponent, { className: "CardBodyComponent", filePath: "lib\\ui\\components\\card\\card-body.component.ts", lineNumber: 27 }); })();
6962
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardBodyComponent, { className: "CardBodyComponent", filePath: "lib\\ui\\components\\card\\card-body.component.ts", lineNumber: 26 }); })();
6272
6963
 
6273
6964
  /*
6274
6965
  <file>
@@ -6276,8 +6967,7 @@ class CardBodyComponent extends ComponentBase {
6276
6967
  @osovitny/anatoly
6277
6968
 
6278
6969
  Authors:
6279
- Vadim Osovitny vadim@osovitny.com
6280
- Anatoly Osovitny anatoly@osovitny.com
6970
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6281
6971
 
6282
6972
  Created:
6283
6973
  29 July 2022
@@ -6302,7 +6992,7 @@ class CardFooterComponent extends ComponentBase {
6302
6992
  type: Component,
6303
6993
  args: [{ selector: 'anatoly-card-footer', template: "<div class='card-footer {{ classes }}'>\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
6304
6994
  }], null, null); })();
6305
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardFooterComponent, { className: "CardFooterComponent", filePath: "lib\\ui\\components\\card\\card-footer.component.ts", lineNumber: 27 }); })();
6995
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CardFooterComponent, { className: "CardFooterComponent", filePath: "lib\\ui\\components\\card\\card-footer.component.ts", lineNumber: 26 }); })();
6306
6996
 
6307
6997
  /*
6308
6998
  <file>
@@ -6310,8 +7000,8 @@ class CardFooterComponent extends ComponentBase {
6310
7000
  @osovitny/anatoly
6311
7001
 
6312
7002
  Authors:
6313
- Vadim Osovitny vadim@osovitny.com
6314
- Anatoly Osovitny anatoly@osovitny.com
7003
+ Vadim Osovitny vadim.osovitny@osovitny.com
7004
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6315
7005
 
6316
7006
  Created:
6317
7007
  12 Dec 2017
@@ -6484,8 +7174,8 @@ class HtmlEditorComponentBase extends EditComponentBase {
6484
7174
  @osovitny/anatoly
6485
7175
 
6486
7176
  Authors:
6487
- Vadim Osovitny vadim@osovitny.com
6488
- Anatoly Osovitny anatoly@osovitny.com
7177
+ Vadim Osovitny vadim.osovitny@osovitny.com
7178
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6489
7179
 
6490
7180
  Created:
6491
7181
  12 Dec 2017
@@ -6523,7 +7213,7 @@ class FormsHtmlEditorComponent extends HtmlEditorComponentBase {
6523
7213
  i0.ɵɵproperty("formControlName", ctx.editorFormKey)("froalaEditor", ctx.options);
6524
7214
  i0.ɵɵadvance();
6525
7215
  i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted)("controlName", ctx.editorFormKey);
6526
- } }, dependencies: [i1$2.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.FroalaEditorDirective, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
7216
+ } }, dependencies: [i1$2.NgClass, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, i3.FroalaEditorDirective, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
6527
7217
  }
6528
7218
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsHtmlEditorComponent, [{
6529
7219
  type: Component,
@@ -6539,8 +7229,8 @@ class FormsHtmlEditorComponent extends HtmlEditorComponentBase {
6539
7229
  @osovitny/anatoly
6540
7230
 
6541
7231
  Authors:
6542
- Vadim Osovitny vadim@osovitny.com
6543
- Anatoly Osovitny anatoly@osovitny.com
7232
+ Vadim Osovitny vadim.osovitny@osovitny.com
7233
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6544
7234
 
6545
7235
  Created:
6546
7236
  12 Dec 2017
@@ -6596,8 +7286,8 @@ class HtmlEditorComponent extends HtmlEditorComponentBase {
6596
7286
  @osovitny/anatoly
6597
7287
 
6598
7288
  Authors:
6599
- Vadim Osovitny vadim@osovitny.com
6600
- Anatoly Osovitny anatoly@osovitny.com
7289
+ Vadim Osovitny vadim.osovitny@osovitny.com
7290
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6601
7291
 
6602
7292
  Created:
6603
7293
  2 Aug 2022
@@ -6613,8 +7303,8 @@ class HtmlEditorComponent extends HtmlEditorComponentBase {
6613
7303
  @osovitny/anatoly
6614
7304
 
6615
7305
  Authors:
6616
- Vadim Osovitny vadim@osovitny.com
6617
- Anatoly Osovitny anatoly@osovitny.com
7306
+ Vadim Osovitny vadim.osovitny@osovitny.com
7307
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6618
7308
 
6619
7309
  Created:
6620
7310
  7 Dec 2017
@@ -6698,8 +7388,8 @@ class FormValidationSummaryComponent extends ValidationSummaryComponent {
6698
7388
  @osovitny/anatoly
6699
7389
 
6700
7390
  Authors:
6701
- Vadim Osovitny vadim@osovitny.com
6702
- Anatoly Osovitny anatoly@osovitny.com
7391
+ Vadim Osovitny vadim.osovitny@osovitny.com
7392
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6703
7393
 
6704
7394
  Created:
6705
7395
  02 Aug 2022
@@ -6808,7 +7498,7 @@ class ContactUsForm extends EditComponentBase {
6808
7498
  onTopicChange(event) {
6809
7499
  this.selectedTopic = event.target.value;
6810
7500
  }
6811
- static { this.ɵfac = function ContactUsForm_Factory(t) { return new (t || ContactUsForm)(i0.ɵɵdirectiveInject(i1$8.ReCaptchaV3Service), i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(AppContextService), i0.ɵɵdirectiveInject(EmailsApiService), i0.ɵɵdirectiveInject(NotificationService)); }; }
7501
+ static { this.ɵfac = function ContactUsForm_Factory(t) { return new (t || ContactUsForm)(i0.ɵɵdirectiveInject(i1$8.ReCaptchaV3Service), i0.ɵɵdirectiveInject(i2$1.FormBuilder), i0.ɵɵdirectiveInject(AppContextService), i0.ɵɵdirectiveInject(EmailsApiService), i0.ɵɵdirectiveInject(NotificationService)); }; }
6812
7502
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContactUsForm, selectors: [["anatoly-forms-contactus-form"]], inputs: { showActionButtons: "showActionButtons" }, outputs: { submit: "submit" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 39, vars: 31, consts: [["novalidate", "", 3, "formGroup", "ngSubmit"], [3, "formGroup", "visible"], [1, "contact-us"], [1, "row"], [1, "form-fields", "col-6"], [1, "form-topic", 3, "ngClass"], [1, "form-select-wrapper"], [1, "assistive-text"], ["formControlName", "topic", 1, "form-select", 3, "change"], [3, "value", 4, "ngFor", "ngForOf"], ["controlName", "topic", "controlTitle", "topic", 3, "formGroup", "formSubmitted"], [1, "form-name", 3, "ngClass"], ["formControlName", "name", "placeholder", "Name *", "type", "text", 1, "form-control"], ["controlName", "name", "controlTitle", "name", 3, "formGroup", "formSubmitted"], [1, "form-email", 3, "ngClass"], ["formControlName", "email", "placeholder", "E-mail *", "type", "text", 1, "form-control"], [4, "ngIf"], ["controlName", "email", "controlTitle", "email", 3, "formGroup", "formSubmitted"], [1, "form-subject", 3, "ngClass"], ["formControlName", "subject", "placeholder", "Subject *", "type", "text", 1, "form-control"], ["controlName", "subject", "controlTitle", "subject", 3, "formGroup", "formSubmitted"], [1, "col-6"], [1, "form-message", 3, "ngClass"], ["formControlName", "message", "name", "message", "placeholder", "Message *", "rows", "4", "type", "text"], ["controlName", "message", "controlTitle", "message", 3, "formGroup", "formSubmitted"], [1, "row", "form-footer"], [1, "col"], ["class", "btn btn-success", "type", "submit", 3, "btn-primary", 4, "ngIf"], [3, "value"], ["type", "submit", 1, "btn", "btn-success"]], template: function ContactUsForm_Template(rf, ctx) { if (rf & 1) {
6813
7503
  i0.ɵɵelementStart(0, "form", 0);
6814
7504
  i0.ɵɵlistener("ngSubmit", function ContactUsForm_Template_form_ngSubmit_0_listener() { return ctx.onSubmit(); });
@@ -6880,12 +7570,12 @@ class ContactUsForm extends EditComponentBase {
6880
7570
  i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
6881
7571
  i0.ɵɵadvance(3);
6882
7572
  i0.ɵɵproperty("ngIf", ctx.showActionButtons);
6883
- } }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2.ɵNgNoValidate, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective, FormValidationSummaryComponent, ItemValidationSummaryComponent], encapsulation: 2 }); }
7573
+ } }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2$1.ɵNgNoValidate, i2$1.NgSelectOption, i2$1.ɵNgSelectMultipleOption, i2$1.DefaultValueAccessor, i2$1.SelectControlValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, NativeElementDirective, FormValidationSummaryComponent, ItemValidationSummaryComponent], encapsulation: 2 }); }
6884
7574
  }
6885
7575
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsForm, [{
6886
7576
  type: Component,
6887
7577
  args: [{ selector: 'anatoly-forms-contactus-form', template: "<form (ngSubmit)='onSubmit()' [formGroup]='formGroup' novalidate>\r\n <anatoly-form-validation-summary [formGroup]='formGroup'\r\n [visible]='formSubmitted && formGroup.invalid'></anatoly-form-validation-summary>\r\n\r\n <div class='contact-us'>\r\n <div class=\"row\">\r\n <div class='form-fields col-6'>\r\n <p>What can we help you with?</p>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('topic') }\" class='form-topic'>\r\n <div class='form-select-wrapper'>\r\n <label class='assistive-text'>Topic *</label>\r\n <select (change)='onTopicChange($event)' class='form-select' formControlName='topic'>\r\n <option *ngFor='let topic of topicList' [value]='topic.value'>{{ topic.value }} </option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='topic'\r\n controlTitle='topic'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('name') }\" class='form-name'>\r\n <label class='assistive-text'>Name *</label>\r\n <input class='form-control' formControlName='name' placeholder='Name *' type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='name'\r\n controlTitle='name'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('email') }\" class='form-email'>\r\n <label class='assistive-text'>E-mail * </label>\r\n <input class='form-control' formControlName='email' placeholder='E-mail *' type='text' />\r\n <p *ngIf='!isUserSignedIn'>Please indicate the email used for your MailEx login if you already have an account</p>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='email'\r\n controlTitle='email'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('subject') }\" class='form-subject'>\r\n <label class='assistive-text'>Subject *</label>\r\n <input class='form-control' formControlName='subject' placeholder='Subject *' type='text' />\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='subject'\r\n controlTitle='subject'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n <div class='col-6'>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('message') }\" class='form-message'>\r\n <label class='assistive-text'>Message *</label>\r\n <textarea formControlName='message' name='message' placeholder='Message *' rows='4'\r\n type='text'></textarea>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='message'\r\n controlTitle='message'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row form-footer\">\r\n <div class=\"col\">\r\n <button *ngIf='showActionButtons'\r\n [class.btn-primary]='!formGroup.invalid'\r\n class='btn btn-success'\r\n type='submit'>\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n" }]
6888
- }], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2.FormBuilder }, { type: AppContextService }, { type: EmailsApiService }, { type: NotificationService }], { showActionButtons: [{
7578
+ }], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2$1.FormBuilder }, { type: AppContextService }, { type: EmailsApiService }, { type: NotificationService }], { showActionButtons: [{
6889
7579
  type: Input
6890
7580
  }], submit: [{
6891
7581
  type: Output
@@ -6898,8 +7588,8 @@ class ContactUsForm extends EditComponentBase {
6898
7588
  @osovitny/anatoly
6899
7589
 
6900
7590
  Authors:
6901
- Vadim Osovitny vadim@osovitny.com
6902
- Anatoly Osovitny anatoly@osovitny.com
7591
+ Vadim Osovitny vadim.osovitny@osovitny.com
7592
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6903
7593
 
6904
7594
  Created:
6905
7595
  16 July 2022
@@ -6953,7 +7643,7 @@ class ContactUsDialog extends DialogBase {
6953
7643
  i0.ɵɵtemplate(0, ContactUsDialog_kendo_dialog_0_Template, 10, 2, "kendo-dialog", 0);
6954
7644
  } if (rf & 2) {
6955
7645
  i0.ɵɵproperty("ngIf", ctx.isOpen);
6956
- } }, dependencies: [i1$2.NgIf, i2$1.DialogComponent, i2$1.DialogActionsComponent, ContactUsForm], encapsulation: 2 }); }
7646
+ } }, dependencies: [i1$2.NgIf, i2.DialogComponent, i2.DialogActionsComponent, ContactUsForm], encapsulation: 2 }); }
6957
7647
  }
6958
7648
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsDialog, [{
6959
7649
  type: Component,
@@ -6970,8 +7660,8 @@ class ContactUsDialog extends DialogBase {
6970
7660
  @osovitny/anatoly
6971
7661
 
6972
7662
  Authors:
6973
- Vadim Osovitny vadim@osovitny.com
6974
- Anatoly Osovitny anatoly@osovitny.com
7663
+ Vadim Osovitny vadim.osovitny@osovitny.com
7664
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6975
7665
 
6976
7666
  Created:
6977
7667
  2 Aug 2022
@@ -6986,8 +7676,8 @@ class ContactUsDialog extends DialogBase {
6986
7676
  @osovitny/anatoly
6987
7677
 
6988
7678
  Authors:
6989
- Vadim Osovitny vadim@osovitny.com
6990
- Anatoly Osovitny anatoly@osovitny.com
7679
+ Vadim Osovitny vadim.osovitny@osovitny.com
7680
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
6991
7681
 
6992
7682
  Created:
6993
7683
  24 Feb 2023
@@ -7035,8 +7725,8 @@ class HoveringDirective {
7035
7725
  @osovitny/anatoly
7036
7726
 
7037
7727
  Authors:
7038
- Vadim Osovitny vadim@osovitny.com
7039
- Anatoly Osovitny anatoly@osovitny.com
7728
+ Vadim Osovitny vadim.osovitny@osovitny.com
7729
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7040
7730
 
7041
7731
  Created:
7042
7732
  2 Aug 2022
@@ -7051,8 +7741,8 @@ class HoveringDirective {
7051
7741
  @osovitny/anatoly
7052
7742
 
7053
7743
  Authors:
7054
- Vadim Osovitny vadim@osovitny.com
7055
- Anatoly Osovitny anatoly@osovitny.com
7744
+ Vadim Osovitny vadim.osovitny@osovitny.com
7745
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7056
7746
 
7057
7747
  Created:
7058
7748
  02 Aug 2022
@@ -7199,7 +7889,7 @@ class AddressComponent extends EditComponentBase {
7199
7889
  let usState = event.target.value;
7200
7890
  this.change.emit(usState);
7201
7891
  }
7202
- static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(CoreApiService)); }; }
7892
+ static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i2$1.FormBuilder), i0.ɵɵdirectiveInject(CoreApiService)); }; }
7203
7893
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddressComponent, selectors: [["anatoly-forms-address"]], inputs: { address: "address" }, outputs: { change: "change" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 29, vars: 29, consts: [["classes", "card-primary card-outline"], [3, "title", 4, "ngIf"], [1, "row", 3, "formGroup"], [1, "form-group", "col-12", 3, "ngClass"], [1, "col-form-label", "required"], ["type", "text", "formControlName", "address_street", "placeholder", "Street Address", 1, "form-control"], ["controlName", "address_street", "controlTitle", "Street", 3, "formGroup", "formSubmitted"], ["type", "text", "formControlName", "address_street2", "placeholder", "Apartment, suite, unit, building, floor, etc.", 1, "form-control"], ["controlName", "address_street2", "controlTitle", "Street2", 3, "formGroup", "formSubmitted"], [1, "form-group", "col-3", 3, "ngClass"], ["type", "text", "formControlName", "address_city", "placeholder", "City", 1, "form-control"], ["controlName", "address_city", "controlTitle", "City", 3, "formGroup", "formSubmitted"], ["class", "form-group col-3", 3, "ngClass", 4, "ngIf"], ["type", "text", "formControlName", "address_zipcode", "placeholder", "zipcode", 1, "form-control"], ["controlName", "address_zipcode", "controlTitle", "zipcode", 3, "formGroup", "formSubmitted"], ["formControlName", "address_country", "data-placeholder", "Select a Country", 1, "form-control", 3, "change"], [3, "value", 4, "ngFor", "ngForOf"], ["controlName", "address_country", "controlTitle", "Country", 3, "formGroup", "formSubmitted"], [3, "title"], ["formControlName", "address_stateOrRegion", 1, "form-control", 3, "change"], ["controlName", "address_stateOrRegion", "controlTitle", "State", 3, "formGroup", "formSubmitted"], [3, "value"]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
7204
7894
  i0.ɵɵelementStart(0, "anatoly-card", 0);
7205
7895
  i0.ɵɵtemplate(1, AddressComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
@@ -7260,12 +7950,12 @@ class AddressComponent extends EditComponentBase {
7260
7950
  i0.ɵɵproperty("ngForOf", ctx.countryData);
7261
7951
  i0.ɵɵadvance();
7262
7952
  i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
7263
- } }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
7953
+ } }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2$1.NgSelectOption, i2$1.ɵNgSelectMultipleOption, i2$1.DefaultValueAccessor, i2$1.SelectControlValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
7264
7954
  }
7265
7955
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressComponent, [{
7266
7956
  type: Component,
7267
7957
  args: [{ selector: 'anatoly-forms-address', template: "<anatoly-card classes='card-primary card-outline'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div class='row' [formGroup]='formGroup'>\r\n <div class='form-group col-12' [ngClass]=\"{'has-error': isControlInvalid('address_street')}\" >\r\n <label class='col-form-label required'>Street Address</label>\r\n <input type='text' class='form-control' formControlName='address_street' placeholder='Street Address'>\r\n <anatoly-item-validation-summary controlName='address_street'\r\n controlTitle='Street'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-12' [ngClass]=\"{'has-error': isControlInvalid('address_street2')}\" >\r\n <input type='text' class='form-control' formControlName='address_street2' placeholder='Apartment, suite, unit, building, floor, etc.'>\r\n <anatoly-item-validation-summary controlName='address_street2'\r\n controlTitle='Street2'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_city')}\">\r\n <label class='col-form-label required'>City</label>\r\n <input type='text' class='form-control' formControlName='address_city' placeholder='City'>\r\n <anatoly-item-validation-summary controlName='address_city'\r\n controlTitle='City'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' *ngIf=\"formGroup.value.address_country == 'US'\" [ngClass]=\"{'has-error': isControlInvalid('address_stateOrRegion')}\">\r\n <label class='col-form-label required'>State</label>\r\n <select class='form-control' (change)='onUSStateChange($event)' formControlName='address_stateOrRegion'>\r\n <option *ngFor='let state of usStateData' [value]='state.code'>{{state.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_stateOrRegion'\r\n controlTitle='State'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_zipcode')}\" >\r\n <label class='col-form-label required'>zipcode</label>\r\n <input type='text' class='form-control' formControlName='address_zipcode' placeholder='zipcode'>\r\n <anatoly-item-validation-summary controlName='address_zipcode'\r\n controlTitle='zipcode'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_country')}\">\r\n <label class='col-form-label required'>Country</label>\r\n <select class='form-control' (change)='onCountryChange($event)' formControlName='address_country' data-placeholder='Select a Country'>\r\n <option *ngFor='let country of countryData' [value]='country.code'>{{country.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_country'\r\n controlTitle='Country'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
7268
- }], () => [{ type: i2.FormBuilder }, { type: CoreApiService }], { address: [{
7958
+ }], () => [{ type: i2$1.FormBuilder }, { type: CoreApiService }], { address: [{
7269
7959
  type: Input
7270
7960
  }], change: [{
7271
7961
  type: Output
@@ -7278,8 +7968,8 @@ class AddressComponent extends EditComponentBase {
7278
7968
  @osovitny/anatoly
7279
7969
 
7280
7970
  Authors:
7281
- Vadim Osovitny vadim@osovitny.com
7282
- Anatoly Osovitny anatoly@osovitny.com
7971
+ Vadim Osovitny vadim.osovitny@osovitny.com
7972
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7283
7973
 
7284
7974
  Created:
7285
7975
  02 Aug 2022
@@ -7344,7 +8034,7 @@ class CompanyComponent extends EditComponentBase {
7344
8034
  };
7345
8035
  return JSON.stringify(data);
7346
8036
  }
7347
- static { this.ɵfac = function CompanyComponent_Factory(t) { return new (t || CompanyComponent)(i0.ɵɵdirectiveInject(i2.FormBuilder)); }; }
8037
+ static { this.ɵfac = function CompanyComponent_Factory(t) { return new (t || CompanyComponent)(i0.ɵɵdirectiveInject(i2$1.FormBuilder)); }; }
7348
8038
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompanyComponent, selectors: [["anatoly-forms-company"]], inputs: { company: "company" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 24, vars: 22, consts: [["classes", "card-primary card-outline"], [3, "title", 4, "ngIf"], [1, "row", 3, "formGroup"], [1, "form-group", "col-6", 3, "ngClass"], [1, "col-form-label"], ["type", "text", "formControlName", "company_name", "placeholder", "Company Name", 1, "form-control"], ["controlName", "company_name", "controlTitle", "Company Name", 3, "formGroup", "formSubmitted"], ["type", "tel", "formControlName", "company_phone", "placeholder", "Company Phone", 1, "form-control"], ["controlName", "company_phone", "controlTitle", "Company Phone", 3, "formGroup", "formSubmitted"], ["type", "email", "formControlName", "company_email", "placeholder", "Company Email", 1, "form-control"], ["controlName", "company_email", "controlTitle", "Company Email", 3, "formGroup", "formSubmitted"], ["type", "url", "placeholder", "https://example.com", "pattern", "https://.*", "size", "30", "formControlName", "company_websiteUrl", 1, "form-control"], ["controlName", "company_websiteUrl", "controlTitle", "Company website url", 3, "formGroup", "formSubmitted"], [3, "title"]], template: function CompanyComponent_Template(rf, ctx) { if (rf & 1) {
7349
8039
  i0.ɵɵelementStart(0, "anatoly-card", 0);
7350
8040
  i0.ɵɵtemplate(1, CompanyComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
@@ -7389,12 +8079,12 @@ class CompanyComponent extends EditComponentBase {
7389
8079
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c0, ctx.isControlInvalid("company_websiteUrl")));
7390
8080
  i0.ɵɵadvance(4);
7391
8081
  i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
7392
- } }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.PatternValidator, i2.FormGroupDirective, i2.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
8082
+ } }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.PatternValidator, i2$1.FormGroupDirective, i2$1.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
7393
8083
  }
7394
8084
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompanyComponent, [{
7395
8085
  type: Component,
7396
8086
  args: [{ selector: 'anatoly-forms-company', template: "<anatoly-card classes='card-primary card-outline'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_name') }\">\r\n <label class='col-form-label'>Name</label>\r\n <input type='text' class='form-control' formControlName='company_name' placeholder='Company Name'>\r\n <anatoly-item-validation-summary controlName='company_name'\r\n controlTitle='Company Name'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_phone') }\">\r\n <label class='col-form-label'>Phone</label>\r\n <input type='tel' class='form-control' formControlName='company_phone' placeholder='Company Phone'>\r\n <anatoly-item-validation-summary controlName='company_phone'\r\n controlTitle='Company Phone'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_email') }\">\r\n <label class='col-form-label'>Email</label>\r\n <input type='email' class='form-control' formControlName='company_email' placeholder='Company Email'>\r\n <anatoly-item-validation-summary controlName='company_email'\r\n controlTitle='Company Email'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_websiteUrl') }\">\r\n <label class='col-form-label'>Website Url</label>\r\n <input type='url' placeholder='https://example.com' pattern='https://.*' size='30'\r\n class='form-control' formControlName='company_websiteUrl'>\r\n <anatoly-item-validation-summary controlName='company_websiteUrl'\r\n controlTitle='Company website url'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
7397
- }], () => [{ type: i2.FormBuilder }], { company: [{
8087
+ }], () => [{ type: i2$1.FormBuilder }], { company: [{
7398
8088
  type: Input
7399
8089
  }] }); })();
7400
8090
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompanyComponent, { className: "CompanyComponent", filePath: "lib\\ui\\forms\\components\\company\\company.component.ts", lineNumber: 28 }); })();
@@ -7405,8 +8095,8 @@ class CompanyComponent extends EditComponentBase {
7405
8095
  @osovitny/anatoly
7406
8096
 
7407
8097
  Authors:
7408
- Vadim Osovitny vadim@osovitny.com
7409
- Anatoly Osovitny anatoly@osovitny.com
8098
+ Vadim Osovitny vadim.osovitny@osovitny.com
8099
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7410
8100
 
7411
8101
  Created:
7412
8102
  2 Aug 2022
@@ -7422,8 +8112,8 @@ class CompanyComponent extends EditComponentBase {
7422
8112
  @osovitny/anatoly
7423
8113
 
7424
8114
  Authors:
7425
- Vadim Osovitny vadim@osovitny.com
7426
- Anatoly Osovitny anatoly@osovitny.com
8115
+ Vadim Osovitny vadim.osovitny@osovitny.com
8116
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7427
8117
 
7428
8118
  Created:
7429
8119
  26 Jun 2020
@@ -7462,8 +8152,8 @@ class FileSizePipe {
7462
8152
  @osovitny/anatoly
7463
8153
 
7464
8154
  Authors:
7465
- Vadim Osovitny vadim@osovitny.com
7466
- Anatoly Osovitny anatoly@osovitny.com
8155
+ Vadim Osovitny vadim.osovitny@osovitny.com
8156
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7467
8157
 
7468
8158
  Created:
7469
8159
  26 Jun 2020
@@ -7497,8 +8187,8 @@ class ReplaceTextPipe {
7497
8187
  @osovitny/anatoly
7498
8188
 
7499
8189
  Authors:
7500
- Vadim Osovitny vadim@osovitny.com
7501
- Anatoly Osovitny anatoly@osovitny.com
8190
+ Vadim Osovitny vadim.osovitny@osovitny.com
8191
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7502
8192
 
7503
8193
  Created:
7504
8194
  27 Oct 2019
@@ -7528,8 +8218,8 @@ class SafeHtmlPipe {
7528
8218
  @osovitny/anatoly
7529
8219
 
7530
8220
  Authors:
7531
- Vadim Osovitny vadim@osovitny.com
7532
- Anatoly Osovitny anatoly@osovitny.com
8221
+ Vadim Osovitny vadim.osovitny@osovitny.com
8222
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7533
8223
 
7534
8224
  Created:
7535
8225
  2 Aug 2022
@@ -7544,8 +8234,8 @@ class SafeHtmlPipe {
7544
8234
  @osovitny/anatoly
7545
8235
 
7546
8236
  Authors:
7547
- Vadim Osovitny vadim@osovitny.com
7548
- Anatoly Osovitny anatoly@osovitny.com
8237
+ Vadim Osovitny vadim.osovitny@osovitny.com
8238
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7549
8239
 
7550
8240
  Created:
7551
8241
  2 Aug 2022
@@ -7560,8 +8250,24 @@ class SafeHtmlPipe {
7560
8250
  @osovitny/anatoly
7561
8251
 
7562
8252
  Authors:
7563
- Vadim Osovitny vadim@osovitny.com
7564
- Anatoly Osovitny anatoly@osovitny.com
8253
+ Vadim Osovitny vadim.osovitny@osovitny.com
8254
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8255
+
8256
+ Created:
8257
+ 8 Nov 2024
8258
+
8259
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
8260
+ </file>
8261
+ */
8262
+
8263
+ /*
8264
+ <file>
8265
+ Project:
8266
+ @osovitny/anatoly
8267
+
8268
+ Authors:
8269
+ Vadim Osovitny vadim.osovitny@osovitny.com
8270
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7565
8271
 
7566
8272
  Created:
7567
8273
  29 June 2020
@@ -7585,10 +8291,13 @@ class AnatolyCoreModule {
7585
8291
  DigitalMarketingService,
7586
8292
  GoogleAnalyticsService,
7587
8293
  LoadingService,
8294
+ ScriptService,
7588
8295
  StarterService,
7589
8296
  LocalStorageService,
7590
8297
  SessionStorageService,
8298
+ //Logging
7591
8299
  LoggingService,
8300
+ //Notifications
7592
8301
  NotificationService
7593
8302
  ], imports: [CommonModule,
7594
8303
  RouterModule,
@@ -7620,10 +8329,13 @@ class AnatolyCoreModule {
7620
8329
  DigitalMarketingService,
7621
8330
  GoogleAnalyticsService,
7622
8331
  LoadingService,
8332
+ ScriptService,
7623
8333
  StarterService,
7624
8334
  LocalStorageService,
7625
8335
  SessionStorageService,
8336
+ //Logging
7626
8337
  LoggingService,
8338
+ //Notifications
7627
8339
  NotificationService
7628
8340
  ]
7629
8341
  }]
@@ -7644,8 +8356,7 @@ class AnatolyCoreModule {
7644
8356
  @osovitny/anatoly
7645
8357
 
7646
8358
  Authors:
7647
- Vadim Osovitny vadim@osovitny.com
7648
- Anatoly Osovitny anatoly@osovitny.com
8359
+ Vadim Osovitny vadim.osovitny@osovitny.com
7649
8360
 
7650
8361
  Created:
7651
8362
  4 Mar 2020
@@ -7658,6 +8369,9 @@ class AnatolyDataModule {
7658
8369
  static { this.ɵfac = function AnatolyDataModule_Factory(t) { return new (t || AnatolyDataModule)(); }; }
7659
8370
  static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyDataModule }); }
7660
8371
  static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
8372
+ //Billing
8373
+ PaymentsApiService,
8374
+ //App
7661
8375
  CoreApiService,
7662
8376
  EmailsApiService
7663
8377
  ], imports: [CommonModule] }); }
@@ -7669,6 +8383,9 @@ class AnatolyDataModule {
7669
8383
  CommonModule
7670
8384
  ],
7671
8385
  providers: [
8386
+ //Billing
8387
+ PaymentsApiService,
8388
+ //App
7672
8389
  CoreApiService,
7673
8390
  EmailsApiService
7674
8391
  ]
@@ -7682,8 +8399,8 @@ class AnatolyDataModule {
7682
8399
  @osovitny/anatoly
7683
8400
 
7684
8401
  Authors:
7685
- Vadim Osovitny vadim@osovitny.com
7686
- Anatoly Osovitny anatoly@osovitny.com
8402
+ Vadim Osovitny vadim.osovitny@osovitny.com
8403
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7687
8404
 
7688
8405
  Created:
7689
8406
  2 May 2023
@@ -7786,8 +8503,8 @@ function loggerCallback(logLevel, message, containsPii) {
7786
8503
  @osovitny/anatoly
7787
8504
 
7788
8505
  Authors:
7789
- Vadim Osovitny vadim@osovitny.com
7790
- Anatoly Osovitny anatoly@osovitny.com
8506
+ Vadim Osovitny vadim.osovitny@osovitny.com
8507
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7791
8508
 
7792
8509
  Created:
7793
8510
  6 Dec 2018
@@ -7860,8 +8577,8 @@ class AnatolyIAMModule {
7860
8577
  @osovitny/anatoly
7861
8578
 
7862
8579
  Authors:
7863
- Vadim Osovitny vadim@osovitny.com
7864
- Anatoly Osovitny anatoly@osovitny.com
8580
+ Vadim Osovitny vadim.osovitny@osovitny.com
8581
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7865
8582
 
7866
8583
  Created:
7867
8584
  20 Sep 2023
@@ -7896,8 +8613,8 @@ class SignInPage extends PageBase {
7896
8613
  @osovitny/anatoly
7897
8614
 
7898
8615
  Authors:
7899
- Vadim Osovitny vadim@osovitny.com
7900
- Anatoly Osovitny anatoly@osovitny.com
8616
+ Vadim Osovitny vadim.osovitny@osovitny.com
8617
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7901
8618
 
7902
8619
  Created:
7903
8620
  20 Sep 2023
@@ -7932,8 +8649,8 @@ class SignOutPage extends PageBase {
7932
8649
  @osovitny/anatoly
7933
8650
 
7934
8651
  Authors:
7935
- Vadim Osovitny vadim@osovitny.com
7936
- Anatoly Osovitny anatoly@osovitny.com
8652
+ Vadim Osovitny vadim.osovitny@osovitny.com
8653
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7937
8654
 
7938
8655
  Created:
7939
8656
  20 Sep 2023
@@ -7968,8 +8685,8 @@ class SignUpPage extends PageBase {
7968
8685
  @osovitny/anatoly
7969
8686
 
7970
8687
  Authors:
7971
- Vadim Osovitny vadim@osovitny.com
7972
- Anatoly Osovitny anatoly@osovitny.com
8688
+ Vadim Osovitny vadim.osovitny@osovitny.com
8689
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
7973
8690
 
7974
8691
  Created:
7975
8692
  2 May 2023
@@ -8008,8 +8725,8 @@ const PAGES = [
8008
8725
  @osovitny/anatoly
8009
8726
 
8010
8727
  Authors:
8011
- Vadim Osovitny vadim@osovitny.com
8012
- Anatoly Osovitny anatoly@osovitny.com
8728
+ Vadim Osovitny vadim.osovitny@osovitny.com
8729
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8013
8730
 
8014
8731
  Created:
8015
8732
  6 Dec 2018
@@ -8054,54 +8771,7 @@ class AnatolyIAMPagesModule {
8054
8771
  @osovitny/anatoly
8055
8772
 
8056
8773
  Authors:
8057
- Vadim Osovitny vadim@osovitny.com
8058
- Anatoly Osovitny anatoly@osovitny.com
8059
-
8060
- Created:
8061
- 14 Jun 2024
8062
-
8063
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
8064
- </file>
8065
- */
8066
- //Node
8067
- class AnatolyPaymentsModule {
8068
- static { this.ɵfac = function AnatolyPaymentsModule_Factory(t) { return new (t || AnatolyPaymentsModule)(); }; }
8069
- static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyPaymentsModule }); }
8070
- static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
8071
- ScriptService,
8072
- //PayPal
8073
- PayPalScriptService
8074
- ], imports: [CommonModule] }); }
8075
- }
8076
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyPaymentsModule, [{
8077
- type: NgModule,
8078
- args: [{
8079
- imports: [
8080
- CommonModule
8081
- ],
8082
- declarations: [
8083
- PayPalComponent
8084
- ],
8085
- exports: [
8086
- PayPalComponent
8087
- ],
8088
- providers: [
8089
- ScriptService,
8090
- //PayPal
8091
- PayPalScriptService
8092
- ]
8093
- }]
8094
- }], null, null); })();
8095
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyPaymentsModule, { declarations: [PayPalComponent], imports: [CommonModule], exports: [PayPalComponent] }); })();
8096
-
8097
- /*
8098
- <file>
8099
- Project:
8100
- @osovitny/anatoly
8101
-
8102
- Authors:
8103
- Vadim Osovitny vadim@osovitny.com
8104
- Anatoly Osovitny anatoly@osovitny.com
8774
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8105
8775
 
8106
8776
  Created:
8107
8777
  25 Aug 2022
@@ -8140,8 +8810,7 @@ class FaModule {
8140
8810
  @osovitny/anatoly
8141
8811
 
8142
8812
  Authors:
8143
- Vadim Osovitny vadim@osovitny.com
8144
- Anatoly Osovitny anatoly@osovitny.com
8813
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8145
8814
 
8146
8815
  Created:
8147
8816
  28 Aug 2022
@@ -8219,57 +8888,245 @@ class KendoModule {
8219
8888
  @osovitny/anatoly
8220
8889
 
8221
8890
  Authors:
8222
- Vadim Osovitny vadim@osovitny.com
8223
- Anatoly Osovitny anatoly@osovitny.com
8891
+ Vadim Osovitny vadim.osovitny@osovitny.com
8224
8892
 
8225
8893
  Created:
8226
- 26 Jun 2020
8894
+ 8 Nov 2024
8895
+
8896
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
8897
+ </file>
8898
+ */
8899
+ const PAYMENTS_COMPONENTS = [
8900
+ PaypalButtonComponent,
8901
+ PayPalComponent,
8902
+ //Dialogs
8903
+ BraintreeDialog,
8904
+ StripeDialog
8905
+ ];
8906
+
8907
+ /*
8908
+ <file>
8909
+ Project:
8910
+ @osovitny/anatoly
8911
+
8912
+ Authors:
8913
+ Vadim Osovitny vadim.osovitny@osovitny.com
8914
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8915
+
8916
+ Created:
8917
+ 14 Jun 2024
8227
8918
 
8228
8919
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
8229
8920
  </file>
8230
8921
  */
8231
8922
  //Node
8232
- const COMPONENTS = [
8923
+ class AnatolyBillingModule {
8924
+ static { this.ɵfac = function AnatolyBillingModule_Factory(t) { return new (t || AnatolyBillingModule)(); }; }
8925
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyBillingModule }); }
8926
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
8927
+ ScriptService,
8928
+ PayPalScriptService,
8929
+ //Payments
8930
+ PaymentsService
8931
+ ], imports: [CommonModule,
8932
+ FaModule,
8933
+ KendoModule] }); }
8934
+ }
8935
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyBillingModule, [{
8936
+ type: NgModule,
8937
+ args: [{
8938
+ imports: [
8939
+ CommonModule,
8940
+ FaModule,
8941
+ KendoModule
8942
+ ],
8943
+ declarations: [
8944
+ PAYMENTS_COMPONENTS
8945
+ ],
8946
+ exports: [
8947
+ PAYMENTS_COMPONENTS
8948
+ ],
8949
+ providers: [
8950
+ ScriptService,
8951
+ PayPalScriptService,
8952
+ //Payments
8953
+ PaymentsService
8954
+ ]
8955
+ }]
8956
+ }], null, null); })();
8957
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyBillingModule, { declarations: [PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog], imports: [CommonModule,
8958
+ FaModule,
8959
+ KendoModule], exports: [PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog] }); })();
8960
+
8961
+ /*
8962
+ <file>
8963
+ Project:
8964
+ @osovitny/anatoly
8965
+
8966
+ Authors:
8967
+ Vadim Osovitny vadim.osovitny@osovitny.com
8968
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
8969
+
8970
+ Created:
8971
+ 2 Aug 2022
8972
+
8973
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
8974
+ </file>
8975
+ */
8976
+ const MAIN_COMPONENTS = [
8977
+ //Billing
8233
8978
  BuyAccessButtonComponent,
8234
8979
  SubscribePlanButtonComponent,
8980
+ //Cards
8981
+ CardComponent,
8982
+ CardHeaderComponent,
8983
+ CardBodyComponent,
8984
+ CardFooterComponent,
8235
8985
  CheckIconComponent,
8986
+ Copy2ClipboardComponent,
8236
8987
  DataPagerComponent,
8988
+ //Dropdownlists
8989
+ CountryDropdownlist,
8990
+ TimezoneDropdownlist,
8991
+ //EhmlEditor
8992
+ HtmlEditorComponent,
8993
+ FormsHtmlEditorComponent,
8994
+ //Identity
8237
8995
  SignInButtonComponent,
8238
8996
  SignUpButtonComponent,
8239
8997
  SignOutButtonComponent,
8240
8998
  NodataComponent,
8999
+ //Spinners
8241
9000
  PageSpinnerComponent,
8242
9001
  LoadingComponent,
8243
- Copy2ClipboardComponent,
8244
- UrlSlugComponent,
8245
- //Dropdownlists
8246
- CountryDropdownlist,
8247
- TimezoneDropdownlist,
8248
- //Cards
8249
- CardComponent,
8250
- CardHeaderComponent,
8251
- CardBodyComponent,
8252
- CardFooterComponent,
8253
- //HtmlEditor
8254
- HtmlEditorComponent,
8255
- FormsHtmlEditorComponent,
8256
- //Dialogs
8257
- ContactUsDialog,
8258
- //Directives
9002
+ UrlSlugComponent
9003
+ ];
9004
+
9005
+ /*
9006
+ <file>
9007
+ Project:
9008
+ @osovitny/anatoly
9009
+
9010
+ Authors:
9011
+ Vadim Osovitny vadim.osovitny@osovitny.com
9012
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9013
+
9014
+ Created:
9015
+ 2 Aug 2022
9016
+
9017
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9018
+ </file>
9019
+ */
9020
+ const DIALOGS = [
9021
+ ContactUsDialog
9022
+ ];
9023
+
9024
+ /*
9025
+ <file>
9026
+ Project:
9027
+ @osovitny/anatoly
9028
+
9029
+ Authors:
9030
+ Vadim Osovitny vadim.osovitny@osovitny.com
9031
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9032
+
9033
+ Created:
9034
+ 2 Aug 2022
9035
+
9036
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9037
+ </file>
9038
+ */
9039
+ const DIRECTIVES = [
8259
9040
  NativeElementDirective,
8260
- HoveringDirective,
8261
- //Forms
9041
+ HoveringDirective
9042
+ ];
9043
+
9044
+ /*
9045
+ <file>
9046
+ Project:
9047
+ @osovitny/anatoly
9048
+
9049
+ Authors:
9050
+ Vadim Osovitny vadim.osovitny@osovitny.com
9051
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9052
+
9053
+ Created:
9054
+ 2 Aug 2022
9055
+
9056
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9057
+ </file>
9058
+ */
9059
+ const FORMS = [
8262
9060
  AddressComponent,
8263
9061
  CompanyComponent,
8264
- ContactUsForm,
8265
- //Pipes
9062
+ ContactUsForm
9063
+ ];
9064
+
9065
+ /*
9066
+ <file>
9067
+ Project:
9068
+ @osovitny/anatoly
9069
+
9070
+ Authors:
9071
+ Vadim Osovitny vadim.osovitny@osovitny.com
9072
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9073
+
9074
+ Created:
9075
+ 2 Aug 2022
9076
+
9077
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9078
+ </file>
9079
+ */
9080
+ const PIPES = [
8266
9081
  SafeHtmlPipe,
8267
9082
  ReplaceTextPipe,
8268
- FileSizePipe,
8269
- //Validation
9083
+ FileSizePipe
9084
+ ];
9085
+
9086
+ /*
9087
+ <file>
9088
+ Project:
9089
+ @osovitny/anatoly
9090
+
9091
+ Authors:
9092
+ Vadim Osovitny vadim.osovitny@osovitny.com
9093
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9094
+
9095
+ Created:
9096
+ 2 Aug 2022
9097
+
9098
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9099
+ </file>
9100
+ */
9101
+ const VALIDATION_COMPONENTS = [
8270
9102
  FormValidationSummaryComponent,
8271
9103
  ItemValidationSummaryComponent
8272
9104
  ];
9105
+
9106
+ /*
9107
+ <file>
9108
+ Project:
9109
+ @osovitny/anatoly
9110
+
9111
+ Authors:
9112
+ Vadim Osovitny vadim.osovitny@osovitny.com
9113
+ Anatoly Osovitny anatoly.osovitny@osovitny.com
9114
+
9115
+ Created:
9116
+ 26 Jun 2020
9117
+
9118
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
9119
+ </file>
9120
+ */
9121
+ //Node
9122
+ const COMPONENTS = [
9123
+ MAIN_COMPONENTS,
9124
+ DIALOGS,
9125
+ DIRECTIVES,
9126
+ FORMS,
9127
+ PIPES,
9128
+ VALIDATION_COMPONENTS
9129
+ ];
8273
9130
  class AnatolyUIModule {
8274
9131
  static { this.ɵfac = function AnatolyUIModule_Factory(t) { return new (t || AnatolyUIModule)(); }; }
8275
9132
  static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyUIModule }); }
@@ -8303,99 +9160,22 @@ class AnatolyUIModule {
8303
9160
  ]
8304
9161
  }]
8305
9162
  }], null, null); })();
8306
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyUIModule, { declarations: [BuyAccessButtonComponent,
8307
- SubscribePlanButtonComponent,
8308
- CheckIconComponent,
8309
- DataPagerComponent,
8310
- SignInButtonComponent,
8311
- SignUpButtonComponent,
8312
- SignOutButtonComponent,
8313
- NodataComponent,
8314
- PageSpinnerComponent,
8315
- LoadingComponent,
8316
- Copy2ClipboardComponent,
8317
- UrlSlugComponent,
8318
- //Dropdownlists
8319
- CountryDropdownlist,
8320
- TimezoneDropdownlist,
8321
- //Cards
8322
- CardComponent,
8323
- CardHeaderComponent,
8324
- CardBodyComponent,
8325
- CardFooterComponent,
8326
- //HtmlEditor
8327
- HtmlEditorComponent,
8328
- FormsHtmlEditorComponent,
8329
- //Dialogs
8330
- ContactUsDialog,
8331
- //Directives
8332
- NativeElementDirective,
8333
- HoveringDirective,
8334
- //Forms
8335
- AddressComponent,
8336
- CompanyComponent,
8337
- ContactUsForm,
8338
- //Pipes
8339
- SafeHtmlPipe,
8340
- ReplaceTextPipe,
8341
- FileSizePipe,
8342
- //Validation
8343
- FormValidationSummaryComponent,
8344
- ItemValidationSummaryComponent], imports: [CommonModule,
9163
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyUIModule, { declarations: [BuyAccessButtonComponent, SubscribePlanButtonComponent, CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CheckIconComponent, Copy2ClipboardComponent, DataPagerComponent, CountryDropdownlist, TimezoneDropdownlist, HtmlEditorComponent, FormsHtmlEditorComponent, SignInButtonComponent, SignUpButtonComponent, SignOutButtonComponent, NodataComponent, PageSpinnerComponent, LoadingComponent, UrlSlugComponent, ContactUsDialog, NativeElementDirective, HoveringDirective, AddressComponent, CompanyComponent, ContactUsForm, SafeHtmlPipe, ReplaceTextPipe, FileSizePipe, FormValidationSummaryComponent, ItemValidationSummaryComponent], imports: [CommonModule,
8345
9164
  RouterModule,
8346
9165
  ReactiveFormsModule,
8347
9166
  FormsModule,
8348
9167
  NgxCaptchaModule,
8349
9168
  FERootModule,
8350
9169
  FaModule,
8351
- KendoModule], exports: [BuyAccessButtonComponent,
8352
- SubscribePlanButtonComponent,
8353
- CheckIconComponent,
8354
- DataPagerComponent,
8355
- SignInButtonComponent,
8356
- SignUpButtonComponent,
8357
- SignOutButtonComponent,
8358
- NodataComponent,
8359
- PageSpinnerComponent,
8360
- LoadingComponent,
8361
- Copy2ClipboardComponent,
8362
- UrlSlugComponent,
8363
- //Dropdownlists
8364
- CountryDropdownlist,
8365
- TimezoneDropdownlist,
8366
- //Cards
8367
- CardComponent,
8368
- CardHeaderComponent,
8369
- CardBodyComponent,
8370
- CardFooterComponent,
8371
- //HtmlEditor
8372
- HtmlEditorComponent,
8373
- FormsHtmlEditorComponent,
8374
- //Dialogs
8375
- ContactUsDialog,
8376
- //Directives
8377
- NativeElementDirective,
8378
- HoveringDirective,
8379
- //Forms
8380
- AddressComponent,
8381
- CompanyComponent,
8382
- ContactUsForm,
8383
- //Pipes
8384
- SafeHtmlPipe,
8385
- ReplaceTextPipe,
8386
- FileSizePipe,
8387
- //Validation
8388
- FormValidationSummaryComponent,
8389
- ItemValidationSummaryComponent] }); })();
8390
-
8391
- /*
8392
- <file>
8393
- Project:
8394
- @osovitny/anatoly
8395
-
8396
- Authors:
8397
- Vadim Osovitny vadim@osovitny.com
8398
- Anatoly Osovitny anatoly@osovitny.com
9170
+ KendoModule], exports: [BuyAccessButtonComponent, SubscribePlanButtonComponent, CardComponent, CardHeaderComponent, CardBodyComponent, CardFooterComponent, CheckIconComponent, Copy2ClipboardComponent, DataPagerComponent, CountryDropdownlist, TimezoneDropdownlist, HtmlEditorComponent, FormsHtmlEditorComponent, SignInButtonComponent, SignUpButtonComponent, SignOutButtonComponent, NodataComponent, PageSpinnerComponent, LoadingComponent, UrlSlugComponent, ContactUsDialog, NativeElementDirective, HoveringDirective, AddressComponent, CompanyComponent, ContactUsForm, SafeHtmlPipe, ReplaceTextPipe, FileSizePipe, FormValidationSummaryComponent, ItemValidationSummaryComponent] }); })();
9171
+
9172
+ /*
9173
+ <file>
9174
+ Project:
9175
+ @osovitny/anatoly
9176
+
9177
+ Authors:
9178
+ Vadim Osovitny vadim.osovitny@osovitny.com
8399
9179
 
8400
9180
  Created:
8401
9181
  29 Aug 2022
@@ -8444,13 +9224,13 @@ class AnatolyModule {
8444
9224
  AnatolyUIModule] }); })();
8445
9225
 
8446
9226
  /*
8447
- * Public API Surface of anatoly-lib
9227
+ * Public API
8448
9228
  */
8449
- //Core
9229
+ //Billing
8450
9230
 
8451
9231
  /**
8452
9232
  * Generated bundle index. Do not edit.
8453
9233
  */
8454
9234
 
8455
- export { AddressComponent, AdminGuard, Alerts, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyIAMModule, AnatolyIAMPagesModule, AnatolyModule, AnatolyPaymentsModule, AnatolyUIModule, ApiServiceBase, ApiUrl, AppContextService, AppCoreSettings, AppName, AppSettings, AppVersion, AuthService, AuthenticationGuard, BaseGoService, Browser, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, ClientApps, CompanyComponent, ComponentBase, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, CountryDropdownlist, DOM, DataPagerComponent, DateConvert, DefaultEditorOptions, DialogBase, DigitalMarketingService, EditComponentBase, EditPageBase, EmailsApiService, EnumEditComponentBase, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, GlobalErrorHandler, GoogleAnalyticsService, GridEditServiceBase, GridReadServiceBase, Guid, HoveringDirective, HtmlEditorComponent, HtmlEditorComponentBase, IdleService, InjectorInstance, IsDevMode, IsProdMode, ItemValidationSummaryComponent, L10NUrl, L10nUtils, ListBase, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, MSALUtils, NativeElementDirective, NodataComponent, NotificationService, PageBase, PageSpinnerComponent, PagedPageBase, PayPalComponent, PayPalScriptService, QSUtils, ReplaceTextPipe, SafeHtmlPipe, ScriptService, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, StarterGuard, StarterService, Stopwatch, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, UrlSlugComponent, Utils, ValidationSummaryComponent, XmlFormatter, dateFormats, dateTimeFormats, getAppSettingsById, getAppSettingsByName, is, localizationInitializerFactory, throwIfAlreadyLoaded, timeFormats, translateLoaderFactory };
9235
+ export { AddressComponent, AdminGuard, Alerts, AnatolyBillingModule, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyIAMModule, AnatolyIAMPagesModule, AnatolyModule, AnatolyUIModule, ApiServiceBase, ApiUrl, AppContextService, AppCoreSettings, AppName, AppSettings, AppVersion, AuthService, AuthenticationGuard, BaseGoService, BraintreeDialog, Browser, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, ClientApps, CompanyComponent, ComponentBase, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, CountryDropdownlist, DOM, DataPagerComponent, DataViewType, DateConvert, DefaultEditorOptions, DialogBase, DigitalMarketingService, DiscountCodeStatus, DiscountCodeType, EditComponentBase, EditPageBase, EmailsApiService, EnumEditComponentBase, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, GABillingEvents, GAEvents, GlobalErrorHandler, GoogleAnalyticsService, GridEditServiceBase, GridReadServiceBase, Guid, HoveringDirective, HtmlEditorComponent, HtmlEditorComponentBase, IdleService, InjectorInstance, IsDevMode, IsProdMode, ItemValidationSummaryComponent, L10NUrl, L10nUtils, ListBase, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, MSALUtils, NativeElementDirective, NodataComponent, NotificationService, PageBase, PageSpinnerComponent, PagedPageBase, PayPalComponent, PayPalScriptService, PaymentMethod, PaymentStage, PaymentType, PaymentsService, PaypalButtonComponent, QSUtils, ReplaceTextPipe, SafeHtmlPipe, ScriptService, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, StarterGuard, StarterService, Stopwatch, StripeDialog, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, UrlSlugComponent, Utils, ValidationSummaryComponent, XmlFormatter, dateFormats, dateTimeFormats, getAppSettingsById, getAppSettingsByName, is, localizationInitializerFactory, throwIfAlreadyLoaded, timeFormats, translateLoaderFactory };
8456
9236
  //# sourceMappingURL=osovitny-anatoly.mjs.map