@mintplayer/ng-bootstrap 20.0.0-preview.2 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +13 -13
  2. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  3. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +10 -10
  4. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  5. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +3 -3
  6. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  7. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +10 -10
  8. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +3 -3
  10. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  11. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +3 -3
  12. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  13. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -9
  14. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  15. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +3 -3
  16. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  17. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +10 -10
  18. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  19. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +13 -13
  20. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  21. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +3 -3
  22. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  23. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +3 -3
  24. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  25. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +28 -28
  26. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  27. package/fesm2022/mintplayer-ng-bootstrap-container.mjs +3 -3
  28. package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
  29. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +7 -7
  30. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +3 -3
  32. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +13 -13
  34. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +3 -3
  36. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +19 -19
  38. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  39. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +3 -3
  40. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +10 -10
  42. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +13 -13
  44. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +3 -3
  46. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  47. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
  48. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  49. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +13 -13
  50. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  51. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +3 -3
  52. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  53. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -3
  54. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
  55. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +3 -3
  56. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  57. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +13 -13
  58. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  59. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +19 -19
  60. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  61. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +3 -3
  62. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  63. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -3
  64. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
  65. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -3
  66. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
  67. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +3 -3
  68. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  69. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +16 -16
  70. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
  71. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +3 -3
  72. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
  73. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -3
  74. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
  75. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +10 -10
  76. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  77. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -12
  78. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  79. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +3 -3
  80. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  81. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +25 -25
  82. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  83. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +16 -16
  84. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  85. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +3 -3
  86. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  87. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +31 -31
  88. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  89. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +10 -10
  90. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  91. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +3 -3
  92. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  93. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +25 -25
  94. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  95. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -3
  96. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  97. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +3 -3
  98. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  99. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +3 -3
  100. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
  101. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +11 -11
  102. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  103. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +3 -3
  104. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  105. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +16 -16
  106. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  107. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +10 -10
  108. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  109. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +10 -10
  110. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  111. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +3 -3
  112. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  113. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +10 -10
  114. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  115. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +25 -25
  116. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  117. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +13 -13
  118. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  119. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +16 -16
  120. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  121. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +13 -13
  122. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  123. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +13 -13
  124. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  125. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +10 -10
  126. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  127. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +3 -3
  128. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  129. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -3
  130. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
  131. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +3 -3
  132. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  133. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -3
  134. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
  135. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +13 -13
  136. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
  137. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +10 -10
  138. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
  139. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +13 -13
  140. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  141. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +3 -3
  142. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  143. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +3 -3
  144. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  145. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +25 -25
  146. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  147. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +13 -13
  148. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  149. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +10 -10
  150. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  151. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +10 -10
  152. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  153. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -3
  154. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
  155. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +3 -3
  156. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  157. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -3
  158. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
  159. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +3 -3
  160. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  161. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -3
  162. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
  163. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-color-picker.mjs","sources":["../tmp-esm2022/color-picker/components/color-wheel/color-wheel.component.js","../tmp-esm2022/color-picker/components/slider/slider.component.js","../tmp-esm2022/color-picker/components/luminosity-strip/luminosity-strip.component.js","../tmp-esm2022/color-picker/components/alpha-strip/alpha-strip.component.js","../tmp-esm2022/color-picker/components/color-picker/color-picker.component.js","../tmp-esm2022/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.js","../tmp-esm2022/color-picker/color-picker.module.js","../tmp-esm2022/color-picker/mintplayer-ng-bootstrap-color-picker.js"],"sourcesContent":["import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, debounceTime, map, take, switchMap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nexport class BsColorWheelComponent {\n constructor(element) {\n // this.resizeObserver = new ResizeObserver((entries) => {\n // for (const entry of entries) {\n // if (entry.target === this.element.nativeElement) {\n // console.log(entry.contentRect);\n // this.width$.next(entry.contentRect.width);\n // this.height$.next(entry.contentRect.height);\n // break;\n // }\n // }\n // });\n this.element = element;\n this.positionRelative = true;\n //#region Hue/Luminosity\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n this.hsChange = new EventEmitter();\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0);\n //#endregion\n // private resizeObserver: ResizeObserver;\n this.canvasContext = null;\n this.isPointerDown = false;\n this.width$ = new BehaviorSubject(150);\n this.height$ = new BehaviorSubject(150);\n this.diameterRatio$ = new BehaviorSubject(0);\n this.disabled$ = new BehaviorSubject(false);\n this.viewInited$ = new BehaviorSubject(false);\n this.squareSize$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n const squareSize = Math.min(width, height);\n return squareSize;\n }));\n this.shiftX$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n else if (width < height) {\n return 0;\n }\n else {\n return (width - height) / 2;\n }\n }));\n this.shiftY$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n else if (width < height) {\n return (height - width) / 2;\n }\n else {\n return 0;\n }\n }));\n this.innerRadius$ = combineLatest([this.squareSize$, this.diameterRatio$])\n .pipe(map(([squareSize, diameterRatio]) => {\n if (squareSize) {\n return squareSize / 2 * diameterRatio;\n }\n else {\n return 0;\n }\n }));\n this.outerRadius$ = combineLatest([this.squareSize$, this.diameterRatio$])\n .pipe(map(([squareSize, diameterRatio]) => {\n if (squareSize) {\n return squareSize / 2;\n }\n else {\n return 150;\n }\n }));\n combineLatest([this.innerRadius$, this.outerRadius$, this.shiftX$, this.shiftY$])\n .pipe(debounceTime(20), takeUntilDestroyed())\n .subscribe(([innerRadius, outerRadius, shiftX, shiftY]) => {\n if (this.canvasContext && (innerRadius !== null) && (outerRadius !== null) && (shiftX !== null) && (shiftY !== null)) {\n this.canvasContext.clearRect(0, 0, this.canvas.nativeElement.width, this.canvas.nativeElement.height);\n this.canvasContext.save();\n this.canvasContext.translate(shiftX + outerRadius, shiftY + outerRadius);\n for (let x = 0; x < 360; x++) {\n this.canvasContext.rotate(1 * Math.PI / 180);\n const gradient = this.canvasContext.createLinearGradient(innerRadius, 0, outerRadius, 0);\n gradient.addColorStop(0, `hsl(${x}, 0%, 50%)`);\n gradient.addColorStop(1, `hsl(${x}, 100%, 50%)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(innerRadius, 0, outerRadius - innerRadius, outerRadius / 50);\n }\n this.canvasContext.restore();\n }\n });\n this.markerPosition$ = combineLatest([this.hs$, this.shiftX$, this.shiftY$])\n .pipe(switchMap(([hs, shiftX, shiftY]) => {\n return this.color2position(hs)\n .pipe(map((position) => ({ position, shiftX: (shiftX ?? 0), shiftY: (shiftY ?? 0) })));\n }))\n .pipe(map(({ position, shiftX, shiftY }) => {\n return {\n x: position.x + shiftX,\n y: position.y + shiftY,\n };\n }));\n this.hs$.pipe(takeUntilDestroyed())\n .subscribe((hs) => this.hsChange.emit(hs));\n }\n set diameterRatio(value) {\n this.diameterRatio$.next(value);\n }\n set width(value) {\n this.width$.next(value);\n }\n set height(value) {\n this.height$.next(value);\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n ngAfterViewInit() {\n // this.resizeObserver.observe(this.element.nativeElement);\n this.viewInited$.next(true);\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n onPointerDown(ev) {\n if (!this.disabled$.value) {\n ev.preventDefault();\n this.isPointerDown = true;\n this.updateColor(ev, !('touches' in ev));\n }\n }\n onPointerMove(ev) {\n if (this.isPointerDown) {\n ev.preventDefault();\n ev.stopPropagation();\n this.updateColor(ev, !('touches' in ev));\n }\n }\n onMouseMove(ev) {\n this.onPointerMove(ev);\n }\n onPointerUp(ev) {\n this.isPointerDown = false;\n }\n updateColor(ev, subtract) {\n let co;\n const rect = this.canvas.nativeElement.getBoundingClientRect();\n if ('touches' in ev) {\n co = {\n x: ev.touches[0].clientX - rect.left,\n y: ev.touches[0].clientY - rect.top,\n };\n }\n else {\n co = {\n x: ev.clientX - (subtract ? rect.left : 0),\n y: ev.clientY - (subtract ? rect.top : 0),\n };\n }\n this.position2color(co.x, co.y).pipe(take(1)).subscribe((color) => {\n if (color) {\n this.hs$.next({ hue: color.hue, saturation: color.saturation });\n }\n else {\n console.warn('Color is null');\n }\n });\n }\n isInsideCircle(x, y) {\n return combineLatest([this.squareSize$, this.shiftX$, this.shiftY$])\n .pipe(map(([squareSize, shiftX, shiftY]) => {\n // Position to the square\n const sx = x - (shiftX ?? 0);\n const sy = y - (shiftY ?? 0);\n // Square radius\n const sr = (squareSize ?? 0) / 2;\n const radius = Math.sqrt(Math.pow(sx - sr, 2) + Math.pow(sy - sr, 2));\n const angle = (Math.atan2(sr - sy, sr - sx) + Math.PI) % 360;\n return {\n inside: radius <= sr,\n angle\n };\n }));\n }\n position2color(x, y) {\n return this.isInsideCircle(x, y).pipe(map((result) => {\n if (!this.canvasContext) {\n return null;\n }\n if (result.inside) {\n const imageData = this.canvasContext.getImageData(x, y, 1, 1).data;\n const hsl = this.rgb2Hsl({ r: imageData[0], g: imageData[1], b: imageData[2] });\n return hsl;\n }\n return { hue: result.angle * 180 / Math.PI, saturation: 1, luminosity: 0.5 };\n }));\n }\n color2position(hs) {\n return combineLatest([this.innerRadius$, this.outerRadius$])\n .pipe(map(([innerRadius, outerRadius]) => {\n if (innerRadius === null) {\n innerRadius = 0;\n }\n if (!outerRadius) {\n outerRadius = 100;\n }\n const theta = hs.hue * Math.PI / 180;\n const c = {\n x: -outerRadius * Math.cos(theta),\n y: -outerRadius * Math.sin(theta)\n };\n const d = hs.saturation * (outerRadius - innerRadius) + innerRadius;\n const o = { x: outerRadius, y: outerRadius };\n return {\n x: o.x - d * (c.x / outerRadius),\n y: o.y - d * (c.y / outerRadius),\n };\n }));\n }\n rgb2Hsl(color) {\n const r01 = this.bound01(color.r, 255);\n const g01 = this.bound01(color.g, 255);\n const b01 = this.bound01(color.b, 255);\n const max = Math.max(r01, g01, b01);\n const min = Math.min(r01, g01, b01);\n let h, s;\n const l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n const d = max - min;\n s = (l > 0.5) ? (d / (2 - max - min)) : (d / (max + min));\n switch (max) {\n case r01:\n {\n h = (g01 - b01) / d + ((g01 < b01) ? 6 : 0);\n }\n break;\n case g01:\n {\n h = (b01 - r01) / d + 2;\n }\n break;\n case b01:\n {\n h = (r01 - g01) / d + 4;\n }\n break;\n default: {\n throw 'Invalid operation';\n }\n }\n h /= 6;\n }\n h *= 360;\n return { hue: h, saturation: s, luminosity: l };\n }\n /**\n * Divide 1 to n, handling floating point errors.\n * Ensures that the value is in between 0 and 1.\n **/\n bound01(n, max) {\n n = Math.min(max, Math.max(0, n));\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n else {\n return (n % max) / max;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorWheelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0-rc.2\", type: BsColorWheelComponent, isStandalone: false, selector: \"bs-color-wheel\", inputs: { diameterRatio: \"diameterRatio\", width: \"width\", height: \"height\", hs: \"hs\", luminosity: \"luminosity\" }, outputs: { hsChange: \"hsChange\" }, host: { listeners: { \"document:mousemove\": \"onMouseMove($event)\", \"document:mouseup\": \"onPointerUp($event)\" }, properties: { \"class.position-relative\": \"this.positionRelative\" } }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true }], ngImport: i0, template: \"<canvas\\n class=\\\"d-block\\\"\\n [width]=\\\"width$ | async\\\"\\n [height]=\\\"height$ | async\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n #canvas></canvas>\\n\\n@if (markerPosition$ | async; as markerPosition) {\\n <div class=\\\"thumb position-absolute pe-none\\\" [style.left.px]=\\\"markerPosition.x\\\" [style.top.px]=\\\"markerPosition.y\\\"></div>\\n}\", styles: [\".thumb{width:30px;height:30px;border-radius:15px;margin-top:-15px;margin-left:-15px;box-sizing:border-box;border:2px solid white;box-shadow:#0000001a 0 0 10px 5px}\\n\"], dependencies: [{ kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorWheelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-color-wheel', standalone: false, template: \"<canvas\\n class=\\\"d-block\\\"\\n [width]=\\\"width$ | async\\\"\\n [height]=\\\"height$ | async\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n #canvas></canvas>\\n\\n@if (markerPosition$ | async; as markerPosition) {\\n <div class=\\\"thumb position-absolute pe-none\\\" [style.left.px]=\\\"markerPosition.x\\\" [style.top.px]=\\\"markerPosition.y\\\"></div>\\n}\", styles: [\".thumb{width:30px;height:30px;border-radius:15px;margin-top:-15px;margin-left:-15px;box-sizing:border-box;border:2px solid white;box-shadow:#0000001a 0 0 10px 5px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { positionRelative: [{\n type: HostBinding,\n args: ['class.position-relative']\n }], diameterRatio: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['canvas']\n }], hsChange: [{\n type: Output\n }], hs: [{\n type: Input\n }], luminosity: [{\n type: Input\n }], onMouseMove: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }], onPointerUp: [{\n type: HostListener,\n args: ['document:mouseup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itd2hlZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvY29tcG9uZW50cy9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2NvbG9yLXdoZWVsL2NvbG9yLXdoZWVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBV2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBb0IsT0FBZ0M7UUFDbEQsMERBQTBEO1FBQzFELG1DQUFtQztRQUNuQyx5REFBeUQ7UUFDekQsd0NBQXdDO1FBQ3hDLG1EQUFtRDtRQUNuRCxxREFBcUQ7UUFDckQsZUFBZTtRQUNmLFFBQVE7UUFDUixNQUFNO1FBQ04sTUFBTTtRQVZZLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBcUdaLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWFoRSx3QkFBd0I7UUFDeEIsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQU81QyxZQUFZO1FBQ1osb0JBQW9CO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFPN0MsWUFBWTtRQUVaLDBDQUEwQztRQUNsQyxrQkFBYSxHQUFvQyxJQUFJLENBQUM7UUFDdEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDOUIsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxHQUFHLENBQUMsQ0FBQztRQUMzQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBU2hELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBMUloRCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDM0MsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7aUJBQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztpQkFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxVQUFVLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixPQUFPLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO2FBQzVDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUN4RCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO2dCQUV6RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO29CQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUV6RixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQy9DLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFFakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO29CQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLFdBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRixDQUFDO2dCQUVELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2lCQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQzthQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLEVBQUUsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU07Z0JBQ3RCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU07YUFDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBSUQsSUFBYSxhQUFhLENBQUMsS0FBYTtRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBYSxNQUFNLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBTUQsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBb0IsRUFBRSxDQUFDLEtBQVM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUlELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFvQixVQUFVLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBcUJELGVBQWU7UUFDYiwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQTJCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsRUFBMkI7UUFDdkMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFHRCxXQUFXLENBQUMsRUFBYztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFHRCxXQUFXLENBQUMsRUFBMkI7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxFQUEyQixFQUFFLFFBQWlCO1FBQ2hFLElBQUksRUFBNEIsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9ELElBQUksU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLEVBQUUsR0FBRztnQkFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7Z0JBQ3BDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRzthQUNwQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixFQUFFLEdBQUc7Z0JBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUN6QyxPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ3pDLHlCQUF5QjtZQUN6QixNQUFNLEVBQUUsR0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLGdCQUFnQjtZQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDN0QsT0FBTztnQkFDTCxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUU7Z0JBQ3BCLEtBQUs7YUFDTixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTyxjQUFjLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDekMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEYsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBRUQsT0FBaUIsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLGNBQWMsQ0FBQyxFQUFNO1FBQzNCLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUNwQixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNyQyxNQUFNLENBQUMsR0FBRztnQkFDUixDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzthQUNsQyxDQUFDO1lBRUYsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDcEUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUU3QyxPQUFPO2dCQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzthQUNqQyxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBZTtRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBUyxFQUFFLENBQVMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNkLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ3BCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUQsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDVixLQUFLLEdBQUc7b0JBQUUsQ0FBQzt3QkFDUCxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELENBQUM7b0JBQUMsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQUUsQ0FBQzt3QkFDUCxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDNUIsQ0FBQztvQkFBQyxNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFBRSxDQUFDO3dCQUNQLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM1QixDQUFDO29CQUFDLE1BQU07Z0JBQ1IsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDTixNQUFNLG1CQUFtQixDQUFDO2dCQUM5QixDQUFDO1lBQ0wsQ0FBQztZQUVELENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUVULE9BQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztRQUdJO0lBQ0ksT0FBTyxDQUFDLENBQVMsRUFBRSxHQUFXO1FBQ2xDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQzttSEE5VFUscUJBQXFCO3VHQUFyQixxQkFBcUIsdWZDYmxDLGdlQVlDOztnR0RDWSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzsrRUF5R3VCLGdCQUFnQjtzQkFBdkQsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBRXpCLGFBQWE7c0JBQXpCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSztnQkFHTyxNQUFNO3NCQUFsQixLQUFLO2dCQUdlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFJVCxRQUFRO3NCQUFqQixNQUFNO2dCQUlhLEVBQUU7c0JBQXJCLEtBQUs7Z0JBU2MsVUFBVTtzQkFBN0IsS0FBSztnQkE4Q04sV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU05QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgbWFwLCB0YWtlLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEhTIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ocyc7XG5pbXBvcnQgeyBIc2xDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaHNsLWNvbG9yJztcbmltcG9ydCB7IFJnYkNvbG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZ2ItY29sb3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1jb2xvci13aGVlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci13aGVlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXdoZWVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc0NvbG9yV2hlZWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgLy8gdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIC8vICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgLy8gICAgICAgY29uc29sZS5sb2coZW50cnkuY29udGVudFJlY3QpO1xuICAgIC8vICAgICAgIHRoaXMud2lkdGgkLm5leHQoZW50cnkuY29udGVudFJlY3Qud2lkdGgpO1xuICAgIC8vICAgICAgIHRoaXMuaGVpZ2h0JC5uZXh0KGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gICAgLy8gICAgICAgYnJlYWs7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcblxuICAgIHRoaXMuc3F1YXJlU2l6ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZHRoJCwgdGhpcy5oZWlnaHQkXSlcbiAgICAgIC5waXBlKG1hcCgoW3dpZHRoLCBoZWlnaHRdKSA9PiB7XG4gICAgICAgIGlmICgod2lkdGggPT09IG51bGwpIHx8IChoZWlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcXVhcmVTaXplID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHJldHVybiBzcXVhcmVTaXplO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5zaGlmdFgkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWR0aCQsIHRoaXMuaGVpZ2h0JF0pXG4gICAgICAucGlwZShtYXAoKFt3aWR0aCwgaGVpZ2h0XSkgPT4ge1xuICAgICAgICBpZiAoKHdpZHRoID09PSBudWxsKSB8fCAoaGVpZ2h0ID09PSBudWxsKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHdpZHRoIDwgaGVpZ2h0KSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICh3aWR0aCAtIGhlaWdodCkgLyAyO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnNoaWZ0WSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZHRoJCwgdGhpcy5oZWlnaHQkXSlcbiAgICAgIC5waXBlKG1hcCgoW3dpZHRoLCBoZWlnaHRdKSA9PiB7XG4gICAgICAgIGlmICgod2lkdGggPT09IG51bGwpIHx8IChoZWlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAod2lkdGggPCBoZWlnaHQpIHtcbiAgICAgICAgICByZXR1cm4gKGhlaWdodCAtIHdpZHRoKSAvIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMuaW5uZXJSYWRpdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zcXVhcmVTaXplJCwgdGhpcy5kaWFtZXRlclJhdGlvJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBkaWFtZXRlclJhdGlvXSkgPT4ge1xuICAgICAgICBpZiAoc3F1YXJlU2l6ZSkge1xuICAgICAgICAgIHJldHVybiBzcXVhcmVTaXplIC8gMiAqIGRpYW1ldGVyUmF0aW87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMub3V0ZXJSYWRpdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zcXVhcmVTaXplJCwgdGhpcy5kaWFtZXRlclJhdGlvJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBkaWFtZXRlclJhdGlvXSkgPT4ge1xuICAgICAgICBpZiAoc3F1YXJlU2l6ZSkge1xuICAgICAgICAgIHJldHVybiBzcXVhcmVTaXplIC8gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gMTUwO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gIFxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaW5uZXJSYWRpdXMkLCB0aGlzLm91dGVyUmFkaXVzJCwgdGhpcy5zaGlmdFgkLCB0aGlzLnNoaWZ0WSRdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChbaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FudmFzQ29udGV4dCAmJiAoaW5uZXJSYWRpdXMgIT09IG51bGwpICYmIChvdXRlclJhZGl1cyAhPT0gbnVsbCkgJiYgKHNoaWZ0WCAhPT0gbnVsbCkgJiYgKHNoaWZ0WSAhPT0gbnVsbCkpIHtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC50cmFuc2xhdGUoc2hpZnRYICsgb3V0ZXJSYWRpdXMsIHNoaWZ0WSArIG91dGVyUmFkaXVzKTtcblxuICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgMzYwOyB4KyspIHtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5yb3RhdGUoMSAqIE1hdGguUEkgLyAxODApO1xuICAgICAgICAgICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmNhbnZhc0NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoaW5uZXJSYWRpdXMsIDAsIG91dGVyUmFkaXVzLCAwKTtcblxuICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGBoc2woJHt4fSwgMCUsIDUwJSlgKTtcbiAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsKCR7eH0sIDEwMCUsIDUwJSlgKTtcblxuICAgICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxSZWN0KGlubmVyUmFkaXVzLCAwLCBvdXRlclJhZGl1cyAtIGlubmVyUmFkaXVzLCBvdXRlclJhZGl1cyAvIDUwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMubWFya2VyUG9zaXRpb24kID0gY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMuc2hpZnRYJCwgdGhpcy5zaGlmdFkkXSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoW2hzLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3IycG9zaXRpb24oaHMpXG4gICAgICAgICAgLnBpcGUobWFwKChwb3NpdGlvbikgPT4gKHtwb3NpdGlvbiwgc2hpZnRYOiAoc2hpZnRYID8/IDApLCBzaGlmdFk6IChzaGlmdFkgPz8gMCl9KSkpO1xuICAgICAgfSkpXG4gICAgICAucGlwZShtYXAoKHtwb3NpdGlvbiwgc2hpZnRYLCBzaGlmdFl9KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogcG9zaXRpb24ueCArIHNoaWZ0WCxcbiAgICAgICAgICB5OiBwb3NpdGlvbi55ICsgc2hpZnRZLFxuICAgICAgICB9O1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5ocyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGhzKSA9PiB0aGlzLmhzQ2hhbmdlLmVtaXQoaHMpKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9zaXRpb24tcmVsYXRpdmUnKSBwb3NpdGlvblJlbGF0aXZlID0gdHJ1ZTtcbiAgXG4gIEBJbnB1dCgpIHNldCBkaWFtZXRlclJhdGlvKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmRpYW1ldGVyUmF0aW8kLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBcbiAgLy8jcmVnaW9uIEh1ZS9MdW1pbm9zaXR5XG4gIGhzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SFM+KHsgaHVlOiAwLCBzYXR1cmF0aW9uOiAwIH0pO1xuICBAT3V0cHV0KCkgaHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEhTPigpO1xuICBwdWJsaWMgZ2V0IGhzKCkge1xuICAgIHJldHVybiB0aGlzLmhzJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGhzKHZhbHVlOiBIUykge1xuICAgIHRoaXMuaHMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gTHVtaW5vc2l0eVxuICBsdW1pbm9zaXR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBjYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpc1BvaW50ZXJEb3duID0gZmFsc2U7XG4gIHdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxNTApO1xuICBoZWlnaHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE1MCk7XG4gIGRpYW1ldGVyUmF0aW8kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIHNxdWFyZVNpemUkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBzaGlmdFgkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBzaGlmdFkkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuXG4gIGlubmVyUmFkaXVzJDogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPjtcbiAgb3V0ZXJSYWRpdXMkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBtYXJrZXJQb3NpdGlvbiQ6IE9ic2VydmFibGU8e3g6IG51bWJlciwgeTogbnVtYmVyfT47XG4gIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBcbiAgdmlld0luaXRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnZpZXdJbml0ZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jYW52YXNDb250ZXh0ID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcsIHsgd2lsbFJlYWRGcmVxdWVudGx5OiB0cnVlIH0pO1xuICB9XG5cbiAgb25Qb2ludGVyRG93bihldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQkLnZhbHVlKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5pc1BvaW50ZXJEb3duID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3IoZXYsICEoJ3RvdWNoZXMnIGluIGV2KSk7XG4gICAgfVxuICB9XG5cbiAgb25Qb2ludGVyTW92ZShldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1BvaW50ZXJEb3duKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yKGV2LCAhKCd0b3VjaGVzJyBpbiBldikpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblBvaW50ZXJNb3ZlKGV2KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBvblBvaW50ZXJVcChldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzUG9pbnRlckRvd24gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sb3IoZXY6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBzdWJ0cmFjdDogYm9vbGVhbikge1xuICAgIGxldCBjbzogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9O1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICgndG91Y2hlcycgaW4gZXYpIHtcbiAgICAgIGNvID0ge1xuICAgICAgICB4OiBldi50b3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICAgIHk6IGV2LnRvdWNoZXNbMF0uY2xpZW50WSAtIHJlY3QudG9wLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY28gPSB7XG4gICAgICAgIHg6IGV2LmNsaWVudFggLSAoc3VidHJhY3QgPyByZWN0LmxlZnQgOiAwKSxcbiAgICAgICAgeTogZXYuY2xpZW50WSAtIChzdWJ0cmFjdCA/IHJlY3QudG9wIDogMCksXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnBvc2l0aW9uMmNvbG9yKGNvLngsIGNvLnkpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjb2xvcikgPT4ge1xuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIHRoaXMuaHMkLm5leHQoeyBodWU6IGNvbG9yLmh1ZSwgc2F0dXJhdGlvbjogY29sb3Iuc2F0dXJhdGlvbiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ29sb3IgaXMgbnVsbCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0luc2lkZUNpcmNsZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnNxdWFyZVNpemUkLCB0aGlzLnNoaWZ0WCQsIHRoaXMuc2hpZnRZJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgLy8gUG9zaXRpb24gdG8gdGhlIHNxdWFyZVxuICAgICAgICBjb25zdCBzeDogbnVtYmVyID0geCAtIChzaGlmdFggPz8gMCk7XG4gICAgICAgIGNvbnN0IHN5ID0geSAtIChzaGlmdFkgPz8gMCk7XG4gICAgICAgIC8vIFNxdWFyZSByYWRpdXNcbiAgICAgICAgY29uc3Qgc3IgPSAoc3F1YXJlU2l6ZSA/PyAwKSAvIDI7XG5cbiAgICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5zcXJ0KE1hdGgucG93KHN4IC0gc3IsIDIpICsgTWF0aC5wb3coc3kgLSBzciwgMikpO1xuICAgICAgICBjb25zdCBhbmdsZSA9IChNYXRoLmF0YW4yKHNyIC0gc3ksIHNyIC0gc3gpICsgTWF0aC5QSSkgJSAzNjA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5zaWRlOiByYWRpdXMgPD0gc3IsXG4gICAgICAgICAgYW5nbGVcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb24yY29sb3IoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5pc0luc2lkZUNpcmNsZSh4LCB5KS5waXBlKG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY2FudmFzQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5pbnNpZGUpIHtcbiAgICAgICAgY29uc3QgaW1hZ2VEYXRhID0gdGhpcy5jYW52YXNDb250ZXh0LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKS5kYXRhO1xuICAgICAgICBjb25zdCBoc2wgPSB0aGlzLnJnYjJIc2woeyByOiBpbWFnZURhdGFbMF0sIGc6IGltYWdlRGF0YVsxXSwgYjogaW1hZ2VEYXRhWzJdIH0pO1xuICAgICAgICByZXR1cm4gaHNsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gPEhzbENvbG9yPnsgaHVlOiByZXN1bHQuYW5nbGUgKiAxODAgLyBNYXRoLlBJLCBzYXR1cmF0aW9uOiAxLCBsdW1pbm9zaXR5OiAwLjUgfTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yMnBvc2l0aW9uKGhzOiBIUykge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmlubmVyUmFkaXVzJCwgdGhpcy5vdXRlclJhZGl1cyRdKVxuICAgICAgLnBpcGUobWFwKChbaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzXSkgPT4ge1xuICAgICAgICBpZiAoaW5uZXJSYWRpdXMgPT09IG51bGwpIHtcbiAgICAgICAgICBpbm5lclJhZGl1cyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvdXRlclJhZGl1cykge1xuICAgICAgICAgIG91dGVyUmFkaXVzID0gMTAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhldGEgPSBocy5odWUgKiBNYXRoLlBJIC8gMTgwO1xuICAgICAgICBjb25zdCBjID0ge1xuICAgICAgICAgIHg6IC1vdXRlclJhZGl1cyAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgICB5OiAtb3V0ZXJSYWRpdXMgKiBNYXRoLnNpbih0aGV0YSlcbiAgICAgICAgfTtcbiAgICBcbiAgICAgICAgY29uc3QgZCA9IGhzLnNhdHVyYXRpb24gKiAob3V0ZXJSYWRpdXMgLSBpbm5lclJhZGl1cykgKyBpbm5lclJhZGl1cztcbiAgICAgICAgY29uc3QgbyA9IHsgeDogb3V0ZXJSYWRpdXMsIHk6IG91dGVyUmFkaXVzIH07XG4gICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogby54IC0gZCAqIChjLnggLyBvdXRlclJhZGl1cyksXG4gICAgICAgICAgeTogby55IC0gZCAqIChjLnkgLyBvdXRlclJhZGl1cyksXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSByZ2IySHNsKGNvbG9yOiBSZ2JDb2xvcikge1xuICAgIGNvbnN0IHIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5yLCAyNTUpO1xuICAgIGNvbnN0IGcwMSA9IHRoaXMuYm91bmQwMShjb2xvci5nLCAyNTUpO1xuICAgIGNvbnN0IGIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5iLCAyNTUpO1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgocjAxLCBnMDEsIGIwMSk7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocjAxLCBnMDEsIGIwMSk7XG5cbiAgICBsZXQgaDogbnVtYmVyLCBzOiBudW1iZXI7IGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG4gICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgIGggPSBzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkID0gbWF4IC0gbWluO1xuICAgICAgICBzID0gKGwgPiAwLjUpID8gKGQgLyAoMiAtIG1heCAtIG1pbikpIDogKGQgLyAobWF4ICsgbWluKSk7XG4gICAgICAgIHN3aXRjaCAobWF4KSB7XG4gICAgICAgICAgICBjYXNlIHIwMToge1xuICAgICAgICAgICAgICAgIGggPSAoZzAxIC0gYjAxKSAvIGQgKyAoKGcwMSA8IGIwMSkgPyA2IDogMCk7XG4gICAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBnMDE6IHtcbiAgICAgICAgICAgICAgICBoID0gKGIwMSAtIHIwMSkgLyBkICsgMjtcbiAgICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGIwMToge1xuICAgICAgICAgICAgICAgIGggPSAocjAxIC0gZzAxKSAvIGQgKyA0O1xuICAgICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBvcGVyYXRpb24nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBoIC89IDY7XG4gICAgfVxuICAgIFxuICAgIGggKj0gMzYwO1xuXG4gICAgcmV0dXJuIDxIc2xDb2xvcj57IGh1ZTogaCwgc2F0dXJhdGlvbjogcywgbHVtaW5vc2l0eTogbCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZSAxIHRvIG4sIGhhbmRsaW5nIGZsb2F0aW5nIHBvaW50IGVycm9ycy5cbiAgICogRW5zdXJlcyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBiZXR3ZWVuIDAgYW5kIDEuXG4gICAqKi9cbiAgcHJpdmF0ZSBib3VuZDAxKG46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgIG4gPSBNYXRoLm1pbihtYXgsIE1hdGgubWF4KDAsIG4pKTtcbiAgICAgIGlmICgoTWF0aC5hYnMobiAtIG1heCkgPCAwLjAwMDAwMSkpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIChuICUgbWF4KSAvIG1heDtcbiAgICAgIH1cbiAgfVxuXG59XG4iLCI8Y2FudmFzXG4gICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICBbd2lkdGhdPVwid2lkdGgkIHwgYXN5bmNcIlxuICAgIFtoZWlnaHRdPVwiaGVpZ2h0JCB8IGFzeW5jXCJcbiAgICAobW91c2Vkb3duKT1cIm9uUG9pbnRlckRvd24oJGV2ZW50KVwiXG4gICAgKHRvdWNoc3RhcnQpPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAodG91Y2htb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGV2ZW50KVwiXG4gICAgKHRvdWNoZW5kKT1cIm9uUG9pbnRlclVwKCRldmVudClcIlxuICAgICNjYW52YXM+PC9jYW52YXM+XG5cbkBpZiAobWFya2VyUG9zaXRpb24kIHwgYXN5bmM7IGFzIG1hcmtlclBvc2l0aW9uKSB7XG4gICAgPGRpdiBjbGFzcz1cInRodW1iIHBvc2l0aW9uLWFic29sdXRlIHBlLW5vbmVcIiBbc3R5bGUubGVmdC5weF09XCJtYXJrZXJQb3NpdGlvbi54XCIgW3N0eWxlLnRvcC5weF09XCJtYXJrZXJQb3NpdGlvbi55XCI+PC9kaXY+XG59Il19","import { Component, Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nexport class BsSliderComponent {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.dBlock = true;\n this.positionRelative = true;\n //#region Value\n this.value$ = new BehaviorSubject(0.5);\n this.valueChange = new EventEmitter();\n //#endregion\n this.isPointerDown$ = new BehaviorSubject(false);\n this.value$.pipe(takeUntilDestroyed())\n .subscribe((value) => this.valueChange.emit(value));\n this.thumbMarginLeft$ = this.value$.pipe(map((value) => {\n const res = value * element.nativeElement.clientWidth - 12;\n return res;\n }));\n this.cursorClass$ = this.isPointerDown$.pipe(map((isPointerDown) => {\n return isPointerDown ? 'cursor-grabbing' : 'cursor-grab';\n }));\n }\n get value() {\n return this.value$.value;\n }\n set value(value) {\n this.value$.next(value);\n }\n onPointerDown(ev) {\n ev.preventDefault();\n this.zone.run(() => this.isPointerDown$.next(true));\n this.updateColor(ev);\n }\n onPointerMove(ev) {\n if (this.isPointerDown$.value) {\n ev.preventDefault();\n ev.stopPropagation();\n this.updateColor(ev);\n }\n }\n onPointerUp(ev) {\n this.isPointerDown$.next(false);\n }\n updateColor(ev) {\n let co;\n const rect = this.track.nativeElement.getBoundingClientRect();\n if ('touches' in ev) {\n co = {\n x: ev.touches[0].clientX - rect.left,\n };\n }\n else {\n co = {\n x: ev.clientX - rect.left,\n };\n }\n const percent = co.x / this.track.nativeElement.clientWidth;\n const limited = Math.max(0, Math.min(1, percent));\n this.value$.next(limited);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsSliderComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsSliderComponent, isStandalone: false, selector: \"bs-slider\", inputs: { value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { listeners: { \"document:mousemove\": \"onPointerMove($event)\", \"document:mouseup\": \"onPointerUp($event)\" }, properties: { \"class.d-block\": \"this.dBlock\", \"class.position-relative\": \"this.positionRelative\" } }, viewQueries: [{ propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true }, { propertyName: \"thumb\", first: true, predicate: [\"thumb\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"wrapper d-block position-relative\\\">\\n <div #track class=\\\"track2\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\">\\n <ng-content select=\\\"[bsTrack]\\\"></ng-content>\\n </div>\\n <div #thumb\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n [class]=\\\"cursorClass$ | async\\\"\\n [style.margin-left.px]=\\\"thumbMarginLeft$ | async\\\">\\n <ng-content select=\\\"[bsThumb]\\\"></ng-content>\\n </div>\\n</div>\", styles: [\".track2{height:8px}.wrapper{padding-top:8px;padding-bottom:8px}::ng-deep .thumb{width:24px;height:24px;top:0;border-radius:50%;box-shadow:0 0 0 .1rem #646b7240}::ng-deep .track{height:8px;border-radius:8px}\\n\"], dependencies: [{ kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-slider', standalone: false, template: \"<div class=\\\"wrapper d-block position-relative\\\">\\n <div #track class=\\\"track2\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\">\\n <ng-content select=\\\"[bsTrack]\\\"></ng-content>\\n </div>\\n <div #thumb\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n [class]=\\\"cursorClass$ | async\\\"\\n [style.margin-left.px]=\\\"thumbMarginLeft$ | async\\\">\\n <ng-content select=\\\"[bsThumb]\\\"></ng-content>\\n </div>\\n</div>\", styles: [\".track2{height:8px}.wrapper{padding-top:8px;padding-bottom:8px}::ng-deep .thumb{width:24px;height:24px;top:0;border-radius:50%;box-shadow:0 0 0 .1rem #646b7240}::ng-deep .track{height:8px;border-radius:8px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dBlock: [{\n type: HostBinding,\n args: ['class.d-block']\n }], positionRelative: [{\n type: HostBinding,\n args: ['class.position-relative']\n }], track: [{\n type: ViewChild,\n args: ['track']\n }], thumb: [{\n type: ViewChild,\n args: ['thumb']\n }], valueChange: [{\n type: Output\n }], value: [{\n type: Input\n }], onPointerMove: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }], onPointerUp: [{\n type: HostListener,\n args: ['document:mouseup', ['$event']]\n }] } });\nexport class BsThumbDirective {\n constructor() {\n this.thumbClass = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsThumbDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsThumbDirective, isStandalone: false, selector: \"[bsThumb]\", host: { properties: { \"class.thumb\": \"this.thumbClass\", \"class.position-absolute\": \"this.thumbClass\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsThumbDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsThumb]',\n standalone: false,\n }]\n }], propDecorators: { thumbClass: [{\n type: HostBinding,\n args: ['class.thumb']\n }, {\n type: HostBinding,\n args: ['class.position-absolute']\n }] } });\nexport class BsTrackDirective {\n constructor() {\n this.trackClass = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsTrackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsTrackDirective, isStandalone: false, selector: \"[bsTrack]\", host: { properties: { \"class.track\": \"this.trackClass\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsTrackDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsTrack]',\n standalone: false,\n }]\n }], propDecorators: { trackClass: [{\n type: HostBinding,\n args: ['class.track']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVF4RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLE9BQWdDLEVBQVUsSUFBWTtRQUF0RCxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVE7UUFjNUMsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNKLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUtoRSxlQUFlO1FBQ2YsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU9uRCxZQUFZO1FBRUosbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQTlCM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUs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QUMsZUFBZTtnQkFDWSxnQkFBZ0I7c0JBQXZELFdBQVc7dUJBQUMseUJBQXlCO2dCQUVsQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUlSLFdBQVc7c0JBQXBCLE1BQU07Z0JBSWEsS0FBSztzQkFBeEIsS0FBSztnQkFlTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTlDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUE0QjlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFKN0I7UUFPRSxlQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO21IQUpZLGdCQUFnQjt1R0FBaEIsZ0JBQWdCOztnR0FBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OEJBSUMsVUFBVTtzQkFGVCxXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLHlCQUF5Qjs7QUFReEMsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUs4QixlQUFVLEdBQUcsSUFBSSxDQUFDO0tBQy9DO21IQUZZLGdCQUFnQjt1R0FBaEIsZ0JBQWdCOztnR0FBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OEJBRTZCLFVBQVU7c0JBQXJDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NsaWRlckNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgdGhpcy52YWx1ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpKTtcblxuICAgIHRoaXMudGh1bWJNYXJnaW5MZWZ0JCA9IHRoaXMudmFsdWUkLnBpcGUobWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdmFsdWUgKiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSAxMjtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5jdXJzb3JDbGFzcyQgPSB0aGlzLmlzUG9pbnRlckRvd24kLnBpcGUobWFwKChpc1BvaW50ZXJEb3duKSA9PiB7XG4gICAgICByZXR1cm4gaXNQb2ludGVyRG93biA/ICdjdXJzb3ItZ3JhYmJpbmcnIDogJ2N1cnNvci1ncmFiJztcbiAgICB9KSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLXJlbGF0aXZlJykgcG9zaXRpb25SZWxhdGl2ZSA9IHRydWU7XG4gIHRodW1iTWFyZ2luTGVmdCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgQFZpZXdDaGlsZCgndHJhY2snKSB0cmFjayE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0aHVtYicpIHRodW1iITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLy8jcmVnaW9uIFZhbHVlXG4gIHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwLjUpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBpc1BvaW50ZXJEb3duJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJzb3JDbGFzcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBvblBvaW50ZXJEb3duKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmlzUG9pbnRlckRvd24kLm5leHQodHJ1ZSkpO1xuICAgIHRoaXMudXBkYXRlQ29sb3IoZXYpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Qb2ludGVyTW92ZShldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1BvaW50ZXJEb3duJC52YWx1ZSkge1xuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy51cGRhdGVDb2xvcihldik7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uUG9pbnRlclVwKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIHRoaXMuaXNQb2ludGVyRG93biQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbG9yKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGxldCBjbzogeyB4OiBudW1iZXIgfTtcbiAgICBjb25zdCByZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICgndG91Y2hlcycgaW4gZXYpIHtcbiAgICAgIGNvID0ge1xuICAgICAgICB4OiBldi50b3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjbyA9IHtcbiAgICAgICAgeDogZXYuY2xpZW50WCAtIHJlY3QubGVmdCxcbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHBlcmNlbnQgPSBjby54IC8gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IGxpbWl0ZWQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwZXJjZW50KSk7XG4gICAgdGhpcy52YWx1ZSQubmV4dChsaW1pdGVkKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNUaHVtYl0nLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQnNUaHVtYkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGh1bWInKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLWFic29sdXRlJylcbiAgdGh1bWJDbGFzcyA9IHRydWU7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tic1RyYWNrXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc1RyYWNrRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50cmFjaycpIHRyYWNrQ2xhc3MgPSB0cnVlO1xufSIsIjxkaXYgY2xhc3M9XCJ3cmFwcGVyIGQtYmxvY2sgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICA8ZGl2ICN0cmFjayBjbGFzcz1cInRyYWNrMlwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNobW92ZSk9XCJvblBvaW50ZXJNb3ZlKCRldmVudClcIlxuICAgICAgICAodG91Y2hlbmQpPVwib25Qb2ludGVyVXAoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnNUcmFja11cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjdGh1bWJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAodG91Y2htb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGV2ZW50KVwiXG4gICAgICAgICh0b3VjaGVuZCk9XCJvblBvaW50ZXJVcCgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImN1cnNvckNsYXNzJCB8IGFzeW5jXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cInRodW1iTWFyZ2luTGVmdCQgfCBhc3luY1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnNUaHVtYl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../slider/slider.component\";\nimport * as i2 from \"@angular/common\";\nexport class BsLuminosityStripComponent {\n constructor() {\n //#region HS\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0.5);\n this.luminosityChange = new EventEmitter();\n //#endregion\n this.canvasContext = null;\n this.hs$.pipe(takeUntilDestroyed()).subscribe((hs) => {\n if (this.canvasContext) {\n const width = this.canvas.nativeElement.width, height = this.canvas.nativeElement.height;\n this.canvasContext.clearRect(0, 0, width, height);\n this.canvasContext.save();\n // HSL\n // - H: 0 - 359\n // - S: \"0%\" - \"100%\"\n // - L: \"0%\" - \"50%\" - \"100%\"\n const gradient = this.canvasContext.createLinearGradient(0, 0, width, 0);\n gradient.addColorStop(0, `hsl(${hs.hue}, ${hs.saturation * 100}%, 0%)`);\n gradient.addColorStop(0.5, `hsl(${hs.hue}, ${hs.saturation * 100}%, 50%)`);\n gradient.addColorStop(1, `hsl(${hs.hue}, ${hs.saturation * 100}%, 100%)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(0, 0, width, height);\n }\n });\n this.resultBackground$ = combineLatest([this.hs$, this.luminosity$])\n .pipe(map(([hs, luminosity]) => {\n return `hsl(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%)`;\n }));\n this.luminosity$.pipe(takeUntilDestroyed())\n .subscribe(luminosity => this.luminosityChange.emit(luminosity));\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n ngAfterViewInit() {\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsLuminosityStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsLuminosityStripComponent, isStandalone: false, selector: \"bs-luminosity-strip\", inputs: { hs: \"hs\", luminosity: \"luminosity\" }, outputs: { luminosityChange: \"luminosityChange\" }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true }], ngImport: i0, template: \"<bs-slider [value]=\\\"(luminosity$ | async)!\\\" (valueChange)=\\\"luminosityChange.emit($event)\\\">\\n <canvas bsTrack class=\\\"position-absolute w-100\\\" #canvas></canvas>\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\"\"], dependencies: [{ kind: \"component\", type: i1.BsSliderComponent, selector: \"bs-slider\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"directive\", type: i1.BsThumbDirective, selector: \"[bsThumb]\" }, { kind: \"directive\", type: i1.BsTrackDirective, selector: \"[bsTrack]\" }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsLuminosityStripComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-luminosity-strip', standalone: false, template: \"<bs-slider [value]=\\\"(luminosity$ | async)!\\\" (valueChange)=\\\"luminosityChange.emit($event)\\\">\\n <canvas bsTrack class=\\\"position-absolute w-100\\\" #canvas></canvas>\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\" }]\n }], ctorParameters: () => [], propDecorators: { hs: [{\n type: Input\n }], luminosityChange: [{\n type: Output\n }], luminosity: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['canvas']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2x1bWlub3NpdHktc3RyaXAvbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2x1bWlub3NpdHktc3RyaXAvbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBU2hFLE1BQU0sT0FBTywwQkFBMEI7SUFDckM7UUE4QkEsWUFBWTtRQUNaLFFBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFPekQsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFPeEQsWUFBWTtRQUVKLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQWpENUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFF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QkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLEtBQUs7d0RBc0NHLEVBQUU7c0JBQXJCLEtBQUs7Z0JBTUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUlhLFVBQVU7c0JBQTdCLEtBQUs7Z0JBTWUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEhTIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ocyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWx1bWlub3NpdHktc3RyaXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2x1bWlub3NpdHktc3RyaXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEJzTHVtaW5vc2l0eVN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaHMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaHMpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbnZhc0NvbnRleHQpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoLCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LnNhdmUoKTtcblxuICAgICAgICAvLyBIU0xcbiAgICAgICAgLy8gLSBIOiAwIC0gMzU5XG4gICAgICAgIC8vIC0gUzogXCIwJVwiIC0gXCIxMDAlXCJcbiAgICAgICAgLy8gLSBMOiBcIjAlXCIgLSBcIjUwJVwiIC0gXCIxMDAlXCJcblxuICAgICAgICBjb25zdCBncmFkaWVudCA9IHRoaXMuY2FudmFzQ29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgMCk7XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsIDAlKWApO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC41LCBgaHNsKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsIDUwJSlgKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIGBoc2woJHtocy5odWV9LCAke2hzLnNhdHVyYXRpb24gKiAxMDB9JSwgMTAwJSlgKTtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZXN1bHRCYWNrZ3JvdW5kJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaHMkLCB0aGlzLmx1bWlub3NpdHkkXSlcbiAgICAgIC5waXBlKG1hcCgoW2hzLCBsdW1pbm9zaXR5XSkgPT4ge1xuICAgICAgICByZXR1cm4gYGhzbCgke2hzLmh1ZX0sICR7aHMuc2F0dXJhdGlvbiAqIDEwMH0lLCAke2x1bWlub3NpdHkgKiAxMDB9JSlgO1xuICAgICAgfSkpO1xuICAgICAgXG4gICAgdGhpcy5sdW1pbm9zaXR5JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZShsdW1pbm9zaXR5ID0+IHRoaXMubHVtaW5vc2l0eUNoYW5nZS5lbWl0KGx1bWlub3NpdHkpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBIU1xuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgcHVibGljIGdldCBocygpIHtcbiAgICByZXR1cm4gdGhpcy5ocyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBocyh2YWx1ZTogSFMpIHtcbiAgICB0aGlzLmhzJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEx1bWlub3NpdHlcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMC41KTtcbiAgQE91dHB1dCgpIGx1bWlub3NpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwcml2YXRlIGNhbnZhc0NvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKCdjYW52YXMnKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlc3VsdEJhY2tncm91bmQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iLCI8YnMtc2xpZGVyIFt2YWx1ZV09XCIobHVtaW5vc2l0eSQgfCBhc3luYykhXCIgKHZhbHVlQ2hhbmdlKT1cImx1bWlub3NpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG4gICAgPGNhbnZhcyBic1RyYWNrIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDBcIiAjY2FudmFzPjwvY2FudmFzPlxuICAgIDxkaXYgYnNUaHVtYiBbc3R5bGUuYmFja2dyb3VuZF09XCJyZXN1bHRCYWNrZ3JvdW5kJCB8IGFzeW5jXCI+PC9kaXY+XG48L2JzLXNsaWRlcj4iXX0=","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../slider/slider.component\";\nimport * as i2 from \"@angular/common\";\nexport class BsAlphaStripComponent {\n constructor() {\n //#region HS\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0.5);\n //#endregion\n //#region Alpha\n this.alpha$ = new BehaviorSubject(1);\n this.alphaChange = new EventEmitter();\n //#endregion\n this.canvasContext = null;\n combineLatest([this.hs$, this.luminosity$]).pipe(takeUntilDestroyed()).subscribe(([hs, luminosity]) => {\n setTimeout(() => {\n if (this.canvasContext) {\n const width = this.canvas.nativeElement.width, height = this.canvas.nativeElement.height;\n this.canvasContext.clearRect(0, 0, width, height);\n this.canvasContext.save();\n const gradient = this.canvasContext.createLinearGradient(0, 0, width, 0);\n gradient.addColorStop(0, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 0)`);\n gradient.addColorStop(1, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 1)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(0, 0, width, height);\n }\n });\n });\n this.resultBackground$ = combineLatest([this.hs$, this.luminosity$, this.alpha$])\n .pipe(map(([hs, luminosity, alpha]) => {\n return `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, ${alpha})`;\n }));\n this.alpha$.pipe(takeUntilDestroyed())\n .subscribe((alpha) => this.alphaChange.emit(alpha));\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n get alpha() {\n return this.alpha$.value;\n }\n set alpha(value) {\n this.alpha$.next(value);\n }\n ngAfterViewInit() {\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsAlphaStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsAlphaStripComponent, isStandalone: false, selector: \"bs-alpha-strip\", inputs: { hs: \"hs\", luminosity: \"luminosity\", alpha: \"alpha\" }, outputs: { alphaChange: \"alphaChange\" }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"track\"], descendants: true }], ngImport: i0, template: \"<bs-slider [value]=\\\"(alpha$ | async)!\\\" (valueChange)=\\\"alphaChange.emit($event)\\\">\\n <canvas bsTrack class=\\\" track position-absolute w-100\\\" #track></canvas>\\n\\n <!-- [style.background]=\\\"resultBackground$ | async\\\" -->\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\\n\"], dependencies: [{ kind: \"component\", type: i1.BsSliderComponent, selector: \"bs-slider\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"directive\", type: i1.BsThumbDirective, selector: \"[bsThumb]\" }, { kind: \"directive\", type: i1.BsTrackDirective, selector: \"[bsTrack]\" }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsAlphaStripComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-alpha-strip', standalone: false, template: \"<bs-slider [value]=\\\"(alpha$ | async)!\\\" (valueChange)=\\\"alphaChange.emit($event)\\\">\\n <canvas bsTrack class=\\\" track position-absolute w-100\\\" #track></canvas>\\n\\n <!-- [style.background]=\\\"resultBackground$ | async\\\" -->\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { hs: [{\n type: Input\n }], luminosity: [{\n type: Input\n }], alphaChange: [{\n type: Output\n }], alpha: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['track']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEtc3RyaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvY29tcG9uZW50cy9hbHBoYS1zdHJpcC9hbHBoYS1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2FscGhhLXN0cmlwL2FscGhhLXN0cmlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFRaEUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQztRQTBCQSxZQUFZO1FBQ1osUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU96RCxZQUFZO1FBQ1osb0JBQW9CO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFPL0MsWUFBWTtRQUNaLGVBQWU7UUFDZixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBT25ELFlBQVk7UUFFSixrQkFBYSxHQUFvQyxJQUFJLENBQUM7UUF0RDVELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFO1lBQ3BHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO29CQUN6RixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFFMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDekUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO29CQUM5RixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLFVBQVUsR0FBRyxHQUFHLE1BQU0sVUFBVSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7b0JBQzlGLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxNQUFNLFVBQVUsR0FBRyxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFJRCxJQUFXLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFvQixFQUFFLENBQUMsS0FBUztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQW9CLFVBQVUsQ0FBQyxLQUFhO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFLRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFvQixLQUFLLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQzttSEE3RFUscUJBQXFCO3VHQUFyQixxQkFBcUIscVJDWGxDLDhUQUtZOztnR0RNQyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzt3REFtQ0csRUFBRTtzQkFBckIsS0FBSztnQkFTYyxVQUFVO3NCQUE3QixLQUFLO2dCQU1JLFdBQVc7c0JBQXBCLE1BQU07Z0JBSWEsS0FBSztzQkFBeEIsS0FBSztnQkFNYyxNQUFNO3NCQUF6QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSFMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtYWxwaGEtc3RyaXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxwaGEtc3RyaXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbHBoYS1zdHJpcC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQnNBbHBoYVN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSRdKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKFtocywgbHVtaW5vc2l0eV0pID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW52YXNDb250ZXh0KSB7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoLCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodDtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmNhbnZhc0NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgd2lkdGgsIDApO1xuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsYSgke2hzLmh1ZX0sICR7aHMuc2F0dXJhdGlvbiAqIDEwMH0lLCAke2x1bWlub3NpdHkgKiAxMDB9JSwgMClgKTtcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYGhzbGEoJHtocy5odWV9LCAke2hzLnNhdHVyYXRpb24gKiAxMDB9JSwgJHtsdW1pbm9zaXR5ICogMTAwfSUsIDEpYCk7XG4gICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3VsdEJhY2tncm91bmQkID0gY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSQsIHRoaXMuYWxwaGEkXSlcbiAgICAgIC5waXBlKG1hcCgoW2hzLCBsdW1pbm9zaXR5LCBhbHBoYV0pID0+IHtcbiAgICAgICAgcmV0dXJuIGBoc2xhKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsICR7bHVtaW5vc2l0eSAqIDEwMH0lLCAke2FscGhhfSlgO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5hbHBoYSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFscGhhKSA9PiB0aGlzLmFscGhhQ2hhbmdlLmVtaXQoYWxwaGEpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBIU1xuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgcHVibGljIGdldCBocygpIHtcbiAgICByZXR1cm4gdGhpcy5ocyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBocyh2YWx1ZTogSFMpIHtcbiAgICB0aGlzLmhzJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEx1bWlub3NpdHlcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMC41KTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEFscGhhXG4gIGFscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcbiAgQE91dHB1dCgpIGFscGhhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHB1YmxpYyBnZXQgYWxwaGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxwaGEkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgYWxwaGEodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuYWxwaGEkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBcbiAgcHJpdmF0ZSBjYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgndHJhY2snKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlc3VsdEJhY2tncm91bmQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iLCI8YnMtc2xpZGVyIFt2YWx1ZV09XCIoYWxwaGEkIHwgYXN5bmMpIVwiICh2YWx1ZUNoYW5nZSk9XCJhbHBoYUNoYW5nZS5lbWl0KCRldmVudClcIj5cbiAgICA8Y2FudmFzIGJzVHJhY2sgY2xhc3M9XCIgdHJhY2sgcG9zaXRpb24tYWJzb2x1dGUgdy0xMDBcIiAjdHJhY2s+PC9jYW52YXM+XG5cbiAgICA8IS0tIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInJlc3VsdEJhY2tncm91bmQkIHwgYXN5bmNcIiAtLT5cbiAgICA8ZGl2IGJzVGh1bWIgW3N0eWxlLmJhY2tncm91bmRdPVwicmVzdWx0QmFja2dyb3VuZCQgfCBhc3luY1wiPjwvZGl2PlxuPC9icy1zbGlkZXI+Il19","import { Component, Input, ViewChild, EventEmitter, Output } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../color-wheel/color-wheel.component\";\nimport * as i2 from \"../luminosity-strip/luminosity-strip.component\";\nimport * as i3 from \"../alpha-strip/alpha-strip.component\";\nimport * as i4 from \"@angular/common\";\nexport class BsColorPickerComponent {\n constructor() {\n this.size$ = new BehaviorSubject(150);\n this.disabled$ = new BehaviorSubject(false);\n this.allowAlpha$ = new BehaviorSubject(true);\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n this.luminosity$ = new BehaviorSubject(0);\n //#region Alpha\n this.alpha$ = new BehaviorSubject(1);\n this.alphaChange = new EventEmitter();\n this.alpha$.pipe(takeUntilDestroyed())\n .subscribe((alpha) => this.alphaChange.emit(alpha));\n }\n set size(value) {\n this.size$.next(value);\n }\n set allowAlpha(value) {\n this.allowAlpha$.next(value);\n }\n get alpha() {\n return this.alpha$.value;\n }\n set alpha(value) {\n this.alpha$.next(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0-rc.2\", type: BsColorPickerComponent, isStandalone: false, selector: \"bs-color-picker\", inputs: { size: \"size\", allowAlpha: \"allowAlpha\", alpha: \"alpha\" }, outputs: { alphaChange: \"alphaChange\" }, viewQueries: [{ propertyName: \"colorWheel\", first: true, predicate: [\"wheel\"], descendants: true }], ngImport: i0, template: \"@let letDisabled = (disabled$ | async)!;\\n@let letHS = (hs$ | async)!;\\n@let letLuminosity = (luminosity$ | async)!;\\n@let letAlpha = (alpha$ | async)!;\\n\\n<bs-color-wheel [hs]=\\\"letHS\\\" (hsChange)=\\\"hs$.next($event)\\\" [luminosity]=\\\"letLuminosity\\\" [width]=\\\"(size$ | async) ?? 150\\\" [height]=\\\"(size$ | async) ?? 150\\\" #wheel></bs-color-wheel>\\n<bs-luminosity-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" (luminosityChange)=\\\"luminosity$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #strip></bs-luminosity-strip>\\n@if (allowAlpha$ | async) {\\n <bs-alpha-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" [alpha]=\\\"letAlpha\\\" (alphaChange)=\\\"alpha$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #alpha></bs-alpha-strip>\\n}\", styles: [\"\"], dependencies: [{ kind: \"component\", type: i1.BsColorWheelComponent, selector: \"bs-color-wheel\", inputs: [\"diameterRatio\", \"width\", \"height\", \"hs\", \"luminosity\"], outputs: [\"hsChange\"] }, { kind: \"component\", type: i2.BsLuminosityStripComponent, selector: \"bs-luminosity-strip\", inputs: [\"hs\", \"luminosity\"], outputs: [\"luminosityChange\"] }, { kind: \"component\", type: i3.BsAlphaStripComponent, selector: \"bs-alpha-strip\", inputs: [\"hs\", \"luminosity\", \"alpha\"], outputs: [\"alphaChange\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-color-picker', standalone: false, template: \"@let letDisabled = (disabled$ | async)!;\\n@let letHS = (hs$ | async)!;\\n@let letLuminosity = (luminosity$ | async)!;\\n@let letAlpha = (alpha$ | async)!;\\n\\n<bs-color-wheel [hs]=\\\"letHS\\\" (hsChange)=\\\"hs$.next($event)\\\" [luminosity]=\\\"letLuminosity\\\" [width]=\\\"(size$ | async) ?? 150\\\" [height]=\\\"(size$ | async) ?? 150\\\" #wheel></bs-color-wheel>\\n<bs-luminosity-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" (luminosityChange)=\\\"luminosity$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #strip></bs-luminosity-strip>\\n@if (allowAlpha$ | async) {\\n <bs-alpha-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" [alpha]=\\\"letAlpha\\\" (alphaChange)=\\\"alpha$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #alpha></bs-alpha-strip>\\n}\" }]\n }], ctorParameters: () => [], propDecorators: { colorWheel: [{\n type: ViewChild,\n args: ['wheel']\n }], size: [{\n type: Input\n }], allowAlpha: [{\n type: Input\n }], alphaChange: [{\n type: Output\n }], alpha: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBUWhFLE1BQU0sT0FBTyxzQkFBc0I7SUFFakM7UUFhQSxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFakQsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGVBQWU7UUFDZixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBckJqRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsSUFBYSxJQUFJLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBWUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO21IQTlCVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiw4UkNabkMsd3hCQVNDOztnR0RHWSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsS0FBSzt3REFTRyxVQUFVO3NCQUE3QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0wsSUFBSTtzQkFBaEIsS0FBSztnQkFHTyxVQUFVO3NCQUF0QixLQUFLO2dCQWFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSU0sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEhTIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaHNcIjtcbmltcG9ydCB7IEJzQ29sb3JXaGVlbENvbXBvbmVudCB9IGZyb20gXCIuLi9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1jb2xvci1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmFscGhhJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoYWxwaGEpID0+IHRoaXMuYWxwaGFDaGFuZ2UuZW1pdChhbHBoYSkpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnd2hlZWwnKSBjb2xvcldoZWVsITogQnNDb2xvcldoZWVsQ29tcG9uZW50O1xuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zaXplJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgYWxsb3dBbHBoYSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dBbHBoYSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgXG4gIHNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE1MCk7XG4gIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBhbGxvd0FscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgaHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIUz4oeyBodWU6IDAsIHNhdHVyYXRpb246IDAgfSk7XG4gIGx1bWlub3NpdHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIC8vI3JlZ2lvbiBBbHBoYVxuICBhbHBoYSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG4gIEBPdXRwdXQoKSBhbHBoYUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBnZXQgYWxwaGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxwaGEkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNldCBhbHBoYSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hbHBoYSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCJAbGV0IGxldERpc2FibGVkID0gKGRpc2FibGVkJCB8IGFzeW5jKSE7XG5AbGV0IGxldEhTID0gKGhzJCB8IGFzeW5jKSE7XG5AbGV0IGxldEx1bWlub3NpdHkgPSAobHVtaW5vc2l0eSQgfCBhc3luYykhO1xuQGxldCBsZXRBbHBoYSA9IChhbHBoYSQgfCBhc3luYykhO1xuXG48YnMtY29sb3Itd2hlZWwgW2hzXT1cImxldEhTXCIgKGhzQ2hhbmdlKT1cImhzJC5uZXh0KCRldmVudClcIiBbbHVtaW5vc2l0eV09XCJsZXRMdW1pbm9zaXR5XCIgW3dpZHRoXT1cIihzaXplJCB8IGFzeW5jKSA/PyAxNTBcIiBbaGVpZ2h0XT1cIihzaXplJCB8IGFzeW5jKSA/PyAxNTBcIiAjd2hlZWw+PC9icy1jb2xvci13aGVlbD5cbjxicy1sdW1pbm9zaXR5LXN0cmlwIFtoc109XCJsZXRIU1wiIFtsdW1pbm9zaXR5XT1cImxldEx1bWlub3NpdHlcIiAobHVtaW5vc2l0eUNoYW5nZSk9XCJsdW1pbm9zaXR5JC5uZXh0KCRldmVudClcIiBjbGFzcz1cImQtYmxvY2sgbXQtMlwiIFtzdHlsZS53aWR0aC5weF09XCJzaXplJCB8IGFzeW5jXCIgI3N0cmlwPjwvYnMtbHVtaW5vc2l0eS1zdHJpcD5cbkBpZiAoYWxsb3dBbHBoYSQgfCBhc3luYykge1xuICAgIDxicy1hbHBoYS1zdHJpcCBbaHNdPVwibGV0SFNcIiBbbHVtaW5vc2l0eV09XCJsZXRMdW1pbm9zaXR5XCIgW2FscGhhXT1cImxldEFscGhhXCIgKGFscGhhQ2hhbmdlKT1cImFscGhhJC5uZXh0KCRldmVudClcIiBjbGFzcz1cImQtYmxvY2sgbXQtMlwiIFtzdHlsZS53aWR0aC5weF09XCJzaXplJCB8IGFzeW5jXCIgI2FscGhhPjwvYnMtYWxwaGEtc3RyaXA+XG59Il19","import { Directive, Inject, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { combineLatest } from 'rxjs';\nimport { BsColorPickerComponent } from '../../components/color-picker/color-picker.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../components/color-picker/color-picker.component\";\nexport class BsColorPickerValueAccessor {\n constructor(host, destroy) {\n this.host = host;\n this.destroy = destroy;\n }\n ngAfterViewInit() {\n combineLatest([this.host.hs$, this.host.luminosity$])\n .pipe(takeUntilDestroyed(this.destroy))\n .subscribe(([hs, luminosity]) => {\n const rgb = this.hsl2rgb(hs.hue, hs.saturation, luminosity);\n const hex = this.rgb2hex(rgb);\n setTimeout(() => this.onValueChange && this.onValueChange(hex), 10);\n });\n }\n hsl2rgb(h, s, l) {\n const k = (n) => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n const retValue = { r: 255 * f(0), g: 255 * f(8), b: 255 * f(4) };\n return retValue;\n }\n //#region ControlValueAccessor implementation\n registerOnChange(fn) {\n this.onValueChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n writeValue(value) {\n if (this.host && this.host.colorWheel) {\n if (value) {\n const rgb = this.hex2rgb(value);\n const hsl = this.rgb2Hsl(rgb);\n this.host.hs$.next({ hue: hsl.h, saturation: hsl.s });\n this.host.luminosity$.next(hsl.l);\n }\n }\n }\n setDisabledState(isDisabled) {\n if (this.host && this.host.colorWheel) {\n this.host.colorWheel.disabled$.next(isDisabled);\n }\n }\n //#endregion\n //#region Color Conversion\n rgb2hex(rgb) {\n return '#' + (Math.round((rgb.r << 16) + (rgb.g << 8) + rgb.b)).toString(16).padStart(6, '0');\n }\n hex2rgb(hex) {\n const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);\n return { r, g, b };\n }\n /**\n * Divide 1 to n, handling floating point errors.\n * Ensures that the value is in between 0 and 1.\n **/\n bound01(n, max) {\n n = Math.min(max, Math.max(0, n));\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n else {\n return (n % max) / max;\n }\n }\n rgb2Hsl(color) {\n const r01 = this.bound01(color.r, 255);\n const g01 = this.bound01(color.g, 255);\n const b01 = this.bound01(color.b, 255);\n const max = Math.max(r01, g01, b01);\n const min = Math.min(r01, g01, b01);\n let h, s;\n const l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r01:\n h = (g01 - b01) / d + (g01 < b01 ? 6 : 0);\n break;\n case g01:\n h = (b01 - r01) / d + 2;\n break;\n case b01:\n h = (r01 - g01) / d + 4;\n break;\n default: {\n throw 'Invalid operation';\n }\n }\n h /= 6;\n }\n h *= 360;\n return { h, s, l };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerValueAccessor, deps: [{ token: forwardRef(() => BsColorPickerComponent) }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", type: BsColorPickerValueAccessor, isStandalone: false, selector: \"bs-color-picker\", providers: [{\n provide: NG_VALUE_ACCESSOR,\n // useExisting: BsColorPickerValueAccessor,\n useExisting: forwardRef(() => BsColorPickerValueAccessor),\n multi: true\n }], exportAs: [\"bsColorPicker\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'bs-color-picker',\n standalone: false,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n // useExisting: BsColorPickerValueAccessor,\n useExisting: forwardRef(() => BsColorPickerValueAccessor),\n multi: true\n }],\n exportAs: 'bsColorPicker'\n }]\n }], ctorParameters: () => [{ type: i1.BsColorPickerComponent, decorators: [{\n type: Inject,\n args: [forwardRef(() => BsColorPickerComponent)]\n }] }, { type: i0.DestroyRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2RpcmVjdGl2ZXMvY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yL2NvbG9yLXBpY2tlci12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBYWhFLE1BQU0sT0FBTywwQkFBMEI7SUFFckMsWUFBc0UsSUFBNEIsRUFBVSxPQUFtQjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7SUFDL0gsQ0FBQztJQUVELGVBQWU7UUFDYixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU0sT0FBTyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFLRCw2Q0FBNkM7SUFDN0MsZ0JBQWdCLENBQUMsRUFBb0I7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWTtJQUVaLDBCQUEwQjtJQUNsQixPQUFPLENBQUMsR0FBYTtRQUMzQixPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVc7UUFDekIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUNqQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUNqQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7O1FBR0k7SUFDSSxPQUFPLENBQUMsQ0FBUyxFQUFFLEdBQVc7UUFDcEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDTyxPQUFPLENBQUMsS0FBZTtRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBUyxFQUFFLENBQVMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDcEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUVwRCxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNaLEtBQUssR0FBRztvQkFDTixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQ04sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hCLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixNQUFNO2dCQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ1IsTUFBTSxtQkFBbUIsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7WUFFRCxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1QsQ0FBQztRQUVELENBQUMsSUFBSSxHQUFHLENBQUM7UUFFVCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQixDQUFDO21IQWxIVSwwQkFBMEIsa0JBRWpCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzt1R0FGakQsMEJBQTBCLCtEQVIxQixDQUFDO2dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLDJDQUEyQztnQkFDM0MsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFDekQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDOztnR0FHUywwQkFBMEI7a0JBWHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLDJDQUEyQzs0QkFDM0MsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7b0JBQ0YsUUFBUSxFQUFFLGVBQWU7aUJBQzFCOzswQkFHYyxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBmb3J3YXJkUmVmLCBBZnRlclZpZXdJbml0LCBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZ2JDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmdiLWNvbG9yJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYnMtY29sb3ItcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyB1c2VFeGlzdGluZzogQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dLFxuICBleHBvcnRBczogJ2JzQ29sb3JQaWNrZXInXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBCc0NvbG9yUGlja2VyQ29tcG9uZW50KSkgcHJpdmF0ZSBob3N0OiBCc0NvbG9yUGlja2VyQ29tcG9uZW50LCBwcml2YXRlIGRlc3Ryb3k6IERlc3Ryb3lSZWYpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmhvc3QuaHMkLCB0aGlzLmhvc3QubHVtaW5vc2l0eSRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChbaHMsIGx1bWlub3NpdHldKSA9PiB7XG4gICAgICAgIGNvbnN0IHJnYiA9IHRoaXMuaHNsMnJnYihocy5odWUsIGhzLnNhdHVyYXRpb24sIGx1bWlub3NpdHkpO1xuICAgICAgICBjb25zdCBoZXggPSB0aGlzLnJnYjJoZXgocmdiKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uVmFsdWVDaGFuZ2UgJiYgdGhpcy5vblZhbHVlQ2hhbmdlKGhleCksIDEwKTtcbiAgICAgIH0pXG4gIH1cblxuICBwdWJsaWMgaHNsMnJnYihoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSB7XG4gICAgY29uc3QgayA9IChuOiBudW1iZXIpID0+IChuICsgaCAvIDMwKSAlIDEyO1xuICAgIGNvbnN0IGEgPSBzICogTWF0aC5taW4obCwgMSAtIGwpO1xuICAgIGNvbnN0IGYgPSAobjogbnVtYmVyKSA9PiBsIC0gYSAqIE1hdGgubWF4KC0xLCBNYXRoLm1pbihrKG4pIC0gMywgTWF0aC5taW4oOSAtIGsobiksIDEpKSk7XG4gICAgY29uc3QgcmV0VmFsdWUgPSA8UmdiQ29sb3I+eyByOiAyNTUgKiBmKDApLCBnOiAyNTUgKiBmKDgpLCBiOiAyNTUgKiBmKDQpIH07XG4gICAgcmV0dXJuIHJldFZhbHVlO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gZm47XG4gIH1cbiAgXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5ob3N0ICYmIHRoaXMuaG9zdC5jb2xvcldoZWVsKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmdiID0gdGhpcy5oZXgycmdiKHZhbHVlKTtcbiAgICAgICAgY29uc3QgaHNsID0gdGhpcy5yZ2IySHNsKHJnYik7XG4gICAgICAgIHRoaXMuaG9zdC5ocyQubmV4dCh7IGh1ZTogaHNsLmgsIHNhdHVyYXRpb246IGhzbC5zIH0pO1xuICAgICAgICB0aGlzLmhvc3QubHVtaW5vc2l0eSQubmV4dChoc2wubCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaG9zdCAmJiB0aGlzLmhvc3QuY29sb3JXaGVlbCkge1xuICAgICAgdGhpcy5ob3N0LmNvbG9yV2hlZWwuZGlzYWJsZWQkLm5leHQoaXNEaXNhYmxlZCk7XG4gICAgfVxuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb2xvciBDb252ZXJzaW9uXG4gIHByaXZhdGUgcmdiMmhleChyZ2I6IFJnYkNvbG9yKSB7XG4gICAgcmV0dXJuICcjJyArIChNYXRoLnJvdW5kKChyZ2IuciA8PCAxNikgKyAocmdiLmcgPDwgOCkgKyByZ2IuYikpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCAnMCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBoZXgycmdiKGhleDogc3RyaW5nKTogUmdiQ29sb3Ige1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChoZXguc2xpY2UoMSwgMyksIDE2KSxcbiAgICAgICAgICBnID0gcGFyc2VJbnQoaGV4LnNsaWNlKDMsIDUpLCAxNiksXG4gICAgICAgICAgYiA9IHBhcnNlSW50KGhleC5zbGljZSg1LCA3KSwgMTYpO1xuXG4gICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICB9XG4gIC8qKlxuICAgKiBEaXZpZGUgMSB0byBuLCBoYW5kbGluZyBmbG9hdGluZyBwb2ludCBlcnJvcnMuXG4gICAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgaW4gYmV0d2VlbiAwIGFuZCAxLlxuICAgKiovXG4gIHByaXZhdGUgYm91bmQwMShuOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgbiA9IE1hdGgubWluKG1heCwgTWF0aC5tYXgoMCwgbikpO1xuICAgIGlmIChNYXRoLmFicyhuIC0gbWF4KSA8IDAuMDAwMDAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChuICUgbWF4KSAvIG1heDtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZ2IySHNsKGNvbG9yOiBSZ2JDb2xvcikge1xuICAgIGNvbnN0IHIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5yLCAyNTUpO1xuICAgIGNvbnN0IGcwMSA9IHRoaXMuYm91bmQwMShjb2xvci5nLCAyNTUpO1xuICAgIGNvbnN0IGIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5iLCAyNTUpO1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgocjAxLCBnMDEsIGIwMSk7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocjAxLCBnMDEsIGIwMSk7XG5cbiAgICBsZXQgaDogbnVtYmVyLCBzOiBudW1iZXI7XG4gICAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgIGggPSBzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgICAgIHMgPSBsID4gMC41ID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcblxuICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgY2FzZSByMDE6XG4gICAgICAgICAgaCA9IChnMDEgLSBiMDEpIC8gZCArIChnMDEgPCBiMDEgPyA2IDogMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZzAxOlxuICAgICAgICAgIGggPSAoYjAxIC0gcjAxKSAvIGQgKyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGIwMTpcbiAgICAgICAgICBoID0gKHIwMSAtIGcwMSkgLyBkICsgNDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93ICdJbnZhbGlkIG9wZXJhdGlvbic7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaCAvPSA2O1xuICAgIH1cblxuICAgIGggKj0gMzYwO1xuXG4gICAgcmV0dXJuIHsgaCwgcywgbCB9O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { BsColorPickerValueAccessor } from './directives/color-picker-value-accessor/color-picker-value-accessor.directive';\nimport { BsColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { BsColorWheelComponent } from './components/color-wheel/color-wheel.component';\nimport { BsLuminosityStripComponent } from './components/luminosity-strip/luminosity-strip.component';\nimport { BsSliderComponent, BsThumbDirective, BsTrackDirective } from './components/slider/slider.component';\nimport { BsAlphaStripComponent } from './components/alpha-strip/alpha-strip.component';\nimport * as i0 from \"@angular/core\";\nexport class BsColorPickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerModule, declarations: [BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent], imports: [AsyncPipe,\n FormsModule], exports: [BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerModule, imports: [FormsModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0-rc.2\", ngImport: i0, type: BsColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent\n ],\n imports: [\n AsyncPipe,\n FormsModule,\n ],\n exports: [\n BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent\n ]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQTRCdkYsTUFBTSxPQUFPLG1CQUFtQjttSEFBbkIsbUJBQW1CO29IQUFuQixtQkFBbUIsaUJBeEI1QixzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIscUJBQXFCLGFBR3JCLFNBQVM7WUFDVCxXQUFXLGFBR1gsc0JBQXNCO1lBQ3RCLDBCQUEwQjtZQUMxQixxQkFBcUI7WUFDckIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjtvSEFHWixtQkFBbUIsWUFiNUIsV0FBVzs7Z0dBYUYsbUJBQW1CO2tCQTFCL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxTQUFTO3dCQUNULFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb2xvci1waWNrZXItdmFsdWUtYWNjZXNzb3IvY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJzQ29sb3JXaGVlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbHVtaW5vc2l0eS1zdHJpcC9sdW1pbm9zaXR5LXN0cmlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc1NsaWRlckNvbXBvbmVudCwgQnNUaHVtYkRpcmVjdGl2ZSwgQnNUcmFja0RpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc0FscGhhU3RyaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxwaGEtc3RyaXAvYWxwaGEtc3RyaXAuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnNDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgICBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICBCc0NvbG9yV2hlZWxDb21wb25lbnQsXG4gICAgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQsXG4gICAgQnNTbGlkZXJDb21wb25lbnQsXG4gICAgQnNUaHVtYkRpcmVjdGl2ZSxcbiAgICBCc1RyYWNrRGlyZWN0aXZlLFxuICAgIEJzQWxwaGFTdHJpcENvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgICBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICBCc0NvbG9yV2hlZWxDb21wb25lbnQsXG4gICAgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQsXG4gICAgQnNTbGlkZXJDb21wb25lbnQsXG4gICAgQnNUaHVtYkRpcmVjdGl2ZSxcbiAgICBCc1RyYWNrRGlyZWN0aXZlLFxuICAgIEJzQWxwaGFTdHJpcENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJNb2R1bGUgeyB9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWludHBsYXllci1uZy1ib290c3RyYXAtY29sb3ItcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvbWludHBsYXllci1uZy1ib290c3RyYXAtY29sb3ItcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.BsSliderComponent","i1.BsThumbDirective","i1.BsTrackDirective","i2","i1.BsColorWheelComponent","i2.BsLuminosityStripComponent","i3.BsAlphaStripComponent","i4","i1.BsColorPickerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-color-picker.mjs","sources":["../tmp-esm2022/color-picker/components/color-wheel/color-wheel.component.js","../tmp-esm2022/color-picker/components/slider/slider.component.js","../tmp-esm2022/color-picker/components/luminosity-strip/luminosity-strip.component.js","../tmp-esm2022/color-picker/components/alpha-strip/alpha-strip.component.js","../tmp-esm2022/color-picker/components/color-picker/color-picker.component.js","../tmp-esm2022/color-picker/directives/color-picker-value-accessor/color-picker-value-accessor.directive.js","../tmp-esm2022/color-picker/color-picker.module.js","../tmp-esm2022/color-picker/mintplayer-ng-bootstrap-color-picker.js"],"sourcesContent":["import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, debounceTime, map, take, switchMap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nexport class BsColorWheelComponent {\n constructor(element) {\n // this.resizeObserver = new ResizeObserver((entries) => {\n // for (const entry of entries) {\n // if (entry.target === this.element.nativeElement) {\n // console.log(entry.contentRect);\n // this.width$.next(entry.contentRect.width);\n // this.height$.next(entry.contentRect.height);\n // break;\n // }\n // }\n // });\n this.element = element;\n this.positionRelative = true;\n //#region Hue/Luminosity\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n this.hsChange = new EventEmitter();\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0);\n //#endregion\n // private resizeObserver: ResizeObserver;\n this.canvasContext = null;\n this.isPointerDown = false;\n this.width$ = new BehaviorSubject(150);\n this.height$ = new BehaviorSubject(150);\n this.diameterRatio$ = new BehaviorSubject(0);\n this.disabled$ = new BehaviorSubject(false);\n this.viewInited$ = new BehaviorSubject(false);\n this.squareSize$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n const squareSize = Math.min(width, height);\n return squareSize;\n }));\n this.shiftX$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n else if (width < height) {\n return 0;\n }\n else {\n return (width - height) / 2;\n }\n }));\n this.shiftY$ = combineLatest([this.width$, this.height$])\n .pipe(map(([width, height]) => {\n if ((width === null) || (height === null)) {\n return null;\n }\n else if (width < height) {\n return (height - width) / 2;\n }\n else {\n return 0;\n }\n }));\n this.innerRadius$ = combineLatest([this.squareSize$, this.diameterRatio$])\n .pipe(map(([squareSize, diameterRatio]) => {\n if (squareSize) {\n return squareSize / 2 * diameterRatio;\n }\n else {\n return 0;\n }\n }));\n this.outerRadius$ = combineLatest([this.squareSize$, this.diameterRatio$])\n .pipe(map(([squareSize, diameterRatio]) => {\n if (squareSize) {\n return squareSize / 2;\n }\n else {\n return 150;\n }\n }));\n combineLatest([this.innerRadius$, this.outerRadius$, this.shiftX$, this.shiftY$])\n .pipe(debounceTime(20), takeUntilDestroyed())\n .subscribe(([innerRadius, outerRadius, shiftX, shiftY]) => {\n if (this.canvasContext && (innerRadius !== null) && (outerRadius !== null) && (shiftX !== null) && (shiftY !== null)) {\n this.canvasContext.clearRect(0, 0, this.canvas.nativeElement.width, this.canvas.nativeElement.height);\n this.canvasContext.save();\n this.canvasContext.translate(shiftX + outerRadius, shiftY + outerRadius);\n for (let x = 0; x < 360; x++) {\n this.canvasContext.rotate(1 * Math.PI / 180);\n const gradient = this.canvasContext.createLinearGradient(innerRadius, 0, outerRadius, 0);\n gradient.addColorStop(0, `hsl(${x}, 0%, 50%)`);\n gradient.addColorStop(1, `hsl(${x}, 100%, 50%)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(innerRadius, 0, outerRadius - innerRadius, outerRadius / 50);\n }\n this.canvasContext.restore();\n }\n });\n this.markerPosition$ = combineLatest([this.hs$, this.shiftX$, this.shiftY$])\n .pipe(switchMap(([hs, shiftX, shiftY]) => {\n return this.color2position(hs)\n .pipe(map((position) => ({ position, shiftX: (shiftX ?? 0), shiftY: (shiftY ?? 0) })));\n }))\n .pipe(map(({ position, shiftX, shiftY }) => {\n return {\n x: position.x + shiftX,\n y: position.y + shiftY,\n };\n }));\n this.hs$.pipe(takeUntilDestroyed())\n .subscribe((hs) => this.hsChange.emit(hs));\n }\n set diameterRatio(value) {\n this.diameterRatio$.next(value);\n }\n set width(value) {\n this.width$.next(value);\n }\n set height(value) {\n this.height$.next(value);\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n ngAfterViewInit() {\n // this.resizeObserver.observe(this.element.nativeElement);\n this.viewInited$.next(true);\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n onPointerDown(ev) {\n if (!this.disabled$.value) {\n ev.preventDefault();\n this.isPointerDown = true;\n this.updateColor(ev, !('touches' in ev));\n }\n }\n onPointerMove(ev) {\n if (this.isPointerDown) {\n ev.preventDefault();\n ev.stopPropagation();\n this.updateColor(ev, !('touches' in ev));\n }\n }\n onMouseMove(ev) {\n this.onPointerMove(ev);\n }\n onPointerUp(ev) {\n this.isPointerDown = false;\n }\n updateColor(ev, subtract) {\n let co;\n const rect = this.canvas.nativeElement.getBoundingClientRect();\n if ('touches' in ev) {\n co = {\n x: ev.touches[0].clientX - rect.left,\n y: ev.touches[0].clientY - rect.top,\n };\n }\n else {\n co = {\n x: ev.clientX - (subtract ? rect.left : 0),\n y: ev.clientY - (subtract ? rect.top : 0),\n };\n }\n this.position2color(co.x, co.y).pipe(take(1)).subscribe((color) => {\n if (color) {\n this.hs$.next({ hue: color.hue, saturation: color.saturation });\n }\n else {\n console.warn('Color is null');\n }\n });\n }\n isInsideCircle(x, y) {\n return combineLatest([this.squareSize$, this.shiftX$, this.shiftY$])\n .pipe(map(([squareSize, shiftX, shiftY]) => {\n // Position to the square\n const sx = x - (shiftX ?? 0);\n const sy = y - (shiftY ?? 0);\n // Square radius\n const sr = (squareSize ?? 0) / 2;\n const radius = Math.sqrt(Math.pow(sx - sr, 2) + Math.pow(sy - sr, 2));\n const angle = (Math.atan2(sr - sy, sr - sx) + Math.PI) % 360;\n return {\n inside: radius <= sr,\n angle\n };\n }));\n }\n position2color(x, y) {\n return this.isInsideCircle(x, y).pipe(map((result) => {\n if (!this.canvasContext) {\n return null;\n }\n if (result.inside) {\n const imageData = this.canvasContext.getImageData(x, y, 1, 1).data;\n const hsl = this.rgb2Hsl({ r: imageData[0], g: imageData[1], b: imageData[2] });\n return hsl;\n }\n return { hue: result.angle * 180 / Math.PI, saturation: 1, luminosity: 0.5 };\n }));\n }\n color2position(hs) {\n return combineLatest([this.innerRadius$, this.outerRadius$])\n .pipe(map(([innerRadius, outerRadius]) => {\n if (innerRadius === null) {\n innerRadius = 0;\n }\n if (!outerRadius) {\n outerRadius = 100;\n }\n const theta = hs.hue * Math.PI / 180;\n const c = {\n x: -outerRadius * Math.cos(theta),\n y: -outerRadius * Math.sin(theta)\n };\n const d = hs.saturation * (outerRadius - innerRadius) + innerRadius;\n const o = { x: outerRadius, y: outerRadius };\n return {\n x: o.x - d * (c.x / outerRadius),\n y: o.y - d * (c.y / outerRadius),\n };\n }));\n }\n rgb2Hsl(color) {\n const r01 = this.bound01(color.r, 255);\n const g01 = this.bound01(color.g, 255);\n const b01 = this.bound01(color.b, 255);\n const max = Math.max(r01, g01, b01);\n const min = Math.min(r01, g01, b01);\n let h, s;\n const l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n const d = max - min;\n s = (l > 0.5) ? (d / (2 - max - min)) : (d / (max + min));\n switch (max) {\n case r01:\n {\n h = (g01 - b01) / d + ((g01 < b01) ? 6 : 0);\n }\n break;\n case g01:\n {\n h = (b01 - r01) / d + 2;\n }\n break;\n case b01:\n {\n h = (r01 - g01) / d + 4;\n }\n break;\n default: {\n throw 'Invalid operation';\n }\n }\n h /= 6;\n }\n h *= 360;\n return { hue: h, saturation: s, luminosity: l };\n }\n /**\n * Divide 1 to n, handling floating point errors.\n * Ensures that the value is in between 0 and 1.\n **/\n bound01(n, max) {\n n = Math.min(max, Math.max(0, n));\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n else {\n return (n % max) / max;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorWheelComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0\", type: BsColorWheelComponent, isStandalone: false, selector: \"bs-color-wheel\", inputs: { diameterRatio: \"diameterRatio\", width: \"width\", height: \"height\", hs: \"hs\", luminosity: \"luminosity\" }, outputs: { hsChange: \"hsChange\" }, host: { listeners: { \"document:mousemove\": \"onMouseMove($event)\", \"document:mouseup\": \"onPointerUp($event)\" }, properties: { \"class.position-relative\": \"this.positionRelative\" } }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true }], ngImport: i0, template: \"<canvas\\n class=\\\"d-block\\\"\\n [width]=\\\"width$ | async\\\"\\n [height]=\\\"height$ | async\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n #canvas></canvas>\\n\\n@if (markerPosition$ | async; as markerPosition) {\\n <div class=\\\"thumb position-absolute pe-none\\\" [style.left.px]=\\\"markerPosition.x\\\" [style.top.px]=\\\"markerPosition.y\\\"></div>\\n}\", styles: [\".thumb{width:30px;height:30px;border-radius:15px;margin-top:-15px;margin-left:-15px;box-sizing:border-box;border:2px solid white;box-shadow:#0000001a 0 0 10px 5px}\\n\"], dependencies: [{ kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorWheelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-color-wheel', standalone: false, template: \"<canvas\\n class=\\\"d-block\\\"\\n [width]=\\\"width$ | async\\\"\\n [height]=\\\"height$ | async\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n #canvas></canvas>\\n\\n@if (markerPosition$ | async; as markerPosition) {\\n <div class=\\\"thumb position-absolute pe-none\\\" [style.left.px]=\\\"markerPosition.x\\\" [style.top.px]=\\\"markerPosition.y\\\"></div>\\n}\", styles: [\".thumb{width:30px;height:30px;border-radius:15px;margin-top:-15px;margin-left:-15px;box-sizing:border-box;border:2px solid white;box-shadow:#0000001a 0 0 10px 5px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { positionRelative: [{\n type: HostBinding,\n args: ['class.position-relative']\n }], diameterRatio: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['canvas']\n }], hsChange: [{\n type: Output\n }], hs: [{\n type: Input\n }], luminosity: [{\n type: Input\n }], onMouseMove: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }], onPointerUp: [{\n type: HostListener,\n args: ['document:mouseup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itd2hlZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvY29tcG9uZW50cy9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2NvbG9yLXdoZWVsL2NvbG9yLXdoZWVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBV2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBb0IsT0FBZ0M7UUFDbEQsMERBQTBEO1FBQzFELG1DQUFtQztRQUNuQyx5REFBeUQ7UUFDekQsd0NBQXdDO1FBQ3hDLG1EQUFtRDtRQUNuRCxxREFBcUQ7UUFDckQsZUFBZTtRQUNmLFFBQVE7UUFDUixNQUFNO1FBQ04sTUFBTTtRQVZZLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBcUdaLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQWFoRSx3QkFBd0I7UUFDeEIsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxhQUFRLEdBQUcsSUFBSSxZ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RkRDWSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzsrRUF5R3VCLGdCQUFnQjtzQkFBdkQsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBRXpCLGFBQWE7c0JBQXpCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSztnQkFHTyxNQUFNO3NCQUFsQixLQUFLO2dCQUdlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFJVCxRQUFRO3NCQUFqQixNQUFNO2dCQUlhLEVBQUU7c0JBQXJCLEtBQUs7Z0JBU2MsVUFBVTtzQkFBN0IsS0FBSztnQkE4Q04sV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU05QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgbWFwLCB0YWtlLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEhTIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ocyc7XG5pbXBvcnQgeyBIc2xDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaHNsLWNvbG9yJztcbmltcG9ydCB7IFJnYkNvbG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZ2ItY29sb3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1jb2xvci13aGVlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci13aGVlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9yLXdoZWVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc0NvbG9yV2hlZWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgLy8gdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIC8vICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgLy8gICAgICAgY29uc29sZS5sb2coZW50cnkuY29udGVudFJlY3QpO1xuICAgIC8vICAgICAgIHRoaXMud2lkdGgkLm5leHQoZW50cnkuY29udGVudFJlY3Qud2lkdGgpO1xuICAgIC8vICAgICAgIHRoaXMuaGVpZ2h0JC5uZXh0KGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gICAgLy8gICAgICAgYnJlYWs7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcblxuICAgIHRoaXMuc3F1YXJlU2l6ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZHRoJCwgdGhpcy5oZWlnaHQkXSlcbiAgICAgIC5waXBlKG1hcCgoW3dpZHRoLCBoZWlnaHRdKSA9PiB7XG4gICAgICAgIGlmICgod2lkdGggPT09IG51bGwpIHx8IChoZWlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcXVhcmVTaXplID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHJldHVybiBzcXVhcmVTaXplO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5zaGlmdFgkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWR0aCQsIHRoaXMuaGVpZ2h0JF0pXG4gICAgICAucGlwZShtYXAoKFt3aWR0aCwgaGVpZ2h0XSkgPT4ge1xuICAgICAgICBpZiAoKHdpZHRoID09PSBudWxsKSB8fCAoaGVpZ2h0ID09PSBudWxsKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHdpZHRoIDwgaGVpZ2h0KSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICh3aWR0aCAtIGhlaWdodCkgLyAyO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnNoaWZ0WSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZHRoJCwgdGhpcy5oZWlnaHQkXSlcbiAgICAgIC5waXBlKG1hcCgoW3dpZHRoLCBoZWlnaHRdKSA9PiB7XG4gICAgICAgIGlmICgod2lkdGggPT09IG51bGwpIHx8IChoZWlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAod2lkdGggPCBoZWlnaHQpIHtcbiAgICAgICAgICByZXR1cm4gKGhlaWdodCAtIHdpZHRoKSAvIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMuaW5uZXJSYWRpdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zcXVhcmVTaXplJCwgdGhpcy5kaWFtZXRlclJhdGlvJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBkaWFtZXRlclJhdGlvXSkgPT4ge1xuICAgICAgICBpZiAoc3F1YXJlU2l6ZSkge1xuICAgICAgICAgIHJldHVybiBzcXVhcmVTaXplIC8gMiAqIGRpYW1ldGVyUmF0aW87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMub3V0ZXJSYWRpdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zcXVhcmVTaXplJCwgdGhpcy5kaWFtZXRlclJhdGlvJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBkaWFtZXRlclJhdGlvXSkgPT4ge1xuICAgICAgICBpZiAoc3F1YXJlU2l6ZSkge1xuICAgICAgICAgIHJldHVybiBzcXVhcmVTaXplIC8gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gMTUwO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gIFxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuaW5uZXJSYWRpdXMkLCB0aGlzLm91dGVyUmFkaXVzJCwgdGhpcy5zaGlmdFgkLCB0aGlzLnNoaWZ0WSRdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChbaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FudmFzQ29udGV4dCAmJiAoaW5uZXJSYWRpdXMgIT09IG51bGwpICYmIChvdXRlclJhZGl1cyAhPT0gbnVsbCkgJiYgKHNoaWZ0WCAhPT0gbnVsbCkgJiYgKHNoaWZ0WSAhPT0gbnVsbCkpIHtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGgsIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC50cmFuc2xhdGUoc2hpZnRYICsgb3V0ZXJSYWRpdXMsIHNoaWZ0WSArIG91dGVyUmFkaXVzKTtcblxuICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgMzYwOyB4KyspIHtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5yb3RhdGUoMSAqIE1hdGguUEkgLyAxODApO1xuICAgICAgICAgICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmNhbnZhc0NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoaW5uZXJSYWRpdXMsIDAsIG91dGVyUmFkaXVzLCAwKTtcblxuICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGBoc2woJHt4fSwgMCUsIDUwJSlgKTtcbiAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBgaHNsKCR7eH0sIDEwMCUsIDUwJSlgKTtcblxuICAgICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxSZWN0KGlubmVyUmFkaXVzLCAwLCBvdXRlclJhZGl1cyAtIGlubmVyUmFkaXVzLCBvdXRlclJhZGl1cyAvIDUwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMubWFya2VyUG9zaXRpb24kID0gY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMuc2hpZnRYJCwgdGhpcy5zaGlmdFkkXSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoW2hzLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3IycG9zaXRpb24oaHMpXG4gICAgICAgICAgLnBpcGUobWFwKChwb3NpdGlvbikgPT4gKHtwb3NpdGlvbiwgc2hpZnRYOiAoc2hpZnRYID8/IDApLCBzaGlmdFk6IChzaGlmdFkgPz8gMCl9KSkpO1xuICAgICAgfSkpXG4gICAgICAucGlwZShtYXAoKHtwb3NpdGlvbiwgc2hpZnRYLCBzaGlmdFl9KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogcG9zaXRpb24ueCArIHNoaWZ0WCxcbiAgICAgICAgICB5OiBwb3NpdGlvbi55ICsgc2hpZnRZLFxuICAgICAgICB9O1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5ocyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGhzKSA9PiB0aGlzLmhzQ2hhbmdlLmVtaXQoaHMpKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9zaXRpb24tcmVsYXRpdmUnKSBwb3NpdGlvblJlbGF0aXZlID0gdHJ1ZTtcbiAgXG4gIEBJbnB1dCgpIHNldCBkaWFtZXRlclJhdGlvKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmRpYW1ldGVyUmF0aW8kLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWlnaHQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBcbiAgLy8jcmVnaW9uIEh1ZS9MdW1pbm9zaXR5XG4gIGhzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SFM+KHsgaHVlOiAwLCBzYXR1cmF0aW9uOiAwIH0pO1xuICBAT3V0cHV0KCkgaHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEhTPigpO1xuICBwdWJsaWMgZ2V0IGhzKCkge1xuICAgIHJldHVybiB0aGlzLmhzJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGhzKHZhbHVlOiBIUykge1xuICAgIHRoaXMuaHMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gTHVtaW5vc2l0eVxuICBsdW1pbm9zaXR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBjYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpc1BvaW50ZXJEb3duID0gZmFsc2U7XG4gIHdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxNTApO1xuICBoZWlnaHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE1MCk7XG4gIGRpYW1ldGVyUmF0aW8kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIHNxdWFyZVNpemUkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBzaGlmdFgkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBzaGlmdFkkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuXG4gIGlubmVyUmFkaXVzJDogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPjtcbiAgb3V0ZXJSYWRpdXMkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuICBtYXJrZXJQb3NpdGlvbiQ6IE9ic2VydmFibGU8e3g6IG51bWJlciwgeTogbnVtYmVyfT47XG4gIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBcbiAgdmlld0luaXRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnZpZXdJbml0ZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jYW52YXNDb250ZXh0ID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcsIHsgd2lsbFJlYWRGcmVxdWVudGx5OiB0cnVlIH0pO1xuICB9XG5cbiAgb25Qb2ludGVyRG93bihldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQkLnZhbHVlKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5pc1BvaW50ZXJEb3duID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3IoZXYsICEoJ3RvdWNoZXMnIGluIGV2KSk7XG4gICAgfVxuICB9XG5cbiAgb25Qb2ludGVyTW92ZShldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1BvaW50ZXJEb3duKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yKGV2LCAhKCd0b3VjaGVzJyBpbiBldikpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblBvaW50ZXJNb3ZlKGV2KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBvblBvaW50ZXJVcChldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzUG9pbnRlckRvd24gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sb3IoZXY6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBzdWJ0cmFjdDogYm9vbGVhbikge1xuICAgIGxldCBjbzogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9O1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICgndG91Y2hlcycgaW4gZXYpIHtcbiAgICAgIGNvID0ge1xuICAgICAgICB4OiBldi50b3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICAgIHk6IGV2LnRvdWNoZXNbMF0uY2xpZW50WSAtIHJlY3QudG9wLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY28gPSB7XG4gICAgICAgIHg6IGV2LmNsaWVudFggLSAoc3VidHJhY3QgPyByZWN0LmxlZnQgOiAwKSxcbiAgICAgICAgeTogZXYuY2xpZW50WSAtIChzdWJ0cmFjdCA/IHJlY3QudG9wIDogMCksXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnBvc2l0aW9uMmNvbG9yKGNvLngsIGNvLnkpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjb2xvcikgPT4ge1xuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIHRoaXMuaHMkLm5leHQoeyBodWU6IGNvbG9yLmh1ZSwgc2F0dXJhdGlvbjogY29sb3Iuc2F0dXJhdGlvbiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ29sb3IgaXMgbnVsbCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0luc2lkZUNpcmNsZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnNxdWFyZVNpemUkLCB0aGlzLnNoaWZ0WCQsIHRoaXMuc2hpZnRZJF0pXG4gICAgICAucGlwZShtYXAoKFtzcXVhcmVTaXplLCBzaGlmdFgsIHNoaWZ0WV0pID0+IHtcbiAgICAgICAgLy8gUG9zaXRpb24gdG8gdGhlIHNxdWFyZVxuICAgICAgICBjb25zdCBzeDogbnVtYmVyID0geCAtIChzaGlmdFggPz8gMCk7XG4gICAgICAgIGNvbnN0IHN5ID0geSAtIChzaGlmdFkgPz8gMCk7XG4gICAgICAgIC8vIFNxdWFyZSByYWRpdXNcbiAgICAgICAgY29uc3Qgc3IgPSAoc3F1YXJlU2l6ZSA/PyAwKSAvIDI7XG5cbiAgICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5zcXJ0KE1hdGgucG93KHN4IC0gc3IsIDIpICsgTWF0aC5wb3coc3kgLSBzciwgMikpO1xuICAgICAgICBjb25zdCBhbmdsZSA9IChNYXRoLmF0YW4yKHNyIC0gc3ksIHNyIC0gc3gpICsgTWF0aC5QSSkgJSAzNjA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5zaWRlOiByYWRpdXMgPD0gc3IsXG4gICAgICAgICAgYW5nbGVcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb24yY29sb3IoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5pc0luc2lkZUNpcmNsZSh4LCB5KS5waXBlKG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY2FudmFzQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5pbnNpZGUpIHtcbiAgICAgICAgY29uc3QgaW1hZ2VEYXRhID0gdGhpcy5jYW52YXNDb250ZXh0LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKS5kYXRhO1xuICAgICAgICBjb25zdCBoc2wgPSB0aGlzLnJnYjJIc2woeyByOiBpbWFnZURhdGFbMF0sIGc6IGltYWdlRGF0YVsxXSwgYjogaW1hZ2VEYXRhWzJdIH0pO1xuICAgICAgICByZXR1cm4gaHNsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gPEhzbENvbG9yPnsgaHVlOiByZXN1bHQuYW5nbGUgKiAxODAgLyBNYXRoLlBJLCBzYXR1cmF0aW9uOiAxLCBsdW1pbm9zaXR5OiAwLjUgfTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yMnBvc2l0aW9uKGhzOiBIUykge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmlubmVyUmFkaXVzJCwgdGhpcy5vdXRlclJhZGl1cyRdKVxuICAgICAgLnBpcGUobWFwKChbaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzXSkgPT4ge1xuICAgICAgICBpZiAoaW5uZXJSYWRpdXMgPT09IG51bGwpIHtcbiAgICAgICAgICBpbm5lclJhZGl1cyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvdXRlclJhZGl1cykge1xuICAgICAgICAgIG91dGVyUmFkaXVzID0gMTAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhldGEgPSBocy5odWUgKiBNYXRoLlBJIC8gMTgwO1xuICAgICAgICBjb25zdCBjID0ge1xuICAgICAgICAgIHg6IC1vdXRlclJhZGl1cyAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgICB5OiAtb3V0ZXJSYWRpdXMgKiBNYXRoLnNpbih0aGV0YSlcbiAgICAgICAgfTtcbiAgICBcbiAgICAgICAgY29uc3QgZCA9IGhzLnNhdHVyYXRpb24gKiAob3V0ZXJSYWRpdXMgLSBpbm5lclJhZGl1cykgKyBpbm5lclJhZGl1cztcbiAgICAgICAgY29uc3QgbyA9IHsgeDogb3V0ZXJSYWRpdXMsIHk6IG91dGVyUmFkaXVzIH07XG4gICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogby54IC0gZCAqIChjLnggLyBvdXRlclJhZGl1cyksXG4gICAgICAgICAgeTogby55IC0gZCAqIChjLnkgLyBvdXRlclJhZGl1cyksXG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSByZ2IySHNsKGNvbG9yOiBSZ2JDb2xvcikge1xuICAgIGNvbnN0IHIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5yLCAyNTUpO1xuICAgIGNvbnN0IGcwMSA9IHRoaXMuYm91bmQwMShjb2xvci5nLCAyNTUpO1xuICAgIGNvbnN0IGIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5iLCAyNTUpO1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgocjAxLCBnMDEsIGIwMSk7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocjAxLCBnMDEsIGIwMSk7XG5cbiAgICBsZXQgaDogbnVtYmVyLCBzOiBudW1iZXI7IGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG4gICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgIGggPSBzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkID0gbWF4IC0gbWluO1xuICAgICAgICBzID0gKGwgPiAwLjUpID8gKGQgLyAoMiAtIG1heCAtIG1pbikpIDogKGQgLyAobWF4ICsgbWluKSk7XG4gICAgICAgIHN3aXRjaCAobWF4KSB7XG4gICAgICAgICAgICBjYXNlIHIwMToge1xuICAgICAgICAgICAgICAgIGggPSAoZzAxIC0gYjAxKSAvIGQgKyAoKGcwMSA8IGIwMSkgPyA2IDogMCk7XG4gICAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBnMDE6IHtcbiAgICAgICAgICAgICAgICBoID0gKGIwMSAtIHIwMSkgLyBkICsgMjtcbiAgICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGIwMToge1xuICAgICAgICAgICAgICAgIGggPSAocjAxIC0gZzAxKSAvIGQgKyA0O1xuICAgICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBvcGVyYXRpb24nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBoIC89IDY7XG4gICAgfVxuICAgIFxuICAgIGggKj0gMzYwO1xuXG4gICAgcmV0dXJuIDxIc2xDb2xvcj57IGh1ZTogaCwgc2F0dXJhdGlvbjogcywgbHVtaW5vc2l0eTogbCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZSAxIHRvIG4sIGhhbmRsaW5nIGZsb2F0aW5nIHBvaW50IGVycm9ycy5cbiAgICogRW5zdXJlcyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBiZXR3ZWVuIDAgYW5kIDEuXG4gICAqKi9cbiAgcHJpdmF0ZSBib3VuZDAxKG46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgIG4gPSBNYXRoLm1pbihtYXgsIE1hdGgubWF4KDAsIG4pKTtcbiAgICAgIGlmICgoTWF0aC5hYnMobiAtIG1heCkgPCAwLjAwMDAwMSkpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIChuICUgbWF4KSAvIG1heDtcbiAgICAgIH1cbiAgfVxuXG59XG4iLCI8Y2FudmFzXG4gICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICBbd2lkdGhdPVwid2lkdGgkIHwgYXN5bmNcIlxuICAgIFtoZWlnaHRdPVwiaGVpZ2h0JCB8IGFzeW5jXCJcbiAgICAobW91c2Vkb3duKT1cIm9uUG9pbnRlckRvd24oJGV2ZW50KVwiXG4gICAgKHRvdWNoc3RhcnQpPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAodG91Y2htb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGV2ZW50KVwiXG4gICAgKHRvdWNoZW5kKT1cIm9uUG9pbnRlclVwKCRldmVudClcIlxuICAgICNjYW52YXM+PC9jYW52YXM+XG5cbkBpZiAobWFya2VyUG9zaXRpb24kIHwgYXN5bmM7IGFzIG1hcmtlclBvc2l0aW9uKSB7XG4gICAgPGRpdiBjbGFzcz1cInRodW1iIHBvc2l0aW9uLWFic29sdXRlIHBlLW5vbmVcIiBbc3R5bGUubGVmdC5weF09XCJtYXJrZXJQb3NpdGlvbi54XCIgW3N0eWxlLnRvcC5weF09XCJtYXJrZXJQb3NpdGlvbi55XCI+PC9kaXY+XG59Il19","import { Component, Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nexport class BsSliderComponent {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.dBlock = true;\n this.positionRelative = true;\n //#region Value\n this.value$ = new BehaviorSubject(0.5);\n this.valueChange = new EventEmitter();\n //#endregion\n this.isPointerDown$ = new BehaviorSubject(false);\n this.value$.pipe(takeUntilDestroyed())\n .subscribe((value) => this.valueChange.emit(value));\n this.thumbMarginLeft$ = this.value$.pipe(map((value) => {\n const res = value * element.nativeElement.clientWidth - 12;\n return res;\n }));\n this.cursorClass$ = this.isPointerDown$.pipe(map((isPointerDown) => {\n return isPointerDown ? 'cursor-grabbing' : 'cursor-grab';\n }));\n }\n get value() {\n return this.value$.value;\n }\n set value(value) {\n this.value$.next(value);\n }\n onPointerDown(ev) {\n ev.preventDefault();\n this.zone.run(() => this.isPointerDown$.next(true));\n this.updateColor(ev);\n }\n onPointerMove(ev) {\n if (this.isPointerDown$.value) {\n ev.preventDefault();\n ev.stopPropagation();\n this.updateColor(ev);\n }\n }\n onPointerUp(ev) {\n this.isPointerDown$.next(false);\n }\n updateColor(ev) {\n let co;\n const rect = this.track.nativeElement.getBoundingClientRect();\n if ('touches' in ev) {\n co = {\n x: ev.touches[0].clientX - rect.left,\n };\n }\n else {\n co = {\n x: ev.clientX - rect.left,\n };\n }\n const percent = co.x / this.track.nativeElement.clientWidth;\n const limited = Math.max(0, Math.min(1, percent));\n this.value$.next(limited);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsSliderComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsSliderComponent, isStandalone: false, selector: \"bs-slider\", inputs: { value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { listeners: { \"document:mousemove\": \"onPointerMove($event)\", \"document:mouseup\": \"onPointerUp($event)\" }, properties: { \"class.d-block\": \"this.dBlock\", \"class.position-relative\": \"this.positionRelative\" } }, viewQueries: [{ propertyName: \"track\", first: true, predicate: [\"track\"], descendants: true }, { propertyName: \"thumb\", first: true, predicate: [\"thumb\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"wrapper d-block position-relative\\\">\\n <div #track class=\\\"track2\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\">\\n <ng-content select=\\\"[bsTrack]\\\"></ng-content>\\n </div>\\n <div #thumb\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n [class]=\\\"cursorClass$ | async\\\"\\n [style.margin-left.px]=\\\"thumbMarginLeft$ | async\\\">\\n <ng-content select=\\\"[bsThumb]\\\"></ng-content>\\n </div>\\n</div>\", styles: [\".track2{height:8px}.wrapper{padding-top:8px;padding-bottom:8px}::ng-deep .thumb{width:24px;height:24px;top:0;border-radius:50%;box-shadow:0 0 0 .1rem #646b7240}::ng-deep .track{height:8px;border-radius:8px}\\n\"], dependencies: [{ kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsSliderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-slider', standalone: false, template: \"<div class=\\\"wrapper d-block position-relative\\\">\\n <div #track class=\\\"track2\\\"\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\">\\n <ng-content select=\\\"[bsTrack]\\\"></ng-content>\\n </div>\\n <div #thumb\\n (mousedown)=\\\"onPointerDown($event)\\\"\\n (touchstart)=\\\"onPointerDown($event)\\\"\\n (touchmove)=\\\"onPointerMove($event)\\\"\\n (touchend)=\\\"onPointerUp($event)\\\"\\n [class]=\\\"cursorClass$ | async\\\"\\n [style.margin-left.px]=\\\"thumbMarginLeft$ | async\\\">\\n <ng-content select=\\\"[bsThumb]\\\"></ng-content>\\n </div>\\n</div>\", styles: [\".track2{height:8px}.wrapper{padding-top:8px;padding-bottom:8px}::ng-deep .thumb{width:24px;height:24px;top:0;border-radius:50%;box-shadow:0 0 0 .1rem #646b7240}::ng-deep .track{height:8px;border-radius:8px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dBlock: [{\n type: HostBinding,\n args: ['class.d-block']\n }], positionRelative: [{\n type: HostBinding,\n args: ['class.position-relative']\n }], track: [{\n type: ViewChild,\n args: ['track']\n }], thumb: [{\n type: ViewChild,\n args: ['thumb']\n }], valueChange: [{\n type: Output\n }], value: [{\n type: Input\n }], onPointerMove: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }], onPointerUp: [{\n type: HostListener,\n args: ['document:mouseup', ['$event']]\n }] } });\nexport class BsThumbDirective {\n constructor() {\n this.thumbClass = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsThumbDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsThumbDirective, isStandalone: false, selector: \"[bsThumb]\", host: { properties: { \"class.thumb\": \"this.thumbClass\", \"class.position-absolute\": \"this.thumbClass\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsThumbDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsThumb]',\n standalone: false,\n }]\n }], propDecorators: { thumbClass: [{\n type: HostBinding,\n args: ['class.thumb']\n }, {\n type: HostBinding,\n args: ['class.position-absolute']\n }] } });\nexport class BsTrackDirective {\n constructor() {\n this.trackClass = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsTrackDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsTrackDirective, isStandalone: false, selector: \"[bsTrack]\", host: { properties: { \"class.track\": \"this.trackClass\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsTrackDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsTrack]',\n standalone: false,\n }]\n }], propDecorators: { trackClass: [{\n type: HostBinding,\n args: ['class.track']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQVF4RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLE9BQWdDLEVBQVUsSUFBWTtRQUF0RCxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVE7UUFjNUMsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNKLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUtoRSxlQUFlO1FBQ2YsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU9uRCxZQUFZO1FBRUosbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQTlCM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUs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QUMsZUFBZTtnQkFDWSxnQkFBZ0I7c0JBQXZELFdBQVc7dUJBQUMseUJBQXlCO2dCQUVsQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUlSLFdBQVc7c0JBQXBCLE1BQU07Z0JBSWEsS0FBSztzQkFBeEIsS0FBSztnQkFlTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTlDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUE0QjlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFKN0I7UUFPRSxlQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25COzhHQUpZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OEJBSUMsVUFBVTtzQkFGVCxXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLHlCQUF5Qjs7QUFReEMsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUs4QixlQUFVLEdBQUcsSUFBSSxDQUFDO0tBQy9DOzhHQUZZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OEJBRTZCLFVBQVU7c0JBQXJDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NsaWRlckNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgdGhpcy52YWx1ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpKTtcblxuICAgIHRoaXMudGh1bWJNYXJnaW5MZWZ0JCA9IHRoaXMudmFsdWUkLnBpcGUobWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdmFsdWUgKiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSAxMjtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5jdXJzb3JDbGFzcyQgPSB0aGlzLmlzUG9pbnRlckRvd24kLnBpcGUobWFwKChpc1BvaW50ZXJEb3duKSA9PiB7XG4gICAgICByZXR1cm4gaXNQb2ludGVyRG93biA/ICdjdXJzb3ItZ3JhYmJpbmcnIDogJ2N1cnNvci1ncmFiJztcbiAgICB9KSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLXJlbGF0aXZlJykgcG9zaXRpb25SZWxhdGl2ZSA9IHRydWU7XG4gIHRodW1iTWFyZ2luTGVmdCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgQFZpZXdDaGlsZCgndHJhY2snKSB0cmFjayE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0aHVtYicpIHRodW1iITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLy8jcmVnaW9uIFZhbHVlXG4gIHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwLjUpO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBpc1BvaW50ZXJEb3duJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJzb3JDbGFzcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBvblBvaW50ZXJEb3duKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmlzUG9pbnRlckRvd24kLm5leHQodHJ1ZSkpO1xuICAgIHRoaXMudXBkYXRlQ29sb3IoZXYpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Qb2ludGVyTW92ZShldjogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1BvaW50ZXJEb3duJC52YWx1ZSkge1xuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy51cGRhdGVDb2xvcihldik7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uUG9pbnRlclVwKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIHRoaXMuaXNQb2ludGVyRG93biQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbG9yKGV2OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGxldCBjbzogeyB4OiBudW1iZXIgfTtcbiAgICBjb25zdCByZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmICgndG91Y2hlcycgaW4gZXYpIHtcbiAgICAgIGNvID0ge1xuICAgICAgICB4OiBldi50b3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjbyA9IHtcbiAgICAgICAgeDogZXYuY2xpZW50WCAtIHJlY3QubGVmdCxcbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHBlcmNlbnQgPSBjby54IC8gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IGxpbWl0ZWQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwZXJjZW50KSk7XG4gICAgdGhpcy52YWx1ZSQubmV4dChsaW1pdGVkKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNUaHVtYl0nLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQnNUaHVtYkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGh1bWInKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLWFic29sdXRlJylcbiAgdGh1bWJDbGFzcyA9IHRydWU7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tic1RyYWNrXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc1RyYWNrRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50cmFjaycpIHRyYWNrQ2xhc3MgPSB0cnVlO1xufSIsIjxkaXYgY2xhc3M9XCJ3cmFwcGVyIGQtYmxvY2sgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICA8ZGl2ICN0cmFjayBjbGFzcz1cInRyYWNrMlwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNobW92ZSk9XCJvblBvaW50ZXJNb3ZlKCRldmVudClcIlxuICAgICAgICAodG91Y2hlbmQpPVwib25Qb2ludGVyVXAoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnNUcmFja11cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjdGh1bWJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvblBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblBvaW50ZXJEb3duKCRldmVudClcIlxuICAgICAgICAodG91Y2htb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGV2ZW50KVwiXG4gICAgICAgICh0b3VjaGVuZCk9XCJvblBvaW50ZXJVcCgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImN1cnNvckNsYXNzJCB8IGFzeW5jXCJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cInRodW1iTWFyZ2luTGVmdCQgfCBhc3luY1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnNUaHVtYl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../slider/slider.component\";\nimport * as i2 from \"@angular/common\";\nexport class BsLuminosityStripComponent {\n constructor() {\n //#region HS\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0.5);\n this.luminosityChange = new EventEmitter();\n //#endregion\n this.canvasContext = null;\n this.hs$.pipe(takeUntilDestroyed()).subscribe((hs) => {\n if (this.canvasContext) {\n const width = this.canvas.nativeElement.width, height = this.canvas.nativeElement.height;\n this.canvasContext.clearRect(0, 0, width, height);\n this.canvasContext.save();\n // HSL\n // - H: 0 - 359\n // - S: \"0%\" - \"100%\"\n // - L: \"0%\" - \"50%\" - \"100%\"\n const gradient = this.canvasContext.createLinearGradient(0, 0, width, 0);\n gradient.addColorStop(0, `hsl(${hs.hue}, ${hs.saturation * 100}%, 0%)`);\n gradient.addColorStop(0.5, `hsl(${hs.hue}, ${hs.saturation * 100}%, 50%)`);\n gradient.addColorStop(1, `hsl(${hs.hue}, ${hs.saturation * 100}%, 100%)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(0, 0, width, height);\n }\n });\n this.resultBackground$ = combineLatest([this.hs$, this.luminosity$])\n .pipe(map(([hs, luminosity]) => {\n return `hsl(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%)`;\n }));\n this.luminosity$.pipe(takeUntilDestroyed())\n .subscribe(luminosity => this.luminosityChange.emit(luminosity));\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n ngAfterViewInit() {\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsLuminosityStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsLuminosityStripComponent, isStandalone: false, selector: \"bs-luminosity-strip\", inputs: { hs: \"hs\", luminosity: \"luminosity\" }, outputs: { luminosityChange: \"luminosityChange\" }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true }], ngImport: i0, template: \"<bs-slider [value]=\\\"(luminosity$ | async)!\\\" (valueChange)=\\\"luminosityChange.emit($event)\\\">\\n <canvas bsTrack class=\\\"position-absolute w-100\\\" #canvas></canvas>\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\"\"], dependencies: [{ kind: \"component\", type: i1.BsSliderComponent, selector: \"bs-slider\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"directive\", type: i1.BsThumbDirective, selector: \"[bsThumb]\" }, { kind: \"directive\", type: i1.BsTrackDirective, selector: \"[bsTrack]\" }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsLuminosityStripComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-luminosity-strip', standalone: false, template: \"<bs-slider [value]=\\\"(luminosity$ | async)!\\\" (valueChange)=\\\"luminosityChange.emit($event)\\\">\\n <canvas bsTrack class=\\\"position-absolute w-100\\\" #canvas></canvas>\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\" }]\n }], ctorParameters: () => [], propDecorators: { hs: [{\n type: Input\n }], luminosityChange: [{\n type: Output\n }], luminosity: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['canvas']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2x1bWlub3NpdHktc3RyaXAvbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2x1bWlub3NpdHktc3RyaXAvbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBU2hFLE1BQU0sT0FBTywwQkFBMEI7SUFDckM7UUE4QkEsWUFBWTtRQUNaLFFBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFPekQsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFPeEQsWUFBWTtRQUVKLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQWpENUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFF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QkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLEtBQUs7d0RBc0NHLEVBQUU7c0JBQXJCLEtBQUs7Z0JBTUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUlhLFVBQVU7c0JBQTdCLEtBQUs7Z0JBTWUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEhTIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ocyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWx1bWlub3NpdHktc3RyaXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbHVtaW5vc2l0eS1zdHJpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2x1bWlub3NpdHktc3RyaXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEJzTHVtaW5vc2l0eVN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaHMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaHMpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbnZhc0NvbnRleHQpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoLCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LnNhdmUoKTtcblxuICAgICAgICAvLyBIU0xcbiAgICAgICAgLy8gLSBIOiAwIC0gMzU5XG4gICAgICAgIC8vIC0gUzogXCIwJVwiIC0gXCIxMDAlXCJcbiAgICAgICAgLy8gLSBMOiBcIjAlXCIgLSBcIjUwJVwiIC0gXCIxMDAlXCJcblxuICAgICAgICBjb25zdCBncmFkaWVudCA9IHRoaXMuY2FudmFzQ29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgMCk7XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsIDAlKWApO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC41LCBgaHNsKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsIDUwJSlgKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIGBoc2woJHtocy5odWV9LCAke2hzLnNhdHVyYXRpb24gKiAxMDB9JSwgMTAwJSlgKTtcbiAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZXN1bHRCYWNrZ3JvdW5kJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaHMkLCB0aGlzLmx1bWlub3NpdHkkXSlcbiAgICAgIC5waXBlKG1hcCgoW2hzLCBsdW1pbm9zaXR5XSkgPT4ge1xuICAgICAgICByZXR1cm4gYGhzbCgke2hzLmh1ZX0sICR7aHMuc2F0dXJhdGlvbiAqIDEwMH0lLCAke2x1bWlub3NpdHkgKiAxMDB9JSlgO1xuICAgICAgfSkpO1xuICAgICAgXG4gICAgdGhpcy5sdW1pbm9zaXR5JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZShsdW1pbm9zaXR5ID0+IHRoaXMubHVtaW5vc2l0eUNoYW5nZS5lbWl0KGx1bWlub3NpdHkpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBIU1xuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgcHVibGljIGdldCBocygpIHtcbiAgICByZXR1cm4gdGhpcy5ocyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBocyh2YWx1ZTogSFMpIHtcbiAgICB0aGlzLmhzJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEx1bWlub3NpdHlcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMC41KTtcbiAgQE91dHB1dCgpIGx1bWlub3NpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwcml2YXRlIGNhbnZhc0NvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKCdjYW52YXMnKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlc3VsdEJhY2tncm91bmQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iLCI8YnMtc2xpZGVyIFt2YWx1ZV09XCIobHVtaW5vc2l0eSQgfCBhc3luYykhXCIgKHZhbHVlQ2hhbmdlKT1cImx1bWlub3NpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG4gICAgPGNhbnZhcyBic1RyYWNrIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDBcIiAjY2FudmFzPjwvY2FudmFzPlxuICAgIDxkaXYgYnNUaHVtYiBbc3R5bGUuYmFja2dyb3VuZF09XCJyZXN1bHRCYWNrZ3JvdW5kJCB8IGFzeW5jXCI+PC9kaXY+XG48L2JzLXNsaWRlcj4iXX0=","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../slider/slider.component\";\nimport * as i2 from \"@angular/common\";\nexport class BsAlphaStripComponent {\n constructor() {\n //#region HS\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n //#endregion\n //#region Luminosity\n this.luminosity$ = new BehaviorSubject(0.5);\n //#endregion\n //#region Alpha\n this.alpha$ = new BehaviorSubject(1);\n this.alphaChange = new EventEmitter();\n //#endregion\n this.canvasContext = null;\n combineLatest([this.hs$, this.luminosity$]).pipe(takeUntilDestroyed()).subscribe(([hs, luminosity]) => {\n setTimeout(() => {\n if (this.canvasContext) {\n const width = this.canvas.nativeElement.width, height = this.canvas.nativeElement.height;\n this.canvasContext.clearRect(0, 0, width, height);\n this.canvasContext.save();\n const gradient = this.canvasContext.createLinearGradient(0, 0, width, 0);\n gradient.addColorStop(0, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 0)`);\n gradient.addColorStop(1, `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, 1)`);\n this.canvasContext.fillStyle = gradient;\n this.canvasContext.fillRect(0, 0, width, height);\n }\n });\n });\n this.resultBackground$ = combineLatest([this.hs$, this.luminosity$, this.alpha$])\n .pipe(map(([hs, luminosity, alpha]) => {\n return `hsla(${hs.hue}, ${hs.saturation * 100}%, ${luminosity * 100}%, ${alpha})`;\n }));\n this.alpha$.pipe(takeUntilDestroyed())\n .subscribe((alpha) => this.alphaChange.emit(alpha));\n }\n get hs() {\n return this.hs$.value;\n }\n set hs(value) {\n this.hs$.next(value);\n }\n get luminosity() {\n return this.luminosity$.value;\n }\n set luminosity(value) {\n this.luminosity$.next(value);\n }\n get alpha() {\n return this.alpha$.value;\n }\n set alpha(value) {\n this.alpha$.next(value);\n }\n ngAfterViewInit() {\n this.canvasContext = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsAlphaStripComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsAlphaStripComponent, isStandalone: false, selector: \"bs-alpha-strip\", inputs: { hs: \"hs\", luminosity: \"luminosity\", alpha: \"alpha\" }, outputs: { alphaChange: \"alphaChange\" }, viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"track\"], descendants: true }], ngImport: i0, template: \"<bs-slider [value]=\\\"(alpha$ | async)!\\\" (valueChange)=\\\"alphaChange.emit($event)\\\">\\n <canvas bsTrack class=\\\" track position-absolute w-100\\\" #track></canvas>\\n\\n <!-- [style.background]=\\\"resultBackground$ | async\\\" -->\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\\n\"], dependencies: [{ kind: \"component\", type: i1.BsSliderComponent, selector: \"bs-slider\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"directive\", type: i1.BsThumbDirective, selector: \"[bsThumb]\" }, { kind: \"directive\", type: i1.BsTrackDirective, selector: \"[bsTrack]\" }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsAlphaStripComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-alpha-strip', standalone: false, template: \"<bs-slider [value]=\\\"(alpha$ | async)!\\\" (valueChange)=\\\"alphaChange.emit($event)\\\">\\n <canvas bsTrack class=\\\" track position-absolute w-100\\\" #track></canvas>\\n\\n <!-- [style.background]=\\\"resultBackground$ | async\\\" -->\\n <div bsThumb [style.background]=\\\"resultBackground$ | async\\\"></div>\\n</bs-slider>\", styles: [\".track{background-image:linear-gradient(45deg,#C0C0C0 25%,transparent 25%),linear-gradient(-45deg,#C0C0C0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#C0C0C0 75%),linear-gradient(-45deg,transparent 75%,#C0C0C0 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0px}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { hs: [{\n type: Input\n }], luminosity: [{\n type: Input\n }], alphaChange: [{\n type: Output\n }], alpha: [{\n type: Input\n }], canvas: [{\n type: ViewChild,\n args: ['track']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxwaGEtc3RyaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvY29tcG9uZW50cy9hbHBoYS1zdHJpcC9hbHBoYS1zdHJpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2FscGhhLXN0cmlwL2FscGhhLXN0cmlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFRaEUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQztRQTBCQSxZQUFZO1FBQ1osUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU96RCxZQUFZO1FBQ1osb0JBQW9CO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFPL0MsWUFBWTtRQUNaLGVBQWU7UUFDZixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBT25ELFlBQVk7UUFFSixrQkFBYSxHQUFvQyxJQUFJLENBQUM7UUF0RDVELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxD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QUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQzs4R0E3RFUscUJBQXFCO2tHQUFyQixxQkFBcUIscVJDWGxDLDhUQUtZOzsyRkRNQyxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzt3REFtQ0csRUFBRTtzQkFBckIsS0FBSztnQkFTYyxVQUFVO3NCQUE3QixLQUFLO2dCQU1JLFdBQVc7c0JBQXBCLE1BQU07Z0JBSWEsS0FBSztzQkFBeEIsS0FBSztnQkFNYyxNQUFNO3NCQUF6QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSFMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtYWxwaGEtc3RyaXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxwaGEtc3RyaXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbHBoYS1zdHJpcC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQnNBbHBoYVN0cmlwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSRdKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKFtocywgbHVtaW5vc2l0eV0pID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW52YXNDb250ZXh0KSB7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoLCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodDtcbiAgICAgICAgICB0aGlzLmNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmNhbnZhc0NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgd2lkdGgsIDApO1xuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBgaHNsYSgke2hzLmh1ZX0sICR7aHMuc2F0dXJhdGlvbiAqIDEwMH0lLCAke2x1bWlub3NpdHkgKiAxMDB9JSwgMClgKTtcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgYGhzbGEoJHtocy5odWV9LCAke2hzLnNhdHVyYXRpb24gKiAxMDB9JSwgJHtsdW1pbm9zaXR5ICogMTAwfSUsIDEpYCk7XG4gICAgICAgICAgdGhpcy5jYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50O1xuICAgICAgICAgIHRoaXMuY2FudmFzQ29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc3VsdEJhY2tncm91bmQkID0gY29tYmluZUxhdGVzdChbdGhpcy5ocyQsIHRoaXMubHVtaW5vc2l0eSQsIHRoaXMuYWxwaGEkXSlcbiAgICAgIC5waXBlKG1hcCgoW2hzLCBsdW1pbm9zaXR5LCBhbHBoYV0pID0+IHtcbiAgICAgICAgcmV0dXJuIGBoc2xhKCR7aHMuaHVlfSwgJHtocy5zYXR1cmF0aW9uICogMTAwfSUsICR7bHVtaW5vc2l0eSAqIDEwMH0lLCAke2FscGhhfSlgO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5hbHBoYSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFscGhhKSA9PiB0aGlzLmFscGhhQ2hhbmdlLmVtaXQoYWxwaGEpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBIU1xuICBocyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhTPih7IGh1ZTogMCwgc2F0dXJhdGlvbjogMCB9KTtcbiAgcHVibGljIGdldCBocygpIHtcbiAgICByZXR1cm4gdGhpcy5ocyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBocyh2YWx1ZTogSFMpIHtcbiAgICB0aGlzLmhzJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEx1bWlub3NpdHlcbiAgbHVtaW5vc2l0eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMC41KTtcbiAgcHVibGljIGdldCBsdW1pbm9zaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmx1bWlub3NpdHkkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbHVtaW5vc2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sdW1pbm9zaXR5JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIEFscGhhXG4gIGFscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcbiAgQE91dHB1dCgpIGFscGhhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHB1YmxpYyBnZXQgYWxwaGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxwaGEkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgYWxwaGEodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuYWxwaGEkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICBcbiAgcHJpdmF0ZSBjYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgndHJhY2snKSBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FudmFzQ29udGV4dCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlc3VsdEJhY2tncm91bmQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iLCI8YnMtc2xpZGVyIFt2YWx1ZV09XCIoYWxwaGEkIHwgYXN5bmMpIVwiICh2YWx1ZUNoYW5nZSk9XCJhbHBoYUNoYW5nZS5lbWl0KCRldmVudClcIj5cbiAgICA8Y2FudmFzIGJzVHJhY2sgY2xhc3M9XCIgdHJhY2sgcG9zaXRpb24tYWJzb2x1dGUgdy0xMDBcIiAjdHJhY2s+PC9jYW52YXM+XG5cbiAgICA8IS0tIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInJlc3VsdEJhY2tncm91bmQkIHwgYXN5bmNcIiAtLT5cbiAgICA8ZGl2IGJzVGh1bWIgW3N0eWxlLmJhY2tncm91bmRdPVwicmVzdWx0QmFja2dyb3VuZCQgfCBhc3luY1wiPjwvZGl2PlxuPC9icy1zbGlkZXI+Il19","import { Component, Input, ViewChild, EventEmitter, Output } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../color-wheel/color-wheel.component\";\nimport * as i2 from \"../luminosity-strip/luminosity-strip.component\";\nimport * as i3 from \"../alpha-strip/alpha-strip.component\";\nimport * as i4 from \"@angular/common\";\nexport class BsColorPickerComponent {\n constructor() {\n this.size$ = new BehaviorSubject(150);\n this.disabled$ = new BehaviorSubject(false);\n this.allowAlpha$ = new BehaviorSubject(true);\n this.hs$ = new BehaviorSubject({ hue: 0, saturation: 0 });\n this.luminosity$ = new BehaviorSubject(0);\n //#region Alpha\n this.alpha$ = new BehaviorSubject(1);\n this.alphaChange = new EventEmitter();\n this.alpha$.pipe(takeUntilDestroyed())\n .subscribe((alpha) => this.alphaChange.emit(alpha));\n }\n set size(value) {\n this.size$.next(value);\n }\n set allowAlpha(value) {\n this.allowAlpha$.next(value);\n }\n get alpha() {\n return this.alpha$.value;\n }\n set alpha(value) {\n this.alpha$.next(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.0\", type: BsColorPickerComponent, isStandalone: false, selector: \"bs-color-picker\", inputs: { size: \"size\", allowAlpha: \"allowAlpha\", alpha: \"alpha\" }, outputs: { alphaChange: \"alphaChange\" }, viewQueries: [{ propertyName: \"colorWheel\", first: true, predicate: [\"wheel\"], descendants: true }], ngImport: i0, template: \"@let letDisabled = (disabled$ | async)!;\\n@let letHS = (hs$ | async)!;\\n@let letLuminosity = (luminosity$ | async)!;\\n@let letAlpha = (alpha$ | async)!;\\n\\n<bs-color-wheel [hs]=\\\"letHS\\\" (hsChange)=\\\"hs$.next($event)\\\" [luminosity]=\\\"letLuminosity\\\" [width]=\\\"(size$ | async) ?? 150\\\" [height]=\\\"(size$ | async) ?? 150\\\" #wheel></bs-color-wheel>\\n<bs-luminosity-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" (luminosityChange)=\\\"luminosity$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #strip></bs-luminosity-strip>\\n@if (allowAlpha$ | async) {\\n <bs-alpha-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" [alpha]=\\\"letAlpha\\\" (alphaChange)=\\\"alpha$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #alpha></bs-alpha-strip>\\n}\", styles: [\"\"], dependencies: [{ kind: \"component\", type: i1.BsColorWheelComponent, selector: \"bs-color-wheel\", inputs: [\"diameterRatio\", \"width\", \"height\", \"hs\", \"luminosity\"], outputs: [\"hsChange\"] }, { kind: \"component\", type: i2.BsLuminosityStripComponent, selector: \"bs-luminosity-strip\", inputs: [\"hs\", \"luminosity\"], outputs: [\"luminosityChange\"] }, { kind: \"component\", type: i3.BsAlphaStripComponent, selector: \"bs-alpha-strip\", inputs: [\"hs\", \"luminosity\", \"alpha\"], outputs: [\"alphaChange\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-color-picker', standalone: false, template: \"@let letDisabled = (disabled$ | async)!;\\n@let letHS = (hs$ | async)!;\\n@let letLuminosity = (luminosity$ | async)!;\\n@let letAlpha = (alpha$ | async)!;\\n\\n<bs-color-wheel [hs]=\\\"letHS\\\" (hsChange)=\\\"hs$.next($event)\\\" [luminosity]=\\\"letLuminosity\\\" [width]=\\\"(size$ | async) ?? 150\\\" [height]=\\\"(size$ | async) ?? 150\\\" #wheel></bs-color-wheel>\\n<bs-luminosity-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" (luminosityChange)=\\\"luminosity$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #strip></bs-luminosity-strip>\\n@if (allowAlpha$ | async) {\\n <bs-alpha-strip [hs]=\\\"letHS\\\" [luminosity]=\\\"letLuminosity\\\" [alpha]=\\\"letAlpha\\\" (alphaChange)=\\\"alpha$.next($event)\\\" class=\\\"d-block mt-2\\\" [style.width.px]=\\\"size$ | async\\\" #alpha></bs-alpha-strip>\\n}\" }]\n }], ctorParameters: () => [], propDecorators: { colorWheel: [{\n type: ViewChild,\n args: ['wheel']\n }], size: [{\n type: Input\n }], allowAlpha: [{\n type: Input\n }], alphaChange: [{\n type: Output\n }], alpha: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2NvbG9yLXBpY2tlci9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBUWhFLE1BQU0sT0FBTyxzQkFBc0I7SUFFakM7UUFhQSxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFakQsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGVBQWU7UUFDZixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBckJqRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsSUFBYSxJQUFJLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBWUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQTlCVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4UkNabkMsd3hCQVNDOzsyRkRHWSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsS0FBSzt3REFTRyxVQUFVO3NCQUE3QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0wsSUFBSTtzQkFBaEIsS0FBSztnQkFHTyxVQUFVO3NCQUF0QixLQUFLO2dCQWFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSU0sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEhTIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaHNcIjtcbmltcG9ydCB7IEJzQ29sb3JXaGVlbENvbXBvbmVudCB9IGZyb20gXCIuLi9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1jb2xvci1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmFscGhhJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoYWxwaGEpID0+IHRoaXMuYWxwaGFDaGFuZ2UuZW1pdChhbHBoYSkpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnd2hlZWwnKSBjb2xvcldoZWVsITogQnNDb2xvcldoZWVsQ29tcG9uZW50O1xuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zaXplJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgYWxsb3dBbHBoYSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dBbHBoYSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgXG4gIHNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE1MCk7XG4gIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBhbGxvd0FscGhhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgaHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIUz4oeyBodWU6IDAsIHNhdHVyYXRpb246IDAgfSk7XG4gIGx1bWlub3NpdHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIC8vI3JlZ2lvbiBBbHBoYVxuICBhbHBoYSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG4gIEBPdXRwdXQoKSBhbHBoYUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBnZXQgYWxwaGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxwaGEkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNldCBhbHBoYSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5hbHBoYSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCJAbGV0IGxldERpc2FibGVkID0gKGRpc2FibGVkJCB8IGFzeW5jKSE7XG5AbGV0IGxldEhTID0gKGhzJCB8IGFzeW5jKSE7XG5AbGV0IGxldEx1bWlub3NpdHkgPSAobHVtaW5vc2l0eSQgfCBhc3luYykhO1xuQGxldCBsZXRBbHBoYSA9IChhbHBoYSQgfCBhc3luYykhO1xuXG48YnMtY29sb3Itd2hlZWwgW2hzXT1cImxldEhTXCIgKGhzQ2hhbmdlKT1cImhzJC5uZXh0KCRldmVudClcIiBbbHVtaW5vc2l0eV09XCJsZXRMdW1pbm9zaXR5XCIgW3dpZHRoXT1cIihzaXplJCB8IGFzeW5jKSA/PyAxNTBcIiBbaGVpZ2h0XT1cIihzaXplJCB8IGFzeW5jKSA/PyAxNTBcIiAjd2hlZWw+PC9icy1jb2xvci13aGVlbD5cbjxicy1sdW1pbm9zaXR5LXN0cmlwIFtoc109XCJsZXRIU1wiIFtsdW1pbm9zaXR5XT1cImxldEx1bWlub3NpdHlcIiAobHVtaW5vc2l0eUNoYW5nZSk9XCJsdW1pbm9zaXR5JC5uZXh0KCRldmVudClcIiBjbGFzcz1cImQtYmxvY2sgbXQtMlwiIFtzdHlsZS53aWR0aC5weF09XCJzaXplJCB8IGFzeW5jXCIgI3N0cmlwPjwvYnMtbHVtaW5vc2l0eS1zdHJpcD5cbkBpZiAoYWxsb3dBbHBoYSQgfCBhc3luYykge1xuICAgIDxicy1hbHBoYS1zdHJpcCBbaHNdPVwibGV0SFNcIiBbbHVtaW5vc2l0eV09XCJsZXRMdW1pbm9zaXR5XCIgW2FscGhhXT1cImxldEFscGhhXCIgKGFscGhhQ2hhbmdlKT1cImFscGhhJC5uZXh0KCRldmVudClcIiBjbGFzcz1cImQtYmxvY2sgbXQtMlwiIFtzdHlsZS53aWR0aC5weF09XCJzaXplJCB8IGFzeW5jXCIgI2FscGhhPjwvYnMtYWxwaGEtc3RyaXA+XG59Il19","import { Directive, Inject, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { combineLatest } from 'rxjs';\nimport { BsColorPickerComponent } from '../../components/color-picker/color-picker.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../components/color-picker/color-picker.component\";\nexport class BsColorPickerValueAccessor {\n constructor(host, destroy) {\n this.host = host;\n this.destroy = destroy;\n }\n ngAfterViewInit() {\n combineLatest([this.host.hs$, this.host.luminosity$])\n .pipe(takeUntilDestroyed(this.destroy))\n .subscribe(([hs, luminosity]) => {\n const rgb = this.hsl2rgb(hs.hue, hs.saturation, luminosity);\n const hex = this.rgb2hex(rgb);\n setTimeout(() => this.onValueChange && this.onValueChange(hex), 10);\n });\n }\n hsl2rgb(h, s, l) {\n const k = (n) => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n const retValue = { r: 255 * f(0), g: 255 * f(8), b: 255 * f(4) };\n return retValue;\n }\n //#region ControlValueAccessor implementation\n registerOnChange(fn) {\n this.onValueChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n writeValue(value) {\n if (this.host && this.host.colorWheel) {\n if (value) {\n const rgb = this.hex2rgb(value);\n const hsl = this.rgb2Hsl(rgb);\n this.host.hs$.next({ hue: hsl.h, saturation: hsl.s });\n this.host.luminosity$.next(hsl.l);\n }\n }\n }\n setDisabledState(isDisabled) {\n if (this.host && this.host.colorWheel) {\n this.host.colorWheel.disabled$.next(isDisabled);\n }\n }\n //#endregion\n //#region Color Conversion\n rgb2hex(rgb) {\n return '#' + (Math.round((rgb.r << 16) + (rgb.g << 8) + rgb.b)).toString(16).padStart(6, '0');\n }\n hex2rgb(hex) {\n const r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);\n return { r, g, b };\n }\n /**\n * Divide 1 to n, handling floating point errors.\n * Ensures that the value is in between 0 and 1.\n **/\n bound01(n, max) {\n n = Math.min(max, Math.max(0, n));\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n else {\n return (n % max) / max;\n }\n }\n rgb2Hsl(color) {\n const r01 = this.bound01(color.r, 255);\n const g01 = this.bound01(color.g, 255);\n const b01 = this.bound01(color.b, 255);\n const max = Math.max(r01, g01, b01);\n const min = Math.min(r01, g01, b01);\n let h, s;\n const l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r01:\n h = (g01 - b01) / d + (g01 < b01 ? 6 : 0);\n break;\n case g01:\n h = (b01 - r01) / d + 2;\n break;\n case b01:\n h = (r01 - g01) / d + 4;\n break;\n default: {\n throw 'Invalid operation';\n }\n }\n h /= 6;\n }\n h *= 360;\n return { h, s, l };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerValueAccessor, deps: [{ token: forwardRef(() => BsColorPickerComponent) }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: BsColorPickerValueAccessor, isStandalone: false, selector: \"bs-color-picker\", providers: [{\n provide: NG_VALUE_ACCESSOR,\n // useExisting: BsColorPickerValueAccessor,\n useExisting: forwardRef(() => BsColorPickerValueAccessor),\n multi: true\n }], exportAs: [\"bsColorPicker\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'bs-color-picker',\n standalone: false,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n // useExisting: BsColorPickerValueAccessor,\n useExisting: forwardRef(() => BsColorPickerValueAccessor),\n multi: true\n }],\n exportAs: 'bsColorPicker'\n }]\n }], ctorParameters: () => [{ type: i1.BsColorPickerComponent, decorators: [{\n type: Inject,\n args: [forwardRef(() => BsColorPickerComponent)]\n }] }, { type: i0.DestroyRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2RpcmVjdGl2ZXMvY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yL2NvbG9yLXBpY2tlci12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBYWhFLE1BQU0sT0FBTywwQkFBMEI7SUFFckMsWUFBc0UsSUFBNEIsRUFBVSxPQUFtQjtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7SUFDL0gsQ0FBQztJQUVELGVBQWU7UUFDYixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxV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b0JBQ3hCLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixNQUFNO2dCQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ1IsTUFBTSxtQkFBbUIsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7WUFFRCxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1QsQ0FBQztRQUVELENBQUMsSUFBSSxHQUFHLENBQUM7UUFFVCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWxIVSwwQkFBMEIsa0JBRWpCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztrR0FGakQsMEJBQTBCLCtEQVIxQixDQUFDO2dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLDJDQUEyQztnQkFDM0MsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFDekQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDOzsyRkFHUywwQkFBMEI7a0JBWHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLDJDQUEyQzs0QkFDM0MsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7b0JBQ0YsUUFBUSxFQUFFLGVBQWU7aUJBQzFCOzswQkFHYyxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBmb3J3YXJkUmVmLCBBZnRlclZpZXdJbml0LCBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZ2JDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmdiLWNvbG9yJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYnMtY29sb3ItcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyB1c2VFeGlzdGluZzogQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQnNDb2xvclBpY2tlclZhbHVlQWNjZXNzb3IpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dLFxuICBleHBvcnRBczogJ2JzQ29sb3JQaWNrZXInXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBCc0NvbG9yUGlja2VyQ29tcG9uZW50KSkgcHJpdmF0ZSBob3N0OiBCc0NvbG9yUGlja2VyQ29tcG9uZW50LCBwcml2YXRlIGRlc3Ryb3k6IERlc3Ryb3lSZWYpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmhvc3QuaHMkLCB0aGlzLmhvc3QubHVtaW5vc2l0eSRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChbaHMsIGx1bWlub3NpdHldKSA9PiB7XG4gICAgICAgIGNvbnN0IHJnYiA9IHRoaXMuaHNsMnJnYihocy5odWUsIGhzLnNhdHVyYXRpb24sIGx1bWlub3NpdHkpO1xuICAgICAgICBjb25zdCBoZXggPSB0aGlzLnJnYjJoZXgocmdiKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uVmFsdWVDaGFuZ2UgJiYgdGhpcy5vblZhbHVlQ2hhbmdlKGhleCksIDEwKTtcbiAgICAgIH0pXG4gIH1cblxuICBwdWJsaWMgaHNsMnJnYihoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSB7XG4gICAgY29uc3QgayA9IChuOiBudW1iZXIpID0+IChuICsgaCAvIDMwKSAlIDEyO1xuICAgIGNvbnN0IGEgPSBzICogTWF0aC5taW4obCwgMSAtIGwpO1xuICAgIGNvbnN0IGYgPSAobjogbnVtYmVyKSA9PiBsIC0gYSAqIE1hdGgubWF4KC0xLCBNYXRoLm1pbihrKG4pIC0gMywgTWF0aC5taW4oOSAtIGsobiksIDEpKSk7XG4gICAgY29uc3QgcmV0VmFsdWUgPSA8UmdiQ29sb3I+eyByOiAyNTUgKiBmKDApLCBnOiAyNTUgKiBmKDgpLCBiOiAyNTUgKiBmKDQpIH07XG4gICAgcmV0dXJuIHJldFZhbHVlO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gZm47XG4gIH1cbiAgXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5ob3N0ICYmIHRoaXMuaG9zdC5jb2xvcldoZWVsKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmdiID0gdGhpcy5oZXgycmdiKHZhbHVlKTtcbiAgICAgICAgY29uc3QgaHNsID0gdGhpcy5yZ2IySHNsKHJnYik7XG4gICAgICAgIHRoaXMuaG9zdC5ocyQubmV4dCh7IGh1ZTogaHNsLmgsIHNhdHVyYXRpb246IGhzbC5zIH0pO1xuICAgICAgICB0aGlzLmhvc3QubHVtaW5vc2l0eSQubmV4dChoc2wubCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaG9zdCAmJiB0aGlzLmhvc3QuY29sb3JXaGVlbCkge1xuICAgICAgdGhpcy5ob3N0LmNvbG9yV2hlZWwuZGlzYWJsZWQkLm5leHQoaXNEaXNhYmxlZCk7XG4gICAgfVxuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb2xvciBDb252ZXJzaW9uXG4gIHByaXZhdGUgcmdiMmhleChyZ2I6IFJnYkNvbG9yKSB7XG4gICAgcmV0dXJuICcjJyArIChNYXRoLnJvdW5kKChyZ2IuciA8PCAxNikgKyAocmdiLmcgPDwgOCkgKyByZ2IuYikpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCAnMCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBoZXgycmdiKGhleDogc3RyaW5nKTogUmdiQ29sb3Ige1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChoZXguc2xpY2UoMSwgMyksIDE2KSxcbiAgICAgICAgICBnID0gcGFyc2VJbnQoaGV4LnNsaWNlKDMsIDUpLCAxNiksXG4gICAgICAgICAgYiA9IHBhcnNlSW50KGhleC5zbGljZSg1LCA3KSwgMTYpO1xuXG4gICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICB9XG4gIC8qKlxuICAgKiBEaXZpZGUgMSB0byBuLCBoYW5kbGluZyBmbG9hdGluZyBwb2ludCBlcnJvcnMuXG4gICAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgaW4gYmV0d2VlbiAwIGFuZCAxLlxuICAgKiovXG4gIHByaXZhdGUgYm91bmQwMShuOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgbiA9IE1hdGgubWluKG1heCwgTWF0aC5tYXgoMCwgbikpO1xuICAgIGlmIChNYXRoLmFicyhuIC0gbWF4KSA8IDAuMDAwMDAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChuICUgbWF4KSAvIG1heDtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSByZ2IySHNsKGNvbG9yOiBSZ2JDb2xvcikge1xuICAgIGNvbnN0IHIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5yLCAyNTUpO1xuICAgIGNvbnN0IGcwMSA9IHRoaXMuYm91bmQwMShjb2xvci5nLCAyNTUpO1xuICAgIGNvbnN0IGIwMSA9IHRoaXMuYm91bmQwMShjb2xvci5iLCAyNTUpO1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgocjAxLCBnMDEsIGIwMSk7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocjAxLCBnMDEsIGIwMSk7XG5cbiAgICBsZXQgaDogbnVtYmVyLCBzOiBudW1iZXI7XG4gICAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgIGggPSBzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgICAgIHMgPSBsID4gMC41ID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcblxuICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgY2FzZSByMDE6XG4gICAgICAgICAgaCA9IChnMDEgLSBiMDEpIC8gZCArIChnMDEgPCBiMDEgPyA2IDogMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZzAxOlxuICAgICAgICAgIGggPSAoYjAxIC0gcjAxKSAvIGQgKyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGIwMTpcbiAgICAgICAgICBoID0gKHIwMSAtIGcwMSkgLyBkICsgNDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93ICdJbnZhbGlkIG9wZXJhdGlvbic7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaCAvPSA2O1xuICAgIH1cblxuICAgIGggKj0gMzYwO1xuXG4gICAgcmV0dXJuIHsgaCwgcywgbCB9O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { BsColorPickerValueAccessor } from './directives/color-picker-value-accessor/color-picker-value-accessor.directive';\nimport { BsColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { BsColorWheelComponent } from './components/color-wheel/color-wheel.component';\nimport { BsLuminosityStripComponent } from './components/luminosity-strip/luminosity-strip.component';\nimport { BsSliderComponent, BsThumbDirective, BsTrackDirective } from './components/slider/slider.component';\nimport { BsAlphaStripComponent } from './components/alpha-strip/alpha-strip.component';\nimport * as i0 from \"@angular/core\";\nexport class BsColorPickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerModule, declarations: [BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent], imports: [AsyncPipe,\n FormsModule], exports: [BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerModule, imports: [FormsModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: BsColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent\n ],\n imports: [\n AsyncPipe,\n FormsModule,\n ],\n exports: [\n BsColorPickerComponent,\n BsColorPickerValueAccessor,\n BsColorWheelComponent,\n BsLuminosityStripComponent,\n BsSliderComponent,\n BsThumbDirective,\n BsTrackDirective,\n BsAlphaStripComponent\n ]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQTRCdkYsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsaUJBeEI1QixzQkFBc0I7WUFDdEIsMEJBQTBCO1lBQzFCLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIscUJBQXFCLGFBR3JCLFNBQVM7WUFDVCxXQUFXLGFBR1gsc0JBQXNCO1lBQ3RCLDBCQUEwQjtZQUMxQixxQkFBcUI7WUFDckIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjsrR0FHWixtQkFBbUIsWUFiNUIsV0FBVzs7MkZBYUYsbUJBQW1CO2tCQTFCL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxTQUFTO3dCQUNULFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb2xvci1waWNrZXItdmFsdWUtYWNjZXNzb3IvY29sb3ItcGlja2VyLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCc0NvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJzQ29sb3JXaGVlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb2xvci13aGVlbC9jb2xvci13aGVlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbHVtaW5vc2l0eS1zdHJpcC9sdW1pbm9zaXR5LXN0cmlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc1NsaWRlckNvbXBvbmVudCwgQnNUaHVtYkRpcmVjdGl2ZSwgQnNUcmFja0RpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc0FscGhhU3RyaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxwaGEtc3RyaXAvYWxwaGEtc3RyaXAuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnNDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgICBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICBCc0NvbG9yV2hlZWxDb21wb25lbnQsXG4gICAgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQsXG4gICAgQnNTbGlkZXJDb21wb25lbnQsXG4gICAgQnNUaHVtYkRpcmVjdGl2ZSxcbiAgICBCc1RyYWNrRGlyZWN0aXZlLFxuICAgIEJzQWxwaGFTdHJpcENvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgICBCc0NvbG9yUGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICBCc0NvbG9yV2hlZWxDb21wb25lbnQsXG4gICAgQnNMdW1pbm9zaXR5U3RyaXBDb21wb25lbnQsXG4gICAgQnNTbGlkZXJDb21wb25lbnQsXG4gICAgQnNUaHVtYkRpcmVjdGl2ZSxcbiAgICBCc1RyYWNrRGlyZWN0aXZlLFxuICAgIEJzQWxwaGFTdHJpcENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzQ29sb3JQaWNrZXJNb2R1bGUgeyB9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWludHBsYXllci1uZy1ib290c3RyYXAtY29sb3ItcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9jb2xvci1waWNrZXIvbWludHBsYXllci1uZy1ib290c3RyYXAtY29sb3ItcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.BsSliderComponent","i1.BsThumbDirective","i1.BsTrackDirective","i2","i1.BsColorWheelComponent","i2.BsLuminosityStripComponent","i3.BsAlphaStripComponent","i4","i1.BsColorPickerComponent"],"mappings":"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"}