@taiga-ui/core 3.20.0 → 3.21.0-dev.main-92c5f00

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 (61) hide show
  1. package/abstract/abstract-textfield-host.d.ts +1 -0
  2. package/bundles/taiga-ui-core-abstract.umd.js +7 -0
  3. package/bundles/taiga-ui-core-abstract.umd.js.map +1 -1
  4. package/bundles/taiga-ui-core-components-dialog.umd.js +5 -4
  5. package/bundles/taiga-ui-core-components-dialog.umd.js.map +1 -1
  6. package/bundles/taiga-ui-core-components-hosted-dropdown.umd.js +17 -9
  7. package/bundles/taiga-ui-core-components-hosted-dropdown.umd.js.map +1 -1
  8. package/bundles/taiga-ui-core-components-primitive-spin-button.umd.js +4 -23
  9. package/bundles/taiga-ui-core-components-primitive-spin-button.umd.js.map +1 -1
  10. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +11 -5
  11. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  12. package/bundles/taiga-ui-core-components-root.umd.js +1 -1
  13. package/bundles/taiga-ui-core-directives-dropdown.umd.js +3 -0
  14. package/bundles/taiga-ui-core-directives-dropdown.umd.js.map +1 -1
  15. package/bundles/taiga-ui-core-tokens.umd.js +5 -0
  16. package/bundles/taiga-ui-core-tokens.umd.js.map +1 -1
  17. package/bundles/taiga-ui-core-utils-format.umd.js +20 -9
  18. package/bundles/taiga-ui-core-utils-format.umd.js.map +1 -1
  19. package/bundles/taiga-ui-core-utils-mask.umd.js +1 -1
  20. package/bundles/taiga-ui-core-utils-mask.umd.js.map +1 -1
  21. package/bundles/taiga-ui-core-utils-miscellaneous.umd.js +1 -1
  22. package/bundles/taiga-ui-core-utils-miscellaneous.umd.js.map +1 -1
  23. package/components/primitive-spin-button/primitive-spin-button.module.d.ts +1 -1
  24. package/components/primitive-textfield/textfield/textfield.component.d.ts +1 -0
  25. package/esm2015/abstract/abstract-textfield-host.js +4 -1
  26. package/esm2015/components/dialog/dialog.component.js +8 -7
  27. package/esm2015/components/hosted-dropdown/hosted-dropdown.component.js +14 -6
  28. package/esm2015/components/primitive-spin-button/primitive-spin-button.component.js +2 -2
  29. package/esm2015/components/primitive-spin-button/primitive-spin-button.module.js +5 -24
  30. package/esm2015/components/primitive-textfield/textfield/textfield.component.js +9 -7
  31. package/esm2015/components/root/root.component.js +1 -1
  32. package/esm2015/directives/dropdown/dropdown.component.js +4 -1
  33. package/esm2015/interfaces/textfield-host.js +1 -1
  34. package/esm2015/tokens/number-format.js +5 -1
  35. package/esm2015/utils/format/format-phone.js +4 -4
  36. package/esm2015/utils/mask/create-number-mask.js +2 -2
  37. package/esm2015/utils/miscellaneous/icons-path-factory.js +2 -2
  38. package/fesm2015/taiga-ui-core-abstract.js +3 -0
  39. package/fesm2015/taiga-ui-core-abstract.js.map +1 -1
  40. package/fesm2015/taiga-ui-core-components-dialog.js +6 -5
  41. package/fesm2015/taiga-ui-core-components-dialog.js.map +1 -1
  42. package/fesm2015/taiga-ui-core-components-hosted-dropdown.js +13 -5
  43. package/fesm2015/taiga-ui-core-components-hosted-dropdown.js.map +1 -1
  44. package/fesm2015/taiga-ui-core-components-primitive-spin-button.js +5 -24
  45. package/fesm2015/taiga-ui-core-components-primitive-spin-button.js.map +1 -1
  46. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +7 -5
  47. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  48. package/fesm2015/taiga-ui-core-components-root.js +1 -1
  49. package/fesm2015/taiga-ui-core-directives-dropdown.js +3 -0
  50. package/fesm2015/taiga-ui-core-directives-dropdown.js.map +1 -1
  51. package/fesm2015/taiga-ui-core-tokens.js +5 -1
  52. package/fesm2015/taiga-ui-core-tokens.js.map +1 -1
  53. package/fesm2015/taiga-ui-core-utils-format.js +3 -3
  54. package/fesm2015/taiga-ui-core-utils-format.js.map +1 -1
  55. package/fesm2015/taiga-ui-core-utils-mask.js +1 -1
  56. package/fesm2015/taiga-ui-core-utils-mask.js.map +1 -1
  57. package/fesm2015/taiga-ui-core-utils-miscellaneous.js +1 -1
  58. package/fesm2015/taiga-ui-core-utils-miscellaneous.js.map +1 -1
  59. package/interfaces/textfield-host.d.ts +1 -0
  60. package/package.json +4 -4
  61. package/tokens/number-format.d.ts +2 -1
@@ -25,7 +25,7 @@ export function tuiCreateNumberMask({ allowDecimal = false, decimalSymbol = `,`,
25
25
  rawValue = previousConformedValue;
26
26
  }
27
27
  }
28
- const isNegative = (rawValue[0] === CHAR_HYPHEN || rawValue[0] === CHAR_EN_DASH) &&
28
+ const isNegative = ((rawValue === null || rawValue === void 0 ? void 0 : rawValue.startsWith(CHAR_HYPHEN)) || (rawValue === null || rawValue === void 0 ? void 0 : rawValue.startsWith(CHAR_EN_DASH))) &&
29
29
  allowNegative;
30
30
  if (isDecimalSymbol(rawValue, decimalSymbol, autoCorrectDecimalSymbol) &&
31
31
  allowDecimal) {
@@ -118,4 +118,4 @@ function addThousandsSeparator(strNumber, thousandSymbol) {
118
118
  strNumber.replace(/\B(?=(\d{3})+(?!\d))/g, thousandSymbol)
119
119
  : strNumber;
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW51bWJlci1tYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS91dGlscy9tYXNrL2NyZWF0ZS1udW1iZXItbWFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUNILGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHFCQUFxQixHQUN4QixNQUFNLDBCQUEwQixDQUFDO0FBR2xDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRWxFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUUvQjs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUNoQyxZQUFZLEdBQUcsS0FBSyxFQUNwQixhQUFhLEdBQUcsR0FBRyxFQUNuQixjQUFjLEdBQUcsbUJBQW1CLEVBQ3BDLHdCQUF3QixHQUFHLElBQUksRUFDL0IsWUFBWSxHQUFHLENBQUMsRUFDaEIsY0FBYyxHQUFHLEtBQUssRUFDdEIsYUFBYSxHQUFHLEtBQUssRUFDckIsWUFBWSxHQUFHLENBQUMsTUFDTSxFQUFFO0lBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXBDLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUMsc0JBQXNCLEVBQUMs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Z0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsY0FBc0I7SUFDcEUsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdkIsQ0FBQyxDQUFDLCtGQUErRjtZQUMvRixtREFBbUQ7WUFDbkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUM7UUFDNUQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDSEFSX0VOX0RBU0gsIENIQVJfSFlQSEVOLCBDSEFSX05PX0JSRUFLX1NQQUNFLCB0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBNQVNLX0NBUkVUX1RSQVAsXG4gICAgVFVJX0RJR0lUX1JFR0VYUCxcbiAgICBUVUlfTEVBRElOR19aRVJPRVNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpTnVtYmVyTWFza09wdGlvbnMsIFR1aVRleHRNYXNrTGlzdEhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL21hc2snO1xuaW1wb3J0IHtUdWlEZWNpbWFsU3ltYm9sfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge3R1aU90aGVyRGVjaW1hbFN5bWJvbH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZm9ybWF0JztcblxuY29uc3QgTk9OX1pFUk9fRElHSVQgPSAvWzEtOV0vO1xuXG4vKipcbiAqIEFkYXB0YXRpb24gZm9yIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vdGV4dC1tYXNrL3RleHQtbWFzay90cmVlL21hc3Rlci9hZGRvbnMjY3JlYXRlbnVtYmVybWFzayBgY3JlYXRlTnVtYmVyTWFza2B9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0dWlDcmVhdGVOdW1iZXJNYXNrKHtcbiAgICBhbGxvd0RlY2ltYWwgPSBmYWxzZSxcbiAgICBkZWNpbWFsU3ltYm9sID0gYCxgLFxuICAgIHRob3VzYW5kU3ltYm9sID0gQ0hBUl9OT19CUkVBS19TUEFDRSxcbiAgICBhdXRvQ29ycmVjdERlY2ltYWxTeW1ib2wgPSB0cnVlLFxuICAgIGRlY2ltYWxMaW1pdCA9IDIsXG4gICAgcmVxdWlyZURlY2ltYWwgPSBmYWxzZSxcbiAgICBhbGxvd05lZ2F0aXZlID0gZmFsc2UsXG4gICAgaW50ZWdlckxpbWl0ID0gMCxcbn06IFR1aU51bWJlck1hc2tPcHRpb25zID0ge30pOiBUdWlUZXh0TWFza0xpc3RIYW5kbGVyIHtcbiAgICB0dWlBc3NlcnQuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZGVjaW1hbExpbWl0KSk7XG4gICAgdHVpQXNzZXJ0LmFzc2VydChkZWNpbWFsTGltaXQgPj0gMCk7XG4gICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGludGVnZXJMaW1pdCkpO1xuICAgIHR1aUFzc2VydC5hc3NlcnQoaW50ZWdlckxpbWl0ID49IDApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzXG4gICAgcmV0dXJuIChyYXdWYWx1ZSwge3ByZXZpb3VzQ29uZm9ybWVkVmFsdWV9KSA9PiB7XG4gICAgICAgIGlmIChwcmV2aW91c0NvbmZvcm1lZFZhbHVlICYmIHJlcXVpcmVEZWNpbWFsKSB7XG4gICAgICAgICAgICBjb25zdCBjb25mb3JtZWRXaXRob3V0U2VwYXJhdG9yID0gcmF3VmFsdWUuc3BsaXQodGhvdXNhbmRTeW1ib2wpLmpvaW4oYGApO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb25mb3JtZWRWYWx1ZVdpdGhvdXREZWNpbWFsU3ltYm9sQW5kU2VwYXJhdG9yID1cbiAgICAgICAgICAgICAgICBwcmV2aW91c0NvbmZvcm1lZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCh0aG91c2FuZFN5bWJvbClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oYGApXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdChkZWNpbWFsU3ltYm9sKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihgYCk7XG5cbiAgICAgICAgICAgIC8vIEZvcmJpZCByZW1vdmFsIG9mIGRlY2ltYWwgc2VwYXJhdG9yIGlmIGRlY2ltYWwgcGFydCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbmZvcm1lZFdpdGhvdXRTZXBhcmF0b3IgPT09XG4gICAgICAgICAgICAgICAgcHJldmlvdXNDb25mb3JtZWRWYWx1ZVdpdGhvdXREZWNpbWFsU3ltYm9sQW5kU2VwYXJhdG9yXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByYXdWYWx1ZSA9IHByZXZpb3VzQ29uZm9ybWVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lZ2F0aXZlID1cbiAgICAgICAgICAgIChyYXdWYWx1ZVswXSA9PT0gQ0hBUl9IWVBIRU4gfHwgcmF3VmFsdWVbMF0gPT09IENIQVJfRU5fREFTSCkgJiZcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXNEZWNpbWFsU3ltYm9sKHJhd1ZhbHVlLCBkZWNpbWFsU3ltYm9sLCBhdXRvQ29ycmVjdERlY2ltYWxTeW1ib2wpICYmXG4gICAgICAgICAgICBhbGxvd0RlY2ltYWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gW2AwYCwgZGVjaW1hbFN5bWJvbCwgVFVJX0RJR0lUX1JFR0VYUF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgICAgICAgcmF3VmFsdWUgPSByYXdWYWx1ZS5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2ltYWxJbmRleCA9IGdldERlY2ltYWxTeW1ib2xJbmRleChcbiAgICAgICAgICAgIHJhd1ZhbHVlLFxuICAgICAgICAgICAgZGVjaW1hbFN5bWJvbCxcbiAgICAgICAgICAgIGF1dG9Db3JyZWN0RGVjaW1hbFN5bWJvbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbCA9IGRlY2ltYWxJbmRleCAhPT0gLTE7XG4gICAgICAgIGNvbnN0IGludGVnZXIgPSBoYXNEZWNpbWFsID8gcmF3VmFsdWUuc2xpY2UoMCwgZGVjaW1hbEluZGV4KSA6IHJhd1ZhbHVlO1xuICAgICAgICBjb25zdCB0aG91c2FuZFNlcGFyYXRvcnMgPSBpbnRlZ2VyLm1hdGNoKG5ldyBSZWdFeHAodGhvdXNhbmRTeW1ib2wsIGBnYCkpIHx8IFtdO1xuICAgICAgICBjb25zdCBpbnRlZ2VyQ2FwcGVkID0gaW50ZWdlckxpbWl0XG4gICAgICAgICAgICA/IGludGVnZXIuc2xpY2UoMCwgaW50ZWdlckxpbWl0ICsgdGhvdXNhbmRTZXBhcmF0b3JzLmxlbmd0aClcbiAgICAgICAgICAgIDogaW50ZWdlcjtcbiAgICAgICAgY29uc3QgaW50ZWdlckNhcHBlZENsZWFuID0gaW50ZWdlckNhcHBlZC5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgYGApO1xuICAgICAgICBjb25zdCBbbGVhZGluZ1plcm9zTWF0Y2hdID0gaW50ZWdlckNhcHBlZENsZWFuLm1hdGNoKFxuICAgICAgICAgICAgVFVJX0xFQURJTkdfWkVST0VTX1JFR0VYUCxcbiAgICAgICAgKSB8fCBbYGBdO1xuICAgICAgICBjb25zdCBsZWFkaW5nWmVyb3NBbW91bnQgPSBsZWFkaW5nWmVyb3NNYXRjaC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGludGVnZXJDYXBwZWRaZXJvc0NsZWFuID0gaW50ZWdlckNhcHBlZENsZWFuXG4gICAgICAgICAgICAucmVwbGFjZSgvXjArKD8hXFwufCQpLywgYGApXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgICAgICBjb25zdCB3aXRoU2VwYXJhdG9yID0gYWRkVGhvdXNhbmRzU2VwYXJhdG9yKFxuICAgICAgICAgICAgaW50ZWdlckNhcHBlZFplcm9zQ2xlYW4sXG4gICAgICAgICAgICB0aG91c2FuZFN5bWJvbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbWFzayA9IGNvbnZlcnRUb01hc2sod2l0aFNlcGFyYXRvcik7XG5cbiAgICAgICAgaWYgKChoYXNEZWNpbWFsICYmIGFsbG93RGVjaW1hbCkgfHwgcmVxdWlyZURlY2ltYWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyYWN0aW9uID0gaGFzRGVjaW1hbFxuICAgICAgICAgICAgICAgID8gY29udmVydFRvTWFzayhcbiAgICAgICAgICAgICAgICAgICAgICByYXdWYWx1ZS5zbGljZShkZWNpbWFsSW5kZXggKyAxKS5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgYGApLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBjb25zdCBmcmFjdGlvbkNhcHBlZCA9IGRlY2ltYWxMaW1pdFxuICAgICAgICAgICAgICAgID8gZnJhY3Rpb24uc2xpY2UoMCwgZGVjaW1hbExpbWl0KVxuICAgICAgICAgICAgICAgIDogZnJhY3Rpb247XG5cbiAgICAgICAgICAgIGlmIChyYXdWYWx1ZVtkZWNpbWFsSW5kZXhdICE9PSB0dWlPdGhlckRlY2ltYWxTeW1ib2woZGVjaW1hbFN5bWJvbCkpIHtcbiAgICAgICAgICAgICAgICBtYXNrLnB1c2goTUFTS19DQVJFVF9UUkFQKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFzay5wdXNoKGRlY2ltYWxTeW1ib2wsIE1BU0tfQ0FSRVRfVFJBUCwgLi4uZnJhY3Rpb25DYXBwZWQpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY2ltYWxMaW1pdCAtIGZyYWN0aW9uQ2FwcGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbWFzay5wdXNoKFRVSV9ESUdJVF9SRUdFWFApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNPbmx5WmVyb0RpZ2l0ID0gbWFzay5sZW5ndGggPT09IDEgJiYgaW50ZWdlckNhcHBlZFplcm9zQ2xlYW4gPT09IGAwYDtcblxuICAgICAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgICAgICAgaWYgKG1hc2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbWFzay5wdXNoKFRVSV9ESUdJVF9SRUdFWFApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXNrLnVuc2hpZnQoQ0hBUl9IWVBIRU4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZXZlbnRMZWFkaW5nWmVyb2VzKG1hc2ssIGlzT25seVplcm9EaWdpdCwgbGVhZGluZ1plcm9zQW1vdW50KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBwcmV2ZW50TGVhZGluZ1plcm9lcyhcbiAgICBtYXNrOiBBcnJheTxSZWdFeHAgfCBzdHJpbmc+LFxuICAgIGlzT25seVplcm9EaWdpdDogYm9vbGVhbiA9IGZhbHNlLFxuICAgIGxlYWRpbmdaZXJvc0Ftb3VudDogbnVtYmVyID0gMCxcbik6IEFycmF5PFJlZ0V4cCB8IHN0cmluZz4ge1xuICAgIGlmIChpc09ubHlaZXJvRGlnaXQgfHwgbGVhZGluZ1plcm9zQW1vdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBtYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0RGlnaXRJbmRleCA9IG1hc2suaW5kZXhPZihUVUlfRElHSVRfUkVHRVhQKTtcblxuICAgIGlmIChmaXJzdERpZ2l0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBtYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY29uZE1hc2tEaWdpdCA9IG1hc2tbZmlyc3REaWdpdEluZGV4ICsgMV07XG4gICAgY29uc3QgaXNDYXJldFRyYXAgPSBzZWNvbmRNYXNrRGlnaXQgPT09IE1BU0tfQ0FSRVRfVFJBUDtcblxuICAgIGlmIChpc0NhcmV0VHJhcCAmJiBsZWFkaW5nWmVyb3NBbW91bnQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FyZXRUcmFwKSB7XG4gICAgICAgIG1hc2sudW5zaGlmdChOT05fWkVST19ESUdJVCk7XG5cbiAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgfVxuXG4gICAgbWFza1tmaXJzdERpZ2l0SW5kZXhdID0gTk9OX1pFUk9fRElHSVQ7XG5cbiAgICByZXR1cm4gbWFzaztcbn1cblxuZnVuY3Rpb24gZ2V0RGVjaW1hbFN5bWJvbEluZGV4KFxuICAgIHN0cjogc3RyaW5nLFxuICAgIGRlY2ltYWxTeW1ib2w6IFR1aURlY2ltYWxTeW1ib2wsXG4gICAgYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sOiBib29sZWFuLFxuKTogbnVtYmVyIHtcbiAgICBpZiAoIWF1dG9Db3JyZWN0RGVjaW1hbFN5bWJvbCkge1xuICAgICAgICByZXR1cm4gc3RyLmxhc3RJbmRleE9mKGRlY2ltYWxTeW1ib2wpO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgc3RyLmxhc3RJbmRleE9mKGRlY2ltYWxTeW1ib2wpLFxuICAgICAgICBzdHIubGFzdEluZGV4T2YodHVpT3RoZXJEZWNpbWFsU3ltYm9sKGRlY2ltYWxTeW1ib2wpKSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBpc0RlY2ltYWxTeW1ib2woXG4gICAgc3RyOiBzdHJpbmcsXG4gICAgZGVjaW1hbFN5bWJvbDogVHVpRGVjaW1hbFN5bWJvbCxcbiAgICBhdXRvQ29ycmVjdERlY2ltYWxTeW1ib2w6IGJvb2xlYW4sXG4pOiBib29sZWFuIHtcbiAgICBpZiAoYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sKSB7XG4gICAgICAgIHJldHVybiAvXlssLl0kLy50ZXN0KHN0cik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ciA9PT0gZGVjaW1hbFN5bWJvbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRvTWFzayhzdHJOdW1iZXI6IHN0cmluZyk6IEFycmF5PFJlZ0V4cCB8IHN0cmluZz4ge1xuICAgIHJldHVybiBzdHJOdW1iZXJcbiAgICAgICAgLnNwbGl0KGBgKVxuICAgICAgICAubWFwKGNoYXIgPT4gKFRVSV9ESUdJVF9SRUdFWFAudGVzdChjaGFyKSA/IFRVSV9ESUdJVF9SRUdFWFAgOiBjaGFyKSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRob3VzYW5kc1NlcGFyYXRvcihzdHJOdW1iZXI6IHN0cmluZywgdGhvdXNhbmRTeW1ib2w6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ck51bWJlci5sZW5ndGggPiAzXG4gICAgICAgID8gLy8gVE9ETzogaW52ZXN0aWdhdGUgdG8gZGlzYWxsb3cgcG90ZW50aWFsbHkgY2F0YXN0cm9waGljIGV4cG9uZW50aWFsLXRpbWUgcmVndWxhciBleHByZXNzaW9ucy5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11bnNhZmUtcmVnZXhcbiAgICAgICAgICBzdHJOdW1iZXIucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgdGhvdXNhbmRTeW1ib2wpXG4gICAgICAgIDogc3RyTnVtYmVyO1xufVxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW51bWJlci1tYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS91dGlscy9tYXNrL2NyZWF0ZS1udW1iZXItbWFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUNILGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHFCQUFxQixHQUN4QixNQUFNLDBCQUEwQixDQUFDO0FBR2xDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRWxFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUUvQjs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUNoQyxZQUFZLEdBQUcsS0FBSyxFQUNwQixhQUFhLEdBQUcsR0FBRyxFQUNuQixjQUFjLEdBQUcsbUJBQW1CLEVBQ3BDLHdCQUF3QixHQUFHLElBQUksRUFDL0IsWUFBWSxHQUFHLENBQUMsRUFDaEIsY0FBYyxHQUFHLEtBQUssRUFDdEIsYUFBYSxHQUFHLEtBQUssRUFDckIsWUFBWSxHQUFHLENBQUMsTUFDTSxFQUFFO0lBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXBDLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUMsc0JBQXNCLEVBQUMs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QUUsQ0FBQztTQUNULEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGNBQXNCO0lBQ3BFLE9BQU8sU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQywrRkFBK0Y7WUFDL0YsbURBQW1EO1lBQ25ELFNBQVMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsY0FBYyxDQUFDO1FBQzVELENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q0hBUl9FTl9EQVNILCBDSEFSX0hZUEhFTiwgQ0hBUl9OT19CUkVBS19TUEFDRSwgdHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgTUFTS19DQVJFVF9UUkFQLFxuICAgIFRVSV9ESUdJVF9SRUdFWFAsXG4gICAgVFVJX0xFQURJTkdfWkVST0VTX1JFR0VYUCxcbiAgICBUVUlfTk9OX0RJR0lUU19SRUdFWFAsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aU51bWJlck1hc2tPcHRpb25zLCBUdWlUZXh0TWFza0xpc3RIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9tYXNrJztcbmltcG9ydCB7VHVpRGVjaW1hbFN5bWJvbH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHt0dWlPdGhlckRlY2ltYWxTeW1ib2x9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL2Zvcm1hdCc7XG5cbmNvbnN0IE5PTl9aRVJPX0RJR0lUID0gL1sxLTldLztcblxuLyoqXG4gKiBBZGFwdGF0aW9uIGZvciB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3RleHQtbWFzay90ZXh0LW1hc2svdHJlZS9tYXN0ZXIvYWRkb25zI2NyZWF0ZW51bWJlcm1hc2sgYGNyZWF0ZU51bWJlck1hc2tgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHVpQ3JlYXRlTnVtYmVyTWFzayh7XG4gICAgYWxsb3dEZWNpbWFsID0gZmFsc2UsXG4gICAgZGVjaW1hbFN5bWJvbCA9IGAsYCxcbiAgICB0aG91c2FuZFN5bWJvbCA9IENIQVJfTk9fQlJFQUtfU1BBQ0UsXG4gICAgYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sID0gdHJ1ZSxcbiAgICBkZWNpbWFsTGltaXQgPSAyLFxuICAgIHJlcXVpcmVEZWNpbWFsID0gZmFsc2UsXG4gICAgYWxsb3dOZWdhdGl2ZSA9IGZhbHNlLFxuICAgIGludGVnZXJMaW1pdCA9IDAsXG59OiBUdWlOdW1iZXJNYXNrT3B0aW9ucyA9IHt9KTogVHVpVGV4dE1hc2tMaXN0SGFuZGxlciB7XG4gICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGRlY2ltYWxMaW1pdCkpO1xuICAgIHR1aUFzc2VydC5hc3NlcnQoZGVjaW1hbExpbWl0ID49IDApO1xuICAgIHR1aUFzc2VydC5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihpbnRlZ2VyTGltaXQpKTtcbiAgICB0dWlBc3NlcnQuYXNzZXJ0KGludGVnZXJMaW1pdCA+PSAwKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50c1xuICAgIHJldHVybiAocmF3VmFsdWUsIHtwcmV2aW91c0NvbmZvcm1lZFZhbHVlfSkgPT4ge1xuICAgICAgICBpZiAocHJldmlvdXNDb25mb3JtZWRWYWx1ZSAmJiByZXF1aXJlRGVjaW1hbCkge1xuICAgICAgICAgICAgY29uc3QgY29uZm9ybWVkV2l0aG91dFNlcGFyYXRvciA9IHJhd1ZhbHVlLnNwbGl0KHRob3VzYW5kU3ltYm9sKS5qb2luKGBgKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29uZm9ybWVkVmFsdWVXaXRob3V0RGVjaW1hbFN5bWJvbEFuZFNlcGFyYXRvciA9XG4gICAgICAgICAgICAgICAgcHJldmlvdXNDb25mb3JtZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQodGhvdXNhbmRTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKGBgKVxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoZGVjaW1hbFN5bWJvbClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oYGApO1xuXG4gICAgICAgICAgICAvLyBGb3JiaWQgcmVtb3ZhbCBvZiBkZWNpbWFsIHNlcGFyYXRvciBpZiBkZWNpbWFsIHBhcnQgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjb25mb3JtZWRXaXRob3V0U2VwYXJhdG9yID09PVxuICAgICAgICAgICAgICAgIHByZXZpb3VzQ29uZm9ybWVkVmFsdWVXaXRob3V0RGVjaW1hbFN5bWJvbEFuZFNlcGFyYXRvclxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmF3VmFsdWUgPSBwcmV2aW91c0NvbmZvcm1lZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNOZWdhdGl2ZSA9XG4gICAgICAgICAgICAocmF3VmFsdWU/LnN0YXJ0c1dpdGgoQ0hBUl9IWVBIRU4pIHx8IHJhd1ZhbHVlPy5zdGFydHNXaXRoKENIQVJfRU5fREFTSCkpICYmXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzRGVjaW1hbFN5bWJvbChyYXdWYWx1ZSwgZGVjaW1hbFN5bWJvbCwgYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sKSAmJlxuICAgICAgICAgICAgYWxsb3dEZWNpbWFsXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFtgMGAsIGRlY2ltYWxTeW1ib2wsIFRVSV9ESUdJVF9SRUdFWFBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIHJhd1ZhbHVlID0gcmF3VmFsdWUuc2xpY2UoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNpbWFsSW5kZXggPSBnZXREZWNpbWFsU3ltYm9sSW5kZXgoXG4gICAgICAgICAgICByYXdWYWx1ZSxcbiAgICAgICAgICAgIGRlY2ltYWxTeW1ib2wsXG4gICAgICAgICAgICBhdXRvQ29ycmVjdERlY2ltYWxTeW1ib2wsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWwgPSBkZWNpbWFsSW5kZXggIT09IC0xO1xuICAgICAgICBjb25zdCBpbnRlZ2VyID0gaGFzRGVjaW1hbCA/IHJhd1ZhbHVlLnNsaWNlKDAsIGRlY2ltYWxJbmRleCkgOiByYXdWYWx1ZTtcbiAgICAgICAgY29uc3QgdGhvdXNhbmRTZXBhcmF0b3JzID0gaW50ZWdlci5tYXRjaChuZXcgUmVnRXhwKHRob3VzYW5kU3ltYm9sLCBgZ2ApKSB8fCBbXTtcbiAgICAgICAgY29uc3QgaW50ZWdlckNhcHBlZCA9IGludGVnZXJMaW1pdFxuICAgICAgICAgICAgPyBpbnRlZ2VyLnNsaWNlKDAsIGludGVnZXJMaW1pdCArIHRob3VzYW5kU2VwYXJhdG9ycy5sZW5ndGgpXG4gICAgICAgICAgICA6IGludGVnZXI7XG4gICAgICAgIGNvbnN0IGludGVnZXJDYXBwZWRDbGVhbiA9IGludGVnZXJDYXBwZWQucmVwbGFjZShUVUlfTk9OX0RJR0lUU19SRUdFWFAsIGBgKTtcbiAgICAgICAgY29uc3QgW2xlYWRpbmdaZXJvc01hdGNoXSA9IGludGVnZXJDYXBwZWRDbGVhbi5tYXRjaChcbiAgICAgICAgICAgIFRVSV9MRUFESU5HX1pFUk9FU19SRUdFWFAsXG4gICAgICAgICkgfHwgW2BgXTtcbiAgICAgICAgY29uc3QgbGVhZGluZ1plcm9zQW1vdW50ID0gbGVhZGluZ1plcm9zTWF0Y2gubGVuZ3RoO1xuICAgICAgICBjb25zdCBpbnRlZ2VyQ2FwcGVkWmVyb3NDbGVhbiA9IGludGVnZXJDYXBwZWRDbGVhblxuICAgICAgICAgICAgLnJlcGxhY2UoL14wKyg/IVxcLnwkKS8sIGBgKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICAgICAgY29uc3Qgd2l0aFNlcGFyYXRvciA9IGFkZFRob3VzYW5kc1NlcGFyYXRvcihcbiAgICAgICAgICAgIGludGVnZXJDYXBwZWRaZXJvc0NsZWFuLFxuICAgICAgICAgICAgdGhvdXNhbmRTeW1ib2wsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG1hc2sgPSBjb252ZXJ0VG9NYXNrKHdpdGhTZXBhcmF0b3IpO1xuXG4gICAgICAgIGlmICgoaGFzRGVjaW1hbCAmJiBhbGxvd0RlY2ltYWwpIHx8IHJlcXVpcmVEZWNpbWFsKSB7XG4gICAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IGhhc0RlY2ltYWxcbiAgICAgICAgICAgICAgICA/IGNvbnZlcnRUb01hc2soXG4gICAgICAgICAgICAgICAgICAgICAgcmF3VmFsdWUuc2xpY2UoZGVjaW1hbEluZGV4ICsgMSkucmVwbGFjZShUVUlfTk9OX0RJR0lUU19SRUdFWFAsIGBgKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgY29uc3QgZnJhY3Rpb25DYXBwZWQgPSBkZWNpbWFsTGltaXRcbiAgICAgICAgICAgICAgICA/IGZyYWN0aW9uLnNsaWNlKDAsIGRlY2ltYWxMaW1pdClcbiAgICAgICAgICAgICAgICA6IGZyYWN0aW9uO1xuXG4gICAgICAgICAgICBpZiAocmF3VmFsdWVbZGVjaW1hbEluZGV4XSAhPT0gdHVpT3RoZXJEZWNpbWFsU3ltYm9sKGRlY2ltYWxTeW1ib2wpKSB7XG4gICAgICAgICAgICAgICAgbWFzay5wdXNoKE1BU0tfQ0FSRVRfVFJBUCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1hc2sucHVzaChkZWNpbWFsU3ltYm9sLCBNQVNLX0NBUkVUX1RSQVAsIC4uLmZyYWN0aW9uQ2FwcGVkKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNpbWFsTGltaXQgLSBmcmFjdGlvbkNhcHBlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG1hc2sucHVzaChUVUlfRElHSVRfUkVHRVhQKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzT25seVplcm9EaWdpdCA9IG1hc2subGVuZ3RoID09PSAxICYmIGludGVnZXJDYXBwZWRaZXJvc0NsZWFuID09PSBgMGA7XG5cbiAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmIChtYXNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG1hc2sucHVzaChUVUlfRElHSVRfUkVHRVhQKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFzay51bnNoaWZ0KENIQVJfSFlQSEVOKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmV2ZW50TGVhZGluZ1plcm9lcyhtYXNrLCBpc09ubHlaZXJvRGlnaXQsIGxlYWRpbmdaZXJvc0Ftb3VudCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gcHJldmVudExlYWRpbmdaZXJvZXMoXG4gICAgbWFzazogQXJyYXk8UmVnRXhwIHwgc3RyaW5nPixcbiAgICBpc09ubHlaZXJvRGlnaXQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBsZWFkaW5nWmVyb3NBbW91bnQ6IG51bWJlciA9IDAsXG4pOiBBcnJheTxSZWdFeHAgfCBzdHJpbmc+IHtcbiAgICBpZiAoaXNPbmx5WmVyb0RpZ2l0IHx8IGxlYWRpbmdaZXJvc0Ftb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbWFzaztcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdERpZ2l0SW5kZXggPSBtYXNrLmluZGV4T2YoVFVJX0RJR0lUX1JFR0VYUCk7XG5cbiAgICBpZiAoZmlyc3REaWdpdEluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gbWFzaztcbiAgICB9XG5cbiAgICBjb25zdCBzZWNvbmRNYXNrRGlnaXQgPSBtYXNrW2ZpcnN0RGlnaXRJbmRleCArIDFdO1xuICAgIGNvbnN0IGlzQ2FyZXRUcmFwID0gc2Vjb25kTWFza0RpZ2l0ID09PSBNQVNLX0NBUkVUX1RSQVA7XG5cbiAgICBpZiAoaXNDYXJldFRyYXAgJiYgbGVhZGluZ1plcm9zQW1vdW50ID09PSAxKSB7XG4gICAgICAgIHJldHVybiBtYXNrO1xuICAgIH1cblxuICAgIGlmIChpc0NhcmV0VHJhcCkge1xuICAgICAgICBtYXNrLnVuc2hpZnQoTk9OX1pFUk9fRElHSVQpO1xuXG4gICAgICAgIHJldHVybiBtYXNrO1xuICAgIH1cblxuICAgIG1hc2tbZmlyc3REaWdpdEluZGV4XSA9IE5PTl9aRVJPX0RJR0lUO1xuXG4gICAgcmV0dXJuIG1hc2s7XG59XG5cbmZ1bmN0aW9uIGdldERlY2ltYWxTeW1ib2xJbmRleChcbiAgICBzdHI6IHN0cmluZyxcbiAgICBkZWNpbWFsU3ltYm9sOiBUdWlEZWNpbWFsU3ltYm9sLFxuICAgIGF1dG9Db3JyZWN0RGVjaW1hbFN5bWJvbDogYm9vbGVhbixcbik6IG51bWJlciB7XG4gICAgaWYgKCFhdXRvQ29ycmVjdERlY2ltYWxTeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sYXN0SW5kZXhPZihkZWNpbWFsU3ltYm9sKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICAgIHN0ci5sYXN0SW5kZXhPZihkZWNpbWFsU3ltYm9sKSxcbiAgICAgICAgc3RyLmxhc3RJbmRleE9mKHR1aU90aGVyRGVjaW1hbFN5bWJvbChkZWNpbWFsU3ltYm9sKSksXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gaXNEZWNpbWFsU3ltYm9sKFxuICAgIHN0cjogc3RyaW5nLFxuICAgIGRlY2ltYWxTeW1ib2w6IFR1aURlY2ltYWxTeW1ib2wsXG4gICAgYXV0b0NvcnJlY3REZWNpbWFsU3ltYm9sOiBib29sZWFuLFxuKTogYm9vbGVhbiB7XG4gICAgaWYgKGF1dG9Db3JyZWN0RGVjaW1hbFN5bWJvbCkge1xuICAgICAgICByZXR1cm4gL15bLC5dJC8udGVzdChzdHIpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHIgPT09IGRlY2ltYWxTeW1ib2w7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb01hc2soc3RyTnVtYmVyOiBzdHJpbmcpOiBBcnJheTxSZWdFeHAgfCBzdHJpbmc+IHtcbiAgICByZXR1cm4gc3RyTnVtYmVyXG4gICAgICAgIC5zcGxpdChgYClcbiAgICAgICAgLm1hcChjaGFyID0+IChUVUlfRElHSVRfUkVHRVhQLnRlc3QoY2hhcikgPyBUVUlfRElHSVRfUkVHRVhQIDogY2hhcikpO1xufVxuXG5mdW5jdGlvbiBhZGRUaG91c2FuZHNTZXBhcmF0b3Ioc3RyTnVtYmVyOiBzdHJpbmcsIHRob3VzYW5kU3ltYm9sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHJOdW1iZXIubGVuZ3RoID4gM1xuICAgICAgICA/IC8vIFRPRE86IGludmVzdGlnYXRlIHRvIGRpc2FsbG93IHBvdGVudGlhbGx5IGNhdGFzdHJvcGhpYyBleHBvbmVudGlhbC10aW1lIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdW5zYWZlLXJlZ2V4XG4gICAgICAgICAgc3RyTnVtYmVyLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIHRob3VzYW5kU3ltYm9sKVxuICAgICAgICA6IHN0ck51bWJlcjtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_ICONS_PATH } from '@taiga-ui/core/constants';
2
2
  export function tuiIconsPathFactory(staticPath) {
3
- const base = staticPath[staticPath.length - 1] === `/` ? staticPath : `${staticPath}/`;
3
+ const base = staticPath.endsWith(`/`) ? staticPath : `${staticPath}/`;
4
4
  return name => {
5
5
  if (name.startsWith(`tuiIcon`)) {
6
6
  return `${base}${name}.svg#${name}`;
@@ -8,4 +8,4 @@ export function tuiIconsPathFactory(staticPath) {
8
8
  return DEFAULT_ICONS_PATH(name);
9
9
  };
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMtcGF0aC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS91dGlscy9taXNjZWxsYW5lb3VzL2ljb25zLXBhdGgtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDbEQsTUFBTSxJQUFJLEdBQ04sVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUM7SUFFOUUsT0FBTyxJQUFJLENBQUMsRUFBRTtRQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixPQUFPLEdBQUcsSUFBSSxHQUFHLElBQUksUUFBUSxJQUFJLEVBQUUsQ0FBQztTQUN2QztRQUVELE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHVpU3RyaW5nSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge0RFRkFVTFRfSUNPTlNfUEFUSH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUljb25zUGF0aEZhY3Rvcnkoc3RhdGljUGF0aDogc3RyaW5nKTogVHVpU3RyaW5nSGFuZGxlcjxzdHJpbmc+IHtcbiAgICBjb25zdCBiYXNlID1cbiAgICAgICAgc3RhdGljUGF0aFtzdGF0aWNQYXRoLmxlbmd0aCAtIDFdID09PSBgL2AgPyBzdGF0aWNQYXRoIDogYCR7c3RhdGljUGF0aH0vYDtcblxuICAgIHJldHVybiBuYW1lID0+IHtcbiAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aChgdHVpSWNvbmApKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7YmFzZX0ke25hbWV9LnN2ZyMke25hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBERUZBVUxUX0lDT05TX1BBVEgobmFtZSk7XG4gICAgfTtcbn1cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMtcGF0aC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS91dGlscy9taXNjZWxsYW5lb3VzL2ljb25zLXBhdGgtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDbEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDO0lBRXRFLE9BQU8sSUFBSSxDQUFDLEVBQUU7UUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxFQUFFLENBQUM7U0FDdkM7UUFFRCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R1aVN0cmluZ0hhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtERUZBVUxUX0lDT05TX1BBVEh9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlJY29uc1BhdGhGYWN0b3J5KHN0YXRpY1BhdGg6IHN0cmluZyk6IFR1aVN0cmluZ0hhbmRsZXI8c3RyaW5nPiB7XG4gICAgY29uc3QgYmFzZSA9IHN0YXRpY1BhdGguZW5kc1dpdGgoYC9gKSA/IHN0YXRpY1BhdGggOiBgJHtzdGF0aWNQYXRofS9gO1xuXG4gICAgcmV0dXJuIG5hbWUgPT4ge1xuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKGB0dWlJY29uYCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtiYXNlfSR7bmFtZX0uc3ZnIyR7bmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERFRkFVTFRfSUNPTlNfUEFUSChuYW1lKTtcbiAgICB9O1xufVxuIl19
@@ -75,6 +75,9 @@ class AbstractTuiTextfieldHost {
75
75
  get focusable() {
76
76
  return this.host.computedFocusable;
77
77
  }
78
+ get inputMode() {
79
+ return `text`;
80
+ }
78
81
  get value() {
79
82
  var _a;
80
83
  return ((_a = this.host.value) === null || _a === void 0 ? void 0 : _a.toString()) || ``;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-abstract.js","sources":["../../../projects/core/abstract/driver.ts","../../../projects/core/abstract/vehicle.ts","../../../projects/core/abstract/abstract-driver.directive.ts","../../../projects/core/abstract/abstract-textfield-host.ts","../../../projects/core/abstract/position-accessor.ts","../../../projects/core/abstract/rect-accessor.ts","../../../projects/core/abstract/taiga-ui-core-abstract.ts"],"sourcesContent":["import {ExistingProvider, Type} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiDriver extends Observable<boolean> {\n abstract readonly type: string;\n}\n\nexport function tuiAsDriver(useExisting: Type<TuiDriver>): ExistingProvider {\n return {\n provide: TuiDriver,\n multi: true,\n useExisting,\n };\n}\n","import {ExistingProvider, Type} from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiVehicle {\n abstract readonly type: string;\n abstract toggle(value: boolean): void;\n}\n\nexport function tuiAsVehicle(useExisting: Type<TuiVehicle>): ExistingProvider {\n return {\n provide: TuiVehicle,\n multi: true,\n useExisting,\n };\n}\n","import {Directive, Inject, OnInit, Self} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {distinctUntilChanged, takeUntil} from 'rxjs/operators';\n\nimport {TuiDriver} from './driver';\nimport {TuiVehicle} from './vehicle';\n\n@Directive()\nexport abstract class AbstractTuiDriverDirective implements OnInit {\n abstract type: string;\n\n constructor(\n @Self() @Inject(TuiDestroyService) private readonly destroy$: Observable<unknown>,\n @Inject(TuiDriver) private readonly drivers: TuiDriver[],\n @Inject(TuiVehicle) private readonly vehicles: TuiVehicle[],\n ) {}\n\n ngOnInit(): void {\n const vehicle = this.vehicles.find(({type}) => type === this.type);\n\n merge(...this.drivers.filter(({type}) => type === this.type))\n .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe(value => {\n vehicle?.toggle(value);\n });\n }\n}\n","import {Directive, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\n@Directive()\nexport abstract class AbstractTuiTextfieldHost<T extends AbstractTuiControl<any>>\n implements TuiTextfieldHost\n{\n constructor(@Inject(AbstractTuiControl) protected readonly host: T) {}\n\n get readOnly(): boolean {\n return this.host.readOnly;\n }\n\n get disabled(): boolean {\n return this.host.computedDisabled;\n }\n\n get invalid(): boolean {\n return this.host.computedInvalid;\n }\n\n get focusable(): boolean {\n return this.host.computedFocusable;\n }\n\n get value(): string {\n return this.host.value?.toString() || ``;\n }\n\n abstract onValueChange(value: string): void;\n\n process(_input: HTMLInputElement): void {}\n}\n","import {ExistingProvider, FactoryProvider, SkipSelf, Type} from '@angular/core';\nimport {TuiPoint} from '@taiga-ui/core/types';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiPositionAccessor {\n abstract readonly type: string;\n abstract getPosition(rect: ClientRect): TuiPoint;\n}\n\nexport function tuiPositionAccessorFor(type: string): FactoryProvider {\n return {\n provide: TuiPositionAccessor,\n deps: [[new SkipSelf(), TuiPositionAccessor]],\n useFactory: (accessors: readonly TuiPositionAccessor[]) =>\n accessors.find(accessor => accessor.type === type),\n };\n}\n\nexport function tuiAsPositionAccessor(\n useExisting: Type<TuiPositionAccessor>,\n): ExistingProvider {\n return {\n provide: TuiPositionAccessor,\n multi: true,\n useExisting,\n };\n}\n","import {ExistingProvider, FactoryProvider, SkipSelf, Type} from '@angular/core';\n\n// TODO: Rename to getBoundingClientRect to match the DOM API\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiRectAccessor {\n abstract readonly type: string;\n abstract getClientRect(): ClientRect;\n}\n\nexport function tuiRectAccessorFor(\n type: string,\n fallback: Type<TuiRectAccessor>,\n): FactoryProvider {\n return {\n provide: TuiRectAccessor,\n deps: [[new SkipSelf(), TuiRectAccessor], fallback],\n useFactory: tuiFallbackRectAccessor(type),\n };\n}\n\nexport function tuiFallbackRectAccessor(\n type: string,\n): (accessors: readonly TuiRectAccessor[], fallback: TuiRectAccessor) => TuiRectAccessor {\n return (accessors, fallback) =>\n accessors.find(accessor => accessor !== fallback && accessor.type === type) ||\n fallback;\n}\n\nexport function tuiAsRectAccessor(useExisting: Type<TuiRectAccessor>): ExistingProvider {\n return {\n provide: TuiRectAccessor,\n multi: true,\n useExisting,\n };\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-core-abstract.js","sources":["../../../projects/core/abstract/driver.ts","../../../projects/core/abstract/vehicle.ts","../../../projects/core/abstract/abstract-driver.directive.ts","../../../projects/core/abstract/abstract-textfield-host.ts","../../../projects/core/abstract/position-accessor.ts","../../../projects/core/abstract/rect-accessor.ts","../../../projects/core/abstract/taiga-ui-core-abstract.ts"],"sourcesContent":["import {ExistingProvider, Type} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiDriver extends Observable<boolean> {\n abstract readonly type: string;\n}\n\nexport function tuiAsDriver(useExisting: Type<TuiDriver>): ExistingProvider {\n return {\n provide: TuiDriver,\n multi: true,\n useExisting,\n };\n}\n","import {ExistingProvider, Type} from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiVehicle {\n abstract readonly type: string;\n abstract toggle(value: boolean): void;\n}\n\nexport function tuiAsVehicle(useExisting: Type<TuiVehicle>): ExistingProvider {\n return {\n provide: TuiVehicle,\n multi: true,\n useExisting,\n };\n}\n","import {Directive, Inject, OnInit, Self} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {distinctUntilChanged, takeUntil} from 'rxjs/operators';\n\nimport {TuiDriver} from './driver';\nimport {TuiVehicle} from './vehicle';\n\n@Directive()\nexport abstract class AbstractTuiDriverDirective implements OnInit {\n abstract type: string;\n\n constructor(\n @Self() @Inject(TuiDestroyService) private readonly destroy$: Observable<unknown>,\n @Inject(TuiDriver) private readonly drivers: TuiDriver[],\n @Inject(TuiVehicle) private readonly vehicles: TuiVehicle[],\n ) {}\n\n ngOnInit(): void {\n const vehicle = this.vehicles.find(({type}) => type === this.type);\n\n merge(...this.drivers.filter(({type}) => type === this.type))\n .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe(value => {\n vehicle?.toggle(value);\n });\n }\n}\n","import {Directive, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\n@Directive()\nexport abstract class AbstractTuiTextfieldHost<T extends AbstractTuiControl<any>>\n implements TuiTextfieldHost\n{\n constructor(@Inject(AbstractTuiControl) protected readonly host: T) {}\n\n get readOnly(): boolean {\n return this.host.readOnly;\n }\n\n get disabled(): boolean {\n return this.host.computedDisabled;\n }\n\n get invalid(): boolean {\n return this.host.computedInvalid;\n }\n\n get focusable(): boolean {\n return this.host.computedFocusable;\n }\n\n get inputMode(): TuiTextfieldHost['inputMode'] {\n return `text`;\n }\n\n get value(): string {\n return this.host.value?.toString() || ``;\n }\n\n abstract onValueChange(value: string): void;\n\n process(_input: HTMLInputElement): void {}\n}\n","import {ExistingProvider, FactoryProvider, SkipSelf, Type} from '@angular/core';\nimport {TuiPoint} from '@taiga-ui/core/types';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiPositionAccessor {\n abstract readonly type: string;\n abstract getPosition(rect: ClientRect): TuiPoint;\n}\n\nexport function tuiPositionAccessorFor(type: string): FactoryProvider {\n return {\n provide: TuiPositionAccessor,\n deps: [[new SkipSelf(), TuiPositionAccessor]],\n useFactory: (accessors: readonly TuiPositionAccessor[]) =>\n accessors.find(accessor => accessor.type === type),\n };\n}\n\nexport function tuiAsPositionAccessor(\n useExisting: Type<TuiPositionAccessor>,\n): ExistingProvider {\n return {\n provide: TuiPositionAccessor,\n multi: true,\n useExisting,\n };\n}\n","import {ExistingProvider, FactoryProvider, SkipSelf, Type} from '@angular/core';\n\n// TODO: Rename to getBoundingClientRect to match the DOM API\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport abstract class TuiRectAccessor {\n abstract readonly type: string;\n abstract getClientRect(): ClientRect;\n}\n\nexport function tuiRectAccessorFor(\n type: string,\n fallback: Type<TuiRectAccessor>,\n): FactoryProvider {\n return {\n provide: TuiRectAccessor,\n deps: [[new SkipSelf(), TuiRectAccessor], fallback],\n useFactory: tuiFallbackRectAccessor(type),\n };\n}\n\nexport function tuiFallbackRectAccessor(\n type: string,\n): (accessors: readonly TuiRectAccessor[], fallback: TuiRectAccessor) => TuiRectAccessor {\n return (accessors, fallback) =>\n accessors.find(accessor => accessor !== fallback && accessor.type === type) ||\n fallback;\n}\n\nexport function tuiAsRectAccessor(useExisting: Type<TuiRectAccessor>): ExistingProvider {\n return {\n provide: TuiRectAccessor,\n multi: true,\n useExisting,\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, ElementRef, Injectable, Inject, Component, ChangeDetectionStrategy, Self, HostBinding, inject, Directive, NgModule } from '@angular/core';
3
3
  import * as i4 from '@taiga-ui/cdk';
4
- import { tuiTypedFromEvent, tuiIsCurrentTarget, tuiGetActualTarget, tuiIsElement, tuiContainsOrAfter, TUI_IS_MOBILE, TuiDestroyService, AbstractTuiDialogService, AbstractTuiDialogDirective, TuiPreventDefaultModule, tuiAsDialog } from '@taiga-ui/cdk';
4
+ import { tuiTypedFromEvent, tuiIsCurrentTarget, tuiGetActualTarget, tuiIsElement, tuiContainsOrAfter, ALWAYS_TRUE_HANDLER, TUI_IS_MOBILE, TuiDestroyService, AbstractTuiDialogService, AbstractTuiDialogDirective, TuiPreventDefaultModule, tuiAsDialog } from '@taiga-ui/cdk';
5
5
  import { tuiSlideInTop, tuiFadeIn } from '@taiga-ui/core/animations';
6
6
  import { TUI_ANIMATIONS_DURATION, TUI_CLOSE_WORD } from '@taiga-ui/core/tokens';
7
7
  import * as i3 from '@tinkoff/ng-polymorpheus';
@@ -108,10 +108,8 @@ class TuiDialogComponent {
108
108
  },
109
109
  };
110
110
  this.close$ = new Subject();
111
- merge(merge(dialogClose$, this.close$).pipe(switchMap(() => isObservable(context.closeable)
112
- ? context.closeable
113
- : of(context.closeable)), filter(Boolean)), close$)
114
- .pipe(takeUntil(destroy$))
111
+ merge(this.close$.pipe(switchMap(() => toObservable(context.closeable))), dialogClose$.pipe(switchMap(() => toObservable(context.dismissible))), close$.pipe(map(ALWAYS_TRUE_HANDLER)))
112
+ .pipe(filter(Boolean), takeUntil(destroy$))
115
113
  .subscribe(() => {
116
114
  this.close();
117
115
  });
@@ -186,6 +184,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
186
184
  type: HostBinding,
187
185
  args: ['@tuiFadeIn']
188
186
  }] } });
187
+ function toObservable(valueOrStream) {
188
+ return isObservable(valueOrStream) ? valueOrStream : of(valueOrStream);
189
+ }
189
190
 
190
191
  const DIALOG = new PolymorpheusComponent(TuiDialogComponent);
191
192
  class TuiDialogService extends AbstractTuiDialogService {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-dialog.js","sources":["../../../projects/core/components/dialog/dialog.tokens.ts","../../../projects/core/components/dialog/dialog-close.service.ts","../../../projects/core/components/dialog/dialog.component.ts","../../../projects/core/components/dialog/dialog.template.html","../../../projects/core/components/dialog/dialog.service.ts","../../../projects/core/components/dialog/dialog.directive.ts","../../../projects/core/components/dialog/dialog.module.ts","../../../projects/core/components/dialog/taiga-ui-core-components-dialog.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport type {TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {EMPTY, Observable} from 'rxjs';\n\ntype TuiDialogDefaultOptions = Omit<TuiDialogOptions<unknown>, 'data'>;\n\nexport const TUI_DIALOG_DEFAULT_OPTIONS: TuiDialogDefaultOptions = {\n size: `m`,\n required: false,\n closeable: true,\n dismissible: true,\n label: ``,\n header: ``,\n};\n\n/**\n * A stream to close dialogs\n */\nexport const TUI_DIALOGS_CLOSE = new InjectionToken<Observable<unknown>>(\n `[TUI_DIALOGS_CLOSE]`,\n {\n factory: () => EMPTY,\n },\n);\n\n/**\n * Default parameters for dialog component\n */\nexport const TUI_DIALOG_OPTIONS = new InjectionToken<TuiDialogDefaultOptions>(\n `[TUI_DIALOG_OPTIONS]`,\n {\n factory: () => TUI_DIALOG_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiDialogOptionsProvider(\n options: Partial<TuiDialogDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_DIALOG_OPTIONS,\n useValue: {...TUI_DIALOG_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {\n tuiContainsOrAfter,\n tuiGetActualTarget,\n tuiIsCurrentTarget,\n tuiIsElement,\n tuiTypedFromEvent,\n} from '@taiga-ui/cdk';\nimport {tuiGetViewportWidth} from '@taiga-ui/core/utils';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, switchMap, take} from 'rxjs/operators';\n\nconst SCROLLBAR_PLACEHOLDER = 17;\n\n@Injectable()\nexport class TuiDialogCloseService extends Observable<unknown> {\n private readonly click$ = tuiTypedFromEvent(this.element, `click`).pipe(\n filter(tuiIsCurrentTarget),\n );\n\n private readonly esc$ = tuiTypedFromEvent(this.documentRef, `keydown`).pipe(\n filter(event => {\n const key = event.key;\n const target = tuiGetActualTarget(event);\n\n return (\n key === `Escape` &&\n tuiIsElement(target) &&\n (this.element.contains(target) ||\n !tuiContainsOrAfter(this.element, target))\n );\n }),\n );\n\n private readonly mousedown$ = tuiTypedFromEvent(this.documentRef, `mousedown`).pipe(\n filter(event => {\n const target = tuiGetActualTarget(event);\n const clientX = event.clientX;\n\n return (\n tuiIsElement(target) &&\n tuiGetViewportWidth(this.windowRef) - clientX > SCROLLBAR_PLACEHOLDER &&\n !tuiContainsOrAfter(this.element, target)\n );\n }),\n switchMap(() =>\n tuiTypedFromEvent(this.documentRef, `mouseup`).pipe(\n take(1),\n map(tuiGetActualTarget),\n filter(\n target =>\n tuiIsElement(target) && !tuiContainsOrAfter(this.element, target),\n ),\n ),\n ),\n );\n\n constructor(\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super(subscriber =>\n merge(this.click$, this.esc$, this.mousedown$).subscribe(subscriber),\n );\n }\n\n private get element(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Self,\n} from '@angular/core';\nimport {TUI_IS_MOBILE, TuiDestroyService, TuiDialog} from '@taiga-ui/cdk';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiAnimationOptions, TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {TUI_ANIMATIONS_DURATION, TUI_CLOSE_WORD} from '@taiga-ui/core/tokens';\nimport {TuiDialogSize} from '@taiga-ui/core/types';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {isObservable, merge, Observable, of, Subject} from 'rxjs';\nimport {filter, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {TUI_DIALOGS_CLOSE} from './dialog.tokens';\nimport {TuiDialogCloseService} from './dialog-close.service';\n\nconst REQUIRED_ERROR = new Error('Required dialog was dismissed');\n\n@Component({\n selector: 'tui-dialog',\n templateUrl: './dialog.template.html',\n styleUrls: ['./dialog.style.less'],\n // So we don't force OnPush on dialog content\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService, TuiDialogCloseService],\n animations: [tuiSlideInTop, tuiFadeIn],\n})\nexport class TuiDialogComponent<O, I> {\n private readonly animation = {\n value: '',\n params: {\n start: '40px',\n duration: this.duration,\n },\n } as const;\n\n private readonly fullscreenAnimation = {\n value: '',\n params: {\n start: '100vh',\n duration: this.duration,\n },\n } as const;\n\n readonly close$ = new Subject();\n\n constructor(\n @Inject(TUI_ANIMATIONS_DURATION) private readonly duration: number,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(POLYMORPHEUS_CONTEXT) readonly context: TuiDialog<TuiDialogOptions<I>, O>,\n @Inject(TuiDestroyService) @Self() destroy$: Observable<void>,\n @Inject(TuiDialogCloseService) dialogClose$: Observable<unknown>,\n @Inject(TUI_DIALOGS_CLOSE) close$: Observable<unknown>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n ) {\n merge(\n merge(dialogClose$, this.close$).pipe(\n switchMap(() =>\n isObservable(context.closeable)\n ? context.closeable\n : of(context.closeable),\n ),\n filter(Boolean),\n ),\n close$,\n )\n .pipe(takeUntil(destroy$))\n .subscribe(() => {\n this.close();\n });\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiDialogSize {\n return this.context.size;\n }\n\n @HostBinding('class._centered')\n get header(): PolymorpheusContent<TuiDialog<TuiDialogOptions<I>, O>> {\n return this.context.header;\n }\n\n @HostBinding('@tuiSlideInTop')\n @HostBinding('@tuiFadeIn')\n get slideInTop(): TuiAnimationOptions {\n return this.size === 'fullscreen' || this.size === 'page' || this.isMobile\n ? this.fullscreenAnimation\n : this.animation;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n","<header\n *ngIf=\"header\"\n class=\"t-header\"\n>\n <ng-container *polymorpheusOutlet=\"header as text; context: context\">\n {{ text }}\n </ng-container>\n</header>\n<div class=\"t-content\">\n <h2\n class=\"t-heading\"\n [id]=\"context.id\"\n [textContent]=\"context.label\"\n ></h2>\n <section>\n <!-- TODO: Polymorpheus fix type -->\n <ng-container *polymorpheusOutlet=\"$any(context.content) as text; context: context\">\n {{ text }}\n <div class=\"t-buttons\">\n <button\n type=\"button\"\n tuiButton\n size=\"m\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ $any(context.data)?.button || 'OK' }}\n </button>\n </div>\n </ng-container>\n </section>\n</div>\n<div\n *ngIf=\"context.closeable\"\n class=\"t-wrapper\"\n>\n <button\n type=\"button\"\n tuiIconButton\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-dialog__close\"\n size=\"s\"\n appearance=\"\"\n icon=\"tuiIconCloseLarge\"\n shape=\"rounded\"\n class=\"t-close\"\n [title]=\"closeWord$ | async\"\n (click)=\"close$.next()\"\n ></button>\n</div>\n","import {inject, Injectable} from '@angular/core';\nimport {AbstractTuiDialogService} from '@taiga-ui/cdk';\nimport type {TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {TUI_DIALOG_OPTIONS} from './dialog.tokens';\n\nconst DIALOG = new PolymorpheusComponent(TuiDialogComponent);\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiDialogService extends AbstractTuiDialogService<TuiDialogOptions<any>> {\n protected readonly component = DIALOG;\n protected readonly defaultOptions: TuiDialogOptions<any> = {\n ...inject(TUI_DIALOG_OPTIONS),\n data: undefined,\n };\n}\n","import {Directive} from '@angular/core';\nimport {AbstractTuiDialogDirective, AbstractTuiDialogService} from '@taiga-ui/cdk';\nimport {TuiDialogOptions} from '@taiga-ui/core/interfaces';\n\nimport {TuiDialogService} from './dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiDialog]',\n providers: [\n {\n provide: AbstractTuiDialogService,\n useExisting: TuiDialogService,\n },\n ],\n inputs: ['options: tuiDialogOptions', 'open: tuiDialog'],\n outputs: ['openChange: tuiDialogChange'],\n})\nexport class TuiDialogDirective<T> extends AbstractTuiDialogDirective<\n TuiDialogOptions<T>\n> {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {tuiAsDialog, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core/components/button';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {TuiDialogDirective} from './dialog.directive';\nimport {TuiDialogService} from './dialog.service';\n\n@NgModule({\n imports: [PolymorpheusModule, TuiButtonModule, CommonModule, TuiPreventDefaultModule],\n declarations: [TuiDialogComponent, TuiDialogDirective],\n exports: [TuiDialogComponent, TuiDialogDirective],\n providers: [tuiAsDialog(TuiDialogService)],\n})\nexport class TuiDialogModule {}\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-core-components-dialog.js","sources":["../../../projects/core/components/dialog/dialog.tokens.ts","../../../projects/core/components/dialog/dialog-close.service.ts","../../../projects/core/components/dialog/dialog.component.ts","../../../projects/core/components/dialog/dialog.template.html","../../../projects/core/components/dialog/dialog.service.ts","../../../projects/core/components/dialog/dialog.directive.ts","../../../projects/core/components/dialog/dialog.module.ts","../../../projects/core/components/dialog/taiga-ui-core-components-dialog.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport type {TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {EMPTY, Observable} from 'rxjs';\n\ntype TuiDialogDefaultOptions = Omit<TuiDialogOptions<unknown>, 'data'>;\n\nexport const TUI_DIALOG_DEFAULT_OPTIONS: TuiDialogDefaultOptions = {\n size: `m`,\n required: false,\n closeable: true,\n dismissible: true,\n label: ``,\n header: ``,\n};\n\n/**\n * A stream to close dialogs\n */\nexport const TUI_DIALOGS_CLOSE = new InjectionToken<Observable<unknown>>(\n `[TUI_DIALOGS_CLOSE]`,\n {\n factory: () => EMPTY,\n },\n);\n\n/**\n * Default parameters for dialog component\n */\nexport const TUI_DIALOG_OPTIONS = new InjectionToken<TuiDialogDefaultOptions>(\n `[TUI_DIALOG_OPTIONS]`,\n {\n factory: () => TUI_DIALOG_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiDialogOptionsProvider(\n options: Partial<TuiDialogDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_DIALOG_OPTIONS,\n useValue: {...TUI_DIALOG_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {\n tuiContainsOrAfter,\n tuiGetActualTarget,\n tuiIsCurrentTarget,\n tuiIsElement,\n tuiTypedFromEvent,\n} from '@taiga-ui/cdk';\nimport {tuiGetViewportWidth} from '@taiga-ui/core/utils';\nimport {merge, Observable} from 'rxjs';\nimport {filter, map, switchMap, take} from 'rxjs/operators';\n\nconst SCROLLBAR_PLACEHOLDER = 17;\n\n@Injectable()\nexport class TuiDialogCloseService extends Observable<unknown> {\n private readonly click$ = tuiTypedFromEvent(this.element, `click`).pipe(\n filter(tuiIsCurrentTarget),\n );\n\n private readonly esc$ = tuiTypedFromEvent(this.documentRef, `keydown`).pipe(\n filter(event => {\n const key = event.key;\n const target = tuiGetActualTarget(event);\n\n return (\n key === `Escape` &&\n tuiIsElement(target) &&\n (this.element.contains(target) ||\n !tuiContainsOrAfter(this.element, target))\n );\n }),\n );\n\n private readonly mousedown$ = tuiTypedFromEvent(this.documentRef, `mousedown`).pipe(\n filter(event => {\n const target = tuiGetActualTarget(event);\n const clientX = event.clientX;\n\n return (\n tuiIsElement(target) &&\n tuiGetViewportWidth(this.windowRef) - clientX > SCROLLBAR_PLACEHOLDER &&\n !tuiContainsOrAfter(this.element, target)\n );\n }),\n switchMap(() =>\n tuiTypedFromEvent(this.documentRef, `mouseup`).pipe(\n take(1),\n map(tuiGetActualTarget),\n filter(\n target =>\n tuiIsElement(target) && !tuiContainsOrAfter(this.element, target),\n ),\n ),\n ),\n );\n\n constructor(\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super(subscriber =>\n merge(this.click$, this.esc$, this.mousedown$).subscribe(subscriber),\n );\n }\n\n private get element(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Self,\n} from '@angular/core';\nimport {\n ALWAYS_TRUE_HANDLER,\n TUI_IS_MOBILE,\n TuiDestroyService,\n TuiDialog,\n} from '@taiga-ui/cdk';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiAnimationOptions, TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {TUI_ANIMATIONS_DURATION, TUI_CLOSE_WORD} from '@taiga-ui/core/tokens';\nimport {TuiDialogSize} from '@taiga-ui/core/types';\nimport {POLYMORPHEUS_CONTEXT, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {isObservable, merge, Observable, of, Subject} from 'rxjs';\nimport {filter, map, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {TUI_DIALOGS_CLOSE} from './dialog.tokens';\nimport {TuiDialogCloseService} from './dialog-close.service';\n\nconst REQUIRED_ERROR = new Error('Required dialog was dismissed');\n\n@Component({\n selector: 'tui-dialog',\n templateUrl: './dialog.template.html',\n styleUrls: ['./dialog.style.less'],\n // So we don't force OnPush on dialog content\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService, TuiDialogCloseService],\n animations: [tuiSlideInTop, tuiFadeIn],\n})\nexport class TuiDialogComponent<O, I> {\n private readonly animation = {\n value: '',\n params: {\n start: '40px',\n duration: this.duration,\n },\n } as const;\n\n private readonly fullscreenAnimation = {\n value: '',\n params: {\n start: '100vh',\n duration: this.duration,\n },\n } as const;\n\n readonly close$ = new Subject();\n\n constructor(\n @Inject(TUI_ANIMATIONS_DURATION) private readonly duration: number,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(POLYMORPHEUS_CONTEXT) readonly context: TuiDialog<TuiDialogOptions<I>, O>,\n @Inject(TuiDestroyService) @Self() destroy$: Observable<void>,\n @Inject(TuiDialogCloseService) dialogClose$: Observable<unknown>,\n @Inject(TUI_DIALOGS_CLOSE) close$: Observable<unknown>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n ) {\n merge(\n this.close$.pipe(switchMap(() => toObservable(context.closeable))),\n dialogClose$.pipe(switchMap(() => toObservable(context.dismissible))),\n close$.pipe(map(ALWAYS_TRUE_HANDLER)),\n )\n .pipe(filter(Boolean), takeUntil(destroy$))\n .subscribe(() => {\n this.close();\n });\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiDialogSize {\n return this.context.size;\n }\n\n @HostBinding('class._centered')\n get header(): PolymorpheusContent<TuiDialog<TuiDialogOptions<I>, O>> {\n return this.context.header;\n }\n\n @HostBinding('@tuiSlideInTop')\n @HostBinding('@tuiFadeIn')\n get slideInTop(): TuiAnimationOptions {\n return this.size === 'fullscreen' || this.size === 'page' || this.isMobile\n ? this.fullscreenAnimation\n : this.animation;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n\nfunction toObservable<T>(valueOrStream: Observable<T> | T): Observable<T> {\n return isObservable(valueOrStream) ? valueOrStream : of(valueOrStream);\n}\n","<header\n *ngIf=\"header\"\n class=\"t-header\"\n>\n <ng-container *polymorpheusOutlet=\"header as text; context: context\">\n {{ text }}\n </ng-container>\n</header>\n<div class=\"t-content\">\n <h2\n class=\"t-heading\"\n [id]=\"context.id\"\n [textContent]=\"context.label\"\n ></h2>\n <section>\n <!-- TODO: Polymorpheus fix type -->\n <ng-container *polymorpheusOutlet=\"$any(context.content) as text; context: context\">\n {{ text }}\n <div class=\"t-buttons\">\n <button\n type=\"button\"\n tuiButton\n size=\"m\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ $any(context.data)?.button || 'OK' }}\n </button>\n </div>\n </ng-container>\n </section>\n</div>\n<div\n *ngIf=\"context.closeable\"\n class=\"t-wrapper\"\n>\n <button\n type=\"button\"\n tuiIconButton\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-dialog__close\"\n size=\"s\"\n appearance=\"\"\n icon=\"tuiIconCloseLarge\"\n shape=\"rounded\"\n class=\"t-close\"\n [title]=\"closeWord$ | async\"\n (click)=\"close$.next()\"\n ></button>\n</div>\n","import {inject, Injectable} from '@angular/core';\nimport {AbstractTuiDialogService} from '@taiga-ui/cdk';\nimport type {TuiDialogOptions} from '@taiga-ui/core/interfaces';\nimport {PolymorpheusComponent} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {TUI_DIALOG_OPTIONS} from './dialog.tokens';\n\nconst DIALOG = new PolymorpheusComponent(TuiDialogComponent);\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiDialogService extends AbstractTuiDialogService<TuiDialogOptions<any>> {\n protected readonly component = DIALOG;\n protected readonly defaultOptions: TuiDialogOptions<any> = {\n ...inject(TUI_DIALOG_OPTIONS),\n data: undefined,\n };\n}\n","import {Directive} from '@angular/core';\nimport {AbstractTuiDialogDirective, AbstractTuiDialogService} from '@taiga-ui/cdk';\nimport {TuiDialogOptions} from '@taiga-ui/core/interfaces';\n\nimport {TuiDialogService} from './dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiDialog]',\n providers: [\n {\n provide: AbstractTuiDialogService,\n useExisting: TuiDialogService,\n },\n ],\n inputs: ['options: tuiDialogOptions', 'open: tuiDialog'],\n outputs: ['openChange: tuiDialogChange'],\n})\nexport class TuiDialogDirective<T> extends AbstractTuiDialogDirective<\n TuiDialogOptions<T>\n> {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {tuiAsDialog, TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core/components/button';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDialogComponent} from './dialog.component';\nimport {TuiDialogDirective} from './dialog.directive';\nimport {TuiDialogService} from './dialog.service';\n\n@NgModule({\n imports: [PolymorpheusModule, TuiButtonModule, CommonModule, TuiPreventDefaultModule],\n declarations: [TuiDialogComponent, TuiDialogDirective],\n exports: [TuiDialogComponent, TuiDialogDirective],\n providers: [tuiAsDialog(TuiDialogService)],\n})\nexport class TuiDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { tuiIsNativeKeyboardFocusable, tuiGetClosestFocusable, tuiIsNativeFocuse
6
6
  import * as i2 from '@taiga-ui/core/directives/dropdown';
7
7
  import { TuiDropdownHoverDirective, TuiDropdownDirective, TuiDropdownModule, TuiDropdownOptionsDirective } from '@taiga-ui/core/directives/dropdown';
8
8
  import { tuiIsEditingKey } from '@taiga-ui/core/utils/miscellaneous';
9
+ import { shouldCall } from '@tinkoff/ng-event-plugins';
9
10
  import { BehaviorSubject, merge, EMPTY } from 'rxjs';
10
11
  import { skip, distinctUntilChanged } from 'rxjs/operators';
11
12
  import * as i3 from '@tinkoff/ng-polymorpheus';
@@ -24,6 +25,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
24
25
  }]
25
26
  }] });
26
27
 
28
+ function shouldClose({ key }) {
29
+ var _a;
30
+ return (key.toLowerCase() === 'escape' &&
31
+ this.canOpen &&
32
+ this.open &&
33
+ !((_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.nextElementSibling));
34
+ }
27
35
  /* eslint-disable @typescript-eslint/member-ordering */
28
36
  class TuiHostedDropdownComponent {
29
37
  constructor(hover$, elementRef) {
@@ -86,9 +94,6 @@ class TuiHostedDropdownComponent {
86
94
  }
87
95
  }
88
96
  onKeyDownEsc(event) {
89
- if (!this.canOpen || !this.open) {
90
- return;
91
- }
92
97
  event.stopPropagation();
93
98
  this.closeDropdown();
94
99
  }
@@ -172,7 +177,7 @@ class TuiHostedDropdownComponent {
172
177
  }
173
178
  }
174
179
  TuiHostedDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiHostedDropdownComponent, deps: [{ token: TuiDropdownHoverDirective, optional: true }, { token: ElementRef }], target: i0.ɵɵFactoryTarget.Component });
175
- TuiHostedDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: { content: "content", sided: "sided", canOpen: "canOpen", open: "open" }, outputs: { open$: "openChange", focusedChange: "focusedChange" }, host: { listeners: { "focusin": "onFocusIn($event.target)", "click": "onClick($event.target)", "keydown.esc": "onKeyDownEsc($event)", "keydown.arrowDown": "onArrow($event,true)", "keydown.arrowUp": "onArrow($event,false)" }, properties: { "class._hosted_dropdown_focused": "this.focused" } }, providers: [tuiAsFocusableItemAccessor(TuiHostedDropdownComponent)], queries: [{ propertyName: "dropdownHost", first: true, predicate: TuiHostedDropdownConnectorDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef }, { propertyName: "dropdownDirective", first: true, predicate: TuiDropdownDirective, descendants: true }, { propertyName: "activeZone", first: true, predicate: TuiActiveZoneDirective, descendants: true }], ngImport: i0, template: "<div\n *tuiLet=\"!!(open$ | async) as isOpen\"\n #activeZone=\"tuiActiveZone\"\n class=\"t-wrapper\"\n [tuiDropdownSided]=\"sided\"\n [tuiDropdownHost]=\"host\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen && canOpen\"\n [tuiObscuredEnabled]=\"isOpen\"\n (tuiObscured)=\"onHostObscured($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <ng-content></ng-content>\n <ng-template\n #dropdown=\"polymorpheus\"\n [polymorpheus]=\"context\"\n >\n <div\n #wrapper\n (keydown.esc)=\"onKeyDownEsc($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n content as text;\n context: {\n $implicit: activeZone,\n close: close\n }\n \"\n >\n {{ text }}\n </ng-container>\n </div>\n <!--This DIV is here to start backwards TreeWalker for focusing last focusable item on ArrowUp-->\n <div></div>\n </ng-template>\n</div>\n", styles: [":host{display:inline-flex}.t-wrapper{border-radius:inherit;height:inherit;flex:1 1 auto;width:100%}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2.TuiDropdownPositionSidedDirective, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i2.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i2.TuiDropdownHostDirective, selector: "[tuiDropdown][tuiDropdownHost]", inputs: ["tuiDropdownHost"] }, { type: i2.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i1.TuiObscuredDirective, selector: "[tuiObscured]", inputs: ["tuiObscuredEnabled"], outputs: ["tuiObscured"] }, { type: i1.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i3.PolymorpheusTemplate, selector: "ng-template[polymorpheus]", inputs: ["polymorpheus"], exportAs: ["polymorpheus"] }, { type: i3.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
180
+ TuiHostedDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: { content: "content", sided: "sided", canOpen: "canOpen", open: "open" }, outputs: { open$: "openChange", focusedChange: "focusedChange" }, host: { listeners: { "focusin": "onFocusIn($event.target)", "click": "onClick($event.target)", "document:keydown.silent": "onKeyDownEsc($event)", "keydown.arrowDown": "onArrow($event,true)", "keydown.arrowUp": "onArrow($event,false)" }, properties: { "class._hosted_dropdown_focused": "this.focused" } }, providers: [tuiAsFocusableItemAccessor(TuiHostedDropdownComponent)], queries: [{ propertyName: "dropdownHost", first: true, predicate: TuiHostedDropdownConnectorDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef }, { propertyName: "dropdownDirective", first: true, predicate: TuiDropdownDirective, descendants: true }, { propertyName: "activeZone", first: true, predicate: TuiActiveZoneDirective, descendants: true }], ngImport: i0, template: "<div\n *tuiLet=\"!!(open$ | async) as isOpen\"\n #activeZone=\"tuiActiveZone\"\n class=\"t-wrapper\"\n [tuiDropdownSided]=\"sided\"\n [tuiDropdownHost]=\"host\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen && canOpen\"\n [tuiObscuredEnabled]=\"isOpen\"\n (tuiObscured)=\"onHostObscured($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <ng-content></ng-content>\n <ng-template\n #dropdown=\"polymorpheus\"\n [polymorpheus]=\"context\"\n >\n <div\n #wrapper\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n content as text;\n context: {\n $implicit: activeZone,\n close: close\n }\n \"\n >\n {{ text }}\n </ng-container>\n </div>\n <!--This DIV is here to start backwards TreeWalker for focusing last focusable item on ArrowUp-->\n <div></div>\n </ng-template>\n</div>\n", styles: [":host{display:inline-flex}.t-wrapper{border-radius:inherit;height:inherit;flex:1 1 auto;width:100%}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2.TuiDropdownPositionSidedDirective, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i2.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i2.TuiDropdownHostDirective, selector: "[tuiDropdown][tuiDropdownHost]", inputs: ["tuiDropdownHost"] }, { type: i2.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i1.TuiObscuredDirective, selector: "[tuiObscured]", inputs: ["tuiObscuredEnabled"], outputs: ["tuiObscured"] }, { type: i1.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i3.PolymorpheusTemplate, selector: "ng-template[polymorpheus]", inputs: ["polymorpheus"], exportAs: ["polymorpheus"] }, { type: i3.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
176
181
  __decorate([
177
182
  tuiDefaultProp()
178
183
  ], TuiHostedDropdownComponent.prototype, "content", void 0);
@@ -185,6 +190,9 @@ __decorate([
185
190
  __decorate([
186
191
  tuiDefaultProp()
187
192
  ], TuiHostedDropdownComponent.prototype, "open", null);
193
+ __decorate([
194
+ shouldCall(shouldClose)
195
+ ], TuiHostedDropdownComponent.prototype, "onKeyDownEsc", null);
188
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiHostedDropdownComponent, decorators: [{
189
197
  type: Component,
190
198
  args: [{
@@ -238,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
238
246
  args: ['click', ['$event.target']]
239
247
  }], onKeyDownEsc: [{
240
248
  type: HostListener,
241
- args: ['keydown.esc', ['$event']]
249
+ args: ['document:keydown.silent', ['$event']]
242
250
  }], onArrow: [{
243
251
  type: HostListener,
244
252
  args: ['keydown.arrowDown', ['$event', 'true']]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-hosted-dropdown.js","sources":["../../../projects/core/components/hosted-dropdown/hosted-dropdown-connector.directive.ts","../../../projects/core/components/hosted-dropdown/hosted-dropdown.component.ts","../../../projects/core/components/hosted-dropdown/hosted-dropdown.template.html","../../../projects/core/components/hosted-dropdown/hosted-dropdown.module.ts","../../../projects/core/components/hosted-dropdown/taiga-ui-core-components-hosted-dropdown.ts"],"sourcesContent":["import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[tuiHostedDropdownHost]',\n})\nexport class TuiHostedDropdownConnectorDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n TuiActiveZoneDirective,\n tuiAsFocusableItemAccessor,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiGetClosestFocusable,\n tuiIsElement,\n tuiIsElementEditable,\n tuiIsHTMLElement,\n tuiIsNativeFocusedIn,\n tuiIsNativeKeyboardFocusable,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {\n TuiDropdownDirective,\n TuiDropdownHoverDirective,\n} from '@taiga-ui/core/directives/dropdown';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, EMPTY, merge} from 'rxjs';\nimport {distinctUntilChanged, skip} from 'rxjs/operators';\n\nimport {TuiHostedDropdownConnectorDirective} from './hosted-dropdown-connector.directive';\n\nexport interface TuiHostedDropdownContext\n extends TuiContextWithImplicit<TuiActiveZoneDirective> {\n close(): void;\n}\n\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'tui-hosted-dropdown',\n templateUrl: './hosted-dropdown.template.html',\n styleUrls: ['./hosted-dropdown.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsFocusableItemAccessor(TuiHostedDropdownComponent)],\n})\nexport class TuiHostedDropdownComponent implements TuiFocusableElementAccessor {\n @ContentChild(TuiHostedDropdownConnectorDirective, {read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n @ViewChild('wrapper', {read: ElementRef})\n private readonly wrapper?: ElementRef<HTMLDivElement>;\n\n @ViewChild(TuiDropdownDirective)\n private readonly dropdownDirective?: TuiDropdownDirective;\n\n /** TODO: rename in 4.0 */\n readonly openChange = new BehaviorSubject(false);\n\n @ViewChild(TuiActiveZoneDirective)\n readonly activeZone!: TuiActiveZoneDirective;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiHostedDropdownContext> = '';\n\n @Input()\n @tuiDefaultProp()\n sided = false;\n\n @Input()\n @tuiDefaultProp()\n canOpen = true;\n\n @Output('openChange')\n readonly open$ = merge(this.openChange, this.hover$ || EMPTY).pipe(\n skip(1),\n distinctUntilChanged(),\n );\n\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n readonly context!: TuiContextWithImplicit<TuiActiveZoneDirective>;\n\n constructor(\n @Optional()\n @Inject(TuiDropdownHoverDirective)\n private readonly hover$: TuiDropdownHoverDirective | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef,\n ) {}\n\n @Input()\n @tuiDefaultProp()\n set open(open: boolean) {\n this.openChange.next(open);\n }\n\n get open(): boolean {\n return this.openChange.value;\n }\n\n get host(): HTMLElement {\n return this.dropdownHost?.nativeElement || this.elementRef.nativeElement;\n }\n\n get computedHost(): HTMLElement {\n return (\n this.dropdownHost?.nativeElement ||\n this.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n get dropdown(): HTMLElement | undefined {\n return this.dropdownDirective?.dropdownBoxRef?.location.nativeElement;\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return tuiIsNativeKeyboardFocusable(this.host)\n ? this.host\n : tuiGetClosestFocusable({\n initial: this.host,\n root: this.elementRef.nativeElement,\n });\n }\n\n @HostBinding('class._hosted_dropdown_focused')\n get focused(): boolean {\n return (\n tuiIsNativeFocusedIn(this.host) ||\n (this.open &&\n !!this.wrapper &&\n tuiIsNativeFocusedIn(this.wrapper.nativeElement))\n );\n }\n\n @HostListener('focusin', ['$event.target'])\n onFocusIn(target: HTMLElement): void {\n if (!this.computedHost.contains(target)) {\n this.updateOpen(false);\n }\n }\n\n @HostListener('click', ['$event.target'])\n onClick(target: HTMLElement): void {\n if (\n !this.hostEditable &&\n this.computedHost.contains(target) &&\n !this.hover$?.hovered\n ) {\n this.updateOpen(!this.open);\n }\n }\n\n @HostListener('keydown.esc', ['$event'])\n onKeyDownEsc(event: Event): void {\n if (!this.canOpen || !this.open) {\n return;\n }\n\n event.stopPropagation();\n this.closeDropdown();\n }\n\n @HostListener('keydown.arrowDown', ['$event', 'true'])\n @HostListener('keydown.arrowUp', ['$event', 'false'])\n onArrow(event: KeyboardEvent, down: boolean): void {\n this.focusDropdown(event, down);\n }\n\n onKeydown({key, target, defaultPrevented}: KeyboardEvent): void {\n if (\n !defaultPrevented &&\n tuiIsEditingKey(key) &&\n this.hostEditable &&\n tuiIsHTMLElement(target) &&\n !tuiIsElementEditable(target)\n ) {\n this.focusHost();\n }\n }\n\n onActiveZone(active: boolean): void {\n this.updateFocused(active);\n\n if (!active) {\n this.updateOpen(false);\n }\n }\n\n onHostObscured(obscured: boolean): void {\n if (obscured) {\n this.closeDropdown();\n }\n }\n\n updateOpen(open: boolean): void {\n if (!open || this.canOpen) {\n this.open = open;\n }\n }\n\n readonly close = (): void => this.updateOpen(false);\n\n private get hostEditable(): boolean {\n return tuiIsElementEditable(this.computedHost);\n }\n\n private focusDropdown(event: KeyboardEvent, first: boolean): void {\n const host = this.nativeFocusableElement;\n\n if (\n !host ||\n !tuiIsHTMLElement(host) ||\n !tuiIsElement(event.target) ||\n !host.contains(event.target)\n ) {\n return;\n }\n\n if (\n !this.wrapper ||\n !this.open ||\n !this.dropdown ||\n !tuiIsHTMLElement(this.wrapper.nativeElement.nextElementSibling)\n ) {\n this.updateOpen(true);\n\n if (!tuiIsElementEditable(host)) {\n event.preventDefault();\n }\n\n return;\n }\n\n const initial = first\n ? this.wrapper.nativeElement\n : this.wrapper.nativeElement.nextElementSibling;\n const focusable = tuiGetClosestFocusable({\n initial,\n root: this.wrapper.nativeElement,\n previous: !first,\n });\n\n if (!focusable) {\n return;\n }\n\n focusable.focus();\n event.preventDefault();\n }\n\n private closeDropdown(): void {\n if (this.focused) {\n this.focusHost();\n }\n\n this.updateOpen(false);\n }\n\n private focusHost(): void {\n const host = this.nativeFocusableElement;\n\n if (host) {\n host.focus({preventScroll: true});\n }\n }\n\n private updateFocused(focused: boolean): void {\n this.focusedChange.emit(focused);\n }\n}\n","<div\n *tuiLet=\"!!(open$ | async) as isOpen\"\n #activeZone=\"tuiActiveZone\"\n class=\"t-wrapper\"\n [tuiDropdownSided]=\"sided\"\n [tuiDropdownHost]=\"host\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen && canOpen\"\n [tuiObscuredEnabled]=\"isOpen\"\n (tuiObscured)=\"onHostObscured($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <ng-content></ng-content>\n <ng-template\n #dropdown=\"polymorpheus\"\n [polymorpheus]=\"context\"\n >\n <div\n #wrapper\n (keydown.esc)=\"onKeyDownEsc($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n content as text;\n context: {\n $implicit: activeZone,\n close: close\n }\n \"\n >\n {{ text }}\n </ng-container>\n </div>\n <!--This DIV is here to start backwards TreeWalker for focusing last focusable item on ArrowUp-->\n <div></div>\n </ng-template>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiLetModule, TuiObscuredModule} from '@taiga-ui/cdk';\nimport {\n TuiDropdownModule,\n TuiDropdownOptionsDirective,\n} from '@taiga-ui/core/directives/dropdown';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHostedDropdownComponent} from './hosted-dropdown.component';\nimport {TuiHostedDropdownConnectorDirective} from './hosted-dropdown-connector.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiObscuredModule,\n TuiActiveZoneModule,\n TuiDropdownModule,\n ],\n declarations: [TuiHostedDropdownComponent, TuiHostedDropdownConnectorDirective],\n exports: [\n TuiHostedDropdownComponent,\n TuiHostedDropdownConnectorDirective,\n TuiDropdownOptionsDirective,\n ],\n})\nexport class TuiHostedDropdownModule {}\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-core-components-hosted-dropdown.js","sources":["../../../projects/core/components/hosted-dropdown/hosted-dropdown-connector.directive.ts","../../../projects/core/components/hosted-dropdown/hosted-dropdown.component.ts","../../../projects/core/components/hosted-dropdown/hosted-dropdown.template.html","../../../projects/core/components/hosted-dropdown/hosted-dropdown.module.ts","../../../projects/core/components/hosted-dropdown/taiga-ui-core-components-hosted-dropdown.ts"],"sourcesContent":["import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[tuiHostedDropdownHost]',\n})\nexport class TuiHostedDropdownConnectorDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n TuiActiveZoneDirective,\n tuiAsFocusableItemAccessor,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiGetClosestFocusable,\n tuiIsElement,\n tuiIsElementEditable,\n tuiIsHTMLElement,\n tuiIsNativeFocusedIn,\n tuiIsNativeKeyboardFocusable,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {\n TuiDropdownDirective,\n TuiDropdownHoverDirective,\n} from '@taiga-ui/core/directives/dropdown';\nimport {tuiIsEditingKey} from '@taiga-ui/core/utils/miscellaneous';\nimport {shouldCall} from '@tinkoff/ng-event-plugins';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {BehaviorSubject, EMPTY, merge} from 'rxjs';\nimport {distinctUntilChanged, skip} from 'rxjs/operators';\n\nimport {TuiHostedDropdownConnectorDirective} from './hosted-dropdown-connector.directive';\n\nexport interface TuiHostedDropdownContext\n extends TuiContextWithImplicit<TuiActiveZoneDirective> {\n close(): void;\n}\n\nfunction shouldClose(this: TuiHostedDropdownComponent, {key}: KeyboardEvent): boolean {\n return (\n key.toLowerCase() === 'escape' &&\n this.canOpen &&\n this.open &&\n !this.dropdown?.nextElementSibling\n );\n}\n\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'tui-hosted-dropdown',\n templateUrl: './hosted-dropdown.template.html',\n styleUrls: ['./hosted-dropdown.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsFocusableItemAccessor(TuiHostedDropdownComponent)],\n})\nexport class TuiHostedDropdownComponent implements TuiFocusableElementAccessor {\n @ContentChild(TuiHostedDropdownConnectorDirective, {read: ElementRef})\n private readonly dropdownHost?: ElementRef<HTMLElement>;\n\n @ViewChild('wrapper', {read: ElementRef})\n private readonly wrapper?: ElementRef<HTMLDivElement>;\n\n @ViewChild(TuiDropdownDirective)\n private readonly dropdownDirective?: TuiDropdownDirective;\n\n /** TODO: rename in 4.0 */\n readonly openChange = new BehaviorSubject(false);\n\n @ViewChild(TuiActiveZoneDirective)\n readonly activeZone!: TuiActiveZoneDirective;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiHostedDropdownContext> = '';\n\n @Input()\n @tuiDefaultProp()\n sided = false;\n\n @Input()\n @tuiDefaultProp()\n canOpen = true;\n\n @Output('openChange')\n readonly open$ = merge(this.openChange, this.hover$ || EMPTY).pipe(\n skip(1),\n distinctUntilChanged(),\n );\n\n @Output()\n readonly focusedChange = new EventEmitter<boolean>();\n\n readonly context!: TuiContextWithImplicit<TuiActiveZoneDirective>;\n\n constructor(\n @Optional()\n @Inject(TuiDropdownHoverDirective)\n private readonly hover$: TuiDropdownHoverDirective | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef,\n ) {}\n\n @Input()\n @tuiDefaultProp()\n set open(open: boolean) {\n this.openChange.next(open);\n }\n\n get open(): boolean {\n return this.openChange.value;\n }\n\n get host(): HTMLElement {\n return this.dropdownHost?.nativeElement || this.elementRef.nativeElement;\n }\n\n get computedHost(): HTMLElement {\n return (\n this.dropdownHost?.nativeElement ||\n this.nativeFocusableElement ||\n this.elementRef.nativeElement\n );\n }\n\n get dropdown(): HTMLElement | undefined {\n return this.dropdownDirective?.dropdownBoxRef?.location.nativeElement;\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return tuiIsNativeKeyboardFocusable(this.host)\n ? this.host\n : tuiGetClosestFocusable({\n initial: this.host,\n root: this.elementRef.nativeElement,\n });\n }\n\n @HostBinding('class._hosted_dropdown_focused')\n get focused(): boolean {\n return (\n tuiIsNativeFocusedIn(this.host) ||\n (this.open &&\n !!this.wrapper &&\n tuiIsNativeFocusedIn(this.wrapper.nativeElement))\n );\n }\n\n @HostListener('focusin', ['$event.target'])\n onFocusIn(target: HTMLElement): void {\n if (!this.computedHost.contains(target)) {\n this.updateOpen(false);\n }\n }\n\n @HostListener('click', ['$event.target'])\n onClick(target: HTMLElement): void {\n if (\n !this.hostEditable &&\n this.computedHost.contains(target) &&\n !this.hover$?.hovered\n ) {\n this.updateOpen(!this.open);\n }\n }\n\n @shouldCall(shouldClose)\n @HostListener('document:keydown.silent', ['$event'])\n onKeyDownEsc(event: Event): void {\n event.stopPropagation();\n this.closeDropdown();\n }\n\n @HostListener('keydown.arrowDown', ['$event', 'true'])\n @HostListener('keydown.arrowUp', ['$event', 'false'])\n onArrow(event: KeyboardEvent, down: boolean): void {\n this.focusDropdown(event, down);\n }\n\n onKeydown({key, target, defaultPrevented}: KeyboardEvent): void {\n if (\n !defaultPrevented &&\n tuiIsEditingKey(key) &&\n this.hostEditable &&\n tuiIsHTMLElement(target) &&\n !tuiIsElementEditable(target)\n ) {\n this.focusHost();\n }\n }\n\n onActiveZone(active: boolean): void {\n this.updateFocused(active);\n\n if (!active) {\n this.updateOpen(false);\n }\n }\n\n onHostObscured(obscured: boolean): void {\n if (obscured) {\n this.closeDropdown();\n }\n }\n\n updateOpen(open: boolean): void {\n if (!open || this.canOpen) {\n this.open = open;\n }\n }\n\n readonly close = (): void => this.updateOpen(false);\n\n private get hostEditable(): boolean {\n return tuiIsElementEditable(this.computedHost);\n }\n\n private focusDropdown(event: KeyboardEvent, first: boolean): void {\n const host = this.nativeFocusableElement;\n\n if (\n !host ||\n !tuiIsHTMLElement(host) ||\n !tuiIsElement(event.target) ||\n !host.contains(event.target)\n ) {\n return;\n }\n\n if (\n !this.wrapper ||\n !this.open ||\n !this.dropdown ||\n !tuiIsHTMLElement(this.wrapper.nativeElement.nextElementSibling)\n ) {\n this.updateOpen(true);\n\n if (!tuiIsElementEditable(host)) {\n event.preventDefault();\n }\n\n return;\n }\n\n const initial = first\n ? this.wrapper.nativeElement\n : this.wrapper.nativeElement.nextElementSibling;\n const focusable = tuiGetClosestFocusable({\n initial,\n root: this.wrapper.nativeElement,\n previous: !first,\n });\n\n if (!focusable) {\n return;\n }\n\n focusable.focus();\n event.preventDefault();\n }\n\n private closeDropdown(): void {\n if (this.focused) {\n this.focusHost();\n }\n\n this.updateOpen(false);\n }\n\n private focusHost(): void {\n const host = this.nativeFocusableElement;\n\n if (host) {\n host.focus({preventScroll: true});\n }\n }\n\n private updateFocused(focused: boolean): void {\n this.focusedChange.emit(focused);\n }\n}\n","<div\n *tuiLet=\"!!(open$ | async) as isOpen\"\n #activeZone=\"tuiActiveZone\"\n class=\"t-wrapper\"\n [tuiDropdownSided]=\"sided\"\n [tuiDropdownHost]=\"host\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen && canOpen\"\n [tuiObscuredEnabled]=\"isOpen\"\n (tuiObscured)=\"onHostObscured($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <ng-content></ng-content>\n <ng-template\n #dropdown=\"polymorpheus\"\n [polymorpheus]=\"context\"\n >\n <div\n #wrapper\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container\n *polymorpheusOutlet=\"\n content as text;\n context: {\n $implicit: activeZone,\n close: close\n }\n \"\n >\n {{ text }}\n </ng-container>\n </div>\n <!--This DIV is here to start backwards TreeWalker for focusing last focusable item on ArrowUp-->\n <div></div>\n </ng-template>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiLetModule, TuiObscuredModule} from '@taiga-ui/cdk';\nimport {\n TuiDropdownModule,\n TuiDropdownOptionsDirective,\n} from '@taiga-ui/core/directives/dropdown';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHostedDropdownComponent} from './hosted-dropdown.component';\nimport {TuiHostedDropdownConnectorDirective} from './hosted-dropdown-connector.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiLetModule,\n TuiObscuredModule,\n TuiActiveZoneModule,\n TuiDropdownModule,\n ],\n declarations: [TuiHostedDropdownComponent, TuiHostedDropdownConnectorDirective],\n exports: [\n TuiHostedDropdownComponent,\n TuiHostedDropdownConnectorDirective,\n TuiDropdownOptionsDirective,\n ],\n})\nexport class TuiHostedDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
3
  import { EventEmitter, Component, ChangeDetectionStrategy, Inject, ViewChild, Input, Output, NgModule } from '@angular/core';
4
4
  import * as i3 from '@taiga-ui/cdk';
5
- import { AbstractTuiInteractive, tuiIsNativeFocused, tuiDefaultProp, TuiFocusVisibleModule, TuiFocusedModule, TuiFocusableModule, TuiPreventDefaultModule } from '@taiga-ui/cdk';
5
+ import { AbstractTuiInteractive, tuiIsNativeFocused, tuiDefaultProp, TuiPreventDefaultModule } from '@taiga-ui/cdk';
6
6
  import { TUI_SPIN_TEXTS } from '@taiga-ui/core/tokens';
7
7
  import * as i1 from '@taiga-ui/core/components/button';
8
8
  import { TuiButtonModule } from '@taiga-ui/core/components/button';
@@ -48,7 +48,7 @@ class TuiPrimitiveSpinButtonComponent extends AbstractTuiInteractive {
48
48
  }
49
49
  }
50
50
  TuiPrimitiveSpinButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonComponent, deps: [{ token: TUI_SPIN_TEXTS }], target: i0.ɵɵFactoryTarget.Component });
51
- TuiPrimitiveSpinButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiPrimitiveSpinButtonComponent, selector: "tui-primitive-spin-button", inputs: { disabled: "disabled", mode: "mode", leftDisabled: "leftDisabled", rightDisabled: "rightDisabled" }, outputs: { leftClick: "leftClick", rightClick: "rightClick" }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"spinTexts$ | async as texts\"\n #wrapper\n tuiPreventDefault=\"mousedown\"\n class=\"t-wrapper\"\n [tuiFocusable]=\"computedFocusable\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiFocusVisibleChange)=\"onFocusVisible($event)\"\n (keydown.arrowLeft)=\"onLeftClick()\"\n (keydown.arrowRight)=\"onRightClick()\"\n>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__left\"\n icon=\"tuiIconChevronLeftLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"leftComputedDisabled\"\n [title]=\"texts[0]\"\n [focusable]=\"false\"\n (click)=\"onLeftClick()\"\n ></button>\n <span class=\"t-content t-calendar-title\">\n <ng-content></ng-content>\n </span>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__right\"\n icon=\"tuiIconChevronRightLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"rightComputedDisabled\"\n [title]=\"texts[1]\"\n [focusable]=\"false\"\n (click)=\"onRightClick()\"\n ></button>\n</div>\n", styles: [":host{display:block;font:var(--tui-font-text-l);text-align:center;font-weight:bold}.t-wrapper{display:flex;align-items:center;justify-content:space-between;outline:none}.t-arrow{margin:0 .25rem}.t-arrow_hidden{visibility:hidden}.t-content{padding:0 .5rem}:host._focus-visible .t-content{box-shadow:0 0 0 1px var(--tui-focus)}\n"], components: [{ type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.TuiPreventDefaultDirective, selector: "[tuiPreventDefault]", inputs: ["tuiPreventDefault"] }, { type: i3.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i3.TuiFocusedDirective, selector: "[tuiFocusedChange]", outputs: ["tuiFocusedChange"] }, { type: i3.TuiFocusVisibleDirective, selector: "[tuiFocusVisibleChange]", outputs: ["tuiFocusVisibleChange"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ TuiPrimitiveSpinButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiPrimitiveSpinButtonComponent, selector: "tui-primitive-spin-button", inputs: { disabled: "disabled", mode: "mode", leftDisabled: "leftDisabled", rightDisabled: "rightDisabled" }, outputs: { leftClick: "leftClick", rightClick: "rightClick" }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"spinTexts$ | async as texts\"\n #wrapper\n tuiPreventDefault=\"mousedown\"\n class=\"t-wrapper\"\n (focusin)=\"onFocused(true)\"\n (focusout)=\"onFocused(false)\"\n (keydown.arrowLeft)=\"onLeftClick()\"\n (keydown.arrowRight)=\"onRightClick()\"\n>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__left\"\n icon=\"tuiIconChevronLeftLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"leftComputedDisabled\"\n [title]=\"texts[0]\"\n [focusable]=\"computedFocusable\"\n (click)=\"onLeftClick()\"\n ></button>\n <span class=\"t-content t-calendar-title\">\n <ng-content></ng-content>\n </span>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__right\"\n icon=\"tuiIconChevronRightLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"rightComputedDisabled\"\n [title]=\"texts[1]\"\n [focusable]=\"computedFocusable\"\n (click)=\"onRightClick()\"\n ></button>\n</div>\n", styles: [":host{display:block;font:var(--tui-font-text-l);text-align:center;font-weight:bold}.t-wrapper{display:flex;align-items:center;justify-content:space-between;outline:none}.t-arrow{margin:0 .25rem}.t-arrow_hidden{visibility:hidden}.t-content{padding:0 .5rem}\n"], components: [{ type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.TuiPreventDefaultDirective, selector: "[tuiPreventDefault]", inputs: ["tuiPreventDefault"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
52
  __decorate([
53
53
  tuiDefaultProp()
54
54
  ], TuiPrimitiveSpinButtonComponent.prototype, "disabled", void 0);
@@ -92,31 +92,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
92
92
  class TuiPrimitiveSpinButtonModule {
93
93
  }
94
94
  TuiPrimitiveSpinButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
95
- TuiPrimitiveSpinButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, declarations: [TuiPrimitiveSpinButtonComponent], imports: [CommonModule,
96
- TuiFocusVisibleModule,
97
- TuiFocusedModule,
98
- TuiFocusableModule,
99
- TuiPreventDefaultModule,
100
- TuiButtonModule], exports: [TuiPrimitiveSpinButtonComponent] });
101
- TuiPrimitiveSpinButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, imports: [[
102
- CommonModule,
103
- TuiFocusVisibleModule,
104
- TuiFocusedModule,
105
- TuiFocusableModule,
106
- TuiPreventDefaultModule,
107
- TuiButtonModule,
108
- ]] });
95
+ TuiPrimitiveSpinButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, declarations: [TuiPrimitiveSpinButtonComponent], imports: [CommonModule, TuiPreventDefaultModule, TuiButtonModule], exports: [TuiPrimitiveSpinButtonComponent] });
96
+ TuiPrimitiveSpinButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, imports: [[CommonModule, TuiPreventDefaultModule, TuiButtonModule]] });
109
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiPrimitiveSpinButtonModule, decorators: [{
110
98
  type: NgModule,
111
99
  args: [{
112
- imports: [
113
- CommonModule,
114
- TuiFocusVisibleModule,
115
- TuiFocusedModule,
116
- TuiFocusableModule,
117
- TuiPreventDefaultModule,
118
- TuiButtonModule,
119
- ],
100
+ imports: [CommonModule, TuiPreventDefaultModule, TuiButtonModule],
120
101
  declarations: [TuiPrimitiveSpinButtonComponent],
121
102
  exports: [TuiPrimitiveSpinButtonComponent],
122
103
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-primitive-spin-button.js","sources":["../../../projects/core/components/primitive-spin-button/primitive-spin-button.component.ts","../../../projects/core/components/primitive-spin-button/primitive-spin-button.template.html","../../../projects/core/components/primitive-spin-button/primitive-spin-button.module.ts","../../../projects/core/components/primitive-spin-button/taiga-ui-core-components-primitive-spin-button.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {AbstractTuiInteractive, tuiDefaultProp, tuiIsNativeFocused} from '@taiga-ui/cdk';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'tui-primitive-spin-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './primitive-spin-button.template.html',\n styleUrls: ['./primitive-spin-button.style.less'],\n})\nexport class TuiPrimitiveSpinButtonComponent extends AbstractTuiInteractive {\n @ViewChild('wrapper')\n private readonly wrapper?: ElementRef<HTMLElement>;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n mode: TuiAppearance = TuiAppearance.Flat;\n\n @Input()\n @tuiDefaultProp()\n leftDisabled = false;\n\n @Input()\n @tuiDefaultProp()\n rightDisabled = false;\n\n @Output()\n readonly leftClick = new EventEmitter<void>();\n\n @Output()\n readonly rightClick = new EventEmitter<void>();\n\n constructor(\n @Inject(TUI_SPIN_TEXTS) readonly spinTexts$: Observable<[string, string]>,\n ) {\n super();\n }\n\n get focused(): boolean {\n return !!this.wrapper && tuiIsNativeFocused(this.wrapper.nativeElement);\n }\n\n get leftComputedDisabled(): boolean {\n return this.computedDisabled || this.leftDisabled;\n }\n\n get rightComputedDisabled(): boolean {\n return this.computedDisabled || this.rightDisabled;\n }\n\n onLeftClick(): void {\n if (!this.leftComputedDisabled) {\n this.leftClick.emit();\n }\n }\n\n onRightClick(): void {\n if (!this.rightComputedDisabled) {\n this.rightClick.emit();\n }\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n onFocusVisible(focusVisible: boolean): void {\n this.updateFocusVisible(focusVisible);\n }\n}\n","<div\n *ngIf=\"spinTexts$ | async as texts\"\n #wrapper\n tuiPreventDefault=\"mousedown\"\n class=\"t-wrapper\"\n [tuiFocusable]=\"computedFocusable\"\n (tuiFocusedChange)=\"onFocused($event)\"\n (tuiFocusVisibleChange)=\"onFocusVisible($event)\"\n (keydown.arrowLeft)=\"onLeftClick()\"\n (keydown.arrowRight)=\"onRightClick()\"\n>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__left\"\n icon=\"tuiIconChevronLeftLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"leftComputedDisabled\"\n [title]=\"texts[0]\"\n [focusable]=\"false\"\n (click)=\"onLeftClick()\"\n ></button>\n <span class=\"t-content t-calendar-title\">\n <ng-content></ng-content>\n </span>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__right\"\n icon=\"tuiIconChevronRightLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"rightComputedDisabled\"\n [title]=\"texts[1]\"\n [focusable]=\"false\"\n (click)=\"onRightClick()\"\n ></button>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiFocusableModule,\n TuiFocusedModule,\n TuiFocusVisibleModule,\n TuiPreventDefaultModule,\n} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core/components/button';\n\nimport {TuiPrimitiveSpinButtonComponent} from './primitive-spin-button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiFocusVisibleModule,\n TuiFocusedModule,\n TuiFocusableModule,\n TuiPreventDefaultModule,\n TuiButtonModule,\n ],\n declarations: [TuiPrimitiveSpinButtonComponent],\n exports: [TuiPrimitiveSpinButtonComponent],\n})\nexport class TuiPrimitiveSpinButtonModule {}\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-core-components-primitive-spin-button.js","sources":["../../../projects/core/components/primitive-spin-button/primitive-spin-button.component.ts","../../../projects/core/components/primitive-spin-button/primitive-spin-button.template.html","../../../projects/core/components/primitive-spin-button/primitive-spin-button.module.ts","../../../projects/core/components/primitive-spin-button/taiga-ui-core-components-primitive-spin-button.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {AbstractTuiInteractive, tuiDefaultProp, tuiIsNativeFocused} from '@taiga-ui/cdk';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'tui-primitive-spin-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './primitive-spin-button.template.html',\n styleUrls: ['./primitive-spin-button.style.less'],\n})\nexport class TuiPrimitiveSpinButtonComponent extends AbstractTuiInteractive {\n @ViewChild('wrapper')\n private readonly wrapper?: ElementRef<HTMLElement>;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n mode: TuiAppearance = TuiAppearance.Flat;\n\n @Input()\n @tuiDefaultProp()\n leftDisabled = false;\n\n @Input()\n @tuiDefaultProp()\n rightDisabled = false;\n\n @Output()\n readonly leftClick = new EventEmitter<void>();\n\n @Output()\n readonly rightClick = new EventEmitter<void>();\n\n constructor(\n @Inject(TUI_SPIN_TEXTS) readonly spinTexts$: Observable<[string, string]>,\n ) {\n super();\n }\n\n get focused(): boolean {\n return !!this.wrapper && tuiIsNativeFocused(this.wrapper.nativeElement);\n }\n\n get leftComputedDisabled(): boolean {\n return this.computedDisabled || this.leftDisabled;\n }\n\n get rightComputedDisabled(): boolean {\n return this.computedDisabled || this.rightDisabled;\n }\n\n onLeftClick(): void {\n if (!this.leftComputedDisabled) {\n this.leftClick.emit();\n }\n }\n\n onRightClick(): void {\n if (!this.rightComputedDisabled) {\n this.rightClick.emit();\n }\n }\n\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n onFocusVisible(focusVisible: boolean): void {\n this.updateFocusVisible(focusVisible);\n }\n}\n","<div\n *ngIf=\"spinTexts$ | async as texts\"\n #wrapper\n tuiPreventDefault=\"mousedown\"\n class=\"t-wrapper\"\n (focusin)=\"onFocused(true)\"\n (focusout)=\"onFocused(false)\"\n (keydown.arrowLeft)=\"onLeftClick()\"\n (keydown.arrowRight)=\"onRightClick()\"\n>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__left\"\n icon=\"tuiIconChevronLeftLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"leftComputedDisabled\"\n [title]=\"texts[0]\"\n [focusable]=\"computedFocusable\"\n (click)=\"onLeftClick()\"\n ></button>\n <span class=\"t-content t-calendar-title\">\n <ng-content></ng-content>\n </span>\n <button\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n appearance=\"\"\n automation-id=\"tui-primitive-spin-button__right\"\n icon=\"tuiIconChevronRightLarge\"\n class=\"t-arrow\"\n [class.t-arrow_hidden]=\"rightComputedDisabled\"\n [title]=\"texts[1]\"\n [focusable]=\"computedFocusable\"\n (click)=\"onRightClick()\"\n ></button>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPreventDefaultModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core/components/button';\n\nimport {TuiPrimitiveSpinButtonComponent} from './primitive-spin-button.component';\n\n@NgModule({\n imports: [CommonModule, TuiPreventDefaultModule, TuiButtonModule],\n declarations: [TuiPrimitiveSpinButtonComponent],\n exports: [TuiPrimitiveSpinButtonComponent],\n})\nexport class TuiPrimitiveSpinButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}