@nascentdigital/funnel-core 4.4.4

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 (368) hide show
  1. package/dist/app/AppConfig.d.ts +41 -0
  2. package/dist/app/AppConfig.js +93 -0
  3. package/dist/app/BrandConfig.d.ts +13 -0
  4. package/dist/app/BrandConfig.js +2 -0
  5. package/dist/app/FeaturesConfig.d.ts +6 -0
  6. package/dist/app/FeaturesConfig.js +2 -0
  7. package/dist/app/RegionsConfig.d.ts +43 -0
  8. package/dist/app/RegionsConfig.js +113 -0
  9. package/dist/app/UIConfig.d.ts +4 -0
  10. package/dist/app/UIConfig.js +2 -0
  11. package/dist/app/index.d.ts +5 -0
  12. package/dist/app/index.js +21 -0
  13. package/dist/consent/ConsentCategory.d.ts +12 -0
  14. package/dist/consent/ConsentCategory.js +28 -0
  15. package/dist/consent/ConsentService.d.ts +15 -0
  16. package/dist/consent/ConsentService.js +37 -0
  17. package/dist/consent/index.d.ts +2 -0
  18. package/dist/consent/index.js +18 -0
  19. package/dist/errors/IsometricError.d.ts +19 -0
  20. package/dist/errors/IsometricError.js +30 -0
  21. package/dist/errors/IsometricErrorModule.d.ts +11 -0
  22. package/dist/errors/IsometricErrorModule.js +2 -0
  23. package/dist/errors/IsometricErrorUtils.d.ts +9 -0
  24. package/dist/errors/IsometricErrorUtils.js +85 -0
  25. package/dist/errors/SerializedIsometricError.d.ts +10 -0
  26. package/dist/errors/SerializedIsometricError.js +15 -0
  27. package/dist/errors/api/ApiError.d.ts +15 -0
  28. package/dist/errors/api/ApiError.js +23 -0
  29. package/dist/errors/api/ApiErrors.d.ts +7 -0
  30. package/dist/errors/api/ApiErrors.js +67 -0
  31. package/dist/errors/api/ArgumentError.d.ts +7 -0
  32. package/dist/errors/api/ArgumentError.js +18 -0
  33. package/dist/errors/api/ConcurrencyError.d.ts +4 -0
  34. package/dist/errors/api/ConcurrencyError.js +11 -0
  35. package/dist/errors/api/ConflictError.d.ts +4 -0
  36. package/dist/errors/api/ConflictError.js +11 -0
  37. package/dist/errors/api/DependencyError.d.ts +4 -0
  38. package/dist/errors/api/DependencyError.js +11 -0
  39. package/dist/errors/api/IllegalStateError.d.ts +4 -0
  40. package/dist/errors/api/IllegalStateError.js +11 -0
  41. package/dist/errors/api/InvalidOperationError.d.ts +4 -0
  42. package/dist/errors/api/InvalidOperationError.js +11 -0
  43. package/dist/errors/api/NotAuthenticatedError.d.ts +4 -0
  44. package/dist/errors/api/NotAuthenticatedError.js +11 -0
  45. package/dist/errors/api/NotAuthorizedError.d.ts +4 -0
  46. package/dist/errors/api/NotAuthorizedError.js +11 -0
  47. package/dist/errors/api/NotAvailableError.d.ts +4 -0
  48. package/dist/errors/api/NotAvailableError.js +11 -0
  49. package/dist/errors/api/NotFoundError.d.ts +4 -0
  50. package/dist/errors/api/NotFoundError.js +11 -0
  51. package/dist/errors/api/NotImplementedError.d.ts +4 -0
  52. package/dist/errors/api/NotImplementedError.js +11 -0
  53. package/dist/errors/api/OfflineError.d.ts +4 -0
  54. package/dist/errors/api/OfflineError.js +11 -0
  55. package/dist/errors/api/RangeError.d.ts +4 -0
  56. package/dist/errors/api/RangeError.js +11 -0
  57. package/dist/errors/api/ServerError.d.ts +4 -0
  58. package/dist/errors/api/ServerError.js +11 -0
  59. package/dist/errors/api/TimeoutError.d.ts +4 -0
  60. package/dist/errors/api/TimeoutError.js +11 -0
  61. package/dist/errors/api/index.d.ts +16 -0
  62. package/dist/errors/api/index.js +32 -0
  63. package/dist/errors/index.d.ts +5 -0
  64. package/dist/errors/index.js +26 -0
  65. package/dist/forms/FormModel.d.ts +47 -0
  66. package/dist/forms/FormModel.js +149 -0
  67. package/dist/forms/Forms.d.ts +15 -0
  68. package/dist/forms/Forms.js +35 -0
  69. package/dist/forms/IFormService.d.ts +6 -0
  70. package/dist/forms/IFormService.js +2 -0
  71. package/dist/forms/TranslateSchema.d.ts +8 -0
  72. package/dist/forms/TranslateSchema.js +2 -0
  73. package/dist/forms/index.d.ts +4 -0
  74. package/dist/forms/index.js +20 -0
  75. package/dist/index.d.ts +10 -0
  76. package/dist/index.js +49 -0
  77. package/dist/regionalization/Country.d.ts +266 -0
  78. package/dist/regionalization/Country.js +338 -0
  79. package/dist/regionalization/Language.d.ts +199 -0
  80. package/dist/regionalization/Language.js +237 -0
  81. package/dist/regionalization/Locale.d.ts +28 -0
  82. package/dist/regionalization/Locale.js +49 -0
  83. package/dist/regionalization/Localized.d.ts +10 -0
  84. package/dist/regionalization/Localized.js +36 -0
  85. package/dist/regionalization/LocalizedCopy.d.ts +9 -0
  86. package/dist/regionalization/LocalizedCopy.js +26 -0
  87. package/dist/regionalization/Regionalization.d.ts +50 -0
  88. package/dist/regionalization/Regionalization.js +260 -0
  89. package/dist/regionalization/Regions.d.ts +2 -0
  90. package/dist/regionalization/Regions.js +2 -0
  91. package/dist/regionalization/index.d.ts +7 -0
  92. package/dist/regionalization/index.js +23 -0
  93. package/dist/schema/Asset.d.ts +23 -0
  94. package/dist/schema/Asset.js +36 -0
  95. package/dist/schema/AssetScope.d.ts +75 -0
  96. package/dist/schema/AssetScope.js +146 -0
  97. package/dist/schema/Block.d.ts +105 -0
  98. package/dist/schema/Block.js +122 -0
  99. package/dist/schema/ChangeSet.d.ts +108 -0
  100. package/dist/schema/ChangeSet.js +187 -0
  101. package/dist/schema/Collection.d.ts +197 -0
  102. package/dist/schema/Collection.js +165 -0
  103. package/dist/schema/CollectionModel.d.ts +30 -0
  104. package/dist/schema/CollectionModel.js +383 -0
  105. package/dist/schema/CollectionSnapshot.d.ts +11 -0
  106. package/dist/schema/CollectionSnapshot.js +12 -0
  107. package/dist/schema/Fields.d.ts +31 -0
  108. package/dist/schema/Fields.js +21 -0
  109. package/dist/schema/Form.d.ts +31 -0
  110. package/dist/schema/Form.js +23 -0
  111. package/dist/schema/LinkedCollectionModel.d.ts +9 -0
  112. package/dist/schema/LinkedCollectionModel.js +19 -0
  113. package/dist/schema/LinkedData.d.ts +44 -0
  114. package/dist/schema/LinkedData.js +288 -0
  115. package/dist/schema/LinkedPageModel.d.ts +11 -0
  116. package/dist/schema/LinkedPageModel.js +26 -0
  117. package/dist/schema/Optional.d.ts +23 -0
  118. package/dist/schema/Optional.js +34 -0
  119. package/dist/schema/Page.d.ts +299 -0
  120. package/dist/schema/Page.js +244 -0
  121. package/dist/schema/PageModel.d.ts +58 -0
  122. package/dist/schema/PageModel.js +881 -0
  123. package/dist/schema/PageQuery.d.ts +60 -0
  124. package/dist/schema/PageQuery.js +116 -0
  125. package/dist/schema/PageRoute.d.ts +7 -0
  126. package/dist/schema/PageRoute.js +48 -0
  127. package/dist/schema/PageSnapshot.d.ts +11 -0
  128. package/dist/schema/PageSnapshot.js +12 -0
  129. package/dist/schema/Section.d.ts +71 -0
  130. package/dist/schema/Section.js +35 -0
  131. package/dist/schema/Seo.d.ts +13 -0
  132. package/dist/schema/Seo.js +25 -0
  133. package/dist/schema/Site.d.ts +40 -0
  134. package/dist/schema/Site.js +87 -0
  135. package/dist/schema/SiteModel.d.ts +5 -0
  136. package/dist/schema/SiteModel.js +10 -0
  137. package/dist/schema/Tag.d.ts +28 -0
  138. package/dist/schema/Tag.js +59 -0
  139. package/dist/schema/TagGroup.d.ts +26 -0
  140. package/dist/schema/TagGroup.js +64 -0
  141. package/dist/schema/field/Field.d.ts +179 -0
  142. package/dist/schema/field/Field.js +309 -0
  143. package/dist/schema/field/base/AssetField.d.ts +148 -0
  144. package/dist/schema/field/base/AssetField.js +206 -0
  145. package/dist/schema/field/base/BooleanField.d.ts +21 -0
  146. package/dist/schema/field/base/BooleanField.js +38 -0
  147. package/dist/schema/field/base/CollectionField.d.ts +34 -0
  148. package/dist/schema/field/base/CollectionField.js +85 -0
  149. package/dist/schema/field/base/DateField.d.ts +21 -0
  150. package/dist/schema/field/base/DateField.js +37 -0
  151. package/dist/schema/field/base/DynamicPagesField.d.ts +36 -0
  152. package/dist/schema/field/base/DynamicPagesField.js +50 -0
  153. package/dist/schema/field/base/EmbeddedVideoField.d.ts +45 -0
  154. package/dist/schema/field/base/EmbeddedVideoField.js +176 -0
  155. package/dist/schema/field/base/EnumField.d.ts +40 -0
  156. package/dist/schema/field/base/EnumField.js +131 -0
  157. package/dist/schema/field/base/FormField.d.ts +25 -0
  158. package/dist/schema/field/base/FormField.js +48 -0
  159. package/dist/schema/field/base/LinkField.d.ts +103 -0
  160. package/dist/schema/field/base/LinkField.js +201 -0
  161. package/dist/schema/field/base/PageField.d.ts +46 -0
  162. package/dist/schema/field/base/PageField.js +83 -0
  163. package/dist/schema/field/base/RichTextField.d.ts +71 -0
  164. package/dist/schema/field/base/RichTextField.js +196 -0
  165. package/dist/schema/field/base/TextField.d.ts +33 -0
  166. package/dist/schema/field/base/TextField.js +86 -0
  167. package/dist/schema/field/base/TimestampField.d.ts +25 -0
  168. package/dist/schema/field/base/TimestampField.js +41 -0
  169. package/dist/schema/field/base/index.d.ts +13 -0
  170. package/dist/schema/field/base/index.js +29 -0
  171. package/dist/schema/field/composite/ListField.d.ts +47 -0
  172. package/dist/schema/field/composite/ListField.js +107 -0
  173. package/dist/schema/field/composite/ObjectField.d.ts +56 -0
  174. package/dist/schema/field/composite/ObjectField.js +19 -0
  175. package/dist/schema/field/composite/index.d.ts +2 -0
  176. package/dist/schema/field/composite/index.js +18 -0
  177. package/dist/schema/field/index.d.ts +3 -0
  178. package/dist/schema/field/index.js +19 -0
  179. package/dist/schema/index.d.ts +25 -0
  180. package/dist/schema/index.js +41 -0
  181. package/dist/services/EventBus.d.ts +17 -0
  182. package/dist/services/EventBus.js +37 -0
  183. package/dist/services/humanVerification/IHumanVerification.d.ts +8 -0
  184. package/dist/services/humanVerification/IHumanVerification.js +2 -0
  185. package/dist/services/humanVerification/index.d.ts +1 -0
  186. package/dist/services/humanVerification/index.js +17 -0
  187. package/dist/services/index.d.ts +3 -0
  188. package/dist/services/index.js +19 -0
  189. package/dist/services/leadGen/Contact.d.ts +40 -0
  190. package/dist/services/leadGen/Contact.js +38 -0
  191. package/dist/services/leadGen/ILeadGen.d.ts +16 -0
  192. package/dist/services/leadGen/ILeadGen.js +2 -0
  193. package/dist/services/leadGen/index.d.ts +2 -0
  194. package/dist/services/leadGen/index.js +18 -0
  195. package/dist/types/BoxedValue.d.ts +3 -0
  196. package/dist/types/BoxedValue.js +2 -0
  197. package/dist/types/Callback.d.ts +9 -0
  198. package/dist/types/Callback.js +2 -0
  199. package/dist/types/DateString.d.ts +35 -0
  200. package/dist/types/DateString.js +172 -0
  201. package/dist/types/FilterConditionally.d.ts +3 -0
  202. package/dist/types/FilterConditionally.js +2 -0
  203. package/dist/types/MaybeConditionalValue.d.ts +8 -0
  204. package/dist/types/MaybeConditionalValue.js +12 -0
  205. package/dist/types/Ordinal.d.ts +17 -0
  206. package/dist/types/Ordinal.js +38 -0
  207. package/dist/types/OverridableStringUnion.d.ts +2 -0
  208. package/dist/types/OverridableStringUnion.js +2 -0
  209. package/dist/types/PartialBy.d.ts +1 -0
  210. package/dist/types/PartialBy.js +2 -0
  211. package/dist/types/PickData.d.ts +6 -0
  212. package/dist/types/PickData.js +2 -0
  213. package/dist/types/Provider.d.ts +4 -0
  214. package/dist/types/Provider.js +2 -0
  215. package/dist/types/RequiredBy.d.ts +1 -0
  216. package/dist/types/RequiredBy.js +2 -0
  217. package/dist/types/Result.d.ts +16 -0
  218. package/dist/types/Result.js +2 -0
  219. package/dist/types/Timestamp.d.ts +17 -0
  220. package/dist/types/Timestamp.js +57 -0
  221. package/dist/types/Transform.d.ts +4 -0
  222. package/dist/types/Transform.js +2 -0
  223. package/dist/types/index.d.ts +14 -0
  224. package/dist/types/index.js +30 -0
  225. package/dist/ui/Accessible.d.ts +5 -0
  226. package/dist/ui/Accessible.js +15 -0
  227. package/dist/ui/BlockThemes.d.ts +19 -0
  228. package/dist/ui/BlockThemes.js +29 -0
  229. package/dist/ui/ColorMode.d.ts +12 -0
  230. package/dist/ui/ColorMode.js +49 -0
  231. package/dist/ui/File.d.ts +43 -0
  232. package/dist/ui/File.js +55 -0
  233. package/dist/ui/FileType.d.ts +8 -0
  234. package/dist/ui/FileType.js +48 -0
  235. package/dist/ui/ImageSource.d.ts +12 -0
  236. package/dist/ui/ImageSource.js +48 -0
  237. package/dist/ui/MimeType.d.ts +28 -0
  238. package/dist/ui/MimeType.js +110 -0
  239. package/dist/ui/Placement.d.ts +21 -0
  240. package/dist/ui/Placement.js +135 -0
  241. package/dist/ui/Position.d.ts +6 -0
  242. package/dist/ui/Position.js +42 -0
  243. package/dist/ui/Selector.d.ts +6 -0
  244. package/dist/ui/Selector.js +23 -0
  245. package/dist/ui/SemanticColor.d.ts +8 -0
  246. package/dist/ui/SemanticColor.js +237 -0
  247. package/dist/ui/Visual.d.ts +24 -0
  248. package/dist/ui/Visual.js +66 -0
  249. package/dist/ui/block-layout/BlockLayout.d.ts +99 -0
  250. package/dist/ui/block-layout/BlockLayout.js +286 -0
  251. package/dist/ui/block-layout/index.d.ts +1 -0
  252. package/dist/ui/block-layout/index.js +17 -0
  253. package/dist/ui/browser/BlurHasher.d.ts +13 -0
  254. package/dist/ui/browser/BlurHasher.js +76 -0
  255. package/dist/ui/browser/Browser.d.ts +107 -0
  256. package/dist/ui/browser/Browser.js +313 -0
  257. package/dist/ui/browser/ImageProxy.d.ts +30 -0
  258. package/dist/ui/browser/ImageProxy.js +132 -0
  259. package/dist/ui/browser/InputEvent.d.ts +13 -0
  260. package/dist/ui/browser/InputEvent.js +2 -0
  261. package/dist/ui/browser/SVGProxy.d.ts +9 -0
  262. package/dist/ui/browser/SVGProxy.js +59 -0
  263. package/dist/ui/browser/VideoProxy.d.ts +42 -0
  264. package/dist/ui/browser/VideoProxy.js +235 -0
  265. package/dist/ui/browser/index.d.ts +6 -0
  266. package/dist/ui/browser/index.js +22 -0
  267. package/dist/ui/fields/Field.d.ts +80 -0
  268. package/dist/ui/fields/Field.js +298 -0
  269. package/dist/ui/fields/FieldList.d.ts +80 -0
  270. package/dist/ui/fields/FieldList.js +421 -0
  271. package/dist/ui/fields/FieldListValidator.d.ts +9 -0
  272. package/dist/ui/fields/FieldListValidator.js +37 -0
  273. package/dist/ui/fields/FieldModel.d.ts +15 -0
  274. package/dist/ui/fields/FieldModel.js +28 -0
  275. package/dist/ui/fields/FieldSerializer.d.ts +13 -0
  276. package/dist/ui/fields/FieldSerializer.js +71 -0
  277. package/dist/ui/fields/FieldValidator.d.ts +19 -0
  278. package/dist/ui/fields/FieldValidator.js +98 -0
  279. package/dist/ui/fields/ObjectField.d.ts +75 -0
  280. package/dist/ui/fields/ObjectField.js +288 -0
  281. package/dist/ui/fields/errors.json +44 -0
  282. package/dist/ui/fields/index.d.ts +7 -0
  283. package/dist/ui/fields/index.js +23 -0
  284. package/dist/ui/fields/validators/AssetValidator.d.ts +9 -0
  285. package/dist/ui/fields/validators/AssetValidator.js +25 -0
  286. package/dist/ui/fields/validators/DateValidator.d.ts +9 -0
  287. package/dist/ui/fields/validators/DateValidator.js +41 -0
  288. package/dist/ui/fields/validators/EnumValidator.d.ts +10 -0
  289. package/dist/ui/fields/validators/EnumValidator.js +77 -0
  290. package/dist/ui/fields/validators/GenericValidator.d.ts +6 -0
  291. package/dist/ui/fields/validators/GenericValidator.js +22 -0
  292. package/dist/ui/fields/validators/LinkValidator.d.ts +9 -0
  293. package/dist/ui/fields/validators/LinkValidator.js +146 -0
  294. package/dist/ui/fields/validators/RichTextValidator.d.ts +6 -0
  295. package/dist/ui/fields/validators/RichTextValidator.js +35 -0
  296. package/dist/ui/fields/validators/TextValidator.d.ts +10 -0
  297. package/dist/ui/fields/validators/TextValidator.js +138 -0
  298. package/dist/ui/fields/validators/TimestampValidator.d.ts +9 -0
  299. package/dist/ui/fields/validators/TimestampValidator.js +41 -0
  300. package/dist/ui/fields/validators/ValidatorHelper.d.ts +23 -0
  301. package/dist/ui/fields/validators/ValidatorHelper.js +55 -0
  302. package/dist/ui/fields/validators/index.d.ts +8 -0
  303. package/dist/ui/fields/validators/index.js +24 -0
  304. package/dist/ui/geometry/AspectRatio.d.ts +27 -0
  305. package/dist/ui/geometry/AspectRatio.js +77 -0
  306. package/dist/ui/geometry/Bounds.d.ts +4 -0
  307. package/dist/ui/geometry/Bounds.js +11 -0
  308. package/dist/ui/geometry/Frame.d.ts +3 -0
  309. package/dist/ui/geometry/Frame.js +2 -0
  310. package/dist/ui/geometry/Insets.d.ts +14 -0
  311. package/dist/ui/geometry/Insets.js +14 -0
  312. package/dist/ui/geometry/PixelSize.d.ts +1 -0
  313. package/dist/ui/geometry/PixelSize.js +2 -0
  314. package/dist/ui/geometry/Point.d.ts +7 -0
  315. package/dist/ui/geometry/Point.js +15 -0
  316. package/dist/ui/geometry/Rect.d.ts +19 -0
  317. package/dist/ui/geometry/Rect.js +68 -0
  318. package/dist/ui/geometry/ScreenSize.d.ts +1 -0
  319. package/dist/ui/geometry/ScreenSize.js +2 -0
  320. package/dist/ui/geometry/Size.d.ts +7 -0
  321. package/dist/ui/geometry/Size.js +9 -0
  322. package/dist/ui/geometry/index.d.ts +9 -0
  323. package/dist/ui/geometry/index.js +25 -0
  324. package/dist/ui/index.d.ts +18 -0
  325. package/dist/ui/index.js +34 -0
  326. package/dist/ui/responsive/Breakpoint.d.ts +8 -0
  327. package/dist/ui/responsive/Breakpoint.js +24 -0
  328. package/dist/ui/responsive/BreakpointObserver.d.ts +16 -0
  329. package/dist/ui/responsive/BreakpointObserver.js +104 -0
  330. package/dist/ui/responsive/Breakpoints.d.ts +5 -0
  331. package/dist/ui/responsive/Breakpoints.js +15 -0
  332. package/dist/ui/responsive/ResponsiveValue.d.ts +7 -0
  333. package/dist/ui/responsive/ResponsiveValue.js +26 -0
  334. package/dist/ui/responsive/index.d.ts +4 -0
  335. package/dist/ui/responsive/index.js +20 -0
  336. package/dist/ui/richtext/LexicalUtils.d.ts +31 -0
  337. package/dist/ui/richtext/LexicalUtils.js +314 -0
  338. package/dist/ui/richtext/StyledTextNode.d.ts +33 -0
  339. package/dist/ui/richtext/StyledTextNode.js +101 -0
  340. package/dist/ui/richtext/index.d.ts +2 -0
  341. package/dist/ui/richtext/index.js +18 -0
  342. package/dist/utils/ArrayUtils.d.ts +17 -0
  343. package/dist/utils/ArrayUtils.js +66 -0
  344. package/dist/utils/ByteSize.d.ts +19 -0
  345. package/dist/utils/ByteSize.js +33 -0
  346. package/dist/utils/DateUtils.d.ts +15 -0
  347. package/dist/utils/DateUtils.js +100 -0
  348. package/dist/utils/Deferral.d.ts +28 -0
  349. package/dist/utils/Deferral.js +107 -0
  350. package/dist/utils/Duration.d.ts +7 -0
  351. package/dist/utils/Duration.js +35 -0
  352. package/dist/utils/Fn.d.ts +14 -0
  353. package/dist/utils/Fn.js +52 -0
  354. package/dist/utils/ObjectUtils.d.ts +89 -0
  355. package/dist/utils/ObjectUtils.js +159 -0
  356. package/dist/utils/Random.d.ts +15 -0
  357. package/dist/utils/Random.js +72 -0
  358. package/dist/utils/StringUtils.d.ts +10 -0
  359. package/dist/utils/StringUtils.js +51 -0
  360. package/dist/utils/UrlUtils.d.ts +22 -0
  361. package/dist/utils/UrlUtils.js +119 -0
  362. package/dist/utils/Value.d.ts +23 -0
  363. package/dist/utils/Value.js +122 -0
  364. package/dist/utils/index.d.ts +12 -0
  365. package/dist/utils/index.js +28 -0
  366. package/dist/utils/isDefined.d.ts +1 -0
  367. package/dist/utils/isDefined.js +6 -0
  368. package/package.json +64 -0
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlobVideoProxy = exports.ElementVideoProxy = exports.VideoProxy = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const errors_1 = require("../../errors");
6
+ const BlurHasher_1 = require("./BlurHasher");
7
+ // base
8
+ class VideoProxy {
9
+ constructor(video) {
10
+ this.video = video;
11
+ // initialize instance variables
12
+ this._state$ = new rxjs_1.BehaviorSubject('uninitialized');
13
+ // bind methods (helps with callbacks)
14
+ this.onLoadData = this.onLoadData.bind(this);
15
+ this.onError = this.onError.bind(this);
16
+ this.onPlay = this.onPlay.bind(this);
17
+ this.onSeeking = this.onSeeking.bind(this);
18
+ this.onSeeked = this.onSeeked.bind(this);
19
+ this.onPause = this.onPause.bind(this);
20
+ // add listeners
21
+ video.addEventListener('loadeddata', this.onLoadData);
22
+ video.addEventListener('canplay', this.onLoadData);
23
+ video.addEventListener('canplaythrough', this.onLoadData);
24
+ video.addEventListener('error', this.onError);
25
+ video.addEventListener('play', this.onPlay);
26
+ video.addEventListener('pause', this.onPause);
27
+ video.addEventListener('seeking', this.onSeeking);
28
+ video.addEventListener('seeked', this.onSeeked);
29
+ // check current state
30
+ this.state = video.error
31
+ ? 'error'
32
+ : video.readyState < HTMLMediaElement.HAVE_ENOUGH_DATA
33
+ ? 'loading'
34
+ : video.seeking
35
+ ? 'seeking'
36
+ : video.paused
37
+ ? 'ready'
38
+ : 'playing';
39
+ }
40
+ get state$() {
41
+ return this._state$.asObservable();
42
+ }
43
+ get state() {
44
+ return this._state$.getValue();
45
+ }
46
+ set state(state) {
47
+ // ignore if disposed
48
+ const { _state$ } = this;
49
+ const prevState = this.state;
50
+ if (prevState === 'disposed') {
51
+ return;
52
+ }
53
+ // update
54
+ _state$.next(state);
55
+ }
56
+ get loaded() {
57
+ switch (this.state) {
58
+ case 'ready':
59
+ case 'playing':
60
+ case 'seeking':
61
+ return true;
62
+ default:
63
+ return false;
64
+ }
65
+ }
66
+ get intrinsicSize() {
67
+ // throw if not ready
68
+ const { video, loaded } = this;
69
+ if (!loaded) {
70
+ throw new errors_1.InvalidOperationError('Cannot access size of unloaded video');
71
+ }
72
+ // return image size
73
+ return {
74
+ width: video.videoWidth,
75
+ height: video.videoHeight
76
+ };
77
+ }
78
+ get duration() {
79
+ // throw if not ready
80
+ const { video, loaded } = this;
81
+ if (!loaded) {
82
+ throw new errors_1.InvalidOperationError('Cannot access duration of unloaded video');
83
+ }
84
+ // return duration
85
+ return video.duration;
86
+ }
87
+ waitUntil(...states) {
88
+ return (0, rxjs_1.firstValueFrom)(this._state$.pipe((0, rxjs_1.filter)(state => states.includes(state))));
89
+ }
90
+ async waitUntilReady() {
91
+ // wait for ready/error
92
+ const state = await this.waitUntil('ready', 'error', 'disposed');
93
+ // throw if error
94
+ if (state === 'error') {
95
+ throw new errors_1.NotAvailableError('Video could not be loaded');
96
+ }
97
+ }
98
+ async seek(positionInSeconds) {
99
+ // ensure initialization is done
100
+ const { video, loaded } = this;
101
+ if (!loaded) {
102
+ await this.waitUntilReady();
103
+ }
104
+ // skip if already at that position
105
+ if (video.currentTime === positionInSeconds) {
106
+ return;
107
+ }
108
+ // seek to new position
109
+ video.currentTime = positionInSeconds;
110
+ this.state = 'seeking';
111
+ // wait for seek to complete
112
+ await this.waitUntilReady();
113
+ }
114
+ async play({ playbackRate = 1, loop = false } = {}) {
115
+ // ensure initialization is done
116
+ const { video, loaded } = this;
117
+ if (!loaded) {
118
+ await this.waitUntilReady();
119
+ }
120
+ // set options
121
+ video.playbackRate = playbackRate;
122
+ video.loop = loop;
123
+ // play if required
124
+ if (video.paused) {
125
+ // play video
126
+ await video.play();
127
+ }
128
+ }
129
+ async pause() {
130
+ // ensure initialization is done
131
+ const { video, loaded } = this;
132
+ if (!loaded) {
133
+ await this.waitUntilReady();
134
+ }
135
+ // pause if required
136
+ if (!video.paused) {
137
+ video.pause();
138
+ }
139
+ }
140
+ async getBlurHash() {
141
+ // return hash if already computed
142
+ const { video, _blurHash } = this;
143
+ if (_blurHash) {
144
+ return _blurHash;
145
+ }
146
+ // ensure initialization is done
147
+ if (!this.loaded) {
148
+ await this.waitUntilReady();
149
+ }
150
+ // create hash
151
+ this._blurHash = BlurHasher_1.BlurHasher.createHash(video);
152
+ // return has
153
+ return this._blurHash;
154
+ }
155
+ dispose() {
156
+ // mark disposed
157
+ this._state$.next('disposed');
158
+ // remove listeners
159
+ const { video } = this;
160
+ video.removeEventListener('loadeddata', this.onLoadData);
161
+ video.removeEventListener('canplay', this.onLoadData);
162
+ video.removeEventListener('canplaythrough', this.onLoadData);
163
+ video.removeEventListener('error', this.onError);
164
+ video.removeEventListener('play', this.onPlay);
165
+ video.removeEventListener('pause', this.onPause);
166
+ video.removeEventListener('seeking', this.onSeeking);
167
+ video.removeEventListener('seeked', this.onSeeked);
168
+ }
169
+ onLoadData() {
170
+ // skip if not ready
171
+ const { video } = this;
172
+ if (video.readyState < HTMLMediaElement.HAVE_ENOUGH_DATA) {
173
+ return;
174
+ }
175
+ // mark loaded
176
+ this.state = video.paused
177
+ ? 'ready'
178
+ : 'playing';
179
+ }
180
+ onError() {
181
+ this.state = 'error';
182
+ }
183
+ onPlay() {
184
+ this.state = 'playing';
185
+ }
186
+ onSeeking() {
187
+ this.state = 'seeking';
188
+ }
189
+ onSeeked() {
190
+ this.state = this.video.readyState < HTMLMediaElement.HAVE_ENOUGH_DATA
191
+ ? 'loading'
192
+ : 'ready';
193
+ }
194
+ onPause() {
195
+ this.state = this.video.readyState < HTMLMediaElement.HAVE_ENOUGH_DATA
196
+ ? 'loading'
197
+ : 'ready';
198
+ }
199
+ }
200
+ exports.VideoProxy = VideoProxy;
201
+ // element
202
+ class ElementVideoProxy extends VideoProxy {
203
+ constructor(video) {
204
+ super(video);
205
+ }
206
+ }
207
+ exports.ElementVideoProxy = ElementVideoProxy;
208
+ // blob
209
+ class BlobVideoProxy extends VideoProxy {
210
+ constructor(blob) {
211
+ // create hidden video and load blob
212
+ const video = document.createElement('video');
213
+ const src = URL.createObjectURL(blob);
214
+ video.src = src;
215
+ const style = video.style;
216
+ style.position = 'absolute';
217
+ style.pointerEvents = 'none';
218
+ style.opacity = '0';
219
+ // construct base
220
+ super(video);
221
+ this.blob = blob;
222
+ // initialize instance variables
223
+ this._src = src;
224
+ }
225
+ dispose() {
226
+ // call base
227
+ super.dispose();
228
+ // revoke src
229
+ const { video, _src } = this;
230
+ URL.revokeObjectURL(_src);
231
+ // clean up dom
232
+ video.remove();
233
+ }
234
+ }
235
+ exports.BlobVideoProxy = BlobVideoProxy;
@@ -0,0 +1,6 @@
1
+ export * from './BlurHasher';
2
+ export * from './Browser';
3
+ export * from './ImageProxy';
4
+ export * from './InputEvent';
5
+ export * from './SVGProxy';
6
+ export * from './VideoProxy';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./BlurHasher"), exports);
18
+ __exportStar(require("./Browser"), exports);
19
+ __exportStar(require("./ImageProxy"), exports);
20
+ __exportStar(require("./InputEvent"), exports);
21
+ __exportStar(require("./SVGProxy"), exports);
22
+ __exportStar(require("./VideoProxy"), exports);
@@ -0,0 +1,80 @@
1
+ import { Observable } from 'rxjs';
2
+ import * as Schema from '../../schema';
3
+ import { EventBus } from '../../services';
4
+ import { FieldValidator } from './FieldValidator';
5
+ export declare class Field<TSchema extends Schema.Field.Type = Schema.Field.Type> {
6
+ private readonly eventBus;
7
+ readonly schema: TSchema;
8
+ readonly id: string;
9
+ readonly name: string;
10
+ readonly required: boolean;
11
+ private readonly publishedValue;
12
+ private _initialValue;
13
+ private _value;
14
+ private _editing;
15
+ private _sandboxed;
16
+ private _sandboxedValue;
17
+ private readonly _validator;
18
+ private _errors;
19
+ private _optIn?;
20
+ private _optOut?;
21
+ private _shouldFocus?;
22
+ constructor(args: Field.ConstructorArgs<TSchema>);
23
+ get events$(): Observable<Field.Event>;
24
+ get isComposite(): boolean;
25
+ get exists(): boolean;
26
+ get valid(): boolean;
27
+ get error(): FieldValidator.Error | undefined;
28
+ getErrors(level: FieldValidator.Error.Level): readonly FieldValidator.Error[];
29
+ get errors(): ReadonlyArray<FieldValidator.Error>;
30
+ get defaultValue(): Field.Value<TSchema> | undefined;
31
+ get initialValue(): Field.Value<TSchema> | undefined;
32
+ get hasValue(): boolean;
33
+ get value(): Field.Value<TSchema> | undefined;
34
+ set value(value: Field.Value<TSchema> | undefined);
35
+ coerceValue(value: Field.Value<TSchema> | undefined): void;
36
+ get modified(): boolean;
37
+ get changed(): boolean;
38
+ get editing(): boolean;
39
+ set editing(editing: boolean);
40
+ get sandboxed(): boolean;
41
+ sandbox(): void;
42
+ commit(): void;
43
+ rollback(): void;
44
+ get canOptOut(): boolean;
45
+ optIn(): void;
46
+ optOut(): void;
47
+ get shouldFocus(): boolean;
48
+ didFocus(): void;
49
+ validate(silent?: boolean): ReadonlyArray<FieldValidator.Error>;
50
+ migrate(previous: Field<TSchema>): void;
51
+ reset(initialValue?: Schema.Field.Data<TSchema> | null): void;
52
+ clone({ schema, eventBus, name, required }?: Field.CloneArgs<TSchema>): Field<TSchema>;
53
+ private raiseEvent;
54
+ }
55
+ export declare namespace Field {
56
+ type CloneArgs<TSchema extends Schema.Field.Type> = {
57
+ schema?: TSchema;
58
+ eventBus?: EventBus;
59
+ name?: string;
60
+ required?: boolean;
61
+ };
62
+ type ConstructorArgs<TSchema extends Schema.Field.Type> = {
63
+ eventBus: EventBus;
64
+ schema: TSchema;
65
+ id: string;
66
+ name: string;
67
+ publishedValue?: Value<TSchema>;
68
+ initialValue?: Value<TSchema>;
69
+ required: boolean;
70
+ };
71
+ type Value<TSchema extends Schema.Field.Type = Schema.Field.Type> = Schema.Field.Data<TSchema>;
72
+ interface Event extends EventBus.Event<'Field', Event.Type> {
73
+ field: Field;
74
+ }
75
+ namespace Event {
76
+ type Type = 'changed' | 'editing' | 'validation' | 'reset';
77
+ function filter(event: EventBus.Event): event is Event;
78
+ function create(event: EventBus.Args<Event>): Event;
79
+ }
80
+ }
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Field = void 0;
37
+ const rxjs_1 = require("rxjs");
38
+ const errors_1 = require("../../errors");
39
+ const Schema = __importStar(require("../../schema"));
40
+ const services_1 = require("../../services");
41
+ const utils_1 = require("../../utils");
42
+ const FieldValidator_1 = require("./FieldValidator");
43
+ // class
44
+ class Field {
45
+ constructor(args) {
46
+ var _a;
47
+ // initialize instance variables
48
+ this.eventBus = args.eventBus;
49
+ this.schema = args.schema;
50
+ this.id = args.id;
51
+ this.name = args.name;
52
+ this.required = args.required;
53
+ this.publishedValue = args.publishedValue;
54
+ this._initialValue = (_a = args.initialValue) !== null && _a !== void 0 ? _a : this.defaultValue;
55
+ this._value = this._initialValue;
56
+ this._editing = false;
57
+ this._sandboxed = false;
58
+ this._validator = FieldValidator_1.FieldValidator.create(this);
59
+ // validate
60
+ this._errors = this._validator.validate(this, this._initialValue);
61
+ }
62
+ get events$() {
63
+ return this.eventBus.events$.pipe((0, rxjs_1.filter)(Field.Event.filter), (0, rxjs_1.filter)(e => e.field === this));
64
+ }
65
+ get isComposite() {
66
+ switch (this.schema.type) {
67
+ case 'asset':
68
+ case 'link':
69
+ return true;
70
+ default:
71
+ return false;
72
+ }
73
+ }
74
+ get exists() {
75
+ const { initialValue, _optIn = false, _optOut = false, schema: { required } } = this;
76
+ return (initialValue !== undefined && !_optOut) || required || _optIn;
77
+ }
78
+ get valid() {
79
+ return this.errors.length === 0;
80
+ }
81
+ get error() {
82
+ return FieldValidator_1.FieldValidator.Error.mostRelevant(this._errors);
83
+ }
84
+ getErrors(level) {
85
+ return this._validator.filter(this._errors, level);
86
+ }
87
+ get errors() {
88
+ return this._errors;
89
+ }
90
+ get defaultValue() {
91
+ // no default if it's not required
92
+ const { schema } = this;
93
+ if (!schema.required) {
94
+ return undefined;
95
+ }
96
+ // or use default
97
+ switch (schema.type) {
98
+ case 'enum':
99
+ return schema.defaultOption
100
+ ? Schema.EnumField.Value.toData(schema.defaultOption)
101
+ : undefined;
102
+ case 'boolean':
103
+ return Schema.BooleanField.Value.toData(schema.defaultValue);
104
+ default:
105
+ return undefined;
106
+ }
107
+ }
108
+ get initialValue() {
109
+ return this._initialValue;
110
+ }
111
+ get hasValue() {
112
+ var _a;
113
+ return ((_a = this._value) === null || _a === void 0 ? void 0 : _a.value) !== undefined;
114
+ }
115
+ get value() {
116
+ return this._value;
117
+ }
118
+ set value(value) {
119
+ // skip if value hasn't changed
120
+ if (utils_1.Value.equals(this._value, value)) {
121
+ return;
122
+ }
123
+ // update value
124
+ this._value = value;
125
+ // raise change event
126
+ this.raiseEvent('changed');
127
+ // raise error (if any)
128
+ this.validate();
129
+ }
130
+ coerceValue(value) {
131
+ // skip if value hasn't changed
132
+ if (utils_1.Value.equals(this._value, value)) {
133
+ return;
134
+ }
135
+ // update value
136
+ this._value = value;
137
+ // raise error (if any)
138
+ this.validate(true);
139
+ }
140
+ get modified() {
141
+ const { _value, initialValue, _optIn, _optOut } = this;
142
+ return _optOut || _optIn || !utils_1.Value.equals(_value, initialValue);
143
+ }
144
+ get changed() {
145
+ const { _value, publishedValue } = this;
146
+ return !utils_1.Value.equals(_value, publishedValue);
147
+ }
148
+ get editing() {
149
+ return this._editing;
150
+ }
151
+ set editing(editing) {
152
+ // skip if unchanged
153
+ if (this._editing === editing) {
154
+ return;
155
+ }
156
+ // update
157
+ this._editing = editing;
158
+ // raise event
159
+ this.raiseEvent('editing');
160
+ }
161
+ get sandboxed() {
162
+ return this._sandboxed;
163
+ }
164
+ sandbox() {
165
+ // throw if already sandboxed
166
+ if (this._sandboxed) {
167
+ throw new errors_1.InvalidOperationError('Cannot invoke sandbox() on Field multiple times.');
168
+ }
169
+ // sandbox field
170
+ this._sandboxedValue = this._value;
171
+ this._sandboxed = true;
172
+ // raise event
173
+ this.raiseEvent('changed');
174
+ }
175
+ commit() {
176
+ // throw if not sandboxed
177
+ if (!this._sandboxed) {
178
+ throw new errors_1.InvalidOperationError('Cannot invoke commit() on Field before sandbox().');
179
+ }
180
+ // clear sandbox
181
+ this._sandboxed = false;
182
+ // raise event
183
+ this.raiseEvent('changed');
184
+ }
185
+ rollback() {
186
+ // throw if not sandboxed
187
+ if (!this._sandboxed) {
188
+ throw new errors_1.InvalidOperationError('Cannot invoke commit() on Field before sandbox().');
189
+ }
190
+ // rollback sandbox
191
+ this._value = this._sandboxedValue;
192
+ this._sandboxed = false;
193
+ // raise event
194
+ this.raiseEvent('changed');
195
+ }
196
+ get canOptOut() {
197
+ return !this.schema.required;
198
+ }
199
+ optIn() {
200
+ // skip if required
201
+ const { schema } = this;
202
+ if (schema.required) {
203
+ return;
204
+ }
205
+ // set value
206
+ this._optIn = true;
207
+ this._shouldFocus = true;
208
+ this._optOut = false;
209
+ this.value = {
210
+ type: schema.type
211
+ };
212
+ }
213
+ optOut() {
214
+ // skip if required
215
+ const { schema } = this;
216
+ if (schema.required) {
217
+ return;
218
+ }
219
+ // clear value
220
+ this._optIn = false;
221
+ this._optOut = true;
222
+ this.value = undefined;
223
+ }
224
+ get shouldFocus() {
225
+ return this._shouldFocus === true;
226
+ }
227
+ didFocus() {
228
+ delete this._shouldFocus;
229
+ }
230
+ validate(silent = false) {
231
+ // validate (skip if nothing has changed
232
+ const errors = this._validator.validate(this, this._value);
233
+ if (utils_1.Value.equals(errors, this._errors)) {
234
+ return this._errors;
235
+ }
236
+ // update errors
237
+ this._errors = errors;
238
+ // raise event if not silent
239
+ if (!silent) {
240
+ this.raiseEvent('validation');
241
+ }
242
+ // return errors
243
+ return errors;
244
+ }
245
+ migrate(previous) {
246
+ this._value = previous.value;
247
+ this._editing = true;
248
+ this._sandboxed = previous._sandboxed;
249
+ this._sandboxedValue = previous._sandboxedValue;
250
+ }
251
+ reset(initialValue) {
252
+ // reset initial value if it's set
253
+ if (initialValue !== undefined) {
254
+ this._initialValue = initialValue !== null && initialValue !== void 0 ? initialValue : undefined;
255
+ }
256
+ // reset value
257
+ delete this._optIn;
258
+ delete this._optOut;
259
+ this.value = this._initialValue;
260
+ // revalidate
261
+ this.validate();
262
+ // clear sandbox
263
+ this._sandboxed = false;
264
+ this._sandboxedValue = undefined;
265
+ // raise reset event
266
+ this.raiseEvent('reset');
267
+ }
268
+ clone({ schema, eventBus, name, required } = {}) {
269
+ return new Field({
270
+ eventBus: eventBus !== null && eventBus !== void 0 ? eventBus : this.eventBus,
271
+ schema: schema !== null && schema !== void 0 ? schema : this.schema,
272
+ id: this.id,
273
+ name: name !== null && name !== void 0 ? name : this.name,
274
+ publishedValue: this.publishedValue,
275
+ initialValue: this.initialValue,
276
+ required: required !== null && required !== void 0 ? required : this.required
277
+ });
278
+ }
279
+ raiseEvent(type) {
280
+ this.eventBus.publish(Field.Event.create({ type, field: this }));
281
+ }
282
+ }
283
+ exports.Field = Field;
284
+ // extension
285
+ (function (Field) {
286
+ let Event;
287
+ (function (Event) {
288
+ // methods
289
+ function filter(event) {
290
+ return event.domain === 'Field';
291
+ }
292
+ Event.filter = filter;
293
+ function create(event) {
294
+ return services_1.EventBus.createEvent(Object.assign({ domain: 'Field' }, event));
295
+ }
296
+ Event.create = create;
297
+ })(Event = Field.Event || (Field.Event = {}));
298
+ })(Field || (exports.Field = Field = {}));