@taiga-ui/cdk 2.31.0 → 2.35.0

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 (200) hide show
  1. package/abstract/interactive.d.ts +1 -1
  2. package/bundles/taiga-ui-cdk-abstract.umd.js +3 -6
  3. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  4. package/bundles/taiga-ui-cdk-abstract.umd.min.js +1 -1
  5. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  6. package/bundles/taiga-ui-cdk-components-portal-host.umd.js +5 -6
  7. package/bundles/taiga-ui-cdk-components-portal-host.umd.js.map +1 -1
  8. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js +2 -2
  9. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-cdk-date-time.umd.js +18 -12
  11. package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
  12. package/bundles/taiga-ui-cdk-date-time.umd.min.js +2 -2
  13. package/bundles/taiga-ui-cdk-date-time.umd.min.js.map +1 -1
  14. package/bundles/taiga-ui-cdk-decorators.umd.js +16 -14
  15. package/bundles/taiga-ui-cdk-decorators.umd.js.map +1 -1
  16. package/bundles/taiga-ui-cdk-decorators.umd.min.js +2 -2
  17. package/bundles/taiga-ui-cdk-decorators.umd.min.js.map +1 -1
  18. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +13 -7
  19. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
  20. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js +1 -1
  21. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js.map +1 -1
  22. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +31 -48
  23. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  24. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js +2 -2
  25. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
  26. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +1 -1
  27. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
  28. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js +1 -1
  29. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
  30. package/bundles/taiga-ui-cdk-exceptions.umd.js +347 -0
  31. package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -0
  32. package/bundles/taiga-ui-cdk-exceptions.umd.min.js +16 -0
  33. package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -0
  34. package/bundles/taiga-ui-cdk-observables.umd.js +9 -9
  35. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  36. package/bundles/taiga-ui-cdk-observables.umd.min.js +1 -1
  37. package/bundles/taiga-ui-cdk-observables.umd.min.js.map +1 -1
  38. package/bundles/taiga-ui-cdk-services.umd.js +2 -2
  39. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  40. package/bundles/taiga-ui-cdk-services.umd.min.js +1 -1
  41. package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
  42. package/bundles/taiga-ui-cdk-utils-format.umd.js +2 -0
  43. package/bundles/taiga-ui-cdk-utils-format.umd.js.map +1 -1
  44. package/bundles/taiga-ui-cdk-utils-format.umd.min.js.map +1 -1
  45. package/bundles/taiga-ui-cdk.umd.js +12 -4
  46. package/bundles/taiga-ui-cdk.umd.js.map +1 -1
  47. package/bundles/taiga-ui-cdk.umd.min.js +1 -1
  48. package/components/portal-host/taiga-ui-cdk-components-portal-host.metadata.json +1 -1
  49. package/date-time/month-range.d.ts +4 -0
  50. package/date-time/month.d.ts +2 -0
  51. package/date-time/taiga-ui-cdk-date-time.metadata.json +1 -1
  52. package/directives/active-zone/active-zone.directive.d.ts +1 -0
  53. package/directives/active-zone/taiga-ui-cdk-directives-active-zone.metadata.json +1 -1
  54. package/directives/auto-focus/autofocus.directive.d.ts +3 -6
  55. package/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.metadata.json +1 -1
  56. package/directives/autofilled/taiga-ui-cdk-directives-autofilled.metadata.json +1 -1
  57. package/esm2015/abstract/control.js +4 -7
  58. package/esm2015/abstract/interactive.js +1 -1
  59. package/esm2015/components/portal-host/portal.service.js +3 -3
  60. package/esm2015/date-time/date-separator.js +2 -2
  61. package/esm2015/date-time/day.js +6 -5
  62. package/esm2015/date-time/month-range.js +5 -1
  63. package/esm2015/date-time/month.js +4 -2
  64. package/esm2015/date-time/time.js +2 -2
  65. package/esm2015/date-time/year.js +2 -2
  66. package/esm2015/decorators/pure.js +14 -11
  67. package/esm2015/directives/active-zone/active-zone.directive.js +15 -9
  68. package/esm2015/directives/auto-focus/autofocus.directive.js +29 -45
  69. package/esm2015/directives/autofilled/autofilled.directive.js +2 -2
  70. package/esm2015/exceptions/computed-document.exception.js +6 -0
  71. package/esm2015/exceptions/document-selection.exception.js +6 -0
  72. package/esm2015/exceptions/index.js +14 -0
  73. package/esm2015/exceptions/invalid-day.exception.js +6 -0
  74. package/esm2015/exceptions/invalid-month.exception.js +6 -0
  75. package/esm2015/exceptions/invalid-year.exception.js +6 -0
  76. package/esm2015/exceptions/no-host.exception.js +6 -0
  77. package/esm2015/exceptions/owner-document.exception.js +6 -0
  78. package/esm2015/exceptions/pure.exception.js +6 -0
  79. package/esm2015/exceptions/table-sort-key.exception.js +6 -0
  80. package/esm2015/exceptions/taiga-ui-cdk-exceptions.js +5 -0
  81. package/esm2015/exceptions/ts-parser.exception.js +6 -0
  82. package/esm2015/exceptions/value-changes.exception.js +6 -0
  83. package/esm2015/exceptions/value-present.exception.js +6 -0
  84. package/esm2015/exceptions/xml-parsing.exception.js +6 -0
  85. package/esm2015/index.js +2 -1
  86. package/esm2015/observables/drag-and-drop-from.js +3 -2
  87. package/esm2015/observables/focus-visible-observable.js +3 -2
  88. package/esm2015/observables/must-be-present.js +3 -2
  89. package/esm2015/observables/pressed-observable.js +3 -2
  90. package/esm2015/observables/replay-control-value-changes.js +3 -2
  91. package/esm2015/services/parents-scroll.service.js +3 -2
  92. package/esm2015/utils/format/pad-start.js +3 -1
  93. package/esm5/abstract/control.js +4 -7
  94. package/esm5/abstract/interactive.js +1 -1
  95. package/esm5/components/portal-host/portal.service.js +3 -3
  96. package/esm5/date-time/date-separator.js +2 -2
  97. package/esm5/date-time/day.js +6 -5
  98. package/esm5/date-time/month-range.js +5 -1
  99. package/esm5/date-time/month.js +4 -2
  100. package/esm5/date-time/time.js +2 -2
  101. package/esm5/date-time/year.js +2 -2
  102. package/esm5/decorators/pure.js +14 -11
  103. package/esm5/directives/active-zone/active-zone.directive.js +15 -9
  104. package/esm5/directives/auto-focus/autofocus.directive.js +29 -47
  105. package/esm5/directives/autofilled/autofilled.directive.js +2 -2
  106. package/esm5/exceptions/computed-document.exception.js +10 -0
  107. package/esm5/exceptions/document-selection.exception.js +10 -0
  108. package/esm5/exceptions/index.js +14 -0
  109. package/esm5/exceptions/invalid-day.exception.js +10 -0
  110. package/esm5/exceptions/invalid-month.exception.js +10 -0
  111. package/esm5/exceptions/invalid-year.exception.js +10 -0
  112. package/esm5/exceptions/no-host.exception.js +10 -0
  113. package/esm5/exceptions/owner-document.exception.js +10 -0
  114. package/esm5/exceptions/pure.exception.js +10 -0
  115. package/esm5/exceptions/table-sort-key.exception.js +10 -0
  116. package/esm5/exceptions/taiga-ui-cdk-exceptions.js +5 -0
  117. package/esm5/exceptions/ts-parser.exception.js +10 -0
  118. package/esm5/exceptions/value-changes.exception.js +10 -0
  119. package/esm5/exceptions/value-present.exception.js +10 -0
  120. package/esm5/exceptions/xml-parsing.exception.js +10 -0
  121. package/esm5/index.js +2 -1
  122. package/esm5/observables/drag-and-drop-from.js +3 -2
  123. package/esm5/observables/focus-visible-observable.js +3 -2
  124. package/esm5/observables/must-be-present.js +3 -2
  125. package/esm5/observables/pressed-observable.js +3 -2
  126. package/esm5/observables/replay-control-value-changes.js +3 -2
  127. package/esm5/services/parents-scroll.service.js +3 -3
  128. package/esm5/utils/format/pad-start.js +3 -1
  129. package/exceptions/computed-document.exception.d.ts +3 -0
  130. package/exceptions/document-selection.exception.d.ts +3 -0
  131. package/exceptions/index.d.ts +13 -0
  132. package/exceptions/invalid-day.exception.d.ts +3 -0
  133. package/exceptions/invalid-month.exception.d.ts +3 -0
  134. package/exceptions/invalid-year.exception.d.ts +3 -0
  135. package/exceptions/no-host.exception.d.ts +3 -0
  136. package/exceptions/owner-document.exception.d.ts +3 -0
  137. package/exceptions/package.json +13 -0
  138. package/exceptions/pure.exception.d.ts +3 -0
  139. package/exceptions/table-sort-key.exception.d.ts +3 -0
  140. package/exceptions/taiga-ui-cdk-exceptions.d.ts +4 -0
  141. package/exceptions/taiga-ui-cdk-exceptions.metadata.json +1 -0
  142. package/exceptions/ts-parser.exception.d.ts +3 -0
  143. package/exceptions/value-changes.exception.d.ts +3 -0
  144. package/exceptions/value-present.exception.d.ts +3 -0
  145. package/exceptions/xml-parsing.exception.d.ts +3 -0
  146. package/fesm2015/taiga-ui-cdk-abstract.js +3 -6
  147. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  148. package/fesm2015/taiga-ui-cdk-components-portal-host.js +2 -2
  149. package/fesm2015/taiga-ui-cdk-components-portal-host.js.map +1 -1
  150. package/fesm2015/taiga-ui-cdk-date-time.js +15 -8
  151. package/fesm2015/taiga-ui-cdk-date-time.js.map +1 -1
  152. package/fesm2015/taiga-ui-cdk-decorators.js +13 -10
  153. package/fesm2015/taiga-ui-cdk-decorators.js.map +1 -1
  154. package/fesm2015/taiga-ui-cdk-directives-active-zone.js +14 -8
  155. package/fesm2015/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  156. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +28 -44
  157. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  158. package/fesm2015/taiga-ui-cdk-directives-autofilled.js +1 -1
  159. package/fesm2015/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  160. package/fesm2015/taiga-ui-cdk-exceptions.js +84 -0
  161. package/fesm2015/taiga-ui-cdk-exceptions.js.map +1 -0
  162. package/fesm2015/taiga-ui-cdk-observables.js +6 -5
  163. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  164. package/fesm2015/taiga-ui-cdk-services.js +2 -1
  165. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  166. package/fesm2015/taiga-ui-cdk-utils-format.js +2 -0
  167. package/fesm2015/taiga-ui-cdk-utils-format.js.map +1 -1
  168. package/fesm2015/taiga-ui-cdk.js +1 -0
  169. package/fesm2015/taiga-ui-cdk.js.map +1 -1
  170. package/fesm5/taiga-ui-cdk-abstract.js +3 -6
  171. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  172. package/fesm5/taiga-ui-cdk-components-portal-host.js +2 -2
  173. package/fesm5/taiga-ui-cdk-components-portal-host.js.map +1 -1
  174. package/fesm5/taiga-ui-cdk-date-time.js +15 -8
  175. package/fesm5/taiga-ui-cdk-date-time.js.map +1 -1
  176. package/fesm5/taiga-ui-cdk-decorators.js +13 -10
  177. package/fesm5/taiga-ui-cdk-decorators.js.map +1 -1
  178. package/fesm5/taiga-ui-cdk-directives-active-zone.js +14 -8
  179. package/fesm5/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  180. package/fesm5/taiga-ui-cdk-directives-auto-focus.js +28 -46
  181. package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  182. package/fesm5/taiga-ui-cdk-directives-autofilled.js +1 -1
  183. package/fesm5/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  184. package/fesm5/taiga-ui-cdk-exceptions.js +112 -0
  185. package/fesm5/taiga-ui-cdk-exceptions.js.map +1 -0
  186. package/fesm5/taiga-ui-cdk-observables.js +6 -5
  187. package/fesm5/taiga-ui-cdk-observables.js.map +1 -1
  188. package/fesm5/taiga-ui-cdk-services.js +2 -2
  189. package/fesm5/taiga-ui-cdk-services.js.map +1 -1
  190. package/fesm5/taiga-ui-cdk-utils-format.js +2 -0
  191. package/fesm5/taiga-ui-cdk-utils-format.js.map +1 -1
  192. package/fesm5/taiga-ui-cdk.js +1 -0
  193. package/fesm5/taiga-ui-cdk.js.map +1 -1
  194. package/index.d.ts +1 -0
  195. package/observables/taiga-ui-cdk-observables.metadata.json +1 -1
  196. package/package.json +7 -7
  197. package/services/parents-scroll.service.d.ts +1 -1
  198. package/services/taiga-ui-cdk-services.metadata.json +1 -1
  199. package/taiga-ui-cdk.metadata.json +1 -1
  200. package/utils/format/pad-start.d.ts +2 -0
@@ -1,5 +1,6 @@
1
1
  import { __spread } from 'tslib';
2
2
  import { tuiAssert } from '@taiga-ui/cdk/classes';
3
+ import { TuiPureException } from '@taiga-ui/cdk/exceptions';
3
4
 
4
5
  /**
5
6
  * Decorator for checking input values for undefined. You can also pass
@@ -85,7 +86,7 @@ function tuiPure(_target, propertyKey, _a) {
85
86
  };
86
87
  }
87
88
  if (typeof value !== 'function') {
88
- throw new Error('tuiPure can only be used with functions or getters');
89
+ throw new TuiPureException();
89
90
  }
90
91
  var original = value;
91
92
  return {
@@ -93,23 +94,25 @@ function tuiPure(_target, propertyKey, _a) {
93
94
  get: function () {
94
95
  var _this = this;
95
96
  var previousArgs = [];
96
- var previousResult;
97
+ var originalFnWasCalledLeastAtOnce = false;
98
+ var pureValue;
97
99
  var patched = function () {
98
100
  var args = [];
99
101
  for (var _i = 0; _i < arguments.length; _i++) {
100
102
  args[_i] = arguments[_i];
101
103
  }
102
- if (previousArgs.length === args.length &&
103
- args.every(function (arg, index) { return arg === previousArgs[index]; })) {
104
- return previousResult;
104
+ var isPure = originalFnWasCalledLeastAtOnce &&
105
+ previousArgs.length === args.length &&
106
+ args.every(function (arg, index) { return arg === previousArgs[index]; });
107
+ if (isPure) {
108
+ return pureValue;
105
109
  }
106
110
  previousArgs = args;
107
- previousResult = original.apply(_this, args);
108
- return previousResult;
111
+ pureValue = original.apply(_this, args);
112
+ originalFnWasCalledLeastAtOnce = true;
113
+ return pureValue;
109
114
  };
110
- Object.defineProperty(this, propertyKey, {
111
- value: patched,
112
- });
115
+ Object.defineProperty(this, propertyKey, { value: patched });
113
116
  return patched;
114
117
  },
115
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-decorators.js","sources":["ng://@taiga-ui/cdk/decorators/default-prop.ts","ng://@taiga-ui/cdk/decorators/pure.ts","ng://@taiga-ui/cdk/decorators/required-setter.ts","ng://@taiga-ui/cdk/decorators/taiga-ui-cdk-decorators.ts"],"sourcesContent":["import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input values for undefined. You can also pass\n * optional assertion to check input against.\n *\n * See {@link createPropDecorator} for more details.\n *\n * CAUTION: This decorator overwrites other getters and setters.\n */\nexport function tuiDefaultProp<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): PropertyDecorator {\n return (target, key) => {\n const {name} = target.constructor;\n const errorGetDefaultMessage = errorGetDefault(key, name);\n const errorSetDefaultMessage = errorSetDefault(key, name);\n\n Object.defineProperty(target, key, {\n get(): undefined {\n tuiAssert.assert(false, errorGetDefaultMessage);\n\n return undefined;\n },\n set(this: T, initialValue: T[K]) {\n const isValid = initialValue !== undefined;\n const errorMessage = errorSetDefaultInitial(key, name);\n let currentValue = initialValue;\n\n tuiAssert.assert(isValid, errorMessage);\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, initialValue),\n `${String(key)} in ${name} received:`,\n initialValue,\n ...args,\n );\n }\n\n Object.defineProperty(this, key, {\n get(): T[K] {\n return currentValue;\n },\n set(this: T, value: T[K]) {\n const isValid = value !== undefined;\n const backupValue = initialValue;\n\n tuiAssert.assert(\n isValid,\n errorSetDefaultMessage,\n String(backupValue),\n );\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n currentValue = isValid ? value : backupValue;\n },\n });\n },\n });\n };\n}\n\nfunction errorGetDefault(key: string | symbol, component: string): string {\n return `Default value for ${String(\n key,\n )} was not provided in ${component}, error in Taiga UI Angular Kit`;\n}\n\nfunction errorSetDefault(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, which is invalid input, using default value:`;\n}\n\nfunction errorSetDefaultInitial(key: string | symbol, component: string): string {\n return `Undefined was passed as default value for ${String(\n key,\n )} to ${component}, error in Taiga UI Angular Kit`;\n}\n","/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: `this` is not available inside such functions/getters, they must be pure.\n */\nexport function tuiPure<T>(\n _target: Object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n },\n };\n }\n\n if (typeof value !== 'function') {\n throw new Error('tuiPure can only be used with functions or getters');\n }\n\n const original = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: ReadonlyArray<unknown> = [];\n let previousResult: any;\n\n const patched = (...args: Array<unknown>) => {\n if (\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index])\n ) {\n return previousResult;\n }\n\n previousArgs = args;\n previousResult = original.apply(this, args);\n\n return previousResult;\n };\n\n Object.defineProperty(this, propertyKey, {\n value: patched,\n });\n\n return patched as any;\n },\n };\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input setter values against a custom assertion which\n * takes value passed to input setter and component instance as arguments.\n * It specifically checks for undefined values and prevents calls to the\n * original setter in this case.\n */\nexport function tuiRequiredSetter<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): MethodDecorator {\n return (\n target: Object,\n key,\n {configurable, enumerable, get, set}: PropertyDescriptor,\n ): PropertyDescriptor => {\n const {name} = target.constructor;\n\n return {\n configurable,\n enumerable,\n get,\n set(this: T, value: T[K]) {\n if (value !== undefined && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n if (!set || value === undefined) {\n tuiAssert.assert(value !== undefined, errorSet(key, name));\n\n return;\n }\n\n set.call(this, value);\n },\n };\n };\n}\n\nfunction errorSet(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, setter will not be called`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-decorators.js","sources":["ng://@taiga-ui/cdk/decorators/default-prop.ts","ng://@taiga-ui/cdk/decorators/pure.ts","ng://@taiga-ui/cdk/decorators/required-setter.ts","ng://@taiga-ui/cdk/decorators/taiga-ui-cdk-decorators.ts"],"sourcesContent":["import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input values for undefined. You can also pass\n * optional assertion to check input against.\n *\n * See {@link createPropDecorator} for more details.\n *\n * CAUTION: This decorator overwrites other getters and setters.\n */\nexport function tuiDefaultProp<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): PropertyDecorator {\n return (target, key) => {\n const {name} = target.constructor;\n const errorGetDefaultMessage = errorGetDefault(key, name);\n const errorSetDefaultMessage = errorSetDefault(key, name);\n\n Object.defineProperty(target, key, {\n get(): undefined {\n tuiAssert.assert(false, errorGetDefaultMessage);\n\n return undefined;\n },\n set(this: T, initialValue: T[K]) {\n const isValid = initialValue !== undefined;\n const errorMessage = errorSetDefaultInitial(key, name);\n let currentValue = initialValue;\n\n tuiAssert.assert(isValid, errorMessage);\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, initialValue),\n `${String(key)} in ${name} received:`,\n initialValue,\n ...args,\n );\n }\n\n Object.defineProperty(this, key, {\n get(): T[K] {\n return currentValue;\n },\n set(this: T, value: T[K]) {\n const isValid = value !== undefined;\n const backupValue = initialValue;\n\n tuiAssert.assert(\n isValid,\n errorSetDefaultMessage,\n String(backupValue),\n );\n\n if (isValid && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n currentValue = isValid ? value : backupValue;\n },\n });\n },\n });\n };\n}\n\nfunction errorGetDefault(key: string | symbol, component: string): string {\n return `Default value for ${String(\n key,\n )} was not provided in ${component}, error in Taiga UI Angular Kit`;\n}\n\nfunction errorSetDefault(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, which is invalid input, using default value:`;\n}\n\nfunction errorSetDefaultInitial(key: string | symbol, component: string): string {\n return `Undefined was passed as default value for ${String(\n key,\n )} to ${component}, error in Taiga UI Angular Kit`;\n}\n","import {TuiPureException} from '@taiga-ui/cdk/exceptions';\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: `this` is not available inside such functions/getters, they must be pure.\n */\nexport function tuiPure<T>(\n _target: Object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n },\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]) => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {value: patched});\n\n return patched as unknown as T;\n },\n };\n}\n","import {tuiAssert} from '@taiga-ui/cdk/classes';\nimport {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\n/**\n * Decorator for checking input setter values against a custom assertion which\n * takes value passed to input setter and component instance as arguments.\n * It specifically checks for undefined values and prevents calls to the\n * original setter in this case.\n */\nexport function tuiRequiredSetter<T extends object, K extends keyof T>(\n assertion?: TuiBooleanHandler<T[K]>,\n ...args: any[]\n): MethodDecorator {\n return (\n target: Object,\n key,\n {configurable, enumerable, get, set}: PropertyDescriptor,\n ): PropertyDescriptor => {\n const {name} = target.constructor;\n\n return {\n configurable,\n enumerable,\n get,\n set(this: T, value: T[K]) {\n if (value !== undefined && assertion) {\n tuiAssert.assert(\n assertion.call(this, value),\n `${String(key)} in ${name} received:`,\n value,\n ...args,\n );\n }\n\n if (!set || value === undefined) {\n tuiAssert.assert(value !== undefined, errorSet(key, name));\n\n return;\n }\n\n set.call(this, value);\n },\n };\n };\n}\n\nfunction errorSet(key: string | symbol, component: string): string {\n return `Undefined was passed as ${String(\n key,\n )} to ${component}, setter will not be called`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __spread, __decorate, __param } from 'tslib';
2
2
  import { Inject, NgZone, ElementRef, Optional, SkipSelf, Input, Output, Directive, NgModule } from '@angular/core';
3
- import { tuiDefaultProp } from '@taiga-ui/cdk/decorators';
3
+ import { tuiDefaultProp, tuiPure } from '@taiga-ui/cdk/decorators';
4
4
  import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
5
5
  import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens';
6
6
  import { Observable } from 'rxjs';
@@ -23,13 +23,7 @@ var TuiActiveZoneDirective = /** @class */ (function () {
23
23
  TuiActiveZoneDirective_1 = TuiActiveZoneDirective;
24
24
  Object.defineProperty(TuiActiveZoneDirective.prototype, "tuiActiveZoneParentSetter", {
25
25
  set: function (zone) {
26
- if (this.tuiActiveZoneParent) {
27
- this.tuiActiveZoneParent.removeSubActiveZone(this);
28
- }
29
- if (zone) {
30
- zone.addSubActiveZone(this);
31
- }
32
- this.tuiActiveZoneParent = zone;
26
+ this.setZone(zone);
33
27
  },
34
28
  enumerable: true,
35
29
  configurable: true
@@ -48,6 +42,15 @@ var TuiActiveZoneDirective = /** @class */ (function () {
48
42
  return array.indexOf(item) === index && item.contains(node);
49
43
  }));
50
44
  };
45
+ TuiActiveZoneDirective.prototype.setZone = function (zone) {
46
+ if (this.tuiActiveZoneParent) {
47
+ this.tuiActiveZoneParent.removeSubActiveZone(this);
48
+ }
49
+ if (zone) {
50
+ zone.addSubActiveZone(this);
51
+ }
52
+ this.tuiActiveZoneParent = zone;
53
+ };
51
54
  TuiActiveZoneDirective.prototype.addSubActiveZone = function (activeZone) {
52
55
  this.subActiveZones = __spread(this.subActiveZones, [activeZone]);
53
56
  };
@@ -69,6 +72,9 @@ var TuiActiveZoneDirective = /** @class */ (function () {
69
72
  __decorate([
70
73
  Output()
71
74
  ], TuiActiveZoneDirective.prototype, "tuiActiveZoneChange", void 0);
75
+ __decorate([
76
+ tuiPure
77
+ ], TuiActiveZoneDirective.prototype, "setZone", null);
72
78
  TuiActiveZoneDirective = TuiActiveZoneDirective_1 = __decorate([
73
79
  Directive({
74
80
  selector: '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-active-zone.js","sources":["ng://@taiga-ui/cdk/directives/active-zone/active-zone.directive.ts","ng://@taiga-ui/cdk/directives/active-zone/active-zone.module.ts","ng://@taiga-ui/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk/decorators';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, skip, startWith} from 'rxjs/operators';\n\n@Directive({\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n exportAs: 'tuiActiveZone',\n})\nexport class TuiActiveZoneDirective implements OnDestroy {\n private subActiveZones: ReadonlyArray<TuiActiveZoneDirective> = [];\n\n private tuiActiveZoneParent: TuiActiveZoneDirective | null = null;\n\n @Input('tuiActiveZoneParent')\n @tuiDefaultProp()\n set tuiActiveZoneParentSetter(zone: TuiActiveZoneDirective | null) {\n if (this.tuiActiveZoneParent) {\n this.tuiActiveZoneParent.removeSubActiveZone(this);\n }\n\n if (zone) {\n zone.addSubActiveZone(this);\n }\n\n this.tuiActiveZoneParent = zone;\n }\n\n @Output()\n readonly tuiActiveZoneChange = this.active$.pipe(\n map(element => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tuiZoneOptimized(this.ngZone),\n );\n\n constructor(\n @Inject(TUI_ACTIVE_ELEMENT)\n private readonly active$: Observable<Element | null>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<Element>,\n @Optional()\n @SkipSelf()\n @Inject(TuiActiveZoneDirective)\n private readonly directParentActiveZone: TuiActiveZoneDirective | null,\n ) {\n if (this.directParentActiveZone) {\n this.directParentActiveZone.addSubActiveZone(this);\n }\n }\n\n ngOnDestroy() {\n if (this.directParentActiveZone) {\n this.directParentActiveZone.removeSubActiveZone(this);\n }\n\n if (this.tuiActiveZoneParent) {\n this.tuiActiveZoneParent.removeSubActiveZone(this);\n }\n }\n\n contains(node: Node): boolean {\n return (\n this.elementRef.nativeElement.contains(node) ||\n this.subActiveZones.some(\n (item, index, array) =>\n array.indexOf(item) === index && item.contains(node),\n )\n );\n }\n\n private addSubActiveZone(activeZone: TuiActiveZoneDirective) {\n this.subActiveZones = [...this.subActiveZones, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZoneDirective) {\n const index = this.subActiveZones.findIndex(item => item === activeZone);\n\n this.subActiveZones = [\n ...this.subActiveZones.slice(0, index),\n ...this.subActiveZones.slice(index + 1),\n ];\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiActiveZoneDirective} from './active-zone.directive';\n\n@NgModule({\n declarations: [TuiActiveZoneDirective],\n exports: [TuiActiveZoneDirective],\n})\nexport class TuiActiveZoneModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-active-zone.js","sources":["ng://@taiga-ui/cdk/directives/active-zone/active-zone.directive.ts","ng://@taiga-ui/cdk/directives/active-zone/active-zone.module.ts","ng://@taiga-ui/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\nimport {tuiDefaultProp, tuiPure} from '@taiga-ui/cdk/decorators';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, skip, startWith} from 'rxjs/operators';\n\n@Directive({\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n exportAs: 'tuiActiveZone',\n})\nexport class TuiActiveZoneDirective implements OnDestroy {\n private subActiveZones: ReadonlyArray<TuiActiveZoneDirective> = [];\n\n private tuiActiveZoneParent: TuiActiveZoneDirective | null = null;\n\n @Input('tuiActiveZoneParent')\n @tuiDefaultProp()\n set tuiActiveZoneParentSetter(zone: TuiActiveZoneDirective | null) {\n this.setZone(zone);\n }\n\n @Output()\n readonly tuiActiveZoneChange = this.active$.pipe(\n map(element => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tuiZoneOptimized(this.ngZone),\n );\n\n constructor(\n @Inject(TUI_ACTIVE_ELEMENT)\n private readonly active$: Observable<Element | null>,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<Element>,\n @Optional()\n @SkipSelf()\n @Inject(TuiActiveZoneDirective)\n private readonly directParentActiveZone: TuiActiveZoneDirective | null,\n ) {\n if (this.directParentActiveZone) {\n this.directParentActiveZone.addSubActiveZone(this);\n }\n }\n\n ngOnDestroy() {\n if (this.directParentActiveZone) {\n this.directParentActiveZone.removeSubActiveZone(this);\n }\n\n if (this.tuiActiveZoneParent) {\n this.tuiActiveZoneParent.removeSubActiveZone(this);\n }\n }\n\n contains(node: Node): boolean {\n return (\n this.elementRef.nativeElement.contains(node) ||\n this.subActiveZones.some(\n (item, index, array) =>\n array.indexOf(item) === index && item.contains(node),\n )\n );\n }\n\n @tuiPure\n private setZone(zone: TuiActiveZoneDirective | null) {\n if (this.tuiActiveZoneParent) {\n this.tuiActiveZoneParent.removeSubActiveZone(this);\n }\n\n if (zone) {\n zone.addSubActiveZone(this);\n }\n\n this.tuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: TuiActiveZoneDirective) {\n this.subActiveZones = [...this.subActiveZones, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZoneDirective) {\n const index = this.subActiveZones.findIndex(item => item === activeZone);\n\n this.subActiveZones = [\n ...this.subActiveZones.slice(0, index),\n ...this.subActiveZones.slice(index + 1),\n ];\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiActiveZoneDirective} from './active-zone.directive';\n\n@NgModule({\n declarations: [TuiActiveZoneDirective],\n exports: [TuiActiveZoneDirective],\n})\nexport class TuiActiveZoneModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;IA0CI,gCAEqB,OAAmC,EACnB,MAAc,EACV,UAA+B,EAInD,sBAAqD;QAR1E,iBAaC;QAXoB,YAAO,GAAP,OAAO,CAA4B;QACnB,WAAM,GAAN,MAAM,CAAQ;QACV,eAAU,GAAV,UAAU,CAAqB;QAInD,2BAAsB,GAAtB,sBAAsB,CAA+B;QA3BlE,mBAAc,GAA0C,EAAE,CAAC;QAE3D,wBAAmB,GAAkC,IAAI,CAAC;QASzD,wBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC5C,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,CAAC,CAAC,OAAO,IAAI,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAA,CAAC,EACnD,SAAS,CAAC,KAAK,CAAC,EAChB,oBAAoB,EAAE,EACtB,IAAI,CAAC,CAAC,CAAC,EACP,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAChC,CAAC;QAYE,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACtD;KACJ;+BAjCQ,sBAAsB;IAO/B,sBAAI,6DAAyB;aAA7B,UAA8B,IAAmC;YAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;;;OAAA;IA0BD,4CAAW,GAAX;QACI,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACtD;KACJ;IAED,yCAAQ,GAAR,UAAS,IAAU;QACf,QACI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CACpB,UAAC,IAAI,EAAE,KAAK,EAAE,KAAK;gBACf,OAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;aAAA,CAC3D,EACH;KACL;IAGO,wCAAO,GAAf,UAAgB,IAAmC;QAC/C,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACtD;QAED,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC;IAEO,iDAAgB,GAAxB,UAAyB,UAAkC;QACvD,IAAI,CAAC,cAAc,YAAO,IAAI,CAAC,cAAc,GAAE,UAAU,EAAC,CAAC;KAC9D;IAEO,oDAAmB,GAA3B,UAA4B,UAAkC;QAC1D,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,UAAU,GAAA,CAAC,CAAC;QAEzE,IAAI,CAAC,cAAc,YACZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EACnC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAC1C,CAAC;KACL;;;gBAzD6B,UAAU,uBADnC,MAAM,SAAC,kBAAkB;gBAEe,MAAM,uBAA9C,MAAM,SAAC,MAAM;gBACmC,UAAU,uBAA1D,MAAM,SAAC,UAAU;gBAIuB,sBAAsB,uBAH9D,QAAQ,YACR,QAAQ,YACR,MAAM,SAAC,wBAAsB;;IApBlC;QAFC,KAAK,CAAC,qBAAqB,CAAC;QAC5B,cAAc,EAAE;2EAGhB;IAGD;QADC,MAAM,EAAE;uEAOP;IAsCF;QADC,OAAO;yDAWP;IAlEQ,sBAAsB;QALlC,SAAS,CAAC;YACP,QAAQ,EACJ,qHAAqH;YACzH,QAAQ,EAAE,eAAe;SAC5B,CAAC;QAsBO,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAE1B,WAAA,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,wBAAsB,CAAC,CAAA;OA3B1B,sBAAsB,CAgFlC;IAAD,6BAAC;CAhFD;;;ICdA;KAAmC;IAAtB,mBAAmB;QAJ/B,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;ACRA;;;;;;"}
@@ -1,74 +1,44 @@
1
1
  import { __decorate, __param } from 'tslib';
2
- import { ChangeDetectorRef, Inject, ElementRef, Optional, Self, Renderer2, ViewContainerRef, Input, Directive, NgModule } from '@angular/core';
2
+ import { Injector, Inject, INJECTOR, ElementRef, Optional, Self, Input, Directive, Renderer2, ViewContainerRef, NgModule } from '@angular/core';
3
3
  import { ANIMATION_FRAME } from '@ng-web-apis/common';
4
4
  import { POLLING_TIME } from '@taiga-ui/cdk/constants';
5
5
  import { TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
6
- import { getClosestElement } from '@taiga-ui/cdk/utils/dom';
7
6
  import { setNativeFocused } from '@taiga-ui/cdk/utils/focus';
8
7
  import { race, timer, Observable } from 'rxjs';
9
8
  import { throttleTime, map, filter, take } from 'rxjs/operators';
10
9
 
11
- var IOS_TIMEOUT = 1000;
10
+ var TIMEOUT = 1000;
12
11
  var NG_ANIMATION_SELECTOR = '.ng-animating';
13
12
  // @bad TODO: Consider removing iOS hacks
14
13
  // TODO: in 3.0 change input name to tuiAutoFocus and handle empty string
15
14
  var TuiAutoFocusDirective = /** @class */ (function () {
16
- function TuiAutoFocusDirective(changeDetectorRef, elementRef, tuiFocusableComponent, isIos, renderer, viewContainerRef, animationFrame$) {
17
- this.changeDetectorRef = changeDetectorRef;
15
+ function TuiAutoFocusDirective(injector, elementRef, tuiFocusableComponent, isIos, animationFrame$) {
16
+ this.injector = injector;
18
17
  this.elementRef = elementRef;
19
18
  this.tuiFocusableComponent = tuiFocusableComponent;
20
19
  this.isIos = isIos;
21
- this.renderer = renderer;
22
- this.viewContainerRef = viewContainerRef;
23
20
  this.animationFrame$ = animationFrame$;
24
21
  this.autoFocus = true;
25
22
  }
26
23
  TuiAutoFocusDirective.prototype.ngAfterViewInit = function () {
27
- var _this = this;
24
+ var _a;
28
25
  if (!this.autoFocus) {
29
26
  return;
30
27
  }
31
- var element = this.tuiFocusableComponent === null
32
- ? this.elementRef.nativeElement
33
- : this.tuiFocusableComponent.nativeFocusableElement;
34
- // TODO: iframe warning
35
- if (!(element instanceof HTMLElement)) {
36
- return;
37
- }
38
- if (!this.isIos) {
39
- setTimeout(function () {
40
- setNativeFocused(element);
41
- _this.changeDetectorRef.markForCheck();
42
- });
43
- return;
28
+ var element = ((_a = this.tuiFocusableComponent) === null || _a === void 0 ? void 0 : _a.nativeFocusableElement) ||
29
+ this.elementRef.nativeElement;
30
+ if (this.isIos) {
31
+ veryVerySadIosFix(this.injector);
44
32
  }
45
- this.veryVerySadIosFix(element);
46
- };
47
- TuiAutoFocusDirective.prototype.veryVerySadIosFix = function (element) {
48
- var _this = this;
49
- var nativeElement = this.viewContainerRef.element.nativeElement;
50
- var decoy = this.renderer.createElement('input');
51
- decoy.style.position = 'absolute';
52
- decoy.style.opacity = '0';
53
- decoy.style.height = '0';
54
- this.renderer.setAttribute(decoy, 'readonly', 'readonly');
55
- this.renderer.appendChild(nativeElement, decoy);
56
- setNativeFocused(decoy);
57
- race(timer(IOS_TIMEOUT), this.animationFrame$.pipe(throttleTime(POLLING_TIME), map(function () { return getClosestElement(element, NG_ANIMATION_SELECTOR); }), filter(function (element) { return !element; }), take(1))).subscribe(function () {
58
- setTimeout(function () {
59
- setNativeFocused(element);
60
- _this.changeDetectorRef.markForCheck();
61
- _this.renderer.removeChild(nativeElement, decoy);
62
- });
33
+ race(timer(TIMEOUT), this.animationFrame$.pipe(throttleTime(POLLING_TIME), map(function () { return element.closest(NG_ANIMATION_SELECTOR); }), filter(function (v) { return !v; }), take(1))).subscribe(function () {
34
+ setNativeFocused(element);
63
35
  });
64
36
  };
65
37
  TuiAutoFocusDirective.ctorParameters = function () { return [
66
- { type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
38
+ { type: Injector, decorators: [{ type: Inject, args: [INJECTOR,] }] },
67
39
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
68
40
  { type: undefined, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [TUI_FOCUSABLE_ITEM_ACCESSOR,] }] },
69
41
  { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_IOS,] }] },
70
- { type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
71
- { type: ViewContainerRef, decorators: [{ type: Inject, args: [ViewContainerRef,] }] },
72
42
  { type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] }
73
43
  ]; };
74
44
  __decorate([
@@ -78,18 +48,30 @@ var TuiAutoFocusDirective = /** @class */ (function () {
78
48
  Directive({
79
49
  selector: '[tuiAutoFocus]',
80
50
  }),
81
- __param(0, Inject(ChangeDetectorRef)),
51
+ __param(0, Inject(INJECTOR)),
82
52
  __param(1, Inject(ElementRef)),
83
53
  __param(2, Optional()),
84
54
  __param(2, Self()),
85
55
  __param(2, Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)),
86
56
  __param(3, Inject(TUI_IS_IOS)),
87
- __param(4, Inject(Renderer2)),
88
- __param(5, Inject(ViewContainerRef)),
89
- __param(6, Inject(ANIMATION_FRAME))
57
+ __param(4, Inject(ANIMATION_FRAME))
90
58
  ], TuiAutoFocusDirective);
91
59
  return TuiAutoFocusDirective;
92
60
  }());
61
+ function veryVerySadIosFix(injector) {
62
+ var renderer = injector.get(Renderer2);
63
+ var nativeElement = injector.get(ViewContainerRef).element.nativeElement;
64
+ var decoy = renderer.createElement('input');
65
+ decoy.style.position = 'absolute';
66
+ decoy.style.opacity = '0';
67
+ decoy.style.height = '0';
68
+ renderer.setAttribute(decoy, 'readonly', 'readonly');
69
+ renderer.appendChild(nativeElement, decoy);
70
+ decoy.addEventListener('blur', function () { return renderer.removeChild(nativeElement, decoy); }, {
71
+ once: true,
72
+ });
73
+ setNativeFocused(decoy);
74
+ }
93
75
 
94
76
  var TuiAutoFocusModule = /** @class */ (function () {
95
77
  function TuiAutoFocusModule() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n Input,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {getClosestElement} from '@taiga-ui/cdk/utils/dom';\nimport {setNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {Observable, race, timer} from 'rxjs';\nimport {filter, map, take, throttleTime} from 'rxjs/operators';\n\nconst IOS_TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\n// @bad TODO: Consider removing iOS hacks\n// TODO: in 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(ChangeDetectorRef)\n private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<HTMLElement>,\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n private readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {}\n\n ngAfterViewInit() {\n if (!this.autoFocus) {\n return;\n }\n\n const element =\n this.tuiFocusableComponent === null\n ? this.elementRef.nativeElement\n : this.tuiFocusableComponent.nativeFocusableElement;\n\n // TODO: iframe warning\n if (!(element instanceof HTMLElement)) {\n return;\n }\n\n if (!this.isIos) {\n setTimeout(() => {\n setNativeFocused(element);\n this.changeDetectorRef.markForCheck();\n });\n\n return;\n }\n\n this.veryVerySadIosFix(element);\n }\n\n private veryVerySadIosFix(element: HTMLElement) {\n const {nativeElement} = this.viewContainerRef.element;\n const decoy: HTMLElement = this.renderer.createElement('input');\n\n decoy.style.position = 'absolute';\n decoy.style.opacity = '0';\n decoy.style.height = '0';\n\n this.renderer.setAttribute(decoy, 'readonly', 'readonly');\n this.renderer.appendChild(nativeElement, decoy);\n setNativeFocused(decoy);\n\n race<unknown>(\n timer(IOS_TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => getClosestElement(element, NG_ANIMATION_SELECTOR)),\n filter(element => !element),\n take(1),\n ),\n ).subscribe(() => {\n setTimeout(() => {\n setNativeFocused(element);\n this.changeDetectorRef.markForCheck();\n this.renderer.removeChild(nativeElement, decoy);\n });\n });\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-auto-focus.js","sources":["ng://@taiga-ui/cdk/directives/auto-focus/autofocus.directive.ts","ng://@taiga-ui/cdk/directives/auto-focus/autofocus.module.ts","ng://@taiga-ui/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {\n AfterViewInit,\n Directive,\n ElementRef,\n Inject,\n INJECTOR,\n Injector,\n Input,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {POLLING_TIME} from '@taiga-ui/cdk/constants';\nimport {TuiFocusableElementAccessor} from '@taiga-ui/cdk/interfaces';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {setNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {Observable, race, timer} from 'rxjs';\nimport {filter, map, take, throttleTime} from 'rxjs/operators';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\n// @bad TODO: Consider removing iOS hacks\n// TODO: in 3.0 change input name to tuiAutoFocus and handle empty string\n@Directive({\n selector: '[tuiAutoFocus]',\n})\nexport class TuiAutoFocusDirective implements AfterViewInit {\n @Input()\n autoFocus = true;\n\n constructor(\n @Inject(INJECTOR) private readonly injector: Injector,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Optional()\n @Self()\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n private readonly tuiFocusableComponent: TuiFocusableElementAccessor | null,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n ) {}\n\n ngAfterViewInit() {\n if (!this.autoFocus) {\n return;\n }\n\n const element =\n this.tuiFocusableComponent?.nativeFocusableElement ||\n this.elementRef.nativeElement;\n\n if (this.isIos) {\n veryVerySadIosFix(this.injector);\n }\n\n race(\n timer(TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(POLLING_TIME),\n map(() => element.closest(NG_ANIMATION_SELECTOR)),\n filter(v => !v),\n take(1),\n ),\n ).subscribe(() => {\n setNativeFocused(element);\n });\n }\n}\n\nfunction veryVerySadIosFix(injector: Injector) {\n const renderer = injector.get(Renderer2);\n const {nativeElement} = injector.get(ViewContainerRef).element;\n const decoy: HTMLElement = renderer.createElement('input');\n\n decoy.style.position = 'absolute';\n decoy.style.opacity = '0';\n decoy.style.height = '0';\n\n renderer.setAttribute(decoy, 'readonly', 'readonly');\n renderer.appendChild(nativeElement, decoy);\n decoy.addEventListener('blur', () => renderer.removeChild(nativeElement, decoy), {\n once: true,\n });\n\n setNativeFocused(decoy);\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutoFocusDirective} from './autofocus.directive';\n\n@NgModule({\n declarations: [TuiAutoFocusDirective],\n exports: [TuiAutoFocusDirective],\n})\nexport class TuiAutoFocusModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ var TuiAutofilledDirective = /** @class */ (function () {
26
26
  ], TuiAutofilledDirective.prototype, "tuiAutofilledChange", void 0);
27
27
  TuiAutofilledDirective = __decorate([
28
28
  Directive({
29
- selector: 'input[tuiAutofilledChange]',
29
+ selector: '[tuiAutofilledChange]',
30
30
  host: {
31
31
  class: 'tui-autofill',
32
32
  },
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-autofilled.js","sources":["ng://@taiga-ui/cdk/directives/autofilled/autofilled.directive.ts","ng://@taiga-ui/cdk/directives/autofilled/autofilled.module.ts","ng://@taiga-ui/cdk/directives/autofilled/taiga-ui-cdk-directives-autofilled.ts"],"sourcesContent":["import {Directive, ElementRef, Inject, Output} from '@angular/core';\nimport {typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TuiDirectiveStylesService} from '@taiga-ui/cdk/services';\nimport {map, skip} from 'rxjs/operators';\n\nconst ON = 'tuiAutofillOn';\nconst OFF = 'tuiAutofillOff';\nconst STYLE = `\n@keyframes ${ON} {\n from {\n content: '1';\n }\n\n to {\n content: '2';\n }\n}\n\n@keyframes ${OFF} {\n from {\n content: '2';\n }\n\n to {\n content: '1';\n }\n}`;\n\n// @dynamic\n@Directive({\n selector: 'input[tuiAutofilledChange]',\n host: {\n class: 'tui-autofill',\n },\n})\nexport class TuiAutofilledDirective {\n @Output()\n readonly tuiAutofilledChange = typedFromEvent(\n this.elementRef.nativeElement,\n 'animationstart',\n ).pipe(\n map(({animationName}) => animationName === ON),\n skip(1),\n );\n\n constructor(\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDirectiveStylesService)\n directiveStyles: TuiDirectiveStylesService,\n ) {\n directiveStyles.addStyle(STYLE, 'TuiAutofilledDirective');\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutofilledDirective} from './autofilled.directive';\n\n@NgModule({\n declarations: [TuiAutofilledDirective],\n exports: [TuiAutofilledDirective],\n})\nexport class TuiAutofilledModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,IAAM,GAAG,GAAG,gBAAgB,CAAC;AAC7B,IAAM,KAAK,GAAG,kBACD,EAAE,gHAUF,GAAG,8FAQd,CAAC;AAEH;;IAiBI,gCACyC,UAAwC,EAE7E,eAA0C;QAFL,eAAU,GAAV,UAAU,CAA8B;QATxE,wBAAmB,GAAG,cAAc,CACzC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,gBAAgB,CACnB,CAAC,IAAI,CACF,GAAG,CAAC,UAAC,EAAe;gBAAd,gCAAa;YAAM,OAAA,aAAa,KAAK,EAAE;SAAA,CAAC,EAC9C,IAAI,CAAC,CAAC,CAAC,CACV,CAAC;QAOE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7D;;gBALoD,UAAU,uBAA1D,MAAM,SAAC,UAAU;gBAED,yBAAyB,uBADzC,MAAM,SAAC,yBAAyB;;IAVrC;QADC,MAAM,EAAE;uEAOP;IARO,sBAAsB;QANlC,SAAS,CAAC;YACP,QAAQ,EAAE,4BAA4B;YACtC,IAAI,EAAE;gBACF,KAAK,EAAE,cAAc;aACxB;SACJ,CAAC;QAYO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;OAZ7B,sBAAsB,CAiBlC;IAAD,6BAAC;CAjBD;;;IC3BA;KAAmC;IAAtB,mBAAmB;QAJ/B,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;ACRA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-autofilled.js","sources":["ng://@taiga-ui/cdk/directives/autofilled/autofilled.directive.ts","ng://@taiga-ui/cdk/directives/autofilled/autofilled.module.ts","ng://@taiga-ui/cdk/directives/autofilled/taiga-ui-cdk-directives-autofilled.ts"],"sourcesContent":["import {Directive, ElementRef, Inject, Output} from '@angular/core';\nimport {typedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TuiDirectiveStylesService} from '@taiga-ui/cdk/services';\nimport {map, skip} from 'rxjs/operators';\n\nconst ON = 'tuiAutofillOn';\nconst OFF = 'tuiAutofillOff';\nconst STYLE = `\n@keyframes ${ON} {\n from {\n content: '1';\n }\n\n to {\n content: '2';\n }\n}\n\n@keyframes ${OFF} {\n from {\n content: '2';\n }\n\n to {\n content: '1';\n }\n}`;\n\n// @dynamic\n@Directive({\n selector: '[tuiAutofilledChange]',\n host: {\n class: 'tui-autofill',\n },\n})\nexport class TuiAutofilledDirective {\n @Output()\n readonly tuiAutofilledChange = typedFromEvent(\n this.elementRef.nativeElement,\n 'animationstart',\n ).pipe(\n map(({animationName}) => animationName === ON),\n skip(1),\n );\n\n constructor(\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDirectiveStylesService)\n directiveStyles: TuiDirectiveStylesService,\n ) {\n directiveStyles.addStyle(STYLE, 'TuiAutofilledDirective');\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiAutofilledDirective} from './autofilled.directive';\n\n@NgModule({\n declarations: [TuiAutofilledDirective],\n exports: [TuiAutofilledDirective],\n})\nexport class TuiAutofilledModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,IAAM,GAAG,GAAG,gBAAgB,CAAC;AAC7B,IAAM,KAAK,GAAG,kBACD,EAAE,gHAUF,GAAG,8FAQd,CAAC;AAEH;;IAiBI,gCACyC,UAAwC,EAE7E,eAA0C;QAFL,eAAU,GAAV,UAAU,CAA8B;QATxE,wBAAmB,GAAG,cAAc,CACzC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,gBAAgB,CACnB,CAAC,IAAI,CACF,GAAG,CAAC,UAAC,EAAe;gBAAd,gCAAa;YAAM,OAAA,aAAa,KAAK,EAAE;SAAA,CAAC,EAC9C,IAAI,CAAC,CAAC,CAAC,CACV,CAAC;QAOE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7D;;gBALoD,UAAU,uBAA1D,MAAM,SAAC,UAAU;gBAED,yBAAyB,uBADzC,MAAM,SAAC,yBAAyB;;IAVrC;QADC,MAAM,EAAE;uEAOP;IARO,sBAAsB;QANlC,SAAS,CAAC;YACP,QAAQ,EAAE,uBAAuB;YACjC,IAAI,EAAE;gBACF,KAAK,EAAE,cAAc;aACxB;SACJ,CAAC;QAYO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,yBAAyB,CAAC,CAAA;OAZ7B,sBAAsB,CAiBlC;IAAD,6BAAC;CAjBD;;;IC3BA;KAAmC;IAAtB,mBAAmB;QAJ/B,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;ACRA;;;;;;"}
@@ -0,0 +1,112 @@
1
+ import { __extends } from 'tslib';
2
+
3
+ var TuiComputedDocumentException = /** @class */ (function (_super) {
4
+ __extends(TuiComputedDocumentException, _super);
5
+ function TuiComputedDocumentException() {
6
+ return _super.call(this, 'Only use computedDocument after load event') || this;
7
+ }
8
+ return TuiComputedDocumentException;
9
+ }(Error));
10
+
11
+ var TuiDocumentSelectionException = /** @class */ (function (_super) {
12
+ __extends(TuiDocumentSelectionException, _super);
13
+ function TuiDocumentSelectionException() {
14
+ return _super.call(this, 'Failed to get document selection') || this;
15
+ }
16
+ return TuiDocumentSelectionException;
17
+ }(Error));
18
+
19
+ var InvalidDayException = /** @class */ (function (_super) {
20
+ __extends(InvalidDayException, _super);
21
+ function InvalidDayException(day) {
22
+ return _super.call(this, "Invalid day: " + day) || this;
23
+ }
24
+ return InvalidDayException;
25
+ }(Error));
26
+
27
+ var InvalidMonthException = /** @class */ (function (_super) {
28
+ __extends(InvalidMonthException, _super);
29
+ function InvalidMonthException(month) {
30
+ return _super.call(this, "Invalid month: " + month) || this;
31
+ }
32
+ return InvalidMonthException;
33
+ }(Error));
34
+
35
+ var InvalidYearException = /** @class */ (function (_super) {
36
+ __extends(InvalidYearException, _super);
37
+ function InvalidYearException(year) {
38
+ return _super.call(this, "Invalid year: " + year) || this;
39
+ }
40
+ return InvalidYearException;
41
+ }(Error));
42
+
43
+ var TuiNoHostException = /** @class */ (function (_super) {
44
+ __extends(TuiNoHostException, _super);
45
+ function TuiNoHostException() {
46
+ return _super.call(this, 'Portals cannot be used without TuiPortalHostComponent') || this;
47
+ }
48
+ return TuiNoHostException;
49
+ }(Error));
50
+
51
+ var TuiOwnerDocumentException = /** @class */ (function (_super) {
52
+ __extends(TuiOwnerDocumentException, _super);
53
+ function TuiOwnerDocumentException() {
54
+ return _super.call(this, 'Element does not have ownerDocument') || this;
55
+ }
56
+ return TuiOwnerDocumentException;
57
+ }(Error));
58
+
59
+ var TuiPureException = /** @class */ (function (_super) {
60
+ __extends(TuiPureException, _super);
61
+ function TuiPureException() {
62
+ return _super.call(this, 'tuiPure can only be used with functions or getters') || this;
63
+ }
64
+ return TuiPureException;
65
+ }(Error));
66
+
67
+ var TuiTableSortKeyException = /** @class */ (function (_super) {
68
+ __extends(TuiTableSortKeyException, _super);
69
+ function TuiTableSortKeyException() {
70
+ return _super.call(this, 'Trying to sort with no key') || this;
71
+ }
72
+ return TuiTableSortKeyException;
73
+ }(Error));
74
+
75
+ var TuiTsParserException = /** @class */ (function (_super) {
76
+ __extends(TuiTsParserException, _super);
77
+ function TuiTsParserException() {
78
+ return _super.call(this, 'TsFileParser: 1 component/module per ts-file') || this;
79
+ }
80
+ return TuiTsParserException;
81
+ }(Error));
82
+
83
+ var TuiValueChangesException = /** @class */ (function (_super) {
84
+ __extends(TuiValueChangesException, _super);
85
+ function TuiValueChangesException() {
86
+ return _super.call(this, 'Control does not have valueChanges') || this;
87
+ }
88
+ return TuiValueChangesException;
89
+ }(Error));
90
+
91
+ var TuiValuePresentException = /** @class */ (function (_super) {
92
+ __extends(TuiValuePresentException, _super);
93
+ function TuiValuePresentException() {
94
+ return _super.call(this, 'Value must present') || this;
95
+ }
96
+ return TuiValuePresentException;
97
+ }(Error));
98
+
99
+ var TuiXmlParsingException = /** @class */ (function (_super) {
100
+ __extends(TuiXmlParsingException, _super);
101
+ function TuiXmlParsingException() {
102
+ return _super.call(this, 'Error parsing XML string') || this;
103
+ }
104
+ return TuiXmlParsingException;
105
+ }(Error));
106
+
107
+ /**
108
+ * Generated bundle index. Do not edit.
109
+ */
110
+
111
+ export { InvalidDayException, InvalidMonthException, InvalidYearException, TuiComputedDocumentException, TuiDocumentSelectionException, TuiNoHostException, TuiOwnerDocumentException, TuiPureException, TuiTableSortKeyException, TuiTsParserException, TuiValueChangesException, TuiValuePresentException, TuiXmlParsingException };
112
+ //# sourceMappingURL=taiga-ui-cdk-exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-cdk-exceptions.js","sources":["ng://@taiga-ui/cdk/exceptions/computed-document.exception.ts","ng://@taiga-ui/cdk/exceptions/document-selection.exception.ts","ng://@taiga-ui/cdk/exceptions/invalid-day.exception.ts","ng://@taiga-ui/cdk/exceptions/invalid-month.exception.ts","ng://@taiga-ui/cdk/exceptions/invalid-year.exception.ts","ng://@taiga-ui/cdk/exceptions/no-host.exception.ts","ng://@taiga-ui/cdk/exceptions/owner-document.exception.ts","ng://@taiga-ui/cdk/exceptions/pure.exception.ts","ng://@taiga-ui/cdk/exceptions/table-sort-key.exception.ts","ng://@taiga-ui/cdk/exceptions/ts-parser.exception.ts","ng://@taiga-ui/cdk/exceptions/value-changes.exception.ts","ng://@taiga-ui/cdk/exceptions/value-present.exception.ts","ng://@taiga-ui/cdk/exceptions/xml-parsing.exception.ts","ng://@taiga-ui/cdk/exceptions/taiga-ui-cdk-exceptions.ts"],"sourcesContent":["export class TuiComputedDocumentException extends Error {\n constructor() {\n super('Only use computedDocument after load event');\n }\n}\n","export class TuiDocumentSelectionException extends Error {\n constructor() {\n super('Failed to get document selection');\n }\n}\n","export class InvalidDayException extends Error {\n constructor(day: number) {\n super(`Invalid day: ${day}`);\n }\n}\n","export class InvalidMonthException extends Error {\n constructor(month: number) {\n super(`Invalid month: ${month}`);\n }\n}\n","export class InvalidYearException extends Error {\n constructor(year: number) {\n super(`Invalid year: ${year}`);\n }\n}\n","export class TuiNoHostException extends Error {\n constructor() {\n super('Portals cannot be used without TuiPortalHostComponent');\n }\n}\n","export class TuiOwnerDocumentException extends Error {\n constructor() {\n super('Element does not have ownerDocument');\n }\n}\n","export class TuiPureException extends Error {\n constructor() {\n super('tuiPure can only be used with functions or getters');\n }\n}\n","export class TuiTableSortKeyException extends Error {\n constructor() {\n super('Trying to sort with no key');\n }\n}\n","export class TuiTsParserException extends Error {\n constructor() {\n super('TsFileParser: 1 component/module per ts-file');\n }\n}\n","export class TuiValueChangesException extends Error {\n constructor() {\n super('Control does not have valueChanges');\n }\n}\n","export class TuiValuePresentException extends Error {\n constructor() {\n super('Value must present');\n }\n}\n","export class TuiXmlParsingException extends Error {\n constructor() {\n super('Error parsing XML string');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;IAAkD,gDAAK;IACnD;eACI,kBAAM,4CAA4C,CAAC;KACtD;IACL,mCAAC;AAAD,CAJA,CAAkD,KAAK;;;ICAJ,iDAAK;IACpD;eACI,kBAAM,kCAAkC,CAAC;KAC5C;IACL,oCAAC;AAAD,CAJA,CAAmD,KAAK;;;ICAf,uCAAK;IAC1C,6BAAY,GAAW;eACnB,kBAAM,kBAAgB,GAAK,CAAC;KAC/B;IACL,0BAAC;AAAD,CAJA,CAAyC,KAAK;;;ICAH,yCAAK;IAC5C,+BAAY,KAAa;eACrB,kBAAM,oBAAkB,KAAO,CAAC;KACnC;IACL,4BAAC;AAAD,CAJA,CAA2C,KAAK;;;ICAN,wCAAK;IAC3C,8BAAY,IAAY;eACpB,kBAAM,mBAAiB,IAAM,CAAC;KACjC;IACL,2BAAC;AAAD,CAJA,CAA0C,KAAK;;;ICAP,sCAAK;IACzC;eACI,kBAAM,uDAAuD,CAAC;KACjE;IACL,yBAAC;AAAD,CAJA,CAAwC,KAAK;;;ICAE,6CAAK;IAChD;eACI,kBAAM,qCAAqC,CAAC;KAC/C;IACL,gCAAC;AAAD,CAJA,CAA+C,KAAK;;;ICAd,oCAAK;IACvC;eACI,kBAAM,oDAAoD,CAAC;KAC9D;IACL,uBAAC;AAAD,CAJA,CAAsC,KAAK;;;ICAG,4CAAK;IAC/C;eACI,kBAAM,4BAA4B,CAAC;KACtC;IACL,+BAAC;AAAD,CAJA,CAA8C,KAAK;;;ICAT,wCAAK;IAC3C;eACI,kBAAM,8CAA8C,CAAC;KACxD;IACL,2BAAC;AAAD,CAJA,CAA0C,KAAK;;;ICAD,4CAAK;IAC/C;eACI,kBAAM,oCAAoC,CAAC;KAC9C;IACL,+BAAC;AAAD,CAJA,CAA8C,KAAK;;;ICAL,4CAAK;IAC/C;eACI,kBAAM,oBAAoB,CAAC;KAC9B;IACL,+BAAC;AAAD,CAJA,CAA8C,KAAK;;;ICAP,0CAAK;IAC7C;eACI,kBAAM,0BAA0B,CAAC;KACpC;IACL,6BAAC;AAAD,CAJA,CAA4C,KAAK;;ACAjD;;;;;;"}
@@ -1,3 +1,4 @@
1
+ import { TuiOwnerDocumentException, TuiValuePresentException, TuiValueChangesException } from '@taiga-ui/cdk/exceptions';
1
2
  import { isPresent, getOriginalArrayFromQueryList } from '@taiga-ui/cdk/utils/miscellaneous';
2
3
  import { fromEvent, merge, concat, pipe, timer, Observable } from 'rxjs';
3
4
  import { take, map, endWith, takeWhile, repeat, switchMapTo, mapTo, startWith, distinctUntilChanged, shareReplay, filter, ignoreElements, withLatestFrom, tap } from 'rxjs/operators';
@@ -32,7 +33,7 @@ var TuiDragState = /** @class */ (function () {
32
33
  function dragAndDropFrom(element) {
33
34
  var ownerDocument = element.ownerDocument;
34
35
  if (!ownerDocument) {
35
- throw new Error('element does not have ownerDocument');
36
+ throw new TuiOwnerDocumentException();
36
37
  }
37
38
  return concat(typedFromEvent(element, 'mousedown').pipe(take(1), map(function (event) { return new TuiDragState(0 /* Start */, event); })), merge(typedFromEvent(ownerDocument, 'mousemove').pipe(map(function (event) { return new TuiDragState(1 /* Continues */, event); })), mouseDragFinishFrom(ownerDocument).pipe(take(1), map(function (event) { return new TuiDragState(2 /* End */, event); }), endWith(null))).pipe(takeWhile(isPresent))).pipe(repeat());
38
39
  }
@@ -51,7 +52,7 @@ function focusVisibleObservable(element) {
51
52
  var elementBlur$ = typedFromEvent(element, 'blur');
52
53
  var ownerDocument = element.ownerDocument;
53
54
  if (!ownerDocument) {
54
- throw new Error('element does not have ownerDocument');
55
+ throw new TuiOwnerDocumentException();
55
56
  }
56
57
  if (!documentMouseDownIsAlive$ || !documentMouseUpIsAlive$) {
57
58
  documentMouseUpIsAlive$ = typedFromEvent(ownerDocument, 'mouseup', {
@@ -80,7 +81,7 @@ function itemsQueryListObservable(queryList) {
80
81
  function mustBePresent() {
81
82
  return map(function (value) {
82
83
  if (!isPresent(value)) {
83
- throw new Error('Value must present');
84
+ throw new TuiValuePresentException();
84
85
  }
85
86
  return value;
86
87
  });
@@ -90,7 +91,7 @@ function pressedObservable(element, _a) {
90
91
  var onlyTrusted = (_a === void 0 ? { onlyTrusted: true } : _a).onlyTrusted;
91
92
  var ownerDocument = element.ownerDocument;
92
93
  if (!ownerDocument) {
93
- throw new Error('element does not have ownerDocument');
94
+ throw new TuiOwnerDocumentException();
94
95
  }
95
96
  return typedFromEvent(element, 'mousedown').pipe(filter(function (_a) {
96
97
  var isTrusted = _a.isTrusted;
@@ -111,7 +112,7 @@ function preventDefault() {
111
112
  function tuiReplayedValueChangesFrom(control) {
112
113
  return new Observable(function (subscriber) {
113
114
  if (!control.valueChanges) {
114
- throw new Error('Control does not have valueChanges');
115
+ throw new TuiValueChangesException();
115
116
  }
116
117
  control.valueChanges.pipe(startWith(control.value)).subscribe(subscriber);
117
118
  });