carbon-components-angular 3.15.2 → 3.15.3

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 (70) hide show
  1. package/dialog/dialog.component.js +5 -29
  2. package/dialog/dialog.component.js.map +1 -1
  3. package/dialog/dialog.component.metadata.json +1 -1
  4. package/docs/documentation/components/Dialog.html +12 -41
  5. package/docs/documentation/components/Dropdown.html +82 -176
  6. package/docs/documentation/components/OverflowMenuPane.html +7 -7
  7. package/docs/documentation/components/Tooltip.html +7 -7
  8. package/docs/documentation/coverage.html +49 -1
  9. package/docs/documentation/images/coverage-badge-documentation.svg +1 -1
  10. package/docs/documentation/js/search/search_index.js +2 -2
  11. package/docs/documentation/miscellaneous/variables.html +144 -0
  12. package/docs/storybook/iframe.html +3 -3
  13. package/docs/storybook/{main.b7f84e1c05f635d7c347.bundle.js → main.d9349fe343a2c719f60b.bundle.js} +84 -54
  14. package/docs/storybook/main.d9349fe343a2c719f60b.bundle.js.map +1 -0
  15. package/docs/storybook/{runtime~main.b7f84e1c05f635d7c347.bundle.js → runtime~main.d9349fe343a2c719f60b.bundle.js} +1 -1
  16. package/docs/storybook/{runtime~main.b7f84e1c05f635d7c347.bundle.js.map → runtime~main.d9349fe343a2c719f60b.bundle.js.map} +1 -1
  17. package/docs/storybook/{vendors~main.b7f84e1c05f635d7c347.bundle.js → vendors~main.d9349fe343a2c719f60b.bundle.js} +1 -1
  18. package/docs/storybook/{vendors~main.b7f84e1c05f635d7c347.bundle.js.map → vendors~main.d9349fe343a2c719f60b.bundle.js.map} +1 -1
  19. package/dropdown/dropdown.component.d.ts +0 -4
  20. package/dropdown/dropdown.component.js +14 -25
  21. package/dropdown/dropdown.component.js.map +1 -1
  22. package/dropdown/dropdown.component.metadata.json +1 -1
  23. package/dropdown/dropdown.component.ngsummary.json +1 -1
  24. package/modal/modal.component.d.ts +1 -1
  25. package/package.json +1 -1
  26. package/utils/scroll.d.ts +38 -0
  27. package/utils/scroll.js +66 -0
  28. package/utils/scroll.js.map +1 -0
  29. package/utils/scroll.metadata.json +1 -0
  30. package/utils/scroll.ngsummary.json +1 -0
  31. package/breadcrumb/breadcrumb.component.spec.d.ts +0 -21
  32. package/bundle/carbon-angular.umd.js +0 -216
  33. package/bundle/carbon-angular.umd.js.map +0 -1
  34. package/checkbox/checkbox.component.spec.d.ts +0 -21
  35. package/code-snippet/code-snippet.component.spec.d.ts +0 -21
  36. package/combobox/combobox.component.spec.d.ts +0 -21
  37. package/common/utils.spec.d.ts +0 -21
  38. package/dialog/tooltip/tooltip.directive.spec.d.ts +0 -21
  39. package/docs/storybook/main.b7f84e1c05f635d7c347.bundle.js.map +0 -1
  40. package/dropdown/dropdown.component.spec.d.ts +0 -21
  41. package/dropdown/list/dropdown-list.component.spec.d.ts +0 -21
  42. package/grid/grid.directive.spec.d.ts +0 -21
  43. package/i18n/i18n.spec.d.ts +0 -21
  44. package/inline-loading/inline-loading.spec.d.ts +0 -21
  45. package/input/label.component.spec.d.ts +0 -21
  46. package/link/link.spec.d.ts +0 -21
  47. package/loading/loading.component.spec.d.ts +0 -21
  48. package/modal/modal.component.spec.d.ts +0 -21
  49. package/notification/notification.component.spec.d.ts +0 -21
  50. package/number-input/number.component.spec.d.ts +0 -21
  51. package/radio/radio.component.spec.d.ts +0 -21
  52. package/sample/sample-base.class.d.ts +0 -35
  53. package/sample/sample.component.d.ts +0 -48
  54. package/sample/sample.component.spec.d.ts +0 -21
  55. package/sample/sample.interface.d.ts +0 -29
  56. package/sample/sample.module.d.ts +0 -26
  57. package/sample/subcomponent/sample-sub.component.d.ts +0 -38
  58. package/sample/subcomponent/sample-sub.component.spec.d.ts +0 -21
  59. package/search/search.component.spec.d.ts +0 -21
  60. package/table/table-model.class.spec.d.ts +0 -21
  61. package/table/table.component.spec.d.ts +0 -21
  62. package/tabs/tab-headers.component.spec.d.ts +0 -21
  63. package/tabs/tabs.component.spec.d.ts +0 -22
  64. package/tiles/clickable-tile.component.spec.d.ts +0 -22
  65. package/tiles/tile.component.spec.d.ts +0 -22
  66. package/toggle/toggle.component.spec.d.ts +0 -21
  67. package/ui-shell/header/header.component.spec.d.ts +0 -21
  68. package/utils/a11y.d.ts +0 -26
  69. package/utils/position.d.ts +0 -21
  70. package/utils/utils.d.ts +0 -21
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://carbonAngular/webpack/universalModuleDefinition","webpack://carbonAngular/webpack/bootstrap","webpack://carbonAngular/external {\"root\":[\"ng\",\"core\"],\"commonjs\":\"@angular/core\",\"commonjs2\":\"@angular/core\",\"amd\":\"@angular/core\"}","webpack://carbonAngular/external {\"root\":[\"rxjs\"],\"commonjs\":\"rxjs\",\"commonjs2\":\"rxjs\",\"amd\":\"rxjs\"}","webpack://carbonAngular/external {\"root\":[\"ng\",\"common\"],\"commonjs\":\"@angular/common\",\"commonjs2\":\"@angular/common\",\"amd\":\"@angular/common\"}","webpack://carbonAngular/external {\"root\":[\"rxjs\",\"operators\"],\"commonjs\":\"rxjs/operators\",\"commonjs2\":\"rxjs/operators\",\"amd\":\"rxjs/operators\"}","webpack://carbonAngular/external {\"root\":[\"ng\",\"forms\"],\"commonjs\":\"@angular/forms\",\"commonjs2\":\"@angular/forms\",\"amd\":\"@angular/forms\"}","webpack://carbonAngular/external {\"root\":[\"ng\",\"platformBrowser\"],\"commonjs\":\"@angular/platform-browser\",\"commonjs2\":\"@angular/platform-browser\",\"amd\":\"@angular/platform-browser\"}","webpack://carbonAngular/./node_modules/flatpickr/dist/flatpickr.js","webpack://carbonAngular/./node_modules/flatpickr/dist/plugins/rangePlugin.js","webpack://carbonAngular/./node_modules/@carbon/icon-helpers/es/index.js","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/chevron--right/16.js","webpack://carbonAngular/./src/accordion/accordion-item.component.ts","webpack://carbonAngular/./src/accordion/accordion.component.ts","webpack://carbonAngular/./src/accordion/accordion.module.ts","webpack://carbonAngular/./src/placeholder/placeholder.service.ts","webpack://carbonAngular/./src/placeholder/placeholder.component.ts","webpack://carbonAngular/./src/placeholder/placeholder.module.ts","webpack://carbonAngular/./src/dialog/dialog.service.ts","webpack://carbonAngular/./node_modules/@carbon/utils-position/index.js","webpack://carbonAngular/./src/common/tab.service.ts","webpack://carbonAngular/./src/dialog/dialog.component.ts","webpack://carbonAngular/./src/dialog/dialog.directive.ts","webpack://carbonAngular/./src/dialog/dialog-placeholder.component.ts","webpack://carbonAngular/./src/dialog/tooltip/tooltip.component.ts","webpack://carbonAngular/./src/dialog/tooltip/tooltip-definition.component.ts","webpack://carbonAngular/./src/dialog/tooltip/tooltip-icon.component.ts","webpack://carbonAngular/./src/dialog/tooltip/tooltip.directive.ts","webpack://carbonAngular/./src/dialog/tooltip/ellipsis-tooltip.directive.ts","webpack://carbonAngular/./src/utils/object.ts","webpack://carbonAngular/./src/i18n/i18n.service.ts","webpack://carbonAngular/./src/i18n/replace.pipe.ts","webpack://carbonAngular/./src/i18n/i18n.module.ts","webpack://carbonAngular/./src/experimental.service.ts","webpack://carbonAngular/./src/experimental.module.ts","webpack://carbonAngular/./src/checkbox/checkbox.component.ts","webpack://carbonAngular/./src/dialog/overflow-menu/overflow-menu-pane.component.ts","webpack://carbonAngular/./src/dialog/overflow-menu/overflow-menu.directive.ts","webpack://carbonAngular/./src/dialog/overflow-menu/overflow-menu.component.ts","webpack://carbonAngular/./src/dialog/overflow-menu/overflow-menu-option.component.ts","webpack://carbonAngular/./src/dialog/dialog.module.ts","webpack://carbonAngular/./src/breadcrumb/breadcrumb-item.component.ts","webpack://carbonAngular/./src/breadcrumb/breadcrumb.component.ts","webpack://carbonAngular/./src/breadcrumb/breadcrumb.module.ts","webpack://carbonAngular/./src/button/button.directive.ts","webpack://carbonAngular/./src/button/button.module.ts","webpack://carbonAngular/./src/code-snippet/code-snippet.component.ts","webpack://carbonAngular/./src/checkbox/checkbox.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/copy/16.js","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/chevron--down/16.js","webpack://carbonAngular/./src/code-snippet/code-snippet.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/close/16.js","webpack://carbonAngular/./src/dropdown/abstract-dropdown-view.class.ts","webpack://carbonAngular/./src/combobox/combobox.component.ts","webpack://carbonAngular/./src/dropdown/dropdown.service.ts","webpack://carbonAngular/./src/dropdown/dropdown.component.ts","webpack://carbonAngular/./src/dropdown/dropdowntools.ts","webpack://carbonAngular/./src/toggle/toggle.component.ts","webpack://carbonAngular/./src/dropdown/list/dropdown-list.component.ts","webpack://carbonAngular/./src/dropdown/scrollable-list.directive.ts","webpack://carbonAngular/./src/dropdown/dropdown.module.ts","webpack://carbonAngular/./src/combobox/combobox.module.ts","webpack://carbonAngular/./src/content-switcher/content-switcher-option.directive.ts","webpack://carbonAngular/./src/content-switcher/content-switcher.component.ts","webpack://carbonAngular/./src/content-switcher/content-switcher.module.ts","webpack://carbonAngular/./src/datepicker-input/datepicker-input.component.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/calendar/16.js","webpack://carbonAngular/./src/datepicker-input/datepicker-input.module.ts","webpack://carbonAngular/./src/datepicker/carbon-flatpickr-month-select.ts","webpack://carbonAngular/./src/datepicker/datepicker.component.ts","webpack://carbonAngular/./src/datepicker/datepicker.module.ts","webpack://carbonAngular/./src/documentation-component/documentation.component.ts","webpack://carbonAngular/./src/documentation-component/documentation.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/checkmark--filled/16.js","webpack://carbonAngular/./src/file-uploader/file-uploader.component.ts","webpack://carbonAngular/./src/file-uploader/file.component.ts","webpack://carbonAngular/./src/loading/loading.component.ts","webpack://carbonAngular/./src/loading/loading.module.ts","webpack://carbonAngular/./src/file-uploader/file-uploader.module.ts","webpack://carbonAngular/./src/toggle/toggle.module.ts","webpack://carbonAngular/./src/radio/radio-group.component.ts","webpack://carbonAngular/./src/radio/radio.component.ts","webpack://carbonAngular/./src/radio/radio.module.ts","webpack://carbonAngular/./src/input/label.component.ts","webpack://carbonAngular/./src/input/input.directive.ts","webpack://carbonAngular/./src/input/text-area.directive.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/warning--filled/16.js","webpack://carbonAngular/./src/input/input.module.ts","webpack://carbonAngular/./src/forms/forms.module.ts","webpack://carbonAngular/./src/grid/grid.directive.ts","webpack://carbonAngular/./src/grid/grid.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/checkmark/16.js","webpack://carbonAngular/./src/inline-loading/inline-loading.component.ts","webpack://carbonAngular/./src/inline-loading/inline-loading.module.ts","webpack://carbonAngular/./src/link/link.directive.ts","webpack://carbonAngular/./src/link/link.module.ts","webpack://carbonAngular/./src/list/list-item.directive.ts","webpack://carbonAngular/./src/list/list.directive.ts","webpack://carbonAngular/./src/list/list.module.ts","webpack://carbonAngular/./src/modal/modal-placeholder.component.ts","webpack://carbonAngular/./src/modal/base-modal.class.ts","webpack://carbonAngular/./src/modal/alert-modal.component.ts","webpack://carbonAngular/./src/modal/modal.service.ts","webpack://carbonAngular/./node_modules/@angular/animations/fesm5/animations.js","webpack://carbonAngular/./src/modal/alert-modal.interface.ts","webpack://carbonAngular/./src/modal/modal.component.ts","webpack://carbonAngular/./src/modal/modal-footer.component.ts","webpack://carbonAngular/./src/modal/overlay.component.ts","webpack://carbonAngular/./src/modal/modal-header.component.ts","webpack://carbonAngular/./src/modal/modal.decorator.ts","webpack://carbonAngular/./src/modal/modal.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/error--filled/16.js","webpack://carbonAngular/./src/notification/notification-display.service.ts","webpack://carbonAngular/./src/notification/notification.component.ts","webpack://carbonAngular/./src/notification/toast.component.ts","webpack://carbonAngular/./src/notification/notification.service.ts","webpack://carbonAngular/./src/notification/notification.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/caret--up/16.js","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/caret--down/16.js","webpack://carbonAngular/./src/number-input/number.component.ts","webpack://carbonAngular/./src/number-input/number.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/caret--left/16.js","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/caret--right/16.js","webpack://carbonAngular/./src/pagination/pagination.component.ts","webpack://carbonAngular/./src/pagination/pagination-model.class.ts","webpack://carbonAngular/./src/pagination/pagination.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/checkmark--outline/16.js","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/warning/16.js","webpack://carbonAngular/./src/progress-indicator/progress-indicator.component.ts","webpack://carbonAngular/./src/progress-indicator/progress-indicator.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/search/16.js","webpack://carbonAngular/./src/search/search.component.ts","webpack://carbonAngular/./src/search/search.module.ts","webpack://carbonAngular/./src/select/select.component.ts","webpack://carbonAngular/./src/select/option.directive.ts","webpack://carbonAngular/./src/select/optgroup.directive.ts","webpack://carbonAngular/./src/select/select.module.ts","webpack://carbonAngular/./src/slider/slider.component.ts","webpack://carbonAngular/./src/slider/slider.module.ts","webpack://carbonAngular/./src/structured-list/list-column.component.ts","webpack://carbonAngular/./src/structured-list/list-row.component.ts","webpack://carbonAngular/./src/structured-list/list-header.component.ts","webpack://carbonAngular/./src/structured-list/structured-list.component.ts","webpack://carbonAngular/./src/structured-list/structured-list.module.ts","webpack://carbonAngular/./src/table/table-header-item.class.ts","webpack://carbonAngular/./src/table/table-item.class.ts","webpack://carbonAngular/./src/utils/window-tools.ts","webpack://carbonAngular/./src/table/table.component.ts","webpack://carbonAngular/./src/table/table-model.class.ts","webpack://carbonAngular/./src/table/toolbar/table-toolbar.component.ts","webpack://carbonAngular/./src/table/table-container.component.ts","webpack://carbonAngular/./src/table/header/table-header.component.ts","webpack://carbonAngular/./src/table/header/table-header-title.directive.ts","webpack://carbonAngular/./src/table/header/table-header-description.directive.ts","webpack://carbonAngular/./src/table/toolbar/table-toolbar-actions.component.ts","webpack://carbonAngular/./src/table/toolbar/table-toolbar-search.component.ts","webpack://carbonAngular/./src/table/toolbar/table-toolbar-content.component.ts","webpack://carbonAngular/./src/table/data-grid-focus.directive.ts","webpack://carbonAngular/./src/table/expanded-row-hover.directive.ts","webpack://carbonAngular/./src/table/table.module.ts","webpack://carbonAngular/./src/tabs/tab.component.ts","webpack://carbonAngular/./src/tabs/tab-headers.component.ts","webpack://carbonAngular/./src/tabs/tabs.component.ts","webpack://carbonAngular/./src/tabs/tabs.module.ts","webpack://carbonAngular/./src/tag/tag.component.ts","webpack://carbonAngular/./src/tag/tag-filter.component.ts","webpack://carbonAngular/./src/tag/tag.module.ts","webpack://carbonAngular/./src/tiles/tile.component.ts","webpack://carbonAngular/./node_modules/tslib/tslib.es6.js","webpack://carbonAngular/./node_modules/@angular/router/fesm5/router.js","webpack://carbonAngular/./src/tiles/clickable-tile.component.ts","webpack://carbonAngular/./src/tiles/expandable-tile.component.ts","webpack://carbonAngular/./src/tiles/selection-tile.component.ts","webpack://carbonAngular/./src/tiles/tile-group.component.ts","webpack://carbonAngular/./src/tiles/tiles.module.ts","webpack://carbonAngular/./src/timepicker/timepicker.component.ts","webpack://carbonAngular/./src/timepicker-select/timepicker-select.component.ts","webpack://carbonAngular/./src/timepicker-select/timepicker-select.module.ts","webpack://carbonAngular/./src/timepicker/timepicker.module.ts","webpack://carbonAngular/./node_modules/@carbon/icons-angular/lib/close/20.js","webpack://carbonAngular/./src/ui-shell/header/header.component.ts","webpack://carbonAngular/./src/ui-shell/header/header-item.component.ts","webpack://carbonAngular/./src/ui-shell/header/header-menu.component.ts","webpack://carbonAngular/./src/ui-shell/header/header-navigation.component.ts","webpack://carbonAngular/./src/ui-shell/header/header-global.component.ts","webpack://carbonAngular/./src/ui-shell/header/header-action.component.ts","webpack://carbonAngular/./src/ui-shell/header/hamburger.component.ts","webpack://carbonAngular/./src/ui-shell/header/header.module.ts","webpack://carbonAngular/./src/ui-shell/sidenav/sidenav.component.ts","webpack://carbonAngular/./src/ui-shell/sidenav/sidenav-header.component.ts","webpack://carbonAngular/./src/ui-shell/sidenav/sidenav-item.component.ts","webpack://carbonAngular/./src/ui-shell/sidenav/sidenav-menu.component.ts","webpack://carbonAngular/./src/ui-shell/sidenav/sidenav.module.ts","webpack://carbonAngular/./src/ui-shell/panel/panel.component.ts","webpack://carbonAngular/./src/ui-shell/panel/product-switcher.component.ts","webpack://carbonAngular/./src/ui-shell/panel/switcher-list.component.ts","webpack://carbonAngular/./src/ui-shell/panel/switcher-list-item.component.ts","webpack://carbonAngular/./src/ui-shell/panel/panel.module.ts","webpack://carbonAngular/./src/ui-shell/ui-shell.module.ts","webpack://carbonAngular/./src/index.ts"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__assign","assign","arguments","length","apply","this","HOOKS","defaults","_disable","_enable","allowInput","altFormat","altInput","altInputClass","animate","navigator","userAgent","indexOf","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","undefined","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","pad","number","slice","int","bool","debounce","func","wait","immediate","timeout","context","args","clearTimeout","setTimeout","arrayify","obj","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","setAttribute","appendChild","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","minutes","setMinutes","j","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","options","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_a","_b","config","_c","l10n","frmt","overrideLocale","formatDate","split","map","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","match","exec","fn","val","forEach","isNaN","Error","compareDates","date1","date2","isBetween","ts","ts1","ts2","min","max","duration","DAY","target","_i","TypeError","_loop_1","source","keys","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","self","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","requestAnimationFrame","calendarContainer","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","preventDefault","isKeyDown","input","getAttribute","step","curValue","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","hours","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","limitMaxHours","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","event","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","onClick","evt","triggerChange","triggerEvent","bindEvents","querySelectorAll","inputType","mobileInput","tabIndex","disabled","required","placeholder","mobileFormatStr","defaultValue","parentNode","insertBefore","nextSibling","setupMobile","debouncedResize","onResize","onMouseOver","body","ontouchstart","documentClick","capture","open","monthNav","onMonthNavClick","selectDate","timeContainer","timeIncrement","select","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","contains","inputElem","createEvent","dispatchEvent","build","fragment","createDocumentFragment","yearElements","monthElements","prevMonthNav","innerHTML","nextMonthNav","buildMonths","__hidePrevMonthArrow","set","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","separator","hourInput","getElementsByTagName","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","weekdayContainer","updateWeekdays","splice","concat","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","isCalendarElem","isOpen","eventTarget_1","composedPath","path","getEventTarget","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","some","close","clear","newYear","newYearNum","isNewYear","dateToCheck","array","parsed","from","to","allowKeydown","allowInlineKeydown","keyCode","blur","isTimeObj","focusAndClose","delta_1","ctrlKey","stopPropagation","elems","pluginElements","filter","x","shiftKey","charAt","toLowerCase","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","setupLocale","l10ns","userConfig","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","right","rightMost","centerMost","doc","styleSheets","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","a","b","showTimeInput","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","_initialDate","_createElement","destroy","removeEventListener","lastChild","_type","k","click","wasOpen","option","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","data","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","boolOpts","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","querySelector","nodeName","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","error","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr","fp","_secondInputFocused","_prevDates","plugin","Element","cloneNode","createSecondInput","selDates","newSelectedDate","newDates","_defineProperty","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","defaultAttributes","focusable","preserveAspectRatio","getAttributes","_ref","height","_ref$viewBox","viewBox","attributes","rest","iconAttributes","ownKeys","sym","getOwnPropertyDescriptor","_objectSpread","role","_16_ChevronRight16","ChevronRight16","decorators","core_","template","propDecorators","ariaLabel","ariaLabelledby","ariaHidden","innerClass","_16_ChevronRight16Directive","ChevronRight16Directive","elementRef","isFocusable","ngAfterViewInit","svg","nativeElement","DOMParser","parseFromString","documentElement","ownerDocument","importNode","aria-label","aria-labelledby","aria-hidden","attrKeys","titleIdCounter","ctorParameters","_16_ChevronRight16Module","ChevronRight16Module","declarations","accordion_item_component_AccordionItem","AccordionItem","AccordionItem_1","accordionItemCount","id","skeleton","itemClass","expanded","itemType","ariaLevel","toggleExpanded","emit","__decorate","accordion_component_Accordion","Accordion","_skeleton","updateChildren","ngAfterContentInit","_this","toArray","accordion_component_decorate","accordion_module_AccordionModule","AccordionModule","accordion_module_decorate","imports","common_","placeholder_service_PlaceholderService","PlaceholderService","viewContainerRef","registerViewContainerRef","vcRef","createComponent","componentFactory","injector","destroyComponent","component","index","hostView","hasComponentRef","hasPlaceholderRef","appendElement","removeElement","hasElement","placeholder_service_decorate","placeholder_component_Placeholder","Placeholder","placeholderService","ngOnInit","placeholder_component_decorate","read","PLACEHOLDER_SERVICE_PROVIDER_FACTORY","parentService","PLACEHOLDER_SERVICE_PROVIDER","provide","deps","useFactory","placeholder_module_PlaceholderModule","PlaceholderModule","placeholder_module_decorate","providers","dialog_service_DialogService","DialogService","componentFactoryResolver","isClosed","resolveComponentFactory","viewContainer","dialogConfig","dialogRef","appendInline","location","focusedElement","instance","dialogSubscription","subscribe","elementToFocus","unsubscribe","singletonClickListen","DialogService_1","listeningForBodyClicks","dialog_service_decorate","defaultPositions","referenceOffset","referenceRect","Position","positions","getRelativeOffset","offsets","offsetLeft","offsetTop","offsetParent","getComputedStyle","getAbsoluteOffset","currentNode","margins","computed","marginLeft","marginTop","targetRect","relativeRect","findRelative","reference","placement","calculatePosition","findAbsolute","findPosition","offsetFunction","findPositionAt","getPlacementBox","targetBottom","targetRight","addOffset","setElement","findBestPlacement","placements","weightedPlacements","pos","box","hiddenHeight","scrollY","hiddenWidth","innerWidth","scrollX","area","visibleArea","weight","utils_position","tabbableSelector","tabbableSelectorIgnoreTabIndex","getFocusElementList","elements","getClientRects","isVisible","isFocusInFirstItem","list","srcElement","isFocusInLastItem","cycleTabs","focusChanged","isElementFocused","focusLastFocusableElement","focusFirstFocusableElement","dialog_component_Dialog","Dialog","scrollSubscription","external_root_rxjs_commonjs_rxjs_commonjs2_rxjs_amd_rxjs_","addGap","gap","left-bottom","right-bottom","resizeSubscription","Dialog_1","resizeObservable","placeDialog","onDialogInit","dialogElement","dialog","wrapperClass","extraClass","parentRef","observables","parentElement","computedStyle","overflow","scrollObservable","elementRect","containerRect","isVisibleInContainer","doClose","placeDialogInContainer","afterDialogViewInit","positionService","parentEl","dialogPlacement","escapeClose","stopImmediatePropagation","clickClose","ngOnDestroy","pipe","operators_","dialog_component_decorate","KeyboardEvent","dialog_directive_DialogDirective","DialogDirective","dialogService","trigger","closeTrigger","hasPopup","v","log","compID","onTouchStart","ngOnChanges","ibmDialog","DialogDirective_1","dialogCounter","dialog_directive_decorate","exportAs","dialog_placeholder_component_DialogPlaceholder","DialogPlaceholder","dialog_placeholder_component_decorate","tooltip_component_Tooltip","_super","Tooltip","hasContentTemplate","__extends","focusableElements","tooltip_component_decorate","tooltip_definition_component_TooltipDefinition","TooltipDefinition","TooltipDefinition_1","tooltipItemCount","tooltip_definition_component_decorate","tooltip_icon_component_TooltipIcon","TooltipIcon","tooltip_icon_component_decorate","tooltip_directive_TooltipDirective","TooltipDirective","tooltipType","tooltip_directive_extends","ibmTooltip","tooltip_directive_decorate","ellipsis_tooltip_directive_EllipsisTooltip","EllipsisTooltip","ellipsis_tooltip_directive_extends","scrollWidth","innerText","ellipsis_tooltip_directive_decorate","merge","objects","objects_1","EN","replace","subject","variables","str","keys_1","i18n_service_Overridable","Overridable","i18n","baseTranslation","isOverridden","getValueFromPath","$override","_value","override","next","i18n_service_I18n","I18n","translationStrings","translations","Map","strings","translations_1","getSubject","getMultiple","partialPath","values","subjects","getOverridable","segment","has","translation","i18n_service_decorate","replace_pipe_ReplacePipe","ReplacePipe","transform","replace_pipe_decorate","I18N_SERVICE_PROVIDER_FACTORY","I18N_SERVICE_PROVIDER","i18n_module_I18nModule","I18nModule","i18n_module_decorate","experimental_service_ExperimentalService","ExperimentalService","experiments","ExperimentalService_1","experimentalEnabled","addExperiment","enabled","enableExperiment","getExperiment","disableExperiment","getExperiments","entries","experimental_service_decorate","EXPERIMENTAL_SERVICE_PROVIDER_FACTORY","CheckboxState","EXPERIMENTAL_SERVICE_PROVIDER","experimental_module_ExperimentalModule","ExperimentalModule","experimental_module_decorate","overflow_menu_pane_component_OverflowMenuPane","OverflowMenuPane","experimental","overflow_menu_pane_component_extends","isExperimental","flip","menuLabel","OVERFLOW_MENU","OVERFLOW","hostkeys","listItems","findIndex","item","focusElementList","button","overflow_menu_pane_component_decorate","overflow_menu_directive_OverflowMenuDirective","OverflowMenuDirective","overflow_menu_directive_extends","ibmOverflowMenu","overflow_menu_directive_decorate","overflow_menu_component_OverflowMenu","OverflowMenu","buttonLabel","overflow_menu_component_decorate","styles","encapsulation","None","overflow_menu_option_component_OverflowMenuOption","OverflowMenuOption","optionClass","onFocus","onBlur","overflow_menu_option_component_decorate","Boolean","dialog_module_DialogModule","DialogModule","dialog_module_decorate","entryComponents","breadcrumb_item_component_BreadcrumbItemComponent","BreadcrumbItemComponent","ariaCurrent","breadcrumb_item_component_decorate","breadcrumb_component_Breadcrumb","Breadcrumb","noTrailingSlash","_threshold","threshold","items","shouldShowOverflow","breadcrumb_component_decorate","breadcrumb_module_BreadcrumbModule","BreadcrumbModule","breadcrumb_module_decorate","button_directive_Button","Button","ibmButton","size","primary","secondary","tertiary","ghost","danger","dangerPrimary","smallSize","toolbarAction","overflowMenu","button_directive_decorate","button_module_ButtonModule","ButtonModule","button_module_decorate","SnippetType","CheckboxChange","checkbox_component_Checkbox","Checkbox","changeDetectorRef","hideLabel","Checkbox_1","checkboxCount","change","indeterminateChange","_checked","_indeterminate","currentCheckboxState","Init","onTouched","propagateChange","indeterminate","changed","transitionCheckboxState","Indeterminate","checked","Checked","Unchecked","Promise","resolve","then","markForCheck","writeValue","registerOnChange","registerOnTouched","emitChangeEvent","newState","oldState","inputCheckbox","checkbox_component_decorate","forms_","useExisting","multi","changeDetection","OnPush","checkbox_module_CheckboxModule","CheckboxModule","checkbox_module_decorate","_16_Copy16","Copy16","_16_Copy16Directive","Copy16Directive","_16_Copy16Module","Copy16Module","_16_ChevronDown16","ChevronDown16","_16_ChevronDown16Directive","ChevronDown16Directive","_16_ChevronDown16Module","ChevronDown16Module","code_snippet_component_CodeSnippet","CodeSnippet","CODE_SNIPPET","theme","feedbackText","COPIED","feedbackTimeout","snippetClass","showFeedback","CodeSnippet_1","codeSnippetCount","code","toggleSnippetExpansion","copyCode","textarea","getSelection","rangeCount","getRangeAt","execCommand","removeAllRanges","addRange","onCopyButtonClicked","hostClick","code_snippet_component_decorate","code_snippet_module_CodeSnippetModule","CodeSnippetModule","code_snippet_module_decorate","_16_Close16","Close16","_16_Close16Directive","Close16Directive","_16_Close16Module","Close16Module","abstract_dropdown_view_class_AbstractDropdownView","AbstractDropdownView","getNextItem","hasNextElement","getNextElement","getPrevItem","hasPrevElement","getPrevElement","getSelected","getCurrentItem","getCurrentElement","getListItems","propagateSelected","filterBy","initFocus","abstract_dropdown_view_class_decorate","combobox_component_ComboBox","ComboBox","ComboBox_1","comboBoxCount","submit","hostClass","pills","selectedValue","noop","_noop","onTouchedCallback","propagateChangeCallback","changes","view","currentValue","updateSelected","updatePills","closeDropdown","blurIntent","dropdownMenu","openDropdown","clearSelected","toggleDropdown","onSearch","searchString","includes","onSubmit","after","isTemplate","combobox_component_decorate","defaultOffset","dropdown_service_DropdownService","DropdownService","_offset","appendToBody","menuRef","dropdownWrapper","menuInstance","positionDropdown","resize","appendToDropdown","hostRef","menu","updatePosition","dropdown_service_decorate","dropdown_component_Dropdown","Dropdown","dropdownService","Dropdown_1","dropdownCount","displayValue","disableArrowKeys","menuButtonLabel","DROPDOWN","OPEN","selectedLabel","SELECTED","menuIsClosed","dropUp","outsideClick","_outsideClick","outsideKey","_outsideKey","keyboardNav","_keyboardNav","closeMenu","isUpdate","_appendToDropdown","find","newValues","value_1","newValues_1","dropdownButton","openMenu","closedDropdownNavigation","getDisplayStringValue","isRenderString","getRenderTemplateContext","getSelectedCount","valueSelected","bubbles","cancelable","_appendToBody","addScrollEventListener","boundingClientRect","removeScrollEventListener","scrollableContainer","container_1","scroll","toggleMenu","containerTop","scrollTop","containerBottom","elemTop","dropdown_component_decorate","ToggleState","dropdown_list_component_DropdownList","DropdownList","DROPDOWN_LIST","LABEL","listTpl","displayItems","_items","_originalItems","_itemsSubscription","updateList","setupFocusObservable","focusJump","query","elList","itemEl","startsWith","listElementList","first","isArray","constructor","newItem","tempNewItem","oldItem","tempOldItem","doKeyDown","doClick","otherItem","onItemFocus","onItemBlur","dropdown_list_component_decorate","DropdownList_1","scrollable_list_directive_ScrollableList","ScrollableList","nScrollableList","scrollEnabled","scrollBy","canScrollUp","canScrollDown","scrollUpTarget","scrollDownTarget","updateScrollHeight","checkScrollArrows","clearInterval","hoverScrollInterval","onHoverUp","onHoverDown","innerHeightDiff","scrollUpHeight","scrollDownHeight","scrollTopMax","onWheel","deltaY","touches","lastTouch","clientY","onTouchMove","touch","hoverScrollBy","hovering","amount","setInterval","scrollable_list_directive_decorate","dropdown_module_DropdownModule","DropdownModule","dropdown_module_decorate","combobox_module_ComboBoxModule","ComboBoxModule","combobox_module_decorate","content_switcher_option_directive_ContentSwitcherOption","ContentSwitcherOption","switcherClass","selectedClass","ariaSelected","_active","active","content_switcher_option_directive_decorate","content_switcher_component_ContentSwitcher","ContentSwitcher","buttonList","content_switcher_component_decorate","content_switcher_module_ContentSwitcherModule","ContentSwitcherModule","content_switcher_module_decorate","datepicker_input_component_DatePickerInput","DatePickerInput","DatePickerInput_1","datePickerCount","hasIcon","valueChange","invalid","datepicker_input_component_decorate","_16_Calendar16","Calendar16","_16_Calendar16Directive","Calendar16Directive","_16_Calendar16Module","Calendar16Module","datepicker_input_module_DatePickerInputModule","DatePickerInputModule","datepicker_input_module_decorate","carbon_flatpickr_month_select_config","carbonFlatpickrMonthSelectPlugin","updateCurrentMonth","monthStr","currentMonthContainer","closest","datepicker_component_DatePicker","DatePicker","DatePicker_1","_flatpickrOptions","flatpickrBaseOptions","updateClassNames","flatpickrInstance","rangePlugin_default","flatpickrOptions","isFlatpickrLoaded","didDateValueChange","previousValue","flatpickr_default","setDateValues","ngAfterViewChecked","onValueChange","doSelect","onRangeValueChange","monthContainer","weekdaysContainer","addClassIfNotExists","classname","elementList","singleInput","rangeInput","singleDate","rangeDate","datepicker_component_decorate","datepicker_module_DatePickerModule","DatePickerModule","datepicker_module_decorate","documentation_component_Documentation","Documentation","sanitizer","_src","src","bypassSecurityTrustResourceUrl","onLoad","docsIframe","docsBody","contentDocument","contentWindow","mainContent","documentation_component_decorate","platform_browser_","documentation_module_DocumentationModule","DocumentationModule","documentation_module_decorate","_16_CheckmarkFilled16","CheckmarkFilled16","_16_CheckmarkFilled16Directive","CheckmarkFilled16Directive","_16_CheckmarkFilled16Module","CheckmarkFilled16Module","file_uploader_component_FileUploader","FileUploader","buttonText","FILE_UPLOADER","accept","multiple","fileUploaderId","FileUploader_1","fileUploaderCount","filesChange","onChangeCallback","files","Set","onFilesAdded","fileInput","files_1","fileItem","uploaded","state","file","removeFile","delete","file_uploader_component_decorate","file_component_File","File","selectedFile","file_component_decorate","loading_component_Loading","Loading","LOADING","TITLE","isActive","overlay","loading_component_decorate","loading_module_LoadingModule","LoadingModule","loading_module_decorate","file_uploader_module_FileUploaderModule","FileUploaderModule","file_uploader_module_decorate","ToggleChange","toggle_component_Toggle","Toggle","Toggle_1","toggleCount","_offValues","_onValues","toggle_component_extends","getOffText","getOnText","toggle_component_decorate","toggle_module_ToggleModule","ToggleModule","toggle_module_decorate","RadioChange","radio_group_component_RadioGroup","RadioGroup","orientation","labelPlacement","radioButtonGroupClass","isInitialized","_disabled","_selected","_name","RadioGroup_1","radioGroupCount","checkSelectedRadio","updateSelectedRadioFromValue","updateRadios","alreadySelected","radios","radio","updateRadioNames","updateRadioChangeHandler","registerRadioChangeHandler","radio_group_component_decorate","radio_component_Radio","Radio","Radio_1","radioCount","_labelledby","radioChangeHandler","radioEvent","radio_component_decorate","radio_module_RadioModule","RadioModule","radio_module_decorate","label_component_Label","Label","labelInputID","Label_1","labelCounter","labelState","labelClass","label_component_decorate","input_directive_TextInput","TextInput","inputClass","input_directive_decorate","text_area_directive_TextArea","TextArea","baseClass","text_area_directive_decorate","_16_WarningFilled16","WarningFilled16","_16_WarningFilled16Directive","WarningFilled16Directive","_16_WarningFilled16Module","WarningFilled16Module","input_module_InputModule","InputModule","input_module_decorate","forms_module_NFormsModule","NFormsModule","forms_module_decorate","grid_directive_GridDirective","GridDirective","grid_directive_decorate","grid_directive_RowDirective","RowDirective","grid_directive_ColumnDirective","ColumnDirective","class","columnNumbers","_columnClasses","classes","columnKeys","grid_module_GridModule","GridModule","grid_module_decorate","_16_Checkmark16","Checkmark16","_16_Checkmark16Directive","Checkmark16Directive","_16_Checkmark16Module","Checkmark16Module","inline_loading_component_InlineLoading","InlineLoading","successDelay","onSuccess","loadingClass","_success","success","inline_loading_component_decorate","inline_loading_module_InlineLoadingModule","InlineLoadingModule","inline_loading_module_decorate","link_directive_Link","Link","link_directive_decorate","link_module_LinkModule","LinkModule","link_module_decorate","list_item_directive_ListItemDirective","ListItemDirective","list_item_directive_decorate","list_directive_List","List","nested","tagName","list_directive_decorate","list_module_ListModule","ListModule","list_module_decorate","modal_placeholder_component_ModalPlaceholder","ModalPlaceholder","modal_placeholder_component_decorate","base_modal_class_BaseModal","BaseModal","closeModal","base_modal_class_decorate","alert_modal_component_AlertModal","AlertModal","modalType","modalLabel","modalTitle","modalContent","buttons","alert_modal_component_extends","buttonClicked","buttonIndex","dismissModal","alert_modal_component_decorate","__param","Function","modal_service_ModalService","ModalService","resolver","inputs","inputProviders","inputName","useValue","ModalService_1","modalList","show","label","modal_service_decorate","definitions","timings","tokens","transition","stateChangeExpr","steps","expr","animation","scheduleMicroTask","cb","NoopAnimationPlayer","delay","_onDoneFns","_onStartFns","_onDestroyFns","_started","_destroyed","_finished","parentPlayer","totalTime","_onFinish","onStart","onDone","hasStarted","play","_onStart","triggerMicrotask","pause","restart","finish","reset","setPosition","getPosition","triggerCallback","phaseName","methods","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","total","player","_onDestroy","time","timeAtPosition","beforeDestroy","AlertModalType","ModalButtonType","modal_component_Modal","Modal","modalService","overlaySelected","modalState","selectorPrimaryFocus","primaryFocusElement","modal","handleKeyboardEvent","modal_component_decorate","animations","opacity","modal_footer_component_ModalFooter","ModalFooter","modal_footer_component_decorate","overlay_component_Overlay","Overlay","overlaySelect","overlayClick","overlay_component_decorate","modal_header_component_ModalHeader","ModalHeader","closeLabel","MODAL","CLOSE","closeSelect","modal_header_component_decorate","modal_decorator_ModalContainer","ModalContainer","modal_decorator_decorate","modal_decorator_Modal","modal_module_ModalModule","ModalModule","modal_module_decorate","_16_ErrorFilled16","ErrorFilled16","_16_ErrorFilled16Directive","ErrorFilled16Directive","_16_ErrorFilled16Module","ErrorFilled16Module","notification_display_service_NotificationDisplayService","NotificationDisplayService","applicationRef","notificationRef","detachView","notification_display_service_decorate","notification_component_Notification","Notification","notificationDisplayService","notificationID","notificationClass","defaultNotificationObj","_notificationObj","notificationObj","notification_component_decorate","toast_component_Toast","Toast","toastID","toastClass","toast_component_extends","NOTIFICATION","CLOSE_BUTTON","toast_component_decorate","notification_service_NotificationService","NotificationService","notificationRefs","showNotification","notificationComp","attachView","notificationList","smart","getSmartTimeout","componentRef","showToast","notification_service_decorate","notification_module_NotificationModule","NotificationModule","notification_module_decorate","_16_CaretUp16","CaretUp16","_16_CaretUp16Directive","CaretUp16Directive","_16_CaretUp16Module","CaretUp16Module","_16_CaretDown16","CaretDown16","_16_CaretDown16Directive","CaretDown16Directive","_16_CaretDown16Module","CaretDown16Module","NumberChange","number_component_Number","Number","containerClass","Number_1","numberCount","setDisabledState","isDisabled","onIncrement","onDecrement","onNumberInputChange","number_component_decorate","number_module_NumberModule","NumberModule","number_module_decorate","_16_CaretLeft16","CaretLeft16","_16_CaretLeft16Directive","CaretLeft16Directive","_16_CaretLeft16Module","CaretLeft16Module","_16_CaretRight16","CaretRight16","_16_CaretRight16Directive","CaretRight16Directive","_16_CaretRight16Module","CaretRight16Module","pagination_component_Pagination","Pagination","pageInputDisabled","pagesUnknown","pageSelectThreshold","itemsPerPageOptions","selectPage","itemsPerPageSelectId","Pagination_1","paginationCounter","currentPageSelectId","itemsPerPageText","optionsListText","backwardText","forwardText","totalItemsText","totalItemsUnknownText","totalPagesText","pageText","ofLastPagesText","_pageOptions","valueWithDefaults","ITEMS_PER_PAGE","OPEN_LIST_OF_OPTIONS","BACKWARD","FORWARD","TOTAL_ITEMS","TOTAL_ITEMS_UNKNOWN","TOTAL_PAGES","PAGE","OF_LAST_PAGES","model","pageLength","currentPage","last","ceil","totalDataLength","endItemIndex","projectedEndItemIndex","lastPage","itemsPerPage","pagination_component_decorate","PaginationModel","pagination_module_PaginationModule","PaginationModule","pagination_module_decorate","_16_CheckmarkOutline16","CheckmarkOutline16","_16_CheckmarkOutline16Directive","CheckmarkOutline16Directive","_16_CheckmarkOutline16Module","CheckmarkOutline16Module","_16_Warning16","Warning16","_16_Warning16Directive","Warning16Directive","_16_Warning16Module","Warning16Module","progress_indicator_component_ProgressIndicator","ProgressIndicator","skeletonSteps","stepCount","progress_indicator_component_decorate","progress_indicator_module_ProgressIndicatorModule","ProgressIndicatorModule","progress_indicator_module_decorate","_16_Search16","Search16","_16_Search16Directive","Search16Directive","_16_Search16Module","Search16Module","SearchChange","search_component_Search","Search","toolbar","tableSearch","Search_1","searchCount","autocomplete","SEARCH","PLACEHOLDER","clearButtonTitle","CLEAR_BUTTON","_size","search","doValueChange","clearSearch","openSearch","inputRef","keyDown","focusOut","search_component_decorate","templateUrl","search_module_SearchModule","SearchModule","search_module_decorate","select_component_Select","Select","Select_1","selectCount","onChangeHandler","onTouchedHandler","select_component_decorate","option_directive_Option","Option","option_directive_decorate","optgroup_directive_OptGroup","OptGroup","optgroup_directive_decorate","select_module_SelectModule","SelectModule","select_module_decorate","slider_component_Slider","Slider","Slider_1","count","shiftMultiplier","bottomRangeId","topRangeId","fractionComplete","isMouseDown","eventSubscriptions","_min","_max","thumb","getFractionComplete","filledTrack","scaleX","onMouseMove","onMouseUp","subscription","track","trackWidth","convertToPx","complete","convertToValue","pxAmount","unrounded","incrementValue","multiplier","decrementValue","trackLeft","clientX","onMouseDown","slider_component_decorate","slider_module_SliderModule","SliderModule","slider_module_decorate","list_column_component_ListColumn","ListColumn","isHeaderColumn","isBodyColumn","nowrap","list_column_component_decorate","list_row_component_ListRow","ListRow","selection","columns","column","onclick","list_row_component_decorate","list_header_component_ListHeader","ListHeader","list_header_component_decorate","structured_list_component_StructuredList","StructuredList","border","condensed","StructuredList_1","listCount","setSelection","rowOrHeader","headers","rows","row","structured_list_component_decorate","structured_list_module_StructuredListModule","StructuredListModule","structured_list_module_decorate","TableHeaderItem","rawData","visible","sorted","sortable","filterCount","_ascending","filterData","getOwnPropertyNames","asc","desc","compare","one","two","TableItem","expandedData","expandedTemplate","_scrollbarWidth","table_component_Table","Table","isDataGrid","showSelectionColumn","enableSingleSelect","scrollLoadDistance","columnsResizable","columnsDraggable","checkboxHeaderLabel","checkboxRowLabel","endOfDataText","scrollTopText","filterTitle","selectAllCheckbox","selectAllCheckboxSomeSelected","striped","stickyHeader","selectAll","deselectAll","selectRow","deselectRow","scrollLoad","columnIndex","isColumnDragging","columnDraggedHoverIndex","columnDraggedPosition","_expandButtonAriaLabel","_sortDescendingLabel","_sortAscendingLabel","skeletonModel","rowCount","columnCount","table_model_class_TableModel","header","setTabIndex","_model","dataChange","rowsSelectedChange","updateSelectAllCheckbox","handleTabIndex","rowsExpandedChange","expandedRows","FILTER","END_OF_DATA","SCROLL_TOP","CHECKBOX_HEADER","CHECKBOX_ROW","columnResizeStart","columnResizeWidth","columnResizeMouseX","mouseMoveSubscription","columnResizeProgress","mouseUpSubscription","columnResizeEnd","move","onRowSelect","rowsSelected","onRowCheckboxChange","selectedRowsCount","onSelectAllCheckboxChange","tick","startValue","selectedRowIndex","deselectedRowIndex","onScroll","scrollHeight","clientHeight","isEnd","columnDragStart","dataTransfer","setData","columnDragEnd","columnDragEnter","columnDragLeave","columnDragover","columnDrop","moveColumn","getData","outer","msOverflowStyle","widthNoScroll","inner","widthWithScroll","getScrollbarWidth","firstExpandedDataInRow","found","firstExpandedTemplateInRow","scrollToTop","tabbable","cell","Table_1","th","setIndex","hasExpandableRows","setCheckboxIndex","setExpandIndex","getSelectionLabelValue","selectionLabelColumn","TABLE","ROW","getExpandButtonAriaLabel","getSortDescendingLabel","getSortAscendingLabel","table_component_decorate","TableModel","isLoading","_data","newData","rowsExpanded","rowsContext","rowsClass","_totalDataLength","rowSelected","expandedRowsCount","rowExpanded","realRowIndex","addRow","realRow","difference","currentRow","ri","deleteRow","rri","isRowExpandable","realColumnIndex","rc","addColumn","ci","deleteColumn","rci","indexFrom","indexTo","headerFrom","pushRowStateToModelData","descending","popRowStateFromModelData","rowSelectedMark","rowExpandedMark","rowContext","rowClass","pop","isRowFiltered","ind","expandRow","realIndex","table_toolbar_component_TableToolbar","TableToolbar","actionBarLabel","_cancelText","ACTION_BAR","CANCEL","previous","onCancel","table_toolbar_component_decorate","table_container_component_TableContainer","TableContainer","table_container_component_decorate","table_header_component_TableHeader","TableHeader","headerClass","displayStyle","table_header_component_decorate","table_header_title_directive_TableHeaderTitle","TableHeaderTitle","titleClass","table_header_title_directive_decorate","table_header_description_directive_TableHeaderDescription","TableHeaderDescription","descriptionClass","table_header_description_directive_decorate","table_toolbar_actions_component_TableToolbarActions","TableToolbarActions","table_toolbar_actions_component_decorate","table_toolbar_search_component_TableToolbarSearch","TableToolbarSearch","expandable","table_toolbar_search_component_extends","table_toolbar_search_component_decorate","table_toolbar_content_component_TableToolbarContent","TableToolbarContent","table_toolbar_content_component_decorate","data_grid_focus_directive_DataGridFocus","DataGridFocus","columnIndexChange","_columnIndex","shouldEmit","ibmDataGridFocus","closestTr","rowIndex","headerRow","firstBodyRow","nextElementSibling","previousElementSibling","previousSibling","row_1","every","firstBodyCell","firstRowCell","lastRow","data_grid_focus_directive_decorate","expanded_row_hover_directive_ExpandedRowHover","ExpandedRowHover","addHoverClass","removeHoverClass","expanded_row_hover_directive_decorate","table_module_TableModule","TableModule","table_module_decorate","nextId","tab_component_Tab","Tab","headingIsTemplate","cacheActive","attrClass","heading","shouldRender","tab_component_decorate","tab_headers_component_TabHeaders","TabHeaders","firstVisibleTab","tabListVisible","keyboardInput","tabsArray","tabs","currentSelectedTab","allTabHeaders","followFocus","selectTab","tabInput","tabQuery","tab","setFirstTab","onTabFocus","ref","headerContainer","scrollLeft","getSelectedTab","showTabList","_tab","firstTab","tab_headers_component_decorate","tabs_component_Tabs","Tabs","isNavigation","tabHeaders","hasTabHeaders","tabs_component_decorate","descendants","tabs_module_TabsModule","TabsModule","tabs_module_decorate","tag_component_Tag","Tag","tag_component_decorate","tag_filter_component_TagFilter","TagFilter","tag_filter_component_extends","tag_filter_component_decorate","tag_module_TagModule","TagModule","tag_module_decorate","tile_component_Tile","Tile","tileClass","tile_component_decorate","extendStatics","setPrototypeOf","__proto__","tslib_es6_extends","__","__values","iterator","done","__read","ar","__spread","RouterEvent","url","router_NavigationStart","NavigationStart","navigationTrigger","restoredState","router_NavigationEnd","NavigationEnd","urlAfterRedirects","router_NavigationCancel","NavigationCancel","reason","router_NavigationError","NavigationError","router_RoutesRecognized","RoutesRecognized","router_GuardsCheckStart","GuardsCheckStart","router_GuardsCheckEnd","GuardsCheckEnd","shouldActivate","router_ResolveStart","ResolveStart","router_ResolveEnd","ResolveEnd","RouteConfigLoadStart","route","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","Scroll","routerEvent","anchor","router_EmptyOutletComponent","EmptyOutletComponent","PRIMARY_OUTLET","ParamsAsMap","params","getAll","convertToParamMap","NAVIGATION_CANCELING_ERROR","defaultUrlMatcher","segments","segmentGroup","parts","pathMatch","hasChildren","posParams","part","consumed","LoadedRouterConfig","routes","validateConfig","parentPath","validateNode","getFullPath","fullPath","loadChildren","outlet","redirectTo","matcher","currentRoute","standardizeConfig","shallowEqual","k1","k2","flatten","last$1","map$$1","callback","prop","andObservables","result","wrapIntoObservable","containsTree","containee","exact","equalQueryParams","queryParams","equalSegmentGroups","equalPath","numberOfChildren","containsQueryParams","containsSegmentGroup","containsSegmentGroupHelper","containeePaths","UrlTree","_queryParamMap","DEFAULT_SERIALIZER","serialize","UrlSegmentGroup","parent","serializePaths","UrlSegment","parameters","_parameterMap","serializePath","as","bs","mapChildrenIntoArray","res","childOutlet","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","strParams","serializeSegment","children_1","encodeUriQuery","encodeURI","encodeUriString","encodeURIComponent","encodeUriSegment","decode","decodeURIComponent","decodeQuery","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","remaining","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","substr","NoMatch","AbsoluteRedirect","urlTree","noMatch","obs","absoluteRedirect","newTree","namedOutletsRedirect","canLoadFails","router_ApplyRedirects","ApplyRedirects","moduleInjector","configLoader","urlSerializer","allowRedirects","ngModule","expandSegmentGroup","rootSegmentGroup","createUrlTree","noMatchError","rootCandidate","expandChildren","expandSegment","waitHead","waitTail","mapped","waitForMap","expandSegmentAgainstRoute","noLeftoversInUrl","paths","getOutlet","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","group","consumedSegments","positionalParamSegments","rawSegmentGroup","load","cfg","_loadedConfig","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","slicedSegments","isEmptyPathRedirect","containsEmptyPathRedirectsWithNamedOutlets","primarySegmentGroup","e_3","routes_2","routes_2_1","e_3_1","return","createChildrenForEmptySegments","mergeTrivialChildren","containsEmptyPathRedirects","e_2","routes_1","routes_1_1","e_2_1","addEmptySegmentsToChildrenIfNeeded","cs","canLoad","injectionToken","guard","runCanLoadGuard","shouldLoad","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","e_1","idx","actualSegments_1","actualSegments_1_1","e_1_1","Tree","_root","pathFromRoot","findNode","siblings","findPath","cc","node_1","unshift","TreeNode","nodeChildrenAsMap","router_RouterState","RouterState","setRouterState","createEmptyState","rootComponent","activated","ActivatedRouteSnapshot","router_RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","router_ActivatedRoute","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","parent_1","curr","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","RouterStateSnapshot","serializeNode","advanceActivatedRoute","currentSnapshot","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","parentsMismatch","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","detachedRouteHandle","retrieve","setFutureSnapshotsOfActivatedRoutes","commands","router_tree","nav","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","outlets_1","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","router_Position","modifier","isMatrixParams","g","dd","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","command","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","cmdWithOutlet","getPath","currentCommandIndex","currentPathIndex","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","outlets_2","getOutlets","createNewSegmentChildren","CanActivate","CanDeactivate","router_PreActivation","PreActivation","future","forwardEvent","canActivateChecks","canDeactivateChecks","initialize","parentContexts","futureRoot","currRoot","setupChildRouteGuards","checkGuards","isDeactivating","isActivating","runCanDeactivateChecks","canDeactivate","runCanActivateChecks","resolveData","check","runResolve","futureNode","currNode","contexts","futurePath","prevChildren","setupRouteGuards","deactivateRouteAndItsChildren","getContext","shouldRunGuardsAndResolvers","runGuardsAndResolvers","childName","isActivated","runCanDeactivate","fireChildActivationStart","fireActivationStart","runCanActivateChild","runCanActivate","canActivate","getToken","canActivateChildGuards","reverse","extractCanActivateChild","guards","canActivateChild","resolveNode","resolvedData","key_1","getResolver","token","closestLoadedConfig","NoMatch$1","router_Recognizer","Recognizer","rootComponentType","relativeLinkResolution","recognize","split$1","processSegmentGroup","freeze","rootNode","routeState","inheritParamsAndData","routeNode","processSegment","names","routeWithSameOutletName","localeCompare","sortActivatedRouteSnapshots","config_1","config_1_1","processSegmentAgainstRoute","rawSegment","getSourceSegmentGroup","getPathIndexShift","getResolve","match$1","_sourceSegment","_segmentIndexShift","emptyPathMatch","getOutlet$1","containsEmptyPathMatchesWithNamedOutlets","s_1","primarySegment","createChildrenForEmptyPaths","containsEmptyPathMatches","s_2","addEmptyPathsToChildrenIfNeeded","RouteReuseStrategy","DefaultRouteReuseStrategy","shouldDetach","store","detachedTree","shouldAttach","ROUTES","router_RouterConfigLoader","RouterConfigLoader","loader","compiler","onLoadStartListener","onLoadEndListener","parentInjector","loadModuleFactory","compileModuleAsync","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","defaultErrorHandler","defaultMalformedUriErrorHandler","defaultRouterHook","runExtras","router_Router","Router","rootContexts","navigations","navigationId","events","malformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","resetConfig","currentUrlTree","rawUrlTree","routerState","processNavigations","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateByUrl","replaceUrl","locationSubscription","parseUrl","scheduleNavigation","serializeUrl","dispose","navigationExtras","relativeTo","preserveQueryParams","queryParamsHandling","preserveFragment","f","q","removeEmptyProps","extras","skipLocationChange","mergedTree","navigate","validateCommands","executeScheduledNavigation","promise","catch","rawUrl","lastNavigation","reject","rej","urlTransition","setBrowserUrl","runNavigate","precreatedState","resolvePromise","rejectPromise","urlAndSnapshot$","appliedUrl","applyRedirects","preActivation","routerState$","appliedUrlTree","activateRoutes","storedState","storedUrl","navigationIsSuccessful","ActivateRoutes","activate","resetUrlToCurrentUrlTree","resetStateAndUrl","ee","isCurrentPathEqualTo","replaceState","go","futureState","currState","deactivateChildRoutes","activateChildRoutes","futureChild","childOutletName","deactivateRoutes","parentContext","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","detach","onOutletDeactivated","contexts_1","deactivate","getOrCreateContext","stored","onOutletReAttached","attachRef","attach","advanceActivatedRouteNodeAndItsChildren","parentLoadedConfig","cmpFactoryResolver","activateWith","router_RouterLink","RouterLink","router","renderer","preserve","attrBoolValue","routerLink","router_RouterLinkWithHref","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","metaKey","href","prepareExternalUrl","router_RouterLinkActive","RouterLinkActive","cdr","routerLinkActiveOptions","update","links","linksWithHrefs","hasActiveLinks","addClass","removeClass","isLinkActive","link","routerLinkActive","OutletContext","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","router_RouterOutlet","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","cmp","activatedRoute","insert","childContexts","OutletInjector","notFoundValue","PreloadingStrategy","router_PreloadAllModules","PreloadAllModules","preload","router_NoPreloading","NoPreloading","router_RouterPreloader","RouterPreloader","moduleLoader","preloadingStrategy","setUpPreloading","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","setHistoryScrollRestoration","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","getScrollPosition","scheduleScrollEvent","scrollToPosition","anchorScrolling","scrollToAnchor","ROUTER_DIRECTIVES","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","useClass","enableTracing","dom_1","logGroup","logGroupEnd","routerNgProbeToken","RouterModule","forRoot","provideRoutes","provideForRootGuard","provideLocationStrategy","createRouterScroller","router_RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","forChild","scrollOffset","setOffset","platformLocationStrategy","baseHref","useHash","RouterInitializer","initNavigation","resultOfPreactivationDone","appInitializer","isLegacyDisabled","isLegacyEnabled","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","components","componentTypes","clickable_tile_component_ClickableTile","ClickableTile","navigation","status_1","routeExtras","clickable_tile_component_decorate","clickable_tile_component_param","expandable_tile_component_ExpandableTile","ExpandableTile","tileMaxHeight","expand","collapse","EXPAND","COLLAPSE","updateMaxHeight","paddingBottom","expandable_tile_component_decorate","selection_tile_component_SelectionTile","SelectionTile","SelectionTile_1","tileCount","selection_tile_component_decorate","tile_group_component_TileGroup","TileGroup","TileGroup_1","tileGroupCount","tileGroupClass","unsubscribe$","unsubscribeTiles$","updateTiles","selectionTiles","tile","tile_group_component_decorate","tiles_module_TilesModule","TilesModule","tiles_module_decorate","timepicker_component_TimePicker","TimePicker","timePicker","TimePicker_1","timePickerCount","timepicker_component_decorate","timepicker_select_component_TimePickerSelect","TimePickerSelect","timeSelect","timePickerSelect","TimePickerSelect_1","timePickerSelectSkeleton","timepicker_select_component_extends","timepicker_select_component_decorate","timepicker_select_module_TimePickerSelectModule","TimePickerSelectModule","timepicker_select_module_decorate","timepicker_module_TimePickerModule","TimePickerModule","timepicker_module_decorate","_20_Close20","Close20","_20_Close20Directive","Close20Directive","_20_Close20Module","Close20Module","header_component_Header","Header","brand","header_component_decorate","header_item_component_HeaderItem","HeaderItem","domSanitizer","_href","bypassSecurityTrustUrl","header_item_component_decorate","header_item_component_param","header_menu_component_HeaderMenu","HeaderMenu","onMouseOut","onFocusOut","header_menu_component_decorate","header_navigation_component_HeaderNavigation","HeaderNavigation","header_navigation_component_decorate","header_global_component_HeaderGlobal","HeaderGlobal","header_global_component_decorate","header_action_component_HeaderAction","HeaderAction","activeChange","header_action_component_decorate","hamburger_component_Hamburger","Hamburger","hamburger_component_decorate","header_module_HeaderModule","HeaderModule","header_module_decorate","sidenav_component_SideNav","SideNav","hidden","ux","allowExpansion","sidenav_component_decorate","sidenav_header_component_SideNavHeader","SideNavHeader","switcherId","sidenav_header_component_decorate","sidenav_item_component_SideNavItem","SideNavItem","isSubMenu","sidenav_item_component_decorate","sidenav_item_component_param","sidenav_menu_component_SideNavMenu","SideNavMenu","sidenavItems","sidenav_menu_component_decorate","sidenav_module_SideNavModule","SideNavModule","sidenav_module_decorate","panel_component_Panel","Panel","panel_component_decorate","product_switcher_component_ProductSwitcher","ProductSwitcher","product_switcher_component_decorate","switcher_list_component_SwitcherList","SwitcherList","switcher_list_component_decorate","switcher_list_item_component_SwitcherListItem","SwitcherListItem","switcher_list_item_component_decorate","panel_module_PanelModule","PanelModule","panel_module_decorate","ui_shell_module_UIShellModule","UIShellModule","ui_shell_module_decorate","__webpack_exports__"],"mappings":"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","file":"carbon-angular.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/core\"), require(\"rxjs\"), require(\"@angular/common\"), require(\"rxjs/operators\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/core\", \"rxjs\", \"@angular/common\", \"rxjs/operators\", \"@angular/forms\", \"@angular/platform-browser\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"carbonAngular\"] = factory(require(\"@angular/core\"), require(\"rxjs\"), require(\"@angular/common\"), require(\"rxjs/operators\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"));\n\telse\n\t\troot[\"carbonAngular\"] = factory(root[\"ng\"][\"core\"], root[\"rxjs\"], root[\"ng\"][\"common\"], root[\"rxjs\"][\"operators\"], root[\"ng\"][\"forms\"], root[\"ng\"][\"platformBrowser\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__5__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/* flatpickr v4.6.1, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1)\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, false, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1) {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1) {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.rangePlugin = factory());\n}(this, function () { 'use strict';\n\n function rangePlugin(config) {\n if (config === void 0) { config = {}; }\n return function (fp) {\n var dateFormat = \"\", secondInput, _secondInputFocused, _prevDates;\n var createSecondInput = function () {\n if (config.input) {\n secondInput =\n config.input instanceof Element\n ? config.input\n : window.document.querySelector(config.input);\n if (!secondInput) {\n fp.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n if (fp.config.wrap) {\n secondInput = secondInput.querySelector(\"[data-input]\");\n }\n }\n else {\n secondInput = fp._input.cloneNode();\n secondInput.removeAttribute(\"id\");\n secondInput._flatpickr = undefined;\n }\n if (secondInput.value) {\n var parsedDate = fp.parseDate(secondInput.value);\n if (parsedDate)\n fp.selectedDates.push(parsedDate);\n }\n secondInput.setAttribute(\"data-fp-omit\", \"\");\n fp._bind(secondInput, [\"focus\", \"click\"], function () {\n if (fp.selectedDates[1]) {\n fp.latestSelectedDateObj = fp.selectedDates[1];\n fp._setHoursFromDate(fp.selectedDates[1]);\n fp.jumpToDate(fp.selectedDates[1]);\n }\n _secondInputFocused = true;\n fp.isOpen = false;\n fp.open(undefined, config.position === \"left\" ? fp._input : secondInput);\n });\n fp._bind(fp._input, [\"focus\", \"click\"], function (e) {\n e.preventDefault();\n fp.isOpen = false;\n fp.open();\n });\n if (fp.config.allowInput)\n fp._bind(secondInput, \"keydown\", function (e) {\n if (e.key === \"Enter\") {\n fp.setDate([fp.selectedDates[0], secondInput.value], true, dateFormat);\n secondInput.click();\n }\n });\n if (!config.input)\n fp._input.parentNode &&\n fp._input.parentNode.insertBefore(secondInput, fp._input.nextSibling);\n };\n var plugin = {\n onParseConfig: function () {\n fp.config.mode = \"range\";\n dateFormat = fp.config.altInput\n ? fp.config.altFormat\n : fp.config.dateFormat;\n },\n onReady: function () {\n createSecondInput();\n fp.config.ignoredFocusElements.push(secondInput);\n if (fp.config.allowInput) {\n fp._input.removeAttribute(\"readonly\");\n secondInput.removeAttribute(\"readonly\");\n }\n else {\n secondInput.setAttribute(\"readonly\", \"readonly\");\n }\n fp._bind(fp._input, \"focus\", function () {\n fp.latestSelectedDateObj = fp.selectedDates[0];\n fp._setHoursFromDate(fp.selectedDates[0]);\n _secondInputFocused = false;\n fp.jumpToDate(fp.selectedDates[0]);\n });\n if (fp.config.allowInput)\n fp._bind(fp._input, \"keydown\", function (e) {\n if (e.key === \"Enter\")\n fp.setDate([fp._input.value, fp.selectedDates[1]], true, dateFormat);\n });\n fp.setDate(fp.selectedDates, false);\n plugin.onValueUpdate(fp.selectedDates);\n fp.loadedPlugins.push(\"range\");\n },\n onPreCalendarPosition: function () {\n if (_secondInputFocused) {\n fp._positionElement = secondInput;\n setTimeout(function () {\n fp._positionElement = fp._input;\n }, 0);\n }\n },\n onChange: function () {\n if (!fp.selectedDates.length) {\n setTimeout(function () {\n if (fp.selectedDates.length)\n return;\n secondInput.value = \"\";\n _prevDates = [];\n }, 10);\n }\n if (_secondInputFocused) {\n setTimeout(function () {\n secondInput.focus();\n }, 0);\n }\n },\n onDestroy: function () {\n if (!config.input)\n secondInput.parentNode &&\n secondInput.parentNode.removeChild(secondInput);\n },\n onValueUpdate: function (selDates) {\n var _a, _b, _c;\n if (!secondInput)\n return;\n _prevDates =\n !_prevDates || selDates.length >= _prevDates.length\n ? selDates.slice() : _prevDates;\n if (_prevDates.length > selDates.length) {\n var newSelectedDate = selDates[0];\n var newDates = _secondInputFocused\n ? [_prevDates[0], newSelectedDate]\n : [newSelectedDate, _prevDates[1]];\n fp.setDate(newDates, false);\n _prevDates = newDates.slice();\n }\n _a = fp.selectedDates.map(function (d) { return fp.formatDate(d, dateFormat); }), _b = _a[0], fp._input.value = _b === void 0 ? \"\" : _b, _c = _a[1], secondInput.value = _c === void 0 ? \"\" : _c;\n }\n };\n return plugin;\n };\n }\n\n return rangePlugin;\n\n}));\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar defaultAttributes = {\n // Reference:\n // https://github.com/IBM/carbon-components-react/issues/1392\n // https://github.com/PolymerElements/iron-iconset-svg/pull/47\n // `focusable` is a string attribute which is why we do not use a boolean here\n focusable: 'false',\n preserveAspectRatio: 'xMidYMid meet',\n // Reference:\n // https://github.com/ckeditor/ckeditor5/issues/668#issuecomment-344844027\n style: 'will-change: transform;'\n};\n/**\n * Get supplementary HTML attributes for a given <svg> element based on existing\n * attributes.\n */\n\nfunction getAttributes() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$viewBox = _ref.viewBox,\n viewBox = _ref$viewBox === void 0 ? \"0 0 \".concat(width, \" \").concat(height) : _ref$viewBox,\n attributes = _objectWithoutProperties(_ref, [\"width\", \"height\", \"viewBox\"]);\n\n var tabindex = attributes.tabindex,\n rest = _objectWithoutProperties(attributes, [\"tabindex\"]);\n\n var iconAttributes = _objectSpread({}, defaultAttributes, rest, {\n width: width,\n height: height,\n viewBox: viewBox\n }); // TODO: attributes.title assumes that the consumer will implement <title> and\n // correctly set `aria-labelledby`.\n\n\n if (iconAttributes['aria-label'] || iconAttributes['aria-labelledby'] || iconAttributes.title) {\n iconAttributes.role = 'img'; // Reference:\n // https://allyjs.io/tutorials/focusing-in-svg.html\n\n if (tabindex !== undefined && tabindex !== null) {\n iconAttributes.focusable = 'true';\n iconAttributes.tabindex = tabindex;\n }\n } else {\n iconAttributes['aria-hidden'] = true;\n }\n\n return iconAttributes;\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * Convert an icon descriptor to a String\n */\n\nfunction toString(descriptor) {\n var _descriptor$elem = descriptor.elem,\n elem = _descriptor$elem === void 0 ? 'svg' : _descriptor$elem,\n _descriptor$attrs = descriptor.attrs,\n attrs = _descriptor$attrs === void 0 ? {} : _descriptor$attrs,\n _descriptor$content = descriptor.content,\n content = _descriptor$content === void 0 ? [] : _descriptor$content;\n var children = content.map(toString).join('');\n\n if (elem !== 'svg') {\n return \"<\".concat(elem, \" \").concat(formatAttributes(attrs), \">\").concat(children, \"</\").concat(elem, \">\");\n }\n\n return \"<\".concat(elem, \" \").concat(formatAttributes(getAttributes(attrs)), \">\").concat(children, \"</\").concat(elem, \">\");\n}\nfunction formatAttributes(attrs) {\n return Object.keys(attrs).reduce(function (acc, key, index) {\n var attribute = \"\".concat(key, \"=\\\"\").concat(attrs[key], \"\\\"\");\n\n if (index === 0) {\n return attribute;\n }\n\n return acc + ' ' + attribute;\n }, '');\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * Convert an icon descriptor to a DOM node.\n */\n\nfunction toSVG(descriptor) {\n var _descriptor$elem = descriptor.elem,\n elem = _descriptor$elem === void 0 ? 'svg' : _descriptor$elem,\n _descriptor$attrs = descriptor.attrs,\n attrs = _descriptor$attrs === void 0 ? {} : _descriptor$attrs,\n _descriptor$content = descriptor.content,\n content = _descriptor$content === void 0 ? [] : _descriptor$content;\n var node = document.createElementNS('http://www.w3.org/2000/svg', elem);\n var attributes = elem !== 'svg' ? attrs : getAttributes(attrs);\n Object.keys(attributes).forEach(function (key) {\n node.setAttribute(key, attrs[key]);\n });\n\n for (var i = 0; i < content.length; i++) {\n node.appendChild(toSVG(content[i]));\n }\n\n return node;\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { defaultAttributes, getAttributes, formatAttributes, toString, toSVG };\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar ChevronRight16 = /** @class */ (function () {\n function ChevronRight16() {\n this.focusable = false;\n }\n ChevronRight16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-chevron-right16\",\n template: \"\\n <svg\\n ibmIconChevronRight16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n ChevronRight16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return ChevronRight16;\n}());\nexport { ChevronRight16 };\nvar ChevronRight16Directive = /** @class */ (function () {\n function ChevronRight16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n ChevronRight16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M11 8l-5 5-.7-.7L9.6 8 5.3 3.7 6 3z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n ChevronRight16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"chevron-right16-\" + ChevronRight16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"chevron-right16-\" + ChevronRight16Directive.titleIdCounter);\n }\n };\n ChevronRight16Directive.titleIdCounter = 0;\n ChevronRight16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconChevronRight16]\"\n },] },\n ];\n /** @nocollapse */\n ChevronRight16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n ChevronRight16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return ChevronRight16Directive;\n}());\nexport { ChevronRight16Directive };\nvar ChevronRight16Module = /** @class */ (function () {\n function ChevronRight16Module() {\n }\n ChevronRight16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n ChevronRight16,\n ChevronRight16Directive\n ],\n exports: [\n ChevronRight16,\n ChevronRight16Directive\n ]\n },] },\n ];\n return ChevronRight16Module;\n}());\nexport { ChevronRight16Module };\n//# sourceMappingURL=16.js.map","import {\n\tComponent,\n\tInput,\n\tHostBinding,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-accordion-item\",\n\ttemplate: `\n\t\t<button\n\t\t\t[attr.aria-expanded]=\"expanded\"\n\t\t\t[attr.aria-controls]=\"id\"\n\t\t\t(click)=\"toggleExpanded()\"\n\t\t\tclass=\"bx--accordion__heading\">\n\t\t\t<ibm-icon-chevron-right16 class=\"bx--accordion__arrow\"></ibm-icon-chevron-right16>\n\t\t\t<p\n\t\t\t\tclass=\"bx--accordion__title\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--skeleton__text': skeleton\n\t\t\t\t}\">\n\t\t\t\t{{!skeleton ? title : null}}\n\t\t\t</p>\n\t\t</button>\n\t\t<div [id]=\"id\" class=\"bx--accordion__content\">\n\t\t\t<ng-content *ngIf=\"!skeleton; else skeletonTemplate\"></ng-content>\n\t\t\t<ng-template #skeletonTemplate>\n\t\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 90%\"></p>\n\t\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 80%\"></p>\n\t\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 95%\"></p>\n\t\t\t</ng-template>\n\t\t</div>\n\t`\n})\nexport class AccordionItem {\n\tstatic accordionItemCount = 0;\n\t@Input() title = `Title ${AccordionItem.accordionItemCount}`;\n\t@Input() id = `accordion-item-${AccordionItem.accordionItemCount}`;\n\t@Input() skeleton = false;\n\t@Output() selected = new EventEmitter();\n\n\t@HostBinding(\"class.bx--accordion__item\") itemClass = true;\n\t@HostBinding(\"class.bx--accordion__item--active\") @Input() expanded = false;\n\t@HostBinding(\"style.display\") itemType = \"list-item\";\n\t@HostBinding(\"attr.role\") role = \"heading\";\n\t@HostBinding(\"attr.aria-level\") @Input() ariaLevel = 3;\n\n\tconstructor() {\n\t\tAccordionItem.accordionItemCount++;\n\t}\n\n\tpublic toggleExpanded() {\n\t\tif (!this.skeleton) {\n\t\t\tthis.expanded = !this.expanded;\n\t\t\tthis.selected.emit({id: this.id, expanded: this.expanded});\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit\n} from \"@angular/core\";\nimport { AccordionItem } from \"./accordion-item.component\";\n\n/**\n * [See demo](../../?path=/story/accordion--basic)\n *\n * <example-url>../../iframe.html?id=accordion--basic</example-url>\n *\n * @export\n * @class Accordion\n * @implements {AfterContentInit}\n */\n@Component({\n\tselector: \"ibm-accordion\",\n\ttemplate: `\n\t\t<ul class=\"bx--accordion\">\n\t\t\t<ng-content></ng-content>\n\t\t</ul>\n\t`\n})\nexport class Accordion implements AfterContentInit {\n\t@ContentChildren(AccordionItem) children: QueryList<AccordionItem>;\n\n\tprotected _skeleton = false;\n\n\t@Input()\n\tset skeleton(value: any) {\n\t\tthis._skeleton = value;\n\t\tthis.updateChildren();\n\t}\n\n\tget skeleton(): any {\n\t\treturn this._skeleton;\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.updateChildren();\n\t}\n\n\tprotected updateChildren() {\n\t\tif (this.children) {\n\t\t\tthis.children.toArray().forEach(child => child.skeleton = this.skeleton);\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ChevronRight16Module } from \"@carbon/icons-angular/lib/chevron--right/16\";\n\nimport { Accordion } from \"./accordion.component\";\nimport { AccordionItem } from \"./accordion-item.component\";\n\nexport { Accordion } from \"./accordion.component\";\nexport { AccordionItem } from \"./accordion-item.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tAccordion,\n\t\tAccordionItem\n\t],\n\texports: [\n\t\tAccordion,\n\t\tAccordionItem\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tChevronRight16Module\n\t]\n})\nexport class AccordionModule { }\n","import {\n\tComponentRef,\n\tViewContainerRef,\n\tComponentFactory,\n\tInjector\n} from \"@angular/core\";\nimport { Injectable } from \"@angular/core\";\n\n/**\n * Singleton service used to register the container for out-of-flow components to insert into.\n * Also used to insert/remove components from that view.\n */\n@Injectable()\nexport class PlaceholderService {\n\t/**\n\t * Maintain a `ViewContainerRef` to an instance of the component.\n\t */\n\tprotected viewContainerRef: ViewContainerRef = null;\n\t/**\n\t * Used by `Placeholder` to register view-container reference.\n\t */\n\tregisterViewContainerRef(vcRef: ViewContainerRef): void {\n\t\tthis.viewContainerRef = vcRef;\n\t}\n\n\t/**\n\t * Creates and returns component in the view.\n\t */\n\tcreateComponent(componentFactory: ComponentFactory<any>, injector: Injector): ComponentRef<any> {\n\t\tif (!this.viewContainerRef) {\n\t\t\tconsole.error(\"No view container defined! Likely due to a missing `ibm-placeholder`\");\n\t\t}\n\t\treturn this.viewContainerRef.createComponent(componentFactory, null, injector);\n\t}\n\n\tdestroyComponent(component: ComponentRef<any>) {\n\t\tconst index = this.viewContainerRef.indexOf(component.hostView);\n\t\tif (index < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// destroy the view\n\t\tthis.viewContainerRef.remove(index);\n\t}\n\n\thasComponentRef(component: ComponentRef<any>) {\n\t\tif (this.viewContainerRef.indexOf(component.hostView) < 0) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\thasPlaceholderRef() {\n\t\treturn !!this.viewContainerRef;\n\t}\n\n\tappendElement(element: HTMLElement): HTMLElement {\n\t\treturn this.viewContainerRef.element.nativeElement.appendChild(element);\n\t}\n\n\tremoveElement(element: HTMLElement): HTMLElement {\n\t\treturn this.viewContainerRef.element.nativeElement.removeChild(element);\n\t}\n\n\thasElement(element: HTMLElement): boolean {\n\t\treturn this.viewContainerRef.element.nativeElement.contains(element);\n\t}\n}\n","import {\n\tComponent,\n\tOnInit,\n\tViewContainerRef,\n\tViewChild\n} from \"@angular/core\";\nimport { PlaceholderService } from \"./placeholder.service\";\n\n/**\n * Using a modal, dialog (Tooltip, OverflowMenu), or any other component that draws out of the normal page flow\n * in your application *requires* this component (`ibm-placeholder`).\n * It would generally be placed near the end of your root app component template\n * (app.component.ts or app.component.html) as:\n *\n * ```\n * <ibm-placeholder></ibm-placeholder>\n * ```\n */\n@Component({\n\tselector: \"ibm-placeholder\",\n\ttemplate: `<div #placeholder></div>`\n})\nexport class Placeholder implements OnInit {\n\t/**\n\t * Maintains a reference to the view DOM element of the `Placeholder`.\n\t */\n\t@ViewChild(\"placeholder\", { read: ViewContainerRef }) viewContainerRef: ViewContainerRef;\n\n\t/**\n\t * Creates an instance of `Placeholder`.\n\t */\n\tconstructor(public placeholderService: PlaceholderService) { }\n\n\t/**\n\t * Registers the components view with `PlaceholderService`\n\t */\n\tngOnInit() {\n\t\tthis.placeholderService.registerViewContainerRef(this.viewContainerRef);\n\t}\n}\n","// modules\nimport {\n\tNgModule,\n\tOptional,\n\tSkipSelf\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { Placeholder } from \"./placeholder.component\";\nimport { PlaceholderService } from \"./placeholder.service\";\n\n// exports\nexport { Placeholder } from \"./placeholder.component\";\nexport { PlaceholderService } from \"./placeholder.service\";\n\n// either provides a new instance of ModalPlaceholderService, or returns the parent\nexport function PLACEHOLDER_SERVICE_PROVIDER_FACTORY(parentService: PlaceholderService) {\n\treturn parentService || new PlaceholderService();\n}\n\n// placholder service *must* be a singleton to ensure the placeholder viewref is accessible globally\nexport const PLACEHOLDER_SERVICE_PROVIDER = {\n\tprovide: PlaceholderService,\n\tdeps: [[new Optional(), new SkipSelf(), PlaceholderService]],\n\tuseFactory: PLACEHOLDER_SERVICE_PROVIDER_FACTORY\n};\n\n@NgModule({\n\tdeclarations: [ Placeholder ],\n\texports: [ Placeholder ],\n\tproviders: [ PLACEHOLDER_SERVICE_PROVIDER ],\n\timports: [ CommonModule ]\n})\nexport class PlaceholderModule { }\n","import {\n\tEventEmitter,\n\tInjector,\n\tComponentRef,\n\tComponentFactory,\n\tComponentFactoryResolver,\n\tInjectable,\n\tViewContainerRef\n} from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\nimport { DialogConfig } from \"./dialog-config.interface\";\nimport { PlaceholderService } from \"./../placeholder/placeholder.module\";\n\n/**\n * `Dialog` object to be injected into other components.\n * @export\n * @class DialogService\n */\n@Injectable()\nexport class DialogService {\n\t/**\n\t * Used in `singletonClickListen`, don't count on its existence and values.\n\t */\n\tprotected static listeningForBodyClicks = false;\n\n\t/**\n\t * Reflects the open or closed state of the `Dialog`.\n\t * @memberof DialogService\n\t */\n\tpublic isOpen = false;\n\t/**\n\t * To be used to create the component using metadata.\n\t * @type {ComponentFactory<any>}\n\t * @memberof DialogService\n\t */\n\tpublic componentFactory: ComponentFactory<any>;\n\t/**\n\t * To emit the `Dialog` closing event.\n\t * @type {EventEmitter<any>}\n\t * @memberof DialogService\n\t */\n\tpublic onClose: EventEmitter<any> = new EventEmitter();\n\t/**\n\t * Holds reference to the created `Dialog` component after creation.\n\t * @type {ComponentRef<any>}\n\t * @memberof DialogService\n\t */\n\tpublic dialogRef: ComponentRef<any>;\n\n\t/**\n\t * Emits the state `true` if the Dialog is closed, false if `Dialog`\n\t * is opened/viewable.\n\t * @type {EventEmitter<any>}\n\t * @memberof DialogService\n\t */\n\tisClosed: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * To watch the event that closes the `Dialog`.\n\t * @protected\n\t * @type {Subscription}\n\t * @memberof DialogService\n\t */\n\tprotected dialogSubscription: Subscription;\n\n\t/**\n\t * Creates an instance of `DialogService`.\n\t * @param {ComponentFactoryResolver} componentFactoryResolver\n\t * @param {Injector} injector\n\t * @memberof DialogService\n\t */\n\tconstructor(\n\t\tprotected componentFactoryResolver: ComponentFactoryResolver,\n\t\tprotected injector: Injector,\n\t\tprotected placeholderService: PlaceholderService\n\t) {}\n\n\t/**\n\t * Uses module `componentFactory` to create the `Dialog` component.\n\t * @param {any} component\n\t * @memberof DialogService\n\t */\n\tcreate(component) {\n\t\tthis.componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n\t}\n\n\t/**\n\t * Toggles between `Dialog` open/close states.\n\t * @param {ViewContainerRef} viewContainer\n\t * @param {DialogConfig} dialogConfig\n\t * @memberof DialogService\n\t */\n\ttoggle(viewContainer: ViewContainerRef, dialogConfig: DialogConfig) {\n\t\tif (this.isOpen) {\n\t\t\tthis.close(viewContainer);\n\t\t} else {\n\t\t\tthis.open(viewContainer, dialogConfig);\n\t\t}\n\t}\n\n\t/**\n\t * If `dialogRef` is defined, the Dialog is already open. If\n\t * `dialogRef` is undefined, we create the `Dialog` component and reference to it.\n\t * A subscription is created to track if the `Dialog` should close.\n\t * @param {ViewContainerRef} viewContainer\n\t * @param {DialogConfig} dialogConfig\n\t * @memberof DialogService\n\t */\n\topen(viewContainer: ViewContainerRef, dialogConfig: DialogConfig) {\n\t\tif (!this.dialogRef) {\n\t\t\tif (dialogConfig.appendInline) {\n\t\t\t\t// add our component to the view\n\t\t\t\tthis.dialogRef = viewContainer.createComponent(this.componentFactory, 0, this.injector);\n\t\t\t} else if (!this.placeholderService.hasPlaceholderRef()) {\n\t\t\t\tthis.dialogRef = viewContainer.createComponent(this.componentFactory, 0, this.injector);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\twindow.document.querySelector(\"body\").appendChild(this.dialogRef.location.nativeElement);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.dialogRef = this.placeholderService.createComponent(this.componentFactory, this.injector);\n\t\t\t}\n\n\t\t\t// initialize some extra options\n\t\t\tlet focusedElement = document.activeElement;\n\t\t\tdialogConfig[\"previouslyFocusedElement\"] = focusedElement;\n\t\t\tthis.dialogRef.instance.dialogConfig = dialogConfig;\n\t\t\tthis.onClose = this.dialogRef.instance.close;\n\t\t\tthis.isOpen = true;\n\n\t\t\tthis.dialogSubscription = this.onClose.subscribe(() => {\n\t\t\t\tthis.close(viewContainer);\n\t\t\t});\n\n\t\t\tthis.dialogRef.instance.elementRef.nativeElement.focus();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * On close of `Dialog` item, sets focus back to previous item, unsets\n\t * the current `dialogRef` item. Unsubscribes to the event of `Dialog` close.\n\t * @param {ViewContainerRef} viewContainer\n\t * @param {any} [evt]\n\t * @memberof DialogService\n\t */\n\tclose(viewContainer: ViewContainerRef) {\n\t\tthis.isClosed.emit(true);\n\n\t\tif (this.dialogRef) {\n\t\t\tlet elementToFocus = this.dialogRef.instance.dialogConfig[\"previouslyFocusedElement\"];\n\t\t\tif (this.placeholderService.hasPlaceholderRef() && !this.dialogRef.instance.dialogConfig.appendInline) {\n\t\t\t\tthis.placeholderService.destroyComponent(this.dialogRef);\n\t\t\t} else {\n\t\t\t\tviewContainer.remove(viewContainer.indexOf(this.dialogRef.hostView));\n\t\t\t}\n\t\t\tthis.dialogRef = null;\n\t\t\tthis.isOpen = false;\n\t\t\telementToFocus.focus();\n\n\t\t\tif (this.dialogSubscription) {\n\t\t\t\tthis.dialogSubscription.unsubscribe();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fix for safari hijacking clicks.\n\t *\n\t * Runs on `ngOnInit` of every dialog. Ensures we don't have multiple listeners\n\t * because having many of them could degrade performance in certain cases (and is\n\t * not necessary for our use case)\n\t *\n\t * This is an internally used function, can change at any point (even get removed)\n\t * and changes to it won't be considered a breaking change. Use at your own risk.\n\t */\n\tsingletonClickListen() {\n\t\tif (!DialogService.listeningForBodyClicks) {\n\t\t\tdocument.body.firstElementChild.addEventListener(\"click\", () => null, true);\n\t\t\tDialogService.listeningForBodyClicks = true;\n\t\t}\n\t}\n}\n","/**\n * Utilites to manipulate the position of elements relative to other elements\n */\nexport var defaultPositions = {\n \"left\": function (referenceOffset, target, referenceRect) { return ({\n top: referenceOffset.top - Math.round(target.offsetHeight / 2) + Math.round(referenceRect.height / 2),\n left: Math.round(referenceOffset.left - target.offsetWidth)\n }); },\n \"right\": function (referenceOffset, target, referenceRect) { return ({\n top: referenceOffset.top - Math.round(target.offsetHeight / 2) + Math.round(referenceRect.height / 2),\n left: Math.round(referenceOffset.left + referenceRect.width)\n }); },\n \"top\": function (referenceOffset, target, referenceRect) { return ({\n top: Math.round(referenceOffset.top - target.offsetHeight),\n left: referenceOffset.left - Math.round(target.offsetWidth / 2) + Math.round(referenceRect.width / 2)\n }); },\n \"bottom\": function (referenceOffset, target, referenceRect) { return ({\n top: Math.round(referenceOffset.top + referenceRect.height),\n left: referenceOffset.left - Math.round(target.offsetWidth / 2) + Math.round(referenceRect.width / 2)\n }); }\n};\nvar Position = /** @class */ (function () {\n function Position(positions) {\n if (positions === void 0) { positions = {}; }\n this.positions = defaultPositions;\n this.positions = Object.assign({}, defaultPositions, positions);\n }\n Position.prototype.getRelativeOffset = function (target) {\n // start with the initial element offsets\n var offsets = {\n left: target.offsetLeft,\n top: target.offsetTop\n };\n // get each static (i.e. not absolute or relative) offsetParent and sum the left/right offsets\n while (target.offsetParent && getComputedStyle(target.offsetParent).position === \"static\") {\n offsets.left += target.offsetLeft;\n offsets.top += target.offsetTop;\n target = target.offsetParent;\n }\n return offsets;\n };\n Position.prototype.getAbsoluteOffset = function (target) {\n var currentNode = target;\n var margins = {\n top: 0,\n left: 0\n };\n // searches for containing elements with additional margins\n while (currentNode.offsetParent) {\n var computed = getComputedStyle(currentNode.offsetParent);\n // find static elements with additional margins\n // since they tend to throw off our positioning\n // (usually this is just the body)\n if (computed.position === \"static\" &&\n computed.marginLeft &&\n computed.marginTop) {\n if (parseInt(computed.marginTop, 10)) {\n margins.top += parseInt(computed.marginTop, 10);\n }\n if (parseInt(computed.marginLeft, 10)) {\n margins.left += parseInt(computed.marginLeft, 10);\n }\n }\n currentNode = currentNode.offsetParent;\n }\n var targetRect = target.getBoundingClientRect();\n var relativeRect = document.body.getBoundingClientRect();\n return {\n top: targetRect.top - relativeRect.top + margins.top,\n left: targetRect.left - relativeRect.left + margins.left\n };\n };\n // finds the position relative to the `reference` element\n Position.prototype.findRelative = function (reference, target, placement) {\n var referenceOffset = this.getRelativeOffset(reference);\n var referenceRect = reference.getBoundingClientRect();\n return this.calculatePosition(referenceOffset, referenceRect, target, placement);\n };\n Position.prototype.findAbsolute = function (reference, target, placement) {\n var referenceOffset = this.getAbsoluteOffset(reference);\n var referenceRect = reference.getBoundingClientRect();\n return this.calculatePosition(referenceOffset, referenceRect, target, placement);\n };\n Position.prototype.findPosition = function (reference, target, placement, offsetFunction) {\n if (offsetFunction === void 0) { offsetFunction = this.getAbsoluteOffset; }\n var referenceOffset = offsetFunction(reference);\n var referenceRect = reference.getBoundingClientRect();\n return this.calculatePosition(referenceOffset, referenceRect, target, placement);\n };\n Position.prototype.findPositionAt = function (offset, target, placement) {\n return this.calculatePosition(offset, { height: 0, width: 0 }, target, placement);\n };\n /**\n * Get the dimensions of an element from an AbsolutePosition and a reference element\n */\n Position.prototype.getPlacementBox = function (target, position) {\n var targetBottom = target.offsetHeight + position.top;\n var targetRight = target.offsetWidth + position.left;\n return {\n top: position.top,\n bottom: targetBottom,\n left: position.left,\n right: targetRight\n };\n };\n Position.prototype.addOffset = function (position, top, left) {\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n return Object.assign({}, position, {\n top: position.top + top,\n left: position.left + left\n });\n };\n Position.prototype.setElement = function (element, position) {\n element.style.top = position.top + \"px\";\n element.style.left = position.left + \"px\";\n };\n Position.prototype.findBestPlacement = function (reference, target, placements) {\n var _this = this;\n /**\n * map over the array of placements and weight them based on the percentage of visible area\n * where visible area is defined as the area not obscured by the window borders\n */\n var weightedPlacements = placements.map(function (placement) {\n var pos = _this.findPosition(reference, target, placement);\n var box = _this.getPlacementBox(target, pos);\n var hiddenHeight = box.bottom - window.innerHeight - window.scrollY;\n var hiddenWidth = box.right - window.innerWidth - window.scrollX;\n // if the hiddenHeight or hiddenWidth is negative, reset to offsetHeight or offsetWidth\n hiddenHeight = hiddenHeight < 0 ? target.offsetHeight : hiddenHeight;\n hiddenWidth = hiddenWidth < 0 ? target.offsetWidth : hiddenWidth;\n var area = target.offsetHeight * target.offsetWidth;\n var hiddenArea = hiddenHeight * hiddenWidth;\n var visibleArea = area - hiddenArea;\n // if the visibleArea is 0 set it back to area (to calculate the percentage in a useful way)\n visibleArea = visibleArea === 0 ? area : visibleArea;\n var visiblePercent = visibleArea / area;\n return {\n placement: placement,\n weight: visiblePercent\n };\n });\n // sort the placements from best to worst\n weightedPlacements.sort(function (a, b) { return b.weight - a.weight; });\n // pick the best!\n return weightedPlacements[0].placement;\n };\n Position.prototype.calculatePosition = function (referenceOffset, referenceRect, target, placement) {\n if (this.positions[placement]) {\n return this.positions[placement](referenceOffset, target, referenceRect);\n }\n console.error(\"No function found for placement, defaulting to 0,0\");\n return { left: 0, top: 0 };\n };\n return Position;\n}());\nexport default Position;\nexport var position = new Position();\n//# sourceMappingURL=../src/index.js.map","export let tabbableSelector = \"a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"textarea:not([disabled]):not([tabindex=\\'-1\\']), \" +\n\t\t\"iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]\";\n\nexport let tabbableSelectorIgnoreTabIndex = \"a[href], area[href], input:not([disabled]), \" +\n\t\t\"button:not([disabled]),select:not([disabled]), \" +\n\t\t\"textarea:not([disabled]), \" +\n\t\t\"iframe, object, embed, *[tabindex], *[contenteditable=true]\";\n\nexport function getFocusElementList(element, selector = tabbableSelector) {\n\tlet elements = element.querySelectorAll(selector);\n\treturn elements ? Array.prototype.filter.call(elements, el => isVisible(el)) : elements;\n}\n\nexport function isFocusInFirstItem(event, list) {\n\tif (list.length > 0) {\n\t\treturn (event.target || event.srcElement) === list[0];\n\t}\n\treturn false;\n}\n\nexport function isFocusInLastItem(event, list) {\n\tif (list.length > 0) {\n\t\treturn (event.target || event.srcElement) === list[list.length - 1];\n\t}\n\treturn false;\n}\n\nexport function isElementFocused(event, element) {\n\treturn (event.target || event.srcElement) === element;\n}\n\nexport function focusFirstFocusableElement(list) {\n\tif (list.length > 0) {\n\t\tlist[0].focus();\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function focusLastFocusableElement(list) {\n\tif (list.length > 0) {\n\t\tlist[list.length - 1].focus();\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isVisible(element) {\n\treturn !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n}\n\nexport function cycleTabs(event, element) {\n\tif (event.key === \"Tab\") {\n\t\tlet list = getFocusElementList(element);\n\t\tlet focusChanged = false;\n\n\t\tif (event.shiftKey) {\n\t\t\tif (isFocusInFirstItem(event, list) || isElementFocused(event, element)) {\n\t\t\t\tfocusChanged = focusLastFocusableElement(list);\n\t\t\t}\n\t\t} else {\n\t\t\tif (isFocusInLastItem(event, list)) {\n\t\t\t\tfocusChanged = focusFirstFocusableElement(list);\n\t\t\t}\n\t\t}\n\n\t\tif (focusChanged) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tViewChild,\n\tOnInit,\n\tAfterViewInit,\n\tOnDestroy,\n\tHostListener\n} from \"@angular/core\";\nimport {\n\tObservable,\n\tSubscription,\n\tfromEvent,\n\tmerge\n} from \"rxjs\";\nimport { throttleTime } from \"rxjs/operators\";\n// the AbsolutePosition is required to import the declaration correctly\nimport Position, { position, AbsolutePosition, Positions } from \"@carbon/utils-position\";\nimport { cycleTabs, getFocusElementList } from \"./../common/tab.service\";\nimport { DialogConfig } from \"./dialog-config.interface\";\n\n\n/**\n * Implements a `Dialog` that can be positioned anywhere on the page.\n * Used to implement a popover or tooltip.\n *\n * @export\n * @class Dialog\n * @implements {OnInit}\n * @implements {AfterViewInit}\n * @implements {OnDestroy}\n */\n@Component({\n\tselector: \"ibm-dialog\",\n\ttemplate: \"\"\n})\nexport class Dialog implements OnInit, AfterViewInit, OnDestroy {\n\t/**\n\t * One static event observable to handle window resizing.\n\t */\n\tprotected static resizeObservable: Observable<any> = fromEvent(window, \"resize\").pipe(throttleTime(100));\n\t/**\n\t * Emits event that handles the closing of a `Dialog` object.\n\t */\n\t@Output() close: EventEmitter<any> = new EventEmitter();\n\t/**\n\t * Receives `DialogConfig` interface object with properties of `Dialog`\n\t * explicitly defined.\n\t */\n\t@Input() dialogConfig: DialogConfig;\n\t/**\n\t * Maintains a reference to the view DOM element of the `Dialog`.\n\t */\n\t@ViewChild(\"dialog\") dialog: ElementRef;\n\n\t/**\n\t * Stores the data received from `dialogConfig`.\n\t */\n\tpublic data = {};\n\n\t/**\n\t * The placement of the `Dialog` is received from the `Position` service.\n\t */\n\tpublic placement: string;\n\n\t/**\n\t * `Subscription` used to update placement in the event of a window resize.\n\t */\n\tprotected resizeSubscription: Subscription;\n\t/**\n\t * Subscription to all the scrollable parents `scroll` event\n\t */\n\t// add a new subscription temporarily so that contexts (such as tests)\n\t// that don't run ngAfterViewInit have something to unsubscribe in ngOnDestroy\n\tprotected scrollSubscription: Subscription = new Subscription();\n\t/**\n\t * Handles offsetting the `Dialog` item based on the defined position\n\t * to not obscure the content beneath.\n\t */\n\tprotected addGap = {\n\t\t\"left\": pos => position.addOffset(pos, 0, -this.dialogConfig.gap),\n\t\t\"right\": pos => position.addOffset(pos, 0, this.dialogConfig.gap),\n\t\t\"top\": pos => position.addOffset(pos, -this.dialogConfig.gap),\n\t\t\"bottom\": pos => position.addOffset(pos, this.dialogConfig.gap),\n\t\t\"left-bottom\": pos => position.addOffset(pos, 0, -this.dialogConfig.gap),\n\t\t\"right-bottom\": pos => position.addOffset(pos, 0, this.dialogConfig.gap)\n\t};\n\n\t/**\n\t * Extra placements. Child classes can add to this for use in `placeDialog`.\n\t */\n\tprotected placements: Positions = {};\n\n\t/**\n\t * Creates an instance of `Dialog`.\n\t * @param {ElementRef} elementRef\n\t */\n\tconstructor(protected elementRef: ElementRef) {\t}\n\n\t/**\n\t * Initialize the `Dialog`, set the placement and gap, and add a `Subscription` to resize events.\n\t */\n\tngOnInit() {\n\t\tthis.placement = this.dialogConfig.placement.split(\",\")[0];\n\t\tthis.data = this.dialogConfig.data;\n\n\t\tthis.resizeSubscription = Dialog.resizeObservable.subscribe(() => {\n\t\t\tthis.placeDialog();\n\t\t});\n\n\t\t// run any additional initialization code that consuming classes may have\n\t\tthis.onDialogInit();\n\t}\n\n\t/**\n\t * After the DOM is ready, focus is set and dialog is placed\n\t * in respect to the parent element.\n\t */\n\tngAfterViewInit() {\n\t\tconst dialogElement = this.dialog.nativeElement;\n\t\t// split the wrapper class list and apply separately to avoid IE from\n\t\t// 1. throwing an error due to assigning a readonly property (classList)\n\t\t// 2. throwing a SyntaxError due to passing an empty string to `add`\n\t\tif (this.dialogConfig.wrapperClass) {\n\t\t\tfor (const extraClass of this.dialogConfig.wrapperClass.split(\" \")) {\n\t\t\t\tdialogElement.classList.add(extraClass);\n\t\t\t}\n\t\t}\n\t\tthis.placeDialog();\n\t\tif (getFocusElementList(this.dialog.nativeElement).length > 0) {\n\t\t\tdialogElement.focus();\n\t\t}\n\t\tconst parentEl: HTMLElement = this.dialogConfig.parentRef.nativeElement;\n\t\tlet node = parentEl;\n\t\tlet observables = [];\n\n\t\t// if the element has an overflow set as part of\n\t\t// its computed style it can scroll\n\t\tconst isScrollableElement = (element: HTMLElement) => {\n\t\t\tconst computedStyle = getComputedStyle(element);\n\t\t\treturn (\n\t\t\t\tcomputedStyle.overflow === \"auto\" ||\n\t\t\t\tcomputedStyle.overflow === \"scroll\" ||\n\t\t\t\tcomputedStyle[\"overflow-y\"] === \"auto\" ||\n\t\t\t\tcomputedStyle[\"overflow-y\"] === \"scroll\" ||\n\t\t\t\tcomputedStyle[\"overflow-x\"] === \"auto\" ||\n\t\t\t\tcomputedStyle[\"overflow-x\"] === \"scroll\"\n\t\t\t);\n\t\t};\n\n\t\tconst isVisibleInContainer = (element, container) => {\n\t\t\tconst elementRect = element.getBoundingClientRect();\n\t\t\tconst containerRect = container.getBoundingClientRect();\n\t\t\treturn elementRect.bottom <= containerRect.bottom && elementRect.top >= containerRect.top;\n\t\t};\n\n\t\tconst placeDialogInContainer = () => {\n\t\t\t// only do the work to find the scroll containers if we're appended to body\n\t\t\t// or skip this work if we're inline\n\t\t\tif (!this.dialogConfig.appendInline) {\n\t\t\t\t// walk the parents and subscribe to all the scroll events we can\n\t\t\t\twhile (node.parentElement && node !== document.body) {\n\t\t\t\t\tif (isScrollableElement(node)) {\n\t\t\t\t\t\tobservables.push(fromEvent(node, \"scroll\"));\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.parentElement;\n\t\t\t\t}\n\t\t\t\t// subscribe to the observable, and update the position and visibility\n\t\t\t\tconst scrollObservable = merge(...observables);\n\t\t\t\tthis.scrollSubscription = scrollObservable.subscribe((event: any) => {\n\t\t\t\t\tthis.placeDialog();\n\t\t\t\t\tif (!isVisibleInContainer(this.dialogConfig.parentRef.nativeElement, event.target)) {\n\t\t\t\t\t\tthis.doClose();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t// settimeout to let the DOM settle before attempting to place the dialog\n\t\t// and before notifying components that the DOM is ready\n\t\tsetTimeout(() => {\n\t\t\tplaceDialogInContainer();\n\t\t\tthis.afterDialogViewInit();\n\t\t});\n\t}\n\n\t/**\n\t * Empty method to be overridden by consuming classes to run any additional initialization code.\n\t */\n\tonDialogInit() {}\n\n\t/**\n\t * Empty method to be overridden by consuming classes to run any additional initialization code after the view is available.\n\t * NOTE: this does _not_ guarantee the dialog will be positioned, simply that it will exist in the DOM\n\t */\n\tafterDialogViewInit() {}\n\n\t/**\n\t * Uses the position service to position the `Dialog` in screen space\n\t */\n\tplaceDialog(): void {\n\t\tconst positionService = new Position(this.placements);\n\t\t// helper to find the position based on the current/given environment\n\t\tconst findPosition = (reference, target, placement) => {\n\t\t\tlet pos;\n\t\t\tif (this.dialogConfig.appendInline) {\n\t\t\t\tpos = this.addGap[placement](positionService.findRelative(reference, target, placement));\n\t\t\t} else {\n\t\t\t\tpos = this.addGap[placement](positionService.findAbsolute(reference, target, placement));\n\t\t\t}\n\t\t\treturn pos;\n\t\t};\n\n\t\tlet parentEl = this.dialogConfig.parentRef.nativeElement;\n\t\tlet el = this.dialog.nativeElement;\n\t\tlet dialogPlacement = this.placement;\n\n\t\t// split always returns an array, so we can just use the auto position logic\n\t\t// for single positions too\n\t\tconst placements = this.dialogConfig.placement.split(\",\");\n\n\t\t// find the best placement\n\t\tdialogPlacement = positionService.findBestPlacement(parentEl, el, placements);\n\n\t\t// calculate the final position\n\t\tconst pos = findPosition(parentEl, el, dialogPlacement);\n\n\t\t// update the element\n\t\tpositionService.setElement(el, pos);\n\t\tsetTimeout(() => { this.placement = dialogPlacement; });\n\t}\n\n\t/**\n\t * Sets up a KeyboardEvent to close `Dialog` with Escape key.\n\t * @param {KeyboardEvent} event\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\tescapeClose(event: KeyboardEvent) {\n\t\tswitch (event.key) {\n\t\t\tcase \"Esc\": // IE specific value\n\t\t\tcase \"Escape\": {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.doClose();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Tab\": {\n\t\t\t\tcycleTabs(event, this.elementRef.nativeElement);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets up a event Listener to close `Dialog` if click event occurs outside\n\t * `Dialog` object.\n\t * @param {any} event\n\t */\n\t@HostListener(\"document:click\", [\"$event\"])\n\tclickClose(event) {\n\t\tif (!this.elementRef.nativeElement.contains(event.target)\n\t\t\t&& !this.dialogConfig.parentRef.nativeElement.contains(event.target) ) {\n\t\t\tthis.doClose();\n\t\t}\n\t}\n\n\t/**\n\t * Closes `Dialog` object by emitting the close event upwards to parents.\n\t */\n\tpublic doClose() {\n\t\tthis.close.emit();\n\t}\n\n\t/**\n\t * At destruction of component, `Dialog` unsubscribes from handling window resizing changes.\n\t */\n\tngOnDestroy() {\n\t\tthis.resizeSubscription.unsubscribe();\n\t\tthis.scrollSubscription.unsubscribe();\n\t}\n}\n","import {\n\tDirective,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tOnInit,\n\tOnDestroy,\n\tElementRef,\n\tTemplateRef,\n\tViewContainerRef,\n\tHostListener,\n\tOnChanges,\n\tHostBinding\n} from \"@angular/core\";\nimport { fromEvent } from \"rxjs\";\nimport { DialogService } from \"./dialog.service\";\nimport { DialogConfig } from \"./dialog-config.interface\";\n\n/**\n * A generic directive that can be inherited from to create dialogs (for example, a tooltip or popover)\n *\n * This class contains the relevant initialization code, specific templates, options, and additional inputs\n * should be specified in the derived class.\n *\n * NOTE: All child classes should add `DialogService` as a provider, otherwise they will lose context that\n * the service relies on.\n */\n@Directive({\n\tselector: \"[ibmDialog]\",\n\texportAs: \"ibmDialog\",\n\tproviders: [\n\t\tDialogService\n\t]\n})\nexport class DialogDirective implements OnInit, OnDestroy, OnChanges {\n\tstatic dialogCounter = 0;\n\t/**\n\t * Title for the dialog\n\t */\n\t@Input() title = \"\";\n\t/**\n\t * Dialog body content.\n\t */\n\t@Input() ibmDialog: string | TemplateRef<any>;\n\t/**\n\t * Defines how the Dialog is triggered.(Hover and click behave the same on mobile - both respond to a single tap)\n\t */\n\t@Input() trigger: \"click\" | \"hover\" | \"mouseenter\" = \"click\";\n\t/**\n\t * Defines how the Dialog close event is triggered.\n\t *\n\t * [See here](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event)\n\t * for more on the difference between `mouseleave` and `mouseout`.\n\t *\n\t * Defaults to `click` when `trigger` is set to `click`.\n\t */\n\t@Input() closeTrigger: \"mouseout\" | \"mouseleave\" = \"mouseleave\";\n\t/**\n\t * Placement of the dialog, usually relative to the element the directive is on.\n\t */\n\t@Input() placement = \"left\";\n\t/**\n\t * Class to add to the dialog container\n\t */\n\t@Input() wrapperClass: string;\n\t/**\n\t * Spacing between the dialog and it's triggering element\n\t */\n\t@Input() gap = 0;\n\t/**\n\t * Deprecated. Defaults to true. Use appendInline to keep dialogs within page flow\n\t * Value `true` appends Dialog to the body (to break out of containers)\n\t */\n\t@Input() set appendToBody(v: boolean) {\n\t\tconsole.log(\"`appendToBody` has been deprecated. Dialogs now append to the body by default.\");\n\t\tconsole.log(\"Ensure you have an `ibm-placeholder` in your app.\");\n\t\tconsole.log(\"Use `appendInline` if you need to position your dialogs within the normal page flow.\");\n\t\tthis.appendInline = !v;\n\t}\n\tget appendToBody() {\n\t\treturn !this.appendInline;\n\t}\n\t/**\n\t * Set to `true` to open the dialog next to the triggering component\n\t */\n\t@Input() appendInline = false;\n\t/**\n\t * Optional data for templates\n\t */\n\t@Input() data = {};\n\t/**\n\t * Config object passed to the rendered component\n\t */\n\tdialogConfig: DialogConfig;\n\t/**\n\t * Emits an event when the dialog is closed\n\t */\n\t@Output() onClose: EventEmitter<any> = new EventEmitter();\n\t/**\n\t * Emits an event when the dialog is opened\n\t */\n\t@Output() onOpen: EventEmitter<any> = new EventEmitter();\n\n\t@HostBinding(\"attr.role\") role = \"button\";\n\t@HostBinding(\"attr.aria-expanded\") expanded = false;\n\t@HostBinding(\"attr.aria-haspopup\") hasPopup = true;\n\t@HostBinding(\"attr.aria-owns\") get ariaOwns(): string {\n\t\treturn this.expanded ? this.dialogConfig.compID : null;\n\t}\n\n\t/**\n\t * Creates an instance of DialogDirective.\n\t * @param {ElementRef} elementRef\n\t * @param {ViewContainerRef} viewContainerRef\n\t * @param {DialogService} dialogService\n\t */\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected dialogService: DialogService) {}\n\n\t/**\n\t * Overrides 'touchstart' event to trigger a toggle on the Dialog.\n\t */\n\t@HostListener(\"touchstart\", [\"$event\"])\n\tonTouchStart(evt) {\n\t\tevt.stopImmediatePropagation();\n\t\tevt.preventDefault();\n\t\tthis.toggle();\n\t}\n\n\tngOnChanges() {\n\t\t// set the config object (this can [and should!] be added to in child classes depending on what they need)\n\t\tthis.dialogConfig = {\n\t\t\ttitle: this.title,\n\t\t\tcontent: this.ibmDialog,\n\t\t\tplacement: this.placement,\n\t\t\tparentRef: this.elementRef,\n\t\t\tgap: this.gap,\n\t\t\ttrigger: this.trigger,\n\t\t\tcloseTrigger: this.closeTrigger,\n\t\t\tappendInline: this.appendInline,\n\t\t\twrapperClass: this.wrapperClass,\n\t\t\tdata: this.data\n\t\t};\n\t}\n\n\t/**\n\t * Sets the config object and binds events for hovering or clicking before\n\t * running code from child class.\n\t */\n\tngOnInit() {\n\t\t// fix for safari hijacking clicks\n\t\tthis.dialogService.singletonClickListen();\n\n\t\tfromEvent(this.elementRef.nativeElement, \"keydown\").subscribe((event: KeyboardEvent) => {\n\t\t\t// \"Esc\" is an IE specific value\n\t\t\tif (event.target === this.dialogConfig.parentRef.nativeElement && (event.key === \"Tab\" || event.key === \"Tab\" && event.shiftKey) ||\n\t\t\t\tevent.key === \"Escape\" || event.key === \"Esc\") {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\n\t\t// bind events for hovering or clicking the host\n\t\tif (this.trigger === \"hover\" || this.trigger === \"mouseenter\") {\n\t\t\tfromEvent(this.elementRef.nativeElement, \"mouseenter\").subscribe(() => this.toggle());\n\t\t\tfromEvent(this.elementRef.nativeElement, this.closeTrigger).subscribe(() => this.close());\n\t\t\tfromEvent(this.elementRef.nativeElement, \"focus\").subscribe(() => this.open());\n\t\t\tfromEvent(this.elementRef.nativeElement, \"blur\").subscribe(() => this.close());\n\t\t} else {\n\t\t\tfromEvent(this.elementRef.nativeElement, \"click\").subscribe(() => this.toggle());\n\t\t\tfromEvent(this.elementRef.nativeElement, \"keydown\").subscribe((event: KeyboardEvent) => {\n\t\t\t\t// \"Spacebar\" is an IE specific value\n\t\t\t\tif (event.key === \"Enter\" || event.key === \" \" || event.key === \"Spacebar\") {\n\t\t\t\t\tthis.open();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// call onClose when the dialog is closed\n\t\t// - Enforce accessibility by updating an aria attr for nativeElement.\n\t\tthis.dialogService.isClosed.subscribe(value => {\n\t\t\tif (value) {\n\t\t\t\tthis.onClose.emit();\n\t\t\t\tthis.expanded = false;\n\t\t\t}\n\t\t});\n\n\t\tDialogDirective.dialogCounter++;\n\t\tthis.dialogConfig.compID = \"dialog-\" + DialogDirective.dialogCounter;\n\n\t\t// run any code a child class may need\n\t\tthis.onDialogInit();\n\t}\n\n\t/**\n\t * When the host dies, kill the popover.\n\t * - Useful for use in a modal or similar.\n\t */\n\tngOnDestroy() {\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Helper method to call dialogService 'open'.\n\t * - Enforce accessibility by updating an aria attr for nativeElement.\n\t */\n\topen() {\n\t\tthis.dialogService.open(this.viewContainerRef, this.dialogConfig);\n\t\tthis.expanded = true;\n\t\tthis.onOpen.emit();\n\t}\n\n\t/**\n\t * Helper method to call dialogService 'toggle'.\n\t * - Enforce accessibility by updating an aria attr for nativeElement.\n\t */\n\ttoggle() {\n\t\tthis.dialogService.toggle(this.viewContainerRef, this.dialogConfig);\n\t\tthis.expanded = this.dialogService.isOpen;\n\t\tif (this.expanded) {\n\t\t\tthis.onOpen.emit();\n\t\t}\n\t}\n\n\t/**\n\t * Helper method to call dialogService 'close'.\n\t * - Enforce accessibility by updating an aria attr for nativeElement.\n\t */\n\tclose() {\n\t\tthis.dialogService.close(this.viewContainerRef);\n\t\tthis.expanded = false;\n\t}\n\n\t/**\n\t * Empty method for child classes to override and specify additional init steps.\n\t * Run after DialogDirective completes it's ngOnInit.\n\t */\n\tprotected onDialogInit() {}\n}\n","import {\n\tComponent,\n\tOnInit,\n\tViewContainerRef,\n\tViewChild\n} from \"@angular/core\";\nimport { PlaceholderService } from \"./../placeholder/placeholder.module\";\n\n/**\n * Deprecated as of v2.0, will be removed with v3.0\n * Using a dialog (popover, tooltip, etc) with appendToBody=\"true\" in your application\n * requires *this* component (`n-dialog-placeholder`).\n * It would generally be placed near the end of your app component template\n * (app.component.ts or app.component.html) as:\n *\n * ```html\n * ...\n * <ibm-dialog-placeholder></ibm-dialog-placeholder>\n * ```\n *\n * A more complete example for `Popover` is given as follows:\n *\n * ```html\n * <button [ibmPopover]=\"Hello\" appendToBody=\"true\"></button>\n * ...\n * <ibm-dialog-placeholder></ibm-dialog-placeholder>\n * ```\n *\n * @deprecated\n */\n@Component({\n\tselector: \"ibm-dialog-placeholder\",\n\ttemplate: `<div #dialogPlaceholder></div>`\n})\nexport class DialogPlaceholder implements OnInit {\n\t/**\n\t * Maintains a reference to the view DOM element of the `DialogPlaceholder`.\n\t */\n\t@ViewChild(\"dialogPlaceholder\", { read: ViewContainerRef }) viewContainerRef: ViewContainerRef;\n\n\t/**\n\t * Creates an instance of `DialogPlaceholder`.\n\t */\n\tconstructor(public placeholderService: PlaceholderService) { }\n\n\t/**\n\t * Initializes the component using `PlaceholderService`.\n\t */\n\tngOnInit() {\n\t\tconsole.warn(\"`ibm-dialog-placeholder` has been deprecated in favour of `ibm-placeholder`\");\n\t\tthis.placeholderService.registerViewContainerRef(this.viewContainerRef);\n\t}\n}\n","import {\n\tComponent,\n\tTemplateRef,\n\tHostBinding,\n\tInput\n} from \"@angular/core\";\nimport { getFocusElementList } from \"./../../common/tab.service\";\n\nimport { Dialog } from \"./../dialog.component\";\nimport { position } from \"@carbon/utils-position\";\n\n/**\n * Extend the `Dialog` component to create a tooltip for exposing content.\n */\n@Component({\n\tselector: \"ibm-tooltip\",\n\ttemplate: `\n\t\t<div\n\t\t\t#dialog\n\t\t\t[id]=\"dialogConfig.compID\"\n\t\t\t[attr.role]=\"role\"\n\t\t\t[attr.data-floating-menu-direction]=\"placement\"\n\t\t\tclass=\"bx--tooltip bx--tooltip--shown\">\n\t\t\t<span class=\"bx--tooltip__caret\" aria-hidden=\"true\"></span>\n\t\t\t<ng-template\n\t\t\t\t\t*ngIf=\"hasContentTemplate\"\n\t\t\t\t\t[ngTemplateOutlet]=\"dialogConfig.content\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{tooltip: this}\">\n\t\t\t</ng-template>\n\t\t\t<p\n\t\t\t\t*ngIf=\"!hasContentTemplate\">\n\t\t\t\t{{dialogConfig.content}}\n\t\t\t</p>\n\t\t</div>\n\t\t`\n})\nexport class Tooltip extends Dialog {\n\t@HostBinding(\"style.display\") style = \"inline-block\";\n\t/**\n\t * Value is set to `true` if the `Tooltip` is to display a `TemplateRef` instead of a string.\n\t */\n\tpublic hasContentTemplate = false;\n\t/**\n\t * Sets the role of the tooltip. If there's no focusable content we leave it as a `tooltip`,\n\t * if there _is_ focusable content we switch to the interactive `dialog` role.\n\t */\n\tpublic role = \"tooltip\";\n\t/**\n\t * Check whether there is a template for the `Tooltip` content.\n\t */\n\tonDialogInit() {\n\t\tthis.addGap[\"bottom\"] = pos => {\n\t\t\treturn position.addOffset(pos, 3, 0);\n\t\t};\n\t\tthis.addGap[\"top\"] = pos => {\n\t\t\treturn position.addOffset(pos, -10, 0);\n\t\t};\n\t\tthis.addGap[\"left\"] = pos => {\n\t\t\treturn position.addOffset(pos, -3, -6);\n\t\t};\n\t\tthis.addGap[\"right\"] = pos => {\n\t\t\treturn position.addOffset(pos, -3, 6);\n\t\t};\n\n\t\tthis.hasContentTemplate = this.dialogConfig.content instanceof TemplateRef;\n\t}\n\n\tafterDialogViewInit() {\n\t\tconst focusableElements = getFocusElementList(this.dialog.nativeElement);\n\t\tif (focusableElements.length > 0) {\n\t\t\tthis.role = \"dialog\";\n\t\t\tfocusableElements[0].focus();\n\t\t}\n\t}\n}\n","import { Component, Input, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-tooltip-definition\",\n\ttemplate: `\n\t\t<button type=\"button\" class=\"bx--tooltip__trigger\" [attr.aria-describedby]=\"id\">\n\t\t\t<ng-content></ng-content>\n\t\t</button>\n\t\t<div\n\t\t\t[id]=\"id\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--tooltip--definition__bottom' : placement === 'bottom',\n\t\t\t\t'bx--tooltip--definition__top' : placement === 'top'\n\t\t\t}\"\n\t\t\trole=\"tooltip\"\n\t\t\t[attr.aria-label]=\"content\">\n\t\t\t<span class=\"bx--tooltip__caret\"></span>\n\t\t\t<p>{{content}}</p>\n\t\t</div>\n\t`\n})\nexport class TooltipDefinition {\n\tstatic tooltipItemCount = 0;\n\n\t@Input() id = `definition-tooltip-${TooltipDefinition.tooltipItemCount++}`;\n\t/**\n\t * Body content for the `TooltipDefinition`.\n\t */\n\t@Input() content: string;\n\t/**\n\t * The placement in which the `TooltipDefinition` appears.\n\t * Set to `\"top\"` to have it positioned above the trigger text\n\t */\n\t@Input() placement: \"bottom\" | \"top\" = \"bottom\";\n\n\t@HostBinding(\"class.bx--tooltip--definition\") className = true;\n}\n","import { Component, Input, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-tooltip-icon\",\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"bx--tooltip__trigger\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--tooltip--icon__bottom' : placement === 'bottom',\n\t\t\t\t'bx--tooltip--icon__top' : placement === 'top'\n\t\t\t}\"\n\t\t\t[attr.aria-label]=\"content\">\n\t\t\t<ng-content></ng-content>\n\t\t</button>\n\t`\n})\nexport class TooltipIcon {\n\t/**\n\t * Body content for the `TooltipIcon`.\n\t */\n\t@Input() content: string;\n\t/**\n\t * The placement in which the `TooltipIcon` appears.\n\t * Set to `\"top\"` to have it positioned above the icon\n\t */\n\t@Input() placement: \"bottom\" | \"top\" = \"bottom\";\n\n\t@HostBinding(\"class.bx--tooltip-icon\") className = true;\n}\n","import {\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tElementRef,\n\tInjector,\n\tComponentFactoryResolver,\n\tViewContainerRef,\n\tHostBinding\n} from \"@angular/core\";\nimport { DialogDirective } from \"./../dialog.directive\";\nimport { Tooltip } from \"./tooltip.component\";\nimport { DialogService } from \"./../dialog.service\";\n\n\n/**\n * Directive for extending `Dialog` to create tooltips.\n *\n * [See demo](../../?path=/story/tooltip--basic)\n *\n * class: TooltipDirective (extends PopoverDirective)\n *\n *\n * selector: `nTooltip`\n *\n *\n * ```html\n * <button nTooltip=\"I am a tooltip\" placement=\"right\" trigger=\"mouseenter\" type=\"danger\">Tooltip Right</button>\n * <button nTooltip=\"I am a tooltip\" type=\"warning\">Tooltip Top warning on click</button>\n * ```\n *\n * <example-url>../../iframe.html?id=tooltip--basic</example-url>\n *\n * @export\n * @class TooltipDirective\n * @extends {DialogDirective}\n */\n@Directive({\n\tselector: \"[ibmTooltip]\",\n\texportAs: \"ibmTooltip\",\n\tproviders: [\n\t\tDialogService\n\t]\n})\nexport class TooltipDirective extends DialogDirective {\n\t/**\n\t * The string or template content to be exposed by the tooltip.\n\t */\n\t@Input() ibmTooltip: string | TemplateRef<any>;\n\t/**\n\t * Set tooltip type to reflect 'warning' or 'error' styles.\n\t */\n\t// tslint:disable-next-line:no-input-rename\n\t@Input(\"tooltip-type\") tooltipType: \"warning\" | \"error\" | \"\" = \"\";\n\n\t@HostBinding(\"tabindex\") tabIndex = 0;\n\n\t@HostBinding(\"class.bx--tooltip__trigger\") className = true;\n\n\t@HostBinding(\"attr.aria-describedby\") get descriptorId(): string {\n\t\treturn this.expanded ? this.dialogConfig.compID : null;\n\t}\n\n\t/**\n\t * Creates an instance of `TooltipDirective`.\n\t */\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected dialogService: DialogService\n\t) {\n\t\tsuper(elementRef, viewContainerRef, dialogService);\n\t\tdialogService.create(Tooltip);\n\t}\n\n\t/**\n\t * Extends the `Dialog` component's data structure with tooltip properties.\n\t */\n\tonDialogInit() {\n\t\tthis.dialogConfig.content = this.ibmTooltip;\n\t\tthis.dialogConfig.type = this.tooltipType;\n\t}\n}\n","import {\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tElementRef,\n\tInjector,\n\tComponentFactoryResolver,\n\tViewContainerRef\n} from \"@angular/core\";\nimport { TooltipDirective } from \"./tooltip.directive\";\nimport { DialogService } from \"./../dialog.service\";\nimport { Tooltip } from \"./tooltip.component\";\n\n\n/**\n * A directive that creates a tooltip `Dialog` for exposing truncated text.\n *\n * class: EllipsisTooltip (extends PopoverDirective)\n *\n * selector: `nEllipsisTooltip`\n *\n * ```html\n * <div class=\"ellipsis\" nEllipsisTooltip>Tooltip for ellipsis because I can and I am really really long</div>\n * ```\n *\n * @export\n * @class EllipsisTooltip\n * @extends {TooltipDirective}\n */\n@Directive({\n\tselector: \"[ibmEllipsisTooltip]\",\n\tproviders: [\n\t\tDialogService\n\t]\n})\nexport class EllipsisTooltip extends TooltipDirective {\n\t/**\n\t * Toggles tooltip in view if text is truncated.\n\t * @returns null\n\t * @memberof EllipsisTooltip\n\t */\n\ttoggle() {\n\t\tif (this.elementRef.nativeElement.scrollWidth <= this.elementRef.nativeElement.offsetWidth) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dialogConfig.content = this.elementRef.nativeElement.innerText;\n\t\tsuper.toggle();\n\t}\n}\n","// custom deep object merge\nexport const merge = (target, ...objects) => {\n\tfor (const object of objects) {\n\t\tfor (const key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\t// since we're dealing just with JSON this simple check should be enough\n\t\t\t\tif (object[key] instanceof Object) {\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t}\n\t\t\t\t\t// recursively merge into the target\n\t\t\t\t\t// most translations only run 3 or 4 levels deep, so no stack explosions\n\t\t\t\t\ttarget[key] = merge(target[key], object[key]);\n\t\t\t\t} else {\n\t\t\t\t\ttarget[key] = object[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n","import { Injectable } from \"@angular/core\";\nimport {\n\tBehaviorSubject,\n\tObservable,\n\tisObservable,\n\tiif\n} from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { merge } from \"../utils/object\";\n\nconst EN = require(\"./en.json\");\n\n/**\n * Takes the `Observable` returned from `i18n.get` and an object of variables to replace.\n *\n * The keys specify the variable name in the string.\n *\n * Example:\n * ```typescript\n * service.set({ \"TEST\": \"{{foo}} {{bar}}\" });\n *\n * service.replace(service.get(\"TEST\"), { foo: \"test\", bar: \"asdf\" })\n * ```\n *\n * Produces: `\"test asdf\"`\n *\n * @param subject the translation to replace variables on\n * @param variables object of variables to replace\n */\nexport const replace = (subject, variables) => subject.pipe(\n\tmap<string, void>(str => {\n\t\tconst keys = Object.keys(variables);\n\t\tfor (const key of keys) {\n\t\t\tconst value = variables[key];\n\t\t\tstr = str.replace(new RegExp(`{{\\\\s*${key}\\\\s*}}`, \"g\"), value);\n\t\t}\n\t\treturn str;\n\t})\n);\n\n/**\n * Represents an \"overridable\" translation value.\n *\n * Largely an internal usecase. There are situations where we want an `Observable` that\n * can emit events from a centralized source **OR** an `Observable` that will emit events\n * from a component local source. The key example being on/off text in a `Toggle` - In some cases\n * we want the `Toggle` to use `I18n`s global translations, but in others we'd prefer to use a local\n * override. We don't ever need to return to a non-overridden state, but we do need the ability to\n * switch _to_ an overridden sate.\n */\nexport class Overridable {\n\t/**\n\t * The raw value of the translation. Defaults to the string value, but will return the value passed to `override`\n\t *\n\t * @readonly\n\t */\n\tpublic get value(): string | Observable<string> {\n\t\treturn this._value;\n\t}\n\n\tpublic set value(v: string | Observable<string>) {\n\t\tthis.override(v);\n\t}\n\n\t/**\n\t * The translation subject. Returns either a stream of overridden values, or our base translation values.\n\t *\n\t * @readonly\n\t */\n\tpublic get subject(): Observable<string> {\n\t\t/**\n\t\t * since inputs are bound on template instantiation (and thusly will always have _some_ value)\n\t\t * We can use a simple boolean and the `iif` function to determine which subject to return on subscription\n\t\t */\n\t\treturn iif(() => this.isOverridden, this.$override, this.baseTranslation);\n\t}\n\n\t/**\n\t * Overridden value. Accessed by the readonly getter `value` and set through `override`\n\t */\n\tprotected _value: string | Observable<string>;\n\t/**\n\t * Subject of overridden values. Initialized with our default value.\n\t */\n\tprotected $override: BehaviorSubject<string>;\n\t/**\n\t * Our base non-overridden translation.\n\t */\n\tprotected baseTranslation: Observable<string> = this.i18n.get(this.path);\n\t/**\n\t * A boolean to flip between overridden and non-overridden states.\n\t */\n\tprotected isOverridden = false;\n\n\tconstructor(protected path: string, protected i18n: I18n) {\n\t\t/**\n\t\t * ensure `$override` is initialized with the correct default value\n\t\t * in some cases `_value` can get changed for an `Observable` before `$override` is created\n\t\t */\n\t\tconst value = this.i18n.getValueFromPath(this.path) as string;\n\t\tthis.$override = new BehaviorSubject<string>(value);\n\t\tthis._value = value;\n\t}\n\t/**\n\t * Takes a string or an `Observable` that emits strings.\n\t * Overrides the value provided by the `I18n` service.\n\t */\n\toverride(value: string | Observable<string>) {\n\t\tthis.isOverridden = true;\n\t\tthis._value = value;\n\t\tif (isObservable(value)) {\n\t\t\tvalue.subscribe(v => {\n\t\t\t\tthis.$override.next(v);\n\t\t\t});\n\t\t} else {\n\t\t\tthis.$override.next(value);\n\t\t}\n\t}\n}\n\n/**\n * The I18n service is a minimal internal singleton service used to supply our components with translated strings.\n *\n * All the components that support I18n also support directly passed strings.\n * Usage of I18n is optional, and it is not recommended for application use (libraries like ngx-translate\n * are a better choice)\n *\n */\n@Injectable()\nexport class I18n {\n\tprotected translationStrings = EN;\n\n\tprotected translations = new Map();\n\n\t/**\n\t * Set/update the translations from an object. Also notifies all participating components of the update.\n\t *\n\t * @param strings an object of strings, should follow the same format as src/i18n/en.json\n\t */\n\tpublic set(strings: { [key: string]: string }) {\n\t\tthis.translationStrings = merge({}, EN, strings);\n\t\t// iterate over all our tracked translations and update each observable\n\t\tconst translations = Array.from(this.translations);\n\t\tfor (const [path, subject] of translations) {\n\t\t\tsubject.next(this.getValueFromPath(path));\n\t\t}\n\t}\n\n\t/**\n\t * When a path is specified returns an observable that will resolve to the translation string value.\n\t *\n\t * Returns the full translations object if path is not specified.\n\t *\n\t * @param path optional, looks like `\"NOTIFICATION.CLOSE_BUTTON\"`\n\t */\n\tpublic get(path?: string) {\n\t\tif (!path) {\n\t\t\treturn this.translationStrings;\n\t\t}\n\t\treturn this.getSubject(path);\n\t}\n\n\t/**\n\t * Returns all descendents of some path fragment as an object.\n\t *\n\t * @param partialPath a path fragment, for example `\"NOTIFICATION\"`\n\t */\n\tpublic getMultiple(partialPath: string): { [key: string]: Observable<string> } {\n\t\tconst values = this.getValueFromPath(partialPath);\n\t\tconst subjects = {};\n\t\tfor (const key of Object.keys(values)) {\n\t\t\tif (values[key] === Object(values[key])) {\n\t\t\t\tsubjects[key] = this.getMultiple(`${partialPath}.${key}`);\n\t\t\t} else {\n\t\t\t\tsubjects[key] = this.getSubject(`${partialPath}.${key}`);\n\t\t\t}\n\t\t}\n\t\treturn subjects;\n\t}\n\n\t/**\n\t * Returns an instance of `Overridable` that can be used to optionally override the value provided by `I18n`\n\t * @param path looks like `\"NOTIFICATION.CLOSE_BUTTON\"`\n\t */\n\tpublic getOverridable(path: string) {\n\t\treturn new Overridable(path, this);\n\t}\n\n\t/**\n\t * Takes the `Observable` returned from `i18n.get` and an object of variables to replace.\n\t *\n\t * The keys specify the variable name in the string.\n\t *\n\t * Example:\n\t * ```\n\t * service.set({ \"TEST\": \"{{foo}} {{bar}}\" });\n\t *\n\t * service.replace(service.get(\"TEST\"), { foo: \"test\", bar: \"asdf\" })\n\t * ```\n\t *\n\t * Produces: `\"test asdf\"`\n\t *\n\t * @param subject the translation to replace variables on\n\t * @param variables object of variables to replace\n\t */\n\tpublic replace(subject: Observable<string>, variables: { [key: string]: string }) {\n\t\treturn replace(subject, variables);\n\t}\n\n\t/**\n\t * Trys to resolve a value from the provided path.\n\t *\n\t * @param path looks like `\"NOTIFICATION.CLOSE_BUTTON\"`\n\t */\n\tpublic getValueFromPath(path): string | { [key: string]: string } {\n\t\tlet value = this.translationStrings;\n\t\tfor (const segment of path.split(\".\")) {\n\t\t\tif (value[segment]) {\n\t\t\t\tvalue = value[segment];\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no key ${segment} at ${path}`);\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Helper method that returns an observable from the internal cache based on the path\n\t *\n\t * @param path looks like `\"NOTIFICATION.CLOSE_BUTTON\"`\n\t */\n\tprotected getSubject(path: string): Observable<string> {\n\t\ttry {\n\t\t\t// we run this here to validate the path exists before adding it to the translation map\n\t\t\tconst value = this.getValueFromPath(path) as string;\n\t\t\tif (this.translations.has(path)) {\n\t\t\t\treturn this.translations.get(path);\n\t\t\t}\n\t\t\tconst translation = new BehaviorSubject(value);\n\t\t\tthis.translations.set(path, translation);\n\t\t\treturn translation;\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { replace } from \"./i18n.service\";\n\n@Pipe({\n\tname: \"i18nReplace\"\n})\nexport class ReplacePipe implements PipeTransform {\n\ttransform(value, variables) {\n\t\treturn replace(value, variables);\n\t}\n}\n","import { NgModule, SkipSelf, Optional } from \"@angular/core\";\n\nimport { I18n } from \"./i18n.service\";\nimport { ReplacePipe } from \"./replace.pipe\";\n\nexport { I18n, replace, Overridable } from \"./i18n.service\";\nexport { ReplacePipe } from \"./replace.pipe\";\n\n// either provides a new instance of I18n, or returns the parent\nexport function I18N_SERVICE_PROVIDER_FACTORY(parentService: I18n) {\n\treturn parentService || new I18n();\n}\n\n// I18n should provide a single instance of itself to ensure that translations are consistent through the app\nexport const I18N_SERVICE_PROVIDER = {\n\tprovide: I18n,\n\tdeps: [[new Optional(), new SkipSelf(), I18n]],\n\tuseFactory: I18N_SERVICE_PROVIDER_FACTORY\n};\n\n@NgModule({\n\tdeclarations: [ReplacePipe],\n\texports: [ReplacePipe],\n\tproviders: [\n\t\tI18n,\n\t\tI18N_SERVICE_PROVIDER\n\t]\n})\nexport class I18nModule {}\n","import { Injectable } from \"@angular/core\";\n\n/**\n * Represents options for an experiment. The only required property is `enabled`, however other options may be supplied.\n */\nexport interface Experiment {\n\tenabled: boolean;\n\t[key: string]: any;\n}\n\n@Injectable()\nexport class ExperimentalService {\n\t/**\n\t * Tracks if the v10 experimental mode is enabled\n\t * @deprecated since v3\n\t */\n\tstatic experimentalEnabled = true;\n\n\t/**\n\t * Sets the v10 experimental mode\n\t * @deprecated since v3\n\t */\n\tset isExperimental(v: boolean) {\n\t\tExperimentalService.experimentalEnabled = v;\n\t}\n\n\t/**\n\t * Gets the state of the v10 experimental mode\n\t * @deprecated since v3\n\t */\n\tget isExperimental() {\n\t\treturn ExperimentalService.experimentalEnabled;\n\t}\n\n\t/**\n\t * Map to hold all our experiments\n\t */\n\tprivate experiments = new Map<string, Experiment>();\n\n\t/**\n\t * Adds an experiment if it doesn't exist.\n\t */\n\taddExperiment(name: string, options: Experiment = {enabled: false}) {\n\t\tif (!this.experiments.has(name)) {\n\t\t\tthis.experiments.set(name, options);\n\t\t}\n\t}\n\n\t/**\n\t * Enables an experiment by name\n\t * @param name name of the experiment to enable\n\t */\n\tenableExperiment(name: string) {\n\t\tconst experiment = this.getExperiment(name);\n\t\texperiment.enabled = true;\n\t}\n\n\t/**\n\t * Disables an experiment by name\n\t * @param name name of the experiment to disable\n\t */\n\tdisableExperiment(name: string) {\n\t\tconst experiment = this.getExperiment(name);\n\t\texperiment.enabled = false;\n\t}\n\n\t/**\n\t * Get the options for an experiment by name\n\t * @param name name of experiment to get\n\t */\n\tgetExperiment(name: string): Experiment {\n\t\tif (!this.experiments.has(name)) {\n\t\t\tthis.addExperiment(name);\n\t\t\treturn this.getExperiment(name);\n\t\t}\n\n\t\treturn this.experiments.get(name);\n\t}\n\n\t/**\n\t * Get an array of tuples representing an experiment and it's options\n\t */\n\tgetExperiments(): Array<[string, Experiment]> {\n\t\treturn Array.from(this.experiments.entries());\n\t}\n}\n","import { NgModule, SkipSelf, Optional } from \"@angular/core\";\nimport { ExperimentalService } from \"./experimental.service\";\n\n// either provides a new instance of ExperimentalService, or returns the parent\nexport function EXPERIMENTAL_SERVICE_PROVIDER_FACTORY(parentService: ExperimentalService) {\n\treturn parentService || new ExperimentalService();\n}\n\nexport const EXPERIMENTAL_SERVICE_PROVIDER = {\n\tprovide: ExperimentalService,\n\tdeps: [[new Optional(), new SkipSelf(), ExperimentalService]],\n\tuseFactory: EXPERIMENTAL_SERVICE_PROVIDER_FACTORY\n};\n\n@NgModule({\n\tproviders: [\n\t\tExperimentalService,\n\t\tEXPERIMENTAL_SERVICE_PROVIDER\n\t]\n})\nclass ExperimentalModule { }\n\nexport {\n\tExperimentalService,\n\tExperimentalModule\n};\n","import {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tViewChild,\n\tHostBinding\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\n\n\n/**\n * Defines the set of states for a checkbox component.\n * @export\n * @enum {number}\n */\nexport enum CheckboxState {\n\tInit,\n\tIndeterminate,\n\tChecked,\n\tUnchecked\n}\n\n/**\n * Used to emit changes performed on checkbox components.\n * @export\n * @class CheckboxChange\n */\nexport class CheckboxChange {\n\t/**\n\t * Contains the `Checkbox` that has been changed.\n\t * @type {Checkbox}\n\t * @memberof CheckboxChange\n\t */\n\tsource: Checkbox;\n\t/**\n\t * The state of the `Checkbox` encompassed in the `CheckboxChange` class.\n\t * @type {boolean}\n\t * @memberof CheckboxChange\n\t */\n\tchecked: boolean;\n}\n\n/**\n * [See demo](../../?path=/story/checkbox--basic)\n *\n * <example-url>../../iframe.html?id=checkbox--basic</example-url>\n *\n * @export\n * @class Checkbox\n * @implements {ControlValueAccessor}\n * @implements {AfterViewInit}\n */\n@Component({\n\tselector: \"ibm-checkbox\",\n\ttemplate: `\n\t\t<input\n\t\t\t#inputCheckbox\n\t\t\tclass=\"bx--checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t[id]=\"id\"\n\t\t\t[value]=\"value\"\n\t\t\t[name]=\"name\"\n\t\t\t[required]=\"required\"\n\t\t\t[checked]=\"checked\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[indeterminate]=\"indeterminate\"\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t[attr.aria-checked]=\"(indeterminate ? 'mixed' : checked)\"\n\t\t\t(change)=\"onChange($event)\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t<label\n\t\t\t[for]=\"id\"\n\t\t\tclass=\"bx--checkbox-label\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--skeleton' : skeleton\n\t\t\t}\">\n\t\t\t<span [ngClass]=\"{'bx--visually-hidden' : hideLabel}\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</span>\n\t\t</label>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Checkbox,\n\t\t\tmulti: true\n\t\t}\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Checkbox implements ControlValueAccessor, AfterViewInit {\n\t/**\n\t * Variable used for creating unique ids for checkbox components.\n\t */\n\tstatic checkboxCount = 0;\n\n\t/**\n\t * Size of the checkbox.\n\t */\n\t@Input() size: \"sm\" | \"md\" = \"md\";\n\t/**\n\t * Set to `true` for checkbox to be rendered with nested styles.\n\t */\n\t@Input() nested: boolean;\n\t/**\n\t * Set to `true` for checkbox to be rendered without any classes on the host element.\n\t */\n\t@Input() inline = false;\n\t/**\n\t * Set to `true` for a disabled checkbox.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a loading checkbox.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` to hide the checkbox labels.\n\t */\n\t@Input() hideLabel = false;\n\t/**\n\t * Sets the name attribute on the `input` element.\n\t */\n\t@Input() name: string;\n\t/**\n\t * The unique id for the checkbox component.\n\t */\n\t@Input() id = `checkbox-${Checkbox.checkboxCount}`;\n\t/**\n\t * Reflects the required attribute of the `input` element.\n\t */\n\t@Input() required: boolean;\n\t/**\n\t * Sets the value attribute on the `input` element.\n\t */\n\t@Input() value: string;\n\t/**\n\t * Used to set the `aria-label` attribute on the input element.\n\t */\n\t// tslint:disable-next-line:no-input-rename\n\t@Input(\"aria-label\") ariaLabel = \"\";\n\t/**\n\t * Used to set the `aria-labelledby` attribute on the input element.\n\t */\n\t// tslint:disable-next-line:no-input-rename\n\t@Input(\"aria-labelledby\") ariaLabelledby: string;\n\t/**\n\t * Reflects whether the checkbox state is indeterminate.\n\t * @readonly\n\t */\n\tget indeterminate() {\n\t\treturn this._indeterminate;\n\t}\n\n\t/**\n\t * Set the checkbox's indeterminate state to match the parameter and transition the view to reflect the change.\n\t */\n\t@Input() set indeterminate(indeterminate: boolean) {\n\t\tlet changed = this._indeterminate !== indeterminate;\n\t\tthis._indeterminate = indeterminate;\n\n\t\tif (changed) {\n\t\t\tthis.transitionCheckboxState(CheckboxState.Indeterminate);\n\t\t} else {\n\t\t\tthis.transitionCheckboxState(this.checked ? CheckboxState.Checked : CheckboxState.Unchecked);\n\t\t}\n\n\t\tthis.indeterminateChange.emit(this._indeterminate);\n\t}\n\n\t/**\n\t * Returns value `true` if state is selected for the checkbox.\n\t * @readonly\n\t */\n\tget checked() {\n\t\treturn this._checked;\n\t}\n\n\t/**\n\t * Updating the state of a checkbox to match the state of the parameter passed in.\n\t */\n\t@Input() set checked (checked: boolean) {\n\t\tif (checked !== this.checked) {\n\t\t\tif (this._indeterminate) {\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tthis._indeterminate = false;\n\t\t\t\t\tthis.indeterminateChange.emit(this._indeterminate);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._checked = checked;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\t@HostBinding(\"class.bx--checkbox-wrapper\") get checkboxWrapperClass() {\n\t\treturn !this.inline;\n\t}\n\t@HostBinding(\"class.bx--form-item\") get formItemClass() {\n\t\treturn !this.inline;\n\t}\n\n\t/**\n\t * Emits event notifying other classes when a change in state occurs on a checkbox after a\n\t * click.\n\t */\n\t@Output() change = new EventEmitter<CheckboxChange>();\n\t/**\n\t * Emits event notifying other classes when a change in state occurs specifically\n\t * on an indeterminate checkbox.\n\t */\n\t@Output() indeterminateChange = new EventEmitter<boolean>();\n\n\t/**\n\t * Set to `true` if the input checkbox is selected (or checked).\n\t */\n\t_checked = false;\n\t/**\n\t * Set to `true` if the input checkbox is in state indeterminate.\n\t */\n\t_indeterminate = false;\n\n\tcurrentCheckboxState: CheckboxState = CheckboxState.Init;\n\n\t/**\n\t * Maintains a reference to the view DOM element of the `Checkbox`.\n\t */\n\t@ViewChild(\"inputCheckbox\") inputCheckbox: ElementRef;\n\n\t/**\n\t * Creates an instance of `Checkbox`.\n\t * @param {ChangeDetectorRef} changeDetectorRef\n\t * @memberof Checkbox\n\t */\n\tconstructor(protected changeDetectorRef: ChangeDetectorRef) {\n\t\tCheckbox.checkboxCount++;\n\t}\n\n\t/**\n\t * Toggle the selected state of the checkbox.\n\t * @memberof Checkbox\n\t */\n\tpublic toggle() {\n\t\tthis.checked = !this.checked;\n\t}\n\n\t// this is the initial value set to the component\n\tpublic writeValue(value: any) {\n\t\tthis.checked = !!value;\n\t}\n\n\t/**\n\t * Sets a method in order to propagate changes back to the form.\n\t * @param {any} fn\n\t * @memberof Checkbox\n\t */\n\tpublic registerOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registers a callback to be triggered when the control has been touched.\n\t * @param fn Callback to be triggered when the checkbox is touched.\n\t */\n\tpublic registerOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/**\n\t * Executes on the event of a change within `Checkbox` to block propagation.\n\t * @param {any} event\n\t * @memberof Checkbox\n\t */\n\tonChange(event) {\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * Handles click events on the `Checkbox` and emits changes to other classes.\n\t * @param {any} event\n\t * @memberof Checkbox\n\t */\n\tonClick(event) {\n\t\tif (!this.disabled) {\n\t\t\tthis.toggle();\n\t\t\tthis.transitionCheckboxState(this._checked ? CheckboxState.Checked : CheckboxState.Unchecked);\n\t\t\tthis.emitChangeEvent();\n\t\t}\n\t}\n\n\n\t/**\n\t * Called when checkbox is blurred. Needed to properly implement `ControlValueAccessor`.\n\t * @memberof Checkbox\n\t */\n\tonTouched: () => any = () => {};\n\n\t/**\n\t * Handles changes between checkbox states.\n\t * @param {CheckboxState} newState\n\t * @returns {null}\n\t * @memberof Checkbox\n\t */\n\ttransitionCheckboxState(newState: CheckboxState) {\n\t\tlet oldState = this.currentCheckboxState;\n\n\t\t// Indeterminate has to be set always if it's transitioned to\n\t\t// checked has to be set before indeterminate or it overrides\n\t\t// indeterminate's dash\n\t\tif (newState === CheckboxState.Indeterminate) {\n\t\t\tthis.checked = false;\n\t\t\tthis.inputCheckbox.nativeElement.indeterminate = true;\n\t\t}\n\n\t\tif (oldState === newState) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.currentCheckboxState = newState;\n\t}\n\n\t/**\n\t * Creates instance of `CheckboxChange` used to propagate the change event.\n\t * @memberof Checkbox\n\t */\n\temitChangeEvent() {\n\t\tlet event = new CheckboxChange();\n\t\tevent.source = this;\n\t\tevent.checked = this.checked;\n\n\t\tthis.propagateChange(this.checked);\n\t\tthis.change.emit(event);\n\t}\n\n\t/**\n\t * Updates the checkbox if it is in the indeterminate state.\n\t * @memberof Checkbox\n\t */\n\tngAfterViewInit() {\n\t\tif (this.indeterminate) {\n\t\t\tthis.inputCheckbox.nativeElement.indeterminate = true;\n\t\t\tthis.checked = false;\n\t\t}\n\t}\n\n\t/**\n\t * Method set in `registerOnChange` to propagate changes back to the form.\n\t * @memberof Checkbox\n\t */\n\tpropagateChange = (_: any) => {};\n}\n","import { Component, HostListener, ElementRef, AfterViewInit } from \"@angular/core\";\nimport { Dialog } from \"../dialog.component\";\nimport { position } from \"@carbon/utils-position\";\nimport { isFocusInLastItem, isFocusInFirstItem } from \"./../../common/tab.service\";\nimport { I18n } from \"./../../i18n/i18n.module\";\nimport { ExperimentalService } from \"./../../experimental.module\";\n\n/**\n * Extend the `Dialog` component to create an overflow menu.\n *\n * Not used directly. See overflow-menu.component and overflow-menu.directive for more\n */\n@Component({\n\tselector: \"ibm-overflow-menu-pane\",\n\ttemplate: `\n\t\t<ul\n\t\t\t[attr.aria-label]=\"dialogConfig.menuLabel\"\n\t\t\t[ngClass]=\"{'bx--overflow-menu--flip': dialogConfig.flip}\"\n\t\t\trole=\"menu\"\n\t\t\t#dialog\n\t\t\tclass=\"bx--overflow-menu-options bx--overflow-menu-options--open\"\n\t\t\trole=\"menu\"\n\t\t\t(click)=\"doClose()\"\n\t\t\t[attr.aria-label]=\"dialogConfig.menuLabel\">\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"dialogConfig.content\"\n\t\t\t\t[ngTemplateOutletContext]=\"{overflowMenu: this}\">\n\t\t\t</ng-template>\n\t\t</ul>\n\t`\n})\nexport class OverflowMenuPane extends Dialog implements AfterViewInit {\n\tconstructor(protected elementRef: ElementRef, protected i18n: I18n, protected experimental: ExperimentalService) {\n\t\tsuper(elementRef);\n\t}\n\n\tonDialogInit() {\n\t\tthis.addGap[\"bottom\"] = pos => {\n\t\t\tlet offset;\n\t\t\tif (this.experimental.isExperimental) {\n\t\t\t\t/*\n\t\t\t\t* 16 is half the width of the overflow menu trigger element.\n\t\t\t\t* we also move the element by half of it's own width, since\n\t\t\t\t* position service will try and center everything\n\t\t\t\t*/\n\t\t\t\toffset = Math.round(this.dialog.nativeElement.offsetWidth / 2) - 16;\n\t\t\t} else {\n\t\t\t\t// 60 shifts the menu right to align the arrow.\n\t\t\t\toffset = 60;\n\t\t\t}\n\t\t\tif (this.dialogConfig.flip) {\n\t\t\t\treturn position.addOffset(pos, 0, -offset);\n\t\t\t}\n\t\t\treturn position.addOffset(pos, 0, offset);\n\t\t};\n\n\t\tif (!this.dialogConfig.menuLabel) {\n\t\t\tthis.dialogConfig.menuLabel = this.i18n.get().OVERFLOW_MENU.OVERFLOW;\n\t\t}\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(event: KeyboardEvent) {\n\t\tconst listItems = this.listItems();\n\n\t\tswitch (event.key) {\n\t\t\tcase \"Down\": // IE specific value\n\t\t\tcase \"ArrowDown\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInLastItem(event, listItems)) {\n\t\t\t\t\tconst index = listItems.findIndex(item => item === event.target);\n\t\t\t\t\tlistItems[index + 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tlistItems[0].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Up\": // IE specific value\n\t\t\tcase \"ArrowUp\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInFirstItem(event, listItems)) {\n\t\t\t\t\tconst index = listItems.findIndex(item => item === event.target);\n\t\t\t\t\tlistItems[index - 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tlistItems[listItems.length - 1].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlistItems[0].focus();\n\t\t\t\tbreak;\n\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tlistItems[listItems.length - 1].focus();\n\t\t\t\tbreak;\n\n\t\t\tcase \"Esc\": // IE specific value\n\t\t\tcase \"Escape\":\n\t\t\tcase \"Tab\":\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.doClose();\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t}\n\n\tafterDialogViewInit() {\n\t\tconst focusElementList = this.listItems();\n\t\tfocusElementList.forEach(button => {\n\t\t\t// Allows user to set tabindex to 0.\n\t\t\tif (button.getAttribute(\"tabindex\") === null) {\n\t\t\t\tbutton.tabIndex = -1;\n\t\t\t}\n\t\t});\n\t\tfocusElementList[0].tabIndex = 0;\n\t\tfocusElementList[0].focus();\n\t}\n\n\tprotected listItems() {\n\t\tconst selector = \".bx--overflow-menu-options__option:not([disabled]) .bx--overflow-menu-options__btn\";\n\t\treturn Array.from<HTMLElement>(this.elementRef.nativeElement.querySelectorAll(selector));\n\t}\n}\n","import {\n\tDirective,\n\tElementRef,\n\tViewContainerRef,\n\tInput,\n\tTemplateRef,\n\tHostListener\n} from \"@angular/core\";\nimport { DialogDirective } from \"./../dialog.directive\";\nimport { DialogService } from \"./../dialog.service\";\nimport { OverflowMenuPane } from \"./overflow-menu-pane.component\";\n\n\n/**\n * Directive for extending `Dialog` to create overflow menus.\n *\n * class: OverflowMenuDirective (extends DialogDirective)\n *\n *\n * selector: `ibmOverflowMenu`\n *\n *\n * ```html\n * <div [ibmOverflowMenu]=\"templateRef\"></div>\n * <ng-template #templateRef>\n * \t<!-- overflow menu options here -->\n * </ng-template>\n * ```\n */\n@Directive({\n\tselector: \"[ibmOverflowMenu]\",\n\texportAs: \"ibmOverflowMenu\",\n\tproviders: [\n\t\tDialogService\n\t]\n})\nexport class OverflowMenuDirective extends DialogDirective {\n\t/**\n\t * Takes a template ref of `OverflowMenuOptions`s\n\t */\n\t@Input() ibmOverflowMenu: TemplateRef<any>;\n\t/**\n\t * Controls wether the overflow menu is flipped\n\t */\n\t@Input() flip = false;\n\n\t/**\n\t * Creates an instance of `OverflowMenuDirective`.\n\t */\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected viewContainerRef: ViewContainerRef,\n\t\tprotected dialogService: DialogService\n\t) {\n\t\tsuper(elementRef, viewContainerRef, dialogService);\n\t\tdialogService.create(OverflowMenuPane);\n\t}\n\n\tonDialogInit() {\n\t\tthis.dialogConfig.content = this.ibmOverflowMenu;\n\t\tthis.dialogConfig.flip = this.flip;\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(event: KeyboardEvent) {\n\t\tswitch (event.key) {\n\t\t\tcase \"Enter\":\n\t\t\tcase \" \":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.toggle();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tElementRef,\n\tInput,\n\tViewEncapsulation,\n\tContentChild\n} from \"@angular/core\";\nimport { I18n } from \"./../../i18n/i18n.module\";\nimport { OverflowMenuDirective } from \"./overflow-menu.directive\";\n\n/**\n * The OverFlow menu component encapsulates the OverFlowMenu directive, and the menu iconography into one convienent component\n *\n * [See demo](../../?path=/story/overflow-menu--basic)\n *\n * html:\n * ```\n * <ibm-overflow-menu>\n *\t<ibm-overflow-menu-option>Option 1</ibm-overflow-menu-option>\n *\t<ibm-overflow-menu-option>Option 2</ibm-overflow-menu-option>\n * </ibm-overflow-menu>\n * ```\n *\n * <example-url>../../iframe.html?id=overflow-menu--basic</example-url>\n *\n * @export\n * @class OverflowMenu\n */\n@Component({\n\tselector: \"ibm-overflow-menu\",\n\ttemplate: `\n\t\t<div\n\t\t\t[ibmOverflowMenu]=\"options\"\n\t\t\t[ngClass]=\"{'bx--overflow-menu--open': open}\"\n\t\t\t[attr.aria-label]=\"buttonLabel\"\n\t\t\t[flip]=\"flip\"\n\t\t\t(onOpen)=\"open = true\"\n\t\t\t(onClose)=\"open = false\"\n\t\t\trole=\"button\"\n\t\t\taria-haspopup=\"true\"\n\t\t\tclass=\"bx--overflow-menu\"\n\t\t\tplacement=\"bottom\"\n\t\t\ttabindex=\"0\">\n\t\t\t<svg focusable=\"false\" class=\"bx--overflow-menu__icon\" width=\"3\" height=\"15\" viewBox=\"0 0 3 15\">\n\t\t\t\t<g fill-rule=\"evenodd\">\n\t\t\t\t\t<circle cx=\"1.5\" cy=\"1.5\" r=\"1.5\" />\n\t\t\t\t\t<circle cx=\"1.5\" cy=\"7.5\" r=\"1.5\" />\n\t\t\t\t\t<circle cx=\"1.5\" cy=\"13.5\" r=\"1.5\" />\n\t\t\t\t</g>\n\t\t\t</svg>\n\t\t</div>\n\t\t<ng-template #options>\n\t\t\t<ng-content></ng-content>\n\t\t</ng-template>\n\t`,\n\tstyles: [`\n\t\t.bx--overflow-menu--open {\n\t\t\topacity: 1\n\t\t}\n\n\t\t/*\n\t\tRotate the overflow menu container as well as the icon, since\n\t\twe calculate our menu position based on the container, not the icon.\n\t\t*/\n\t\t.bx--data-table-v2 .bx--overflow-menu {\n\t\t\ttransform: rotate(90deg);\n\t\t}\n\n\t\t.bx--data-table-v2 .bx--overflow-menu__icon {\n\t\t\ttransform: rotate(180deg);\n\t\t}\n\t`],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class OverflowMenu {\n\n\t@Input() buttonLabel = this.i18n.get().OVERFLOW_MENU.OVERFLOW;\n\n\t@Input() flip = false;\n\n\t@ContentChild(OverflowMenuDirective) overflowMenuDirective: OverflowMenuDirective;\n\n\topen = false;\n\n\tconstructor(protected elementRef: ElementRef, protected i18n: I18n) {}\n}\n","import {\n\tHostBinding,\n\tComponent,\n\tInput,\n\tElementRef,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit\n} from \"@angular/core\";\n\n/**\n * `OverflowMenuOption` represents a single option in an overflow menu\n *\n * Presently it has three possible states - normal, disabled, and danger:\n * ```\n * <ibm-overflow-menu-option>Simple option</ibm-overflow-menu-option>\n * <ibm-overflow-menu-option disabled=\"true\">Disabled</ibm-overflow-menu-option>\n * <ibm-overflow-menu-option type=\"danger\">Danger option</ibm-overflow-menu-option>\n * ```\n *\n * For content that expands beyond the overflow menu `OverflowMenuOption` automatically adds a title attribute.\n */\n@Component({\n\tselector: \"ibm-overflow-menu-option\",\n\ttemplate: `\n\t\t<button\n\t\t\t*ngIf=\"!href\"\n\t\t\tclass=\"bx--overflow-menu-options__btn\"\n\t\t\trole=\"menuitem\"\n\t\t\t[tabindex]=\"tabIndex\"\n\t\t\t(focus)=\"onFocus()\"\n\t\t\t(blur)=\"onBlur()\"\n\t\t\t(click)=\"onClick()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[attr.title]=\"title\">\n\t\t\t<ng-container *ngTemplateOutlet=\"tempOutlet\"></ng-container>\n\t\t</button>\n\n\t\t<a\n\t\t\t*ngIf=\"href\"\n\t\t\tclass=\"bx--overflow-menu-options__btn\"\n\t\t\trole=\"menuitem\"\n\t\t\t[tabindex]=\"tabIndex\"\n\t\t\t(focus)=\"onFocus()\"\n\t\t\t(blur)=\"onBlur()\"\n\t\t\t(click)=\"onClick()\"\n\t\t\t[attr.disabled]=\"disabled\"\n\t\t\t[href]=\"href\"\n\t\t\t[attr.title]=\"title\">\n\t\t\t<ng-container *ngTemplateOutlet=\"tempOutlet\"></ng-container>\n\t\t</a>\n\n\t\t<ng-template #tempOutlet>\n\t\t\t<div class=\"bx--overflow-menu-options__option-content\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</ng-template>\n\t`\n})\nexport class OverflowMenuOption implements AfterViewInit {\n\t@HostBinding(\"class\") optionClass = \"bx--overflow-menu-options__option\";\n\t@HostBinding(\"attr.role\") role = \"presentation\";\n\n\t@HostBinding(\"class.bx--overflow-menu-options__option--danger\")\n\tpublic get isDanger(): Boolean {\n\t\treturn this.type === \"danger\";\n\t}\n\n\t@HostBinding(\"class.bx--overflow-menu-options__option--disabled\")\n\tpublic get isDisabled(): Boolean {\n\t\treturn this.disabled;\n\t}\n\t/**\n\t * toggles between `normal` and `danger` states\n\t */\n\t@Input() type: \"normal\" | \"danger\" = \"normal\";\n\t/**\n\t * disable/enable interactions\n\t */\n\t@Input() disabled = false;\n\n\t@Input() href: string;\n\n\t@Output() selected: EventEmitter<any> = new EventEmitter();\n\n\tpublic tabIndex = -1;\n\t// note: title must be a real attribute (i.e. not a getter) as of Angular@6 due to\n\t// change after checked errors\n\tpublic title = null;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tonClick() {\n\t\tthis.selected.emit();\n\t}\n\n\tonFocus() {\n\t\tsetTimeout(() => this.tabIndex = 0);\n\t}\n\n\tonBlur() {\n\t\tsetTimeout(() => this.tabIndex = -1);\n\t}\n\n\tngAfterViewInit() {\n\t\tconst button = this.elementRef.nativeElement.querySelector(\"button, a\");\n\t\tif (button.scrollWidth > button.offsetWidth) {\n\t\t\tthis.title = button.textContent;\n\t\t}\n\t}\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { DialogService } from \"./dialog.service\";\nimport { Dialog } from \"./dialog.component\";\nimport { DialogDirective } from \"./dialog.directive\";\nimport { DialogPlaceholder } from \"./dialog-placeholder.component\";\n\nimport { Tooltip } from \"./tooltip/tooltip.component\";\nimport { TooltipDefinition } from \"./tooltip/tooltip-definition.component\";\nimport { TooltipIcon } from \"./tooltip/tooltip-icon.component\";\nimport { TooltipDirective } from \"./tooltip/tooltip.directive\";\nimport { EllipsisTooltip } from \"./tooltip/ellipsis-tooltip.directive\";\n\nimport { OverflowMenu } from \"./overflow-menu/overflow-menu.component\";\nimport { OverflowMenuPane } from \"./overflow-menu/overflow-menu-pane.component\";\nimport { OverflowMenuDirective } from \"./overflow-menu/overflow-menu.directive\";\nimport { OverflowMenuOption } from \"./overflow-menu/overflow-menu-option.component\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { PlaceholderModule } from \"./../placeholder/placeholder.module\";\nimport { ExperimentalModule } from \"./../experimental.module\";\n\n// exports\nexport { DialogService } from \"./dialog.service\";\nexport { Dialog } from \"./dialog.component\";\nexport { DialogDirective } from \"./dialog.directive\";\nexport { DialogPlaceholder } from \"./dialog-placeholder.component\";\n\nexport { Tooltip } from \"./tooltip/tooltip.component\";\nexport { TooltipDefinition } from \"./tooltip/tooltip-definition.component\";\nexport { TooltipIcon } from \"./tooltip/tooltip-icon.component\";\nexport { TooltipDirective } from \"./tooltip/tooltip.directive\";\nexport { EllipsisTooltip } from \"./tooltip/ellipsis-tooltip.directive\";\n\nexport { OverflowMenu } from \"./overflow-menu/overflow-menu.component\";\nexport { OverflowMenuPane } from \"./overflow-menu/overflow-menu-pane.component\";\nexport { OverflowMenuDirective } from \"./overflow-menu/overflow-menu.directive\";\nexport { OverflowMenuOption } from \"./overflow-menu/overflow-menu-option.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tDialog,\n\t\tTooltip,\n\t\tTooltipDefinition,\n\t\tTooltipIcon,\n\t\tOverflowMenu,\n\t\tOverflowMenuPane,\n\t\tDialogDirective,\n\t\tTooltipDirective,\n\t\tEllipsisTooltip,\n\t\tOverflowMenuDirective,\n\t\tOverflowMenuOption,\n\t\tDialogPlaceholder\n\t],\n\texports: [\n\t\tDialog,\n\t\tTooltip,\n\t\tTooltipDefinition,\n\t\tTooltipIcon,\n\t\tOverflowMenu,\n\t\tOverflowMenuPane,\n\t\tDialogDirective,\n\t\tTooltipDirective,\n\t\tEllipsisTooltip,\n\t\tOverflowMenuDirective,\n\t\tOverflowMenuOption,\n\t\tDialogPlaceholder\n\t],\n\tproviders: [ DialogService ],\n\tentryComponents: [\n\t\tDialog,\n\t\tTooltip,\n\t\tOverflowMenuPane\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tPlaceholderModule,\n\t\tExperimentalModule\n\t]\n})\nexport class DialogModule {}\n","import {\n\tComponent,\n\tHostBinding,\n\tInput\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-breadcrumb-item\",\n\ttemplate: `\n\t<a\n\t\tclass=\"bx--link\"\n\t\thref=\"{{skeleton ? '/#' : href}}\"\n\t\t[attr.aria-current]=\"(current ? ariaCurrent : null)\"\n\t\t*ngIf=\"skeleton || href; else content\">\n\t\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t</a>\n\t<ng-template #content>\n\t\t<ng-content></ng-content>\n\t</ng-template>`\n})\nexport class BreadcrumbItemComponent {\n\t@Input() href: string;\n\n\t@Input() skeleton = false;\n\n\t@Input() ariaCurrent = \"page\";\n\n\t@HostBinding(\"class.bx--breadcrumb-item--current\") @Input() current = false;\n\n\t@HostBinding(\"class.bx--breadcrumb-item\") itemClass = true;\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tTemplateRef\n} from \"@angular/core\";\n\nimport { BreadcrumbItem } from \"./breadcrumb-item.interface\";\nimport { BreadcrumbItemComponent } from \"./breadcrumb-item.component\";\n\nconst MINIMUM_OVERFLOW_THRESHOLD = 4;\n\n/**\n * [See demo](../../?path=/story/breadcrumb--basic)\n *\n * <example-url>../../iframe.html?id=breadcrumb--basic</example-url>\n *\n * @export\n * @class Breadcrumb\n * @implements {AfterContentInit}\n */\n@Component({\n\tselector: \"ibm-breadcrumb\",\n\ttemplate: `\n\t<nav #nav class=\"bx--breadcrumb\"\n\t\t[ngClass]=\"{\n\t\t\t'bx--skeleton' : skeleton,\n\t\t\t'bx--breadcrumb--no-trailing-slash' : noTrailingSlash\n\t\t}\"\n\t\t[attr.aria-label]=\"ariaLabel\">\n\t\t<ng-template [ngIf]=\"shouldShowContent\">\n\t\t\t<ng-content></ng-content>\n\t\t</ng-template>\n\t\t<ng-template [ngIf]=\"!shouldShowOverflow\">\n\t\t\t<ibm-breadcrumb-item\n\t\t\t\t*ngFor=\"let item of items\"\n\t\t\t\t[href]=\"item.href\"\n\t\t\t\t[current]=\"item.current\"\n\t\t\t\t[ariaCurrent]=\"item.ariaCurrent\">\n\t\t\t\t<ng-container *ngIf=\"!item.template\">{{item.content}}</ng-container>\n\t\t\t\t<ng-template\n\t\t\t\t\t*ngIf=\"item.template\"\n\t\t\t\t\t[ngTemplateOutlet]=\"item.template\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: item }\">\n\t\t\t\t</ng-template>\n\t\t\t</ibm-breadcrumb-item>\n\t\t</ng-template>\n\t\t<ng-template [ngIf]=\"shouldShowOverflow\">\n\t\t\t<ibm-breadcrumb-item\n\t\t\t\t[href]=\"first?.href\"\n\t\t\t\t[current]=\"first?.current\"\n\t\t\t\t[ariaCurrent]=\"first?.ariaCurrent\">\n\t\t\t\t<ng-container *ngIf=\"!first?.template\">{{first?.content}}</ng-container>\n\t\t\t\t<ng-template\n\t\t\t\t\t*ngIf=\"first?.template\"\n\t\t\t\t\t[ngTemplateOutlet]=\"first?.template\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: first }\">\n\t\t\t\t</ng-template>\n\t\t\t</ibm-breadcrumb-item>\n\t\t\t<ibm-breadcrumb-item>\n\t\t\t\t<ibm-overflow-menu>\n\t\t\t\t\t<li class=\"bx--overflow-menu-options__option\"\n\t\t\t\t\t\t*ngFor=\"let item of overflowItems\">\n\t\t\t\t\t\t<a class=\"bx--overflow-menu-options__btn\"\n\t\t\t\t\t\t\thref=\"{{item?.href}}\"\n\t\t\t\t\t\t\tstyle=\"text-decoration: none;\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!item?.template\">{{item?.content}}</ng-container>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t*ngIf=\"item?.template\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"item?.template\"\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: item }\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ibm-overflow-menu>\n\t\t\t</ibm-breadcrumb-item>\n\t\t\t<ibm-breadcrumb-item\n\t\t\t\t[href]=\"secondLast?.href\"\n\t\t\t\t[current]=\"secondLast?.current\"\n\t\t\t\t[ariaCurrent]=\"secondLast?.ariaCurrent\">\n\t\t\t\t<ng-container *ngIf=\"!secondLast?.template\">{{secondLast?.content}}</ng-container>\n\t\t\t\t<ng-template\n\t\t\t\t\t*ngIf=\"secondLast?.template\"\n\t\t\t\t\t[ngTemplateOutlet]=\"secondLast?.template\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: secondLast }\">\n\t\t\t\t</ng-template>\n\t\t\t</ibm-breadcrumb-item>\n\t\t\t<ibm-breadcrumb-item\n\t\t\t\t[href]=\"last?.href\"\n\t\t\t\t[current]=\"last?.current\"\n\t\t\t\t[ariaCurrent]=\"last?.ariaCurrent\">\n\t\t\t\t<ng-container *ngIf=\"!last?.template\">{{last?.content}}</ng-container>\n\t\t\t\t<ng-template\n\t\t\t\t\t*ngIf=\"last?.template\"\n\t\t\t\t\t[ngTemplateOutlet]=\"last?.template\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: last }\">\n\t\t\t\t</ng-template>\n\t\t\t</ibm-breadcrumb-item>\n\t\t</ng-template>\n\t</nav>`\n})\nexport class Breadcrumb implements AfterContentInit {\n\t@ContentChildren(BreadcrumbItemComponent) children: QueryList<BreadcrumbItemComponent>;\n\n\t@Input() items: Array<BreadcrumbItem>;\n\n\t@Input() noTrailingSlash = false;\n\n\t@Input() ariaLabel: string;\n\n\tprotected _threshold: number;\n\tprotected _skeleton = false;\n\n\t@Input()\n\tset skeleton(value: any) {\n\t\tthis._skeleton = value;\n\t\tthis.updateChildren();\n\t}\n\n\tget skeleton(): any {\n\t\treturn this._skeleton;\n\t}\n\n\t@Input()\n\tset threshold(threshold: number) {\n\t\tthis._threshold = threshold;\n\t\tif (isNaN(threshold) || threshold < MINIMUM_OVERFLOW_THRESHOLD) {\n\t\t\tthis._threshold = MINIMUM_OVERFLOW_THRESHOLD;\n\t\t}\n\t}\n\n\tget threshold(): number {\n\t\treturn this._threshold;\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.updateChildren();\n\t}\n\n\tget shouldShowContent(): boolean {\n\t\treturn !this.items;\n\t}\n\n\tget shouldShowOverflow(): boolean {\n\t\tif (!this.items) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.items.length > this.threshold;\n\t}\n\n\tget first(): BreadcrumbItem {\n\t\treturn this.shouldShowOverflow ? this.items[0] : null;\n\t}\n\n\tget overflowItems(): Array<BreadcrumbItem> {\n\t\treturn this.shouldShowOverflow ? this.items.slice(1, this.items.length - 2) : [];\n\t}\n\n\tget secondLast(): BreadcrumbItem {\n\t\treturn this.shouldShowOverflow ? this.items[this.items.length - 2] : null;\n\t}\n\n\tget last(): BreadcrumbItem {\n\t\treturn this.shouldShowOverflow ? this.items[this.items.length - 1] : null;\n\t}\n\n\tprotected updateChildren() {\n\t\tif (this.children) {\n\t\t\tthis.children.toArray().forEach(child => child.skeleton = this.skeleton);\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { DialogModule } from \"../dialog/dialog.module\";\n\nimport { Breadcrumb } from \"./breadcrumb.component\";\nimport { BreadcrumbItemComponent } from \"./breadcrumb-item.component\";\n\nexport { Breadcrumb } from \"./breadcrumb.component\";\nexport { BreadcrumbItemComponent } from \"./breadcrumb-item.component\";\nexport { BreadcrumbItem } from \"./breadcrumb-item.interface\";\n\n@NgModule({\n\tdeclarations: [\n\t\tBreadcrumb,\n\t\tBreadcrumbItemComponent\n\t],\n\texports: [\n\t\tBreadcrumb,\n\t\tBreadcrumbItemComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tDialogModule\n\t]\n})\nexport class BreadcrumbModule { }\n","import {\n\tDirective,\n\tHostBinding,\n\tInput,\n\tOnInit\n} from \"@angular/core\";\n\n/**\n * A convinence directive for applying styling to a button.\n *\n * [See demo](../../?path=/story/button--basic)\n *\n * Example:\n *\n * ```html\n * <button ibmButton>A button</button>\n * <button ibmButton=\"secondary\">A secondary button</button>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/button/code) for more detail.\n *\n * <example-url>../../iframe.html?id=button--basic</example-url>\n */\n@Directive({\n\tselector: \"[ibmButton]\"\n})\nexport class Button implements OnInit {\n\t/**\n\t * sets the button type\n\t */\n\t@Input() ibmButton: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"danger\" | \"danger--primary\" | \"toolbar-action\" = \"primary\";\n\t/**\n\t * Specify the size of the button\n\t */\n\t@Input() size: \"normal\" | \"sm\" = \"normal\";\n\t// a whole lot of HostBindings ... this way we don't have to touch the elementRef directly\n\t@HostBinding(\"class.bx--btn\") get baseClass() {\n\t\treturn !this.toolbarAction;\n\t}\n\t@HostBinding(\"class.bx--btn--primary\") primary = true;\n\t@HostBinding(\"class.bx--btn--secondary\") secondary = false;\n\t@HostBinding(\"class.bx--btn--tertiary\") tertiary = false;\n\t@HostBinding(\"class.bx--btn--ghost\") ghost = false;\n\t@HostBinding(\"class.bx--btn--danger\") danger = false;\n\t@HostBinding(\"class.bx--btn--danger--primary\") dangerPrimary = false;\n\t@HostBinding(\"class.bx--skeleton\") @Input() skeleton = false;\n\t@HostBinding(\"class.bx--btn--sm\") smallSize = false;\n\t@HostBinding(\"class.bx--toolbar-action\") toolbarAction = false;\n\t@HostBinding(\"class.bx--overflow-menu\") overflowMenu = false;\n\n\tngOnInit() {\n\t\tif (this.size === \"sm\") {\n\t\t\tthis.smallSize = true;\n\t\t}\n\t\tthis.primary = false;\n\t\tswitch (this.ibmButton) {\n\t\t\tcase \"primary\": this.primary = true; break;\n\t\t\tcase \"secondary\": this.secondary = true; break;\n\t\t\tcase \"tertiary\": this.tertiary = true; break;\n\t\t\tcase \"ghost\": this.ghost = true; break;\n\t\t\tcase \"danger\": this.danger = true; break;\n\t\t\tcase \"danger--primary\": this.dangerPrimary = true; break;\n\t\t\tcase \"toolbar-action\":\n\t\t\t\tthis.toolbarAction = true;\n\t\t\t\tthis.overflowMenu = true;\n\t\t\t\tbreak;\n\t\t\tdefault: this.primary = true; break;\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Button } from \"./button.directive\";\n\nexport { Button } from \"./button.directive\";\n\n@NgModule({\n\tdeclarations: [Button],\n\texports: [Button],\n\timports: [CommonModule]\n})\nexport class ButtonModule { }\n","import {\n\tComponent,\n\tInput,\n\tHostBinding,\n\tViewChild,\n\tHostListener\n} from \"@angular/core\";\n\nimport { I18n } from \"../i18n/i18n.module\";\n\nexport enum SnippetType {\n\tsingle = \"single\",\n\tmulti = \"multi\",\n\tinline = \"inline\"\n}\n\n/**\n * [See demo](../../?path=/story/code-snippet--basic)\n *\n * ```html\n * <ibm-code-snippet>Code</ibm-code-snippet>\n * ```\n *\n * <example-url>../../iframe.html?id=code-snippet--basic</example-url>\n *\n * @export\n * @class CodeSnippet\n */\n@Component({\n\tselector: \"ibm-code-snippet\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"display === 'inline'; else notInline\">\n\t\t\t<ng-container *ngTemplateOutlet=\"codeTemplate\"></ng-container>\n\t\t\t<ng-container *ngTemplateOutlet=\"feedbackTemplate\"></ng-container>\n\t\t</ng-container>\n\n\t\t<ng-template #notInline>\n\t\t\t<div class=\"bx--snippet-container\" [attr.aria-label]=\"translations.CODE_SNIPPET_TEXT\">\n\t\t\t\t<ng-container *ngIf=\"skeleton\">\n\t\t\t\t\t<span *ngIf=\"display === 'single'; else multiSkeleton\"></span>\n\t\t\t\t\t<ng-template #multiSkeleton>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ng-container>\n\t\t\t\t<pre *ngIf=\"!skeleton\"><ng-container *ngTemplateOutlet=\"codeTemplate\"></ng-container></pre>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\tclass=\"bx--snippet-button\"\n\t\t\t\t[attr.aria-label]=\"translations.COPY_CODE\"\n\t\t\t\t(click)=\"onCopyButtonClicked()\"\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t<ibm-icon-copy16 class=\"bx--snippet__icon\"></ibm-icon-copy16>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"feedbackTemplate\"></ng-container>\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\t*ngIf=\"display === 'multi' && shouldShowExpandButton\"\n\t\t\t\tclass=\"bx--btn bx--btn--ghost bx--btn--sm bx--snippet-btn--expand\"\n\t\t\t\t(click)=\"toggleSnippetExpansion()\"\n\t\t\t\ttype=\"button\">\n\t\t\t\t<span class=\"bx--snippet-btn--text\">{{expanded ? translations.SHOW_LESS : translations.SHOW_MORE}}</span>\n\t\t\t\t<ibm-icon-chevron-down16 class=\"bx--icon-chevron--down\" [ariaLabel]=\"translations.SHOW_MORE_ICON\"></ibm-icon-chevron-down16>\n\t\t\t</button>\n\t\t</ng-template>\n\n\t\t<ng-template #codeTemplate>\n\t\t\t<code #code><ng-content></ng-content></code>\n\t\t</ng-template>\n\n\t\t<ng-template #feedbackTemplate>\n\t\t\t<div\n\t\t\tclass=\"bx--btn--copy__feedback\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--btn--copy__feedback--displayed': showFeedback\n\t\t\t}\"\n\t\t\t[attr.data-feedback]=\"feedbackText\">\n\t\t\t</div>\n\t\t</ng-template>\n\t`\n})\nexport class CodeSnippet {\n\t/**\n\t * Variable used for creating unique ids for code-snippet components.\n\t * @type {number}\n\t * @static\n\t * @memberof CodeSnippet\n\t */\n\tstatic codeSnippetCount = 0;\n\n\t/**\n\t * It can be `\"single\"`, `\"multi\"` or `\"inline\"`\n\t *\n\t * @type {SnippetType}\n\t * @memberof CodeSnippet\n\t */\n\t@Input() display: SnippetType = SnippetType.single;\n\t@Input() translations = this.i18n.get().CODE_SNIPPET;\n\n\t/**\n\t * Set to `\"light\"` to apply the light style on the code snippet.\n\t * @type {\"light\" | \"dark\"}\n\t * @memberof CodeSnippet\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t/**\n\t * Text displayed in the tooltip when user clicks button to copy code.\n\t *\n\t * @memberof CodeSnippet\n\t */\n\t@Input() feedbackText = this.translations.COPIED;\n\n\t/**\n\t * Time in miliseconds to keep the feedback tooltip displayed.\n\t *\n\t * @memberof CodeSnippet\n\t */\n\t@Input() feedbackTimeout = 2000;\n\n\t@HostBinding(\"class.bx--snippet--expand\") @Input() expanded = false;\n\t@HostBinding(\"class.bx--skeleton\") @Input() skeleton = false;\n\n\t@HostBinding(\"class.bx--snippet\") snippetClass = true;\n\t@HostBinding(\"class.bx--snippet--single\") get snippetSingleClass() {\n\t\treturn this.display === SnippetType.single;\n\t}\n\t@HostBinding(\"class.bx--snippet--multi\") get snippetMultiClass() {\n\t\treturn this.display === SnippetType.multi;\n\t}\n\t@HostBinding(\"class.bx--snippet--inline\") get snippetInlineClass() {\n\t\treturn this.display === SnippetType.inline;\n\t}\n\t@HostBinding(\"class.bx--snippet--light\") get snippetInlineLightClass() {\n\t\treturn this.display === SnippetType.inline && this.theme === \"light\";\n\t}\n\t@HostBinding(\"class.bx--btn--copy\") get btnCopyClass() {\n\t\treturn this.display === SnippetType.inline;\n\t}\n\n\t@HostBinding(\"style.display\") get displayStyle() {\n\t\treturn this.display !== SnippetType.inline ? \"block\" : null;\n\t}\n\t@HostBinding(\"attr.type\") get attrType() {\n\t\treturn this.display === SnippetType.inline ? \"button\" : null;\n\t}\n\n\t@ViewChild(\"code\") code;\n\n\tget shouldShowExpandButton() {\n\t\treturn this.code ? this.code.nativeElement.getBoundingClientRect().height > 255 : false;\n\t}\n\n\tshowFeedback = false;\n\n\t/**\n\t * Creates an instance of CodeSnippet.\n\t * @param {ChangeDetectorRef} changeDetectorRef\n\t * @param {ElementRef} elementRef\n\t * @param {Renderer2} renderer\n\t * @memberof CodeSnippet\n\t */\n\tconstructor(protected i18n: I18n) {\n\t\tCodeSnippet.codeSnippetCount++;\n\t}\n\n\ttoggleSnippetExpansion() {\n\t\tthis.expanded = !this.expanded;\n\t}\n\n\t/**\n\t * Copies the code from the `<code>` block to clipboard.\n\t *\n\t * @memberof CodeSnippet\n\t */\n\tcopyCode() {\n\t\t// create invisible, uneditable textarea with our code in it\n\t\tconst textarea = document.createElement(\"textarea\");\n\t\ttextarea.value = this.code.nativeElement.innerText || this.code.nativeElement.textContent;\n\t\ttextarea.setAttribute(\"readonly\", \"\");\n\t\ttextarea.style.position = \"absolute\";\n\t\ttextarea.style.right = \"-99999px\";\n\t\tdocument.body.appendChild(textarea);\n\n\t\t// save user selection\n\t\tconst selected = document.getSelection().rangeCount ? document.getSelection().getRangeAt(0) : null;\n\n\t\t// copy to clipboard\n\t\ttextarea.select();\n\t\tdocument.execCommand(\"copy\");\n\n\t\t// remove textarea\n\t\tdocument.body.removeChild(textarea);\n\n\t\t// restore user selection\n\t\tif (selected) {\n\t\t\tdocument.getSelection().removeAllRanges();\n\t\t\tdocument.getSelection().addRange(selected);\n\t\t}\n\t}\n\n\tonCopyButtonClicked() {\n\t\tthis.copyCode();\n\n\t\tthis.showFeedback = true;\n\n\t\tsetTimeout(() => {\n\t\t\tthis.showFeedback = false;\n\t\t}, this.feedbackTimeout);\n\t}\n\n\t/**\n\t * Inline code snippet acts as button and makes the whole component clickable.\n\t *\n\t * This handles clicks in that case.\n\t *\n\t * @returns\n\t * @memberof CodeSnippet\n\t */\n\t@HostListener(\"click\")\n\thostClick() {\n\t\tif (this.display !== SnippetType.inline) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.onCopyButtonClicked();\n\t}\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { Checkbox } from \"./checkbox.component\";\n\n// exports\nexport { Checkbox } from \"./checkbox.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tCheckbox\n\t],\n\texports: [\n\t\tCheckbox\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule\n\t]\n})\nexport class CheckboxModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Copy16 = /** @class */ (function () {\n function Copy16() {\n this.focusable = false;\n }\n Copy16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-copy16\",\n template: \"\\n <svg\\n ibmIconCopy16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Copy16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Copy16;\n}());\nexport { Copy16 };\nvar Copy16Directive = /** @class */ (function () {\n function Copy16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Copy16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M14 5v9H5V5h9m0-1H5a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z\\\"></path><path d=\\\"M2 9H1V2a1 1 0 0 1 1-1h7v1H2z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Copy16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"copy16-\" + Copy16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"copy16-\" + Copy16Directive.titleIdCounter);\n }\n };\n Copy16Directive.titleIdCounter = 0;\n Copy16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCopy16]\"\n },] },\n ];\n /** @nocollapse */\n Copy16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Copy16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Copy16Directive;\n}());\nexport { Copy16Directive };\nvar Copy16Module = /** @class */ (function () {\n function Copy16Module() {\n }\n Copy16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Copy16,\n Copy16Directive\n ],\n exports: [\n Copy16,\n Copy16Directive\n ]\n },] },\n ];\n return Copy16Module;\n}());\nexport { Copy16Module };\n//# sourceMappingURL=16.js.map","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar ChevronDown16 = /** @class */ (function () {\n function ChevronDown16() {\n this.focusable = false;\n }\n ChevronDown16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-chevron-down16\",\n template: \"\\n <svg\\n ibmIconChevronDown16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n ChevronDown16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return ChevronDown16;\n}());\nexport { ChevronDown16 };\nvar ChevronDown16Directive = /** @class */ (function () {\n function ChevronDown16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n ChevronDown16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 11L3 6l.7-.7L8 9.6l4.3-4.3.7.7z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n ChevronDown16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"chevron-down16-\" + ChevronDown16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"chevron-down16-\" + ChevronDown16Directive.titleIdCounter);\n }\n };\n ChevronDown16Directive.titleIdCounter = 0;\n ChevronDown16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconChevronDown16]\"\n },] },\n ];\n /** @nocollapse */\n ChevronDown16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n ChevronDown16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return ChevronDown16Directive;\n}());\nexport { ChevronDown16Directive };\nvar ChevronDown16Module = /** @class */ (function () {\n function ChevronDown16Module() {\n }\n ChevronDown16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n ChevronDown16,\n ChevronDown16Directive\n ],\n exports: [\n ChevronDown16,\n ChevronDown16Directive\n ]\n },] },\n ];\n return ChevronDown16Module;\n}());\nexport { ChevronDown16Module };\n//# sourceMappingURL=16.js.map","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { Copy16Module } from \"@carbon/icons-angular/lib/copy/16\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\n\nimport { I18nModule } from \"../i18n/i18n.module\";\n\n// imports\nimport { CodeSnippet } from \"./code-snippet.component\";\n\n// exports\nexport { CodeSnippet } from \"./code-snippet.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tCodeSnippet\n\t],\n\texports: [\n\t\tCodeSnippet\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tI18nModule,\n\t\tCopy16Module,\n\t\tChevronDown16Module\n\t]\n})\nexport class CodeSnippetModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Close16 = /** @class */ (function () {\n function Close16() {\n this.focusable = false;\n }\n Close16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-close16\",\n template: \"\\n <svg\\n ibmIconClose16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Close16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Close16;\n}());\nexport { Close16 };\nvar Close16Directive = /** @class */ (function () {\n function Close16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Close16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Close16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"close16-\" + Close16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"close16-\" + Close16Directive.titleIdCounter);\n }\n };\n Close16Directive.titleIdCounter = 0;\n Close16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconClose16]\"\n },] },\n ];\n /** @nocollapse */\n Close16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Close16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Close16Directive;\n}());\nexport { Close16Directive };\nvar Close16Module = /** @class */ (function () {\n function Close16Module() {\n }\n Close16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Close16,\n Close16Directive\n ],\n exports: [\n Close16,\n Close16Directive\n ]\n },] },\n ];\n return Close16Module;\n}());\nexport { Close16Module };\n//# sourceMappingURL=16.js.map","import { Input, Output, EventEmitter } from \"@angular/core\";\nimport { ListItem } from \"./list-item.interface\";\nimport { Observable } from \"rxjs\";\n\n\n/**\n * A component that intends to be used within `Dropdown` must provide an implementation that extends this base class.\n * It also must provide the base class in the `@Component` meta-data.\n * ex: `providers: [{provide: AbstractDropdownView, useExisting: forwardRef(() => MyDropdownView)}]`\n */\nexport class AbstractDropdownView {\n\t/**\n\t * The items to be displayed in the list within the `AbstractDropDownView`.\n\t */\n\t@Input() set items(value: Array<ListItem> | Observable<Array<ListItem>>) { }\n\n\tget items(): Array<ListItem> | Observable<Array<ListItem>> { return; }\n\t/**\n\t * Emits selection events to controlling classes\n\t *\n\t * Deprecated: `Object` as a valid type.\n\t */\n\t@Output() select: EventEmitter<{item: ListItem } | ListItem[] | Object>;\n\t/**\n\t * Event to suggest a blur on the view.\n\t * Emits _after_ the first/last item has been focused.\n\t * ex.\n\t * ArrowUp -> focus first item\n\t * ArrowUp -> emit event\n\t *\n\t * It's recommended that the implementing view include a specific type union of possible blurs\n\t * ex. `@Output() blurIntent = new EventEmitter<\"top\" | \"bottom\">();`\n\t */\n\t@Output() blurIntent: EventEmitter<any>;\n\t/**\n\t * Specifies whether or not the `DropdownList` supports selecting multiple items as opposed to single\n\t * item selection.\n\t */\n\tpublic type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * Specifies the render size of the items within the `AbstractDropdownView`.\n\t */\n\tpublic size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Returns the `ListItem` that is subsequent to the selected item in the `DropdownList`.\n\t */\n\tgetNextItem(): ListItem { return; }\n\t/**\n\t * Returns a boolean if the currently selected item is preceded by another\n\t */\n\thasNextElement(): boolean { return; }\n\t/**\n\t * Returns the `HTMLElement` for the item that is subsequent to the selected item.\n\t */\n\tgetNextElement(): HTMLElement { return; }\n\t/**\n\t * Returns the `ListItem` that precedes the selected item within `DropdownList`.\n\t */\n\tgetPrevItem(): ListItem { return; }\n\t/**\n\t * Returns a boolean if the currently selected item is followed by another\n\t */\n\thasPrevElement(): boolean { return; }\n\t/**\n\t * Returns the `HTMLElement` for the item that precedes the selected item.\n\t */\n\tgetPrevElement(): HTMLElement { return; }\n\t/**\n\t * Returns the selected leaf level item(s) within the `DropdownList`.\n\t */\n\tgetSelected(): ListItem[] { return; }\n\t/**\n\t * Returns the `ListItem` that is selected within `DropdownList`.\n\t */\n\tgetCurrentItem(): ListItem { return; }\n\t/**\n\t * Returns the `HTMLElement` for the item that is selected within the `DropdownList`.\n\t */\n\tgetCurrentElement(): HTMLElement { return; }\n\t/**\n\t * Guaranteed to return the current items as an Array.\n\t */\n\tgetListItems(): Array<ListItem> { return; }\n\t/**\n\t * Transforms array input list of items to the correct state by updating the selected item(s).\n\t */\n\tpropagateSelected(value: Array<ListItem>): void {}\n\t/**\n\t *\n\t * @param value value to filter the list by\n\t */\n\tfilterBy(value: string): void {}\n\t/**\n\t * Initializes focus in the list\n\t * In most cases this just calls `getCurrentElement().focus()`\n\t */\n\tinitFocus(): void {}\n}\n","import {\n\tComponent,\n\tOnChanges,\n\tContentChild,\n\tInput,\n\tOutput,\n\tHostListener,\n\tElementRef,\n\tViewChild,\n\tEventEmitter,\n\tAfterViewInit,\n\tAfterContentInit,\n\tHostBinding,\n\tTemplateRef\n} from \"@angular/core\";\nimport { AbstractDropdownView } from \"./../dropdown/abstract-dropdown-view.class\";\nimport { ListItem } from \"./../dropdown/list-item.interface\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { filter } from \"rxjs/operators\";\n\n/**\n * ComboBoxes are similar to dropdowns, except a combobox provides an input field for users to search items and (optionally) add their own.\n * Multi-select comboboxes also provide \"pills\" of selected items.\n *\n * [See demo](../../?path=/story/combobox--basic)\n *\n * <example-url>../../iframe.html?id=combobox--basic</example-url>\n *\n * @export\n * @class ComboBox\n * @implements {OnChanges}\n * @implements {AfterViewInit}\n * @implements {AfterContentInit}\n */\n@Component({\n\tselector: \"ibm-combo-box\",\n\ttemplate: `\n\t\t<label *ngIf=\"label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t</label>\n\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t</div>\n\t\t<div\n\t\t\tclass=\"bx--combo-box bx--list-box\"\n\t\t\t[ngClass]=\"{'bx--multi-select' : type === 'multi'}\">\n\t\t\t<div\n\t\t\t\t[attr.aria-expanded]=\"open\"\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"bx--list-box__field\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label=\"close menu\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t(click)=\"toggleDropdown()\">\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"type === 'multi' && pills.length > 0\"\n\t\t\t\t\t(click)=\"clearSelected()\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"bx--list-box__selection bx--list-box__selection--multi\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\ttitle=\"Clear all selected items\">\n\t\t\t\t\t{{ pills.length }}\n\t\t\t\t\t<svg\n\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t\t<input\n\t\t\t\t\t[id]=\"id\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t(keyup)=\"onSearch($event.target.value)\"\n\t\t\t\t\t[value]=\"selectedValue\"\n\t\t\t\t\tclass=\"bx--text-input\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-label=\"ListBox input field\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t[placeholder]=\"placeholder\"/>\n\t\t\t\t\t<ibm-icon-chevron-down16\n\t\t\t\t\t\t[ngClass]=\"{'bx--list-box__menu-icon--open': open}\"\n\t\t\t\t\t\tclass=\"bx--list-box__menu-icon\"\n\t\t\t\t\t\tariaLabel=\"Close menu\">\n\t\t\t\t\t</ibm-icon-chevron-down16>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\t#dropdownMenu\n\t\t\t\t*ngIf=\"open\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: ComboBox,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class ComboBox implements OnChanges, AfterViewInit, AfterContentInit {\n\tstatic comboBoxCount = 0;\n\t@Input() id = `dropdown-${ComboBox.comboBoxCount++}`;\n\t/**\n\t * List of items to fill the content with.\n\t *\n\t * **Example:**\n\t * ```javascript\n\t * items = [\n\t *\t\t{\n\t *\t\t\tcontent: \"Abacus\",\n\t *\t\t\tselected: false\n\t *\t\t},\n\t *\t\t{\n\t *\t\t\tcontent: \"Byte\",\n\t *\t\t\tselected: false,\n\t *\t\t},\n\t *\t\t{\n\t *\t\t\tcontent: \"Computer\",\n\t *\t\t\tselected: false\n\t *\t\t},\n\t *\t\t{\n\t *\t\t\tcontent: \"Digital\",\n\t *\t\t\tselected: false\n\t *\t\t}\n\t * ];\n\t * ```\n\t *\n\t */\n\t@Input() items: Array<ListItem> = [];\n\t/**\n\t * Text to show when nothing is selected.\n\t */\n\t@Input() placeholder = \"Filter...\";\n\t/**\n\t * Combo box type (supporting single or multi selection of items).\n\t */\n\t@Input() type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * Combo box render size.\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Label for the combobox.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Sets the optional helper text.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Set to `true` to disable combobox.\n\t */\n\t@HostBinding(\"attr.aria-disabled\") @Input() disabled = false;\n\t/**\n\t * Emits a ListItem\n\t *\n\t * Example:\n\t * ```javascript\n\t * {\n\t * \t\tcontent: \"one\",\n\t * \t\tselected: true\n\t * }\n\t * ```\n\t */\n\t@Output() selected = new EventEmitter<ListItem | ListItem[]>();\n\t/**\n\t * Intended to be used to add items to the list.\n\t *\n\t * Emits an event that includes the current item list, the suggested index for the new item, and a simple ListItem\n\t *\n\t * Example:\n\t * ```javascript\n\t *\t{\n\t *\t\titems: [{content: \"one\", selected: true}, {content: \"two\", selected: true}],\n\t *\t\tindex: 1,\n\t *\t\tvalue: {\n\t *\t\t\tcontent: \"some user string\",\n\t *\t\t\tselected: false\n\t *\t\t}\n\t *\t}\n\t * ```\n\t *\n\t *\n\t * Example:\n\t * ```javascript\n\t * {\n\t *\tafter: 1,\n\t *\tvalue: \"some user string\"\n\t * }\n\t * ```\n\t */\n\t@Output() submit: EventEmitter<any> = new EventEmitter<any>();\n\t/** emits an empty event when the menu is closed */\n\t@Output() close: EventEmitter<any> = new EventEmitter<any>();\n\t/** ContentChild reference to the instantiated dropdown list */\n\t@ContentChild(AbstractDropdownView) view: AbstractDropdownView;\n\t@ViewChild(\"dropdownMenu\") dropdownMenu;\n\t@HostBinding(\"class.bx--list-box__wrapper\") hostClass = true;\n\t@HostBinding(\"attr.role\") role = \"combobox\";\n\t@HostBinding(\"style.display\") display = \"block\";\n\n\tpublic open = false;\n\n\t/** Selected items for multi-select combo-boxes. */\n\tpublic pills = [];\n\t/** used to update the displayValue */\n\tpublic selectedValue = \"\";\n\n\tprotected noop = this._noop.bind(this);\n\tprotected onTouchedCallback: () => void = this._noop;\n\tprotected propagateChangeCallback: (_: any) => void = this._noop;\n\n\t/**\n\t * Creates an instance of ComboBox.\n\t */\n\tconstructor(protected elementRef: ElementRef) {}\n\n\t/**\n\t * Lifecycle hook.\n\t * Updates pills if necessary.\n\t *\n\t */\n\tngOnChanges(changes) {\n\t\tif (changes.items) {\n\t\t\tthis.view.items = changes.items.currentValue;\n\t\t\tthis.updateSelected();\n\t\t}\n\t}\n\n\t/**\n\t * Sets initial state that depends on child components\n\t * Subscribes to select events and handles focus/filtering/initial list updates\n\t */\n\tngAfterContentInit() {\n\t\tif (this.view) {\n\t\t\tthis.view.type = this.type;\n\t\t\tthis.view.select.subscribe(event => {\n\t\t\t\tif (this.type === \"multi\") {\n\t\t\t\t\tthis.updatePills();\n\t\t\t\t\tthis.propagateChangeCallback(this.view.getSelected());\n\t\t\t\t} else {\n\t\t\t\t\tif (event.item && event.item.selected) {\n\t\t\t\t\t\tthis.selectedValue = event.item.content;\n\t\t\t\t\t\tthis.propagateChangeCallback(event.item);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.selectedValue = \"\";\n\t\t\t\t\t\tthis.propagateChangeCallback(null);\n\t\t\t\t\t}\n\t\t\t\t\t// not guarding these since the nativeElement has to be loaded\n\t\t\t\t\t// for select to even fire\n\t\t\t\t\tthis.elementRef.nativeElement.querySelector(\"input\").focus();\n\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t}\n\t\t\t\tthis.selected.emit(event);\n\t\t\t\tthis.view.filterBy(\"\");\n\t\t\t});\n\t\t\tthis.view.items = this.items;\n\t\t\t// update the rest of combobox with any pre-selected items\n\t\t\t// setTimeout just defers the call to the next check cycle\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.updateSelected();\n\t\t\t});\n\n\t\t\tthis.view.blurIntent.pipe(filter(v => v === \"top\")).subscribe(() => {\n\t\t\t\tthis.elementRef.nativeElement.querySelector(\".bx--text-input\").focus();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Binds event handlers against the rendered view\n\t */\n\tngAfterViewInit() {\n\t\tdocument.addEventListener(\"click\", ev => {\n\t\t\tif (!this.elementRef.nativeElement.contains(ev.target)) {\n\t\t\t\tif (this.open) {\n\t\t\t\t\tthis.closeDropdown();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Handles `Escape` key closing the dropdown, and arrow up/down focus to/from the dropdown list.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(ev: KeyboardEvent) {\n\t\tif (ev.key === \"Escape\") {\n\t\t\tthis.closeDropdown();\n\t\t} else if ((ev.key === \"ArrowDown\" || ev.key === \"Down\") // `\"Down\"` is IE specific value\n\t\t\t&& (!this.dropdownMenu || !this.dropdownMenu.nativeElement.contains(ev.target))) {\n\t\t\tev.stopPropagation();\n\t\t\tthis.openDropdown();\n\t\t\tsetTimeout(() => this.view.getCurrentElement().focus(), 0);\n\t\t}\n\t}\n\n\t/*\n\t * no-op method for null event listeners, and other no op calls\n\t */\n\t_noop() {}\n\n\t/*\n\t * propagates the value provided from ngModel\n\t */\n\twriteValue(value: any) {\n\t\tif (value) {\n\t\t\tif (this.type === \"single\") {\n\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t} else {\n\t\t\t\tthis.view.propagateSelected(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.onTouchedCallback();\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChangeCallback = fn;\n\t}\n\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedCallback = fn;\n\t}\n\n\t/**\n\t * Called by `n-pill-input` when the selected pills have changed.\n\t */\n\tpublic updatePills() {\n\t\tthis.pills = this.view.getSelected() || [];\n\t\tthis.propagateChangeCallback(this.view.getSelected());\n\t}\n\n\tpublic clearSelected() {\n\t\tthis.items = this.items.map(item => {\n\t\t\tif (!item.disabled) {\n\t\t\t\titem.selected = false;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t\tthis.view.items = this.items;\n\t\tthis.updatePills();\n\t\t// clearSelected can only fire on type=multi\n\t\t// so we just emit getSelected() (just in case there's any disabled but selected items)\n\t\tthis.selected.emit(this.view.getSelected() as any);\n\t}\n\n\t/**\n\t * Closes the dropdown and emits the close event.\n\t */\n\tpublic closeDropdown() {\n\t\tthis.open = false;\n\t\tthis.close.emit();\n\t}\n\n\t/**\n\t * Opens the dropdown.\n\t */\n\tpublic openDropdown() {\n\t\tif (this.disabled) { return; }\n\t\tthis.open = true;\n\t}\n\n\t/**\n\t * Toggles the dropdown.\n\t */\n\tpublic toggleDropdown() {\n\t\tif (this.open) {\n\t\t\tthis.closeDropdown();\n\t\t} else {\n\t\t\tthis.openDropdown();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the list group filter, and manages single select item selection.\n\t */\n\tpublic onSearch(searchString) {\n\t\tthis.view.filterBy(searchString);\n\t\tif (searchString !== \"\") {\n\t\t\tthis.openDropdown();\n\t\t} else {\n\t\t\tthis.selectedValue = \"\";\n\t\t}\n\t\tif (this.type === \"single\") {\n\t\t\t// deselect if the input doesn't match the content\n\t\t\t// of any given item\n\t\t\tconst matches = this.view.getListItems().some(item => item.content.toLowerCase().includes(searchString.toLowerCase()));\n\t\t\tif (!matches) {\n\t\t\t\tconst selected = this.view.getSelected();\n\t\t\t\tif (selected) {\n\t\t\t\t\tselected[0].selected = false;\n\t\t\t\t\t// notify that the selection has changed\n\t\t\t\t\tthis.view.select.emit({ item: selected[0] });\n\t\t\t\t\tthis.propagateChangeCallback(null);\n\t\t\t\t} else {\n\t\t\t\t\tthis.view.filterBy(\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Bubbles from `n-pill-input` when the user types a value and presses enter. Intended to be used to add items to the list.\n\t *\n\t * @param {any} ev event from `n-pill-input`, includes the typed value and the index of the pill the user typed after\n\t *\n\t * Example:\n\t * ```javascript\n\t *\t{\n\t *\tafter: 1,\n\t *\tvalue: \"some user string\"\n\t *\t}\n\t * ```\n\t */\n\tpublic onSubmit(ev) {\n\t\tlet index = 0;\n\t\tif (ev.after) {\n\t\t\tindex = this.view.getListItems().indexOf(ev.after) + 1;\n\t\t}\n\t\tthis.submit.emit({\n\t\t\titems: this.view.getListItems(),\n\t\t\tindex,\n\t\t\tvalue: {\n\t\t\t\tcontent: ev.value,\n\t\t\t\tselected: false\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n\n\tprotected updateSelected() {\n\t\tconst selected = this.view.getSelected();\n\t\tif (this.type === \"multi\" ) {\n\t\t\tthis.updatePills();\n\t\t} else if (selected) {\n\t\t\tthis.selectedValue = selected[0].content;\n\t\t\tthis.propagateChangeCallback(selected[0]);\n\t\t}\n\t}\n}\n","import { Injectable, ElementRef } from \"@angular/core\";\nimport { PlaceholderService } from \"./../placeholder/placeholder.module\";\nimport { fromEvent, Subscription } from \"rxjs\";\nimport { throttleTime } from \"rxjs/operators\";\nimport { position } from \"@carbon/utils-position\";\n\nconst defaultOffset = { top: 0, left: 0 };\n\n@Injectable()\nexport class DropdownService {\n\tpublic set offset(value: { top?: number, left?: number }) {\n\t\tthis._offset = Object.assign({}, defaultOffset, value);\n\t}\n\n\tpublic get offset() {\n\t\treturn this._offset;\n\t}\n\t/**\n\t * reference to the body appended menu\n\t */\n\tprotected menuInstance: HTMLElement;\n\n\t/**\n\t * Maintains an Event Observable Subscription for tracking window resizes.\n\t * Window resizing is tracked if the `Dropdown` is appended to the body, otherwise it does not need to be supported.\n\t */\n\tprotected resize: Subscription;\n\n\tprotected _offset = defaultOffset;\n\n\tconstructor(protected placeholderService: PlaceholderService) {}\n\n\t/**\n\t * Appends the menu to the body, or a `ibm-placeholder` (if defined)\n\t *\n\t * @param parentRef container to position relative to\n\t * @param menuRef menu to be appended to body\n\t * @param classList any extra classes we should wrap the container with\n\t */\n\tappendToBody(parentRef: HTMLElement, menuRef: HTMLElement, classList): HTMLElement {\n\t\t// build the dropdown list container\n\t\tmenuRef.style.display = \"block\";\n\t\tconst dropdownWrapper = document.createElement(\"div\");\n\t\tdropdownWrapper.className = `dropdown ${classList}`;\n\t\tdropdownWrapper.style.width = parentRef.offsetWidth + \"px\";\n\t\tdropdownWrapper.style.position = \"absolute\";\n\t\tdropdownWrapper.appendChild(menuRef);\n\n\t\t// append it to the placeholder\n\t\tif (this.placeholderService.hasPlaceholderRef()) {\n\t\t\tthis.placeholderService.appendElement(dropdownWrapper);\n\t\t\t// or append it directly to the body\n\t\t} else {\n\t\t\tdocument.body.appendChild(dropdownWrapper);\n\t\t}\n\n\t\tthis.menuInstance = dropdownWrapper;\n\n\t\tthis.positionDropdown(parentRef, dropdownWrapper);\n\t\tthis.resize = fromEvent(window, \"resize\")\n\t\t\t.pipe(throttleTime(100))\n\t\t\t.subscribe(() => this.positionDropdown(parentRef, dropdownWrapper));\n\n\t\treturn dropdownWrapper;\n\t}\n\n\t/**\n\t * Reattach the dropdown menu to the parent container\n\t * @param hostRef container to append to\n\t */\n\tappendToDropdown(hostRef: HTMLElement): HTMLElement {\n\t\t// if the instance is already removed don't try and remove it again\n\t\tif (!this.menuInstance) { return; }\n\t\tconst instance = this.menuInstance;\n\t\tconst menu = instance.firstElementChild as HTMLElement;\n\t\t// clean up the instance\n\t\tthis.menuInstance = null;\n\t\tmenu.style.display = \"none\";\n\t\thostRef.appendChild(menu);\n\t\tthis.resize.unsubscribe();\n\t\tif (this.placeholderService.hasPlaceholderRef() && this.placeholderService.hasElement(instance)) {\n\t\t\tthis.placeholderService.removeElement(instance);\n\t\t} else if (document.body.contains(instance)) {\n\t\t\tdocument.body.removeChild(instance);\n\t\t}\n\t\treturn instance;\n\t}\n\n\t/**\n\t * position an open dropdown relative to the given parentRef\n\t */\n\tupdatePosition(parentRef) {\n\t\tthis.positionDropdown(parentRef, this.menuInstance);\n\t}\n\n\tprotected positionDropdown(parentRef, menuRef) {\n\t\tlet pos = position.findAbsolute(parentRef, menuRef, \"bottom\");\n\t\tpos = position.addOffset(pos, this.offset.top, this.offset.left);\n\t\tposition.setElement(menuRef, pos);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tContentChild,\n\tOnInit,\n\tViewChild,\n\tAfterContentInit,\n\tHostListener,\n\tOnDestroy,\n\tHostBinding,\n\tTemplateRef\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n// Observable import is required here so typescript can compile correctly\nimport { Observable, fromEvent, of, Subscription } from \"rxjs\";\n\nimport { AbstractDropdownView } from \"./abstract-dropdown-view.class\";\nimport { position } from \"@carbon/utils-position\";\nimport { I18n } from \"./../i18n/i18n.module\";\nimport { ListItem } from \"./list-item.interface\";\nimport { DropdownService } from \"./dropdown.service\";\n\n/**\n * Drop-down lists enable users to select one or more items from a list.\n *\n * [See demo](../../?path=/story/dropdown--basic)\n *\n * <example-url>../../iframe.html?id=dropdown--basic</example-url>\n *\n * @export\n * @class Dropdown\n * @implements {OnInit}\n * @implements {AfterContentInit}\n * @implements {OnDestroy}\n */\n@Component({\n\tselector: \"ibm-dropdown\",\n\ttemplate: `\n\t<label *ngIf=\"label\" [for]=\"id\" class=\"bx--label\">\n\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t</label>\n\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t</div>\n\t<div\n\t\t[id]=\"id\"\n\t\tclass=\"bx--dropdown bx--list-box\"\n\t\t[ngClass]=\"{\n\t\t\t'bx--dropdown--light': theme === 'light',\n\t\t\t'bx--list-box--inline': inline,\n\t\t\t'bx--skeleton': skeleton,\n\t\t\t'bx--dropdown--disabled bx--list-box--disabled': disabled\n\t\t}\">\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t#dropdownButton\n\t\t\tclass=\"bx--list-box__field\"\n\t\t\t[ngClass]=\"{'a': !menuIsClosed}\"\n\t\t\t[attr.aria-expanded]=\"!menuIsClosed\"\n\t\t\t[attr.aria-disabled]=\"disabled\"\n\t\t\t(click)=\"toggleMenu()\"\n\t\t\t(blur)=\"onBlur()\"\n\t\t\t[disabled]=\"disabled\">\n\t\t\t<div\n\t\t\t\t(click)=\"clearSelected()\"\n\t\t\t\t*ngIf=\"type === 'multi' && getSelectedCount() > 0\"\n\t\t\t\tclass=\"bx--list-box__selection--multi\"\n\t\t\t\ttitle=\"Clear all selected items\">\n\t\t\t\t{{getSelectedCount()}}\n\t\t\t\t<svg\n\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"16\"\n\t\t\t\t\theight=\"16\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<span *ngIf=\"isRenderString()\" class=\"bx--list-box__label\">{{getDisplayStringValue() | async}}</span>\n\t\t\t<ng-template\n\t\t\t\t*ngIf=\"!isRenderString()\"\n\t\t\t\t[ngTemplateOutletContext]=\"getRenderTemplateContext()\"\n\t\t\t\t[ngTemplateOutlet]=\"displayValue\">\n\t\t\t</ng-template>\n\t\t\t<ibm-icon-chevron-down16\n\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\tclass=\"bx--list-box__menu-icon\"\n\t\t\t\t[attr.aria-label]=\"menuButtonLabel\"\n\t\t\t\t[ngClass]=\"{'bx--list-box__menu-icon--open': !menuIsClosed }\">\n\t\t\t</ibm-icon-chevron-down16>\n\t\t</button>\n\t\t<div\n\t\t\t#dropdownMenu\n\t\t\t[ngClass]=\"{\n\t\t\t\t'drop-up': dropUp\n\t\t\t}\">\n\t\t\t<ng-content *ngIf=\"!menuIsClosed\"></ng-content>\n\t\t</div>\n\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Dropdown,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Dropdown implements OnInit, AfterContentInit, OnDestroy {\n\tstatic dropdownCount = 0;\n\t@Input() id = `dropdown-${Dropdown.dropdownCount++}`;\n\t/**\n\t * Label for the dropdown.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Sets the optional helper text.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Value displayed if no item is selected.\n\t */\n\t@Input() placeholder = \"\";\n\t/**\n\t * The selected value from the `Dropdown`. Can be a string or template.\n\t */\n\t@Input() displayValue: string | TemplateRef<any> = \"\";\n\t/**\n\t * Size to render the dropdown field.\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Defines whether or not the `Dropdown` supports selecting multiple items as opposed to single\n\t * item selection.\n\t */\n\t@Input() type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * `light` or `dark` dropdown theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * Set to `true` to disable the dropdown.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a loading dropdown.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an inline dropdown.\n\t */\n\t@Input() inline = false;\n\t/**\n\t * Set to `true` for a dropdown without arrow key activation.\n\t */\n\t@Input() disableArrowKeys = false;\n\t/**\n\t * Deprecated. Dropdown now defaults to appending inline\n\t * Set to `true` if the `Dropdown` is to be appended to the DOM body.\n\t */\n\t@Input() set appendToBody (v) {\n\t\tconsole.log(\"`appendToBody` has been deprecated. Dropdowns now append to the body by default.\");\n\t\tconsole.log(\"Ensure you have an `ibm-placeholder` in your app.\");\n\t\tconsole.log(\"Use `appendInline` if you need to position your dropdowns within the normal page flow.\");\n\t\tthis.appendInline = !v;\n\t}\n\n\tget appendToBody() {\n\t\treturn !this.appendInline;\n\t}\n\t/**\n\t * set to `true` to place the dropdown view inline with the component\n\t */\n\t@Input() appendInline = false;\n\t/**\n\t * Query string for the element that contains the `Dropdown`.\n\t * Used to trigger closing the dropdown if it scrolls outside of the viewport of the `scrollableContainer`.\n\t */\n\t@Input() scrollableContainer: string;\n\t/**\n\t * Specifies the property to be used as the return value to `ngModel`\n\t */\n\t@Input() value: string;\n\t/**\n\t * Accessible label for the button that opens the dropdown list.\n\t * Defaults to the `DROPDOWN.OPEN` value from the i18n service.\n\t */\n\t@Input() menuButtonLabel = this.i18n.get().DROPDOWN.OPEN;\n\t/**\n\t * Provides the label for the \"# selected\" text.\n\t * Defaults to the `DROPDOWN.SELECTED` value from the i18n service.\n\t */\n\t@Input() selectedLabel = this.i18n.get().DROPDOWN.SELECTED;\n\t/**\n\t * Emits selection events.\n\t */\n\t@Output() selected: EventEmitter<Object> = new EventEmitter<Object>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() onClose: EventEmitter<any> = new EventEmitter<any>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Maintains a reference to the `AbstractDropdownView` object within the content DOM.\n\t */\n\t@ContentChild(AbstractDropdownView) view: AbstractDropdownView;\n\t/**\n\t * Maintains a reference to the view DOM element of the `Dropdown` button.\n\t */\n\t@ViewChild(\"dropdownButton\") dropdownButton;\n\t/**\n\t * ViewChid of the dropdown view.\n\t */\n\t@ViewChild(\"dropdownMenu\") dropdownMenu;\n\n\t@HostBinding(\"class.bx--dropdown__wrapper\") hostClass = true;\n\t/**\n\t * Set to `true` if the dropdown is closed (not expanded).\n\t */\n\tmenuIsClosed = true;\n\n\t/**\n\t * controls wether the `drop-up` class is applied\n\t */\n\tdropUp = false;\n\n\t// .bind creates a new function, so we declare the methods below\n\t// but .bind them up here\n\tnoop = this._noop.bind(this);\n\toutsideClick = this._outsideClick.bind(this);\n\toutsideKey = this._outsideKey.bind(this);\n\tkeyboardNav = this._keyboardNav.bind(this);\n\t/**\n\t * Maintians an Event Observable Subscription for tracking scrolling within the open `Dropdown` list.\n\t */\n\tscroll: Subscription;\n\n\tprotected onTouchedCallback: () => void = this._noop;\n\n\t/**\n\t * Creates an instance of Dropdown.\n\t */\n\tconstructor(protected elementRef: ElementRef, protected i18n: I18n, protected dropdownService: DropdownService) {}\n\n\t/**\n\t * Updates the `type` property in the `@ContentChild`.\n\t * The `type` property specifies whether the `Dropdown` allows single selection or multi selection.\n\t */\n\tngOnInit() {\n\t\tif (this.view) {\n\t\t\tthis.view.type = this.type;\n\t\t}\n\t}\n\n\t/**\n\t * Initializes classes and subscribes to events for single or multi selection.\n\t */\n\tngAfterContentInit() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tthis.view.type = this.type;\n\t\tthis.view.size = this.size;\n\t\tthis.view.select.subscribe(event => {\n\t\t\tif (this.type === \"multi\") {\n\t\t\t\t// if we have a `value` selector and selected items map them approperiatly\n\t\t\t\tif (this.value && this.view.getSelected()) {\n\t\t\t\t\tconst values = this.view.getSelected().map(item => item[this.value]);\n\t\t\t\t\tthis.propagateChange(values);\n\t\t\t\t// otherwise just pass up the values from `getSelected`\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(this.view.getSelected());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.closeMenu();\n\t\t\t\tif (event.item && event.item.selected) {\n\t\t\t\t\tif (this.value) {\n\t\t\t\t\t\tthis.propagateChange(event.item[this.value]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.propagateChange(event.item);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(null);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// only emit selected for \"organic\" selections\n\t\t\tif (!event.isUpdate) {\n\t\t\t\tthis.selected.emit(event);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Removing the `Dropdown` from the body if it is appended to the body.\n\t */\n\tngOnDestroy() {\n\t\tif (this.appendToBody) {\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t}\n\n\t/**\n\t * Propagates the injected `value`.\n\t */\n\twriteValue(value: any) {\n\t\t// propagate null/falsey as an array (deselect everything)\n\t\tif (!value) {\n\t\t\tthis.view.propagateSelected([value]);\n\t\t} else if (this.type === \"single\") {\n\t\t\tif (this.value) {\n\t\t\t\t// clone the specified item and update its state\n\t\t\t\tconst newValue = Object.assign({}, this.view.getListItems().find(item => item[this.value] === value));\n\t\t\t\tnewValue.selected = true;\n\t\t\t\tthis.view.propagateSelected([newValue]);\n\t\t\t} else {\n\t\t\t\t// pass the singular value as an array of ListItem\n\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.value) {\n\t\t\t\t// clone the items and update their state based on the received value array\n\t\t\t\t// this way we don't lose any additional metadata that may be passed in view the `items` Input\n\t\t\t\tconst newValues = Array.from(this.view.getListItems(), item => Object.assign({}, item));\n\t\t\t\tfor (const v of value) {\n\t\t\t\t\tfor (const newValue of newValues) {\n\t\t\t\t\t\tif (newValue[this.value] === v) {\n\t\t\t\t\t\t\tnewValue.selected = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.view.propagateSelected(newValues);\n\t\t\t} else {\n\t\t\t\t// we can safely assume we're passing an array of `ListItem`s\n\t\t\t\tthis.view.propagateSelected(value);\n\t\t\t}\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.onTouchedCallback();\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registering the function injected to control the touch use of the `Dropdown`.\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedCallback = fn;\n\t}\n\n\tpropagateChange = (_: any) => {};\n\n\t/**\n\t * Adds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\t// \"Esc\", \"Spacebar\", \"Down\", and \"Up\" are IE specific values\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif ((event.key === \"Escape\" || event.key === \"Esc\") && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close other widgets that listen for Escape\n\t\t}\n\t\tif (event.key === \"Escape\" || event.key === \"Esc\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (this.menuIsClosed && (event.key === \" \" || event.key === \"ArrowDown\" || event.key === \"ArrowUp\" ||\n\t\t\tevent.key === \"Spacebar\" || event.key === \"Down\" || event.key === \"Up\")) {\n\t\t\tif (this.disableArrowKeys && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Down\" || event.key === \"Up\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tthis.openMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && event.shiftKey) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (this.type === \"multi\") { return; }\n\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.closedDropdownNavigation(event);\n\t\t}\n\t}\n\n\tclosedDropdownNavigation(event) {\n\t\t// \"Down\", and \"Up\" are IE specific values\n\t\tif (event.key === \"ArrowDown\" || event.key === \"Down\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getNextItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t} else if (event.key === \"ArrowUp\" || event.key === \"Up\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getPrevItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t}\n\t}\n\n\t/**\n\t * Returns the display value if there is a selection and displayValue is set,\n\t * if there is just a selection the ListItem content property will be returned,\n\t * otherwise the placeholder will be returned.\n\t */\n\tgetDisplayStringValue(): Observable<string> {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (selected && (!this.displayValue || !this.isRenderString())) {\n\t\t\tif (this.type === \"multi\") {\n\t\t\t\treturn of(this.placeholder);\n\t\t\t} else {\n\t\t\t\treturn of(selected[0].content);\n\t\t\t}\n\t\t} else if (selected && this.isRenderString()) {\n\t\t\treturn of(this.displayValue as string);\n\t\t}\n\t\treturn of(this.placeholder);\n\t}\n\n\tisRenderString(): boolean {\n\t\treturn typeof this.displayValue === \"string\";\n\t}\n\n\tgetRenderTemplateContext() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (this.type === \"multi\") {\n\t\t\treturn {items: selected};\n\t\t} else if (selected && selected.length > 0) {\n\t\t\treturn {item: selected[0]}; // this is to be compatible with the dropdown-list template\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tgetSelectedCount(): number {\n\t\tif (this.view.getSelected()) {\n\t\t\treturn this.view.getSelected().length;\n\t\t}\n\t}\n\n\tclearSelected() {\n\t\tfor (const item of this.view.getListItems()) {\n\t\t\titem.selected = false;\n\t\t}\n\t\tthis.selected.emit([]);\n\t\tthis.propagateChange([]);\n\t}\n\n\t/**\n\t * Returns `true` if there is a value selected.\n\t */\n\tvalueSelected(): boolean {\n\t\tif (this.view.getSelected()) { return true; }\n\t\treturn false;\n\t}\n\n\t_noop() {}\n\t/**\n\t * Handles clicks outside of the `Dropdown`.\n\t */\n\t_outsideClick(event) {\n\t\tif (!this.elementRef.nativeElement.contains(event.target) &&\n\t\t\t// if we're appendToBody the list isn't within the _elementRef,\n\t\t\t// so we've got to check if our target is possibly in there too.\n\t\t\t!this.dropdownMenu.nativeElement.contains(event.target)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t_outsideKey(event) {\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t/**\n\t * Handles keyboard events so users are controlling the `Dropdown` instead of unintentionally controlling outside elements.\n\t */\n\t_keyboardNav(event: KeyboardEvent) {\n\t\t// \"Esc\" is an IE specific value\n\t\tif ((event.key === \"Escape\" || event.key === \"Esc\") && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close modal if inside of it\n\t\t}\n\t\tif (event.key === \"Escape\" || event.key === \"Esc\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (!this.menuIsClosed && event.key === \"Tab\") {\n\t\t\t// this way focus will start on the next focusable item from the dropdown\n\t\t\t// not the top of the body!\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t\tthis.dropdownButton.nativeElement.dispatchEvent(new KeyboardEvent(\"keydown\", {bubbles: true, cancelable: true, key: \"Tab\"}));\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list appending it to the dropdown parent object instead of the body.\n\t */\n\t_appendToDropdown() {\n\t\tthis.dropdownService.appendToDropdown(this.elementRef.nativeElement);\n\t\tthis.dropdownMenu.nativeElement.removeEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list as an element that is appended to the DOM body.\n\t */\n\t_appendToBody() {\n\t\tthis.dropdownService.appendToBody(\n\t\t\tthis.dropdownButton.nativeElement,\n\t\t\tthis.dropdownMenu.nativeElement,\n\t\t\tthis.elementRef.nativeElement.className);\n\t\tthis.dropdownMenu.nativeElement.addEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Expands the dropdown menu in the view.\n\t */\n\topenMenu() {\n\t\tthis.menuIsClosed = false;\n\n\t\t// move the dropdown list to the body if we're not appending inline\n\t\t// and position it relative to the dropdown wrapper\n\t\tif (!this.appendInline) {\n\t\t\tthis.addScrollEventListener();\n\t\t\tthis._appendToBody();\n\t\t}\n\n\t\t// set the dropdown menu to drop up if it's near the bottom of the screen\n\t\t// setTimeout lets us measure after it's visible in the DOM\n\t\tsetTimeout(() => {\n\t\t\tconst menu = this.dropdownMenu.nativeElement;\n\t\t\tconst boundingClientRect = menu.getBoundingClientRect();\n\n\t\t\tif (boundingClientRect.bottom > window.innerHeight) {\n\t\t\t\t// min height of 100px\n\t\t\t\tif (window.innerHeight - boundingClientRect.top > 100) {\n\t\t\t\t\t// remove the conditional once this api is settled and part of abstract-dropdown-view.class\n\t\t\t\t\tif (this.view[\"enableScroll\"]) {\n\t\t\t\t\t\tthis.view[\"enableScroll\"]();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.dropUp = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.dropUp = false;\n\t\t\t}\n\t\t}, 0);\n\n\t\t// we bind noop to document.body.firstElementChild to allow safari to fire events\n\t\t// from document. Then we unbind everything later to keep things light.\n\t\tdocument.body.firstElementChild.addEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.addEventListener(\"keydown\", this.noop, true);\n\t\tdocument.addEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.addEventListener(\"keydown\", this.outsideKey, true);\n\t\tsetTimeout(() => this.view.initFocus(), 0);\n\t}\n\n\t/**\n\t * Collapsing the dropdown menu and removing unnecessary `EventListeners`.\n\t */\n\tcloseMenu() {\n\t\t// return early if the menu is already closed\n\t\tif (this.menuIsClosed) { return; }\n\t\tthis.menuIsClosed = true;\n\t\tthis.onClose.emit();\n\t\tthis.close.emit();\n\n\t\t// focus the trigger button when we close ...\n\t\tthis.dropdownButton.nativeElement.focus();\n\n\t\t// remove the conditional once this api is settled and part of abstract-dropdown-view.class\n\t\tif (this.view[\"disableScroll\"]) {\n\t\t\tthis.view[\"disableScroll\"]();\n\t\t}\n\n\t\t// move the list back in the component on close\n\t\tif (!this.appendInline) {\n\t\t\tthis.removeScrollEventListener();\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t\tdocument.body.firstElementChild.removeEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.removeEventListener(\"keydown\", this.noop, true);\n\t\tdocument.removeEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.removeEventListener(\"keydown\", this.outsideKey, true);\n\t}\n\n\t/**\n\t * Add scroll event listener if scrollableContainer is provided\n\t */\n\taddScrollEventListener() {\n\t\tif (this.scrollableContainer) {\n\t\t\tconst container: HTMLElement = document.querySelector(this.scrollableContainer);\n\n\t\t\tif (container) {\n\t\t\t\tthis.scroll = fromEvent(container, \"scroll\")\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.isVisibleInContainer(this.elementRef.nativeElement, container)) {\n\t\t\t\t\t\tthis.dropdownService.updatePosition(this.dropdownButton.nativeElement);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.closeMenu();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes any `EventListeners` responsible for scroll functionality.\n\t */\n\tremoveScrollEventListener() {\n\t\tif (this.scroll) {\n\t\t\tthis.scroll.unsubscribe();\n\t\t}\n\t}\n\n\t/**\n\t * Controls toggling menu states between open/expanded and closed/collapsed.\n\t */\n\ttoggleMenu() {\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.openMenu();\n\t\t} else {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` if the `elem` is visible within the `container`.\n\t */\n\tisVisibleInContainer(elem: HTMLElement, container: HTMLElement): boolean {\n\t\tconst containerTop = container.scrollTop;\n\t\tconst containerBottom = containerTop + container.offsetHeight;\n\t\tconst elemTop = elem.offsetTop + elem.offsetHeight;\n\t\tconst elemBottom = elemTop;\n\n\t\tif ((elemBottom <= containerBottom) && (elemTop >= containerTop)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import { Observable, fromEvent } from \"rxjs\";\nimport { debounceTime, map, filter } from \"rxjs/operators\";\n\n/**\n * returns an observable bound to keydown events that\n * filters to a single element where the first letter of\n * it's textContent matches the key pressed\n *\n * @param {HTMLElement} target element to watch\n * @param {Array<HTMLElement>} elements elements to search\n */\nexport function watchFocusJump(target: HTMLElement, elements): Observable<HTMLElement> {\n\treturn fromEvent(target, \"keydown\")\n\t\t.pipe(\n\t\t\tdebounceTime(150),\n\t\t\tmap((ev: KeyboardEvent) => {\n\t\t\t\tlet el = elements.find((itemEl) =>\n\t\t\t\t\titemEl.textContent.trim().toLowerCase().startsWith(ev.key));\n\t\t\t\tif (el) { return el; }\n\t\t\t}),\n\t\t\tfilter(el => !!el)\n\t\t);\n}\n\n/** bundle of functions to aid in manipulating tree structures */\nexport const treetools = {\n\t/** finds an item in a set of items and returns the item and path to the item as an array */\n\tfind: function(items, itemToFind, path = []) {\n\t\tlet found;\n\t\tfor (let i of items) {\n\t\t\tif (i === itemToFind) {\n\t\t\t\tpath.push(i);\n\t\t\t\tfound = i;\n\t\t\t}\n\t\t\tif (i.items && !found) {\n\t\t\t\tpath.push(i);\n\t\t\t\tfound = this.find(i.items, itemToFind, path).found;\n\t\t\t\tif (!found) { path = []; }\n\t\t\t}\n\t\t}\n\t\treturn {found, path};\n\t}\n};\n","import { Checkbox } from \"../checkbox/checkbox.component\";\nimport {\n\tChangeDetectorRef,\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tTemplateRef\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { I18n, Overridable } from \"../i18n/i18n.module\";\nimport { Observable } from \"rxjs\";\n\n/**\n * Defines the set of states for a toggle component.\n */\nexport enum ToggleState {\n\tInit,\n\tIndeterminate,\n\tChecked,\n\tUnchecked\n}\n\n/**\n * Used to emit changes performed on toggle components.\n */\nexport class ToggleChange {\n\t/**\n\t * Contains the `Toggle` that has been changed.\n\t */\n\tsource: Toggle;\n\t/**\n\t * The state of the `Toggle` encompassed in the `ToggleChange` class.\n\t */\n\tchecked: boolean;\n}\n\n/**\n * [See demo](../../?path=/story/toggle--basic)\n *\n * ```html\n * <ibm-toggle [(ngModel)]=\"toggleState\">Toggle</ibm-toggle>\n * ```\n *\n * <example-url>../../iframe.html?id=toggle--basic</example-url>\n *\n * @export\n * @class Toggle\n * @extends {Checkbox}\n */\n@Component({\n\tselector: \"ibm-toggle\",\n\ttemplate: `\n\t\t<label *ngIf=\"label\" [id]=\"ariaLabelledby\" class=\"bx--label\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t</label>\n\t\t<input\n\t\t\tclass=\"bx--toggle\"\n\t\t\ttype=\"checkbox\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--toggle--small': size === 'sm',\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\"\n\t\t\t[id]=\"id\"\n\t\t\t[value]=\"value\"\n\t\t\t[name]=\"name\"\n\t\t\t[required]=\"required\"\n\t\t\t[checked]=\"checked\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t[attr.aria-checked]=\"checked\"\n\t\t\t(change)=\"onChange($event)\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t<label\n\t\t\tclass=\"bx--toggle__label\"\n\t\t\t[for]=\"id\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\">\n\t\t\t<span class=\"bx--toggle__text--left\">{{(!skeleton ? getOffText() : null) | async }}</span>\n\t\t\t<span class=\"bx--toggle__appearance\">\n\t\t\t\t<svg *ngIf=\"size === 'sm'\" class=\"bx--toggle__check\" width=\"6px\" height=\"5px\" viewBox=\"0 0 6 5\">\n\t\t\t\t\t<path d=\"M2.2 2.7L5 0 6 1 2.2 5 0 2.7 1 1.5z\"/>\n\t\t\t\t</svg>\n\t\t\t</span>\n\t\t\t<span class=\"bx--toggle__text--right\">{{(!skeleton ? getOnText() : null) | async}}</span>\n\t\t</label>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Toggle,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Toggle extends Checkbox {\n\t/**\n\t * Variable used for creating unique ids for toggle components.\n\t */\n\tstatic toggleCount = 0;\n\n\t/**\n\t * Text that is set on the left side of the toggle.\n\t */\n\t@Input()\n\tset offText(value: string | Observable<string>) {\n\t\tthis._offValues.override(value);\n\t}\n\n\tget offText() {\n\t\treturn this._offValues.value;\n\t}\n\n\t/**\n\t * Text that is set on the right side of the toggle.\n\t */\n\t@Input()\n\tset onText(value: string | Observable<string>) {\n\t\tthis._onValues.override(value);\n\t}\n\n\tget onText() {\n\t\treturn this._onValues.value;\n\t}\n\t/**\n\t * Text that is set as the label of the toggle.\n\t * @type {(string)}\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Size of the toggle component.\n\t */\n\t@Input() size: \"sm\" | \"md\" = \"md\";\n\t/**\n\t * Set to `true` for a loading toggle.\n\t */\n\t@Input() skeleton = false;\n\n\t/**\n\t * The unique id allocated to the `Toggle`.\n\t */\n\tid = \"toggle-\" + Toggle.toggleCount;\n\n\t/**\n\t * Emits event notifying other classes when a change in state occurs on a toggle after a\n\t * click.\n\t */\n\t@Output() change = new EventEmitter<ToggleChange>();\n\n\tprotected _offValues = this.i18n.getOverridable(\"TOGGLE.OFF\");\n\tprotected _onValues = this.i18n.getOverridable(\"TOGGLE.ON\");\n\t/**\n\t * Creates an instance of Toggle.\n\t */\n\tconstructor(protected changeDetectorRef: ChangeDetectorRef, protected i18n: I18n) {\n\t\tsuper(changeDetectorRef);\n\t\tToggle.toggleCount++;\n\t}\n\n\tgetOffText(): Observable<string> {\n\t\treturn this._offValues.subject;\n\t}\n\n\tgetOnText(): Observable<string> {\n\t\treturn this._onValues.subject;\n\t}\n\n\t/**\n\t * Creates instance of `ToggleChange` used to propagate the change event.\n\t */\n\temitChangeEvent() {\n\t\tlet event = new ToggleChange();\n\t\tevent.source = this;\n\t\tevent.checked = this.checked;\n\n\t\tthis.propagateChange(this.checked);\n\t\tthis.change.emit(event);\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tOnDestroy,\n\tEventEmitter,\n\tTemplateRef,\n\tAfterViewInit,\n\tViewChild,\n\tElementRef,\n\tViewChildren,\n\tQueryList\n} from \"@angular/core\";\n\nimport { I18n } from \"../../i18n/i18n.module\";\nimport { AbstractDropdownView } from \"./../abstract-dropdown-view.class\";\nimport { ListItem } from \"./../list-item.interface\";\nimport { watchFocusJump } from \"./../dropdowntools\";\nimport { ScrollableList } from \"./../scrollable-list.directive\";\nimport { Observable, isObservable, Subscription } from \"rxjs\";\n\n\n/**\n * ```html\n * <ibm-dropdown-list [items]=\"listItems\"></ibm-dropdown-list>\n * ```\n * ```typescript\n * listItems = [\n * \t{\n * \t\tcontent: \"item one\",\n * \t\tselected: false\n * \t},\n * \t{\n * \t\tcontent: \"item two\",\n * \t\tselected: false,\n * \t},\n * \t{\n * \t\tcontent: \"item three\",\n * \t\tselected: false\n * \t},\n * \t{\n * \t\tcontent: \"item four\",\n * \t\tselected: false\n * \t}\n * ];\n * ```\n */\n@Component({\n\tselector: \"ibm-dropdown-list\",\n\ttemplate: `\n\t\t<ul\n\t\t\t#list\n\t\t\trole=\"listbox\"\n\t\t\tclass=\"bx--list-box__menu bx--multi-select\"\n\t\t\t[attr.aria-label]=\"ariaLabel\">\n\t\t\t<li\n\t\t\t\trole=\"option\"\n\t\t\t\t*ngFor=\"let item of displayItems; let i = index\"\n\t\t\t\t(click)=\"doClick($event, item)\"\n\t\t\t\t(keydown)=\"doKeyDown($event, item)\"\n\t\t\t\t(focus)=\"onItemFocus(i)\"\n\t\t\t\t(blur)=\"onItemBlur(i)\"\n\t\t\t\tclass=\"bx--list-box__menu-item\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--list-box__menu-item--active': item.selected,\n\t\t\t\t\tdisabled: item.disabled\n\t\t\t\t}\">\n\t\t\t\t<div\n\t\t\t\t\t#listItem\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"bx--list-box__menu-item__option\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"!listTpl && type === 'multi'\"\n\t\t\t\t\t\tclass=\"bx--form-item bx--checkbox-wrapper\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t[attr.data-contained-checkbox-state]=\"item.selected\"\n\t\t\t\t\t\t\tclass=\"bx--checkbox-label\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclass=\"bx--checkbox\"\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t[checked]=\"item.selected\"\n\t\t\t\t\t\t\t\t[disabled]=\"item.disabled\"\n\t\t\t\t\t\t\t\ttabindex=\"-1\">\n\t\t\t\t\t\t\t<span class=\"bx--checkbox-appearance\"></span>\n\t\t\t\t\t\t\t<span class=\"bx--checkbox-label-text\">{{item.content}}</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t<ng-container *ngIf=\"!listTpl && type === 'single'\">{{item.content}}</ng-container>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t*ngIf=\"listTpl\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{item: item}\"\n\t\t\t\t\t\t[ngTemplateOutlet]=\"listTpl\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t</ul>`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: AbstractDropdownView,\n\t\t\tuseExisting: DropdownList\n\t\t}\n\t]\n})\nexport class DropdownList implements AbstractDropdownView, AfterViewInit, OnDestroy {\n\t@Input() ariaLabel = this.i18n.get().DROPDOWN_LIST.LABEL;\n\t/**\n\t * The list items belonging to the `DropdownList`.\n\t */\n\t@Input() set items (value: Array<ListItem> | Observable<Array<ListItem>>) {\n\t\tif (isObservable(value)) {\n\t\t\tif (this._itemsSubscription) {\n\t\t\t\tthis._itemsSubscription.unsubscribe();\n\t\t\t}\n\t\t\tthis._itemsSubscription = value.subscribe(v => this.updateList(v));\n\t\t} else {\n\t\t\tthis.updateList(value);\n\t\t}\n\t\tthis._originalItems = value;\n\t}\n\n\tget items(): Array<ListItem> | Observable<Array<ListItem>> {\n\t\treturn this._originalItems;\n\t}\n\t/**\n\t * Template to bind to items in the `DropdownList` (optional).\n\t */\n\t@Input() listTpl: string | TemplateRef<any> = null;\n\t/**\n\t * Event to emit selection of a list item within the `DropdownList`.\n\t */\n\t@Output() select: EventEmitter<Object> = new EventEmitter<Object>();\n\t/**\n\t * Event to suggest a blur on the view.\n\t * Emits _after_ the first/last item has been focused.\n\t * ex.\n\t * ArrowUp -> focus first item\n\t * ArrowUp -> emit event\n\t *\n\t * When this event fires focus should be placed on some element outside of the list - blurring the list as a result\n\t */\n\t@Output() blurIntent = new EventEmitter<\"top\" | \"bottom\">();\n\t/**\n\t * Maintains a reference to the view DOM element for the unordered list of items within the `DropdownList`.\n\t */\n\t@ViewChild(\"list\") list: ElementRef;\n\t/**\n\t * Defines whether or not the `DropdownList` supports selecting multiple items as opposed to single\n\t * item selection.\n\t */\n\t@Input() type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * Defines the rendering size of the `DropdownList` input component.\n\t */\n\tpublic size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Holds the list of items that will be displayed in the `DropdownList`.\n\t * It differs from the the complete set of items when filtering is used (but\n\t * it is always a subset of the total items in `DropdownList`).\n\t */\n\tpublic displayItems: Array<ListItem> = [];\n\t/**\n\t * Maintains the index for the selected item within the `DropdownList`.\n\t */\n\tprotected index = -1;\n\t/**\n\t * An array holding the HTML list elements in the view.\n\t */\n\t@ViewChildren(\"listItem\") protected listElementList: QueryList<ElementRef>;\n\t/**\n\t * Observable bound to keydown events to control filtering.\n\t */\n\tprotected focusJump;\n\t/**\n\t * Tracks the current (if any) subscription to the items observable so we can clean up when the input is updated.\n\t */\n\tprotected _itemsSubscription: Subscription;\n\t/**\n\t * Used to retain the original items passed to the setter.\n\t */\n\tprotected _originalItems: Array<ListItem> | Observable<Array<ListItem>>;\n\t/**\n\t * Useful representation of the items, should be accessed via `getListItems`.\n\t */\n\tprotected _items: Array<ListItem> = [];\n\n\t/**\n\t * Creates an instance of `DropdownList`.\n\t */\n\tconstructor(public elementRef: ElementRef, protected i18n: I18n) {}\n\n\t/**\n\t * Retrieves array of list items and index of the selected item after view has rendered.\n\t * Additionally, any Observables for the `DropdownList` are initialized.\n\t */\n\tngAfterViewInit() {\n\t\tthis.index = this.getListItems().findIndex(item => item.selected);\n\t\tthis.setupFocusObservable();\n\t}\n\n\t/**\n\t * Removes any Observables on destruction of the component.\n\t */\n\tngOnDestroy() {\n\t\tif (this.focusJump) {\n\t\t\tthis.focusJump.unsubscribe();\n\t\t}\n\t}\n\n\t/**\n\t * Updates the displayed list of items and then retrieves the most current properties for the `DropdownList` from the DOM.\n\t */\n\tupdateList(items) {\n\t\tthis._items = items.map(item => Object.assign({}, item));\n\t\tthis.displayItems = this._items;\n\t\tthis.index = this._items.findIndex(item => item.selected);\n\t\tthis.setupFocusObservable();\n\t\tsetTimeout(() => {\n\t\t\tif (!this.getSelected()) { return; }\n\t\t\tif (this.type === \"single\") {\n\t\t\t\tthis.select.emit({ item: this._items.find(item => item.selected), isUpdate: true });\n\t\t\t} else {\n\t\t\t\t// abuse javascripts object mutability until we can break the API and switch to\n\t\t\t\t// { items: [], isUpdate: true }\n\t\t\t\tconst selected = this.getSelected() || [];\n\t\t\t\tselected[\"isUpdate\"] = true;\n\t\t\t\tthis.select.emit(selected);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Filters the items being displayed in the DOM list.\n\t */\n\tfilterBy(query = \"\") {\n\t\tif (query) {\n\t\t\tthis.displayItems = this.getListItems().filter(item => item.content.toLowerCase().includes(query.toLowerCase()));\n\t\t} else {\n\t\t\tthis.displayItems = this.getListItems();\n\t\t}\n\t\t// reset the index since the list has changed visually\n\t\tthis.index = 0;\n\t}\n\n\t/**\n\t * Initializes (or re-initializes) the Observable that handles switching focus to an element based on\n\t * key input matching the first letter of the item in the list.\n\t */\n\tsetupFocusObservable() {\n\t\tif (this.focusJump) {\n\t\t\tthis.focusJump.unsubscribe();\n\t\t}\n\t\tlet elList = Array.from(this.list.nativeElement.querySelectorAll(\"li\"));\n\t\tthis.focusJump = watchFocusJump(this.list.nativeElement, elList)\n\t\t\t.subscribe(el => {\n\t\t\t\tel.focus();\n\t\t\t});\n\t}\n\n\t/**\n\t * Returns the `ListItem` that is subsequent to the selected item in the `DropdownList`.\n\t */\n\tgetNextItem(): ListItem {\n\t\tif (this.index < this.displayItems.length - 1) {\n\t\t\tthis.index++;\n\t\t}\n\t\treturn this.displayItems[this.index];\n\t}\n\n\t/**\n\t * Returns `true` if the selected item is not the last item in the `DropdownList`.\n\t * TODO: standardize\n\t */\n\thasNextElement(): boolean {\n\t\tif (this.index < this.displayItems.length - 1) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the `HTMLElement` for the item that is subsequent to the selected item.\n\t */\n\tgetNextElement(): HTMLElement {\n\t\tif (this.index < this.displayItems.length - 1) {\n\t\t\tthis.index++;\n\t\t}\n\t\tlet elem = this.listElementList.toArray()[this.index].nativeElement;\n\t\tlet item = this.displayItems[this.index];\n\t\tif (item.disabled) {\n\t\t\treturn this.getNextElement();\n\t\t}\n\t\treturn elem;\n\t}\n\n\t/**\n\t * Returns the `ListItem` that precedes the selected item within `DropdownList`.\n\t */\n\tgetPrevItem(): ListItem {\n\t\tif (this.index > 0) {\n\t\t\tthis.index--;\n\t\t}\n\t\treturn this.displayItems[this.index];\n\t}\n\n\t/**\n\t * Returns `true` if the selected item is not the first in the list.\n\t * TODO: standardize\n\t */\n\thasPrevElement(): boolean {\n\t\tif (this.index > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the `HTMLElement` for the item that precedes the selected item.\n\t */\n\tgetPrevElement(): HTMLElement {\n\t\tif (this.index > 0) {\n\t\t\tthis.index--;\n\t\t}\n\t\tlet elem = this.listElementList.toArray()[this.index].nativeElement;\n\t\tlet item = this.displayItems[this.index];\n\t\tif (item.disabled) {\n\t\t\treturn this.getPrevElement();\n\t\t}\n\t\treturn elem;\n\t}\n\n\t/**\n\t * Returns the `ListItem` that is selected within `DropdownList`.\n\t */\n\tgetCurrentItem(): ListItem {\n\t\tif (this.index < 0) {\n\t\t\treturn this.displayItems[0];\n\t\t}\n\t\treturn this.displayItems[this.index];\n\t}\n\n\t/**\n\t * Returns the `HTMLElement` for the item that is selected within the `DropdownList`.\n\t */\n\tgetCurrentElement(): HTMLElement {\n\t\tif (this.index < 0) {\n\t\t\treturn this.listElementList.first.nativeElement;\n\t\t}\n\t\treturn this.listElementList.toArray()[this.index].nativeElement;\n\t}\n\n\t/**\n\t * Returns the items as an Array\n\t */\n\tgetListItems(): Array<ListItem> {\n\t\treturn this._items;\n\t}\n\n\t/**\n\t * Returns a list containing the selected item(s) in the `DropdownList`.\n\t */\n\tgetSelected(): ListItem[] {\n\t\tlet selected = this.getListItems().filter(item => item.selected);\n\t\tif (selected.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn selected;\n\t}\n\n\t/**\n\t * Transforms array input list of items to the correct state by updating the selected item(s).\n\t */\n\tpropagateSelected(value: Array<ListItem>): void {\n\t\t// if we get a non-array, log out an error (since it is one)\n\t\tif (!Array.isArray(value)) {\n\t\t\tconsole.error(`${this.constructor.name}.propagateSelected expects an Array<ListItem>, got ${JSON.stringify(value)}`);\n\t\t}\n\t\tfor (let newItem of value) {\n\t\t\t// copy the item\n\t\t\tlet tempNewItem: string | ListItem = Object.assign({}, newItem);\n\t\t\t// deleted selected because it's what we _want_ to change\n\t\t\tdelete tempNewItem.selected;\n\t\t\t// stringify for compare\n\t\t\ttempNewItem = JSON.stringify(tempNewItem);\n\t\t\tfor (let oldItem of this.getListItems()) {\n\t\t\t\tlet tempOldItem: string | ListItem = Object.assign({}, oldItem);\n\t\t\t\tdelete tempOldItem.selected;\n\t\t\t\ttempOldItem = JSON.stringify(tempOldItem);\n\t\t\t\t// do the compare\n\t\t\t\tif (tempOldItem.includes(tempNewItem)) {\n\t\t\t\t\t// oldItem = Object.assign(oldItem, newItem);\n\t\t\t\t\toldItem.selected = newItem.selected;\n\t\t\t\t} else {\n\t\t\t\t\toldItem.selected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Initializes focus in the list, effectively a wrapper for `getCurrentElement().focus()`\n\t */\n\tinitFocus() {\n\t\t// ensure we start at this first item if nothing is already selected\n\t\tif (this.index < 0) {\n\t\t\tthis.index = 0;\n\t\t}\n\t\tthis.getCurrentElement().focus();\n\t}\n\n\t/**\n\t * Manages the keyboard accessibility for navigation and selection within a `DropdownList`.\n\t */\n\tdoKeyDown(event: KeyboardEvent, item: ListItem) {\n\t\t// \"Spacebar\", \"Down\", and \"Up\" are IE specific values\n\t\tif (event.key === \"Enter\" || event.key === \" \" || event.key === \"Spacebar\") {\n\t\t\t\tif (this.listElementList.some(option => option.nativeElement === event.target)) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (event.key === \"Enter\") {\n\t\t\t\t\tthis.doClick(event, item);\n\t\t\t\t}\n\t\t} else if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Down\" || event.key === \"Up\") {\n\t\t\tevent.preventDefault();\n\t\t\tif (event.key === \"ArrowDown\" || event.key === \"Down\") {\n\t\t\t\tif (this.hasNextElement()) {\n\t\t\t\t\tthis.getNextElement().focus();\n\t\t\t\t} else {\n\t\t\t\t\tthis.blurIntent.emit(\"bottom\");\n\t\t\t\t}\n\t\t\t} else if (event.key === \"ArrowUp\" || event.key === \"Up\") {\n\t\t\t\tif (this.hasPrevElement()) {\n\t\t\t\t\tthis.getPrevElement().focus();\n\t\t\t\t} else {\n\t\t\t\t\tthis.blurIntent.emit(\"top\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Emits the selected item or items after a mouse click event has occurred.\n\t */\n\tdoClick(event, item) {\n\t\tevent.preventDefault();\n\t\tif (!item.disabled) {\n\t\t\tif (this.type === \"single\") {\n\t\t\t\titem.selected = true;\n\t\t\t\t// reset the selection\n\t\t\t\tfor (let otherItem of this.getListItems()) {\n\t\t\t\t\tif (item !== otherItem) { otherItem.selected = false; }\n\t\t\t\t}\n\n\t\t\t\tthis.select.emit({item});\n\t\t\t} else {\n\t\t\t\titem.selected = !item.selected;\n\t\t\t\t// emit an array of selected items\n\t\t\t\tthis.select.emit(this.getSelected());\n\t\t\t}\n\t\t\tthis.index = this.getListItems().indexOf(item);\n\t\t}\n\t}\n\n\tonItemFocus(index) {\n\t\tconst element = this.listElementList.toArray()[index].nativeElement;\n\t\telement.classList.add(\"bx--list-box__menu-item--highlighted\");\n\t\telement.tabIndex = 0;\n\t}\n\n\tonItemBlur(index) {\n\t\tconst element = this.listElementList.toArray()[index].nativeElement;\n\t\telement.classList.remove(\"bx--list-box__menu-item--highlighted\");\n\t\telement.tabIndex = -1;\n\t}\n}\n","import {\n\tInput,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tOnChanges,\n\tSimpleChanges,\n\tAfterViewInit\n} from \"@angular/core\";\n\n@Directive({\n\tselector: \"[ibmScrollableList]\",\n\texportAs: \"scrollable-list\"\n})\nexport class ScrollableList implements OnChanges, AfterViewInit {\n\t/**\n\t * Optional target list to scroll\n\t */\n\t@Input() nScrollableList: string = null;\n\t/**\n\t * Enables or disables scrolling for the whole directive\n\t */\n\t@Input() scrollEnabled = true;\n\t/**\n\t * Sets the target used for hover scrolling up\n\t */\n\t@Input() scrollUpTarget: HTMLElement;\n\t/**\n\t * Sets the target used for hover scrolling down\n\t */\n\t@Input() scrollDownTarget: HTMLElement;\n\t/**\n\t * How many lines to scroll by each time `wheel` fires\n\t * Defaults to 10 - based on testing this isn't too fast or slow on any platform\n\t */\n\t@Input() scrollBy = 10;\n\n\t// keeps track of the setInterval for hover scrolling\n\tprotected hoverScrollInterval;\n\t// tracks the last touch event\n\tprotected lastTouch;\n\tprotected canScrollUp = false;\n\tprotected canScrollDown = false;\n\tprotected list = this.elementRef.nativeElement;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.scrollEnabled) {\n\t\t\tif (changes.scrollEnabled.currentValue) {\n\t\t\t\tthis.list.style.overflow = \"hidden\";\n\t\t\t\tthis.scrollUpTarget.style.display = \"flex\";\n\t\t\t\tthis.scrollDownTarget.style.display = \"flex\";\n\t\t\t\tthis.canScrollUp = true;\n\t\t\t\tthis.canScrollDown = true;\n\t\t\t\tthis.updateScrollHeight();\n\t\t\t\tthis.checkScrollArrows();\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.checkScrollArrows();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.scrollUpTarget.style.display = \"none\";\n\t\t\t\tthis.scrollDownTarget.style.display = \"none\";\n\t\t\t\tthis.canScrollUp = false;\n\t\t\t\tthis.canScrollDown = false;\n\t\t\t\tthis.list.style.height = null;\n\t\t\t\tthis.list.style.overflow = null;\n\t\t\t\tclearInterval(this.hoverScrollInterval);\n\t\t\t}\n\t\t}\n\t}\n\n\tngAfterViewInit() {\n\t\tif (this.nScrollableList) {\n\t\t\tthis.list = this.elementRef.nativeElement.querySelector(this.nScrollableList);\n\t\t}\n\t\tthis.scrollUpTarget.addEventListener(\"mouseover\", () => this.onHoverUp(true));\n\t\tthis.scrollUpTarget.addEventListener(\"mouseout\", () => this.onHoverUp(false));\n\t\tthis.scrollDownTarget.addEventListener(\"mouseover\", () => this.onHoverDown(true));\n\t\tthis.scrollDownTarget.addEventListener(\"mouseout\", () => this.onHoverDown(false));\n\t}\n\n\tpublic updateScrollHeight() {\n\t\tif (this.scrollEnabled) {\n\t\t\tconst container = this.elementRef.nativeElement.parentElement;\n\t\t\tconst containerRect = container.getBoundingClientRect();\n\t\t\tconst innerHeightDiff = this.list.getBoundingClientRect().top - containerRect.top;\n\t\t\tconst outerHeightDiff = containerRect.height - (containerRect.bottom - window.innerHeight);\n\t\t\t// 40 gives us some padding between the bottom of the list,\n\t\t\t// the bottom of the window, and the scroll down button\n\t\t\tconst height = outerHeightDiff - innerHeightDiff - 40;\n\t\t\tthis.list.style.height = `${height}px`;\n\t\t}\n\t}\n\n\tprotected checkScrollArrows() {\n\t\tconst scrollUpHeight = this.scrollUpTarget.offsetHeight;\n\t\tconst scrollDownHeight = this.scrollDownTarget.offsetHeight;\n\t\tif (this.list.scrollTop === 0) {\n\t\t\tif (this.canScrollUp) {\n\t\t\t\tthis.list.style.height = `${parseInt(this.list.style.height, 10) + scrollUpHeight}px`;\n\t\t\t}\n\t\t\tthis.scrollUpTarget.style.display = \"none\";\n\t\t\tthis.canScrollUp = false;\n\t\t} else if (this.list.scrollTop === this.list.scrollTopMax) {\n\t\t\tif (this.canScrollDown) {\n\t\t\t\tthis.list.style.height = `${parseInt(this.list.style.height, 10) + scrollDownHeight}px`;\n\t\t\t}\n\t\t\tthis.scrollDownTarget.style.display = \"none\";\n\t\t\tthis.canScrollDown = false;\n\t\t} else {\n\t\t\tif (!this.canScrollUp) {\n\t\t\t\tthis.list.style.height = `${parseInt(this.list.style.height, 10) - scrollUpHeight}px`;\n\t\t\t}\n\t\t\tif (!this.canScrollDown) {\n\t\t\t\tthis.list.style.height = `${parseInt(this.list.style.height, 10) - scrollDownHeight}px`;\n\t\t\t}\n\t\t\tthis.scrollUpTarget.style.display = \"flex\";\n\t\t\tthis.scrollDownTarget.style.display = \"flex\";\n\t\t\tthis.canScrollUp = true;\n\t\t\tthis.canScrollDown = true;\n\t\t}\n\t}\n\n\t@HostListener(\"wheel\", [\"$event\"])\n\tprotected onWheel(event) {\n\t\tif (event.deltaY < 0) {\n\t\t\tthis.list.scrollTop -= this.scrollBy;\n\t\t} else {\n\t\t\tthis.list.scrollTop += this.scrollBy;\n\t\t}\n\t\t// only prevent the parent/window from scrolling if we can scroll\n\t\tif (!(this.list.scrollTop === this.list.scrollTopMax || this.list.scrollTop === 0)) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.checkScrollArrows();\n\t}\n\n\t@HostListener(\"touchstart\", [\"$event\"])\n\tprotected onTouchStart(event) {\n\t\tif (event.touches[0]) {\n\t\t\tthis.lastTouch = event.touches[0].clientY;\n\t\t}\n\t}\n\n\t@HostListener(\"touchmove\", [\"$event\"])\n\tprotected onTouchMove(event) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tif (event.touches[0]) {\n\t\t\tconst touch = event.touches[0];\n\t\t\tthis.list.scrollTop += this.lastTouch - touch.clientY;\n\t\t\tthis.lastTouch = touch.clientY;\n\t\t\tthis.checkScrollArrows();\n\t\t}\n\t}\n\n\tprotected hoverScrollBy(hovering, amount) {\n\t\tif (hovering) {\n\t\t\tthis.hoverScrollInterval = setInterval(() => {\n\t\t\t\tthis.list.scrollTop += amount;\n\t\t\t\tthis.checkScrollArrows();\n\t\t\t}, 1);\n\t\t} else {\n\t\t\tclearInterval(this.hoverScrollInterval);\n\t\t}\n\t}\n\n\tprotected onHoverUp(hovering) {\n\t\t// how many px/lines to scroll by on hover\n\t\t// 3 is just a random number that felt good\n\t\t// 1 and 2 are too slow, 4 works but it might be a tad fast\n\t\tthis.hoverScrollBy(hovering, -3);\n\t}\n\n\tprotected onHoverDown(hovering) {\n\t\tthis.hoverScrollBy(hovering, 3);\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tprotected onKeyDown(event) {\n\t\tif (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n\t\t\tthis.checkScrollArrows();\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { Dropdown } from \"./dropdown.component\";\nimport { DropdownList } from \"./list/dropdown-list.component\";\n\nimport { ScrollableList } from \"./scrollable-list.directive\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { PlaceholderModule } from \"./../placeholder/placeholder.module\";\nimport { DropdownService } from \"./dropdown.service\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\n\nexport { Dropdown } from \"./dropdown.component\";\nexport { DropdownList } from \"./list/dropdown-list.component\";\n\nexport { ScrollableList } from \"./scrollable-list.directive\";\nexport { AbstractDropdownView } from \"./abstract-dropdown-view.class\";\nexport { ListItem } from \"./list-item.interface\";\nexport { DropdownService } from \"./dropdown.service\";\n\n@NgModule({\n\tdeclarations: [\n\t\tDropdown,\n\t\tDropdownList,\n\t\tScrollableList\n\t],\n\texports: [\n\t\tDropdown,\n\t\tDropdownList,\n\t\tScrollableList\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tI18nModule,\n\t\tPlaceholderModule,\n\t\tChevronDown16Module\n\t],\n\tproviders: [ DropdownService ]\n})\nexport class DropdownModule {}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\n\nimport { ComboBox } from \"./combobox.component\";\nimport { DropdownModule } from \"../dropdown/dropdown.module\";\n\nexport { ComboBox } from \"./combobox.component\";\n\n\n@NgModule({\n\tdeclarations: [\n\t\tComboBox\n\t],\n\texports: [\n\t\tComboBox,\n\t\tDropdownModule\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tDropdownModule,\n\t\tChevronDown16Module,\n\t\tClose16Module\n\t]\n})\nexport class ComboBoxModule {}\n","import {\n\tDirective,\n\tHostBinding,\n\tInput,\n\tHostListener,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\n\n@Directive({\n\tselector: \"[ibmContentOption]\"\n})\nexport class ContentSwitcherOption {\n\t/**\n\t * Used to activate the option. Only one option may be `active` at a time\n\t */\n\t@Input() set active (value: boolean) {\n\t\tthis._active = value;\n\t\tthis.selectedClass = value;\n\t\tthis.ariaSelected = value;\n\t\tthis.tabindex = value ? \"0\" : \"-1\";\n\t}\n\n\tget active() {\n\t\treturn this._active;\n\t}\n\n\t/**\n\t * Internal name for the option.\n\t * Should be something that identifies the option to the application.\n\t * Accessible from the `ContentSwitcher` `selected` emitter\n\t */\n\t@Input() name = \"option\";\n\n\t/**\n\t * Emits when the option is selected.\n\t */\n\t@Output() selected = new EventEmitter();\n\n\t@HostBinding(\"class\") switcherClass = \"bx--content-switcher-btn\";\n\t@HostBinding(\"class.bx--content-switcher--selected\") selectedClass = false;\n\t@HostBinding(\"attr.role\") role = \"tab\";\n\t@HostBinding(\"attr.aria-selected\") ariaSelected = false;\n\t@HostBinding(\"attr.tabIndex\") tabindex = \"-1\";\n\n\tprotected _active = false;\n\n\t@HostListener(\"click\")\n\thostClick() {\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n\n\t@HostListener(\"focus\")\n\tonFocus() {\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tHostListener,\n\tElementRef\n} from \"@angular/core\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\nimport { isFocusInLastItem, isFocusInFirstItem } from \"./../common/tab.service\";\n\n/**\n * The content switcher can be used for toggling between distinct options.\n * Similar to tabs, but without an associated content panel\n *\n * [See demo](../../?path=/story/content-switcher--basic)\n *\n * ```html\n * <ibm-content-switcher (selected)=\"selected($event)\">\n *\t\t<button ibmContentOption>First section</button>\n *\t\t<button ibmContentOption>Second section</button>\n *\t\t<button ibmContentOption>Third section</button>\n *\t</ibm-content-switcher>\n *\t```\n *\n * <example-url>../../iframe.html?id=content-switcher--basic</example-url>\n *\n * @export\n * @class ContentSwitcher\n * @implements {AfterViewInit}\n */\n@Component({\n\tselector: \"ibm-content-switcher\",\n\ttemplate: `\n\t\t<div\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\tclass=\"bx--content-switcher\"\n\t\t\trole=\"tablist\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t`\n})\nexport class ContentSwitcher implements AfterViewInit {\n\t/**\n\t * aria-label for the content switcher. Should be set to something descriptive\n\t */\n\t@Input() set label(value: string) {\n\t\tconsole.warn(\"`label` is deprecated (to be removed in next major version). Use `ariaLabel` instead.\");\n\t\tthis.ariaLabel = value;\n\t}\n\n\tget label(): string {\n\t\tconsole.warn(\"`label` is deprecated (to be removed in next major version). Use `ariaLabel` instead.\");\n\t\treturn this.ariaLabel;\n\t}\n\n\t@Input() ariaLabel = \"content switcher\";\n\n\t/**\n\t * Emits the activated `ContentSwitcherOption`\n\t */\n\t@Output() selected = new EventEmitter();\n\n\t@ContentChildren(ContentSwitcherOption) options: QueryList<ContentSwitcherOption>;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\tconst firstActive = this.options.find(option => option.active);\n\t\t// delay setting active until the DOM has settled\n\t\tif (!firstActive) {\n\t\t\tsetTimeout(() => this.options.first.active = true);\n\t\t}\n\t\t// subscribe to each item, emit when one is selected, and reset the active states\n\t\tthis.options.forEach(option => {\n\t\t\toption.selected.subscribe(_ => {\n\t\t\t\tconst active = option;\n\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\tif (option !== active) {\n\t\t\t\t\t\toption.active = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.selected.emit(active);\n\t\t\t});\n\t\t});\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(event: KeyboardEvent) {\n\t\tconst buttonList = Array.from<any>(this.elementRef.nativeElement.querySelectorAll(\"[ibmContentOption]\"));\n\n\t\tswitch (event.key) {\n\t\t\tcase \"Right\": // IE specific value\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInLastItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index + 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[0].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Left\": // IE specific value\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInFirstItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index - 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[0].focus();\n\t\t\t\tbreak;\n\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ContentSwitcher } from \"./content-switcher.component\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\n\nexport { ContentSwitcher } from \"./content-switcher.component\";\nexport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\texports: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\timports: [CommonModule]\n})\nexport class ContentSwitcherModule { }\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tTemplateRef\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Component({\n\tselector: \"ibm-date-picker-input\",\n\ttemplate: `\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--date-picker\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--date-picker--single' : type === 'single',\n\t\t\t\t'bx--date-picker--range' : type === 'range',\n\t\t\t\t'bx--date-picker--light' : theme === 'light',\n\t\t\t\t'bx--skeleton' : skeleton\n\t\t\t}\">\n\t\t\t<div class=\"bx--date-picker-container\">\n\t\t\t\t<label *ngIf=\"label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<div class=\"bx--date-picker-input__wrapper\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"bx--date-picker__input\"\n\t\t\t\t\t\t[value]=\"value\"\n\t\t\t\t\t\t[pattern]=\"pattern\"\n\t\t\t\t\t\t[placeholder]=\"placeholder\"\n\t\t\t\t\t\t[id]= \"id\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t(change)=\"onChange($event)\"/>\n\t\t\t\t\t\t<ibm-icon-calendar16\n\t\t\t\t\t\t\tclass=\"bx--date-picker__icon\">\n\t\t\t\t\t\t</ibm-icon-calendar16>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: DatePickerInput,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class DatePickerInput {\n\tprivate static datePickerCount = 0;\n\n\t/**\n\t * Select a calendar type for the `model`.\n\t * Internal purposes only.\n\t */\n\t@Input() type: \"simple\" | \"single\" | \"range\" = \"simple\";\n\n\t@Input() id = `datepicker-${DatePickerInput.datePickerCount++}`;\n\n\t@Input() hasIcon = false;\n\n\t@Input() label: string | TemplateRef<any>;\n\n\t@Input() placeholder = \"mm/dd/yyyy\";\n\n\t@Input() pattern = \"^\\\\d{1,2}/\\\\d{1,2}/\\\\d{4}$\";\n\n\t@Output() valueChange: EventEmitter<string> = new EventEmitter();\n\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@Input() disabled = false;\n\n\t@Input() invalid = false;\n\n\t@Input() invalidText: string | TemplateRef<any>;\n\n\t@Input() skeleton = false;\n\n\t@Input() value = \"\";\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tonChange(event) {\n\t\tthis.value = event.target.value;\n\t\tthis.valueChange.emit(this.value);\n\t\tthis.propagateChange(this.value);\n\t\tthis.onTouched();\n\t}\n\n\tpublic writeValue(value: any) {\n\t\tthis.value = value;\n\t}\n\n\tpublic registerOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\tonTouched: () => any = () => {};\n\n\tpropagateChange = (_: any) => {};\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Calendar16 = /** @class */ (function () {\n function Calendar16() {\n this.focusable = false;\n }\n Calendar16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-calendar16\",\n template: \"\\n <svg\\n ibmIconCalendar16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Calendar16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Calendar16;\n}());\nexport { Calendar16 };\nvar Calendar16Directive = /** @class */ (function () {\n function Calendar16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Calendar16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M13 2h-2V1h-1v1H6V1H5v1H3c-.6 0-1 .4-1 1v10c0 .6.4 1 1 1h10c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1zm0 11H3V6h10v7zm0-8H3V3h2v1h1V3h4v1h1V3h2v2z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Calendar16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"calendar16-\" + Calendar16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"calendar16-\" + Calendar16Directive.titleIdCounter);\n }\n };\n Calendar16Directive.titleIdCounter = 0;\n Calendar16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCalendar16]\"\n },] },\n ];\n /** @nocollapse */\n Calendar16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Calendar16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Calendar16Directive;\n}());\nexport { Calendar16Directive };\nvar Calendar16Module = /** @class */ (function () {\n function Calendar16Module() {\n }\n Calendar16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Calendar16,\n Calendar16Directive\n ],\n exports: [\n Calendar16,\n Calendar16Directive\n ]\n },] },\n ];\n return Calendar16Module;\n}());\nexport { Calendar16Module };\n//# sourceMappingURL=16.js.map","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { DatePickerInput } from \"./datepicker-input.component\";\nimport { Calendar16Module } from \"@carbon/icons-angular/lib/calendar/16\";\n\n@NgModule({\n\tdeclarations: [\n\t\tDatePickerInput\n\t],\n\texports: [\n\t\tDatePickerInput\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tCalendar16Module\n\t]\n})\nexport class DatePickerInputModule { }\n","/**\n * This is from carbon-components.\n * We need it to format the month select according to specs.\n * Carbon currently doesn't expose this as a seperate package,\n * and we don't import the carbon-components js (on purpose)\n * so some copy pasta is required\n *\n * ref: https://github.com/carbon-design-system/carbon/blob/\n * \tf06f38f0c2ef624e409a3d5711e897a79f4c88fc/packages/components/src/components/date-picker/date-picker.js#L52-L123\n */\n\nconst monthToStr = (monthNumber, shorthand, locale) =>\n\tlocale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\n\nconst config = {\n\tselectorInit: \"[data-date-picker]\",\n\tselectorDatePickerInput: \"[data-date-picker-input]\",\n\tselectorDatePickerInputFrom: \"[data-date-picker-input-from]\",\n\tselectorDatePickerInputTo: \"[data-date-picker-input-to]\",\n\tselectorDatePickerIcon: \"[data-date-picker-icon]\",\n\tselectorFlatpickrMonthYearContainer: \".flatpickr-current-month\",\n\tselectorFlatpickrYearContainer: \".numInputWrapper\",\n\tselectorFlatpickrCurrentMonth: \".cur-month\",\n\tclassCalendarContainer: `bx--date-picker__calendar`,\n\tclassMonth: `bx--date-picker__month`,\n\tclassWeekdays: `bx--date-picker__weekdays`,\n\tclassDays: `bx--date-picker__days`,\n\tclassWeekday: `bx--date-picker__weekday`,\n\tclassDay: `bx--date-picker__day`,\n\tclassFocused: `bx--focused`,\n\tclassVisuallyHidden: `bx--visually-hidden`,\n\tclassFlatpickrCurrentMonth: \"cur-month\",\n\tattribType: \"data-date-picker-type\",\n\tdateFormat: \"m/d/Y\",\n\tshorthand: false\n};\n\nexport const carbonFlatpickrMonthSelectPlugin = fp => {\n\tconst setupElements = () => {\n\t\tif (!fp.monthElements) {\n\t\t\treturn;\n\t\t}\n\t\tfp.monthElements.forEach(elem => {\n\t\t\tif (!elem.parentNode) { return; }\n\t\t\telem.parentNode.removeChild(elem);\n\t\t});\n\t\tfp.monthElements.splice(\n\t\t\t0,\n\t\t\tfp.monthElements.length,\n\t\t\t...fp.monthElements.map(() => {\n\t\t\t\t// eslint-disable-next-line no-underscore-dangle\n\t\t\t\tconst monthElement = fp._createElement(\n\t\t\t\t\t\"span\",\n\t\t\t\t\tconfig.classFlatpickrCurrentMonth\n\t\t\t\t);\n\t\t\t\tmonthElement.textContent = monthToStr(\n\t\t\t\t\tfp.currentMonth,\n\t\t\t\t\tconfig.shorthand === true,\n\t\t\t\t\tfp.l10n\n\t\t\t\t);\n\t\t\t\tfp.yearElements[0]\n\t\t\t\t\t.closest(config.selectorFlatpickrMonthYearContainer)\n\t\t\t\t\t.insertBefore(\n\t\t\t\t\t\tmonthElement,\n\t\t\t\t\t\tfp.yearElements[0].closest(config.selectorFlatpickrYearContainer)\n\t\t\t\t\t);\n\t\t\t\treturn monthElement;\n\t\t\t})\n\t\t);\n\t};\n\tconst updateCurrentMonth = () => {\n\t\tconst monthStr = monthToStr(\n\t\t\tfp.currentMonth,\n\t\t\tconfig.shorthand === true,\n\t\t\tfp.l10n\n\t\t);\n\t\tfp.yearElements.forEach(elem => {\n\t\t\tconst currentMonthContainer = elem.closest(\n\t\t\t\tconfig.selectorFlatpickrMonthYearContainer\n\t\t\t);\n\t\t\tArray.prototype.forEach.call(\n\t\t\t\tcurrentMonthContainer.querySelectorAll(\".cur-month\"),\n\t\t\t\tmonthElement => {\n\t\t\t\t\tmonthElement.textContent = monthStr;\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t};\n\n\tconst register = () => {\n\t\tfp.loadedPlugins.push(\"carbonFlatpickrMonthSelectPlugin\");\n\t};\n\n\treturn {\n\t\tonMonthChange: updateCurrentMonth,\n\t\tonOpen: updateCurrentMonth,\n\t\tonReady: [setupElements, updateCurrentMonth, register]\n\t};\n};\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tViewEncapsulation,\n\tElementRef,\n\tOnDestroy,\n\tHostListener,\n\tTemplateRef,\n\tOnChanges,\n\tSimpleChanges,\n\tAfterViewChecked\n} from \"@angular/core\";\nimport rangePlugin from \"flatpickr/dist/plugins/rangePlugin\";\nimport flatpickr from \"flatpickr\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { carbonFlatpickrMonthSelectPlugin } from \"./carbon-flatpickr-month-select\";\n\n/**\n * [See demo](../../?path=/story/date-picker--single)\n *\n * <example-url>../../iframe.html?id=date-picker--single</example-url>\n *\n * @export\n * @class DatePicker\n * @implements {OnDestroy}\n */\n@Component({\n\tselector: \"ibm-date-picker\",\n\ttemplate: `\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--form-item\">\n\t\t\t<div\n\t\t\t\tclass=\"bx--date-picker\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--date-picker--range' : range,\n\t\t\t\t\t'bx--date-picker--single' : !range,\n\t\t\t\t\t'bx--date-picker--light' : theme === 'light',\n\t\t\t\t\t'bx--skeleton' : skeleton\n\t\t\t\t}\">\n\t\t\t\t<div class=\"bx--date-picker-container\">\n\t\t\t\t\t<ibm-date-picker-input\n\t\t\t\t\t\t[label]=\"label\"\n\t\t\t\t\t\t[placeholder]=\"placeholder\"\n\t\t\t\t\t\t[pattern]=\"pattern\"\n\t\t\t\t\t\t[id]=\"id\"\n\t\t\t\t\t\t[type]=\"(range ? 'range' : 'single')\"\n\t\t\t\t\t\t[hasIcon]=\"(range ? false : true)\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t[invalid]=\"invalid\"\n\t\t\t\t\t\t[invalidText]=\"invalidText\"\n\t\t\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t\t\t(valueChange)=\"onValueChange($event)\">\n\t\t\t\t\t</ibm-date-picker-input>\n\t\t\t\t</div>\n\n\t\t\t\t<div *ngIf=\"range\" class=\"bx--date-picker-container\">\n\t\t\t\t\t<ibm-date-picker-input\n\t\t\t\t\t\t[label]=\"rangeLabel\"\n\t\t\t\t\t\t[placeholder]=\"placeholder\"\n\t\t\t\t\t\t[pattern]=\"pattern\"\n\t\t\t\t\t\t[id]=\"id + '-rangeInput'\"\n\t\t\t\t\t\t[type]=\"(range ? 'range' : 'single')\"\n\t\t\t\t\t\t[hasIcon]=\"(range ? true : null)\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t[invalid]=\"invalid\"\n\t\t\t\t\t\t[invalidText]=\"invalidText\"\n\t\t\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t\t\t(valueChange)=\"onRangeValueChange($event)\">\n\t\t\t\t\t</ibm-date-picker-input>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t`,\n\tstyles: [\n\t\t`.dayContainer {\n\t\t\tjustify-content: initial;\n\t\t}`\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: DatePicker,\n\t\t\tmulti: true\n\t\t}\n\t],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class DatePicker implements OnDestroy, OnChanges, AfterViewChecked {\n\tprivate static datePickerCount = 0;\n\n\t/**\n\t * Select calendar range mode\n\t */\n\t@Input() range = false;\n\n\t/**\n\t * Format of date\n\t *\n\t * For reference: https://flatpickr.js.org/formatting/\n\t */\n\t@Input() dateFormat = \"m/d/Y\";\n\n\t@Input() label: string | TemplateRef<any>;\n\n\t@Input() rangeLabel: string;\n\n\t@Input() placeholder = \"mm/dd/yyyy\";\n\n\t@Input() pattern = \"^\\\\d{1,2}/\\\\d{1,2}/\\\\d{4}$\";\n\n\t@Input() id = `datepicker-${DatePicker.datePickerCount++}`;\n\n\t@Input() set value(v: (Date | string)[]) {\n\t\tif (!v) {\n\t\t\tv = [];\n\t\t}\n\t\tthis._value = v;\n\t}\n\n\tget value() {\n\t\treturn this._value;\n\t}\n\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@Input() disabled = false;\n\n\t@Input() invalid = false;\n\n\t@Input() invalidText: string | TemplateRef<any>;\n\n\t@Input() skeleton = false;\n\n\t@Input() plugins = [];\n\n\t@Input()\n\tset flatpickrOptions(options) {\n\t\tthis._flatpickrOptions = Object.assign({}, this._flatpickrOptions, options);\n\t}\n\tget flatpickrOptions() {\n\t\tconst plugins = [...this.plugins, carbonFlatpickrMonthSelectPlugin];\n\t\tif (this.range) {\n\t\t\tplugins.push(rangePlugin({ input: `#${this.id}-rangeInput`, position: \"left\"}));\n\t\t}\n\t\treturn Object.assign({}, this._flatpickrOptions, this.flatpickrBaseOptions, {\n\t\t\tmode: this.range ? \"range\" : \"single\",\n\t\t\tplugins,\n\t\t\tdateFormat: this.dateFormat\n\t\t});\n\t}\n\n\tset flatpickrOptionsRange (options) {\n\t\tconsole.warn(\"flatpickrOptionsRange is deprecated, use flatpickrOptions and set the range to true instead\");\n\t\tthis.range = true;\n\t\tthis.flatpickrOptions = options;\n\t}\n\tget flatpickrOptionsRange () {\n\t\tconsole.warn(\"flatpickrOptionsRange is deprecated, use flatpickrOptions and set the range to true instead\");\n\t\treturn this.flatpickrOptions;\n\t}\n\n\t@Output() valueChange: EventEmitter<any> = new EventEmitter();\n\n\tprotected _value = [];\n\n\tprotected _flatpickrOptions = {\n\t\tallowInput: true\n\t};\n\n\tprotected flatpickrBaseOptions = {\n\t\tmode: \"single\",\n\t\tdateFormat: \"m/d/Y\",\n\t\tplugins: this.plugins,\n\t\tonOpen: () => { this.updateClassNames(); },\n\t\tvalue: this.value\n\t};\n\n\tprotected flatpickrInstance = null;\n\n\tconstructor(protected elementRef: ElementRef) { }\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.isFlatpickrLoaded()) {\n\t\t\tlet dates = this.flatpickrInstance.selectedDates;\n\t\t\tif (changes.value && this.didDateValueChange(changes.value.currentValue, changes.value.previousValue)) {\n\t\t\t\tdates = changes.value.currentValue;\n\t\t\t}\n\t\t\t// only reset the flatpickr instance on Input changes\n\t\t\tthis.flatpickrInstance = flatpickr(`#${this.id}`, this.flatpickrOptions);\n\t\t\tthis.setDateValues(dates);\n\t\t}\n\t}\n\n\t// because the actual view may be delayed in loading (think projection into a tab pane)\n\t// and because we rely on a library that operates outside the Angular view of the world\n\t// we need to keep trying to load the library, until the relevant DOM is actually live\n\tngAfterViewChecked() {\n\t\tif (!this.isFlatpickrLoaded()) {\n\t\t\tthis.flatpickrInstance = flatpickr(`#${this.id}`, this.flatpickrOptions);\n\n\t\t\t// if (and only if) the initialization succeeded, we can set the date values\n\t\t\tif (this.isFlatpickrLoaded()) {\n\t\t\t\tif (this.value.length > 0) {\n\t\t\t\t\tthis.setDateValues(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t@HostListener(\"focusin\")\n\tonFocus() {\n\t\tthis.onTouched();\n\t}\n\n\t/**\n\t * Writes a value from the model to the component. Expects the value to be `null` or `(Date | string)[]`\n\t * @param value value received from the model\n\t */\n\twriteValue(value: (Date | string)[]) {\n\t\tthis.value = value;\n\t\tthis.setDateValues(this.value);\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\tonTouched: () => any = () => {};\n\n\tpropagateChange = (_: any) => {};\n\n\t/**\n\t * Cleans up our flatpickr instance\n\t */\n\tngOnDestroy() {\n\t\tif (!this.isFlatpickrLoaded()) { return; }\n\t\tthis.flatpickrInstance.destroy();\n\t}\n\n\t/**\n\t * Handles the `valueChange` event from the primary/single input\n\t */\n\tonValueChange(event: string) {\n\t\tif (this.isFlatpickrLoaded()) {\n\t\t\tconst date = this.flatpickrInstance.parseDate(event, this.dateFormat);\n\t\t\tif (this.range) {\n\t\t\t\tthis.setDateValues([date, this.flatpickrInstance.selectedDates[1]]);\n\t\t\t} else {\n\t\t\t\tthis.setDateValues([date]);\n\t\t\t}\n\t\t\tthis.doSelect(this.flatpickrInstance.selectedDates);\n\t\t}\n\t}\n\n\t/**\n\t * Handles the `valueChange` event from the range input\n\t */\n\tonRangeValueChange(event: string) {\n\t\tif (this.isFlatpickrLoaded()) {\n\t\t\tconst date = this.flatpickrInstance.parseDate(event, this.dateFormat);\n\t\t\tthis.setDateValues([this.flatpickrInstance.selectedDates[0], date]);\n\t\t\tthis.doSelect(this.flatpickrInstance.selectedDates);\n\t\t}\n\t}\n\n\t/**\n\t * Carbon uses a number of specific classnames for parts of the flatpickr - this idempotent method applies them if needed.\n\t */\n\tprotected updateClassNames() {\n\t\tif (!this.elementRef) { return; }\n\n\t\t// get all the possible flatpickrs in the document - we need to add classes to (potentially) all of them\n\t\tconst calendarContainer = document.querySelectorAll(\".flatpickr-calendar\");\n\t\tconst monthContainer = document.querySelectorAll(\".flatpickr-month\");\n\t\tconst weekdaysContainer = document.querySelectorAll(\".flatpickr-weekdays\");\n\t\tconst weekdayContainer = document.querySelectorAll(\".flatpickr-weekday\");\n\t\tconst daysContainer = document.querySelectorAll(\".flatpickr-days\");\n\t\tconst dayContainer = document.querySelectorAll(\".flatpickr-day\");\n\n\t\t// add classes to lists of elements\n\t\tconst addClassIfNotExists = (classname: string, elementList: NodeListOf<Element>) => {\n\t\t\tArray.from(elementList).forEach(element => {\n\t\t\t\tif (!element.classList.contains(classname)) {\n\t\t\t\t\telement.classList.add(classname);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// add classes (but only if they don't exist, small perf win)\n\t\taddClassIfNotExists(\"bx--date-picker__calendar\", calendarContainer);\n\t\taddClassIfNotExists(\"bx--date-picker__month\", monthContainer);\n\t\taddClassIfNotExists(\"bx--date-picker__weekdays\", weekdaysContainer);\n\t\taddClassIfNotExists(\"bx--date-picker__days\", daysContainer);\n\n\t\t// add weekday classes and format the text\n\t\tArray.from(weekdayContainer).forEach(element => {\n\t\t\telement.innerHTML = element.innerHTML.replace(/\\s+/g, \"\");\n\t\t\telement.classList.add(\"bx--date-picker__weekday\");\n\t\t});\n\n\t\t// add day classes and special case the \"today\" element based on `this.value`\n\t\tArray.from(dayContainer).forEach(element => {\n\t\t\telement.classList.add(\"bx--date-picker__day\");\n\t\t\tif (!this.value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (element.classList.contains(\"today\") && this.value.length > 0) {\n\t\t\t\telement.classList.add(\"no-border\");\n\t\t\t} else if (element.classList.contains(\"today\") && this.value.length === 0) {\n\t\t\t\telement.classList.remove(\"no-border\");\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Applies the given date value array to both the flatpickr instance and the `input`(s)\n\t * @param dates the date values to apply\n\t */\n\tprotected setDateValues(dates: (Date | string)[]) {\n\t\tif (this.isFlatpickrLoaded()) {\n\t\t\tconst singleInput = this.elementRef.nativeElement.querySelector(`#${this.id}`);\n\t\t\tconst rangeInput = this.elementRef.nativeElement.querySelector(`#${this.id}-rangeInput`);\n\n\t\t\t// set the date on the instance\n\t\t\tthis.flatpickrInstance.setDate(dates);\n\n\t\t\t// we can either set a date value or an empty string, so we start with an empty string\n\t\t\tlet singleDate = \"\";\n\t\t\t// if date is a string, parse and format\n\t\t\tif (typeof dates[0] === \"string\") {\n\t\t\t\tsingleDate = this.flatpickrInstance.parseDate(dates[0], this.dateFormat);\n\t\t\t\tsingleDate = this.flatpickrInstance.formatDate(singleDate, this.dateFormat);\n\t\t\t// if date is not a string we can assume it's a Date and we should format\n\t\t\t} else if (!!dates[0]) {\n\t\t\t\tsingleDate = this.flatpickrInstance.formatDate(dates[0], this.dateFormat);\n\t\t\t}\n\t\t\t// apply the value\n\t\t\tsingleInput.value = singleDate;\n\n\t\t\tif (rangeInput) {\n\t\t\t\t// we can either set a date value or an empty string, so we start with an empty string\n\t\t\t\tlet rangeDate = \"\";\n\t\t\t\t// if date is a string, parse and format\n\t\t\t\tif (typeof dates[1] === \"string\") {\n\t\t\t\t\trangeDate = this.flatpickrInstance.parseDate(dates[1].toString(), this.dateFormat);\n\t\t\t\t\trangeDate = this.flatpickrInstance.formatDate(rangeDate, this.dateFormat);\n\t\t\t\t// if date is not a string we can assume it's a Date and we should format\n\t\t\t\t} else if (!!dates[1]) {\n\t\t\t\t\trangeDate = this.flatpickrInstance.formatDate(dates[1], this.dateFormat);\n\t\t\t\t}\n\t\t\t\t// apply the value\n\t\t\t\trangeInput.value = rangeDate;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected doSelect(selectedValue: (Date | string)[]) {\n\t\tthis.valueChange.emit(selectedValue);\n\t\tthis.propagateChange(selectedValue);\n\t}\n\n\tprotected didDateValueChange(currentValue, previousValue) {\n\t\treturn currentValue[0] !== previousValue[0] || currentValue[1] !== previousValue[1];\n\t}\n\n\t/**\n\t * More advanced checking of the loaded state of flatpickr\n\t */\n\tprotected isFlatpickrLoaded() {\n\t\t// cast the instance to a boolean, and some method that has to exist for the library to be loaded in this case `setDate`\n\t\treturn !!this.flatpickrInstance && !!this.flatpickrInstance.setDate;\n\t}\n}\n","import { DatePickerInputModule } from \"./../datepicker-input/datepicker-input.module\";\nimport { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { DatePicker } from \"./datepicker.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tDatePicker\n\t],\n\texports: [\n\t\tDatePicker,\n\t\tDatePickerInputModule\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tDatePickerInputModule\n\t]\n})\nexport class DatePickerModule { }\n","import {\n\tComponent,\n\tInput,\n\tElementRef,\n\tOnInit,\n\tOnDestroy\n} from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\n@Component({\n\tselector: \"ibm-documentation\",\n\ttemplate: `\n\t\t<iframe\n\t\t\tid=\"docsIframe\"\n\t\t\tstyle=\"width: 100vw; height: 100vh;\"\n\t\t\t(load)=\"onLoad()\"\n\t\t\t[src]=\"src\">\n\t\t</iframe>\n\t`\n})\nexport class Documentation implements OnInit, OnDestroy {\n\t@Input() set src(src: string) {\n\t\tthis._src = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n\t}\n\tget src() {\n\t\treturn this._src;\n\t}\n\n\tprotected _src;\n\n\tconstructor(protected elementRef: ElementRef, protected sanitizer: DomSanitizer) {}\n\n\tngOnInit() {\n\t\tdocument.querySelector(\"html\").style.overflow = \"hidden\";\n\t\tdocument.querySelector(\".sb-show-main\").classList.add(\"full-page\");\n\t}\n\tngOnDestroy() {\n\t\tdocument.querySelector(\"html\").style.overflow = \"auto\";\n\t\tdocument.querySelector(\".sb-show-main\").classList.remove(\"full-page\");\n\t}\n\n\tonLoad() {\n\t\tconst docsIframe = this.elementRef.nativeElement.querySelector(\"#docsIframe\");\n\t\tconst docsDocument = docsIframe.contentDocument || docsIframe.contentWindow.document;\n\t\tconst docsBody = docsDocument.querySelector(\"body\");\n\n\t\tconst mainContent = docsBody.querySelector(\".content\");\n\t\tmainContent.style.width = \"100%\";\n\t\tmainContent.style.left = 0;\n\n\t\tconst menuContent = docsBody.querySelector(\".hidden-xs.menu\");\n\t\tmenuContent.style.display = \"none\";\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Documentation } from \"./documentation.component\";\n\nexport { Documentation } from \"./documentation.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tDocumentation\n\t],\n\texports: [\n\t\tDocumentation\n\t],\n\timports: [\n\t\tCommonModule\n\t]\n})\nexport class DocumentationModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CheckmarkFilled16 = /** @class */ (function () {\n function CheckmarkFilled16() {\n this.focusable = false;\n }\n CheckmarkFilled16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-checkmark-filled16\",\n template: \"\\n <svg\\n ibmIconCheckmarkFilled16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CheckmarkFilled16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CheckmarkFilled16;\n}());\nexport { CheckmarkFilled16 };\nvar CheckmarkFilled16Directive = /** @class */ (function () {\n function CheckmarkFilled16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CheckmarkFilled16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zM7 11L4.3 8.3l.9-.8L7 9.3l4-3.9.9.8L7 11z\\\"></path><path d=\\\"M7 11L4.3 8.3l.9-.8L7 9.3l4-3.9.9.8L7 11z\\\" data-icon-path=\\\"inner-path\\\" opacity=\\\"0\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CheckmarkFilled16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"checkmark-filled16-\" + CheckmarkFilled16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"checkmark-filled16-\" + CheckmarkFilled16Directive.titleIdCounter);\n }\n };\n CheckmarkFilled16Directive.titleIdCounter = 0;\n CheckmarkFilled16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCheckmarkFilled16]\"\n },] },\n ];\n /** @nocollapse */\n CheckmarkFilled16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CheckmarkFilled16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CheckmarkFilled16Directive;\n}());\nexport { CheckmarkFilled16Directive };\nvar CheckmarkFilled16Module = /** @class */ (function () {\n function CheckmarkFilled16Module() {\n }\n CheckmarkFilled16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CheckmarkFilled16,\n CheckmarkFilled16Directive\n ],\n exports: [\n CheckmarkFilled16,\n CheckmarkFilled16Directive\n ]\n },] },\n ];\n return CheckmarkFilled16Module;\n}());\nexport { CheckmarkFilled16Module };\n//# sourceMappingURL=16.js.map","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tViewChild,\n\tEventEmitter,\n\tOnInit\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { I18n } from \"../i18n/i18n.module\";\nimport { FileItem } from \"./file-item.interface\";\n\nconst noop = () => {};\n\n/**\n * [See demo](../../?path=/story/file-uploader--basic)\n *\n * <example-url>../../iframe.html?id=file-uploader--basic</example-url>\n *\n * @export\n * @class FileUploader\n * @implements {OnInit}\n */\n@Component({\n\tselector: \"ibm-file-uploader\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"!skeleton; else skeletonTemplate\">\n\t\t\t<strong class=\"bx--file--label\">{{title}}</strong>\n\t\t\t<p class=\"bx--label-description\">{{description}}</p>\n\t\t\t<div class=\"bx--file\">\n\t\t\t\t<button\n\t\t\t\t\tibmButton=\"primary\"\n\t\t\t\t\t(click)=\"fileInput.click()\"\n\t\t\t\t\t[attr.for]=\"fileUploaderId\">\n\t\t\t\t\t{{buttonText}}\n\t\t\t\t</button>\n\t\t\t\t<input\n\t\t\t\t\t#fileInput\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\tclass=\"bx--file-input\"\n\t\t\t\t\t[accept]=\"accept\"\n\t\t\t\t\t[id]=\"fileUploaderId\"\n\t\t\t\t\t[multiple]=\"multiple\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t(change)=\"onFilesAdded()\"/>\n\t\t\t\t<div class=\"bx--file-container\">\n\t\t\t\t\t<ibm-file *ngFor=\"let fileItem of files\" [fileItem]=\"fileItem\" (remove)=\"removeFile(fileItem)\"></ibm-file>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-template #skeletonTemplate>\n\t\t\t<div class=\"bx--skeleton__text\" style=\"width: 100px\"></div>\n\t\t\t<div class=\"bx--skeleton__text\" style=\"width: 225px\"></div>\n\t\t\t<button ibmButton skeleton=\"true\"></button>\n\t\t</ng-template>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: FileUploader,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class FileUploader implements OnInit {\n\t/**\n\t * Counter used to create unique ids for file-uploader components\n\t */\n\tstatic fileUploaderCount = 0;\n\t/**\n\t * Accessible text for the button that opens the upload window.\n\t *\n\t * Defaults to the `FILE_UPLOADER.OPEN` value from the i18n service\n\t */\n\t@Input() buttonText = this.i18n.get().FILE_UPLOADER.OPEN;\n\t/**\n\t * Text set to the title\n\t */\n\t@Input() title: string;\n\t/**\n\t * Text set to the description\n\t */\n\t@Input() description: string;\n\t/**\n\t * Specify the types of files that the input should be able to receive\n\t */\n\t@Input() accept = [];\n\t/**\n\t * Set to `false` to tell the component to only accept a single file on upload.\n\t *\n\t * Defaults to `true`. Accepts multiple files.\n\t */\n\t@Input() multiple = true;\n\t/**\n\t * Set to `true` for a loading file uploader.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Provides a unique id for the underlying <input> node\n\t */\n\t@Input() fileUploaderId = `file-uploader-${FileUploader.fileUploaderCount}`;\n\t/**\n\t * Maintains a reference to the view DOM element of the underlying <input> node\n\t */\n\t@ViewChild(\"fileInput\") fileInput;\n\t/**\n\t * The list of files that have been submitted to be uploaded\n\t */\n\t@Input() files: Set<FileItem>;\n\t@Output() filesChange = new EventEmitter<any>();\n\n\tprotected onTouchedCallback: () => void = noop;\n\tprotected onChangeCallback: (_: Set<FileItem>) => void = noop;\n\n\tconstructor(protected i18n: I18n) {\n\t\tFileUploader.fileUploaderCount++;\n\t}\n\n\t/**\n\t * Specifies the property to be used as the return value to `ngModel`\n\t */\n\tget value(): Set<FileItem> {\n\t\treturn this.files;\n\t}\n\tset value(v: Set<FileItem>) {\n\t\tif (v !== this.files) {\n\t\t\tthis.files = v;\n\t\t\tthis.onChangeCallback(v);\n\t\t}\n\t}\n\n\tngOnInit() {\n\t\t// overrides the undefined files value set by the user\n\t\tif (!this.files) {\n\t\t\tthis.files = new Set();\n\t\t\tthis.filesChange.emit(this.files);\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.onTouchedCallback();\n\t}\n\n\t/**\n\t * Propagates the injected `value`.\n\t */\n\twriteValue(value: Set<FileItem>) {\n\t\tif (value !== this.value) {\n\t\t\tthis.files = value;\n\t\t}\n\t}\n\n\tonFilesAdded() {\n\t\tconst files = this.fileInput.nativeElement.files;\n\t\tif (!this.multiple) {\n\t\t\tthis.files.clear();\n\t\t}\n\t\tfor (let file of files) {\n\t\t\tconst fileItem: FileItem = {\n\t\t\t\tuploaded: false,\n\t\t\t\tstate: \"edit\",\n\t\t\t\tfile: file\n\t\t\t};\n\t\t\tthis.files.add(fileItem);\n\t\t\tthis.filesChange.emit(this.files);\n\t\t}\n\n\t\tthis.value = this.files;\n\t}\n\n\tremoveFile(fileItem) {\n\t\tthis.files.delete(fileItem);\n\t\tthis.fileInput.nativeElement.value = \"\";\n\t\tthis.filesChange.emit(this.files);\n\t}\n\n\t/**\n\t * Registers the injected function to control the touch use of the `FileUploader`.\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedCallback = fn;\n\t}\n\t/**\n\t * Sets a method in order to propagate changes back to the form.\n\t */\n\tregisterOnChange(fn: any) {\n\t\tthis.onChangeCallback = fn;\n\t}\n}\n","\nimport {\n\tComponent,\n\tInput,\n\tOutput,\n\tViewChild,\n\tEventEmitter,\n\tOnInit,\n\tHostBinding\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { I18n } from \"../i18n/i18n.module\";\nimport { FileItem } from \"./file-item.interface\";\n\n@Component({\n\tselector: \"ibm-file\",\n\ttemplate: `\n\t\t<p class=\"bx--file-filename\">{{fileItem.file.name}}</p>\n\t\t<span\n\t\t\t*ngIf=\"fileItem.state === 'edit'\"\n\t\t\tclass=\"bx--file__state-container\"\n\t\t\t(click)=\"remove.emit()\"\n\t\t\t(keyup.enter)=\"remove.emit()\"\n\t\t\t(keyup.space)=\"remove.emit()\"\n\t\t\ttabindex=\"0\">\n\t\t\t<ibm-icon-close16\n\t\t\t\tclass=\"bx--file-close\"\n\t\t\t\t[ariaLabel]=\"translations.REMOVE_BUTTON\">\n\t\t\t</ibm-icon-close16>\n\t\t</span>\n\t\t<span *ngIf=\"fileItem.state === 'upload'\">\n\t\t\t<ibm-loading size=\"sm\"></ibm-loading>\n\t\t</span>\n\t\t<span\n\t\t\t*ngIf=\"fileItem.state === 'complete'\"\n\t\t\tclass=\"bx--file__state-container\"\n\t\t\ttabindex=\"0\">\n\t\t\t<ibm-icon-checkmark-filled16\n\t\t\t\tclass=\"bx--file-complete\"\n\t\t\t\t[ariaLabel]=\"translations.CHECKMARK\">\n\t\t\t</ibm-icon-checkmark-filled16>\n\t\t</span>\n\t`\n})\nexport class File {\n\t/**\n\t * Accessible translations for the close and complete icons\n\t */\n\t@Input() translations = this.i18n.get().FILE_UPLOADER;\n\t/**\n\t * A single `FileItem` from the set of `FileItem`s\n\t */\n\t@Input() fileItem: FileItem;\n\n\t@Output() remove = new EventEmitter();\n\n\t@HostBinding(\"class.bx--file__selected-file\") selectedFile = true;\n\n\tconstructor(protected i18n: I18n) {}\n}\n","import { Component, Input, HostBinding } from \"@angular/core\";\nimport { I18n } from \"./../i18n/i18n.module\";\n\n/**\n * [See demo](../../?path=/story/loading--basic)\n *\n * <example-url>../../iframe.html?id=loading--basic</example-url>\n *\n * @export\n * @class Loading\n */\n@Component({\n\tselector: \"ibm-loading\",\n\ttemplate: `\n\t\t<div\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--loading--small': size === 'sm',\n\t\t\t\t'bx--loading--stop': !isActive && !overlay,\n\t\t\t\t'bx--loading-overlay--stop': !isActive && overlay\n\t\t\t}\"\n\t\t\tclass=\"bx--loading\">\n\t\t\t<svg class=\"bx--loading__svg\" viewBox=\"-75 -75 150 150\">\n\t\t\t\t<title>{{title}}</title>\n\t\t\t\t<circle class=\"bx--loading__stroke\" cx=\"0\" cy=\"0\" r=\"37.5\" />\n\t\t\t</svg>\n\t\t</div>\n\t`\n})\nexport class Loading {\n\t/**\n\t * Accessible title for the loading circle.\n\t * Defaults to the `LOADING.TITLE` value from the i18n service.\n\t */\n\t@Input() title = this.i18n.get().LOADING.TITLE;\n\n\t/**\n\t * set to `false` to stop the loading animation\n\t * @type {boolean}\n\t */\n\t@Input() isActive = true;\n\n\t/**\n\t * Specify the size of the button\n\t * @type {(\"normal\" | \"sm\")}\n\t */\n\t@Input() size: \"normal\" | \"sm\" = \"normal\";\n\n\t/**\n\t * Set to `true` to make loader with an overlay.\n\t * @type {boolean}\n\t */\n\t@Input() @HostBinding(\"class.bx--loading-overlay\") overlay = false;\n\n\tconstructor(protected i18n: I18n) {}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Loading } from \"./loading.component\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\n\nexport { Loading } from \"./loading.component\";\n\n@NgModule({\n\tdeclarations: [Loading],\n\texports: [Loading],\n\timports: [CommonModule, I18nModule]\n})\nexport class LoadingModule {}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\nimport { CheckmarkFilled16Module } from \"@carbon/icons-angular/lib/checkmark--filled/16\";\n\nimport { FileUploader } from \"./file-uploader.component\";\nimport { File } from \"./file.component\";\nimport { ButtonModule } from \"../button/button.module\";\nimport { LoadingModule } from \"../loading/loading.module\";\n\nexport { FileUploader } from \"./file-uploader.component\";\n\n@NgModule({\n\tdeclarations: [FileUploader, File],\n\texports: [FileUploader],\n\timports: [\n\t\tCommonModule,\n\t\tButtonModule,\n\t\tLoadingModule,\n\t\tClose16Module,\n\t\tCheckmarkFilled16Module\n\t]\n})\nexport class FileUploaderModule { }\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { I18nModule } from \"../i18n/i18n.module\";\nimport { Toggle } from \"../toggle/toggle.component\";\n\n// exports\nexport { Toggle } from \"../toggle/toggle.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tToggle\n\t],\n\texports: [\n\t\tToggle\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tI18nModule\n\t]\n})\nexport class ToggleModule { }\n","import {\n\tAfterContentInit,\n\tChangeDetectorRef,\n\tContentChildren,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInput,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tRenderer2,\n\tHostBinding,\n\tAfterViewInit\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { Radio } from \"./radio.component\";\n\n/**\n * Used to emit changes performed on a `Radio`.\n * @export\n * @class RadioChange\n */\nexport class RadioChange {\n\t/**\n\t * Contains the `Radio` that has been changed.\n\t */\n\tsource: Radio | null;\n\t/**\n\t * The value of the `Radio` encompassed in the `RadioChange` class.\n\t */\n\tvalue: string;\n\n\tconstructor(source: Radio, value: string) {\n\t\tthis.source = source;\n\t\tthis.value = value;\n\t}\n}\n\n/**\n * [See demo](../../?path=/story/radio--basic)\n *\n * class: RadioGroup\n *\n * selector: `ibm-radio-group`\n *\n * source: `src/forms/radio.component.ts`\n *\n *\n * Ex:\n * ```html\n * <ibm-radio-group [(ngModel)]=\"radio\">\n * \t<ibm-radio *ngFor=\"let one of manyRadios\" [value]=\"one\">\n *\t\tRadio {{one}}\n * \t</ibm-radio>\n * </ibm-radio-group>\n *\n * Radio selected: {{radio}}\n * ```\n *\n * ```typescript\n * manyRadios = [\"one\", \"two\", \"three\", \"four\", \"five\", \"six\"];\n * ```\n *\n * Also see: [`Radio`](#ibm-radio)\n *\n * <example-url>../../iframe.html?id=radio--basic</example-url>\n */\n@Component({\n\tselector: \"ibm-radio-group\",\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"bx--radio-button-group\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--radio-button-group--vertical': orientation === 'vertical',\n\t\t\t\t'bx--radio-button-group--label-left': orientation === 'vertical' && labelPlacement === 'left'\n\t\t\t}\"\n\t\t\trole=\"radiogroup\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: RadioGroup,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class RadioGroup implements AfterContentInit, AfterViewInit, ControlValueAccessor {\n\t/**\n\t * Used for creating the `RadioGroup` 'name' property dynamically.\n\t */\n\tstatic radioGroupCount = 0;\n\n\t@Input() orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\n\n\t@Input() labelPlacement: \"right\" | \"left\" = \"right\";\n\n\t/**\n\t * Emits event notifying other classes of a change using a `RadioChange` class.\n\t */\n\t@Output() change: EventEmitter<RadioChange> = new EventEmitter<RadioChange>();\n\n\t/**\n\t * The `Radio` input items in the `RadioGroup`.\n\t */\n\t// tslint:disable-next-line:no-forward-ref\n\t@ContentChildren(forwardRef(() => Radio)) radios: QueryList<Radio>;\n\n\t/**\n\t * Sets the passed in `Radio` item as the selected input within the `RadioGroup`.\n\t */\n\t@Input()\n\tset selected(selected: Radio | null) {\n\t\tthis._selected = selected;\n\t\tthis.value = selected ? selected.value : null;\n\t\tthis.checkSelectedRadio();\n\t}\n\n\t/**\n\t * Returns the `Radio` that is selected within the `RadioGroup`.\n\t */\n\tget selected() {\n\t\treturn this._selected;\n\t}\n\n\t/**\n\t * Sets the value/state of the selected `Radio` within the `RadioGroup` to the passed in value.\n\t */\n\t@Input()\n\tset value(newValue: any) {\n\t\tif (this._value !== newValue) {\n\t\t\tthis._value = newValue;\n\n\t\t\tthis.updateSelectedRadioFromValue();\n\t\t\tthis.checkSelectedRadio();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value/state of the selected `Radio` within the `RadioGroup`.\n\t */\n\tget value() {\n\t\treturn this._value;\n\t}\n\n\t/**\n\t * Replaces the name associated with the `RadioGroup` with the provided parameter.\n\t */\n\t@Input()\n\tset name(name: string) {\n\t\tthis._name = name;\n\t\tthis.updateRadios();\n\t}\n\t/**\n\t * Returns the associated name of the `RadioGroup`.\n\t */\n\tget name() {\n\t\treturn this._name;\n\t}\n\n\t/**\n\t * Set to true to disable the whole radio group\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * Returns the skeleton value in the `RadioGroup` if there is one.\n\t */\n\t@Input()\n\tget skeleton(): any {\n\t\treturn this._skeleton;\n\t}\n\n\t/**\n\t * Sets the skeleton value for all `Radio` to the skeleton value of `RadioGroup`.\n\t */\n\tset skeleton(value: any) {\n\t\tthis._skeleton = value;\n\t\tthis.updateChildren();\n\t}\n\n\t/**\n\t * Binds 'bx--form-item' value to the class for `RadioGroup`.\n\t */\n\t@HostBinding(\"class.bx--form-item\") radioButtonGroupClass = true;\n\n\t/**\n\t * To track whether the `RadioGroup` has been initialized.\n\t */\n\tprotected isInitialized = false;\n\t/**\n\t * Reflects whether or not the input is disabled and cannot be selected.\n\t */\n\tprotected _disabled = false;\n\t/**\n\t * Reflects whether or not the dropdown is loading.\n\t */\n\tprotected _skeleton = false;\n\t/**\n\t * The value of the selected option within the `RadioGroup`.\n\t */\n\tprotected _value: any = null;\n\t/**\n\t * The `Radio` within the `RadioGroup` that is selected.\n\t */\n\tprotected _selected: Radio = null;\n\t/**\n\t * The name attribute associated with the `RadioGroup`.\n\t */\n\tprotected _name = `radio-group-${RadioGroup.radioGroupCount++}`;\n\n\t/**\n\t * Updates the selected `Radio` to be checked (selected).\n\t */\n\tcheckSelectedRadio() {\n\t\tif (this.selected && !this._selected.checked) {\n\t\t\tthis.selected.checked = true;\n\t\t}\n\t}\n\n\t/**\n\t * Use the value of the `RadioGroup` to update the selected radio to the right state (selected state).\n\t */\n\tupdateSelectedRadioFromValue() {\n\t\tlet alreadySelected = this._selected != null && this._selected.value === this._value;\n\n\t\tif (this.radios && !alreadySelected) {\n\t\t\tthis._selected = null;\n\t\t\tthis.radios.forEach(radio => {\n\t\t\t\tif (radio.checked) {\n\t\t\t\t\tthis._selected = radio;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Creates a class of `RadioChange` to emit the change in the `RadioGroup`.\n\t */\n\temitChangeEvent(event: RadioChange) {\n\t\tthis.change.emit(event);\n\t\tthis.propagateChange(event.value);\n\t\tthis.onTouched();\n\t}\n\n\tupdateRadioNames() {\n\t\tconsole.warn(\"updateRadioNames had been deprecated. Use updateRadios instead\");\n\t\tthis.updateRadios();\n\t}\n\n\t/**\n\t * Synchronizes radio properties.\n\t */\n\tupdateRadios() {\n\t\tif (this.radios) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.radios.forEach(radio => radio.name = this.name);\n\t\t\t\tif (this.labelPlacement === \"left\") {\n\t\t\t\t\tthis.radios.forEach(radio => radio.labelPlacement = \"left\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Updates the value of the `RadioGroup` using the provided parameter.\n\t */\n\twriteValue(value: any) {\n\t\tthis.value = value;\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.radios.changes.subscribe(() => {\n\t\t\tthis.updateRadios();\n\t\t\tthis.updateRadioChangeHandler();\n\t\t});\n\n\t\tthis.updateChildren();\n\t\tthis.updateRadioChangeHandler();\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.updateRadios();\n\t}\n\n\t/**\n\t * Used to set method to propagate changes back to the form.\n\t */\n\tpublic registerOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registers a callback to be triggered when the control has been touched.\n\t * @param fn Callback to be triggered when the checkbox is touched.\n\t */\n\tpublic registerOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/**\n\t * Needed to properly implement ControlValueAccessor.\n\t */\n\tonTouched: () => any = () => {};\n\n\t/**\n\t * Method set in registerOnChange to propagate changes back to the form.\n\t */\n\tpropagateChange = (_: any) => {};\n\n\tprotected updateChildren() {\n\t\tif (this.radios) {\n\t\t\tthis.radios.forEach(child => child.skeleton = this.skeleton);\n\t\t}\n\t}\n\n\tprotected updateRadioChangeHandler() {\n\t\tthis.radios.forEach(radio => {\n\t\t\tradio.registerRadioChangeHandler((event: RadioChange) => {\n\t\t\t\t// update selected and value from the event\n\t\t\t\tthis._selected = event.source;\n\t\t\t\tthis._value = event.value;\n\t\t\t\t// bubble the event\n\t\t\t\tthis.emitChangeEvent(event);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tInput,\n\tOnInit,\n\tOptional,\n\tRenderer2,\n\tHostBinding,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Checkbox } from \"../checkbox/checkbox.component\";\nimport { RadioGroup, RadioChange } from \"./radio-group.component\";\n\n/**\n * class: Radio (extends Checkbox)\n *\n * selector: `n-radio`\n *\n * source: `src/forms/radio.component.ts`\n *\n * ```html\n * <ibm-radio [(ngModel)]=\"radioState\">Radio</ibm-radio>\n * ```\n *\n * Also see: [`RadioGroup`](#ibm-radio-group)\n *\n * @export\n * @class Radio\n * @extends {Checkbox}\n * @implements {OnInit}\n */\n@Component({\n\tselector: \"ibm-radio\",\n\ttemplate: `\n\t\t<input\n\t\t\t*ngIf=\"!skeleton\"\n\t\t\tclass=\"bx--radio-button\"\n\t\t\ttype=\"radio\"\n\t\t\t[checked]=\"checked\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[name]=\"name\"\n\t\t\t[id]=\"id\"\n\t\t\t[required]=\"required\"\n\t\t\t[value]=\"value\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t(change)=\"onChange($event)\">\n\t\t<div *ngIf=\"skeleton\" class=\"bx--radio-button bx--skeleton\"></div>\n\t\t<label\n\t\t\tclass=\"bx--radio-button__label\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\"\n\t\t\t[for]=\"id\"\n\t\t\tid=\"label-{{id}}\">\n\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t<ng-content></ng-content>\n\t\t</label>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Radio,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Radio {\n\t/**\n\t * Used to dynamically create unique ids for the `Radio`.\n\t */\n\tstatic radioCount = 0;\n\n\t@Input() checked = false;\n\n\t@Input() name = \"\";\n\n\t@Input() disabled = false;\n\n\t@Input() labelPlacement: \"right\" | \"left\" = \"right\";\n\n\t@Input() set ariaLabelledby(value: string) {\n\t\tthis._labelledby = value;\n\t}\n\n\tget ariaLabelledby() {\n\t\tif (this._labelledby) {\n\t\t\treturn this._labelledby;\n\t\t}\n\t\treturn `label-${this.id}`;\n\t}\n\t/**\n\t * Sets the HTML required attribute\n\t */\n\t@Input() required = false;\n\t/**\n\t * The value of the `Radio`.\n\t */\n\t@Input() value = \"\";\n\t/**\n\t * Set to `true` for a loading table.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * The id for the `Radio`.\n\t */\n\t@Input() id = `radio-${Radio.radioCount++}`;\n\t/**\n\t * emits when the state of the radio changes\n\t */\n\t@Output() change = new EventEmitter<RadioChange>();\n\t/**\n\t * Binds 'radio' value to the role attribute for `Radio`.\n\t */\n\t@HostBinding(\"attr.role\") role = \"radio\";\n\n\t@HostBinding(\"class.bx--radio-button-wrapper\") hostClass = true;\n\n\t@HostBinding(\"class.bx--radio-button-wrapper--label-left\") get labelLeft() {\n\t\treturn this.labelPlacement === \"left\";\n\t}\n\n\tprotected _labelledby = \"\";\n\n\t/**\n\t * Handler provided by the `RadioGroup` to bubble events up\n\t */\n\tradioChangeHandler = (event: RadioChange) => {};\n\n\t/**\n\t * Synchronizes with the `RadioGroup` in the event of a changed `Radio`.\n\t * Emits the changes of both the `RadioGroup` and `Radio`.\n\t */\n\tonChange(event: Event) {\n\t\tevent.stopPropagation();\n\t\tthis.checked = (event.target as HTMLInputElement).checked;\n\t\tconst radioEvent = new RadioChange(this, this.value);\n\t\tthis.change.emit(radioEvent);\n\t\tthis.radioChangeHandler(radioEvent);\n\t}\n\n\t/**\n\t * Method called by `RadioGroup` with a callback function to bubble `RadioChange` events\n\t * @param fn callback that expects a `RadioChange` as an argument\n\t */\n\tregisterRadioChangeHandler(fn: (event: RadioChange) => void) {\n\t\tthis.radioChangeHandler = fn;\n\t}\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { Radio } from \"../radio/radio.component\";\nimport { RadioGroup } from \"../radio/radio-group.component\";\n\n\n// exports\nexport { Radio } from \"../radio/radio.component\";\nexport { RadioGroup } from \"../radio/radio-group.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tRadio,\n\t\tRadioGroup\n\t],\n\texports: [\n\t\tRadio,\n\t\tRadioGroup\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule\n\t]\n})\nexport class RadioModule { }\n","import {\n\tComponent,\n\tInput,\n\tAfterContentInit,\n\tElementRef,\n\tHostBinding,\n\tTemplateRef,\n\tViewChild\n} from \"@angular/core\";\n\n/**\n * [See demo](../../?path=/story/input--label)\n *\n * ```html\n * <ibm-label labelState=\"success\">\n * \t<label label>Field with success</label>\n * \t<input type=\"text\" class=\"input-field\">\n * </ibm-label>\n *\n * <ibm-label labelState=\"warning\">\n * \t<label label>Field with warning</label>\n * \t<input type=\"text\" class=\"input-field\">\n * </ibm-label>\n *\n * <ibm-label labelState=\"error\">\n * \t<label label>Field with error</label>\n * \t<input type=\"text\" class=\"input-field\">\n * </ibm-label>\n * ```\n *\n * <example-url>../../iframe.html?id=input--label</example-url>\n *\n * @export\n * @class Label\n * @implements {AfterContentInit}\n */\n@Component({\n\tselector: \"ibm-label\",\n\ttemplate: `\n\t\t<label\n\t\t\t[for]=\"labelInputID\"\n\t\t\tclass=\"bx--label\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\">\n\t\t\t<ng-content></ng-content>\n\t\t</label>\n\t\t<div *ngIf=\"!skeleton\" class=\"bx--form__helper-text\">{{helperText}}</div>\n\t\t<div class=\"bx--text-input__field-wrapper\" [attr.data-invalid]=\"(invalid ? true : null)\" #wrapper>\n\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t*ngIf=\"invalid\"\n\t\t\t\tclass=\"bx--text-input__invalid-icon bx--text-area__invalid-icon\">\n\t\t\t</ibm-icon-warning-filled16>\n\t\t\t<ng-content select=\"input,textarea,div\"></ng-content>\n\t\t</div>\n\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t</div>\n\t`\n})\nexport class Label implements AfterContentInit {\n\t/**\n\t * Used to build the id of the input item associated with the `Label`.\n\t * @static\n\t * @memberof Label\n\t */\n\tstatic labelCounter = 0;\n\t/**\n\t * The id of the input item associated with the `Label`. This value is also used to associate the `Label` with\n\t * its input counterpart through the 'for' attribute.\n\t * @memberof Label\n\t */\n\tlabelInputID = \"ibm-label-\" + Label.labelCounter;\n\n\t/**\n\t * State of the `Label` will determine the styles applied.\n\t * @type {(\"success\" | \"warning\" | \"error\" | \"\")}\n\t * @memberof Label\n\t */\n\t@Input() labelState: \"success\" | \"warning\" | \"error\" | \"\" = \"\";\n\t/**\n\t * Set to `true` for a loading label.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Optional helper text that appears under the label.\n\t */\n\t@Input() helperText: string;\n\t/**\n\t * Sets the invalid text.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Set to `true` for an invalid label component.\n\t */\n\t@Input() invalid = false;\n\n\t@ViewChild(\"wrapper\") wrapper: ElementRef<HTMLDivElement>;\n\n\t@HostBinding(\"class.bx--form-item\") labelClass = true;\n\n\t/**\n\t * Creates an instance of Label.\n\t * @memberof Label\n\t */\n\tconstructor() {\n\t\tLabel.labelCounter++;\n\t}\n\n\t/**\n\t * Sets the id on the input item associated with the `Label`.\n\t * @memberof Label\n\t */\n\tngAfterContentInit() {\n\t\tthis.wrapper.nativeElement.querySelector(\"input,textarea,div\").setAttribute(\"id\", this.labelInputID);\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import { Directive, HostBinding, Input } from \"@angular/core\";\n\n/**\n * A directive for applying styling to an input element.\n *\n * Example:\n *\n * ```html\n * <input ibmText/>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n\tselector: \"[ibmText]\"\n})\nexport class TextInput {\n\t/**\n\t * `light` or `dark` input theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@HostBinding(\"class.bx--text-input\") inputClass = true;\n\t@HostBinding(\"class.bx--text-input--invalid\") @Input() invalid = false;\n\t@HostBinding(\"class.bx--skeleton\") @Input() skeleton = false;\n\t@HostBinding(\"class.bx--text-input--light\") get isLightTheme() {\n\t\treturn this.theme === \"light\";\n\t}\n}\n","import { Directive, HostBinding, Input } from \"@angular/core\";\n\n/**\n * A directive for applying styling to a textarea element.\n *\n * Example:\n *\n * ```html\n * <textarea ibmTextArea></textarea>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.\n */\n@Directive({\n\tselector: \"[ibmTextArea]\"\n})\nexport class TextArea {\n\t/**\n\t * `light` or `dark` input theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@HostBinding(\"class.bx--text-area\") baseClass = true;\n\t@HostBinding(\"class.bx--text-area--invalid\") @Input() invalid = false;\n\t@HostBinding(\"class.bx--skeleton\") @Input() skeleton = false;\n\t@HostBinding(\"class.bx--text-area--light\") get isLightTheme() {\n\t\treturn this.theme === \"light\";\n\t}\n}\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar WarningFilled16 = /** @class */ (function () {\n function WarningFilled16() {\n this.focusable = false;\n }\n WarningFilled16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-warning-filled16\",\n template: \"\\n <svg\\n ibmIconWarningFilled16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n WarningFilled16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return WarningFilled16;\n}());\nexport { WarningFilled16 };\nvar WarningFilled16Directive = /** @class */ (function () {\n function WarningFilled16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n WarningFilled16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1C4.2 1 1 4.2 1 8s3.2 7 7 7 7-3.1 7-7-3.1-7-7-7zm-.5 3h1v5h-1V4zm.5 8.2c-.4 0-.8-.4-.8-.8s.3-.8.8-.8c.4 0 .8.4.8.8s-.4.8-.8.8z\\\"></path><path d=\\\"M7.5 4h1v5h-1V4zm.5 8.2c-.4 0-.8-.4-.8-.8s.3-.8.8-.8c.4 0 .8.4.8.8s-.4.8-.8.8z\\\" data-icon-path=\\\"inner-path\\\" opacity=\\\"0\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n WarningFilled16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"warning-filled16-\" + WarningFilled16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"warning-filled16-\" + WarningFilled16Directive.titleIdCounter);\n }\n };\n WarningFilled16Directive.titleIdCounter = 0;\n WarningFilled16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconWarningFilled16]\"\n },] },\n ];\n /** @nocollapse */\n WarningFilled16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n WarningFilled16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return WarningFilled16Directive;\n}());\nexport { WarningFilled16Directive };\nvar WarningFilled16Module = /** @class */ (function () {\n function WarningFilled16Module() {\n }\n WarningFilled16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n WarningFilled16,\n WarningFilled16Directive\n ],\n exports: [\n WarningFilled16,\n WarningFilled16Directive\n ]\n },] },\n ];\n return WarningFilled16Module;\n}());\nexport { WarningFilled16Module };\n//# sourceMappingURL=16.js.map","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { Label } from \"./label.component\";\nimport { TextInput } from \"./input.directive\";\nimport { TextArea } from \"./text-area.directive\";\nimport { WarningFilled16Module } from \"@carbon/icons-angular/lib/warning--filled/16\";\n\n@NgModule({\n\tdeclarations: [\n\t\tLabel,\n\t\tTextInput,\n\t\tTextArea\n\t],\n\texports: [\n\t\tLabel,\n\t\tTextInput,\n\t\tTextArea\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tWarningFilled16Module\n\t]\n})\nclass InputModule { }\n\nexport { TextInput, Label, InputModule };\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n// imports\nimport { CheckboxModule } from \"../checkbox/checkbox.module\";\nimport { ToggleModule } from \"../toggle/toggle.module\";\nimport { RadioModule } from \"../radio/radio.module\";\nimport { InputModule } from \"../input/input.module\";\nimport { ButtonModule } from \"../button/button.module\";\n\n// exports\nexport { CheckboxModule } from \"../checkbox/checkbox.module\";\nexport { ToggleModule } from \"../toggle/toggle.module\";\nexport { RadioModule } from \"../radio/radio.module\";\nexport { InputModule } from \"../input/input.module\";\nexport { ButtonModule } from \"../button/button.module\";\n\n@NgModule({\n\texports: [\n\t\tCheckboxModule,\n\t\tToggleModule,\n\t\tRadioModule,\n\t\tInputModule,\n\t\tButtonModule\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tCheckboxModule,\n\t\tToggleModule,\n\t\tRadioModule,\n\t\tInputModule,\n\t\tButtonModule\n\t]\n})\nexport class NFormsModule { }\n","import { Directive, HostBinding, Input, OnInit } from \"@angular/core\";\n\n/**\n * [See demo](../../?path=/story/grid--basic)\n *\n * <example-url>../../iframe.html?id=grid--basic</example-url>\n *\n * @export\n * @class GridDirective\n */\n@Directive({\n\tselector: \"[ibmGrid]\"\n})\nexport class GridDirective {\n\t@HostBinding(\"class.bx--grid\") baseClass = true;\n}\n\n@Directive({\n\tselector: \"[ibmRow]\"\n})\nexport class RowDirective {\n\t@HostBinding(\"class.bx--row\") baseClass = true;\n}\n\n@Directive({\n\tselector: \"[ibmCol]\"\n})\nexport class ColumnDirective implements OnInit {\n\t@Input() class = \"\";\n\n\t@Input() columnNumbers = {};\n\n\t@Input() offsets = {};\n\n\tprotected _columnClasses: string[] = [];\n\n\t@HostBinding(\"class\")\n\tget columnClasses(): string {\n\t\treturn this._columnClasses.join(\" \");\n\t}\n\n\tset(classes: string) {\n\t\tthis._columnClasses = classes.split(\" \");\n\t}\n\n\tngOnInit() {\n\t\ttry {\n\t\t\tconst columnKeys = Object.keys(this.columnNumbers);\n\t\t\tif (columnKeys.length <= 0) {\n\t\t\t\tthis._columnClasses.push(\"bx--col\");\n\t\t\t}\n\n\t\t\tcolumnKeys.forEach(key => {\n\t\t\t\tif (this.columnNumbers[key] === \"nobreak\") {\n\t\t\t\t\tthis._columnClasses.push(`bx--col-${key}`);\n\t\t\t\t} else {\n\t\t\t\t\tthis._columnClasses.push(`bx--col-${key}-${this.columnNumbers[key]}`);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this.offsets).forEach(key => {\n\t\t\t\tthis._columnClasses.push(`bx--offset-${key}-${this.offsets[key]}`);\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tconsole.error(`Malformed \\`offsets\\` or \\`columnNumbers\\`: ${err}`);\n\t\t}\n\n\t\tif (this.class) {\n\t\t\tthis._columnClasses.push(this.class);\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ColumnDirective, GridDirective, RowDirective } from \"./grid.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tColumnDirective,\n\t\tGridDirective,\n\t\tRowDirective\n\t],\n\texports: [\n\t\tColumnDirective,\n\t\tGridDirective,\n\t\tRowDirective\n\t],\n\timports: [CommonModule]\n})\nexport class GridModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Checkmark16 = /** @class */ (function () {\n function Checkmark16() {\n this.focusable = false;\n }\n Checkmark16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-checkmark16\",\n template: \"\\n <svg\\n ibmIconCheckmark16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Checkmark16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Checkmark16;\n}());\nexport { Checkmark16 };\nvar Checkmark16Directive = /** @class */ (function () {\n function Checkmark16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Checkmark16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M6 10.6L2.5 7.1l-.7.7 3.5 3.5.7.7 7.1-7.1-.7-.7z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Checkmark16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"checkmark16-\" + Checkmark16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"checkmark16-\" + Checkmark16Directive.titleIdCounter);\n }\n };\n Checkmark16Directive.titleIdCounter = 0;\n Checkmark16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCheckmark16]\"\n },] },\n ];\n /** @nocollapse */\n Checkmark16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Checkmark16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Checkmark16Directive;\n}());\nexport { Checkmark16Directive };\nvar Checkmark16Module = /** @class */ (function () {\n function Checkmark16Module() {\n }\n Checkmark16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Checkmark16,\n Checkmark16Directive\n ],\n exports: [\n Checkmark16,\n Checkmark16Directive\n ]\n },] },\n ];\n return Checkmark16Module;\n}());\nexport { Checkmark16Module };\n//# sourceMappingURL=16.js.map","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding\n} from \"@angular/core\";\n\n/**\n * [See demo](../../?path=/story/inline-loading--basic)\n *\n * <example-url>../../iframe.html?id=inline-loading--basic</example-url>\n *\n * @export\n * @class InlineLoading\n */\n@Component({\n\tselector: \"ibm-inline-loading\",\n\ttemplate: `\n\t\t<div class=\"bx--inline-loading__animation\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"success === false\"\n\t\t\t\tclass=\"bx--loading bx--loading--small\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--loading--stop': !isActive\n\t\t\t\t}\">\n\t\t\t\t<svg class=\"bx--loading__svg\" viewBox=\"-75 -75 150 150\">\n\t\t\t\t\t<circle class=\"bx--loading__background\" cx=\"0\" cy=\"0\" r=\"30\" />\n\t\t\t\t\t<circle class=\"bx--loading__stroke\" cx=\"0\" cy=\"0\" r=\"30\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<svg\n\t\t\t\t*ngIf=\"success === true\"\n\t\t\t\tclass=\"bx--inline-loading__checkmark-container bx--inline-loading__svg\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 10 10\">\n\t\t\t\t<polyline class=\"bx--inline-loading__checkmark\" points=\"0.74 3.4 3.67 6.34 9.24 0.74\"></polyline>\n\t\t\t</svg>\n\t\t</div>\n\t\t<p *ngIf=\"success === false\" class=\"bx--inline-loading__text\">{{loadingText}}</p>\n\t\t<p *ngIf=\"success === true\" class=\"bx--inline-loading__text\">{{successText}}</p>\n\t`\n})\nexport class InlineLoading {\n\t/**\n\t * Specify the text description for the loading state.\n\t */\n\t@Input() loadingText;\n\t/**\n\t * Specify the text description for the success state.\n\t */\n\t@Input() successText;\n\t/**\n\t * Provide a delay for the `setTimeout` for success.\n\t */\n\t@Input() successDelay = 1500;\n\t/**\n\t * set to `false` to stop the loading animation\n\t */\n\t@Input() isActive = true;\n\n\t/**\n\t * Returns value `true` if the component is in the success state.\n\t */\n\t@Input() get success() {\n\t\treturn this._success;\n\t}\n\t/**\n\t * Set the component's state to match the parameter and emits onSuccess if it exits.\n\t */\n\tset success (success: boolean) {\n\t\tthis._success = success;\n\t\tif (this._success) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.onSuccess.emit();\n\t\t\t}, this.successDelay);\n\t\t}\n\t}\n\n\t/**\n\t * Emits event after the success state is active\n\t *\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onSuccess: EventEmitter<any> = new EventEmitter();\n\n\t@HostBinding(\"class.bx--inline-loading\") loadingClass = true;\n\n\t/**\n\t * Set to `true` if the action is completed successfully.\n\t */\n\tprotected _success = false;\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Checkmark16Module } from \"@carbon/icons-angular/lib/checkmark/16\";\n\nimport { InlineLoading } from \"./inline-loading.component\";\n\nexport { InlineLoading } from \"./inline-loading.component\";\n\n@NgModule({\n\tdeclarations: [InlineLoading],\n\texports: [InlineLoading],\n\timports: [CommonModule, Checkmark16Module]\n})\nexport class InlineLoadingModule { }\n","import {\n\tDirective,\n\tHostBinding,\n\tInput\n} from \"@angular/core\";\n\n/**\n * A convinence directive for applying styling to a link.\n *\n * [See demo](../../?path=/story/link--basic)\n *\n * Example:\n *\n * ```hmtl\n * <a href=\"#\" ibmLink>A link</a>\n * ```\n *\n * See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/link/code) for more detail.\n *\n * <example-url>../../iframe.html?id=link--basic</example-url>\n *\n * @export\n * @class Link\n */\n@Directive({\n\tselector: \"[ibmLink]\"\n})\n\n\nexport class Link {\n\t@HostBinding(\"class.bx--link\") baseClass = true;\n\n\t/**\n\t * Automatically set to `-1` when link is disabled.\n\t */\n\t@HostBinding(\"attr.tabindex\") tabindex;\n\n\t/**\n\t * Set to true to disable link.\n\t */\n\t@Input()\n\t@HostBinding(\"attr.aria-disabled\")\n\t@HostBinding(\"class.bx--link--disabled\")\n\tset disabled(disabled: boolean) {\n\t\tthis._disabled = disabled;\n\t\tthis.tabindex = this.disabled ? -1 : null;\n\t}\n\n\tget disabled(): boolean {\n\t\treturn this._disabled;\n\t}\n\n\tprivate _disabled;\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Link } from \"./link.directive\";\n\nexport { Link } from \"./link.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tLink\n\t],\n\texports: [\n\t\tLink\n\t],\n\timports: [\n\t\tCommonModule\n\t]\n})\nexport class LinkModule {}\n","import { Directive, HostBinding } from \"@angular/core\";\n\n/**\n * Applies list styling to the item it is used on. Best used with `li`s.\n */\n@Directive({\n\tselector: \"[ibmListItem]\"\n})\nexport class ListItemDirective {\n\t@HostBinding(\"class.bx--list__item\") wrapper = true;\n}\n","import { Directive, ElementRef, HostBinding } from \"@angular/core\";\n\n/**\n * Applies either ordered or unordered styling to the list container it is applied to.\n *\n * [See demo](../../?path=/story/list--basic)\n *\n * For `ul`s it will apply unordered list styles, and for `ol`s it will apply ordered list styles.\n *\n * If a `ul` or `ol` is nested within a `li` the directive will apply nested list styling.\n *\n * <example-url>../../iframe.html?id=list--basic</example-url>\n *\n * @export\n * @class List\n */\n@Directive({\n\tselector: \"[ibmList]\"\n})\nexport class List {\n\t@HostBinding(\"class.bx--list--ordered\") get ordered() {\n\t\tif (this.nested) { return false; }\n\t\treturn this.elementRef.nativeElement.tagName === \"OL\";\n\t}\n\n\t@HostBinding(\"class.bx--list--unordered\") get unordered() {\n\t\tif (this.nested) { return false; }\n\t\treturn this.elementRef.nativeElement.tagName === \"UL\";\n\t}\n\n\t@HostBinding(\"class.bx--list--nested\") get nested() {\n\t\treturn this.elementRef.nativeElement.parentElement.tagName === \"LI\";\n\t}\n\n\tconstructor(protected elementRef: ElementRef) {}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ListItemDirective } from \"./list-item.directive\";\nimport { List } from \"./list.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tListItemDirective,\n\t\tList\n\t],\n\texports: [\n\t\tListItemDirective,\n\t\tList\n\t],\n\timports: [CommonModule]\n})\nclass ListModule {}\n\nexport {\n\tListModule,\n\tListItemDirective,\n\tList\n};\n","import {\n\tComponent,\n\tOnInit,\n\tViewContainerRef,\n\tViewChild\n} from \"@angular/core\";\nimport { PlaceholderService } from \"./../placeholder/placeholder.service\";\n\n\n/**\n * Deprecated with v2.0, will be removed in v3.0\n * Using a modal in your application requires *this* component (`n-modal-placeholder`).\n * It would generally be placed near the end of your app component template\n * (app.component.ts or app.component.html) as:\n *\n * ```html\n * ...\n * <ibm-modal-placeholder></ibm-modal-placeholder>\n * ```\n *\n * A more complete example for `Modal` is given as follows:\n *\n * ```html\n * <ibm-modal size=\"xl\" (overlaySelected)=\"closeModal()\">\n * \t<ibm-modal-header (closeSelect)=\"closeModal()\">Header text</ibm-modal-header>\n * \t<section class=\"modal-body\">\n * \t\t<h1>It Works!</h1>\n * \t\t{{modalText}}\n * \t</section>\n * \t<ibm-modal-footer><button class=\"btn cancel-button\" (click)=\"closeModal()\">Cancel</button></ibm-modal-footer>\n * </ibm-modal>\n * ...\n * <ibm-modal-placeholder></ibm-modal-placeholder>\n * ```\n *\n * @deprecated\n */\n@Component({\n\tselector: \"ibm-modal-placeholder\",\n\ttemplate: `<div #modalplaceholder></div>`\n})\nexport class ModalPlaceholder implements OnInit {\n\t/**\n\t * Maintains a reference to the view DOM element of the `ModalPlaceholder`.\n\t */\n\t@ViewChild(\"modalplaceholder\", {read: ViewContainerRef }) viewContainerRef: ViewContainerRef;\n\n\t/**\n\t * Creates an instance of `ModalPlaceholder`.\n\t */\n\tconstructor(public placeholderService: PlaceholderService) {}\n\n\t/**\n\t * Initializes the component using `ModalService`.\n\t */\n\tngOnInit() {\n\t\tconsole.warn(\"`ibm-modal-placeholder` has been deprecated in favour of `ibm-placeholder`\");\n\t\tthis.placeholderService.registerViewContainerRef(this.viewContainerRef);\n\t}\n}\n","import { Output, EventEmitter } from \"@angular/core\";\n\n/**\n * Extend `BaseModal` in your custom modal implementations to ensure consistent close behavior.\n *\n * `ModalService` depends on the `close` event to correctly clean up the component.\n */\nexport class BaseModal {\n\t@Output() close = new EventEmitter();\n\tcloseModal(): void {\n\t\tthis.close.emit();\n\t}\n}\n","import {\n\tComponent,\n\tInject\n} from \"@angular/core\";\nimport { BaseModal } from \"./base-modal.class\";\n\n/**\n * Component to create standard modals for presenting content or asking for user's input.\n * It can show as a passive modal showing only text or show as a transactional modal with\n * multiple buttons for different actions for the user to choose from.\n *\n * Using a modal in your application requires `ibm-modal-placeholder` which would generally be\n * placed near the end of your app component template (app.component.ts or app.component.html) as:\n *\n * ```html\n * <ibm-modal-placeholder></ibm-modal-placeholder>\n * ```\n *\n * Example of opening the modal:\n *\n * ```typescript\n * \\@Component({\n * selector: \"app-modal-demo\",\n * template: `\n * <button class=\"btn--primary\" (click)=\"openModal()\">Open modal</button>\n * <ibm-modal-placeholder></ibm-modal-placeholder>`\n * })\n * export class ModalDemo {\n * \topenModal() {\n * \t\tthis.modalService.show({\n *\t\t\tmodalType: \"default\",\n *\t\t\tmodalLabel: \"optional header text\",\n *\t\t\tmodalTitle: \"Modal modalTitle\",\n *\t\t\ttext: \"Modal text\",\n *\t\t\tbuttons: [{\n *\t\t\t\ttext: \"Button text\",\n *\t\t\t\ttype: \"primary\",\n *\t\t\t\tclick: clickFunction\n *\t\t\t}]\n *\t\t});\n * \t}\n * }\n * ```\n *\n * @export\n * @class AlertModal\n */\n@Component({\n\tselector: \"ibm-alert-modal\",\n\ttemplate: `\n\t\t<ibm-modal [theme]=\"modalType\" [modalLabel]=\"modalTitle\" (overlaySelected)=\"dismissModal()\">\n\t\t\t<ibm-modal-header (closeSelect)=\"dismissModal()\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta\">{{modalLabel}}</p>\n \t\t\t<p class=\"bx--modal-header__heading bx--type-beta\">{{modalTitle}}</p>\n\t\t\t</ibm-modal-header>\n\t\t\t<div class=\"bx--modal-content\">\n\t\t\t\t<p [innerHTML]=\"modalContent\"></p>\n\t\t\t</div>\n\t\t\t<ibm-modal-footer *ngIf=\"buttons.length > 0\">\n\t\t\t\t<ng-container *ngFor=\"let button of buttons; let i = index\">\n\t\t\t\t\t<button\n\t\t\t\t\t\t[ibmButton]=\"button.type\"\n\t\t\t\t\t\t(click)=\"buttonClicked(i)\"\n\t\t\t\t\t\t[id]=\"button.id\"\n\t\t\t\t\t\t[attr.modal-primary-focus]=\"(button.type.indexOf('primary') !== -1 ? '' : null)\">\n\t\t\t\t\t\t{{button.text}}\n\t\t\t\t\t</button>\n\t\t\t\t</ng-container>\n\t\t\t</ibm-modal-footer>\n\t\t</ibm-modal>\n\t`\n})\nexport class AlertModal extends BaseModal {\n\t/**\n\t * Creates an instance of `AlertModal`.\n\t */\n\tconstructor(\n\t\t@Inject(\"modalType\") public modalType = \"default\",\n\t\t@Inject(\"modalLabel\") public modalLabel: string,\n\t\t@Inject(\"modalTitle\") public modalTitle: string,\n\t\t@Inject(\"modalContent\") public modalContent: string,\n\t\t@Inject(\"buttons\") public buttons = [],\n\t\t@Inject(\"close\") public onClose: Function\n\t) {\n\t\tsuper();\n\t\tfor (let i = 0; i < this.buttons.length; i++) {\n\t\t\tconst button = this.buttons[i];\n\t\t\tif (!button.id) {\n\t\t\t\tbutton.id = `alert-modal-button-${i}`;\n\t\t\t}\n\t\t\tif (!button.type) {\n\t\t\t\tbutton.type = \"secondary\";\n\t\t\t}\n\t\t}\n\t}\n\n\tbuttonClicked(buttonIndex) {\n\t\tconst button = this.buttons[buttonIndex];\n\t\tif (button.click) {\n\t\t\tbutton.click();\n\t\t}\n\n\t\tthis.closeModal();\n\t}\n\n\tdismissModal() {\n\t\tif (this.onClose && this.onClose() === false) {\n\t\t\treturn;\n\t\t}\n\t\tthis.closeModal();\n\t}\n}\n","import {\n\tComponentFactoryResolver,\n\tComponentRef,\n\tInjector\n} from \"@angular/core\";\nimport { Modal } from \"./modal.component\";\nimport { ReplaySubject } from \"rxjs\";\nimport { Injectable } from \"@angular/core\";\nimport { AlertModal } from \"./alert-modal.component\";\nimport { AlertModalData } from \"./alert-modal.interface\";\nimport { PlaceholderService } from \"./../placeholder/placeholder.module\";\n\n\n/**\n * Modal service handles instantiating and destroying modal instances.\n * Uses ModalPlaceholderService to track open instances, and for it's placeholder view reference.\n *\n * ```typescript\n * export class ModalService {\n * \tregisterViewContainerRef(vcRef: ViewContainerRef): void {}\n * \tcreate<T>(data: {component: any, inputs?: any}): void {}\n * \tdestroy(index: number = -1): void {}\n * }\n * ```\n */\n@Injectable()\nexport class ModalService {\n\t// track all our open modals\n\tprotected static modalList: Array<ComponentRef<any>> = [];\n\n\t/**\n\t * Creates an instance of `ModalService`.\n\t */\n\tconstructor(public resolver: ComponentFactoryResolver, public placeholderService: PlaceholderService) {}\n\n\t/**\n\t * Creates and renders the modal component that is passed in.\n\t * `inputs` is an optional parameter of `data` that can be passed to the `Modal` component.\n\t */\n\tcreate<T>(data: {component: any, inputs?: any}): ComponentRef<any> {\n\t\tlet defaults = {inputs: {}};\n\t\tdata = Object.assign({}, defaults, data);\n\n\t\tconst inputProviders = Object.keys(data.inputs).map(inputName => ({provide: inputName, useValue: data.inputs[inputName]}));\n\t\tconst injector = Injector.create(inputProviders);\n\t\tconst factory = this.resolver.resolveComponentFactory(data.component);\n\t\tlet focusedElement = document.activeElement as HTMLElement;\n\n\t\tlet component = this.placeholderService.createComponent(factory, injector);\n\n\t\tcomponent[\"previouslyFocusedElement\"] = focusedElement; // used to return focus to previously focused element\n\n\t\tcomponent.instance.close.subscribe(_ => {\n\t\t\tthis.placeholderService.destroyComponent(component);\n\t\t\t// filter out our component\n\t\t\tModalService.modalList = ModalService.modalList.filter(c => c === component);\n\t\t});\n\n\t\tcomponent.onDestroy(() => {\n\t\t\tfocusedElement.focus();\n\t\t});\n\n\t\tModalService.modalList.push(component);\n\n\t\treturn component;\n\t}\n\n\t/**\n\t * Creates and renders a new alert modal component.\n\t * @param data You can pass in:\n\t * `modalType` - \"default\" | \"danger\" = \"default\",\n\t * `modalLabel` - a label shown over the title,\n\t * `modalTitle` - modal's title,\n\t * `modalContent` - modal's content, could include HTML tags.\n\t * `buttons` is an array of objects\n\t * ```\n\t * {\n\t * \t\ttext: \"Button text\",\n\t * \t\ttype: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"danger\" | \"danger--primary\" = \"primary\",\n\t * \t\tclick: clickFunction,\n\t * }\n\t * ```\n\t */\n\tshow(data: AlertModalData) {\n\t\tfor (let key of Object.keys(data)) {\n\t\t\tif ([\"modalType\", \"modalLabel\", \"modalTitle\", \"modalContent\"].includes(key)) {\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error(`${key} is deprecated, use ${key.replace(\"modal\", \"\").toLowerCase()} instead`);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn(error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.create({\n\t\t\tcomponent: AlertModal,\n\t\t\tinputs: {\n\t\t\t\tmodalType: data.type || data.modalType,\n\t\t\t\tmodalLabel: data.label || data.modalLabel,\n\t\t\t\tmodalTitle: data.title || data.modalTitle,\n\t\t\t\tmodalContent: data.content || data.modalContent,\n\t\t\t\tbuttons: data.buttons || [],\n\t\t\t\tclose: data.close || (() => {})\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Destroys the modal on the supplied index.\n\t * When called without parameters it destroys the most recently created/top most modal.\n\t */\n\tdestroy(index = -1) {\n\t\t// return if nothing to destroy because it's already destroyed\n\t\tif (index >= ModalService.modalList.length || ModalService.modalList.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\t// on negative index destroy the last on the list (top modal)\n\t\tif (index < 0) {\n\t\t\tindex = ModalService.modalList.length - 1;\n\t\t}\n\n\t\tthis.placeholderService.destroyComponent(ModalService.modalList[index]);\n\t\tModalService.modalList.splice(index, 1);\n\t}\n}\n\n\n","/**\n * @license Angular v6.1.0\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n\n/**\n * AnimationBuilder is an injectable service that is available when the {@link\n * BrowserAnimationsModule BrowserAnimationsModule} or {@link NoopAnimationsModule\n * NoopAnimationsModule} modules are used within an application.\n *\n * The purpose of this service is to produce an animation sequence programmatically within an\n * angular component or directive.\n *\n * Programmatic animations are first built and then a player is created when the build animation is\n * attached to an element.\n *\n * ```ts\n * // remember to include the BrowserAnimationsModule module for this to work...\n * import {AnimationBuilder} from '@angular/animations';\n *\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first build the animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // then create a player from it\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * When an animation is built an instance of {@link AnimationFactory AnimationFactory} will be\n * returned. Using that an {@link AnimationPlayer AnimationPlayer} can be created which can then be\n * used to start the animation.\n *\n * @experimental Animation support is experimental.\n */\nvar AnimationBuilder = /** @class */ (function () {\n function AnimationBuilder() {\n }\n return AnimationBuilder;\n}());\n/**\n * An instance of `AnimationFactory` is returned from {@link AnimationBuilder#build\n * AnimationBuilder.build}.\n *\n * @experimental Animation support is experimental.\n */\nvar AnimationFactory = /** @class */ (function () {\n function AnimationFactory() {\n }\n return AnimationFactory;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n */\nvar AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of `state()`\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of `state()`\n * and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n * <div [@.disabled]=\"isDisabled\">\n * <div [@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @experimental Animation support is experimental.\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name: name, definitions: definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" })),\n * style({ background: \"red\" }))\n * ])\n * ```\n */\nfunction animate(timings, styles) {\n if (styles === void 0) { styles = null; }\n return { type: 4 /* Animate */, styles: styles, timings: timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", { background: \"black\" }))\n * animate(\"2s\", { color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n */\nfunction group(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 3 /* Group */, steps: steps, options: options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 })),\n * animate(\"1s\", { opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n **/\nfunction sequence(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 2 /* Sequence */, steps: steps, options: options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation `state`, within an animation `sequence`,\n * or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow a component to animate from\n * a height of 0 up to the height of the parent element:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name: name, styles: styles, options: options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps: steps };\n}\n/**\n * Declares an animation transition as a sequence of animation steps to run when a given\n * condition is satisfied. The condition is a Boolean expression or function that compares\n * the previous and current animation states, and returns true if this transition should occur.\n * When the state criteria of a defined transition are met, the associated animation is\n * triggered.\n *\n * @param stateChangeExpr A Boolean expression or function that compares the previous and current\n * animation states, and returns true if this transition should occur. Note that \"true\" and \"false\"\n * match 1 and 0, respectively. An expression is evaluated each time a state change occurs in the\n * animation trigger element.\n * The animation steps run when the expression evaluates to true.\n *\n * - A state-change string takes the form \"state1 => state2\", where each side is a defined animation\n * state, or an asterix (*) to refer to a dynamic start or end state.\n * - The expression string can contain multiple comma-separated statements;\n * for example \"state1 => state2, state3 => state4\".\n * - Special values `:enter` and `:leave` initiate a transition on the entry and exit states,\n * equivalent to \"void => *\" and \"* => void\".\n * - Special values `:increment` and `:decrement` initiate a transition when a numeric value has\n * increased or decreased in value.\n * - A function is executed each time a state change occurs in the animation trigger element.\n * The animation steps run when the function returns true.\n *\n * @param steps One or more animation objects, as returned by the `animate()` or\n * `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the animation,\n * and additional developer-defined parameters. Provided values for additional parameters are used\n * as defaults, and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n * The template associated with a component binds an animation trigger to an element.\n *\n * ```HTML\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * All transitions are defined within an animation trigger,\n * along with named states that the transitions change to and from.\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * // define states\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n * ...]\n * ```\n *\n * Note that when you call the `sequence()` function within a `{@link animations/group group()}`\n * or a `transition()` call, execution does not continue to the next instruction\n * until each of the inner animation steps have completed.\n *\n * ### Syntax examples\n *\n * The following examples define transitions between the two defined states (and default states),\n * using various options:\n *\n * ```typescript\n * // Transition occurs when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500))\n * // Run the same animation for both directions\n * transition(\"on <=> off\", animate(500))\n * // Define multiple state-change pairs separated by commas\n * transition(\"on => off, off => void\", animate(500))\n * ```\n *\n * ### Special values for state-change expressions\n *\n * - Catch-all state change for when an element is inserted into the page and the\n * destination state is unknown:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * - Capture a state change between any states:\n *\n * `transition(\"* => *\", animate(\"1s 0s\"))`\n *\n * - Entry and exit transitions:\n *\n * ```typescript\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * - Use `:increment` and `:decrement` to initiate transitions:\n *\n * ```typescript\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n *\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n * ```\n *\n * ### State-change functions\n *\n * Here is an example of a `fromState` specified as a state-change function that invokes an\n * animation when true:\n *\n * ```typescript\n * transition((fromState, toState) =>\n * {\n * return fromState == \"off\" && toState == \"on\";\n * },\n * animate(\"1s 0s\"))\n * ```\n *\n * ### Animating to the final state\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no style data, that step is automatically considered the final animation arc,\n * for the element to reach the final state. Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n * The following example defines a transition that starts by hiding the element,\n * then makes sure that it animates properly to whatever state is currently active for trigger:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n * ### Boolean value matching\n * If a trigger binding value is a Boolean, it can be matched using a transition expression\n * that compares true and false or 1 and 0. For example:\n *\n * ```\n * // in the template\n * <div [@openClose]=\"open ? true : false\">...</div>\n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n **/\nfunction transition(stateChangeExpr, steps, options) {\n if (options === void 0) { options = null; }\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options: options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n */\nfunction animation(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 8 /* Reference */, animation: steps, options: options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n */\nfunction animateChild(options) {\n if (options === void 0) { options = null; }\n return { type: 9 /* AnimateChild */, options: options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n */\nfunction useAnimation(animation, options) {\n if (options === void 0) { options = null; }\n return { type: 10 /* AnimateRef */, animation: animation, options: options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animateChild()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements.\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animateChild()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n * <div [@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 })),\n * query('.content', animate(1000, style({ opacity: 1 })),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n */\nfunction query(selector, animation, options) {\n if (options === void 0) { options = null; }\n return { type: 11 /* Query */, selector: selector, animation: animation, options: options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings: timings, animation: animation };\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @experimental Animation support is experimental.\n */\nvar NoopAnimationPlayer = /** @class */ (function () {\n function NoopAnimationPlayer(duration, delay) {\n if (duration === void 0) { duration = 0; }\n if (delay === void 0) { delay = 0; }\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n NoopAnimationPlayer.prototype._onFinish = function () {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(function (fn) { return fn(); });\n this._onDoneFns = [];\n }\n };\n NoopAnimationPlayer.prototype.onStart = function (fn) { this._onStartFns.push(fn); };\n NoopAnimationPlayer.prototype.onDone = function (fn) { this._onDoneFns.push(fn); };\n NoopAnimationPlayer.prototype.onDestroy = function (fn) { this._onDestroyFns.push(fn); };\n NoopAnimationPlayer.prototype.hasStarted = function () { return this._started; };\n NoopAnimationPlayer.prototype.init = function () { };\n NoopAnimationPlayer.prototype.play = function () {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n };\n /** @internal */\n NoopAnimationPlayer.prototype.triggerMicrotask = function () {\n var _this = this;\n scheduleMicroTask(function () { return _this._onFinish(); });\n };\n NoopAnimationPlayer.prototype._onStart = function () {\n this._onStartFns.forEach(function (fn) { return fn(); });\n this._onStartFns = [];\n };\n NoopAnimationPlayer.prototype.pause = function () { };\n NoopAnimationPlayer.prototype.restart = function () { };\n NoopAnimationPlayer.prototype.finish = function () { this._onFinish(); };\n NoopAnimationPlayer.prototype.destroy = function () {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(function (fn) { return fn(); });\n this._onDestroyFns = [];\n }\n };\n NoopAnimationPlayer.prototype.reset = function () { };\n NoopAnimationPlayer.prototype.setPosition = function (p) { };\n NoopAnimationPlayer.prototype.getPosition = function () { return 0; };\n /** @internal */\n NoopAnimationPlayer.prototype.triggerCallback = function (phaseName) {\n var methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(function (fn) { return fn(); });\n methods.length = 0;\n };\n return NoopAnimationPlayer;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar AnimationGroupPlayer = /** @class */ (function () {\n function AnimationGroupPlayer(_players) {\n var _this = this;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n var doneCount = 0;\n var destroyCount = 0;\n var startCount = 0;\n var total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(function () { return _this._onFinish(); });\n }\n else {\n this.players.forEach(function (player) {\n player.onDone(function () {\n if (++doneCount == total) {\n _this._onFinish();\n }\n });\n player.onDestroy(function () {\n if (++destroyCount == total) {\n _this._onDestroy();\n }\n });\n player.onStart(function () {\n if (++startCount == total) {\n _this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce(function (time, player) { return Math.max(time, player.totalTime); }, 0);\n }\n AnimationGroupPlayer.prototype._onFinish = function () {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(function (fn) { return fn(); });\n this._onDoneFns = [];\n }\n };\n AnimationGroupPlayer.prototype.init = function () { this.players.forEach(function (player) { return player.init(); }); };\n AnimationGroupPlayer.prototype.onStart = function (fn) { this._onStartFns.push(fn); };\n AnimationGroupPlayer.prototype._onStart = function () {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(function (fn) { return fn(); });\n this._onStartFns = [];\n }\n };\n AnimationGroupPlayer.prototype.onDone = function (fn) { this._onDoneFns.push(fn); };\n AnimationGroupPlayer.prototype.onDestroy = function (fn) { this._onDestroyFns.push(fn); };\n AnimationGroupPlayer.prototype.hasStarted = function () { return this._started; };\n AnimationGroupPlayer.prototype.play = function () {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(function (player) { return player.play(); });\n };\n AnimationGroupPlayer.prototype.pause = function () { this.players.forEach(function (player) { return player.pause(); }); };\n AnimationGroupPlayer.prototype.restart = function () { this.players.forEach(function (player) { return player.restart(); }); };\n AnimationGroupPlayer.prototype.finish = function () {\n this._onFinish();\n this.players.forEach(function (player) { return player.finish(); });\n };\n AnimationGroupPlayer.prototype.destroy = function () { this._onDestroy(); };\n AnimationGroupPlayer.prototype._onDestroy = function () {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(function (player) { return player.destroy(); });\n this._onDestroyFns.forEach(function (fn) { return fn(); });\n this._onDestroyFns = [];\n }\n };\n AnimationGroupPlayer.prototype.reset = function () {\n this.players.forEach(function (player) { return player.reset(); });\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n };\n AnimationGroupPlayer.prototype.setPosition = function (p) {\n var timeAtPosition = p * this.totalTime;\n this.players.forEach(function (player) {\n var position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n };\n AnimationGroupPlayer.prototype.getPosition = function () {\n var min = 0;\n this.players.forEach(function (player) {\n var p = player.getPosition();\n min = Math.min(p, min);\n });\n return min;\n };\n AnimationGroupPlayer.prototype.beforeDestroy = function () {\n this.players.forEach(function (player) {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n };\n /** @internal */\n AnimationGroupPlayer.prototype.triggerCallback = function (phaseName) {\n var methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(function (fn) { return fn(); });\n methods.length = 0;\n };\n return AnimationGroupPlayer;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationBuilder, AnimationFactory, AUTO_STYLE, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, NoopAnimationPlayer, ɵPRE_STYLE, AnimationGroupPlayer as ɵAnimationGroupPlayer };\n//# sourceMappingURL=animations.js.map\n","export enum AlertModalType {\n\tdefault = \"default\",\n\tdanger = \"danger\"\n}\n\nexport interface AlertModalData {\n\t/**\n\t * Use of `modalType` is deprecated, use `type` instead\n\t */\n\tmodalType?: string;\n\t/**\n\t * type of the modal\n\t */\n\ttype?: AlertModalType;\n\t/**\n\t * Use of `modalLabel` is deprecated, use `label` instead\n\t */\n\tmodalLabel?: string;\n\t/**\n\t * Additional label shown over the modal\n\t */\n\tlabel?: string;\n\t/**\n\t * Use of `modalTitle` is deprecated, use `title` instead\n\t */\n\tmodalTitle?: string;\n\t/**\n\t * Primary title for the modal\n\t */\n\ttitle?: string;\n\t/**\n\t * Use of `modalContent` is deprecated, use `content` instead\n\t */\n\tmodalContent?: string;\n\t/**\n\t * Content for the modal body, could include HTML tags\n\t */\n\tcontent?: string;\n\t/**\n\t * Array of `ModalButton`s\n\t */\n\tbuttons?: Array<ModalButton>;\n\t/**\n\t * Callback for non-specific close events. `return false;` to prevent the modal from closing\n\t */\n\tclose?: Function;\n}\n\nexport enum ModalButtonType {\n\tprimary = \"primary\",\n\tsecondary = \"secondary\",\n\ttertiary = \"tertiary\",\n\tghost = \"ghost\",\n\tdanger = \"danger\",\n\tdanger_primary = \"danger--primary\"\n}\n\nexport interface ModalButton {\n\t/**\n\t * Display value of the button\n\t */\n\ttext: string;\n\t/**\n\t * Optional unique ID for the button\n\t */\n\tid?: string;\n\t/**\n\t * Button type\n\t */\n\ttype?: ModalButtonType;\n\t/**\n\t * Callback for the button `click` event\n\t */\n\tclick?: Function;\n}\n","import { ModalService } from \"./modal.service\";\nimport {\n\tAfterViewInit,\n\tComponent,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tElementRef,\n\tViewChild\n} from \"@angular/core\";\nimport {\n\ttrigger,\n\tstate,\n\tstyle,\n\ttransition,\n\tanimate\n} from \"@angular/animations\";\nimport { cycleTabs, getFocusElementList } from \"./../common/tab.service\";\n\n/**\n * Component to create modals for presenting content.\n *\n * [See demo](../../?path=/story/modal--basic)\n *\n * Using a modal in your application requires `ibm-placeholder` which would generally be\n * placed near the end of your app component template (app.component.ts or app.component.html) as:\n *\n```html\n<ibm-modal-placeholder></ibm-modal-placeholder>\n```\n *\n * A more complete example for `Modal` is given as follows:\n *\n * Example modal definition:\n *\n```typescript\n@Component({\n\tselector: \"app-sample-modal\",\n\ttemplate: `\n\t\t\t\t<ibm-modal size=\"xl\" (overlaySelected)=\"closeModal()\">\n\t\t\t\t\t<ibm-modal-header (closeSelect)=\"closeModal()\">Header text</ibm-modal-header>\n\t\t\t\t\t\t<section class=\"modal-body\">\n\t\t\t\t\t\t\t<h1>Sample modal works.</h1>\n\t\t\t\t\t\t\t<button class=\"btn--icon-link\" nPopover=\"Hello there\" title=\"Popover title\" placement=\"right\" appendInline=\"true\">\n\t\t\t\t\t\t\t\t<ibm-icon icon=\"info\" size=\"sm\"></ibm-icon>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t{{modalText}}\n\t\t\t\t\t\t</section>\n\t\t\t\t\t<ibm-modal-footer><button ibmButton=\"primary\" (click)=\"closeModal()\">Close</button></ibm-modal-footer>\n\t\t\t\t</ibm-modal>`,\n\tstyleUrls: [\"./sample-modal.component.scss\"]\n})\nexport class SampleModal extends BaseModal {\n\tmodalText: string;\n\tconstructor(protected injector: Injector) {\n\t\tsuper();\n\t\tthis.modalText = this.injector.get(\"modalText\");\n\t}\n}\n```\n *\n * Example of opening the modal:\n *\n```typescript\n@Component({\n\tselector: \"app-modal-demo\",\n\ttemplate: `\n\t\t\t\t<button ibmButton=\"primary\" (click)=\"openModal('drill')\">Drill-down modal</button>\n\t\t\t\t<ibm-placeholder></ibm-placeholder>`\n})\nexport class ModalDemo {\n\topenModal() {\n\t\tthis.modalService.create({component: SampleModal, inputs: {modalText: \"Hello universe.\"}});\n\t}\n}\n```\n *\n * <example-url>../../iframe.html?id=modal--basic</example-url>\n *\n * @export\n * @class Modal\n * @implements {AfterViewInit}\n * @implements {OnInit}\n * @implements {OnDestroy}\n */\n@Component({\n\tselector: \"ibm-modal\",\n\ttemplate: `\n\t\t<ibm-overlay [theme]=\"theme\" (overlaySelect)=\"overlaySelected.emit()\">\n\t\t\t<div\n\t\t\t\tclass=\"bx--modal-container\"\n\t\t\t\t[@modalState]=\"modalState\"\n\t\t\t\trole=\"dialog\"\n\t\t\t\taria-modal=\"true\"\n\t\t\t\tstyle=\"z-index:1;\"\n\t\t\t\t[attr.aria-label]=\"modalLabel\"\n\t\t\t\t#modal>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</ibm-overlay>\n\t`,\n\tanimations: [\n\t\ttrigger(\"modalState\", [\n\t\t\tstate(\"void\", style({transform: \"translate(0, 5%)\", opacity: 0})),\n\t\t\ttransition(\":enter\", [\n\t\t\t\tanimate(\"200ms ease-in\")\n\t\t\t]),\n\t\t\ttransition(\":leave\", [\n\t\t\t\tanimate(200, style({transform: \"translate(0, 5%)\", opacity: 0}))\n\t\t\t])\n\t\t])\n\t]\n})\nexport class Modal implements AfterViewInit, OnInit, OnDestroy {\n\t/**\n\t * Size of the modal to display.\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" = \"md\";\n\t/**\n\t * Classification of the modal.\n\t */\n\t@Input() theme: \"default\" | \"danger\" = \"default\";\n\n\t/**\n\t * Label for the modal.\n\t */\n\t@Input() modalLabel = \"default\";\n\n\t/**\n\t * Emits event when click occurs within `n-overlay` element. This is to track click events occurring outside bounds of the `Modal` object.\n\t */\n\t@Output() overlaySelected = new EventEmitter();\n\t/**\n\t * To emit the closing event of the modal window.\n\t */\n\t@Output() close = new EventEmitter();\n\t/**\n\t * Maintains a reference to the view DOM element of the `Modal`.\n\t */\n\t@ViewChild(\"modal\") modal: ElementRef;\n\n\t/**\n\t * Controls the transitions of the `Modal` component.\n\t */\n\tmodalState: \"in\" | \"out\" = \"out\";\n\n\t/**\n\t * An element should have 'modal-primary-focus' as an attribute to receive initial focus within the `Modal` component.\n\t */\n\tselectorPrimaryFocus = \"[modal-primary-focus]\";\n\n\t/**\n\t * Creates an instance of `Modal`.\n\t */\n\tconstructor(public modalService: ModalService) {}\n\n\t/**\n\t * Set modalState on the modal component when it is initialized.\n\t */\n\tngOnInit() {\n\t\tthis.modalState = \"in\";\n\t}\n\n\t/**\n\t * Set document focus to be on the modal component after it is initialized.\n\t */\n\tngAfterViewInit() {\n\t\tconst primaryFocusElement = this.modal.nativeElement.querySelector(this.selectorPrimaryFocus);\n\t\tif (primaryFocusElement && primaryFocusElement.focus) {\n\t\t\tsetTimeout(() => primaryFocusElement.focus());\n\t\t\treturn;\n\t\t}\n\t\tif (getFocusElementList(this.modal.nativeElement).length > 0) {\n\t\t\tsetTimeout(() => getFocusElementList(this.modal.nativeElement)[0].focus());\n\t\t} else {\n\t\t\tsetTimeout(() => this.modal.nativeElement.focus());\n\t\t}\n\t}\n\n\t/**\n\t * Emit the close event when the modal component is destroyed.\n\t */\n\tngOnDestroy() {\n\t\tthis.modalState = \"out\";\n\t}\n\n\t/**\n\t * Handle keyboard events to close modal and tab through the content within the modal.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\thandleKeyboardEvent(event: KeyboardEvent) {\n\t\tswitch (event.key) {\n\t\t\tcase \"Escape\": {\n\t\t\t\tevent.stopImmediatePropagation(); // prevents events being fired for multiple modals if more than 2 open\n\t\t\t\tthis.modalService.destroy(); // destroy top (latest) modal\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"Tab\": {\n\t\t\t\tcycleTabs(event, this.modal.nativeElement);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Component } from \"@angular/core\";\n\n\n/**\n * @export\n * @class ModalFooter\n */\n@Component({\n\tselector: \"ibm-modal-footer\",\n\ttemplate: `\n\t\t<footer class=\"bx--modal-footer\">\n\t\t\t<ng-content></ng-content>\n\t\t</footer>\n\t`\n})\nexport class ModalFooter {}\n","import {\n\tComponent,\n\tOutput,\n\tEventEmitter,\n\tViewChild,\n\tElementRef,\n\tInput\n} from \"@angular/core\";\n\n\n/**\n * Component for the overlay object that acts as a backdrop to the `Modal` component.\n *\n * The main purpose for this component is to be able to handle click events that fall outside\n * the bounds of the `Modal` component.\n */\n@Component({\n\tselector: \"ibm-overlay\",\n\ttemplate: `\n\t\t<section\n\t\t\tclass=\"bx--modal bx--modal-tall is-visible\"\n\t\t\t[ngClass]=\"{'bx--modal--danger': theme === 'danger'}\"\n\t\t\t(click)=\"overlayClick($event)\"\n\t\t\t#overlay>\n\t\t\t<ng-content></ng-content>\n\t\t</section>\n\t`\n})\nexport class Overlay {\n\t/**\n\t * Classification of the modal.\n\t */\n\t@Input() theme: \"default\" | \"danger\" = \"default\";\n\t/**\n\t * To emit the event where the user selects the overlay behind the `Modal`.\n\t */\n\t@Output() overlaySelect = new EventEmitter();\n\t/**\n\t * Maintains a reference to the view DOM element of the `Overlay`.\n\t */\n\t@ViewChild(\"overlay\") overlay: ElementRef;\n\n\t/**\n\t * Handles the user clicking on the `Overlay` which resides outside the `Modal` object.\n\t */\n\toverlayClick(event) {\n\t\tif (event.target !== this.overlay.nativeElement) { return; }\n\t\tevent.stopPropagation();\n\t\tthis.overlaySelect.emit(event);\n\t}\n\n}\n","import {\n\tComponent,\n\tOutput,\n\tEventEmitter,\n\tInput\n} from \"@angular/core\";\nimport { I18n } from \"./../i18n/i18n.module\";\nimport { ExperimentalService } from \"./../experimental.service\";\n\n/**\n * ***Inputs***\n * ```html\n * <ibm-modal-header>Header text</ibm-modal-header>\n * ```\n *\n * ***Outputs***\n * ```html\n * <ibm-modal-header (closeSelect)=\"closeModal()\">Header text</ibm-modal-header>\n * ```\n *\n * @export\n * @class ModalHeader\n */\n@Component({\n\tselector: \"ibm-modal-header\",\n\ttemplate: `\n\t\t<header class=\"{{theme}} bx--modal-header\">\n\t\t\t<ng-content></ng-content>\n\t\t\t<button\n\t\t\t\tclass=\"bx--modal-close\"\n\t\t\t\t[attr.aria-label]=\"closeLabel\"\n\t\t\t\t(click)=\"onClose()\">\n\t\t\t\t<ibm-icon-close16 class=\"bx--modal-close__icon\"></ibm-icon-close16>\n\t\t\t</button>\n\t\t</header>\n\n\t`\n})\nexport class ModalHeader {\n\t/**\n\t * Sets the style on the modal heading based on its category.\n\t * @type {\"default\" | \"warning\" | \"error\"}\n\t */\n\t@Input() theme = \"default\";\n\t/**\n\t * Accessible label for the header close button.\n\t * Defaults to the `MODAL.CLOSE` value from the i18n service.\n\t */\n\t@Input() closeLabel = this.i18n.get().MODAL.CLOSE;\n\n\t/**\n\t * To emit the event of clicking on the close icon within the modal.\n\t */\n\t@Output() closeSelect = new EventEmitter();\n\n\tget isExperimental() {\n\t\treturn this.experimental.isExperimental;\n\t}\n\n\tconstructor(protected i18n: I18n, protected experimental: ExperimentalService) {}\n\n\t/**\n\t * Handles click for the close icon button within the `Modal`.\n\t */\n\tpublic onClose() {\n\t\tthis.closeSelect.emit();\n\t}\n}\n","import { Output, EventEmitter } from \"@angular/core\";\n\n/**\n * # Deprecated - extend `BaseModal` instead\n *\n * Decorator used to apply metadata on `Modal` class.\n *\n * class: ModalContainer\n *\n * decorator: @Modal\n * @deprecated\n */\nclass ModalContainer {\n\t@Output() close = new EventEmitter();\n\tcloseModal(): void {\n\t\tthis.close.emit();\n\t}\n}\n\n/**\n * Applying the decorator metadata to the target class (`Modal`).\n * @export\n * @returns {Object}\n */\nexport default function Modal() {\n\treturn function(target) {\n\t\tObject.assign(target.prototype, ModalContainer.prototype);\n\t};\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\n\n// imports\nimport { ModalPlaceholder } from \"./modal-placeholder.component\";\nimport { ModalService } from \"./modal.service\";\nimport { Modal } from \"./modal.component\";\nimport { ModalFooter } from \"./modal-footer.component\";\nimport { Overlay } from \"./overlay.component\";\nimport { ModalHeader } from \"./modal-header.component\";\nimport { AlertModal } from \"./alert-modal.component\";\nimport { ButtonModule } from \"../forms/forms.module\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { PlaceholderModule } from \"./../placeholder/placeholder.module\";\nimport { ExperimentalModule } from \"./../experimental.module\";\n\n// exports\nexport { default as Modal } from \"./modal.decorator\";\nexport { ModalService } from \"./modal.service\";\nexport * from \"./alert-modal.interface\";\nexport * from \"./base-modal.class\";\n\n@NgModule({\n\tdeclarations: [\n\t\tAlertModal,\n\t\tModalPlaceholder,\n\t\tModal,\n\t\tModalHeader,\n\t\tModalFooter,\n\t\tOverlay\n\t],\n\texports: [\n\t\tAlertModal,\n\t\tModalPlaceholder,\n\t\tModal,\n\t\tModalHeader,\n\t\tModalFooter\n\t],\n\tentryComponents: [\n\t\tAlertModal,\n\t\tModal,\n\t\tModalFooter,\n\t\tModalHeader\n\t],\n\tproviders: [ ModalService ],\n\timports: [\n\t\tCommonModule,\n\t\tButtonModule,\n\t\tI18nModule,\n\t\tPlaceholderModule,\n\t\tExperimentalModule,\n\t\tClose16Module\n\t]\n})\nexport class ModalModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar ErrorFilled16 = /** @class */ (function () {\n function ErrorFilled16() {\n this.focusable = false;\n }\n ErrorFilled16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-error-filled16\",\n template: \"\\n <svg\\n ibmIconErrorFilled16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n ErrorFilled16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return ErrorFilled16;\n}());\nexport { ErrorFilled16 };\nvar ErrorFilled16Directive = /** @class */ (function () {\n function ErrorFilled16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n ErrorFilled16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm2.7 10.5L4.5 5.3l.8-.8 6.2 6.2-.8.8z\\\"></path><path d=\\\"M10.7 11.5L4.5 5.3l.8-.8 6.2 6.2-.8.8z\\\" data-icon-path=\\\"inner-path\\\" opacity=\\\"0\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n ErrorFilled16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"error-filled16-\" + ErrorFilled16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"error-filled16-\" + ErrorFilled16Directive.titleIdCounter);\n }\n };\n ErrorFilled16Directive.titleIdCounter = 0;\n ErrorFilled16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconErrorFilled16]\"\n },] },\n ];\n /** @nocollapse */\n ErrorFilled16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n ErrorFilled16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return ErrorFilled16Directive;\n}());\nexport { ErrorFilled16Directive };\nvar ErrorFilled16Module = /** @class */ (function () {\n function ErrorFilled16Module() {\n }\n ErrorFilled16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n ErrorFilled16,\n ErrorFilled16Directive\n ],\n exports: [\n ErrorFilled16,\n ErrorFilled16Directive\n ]\n },] },\n ];\n return ErrorFilled16Module;\n}());\nexport { ErrorFilled16Module };\n//# sourceMappingURL=16.js.map","import {\n\tInjectable,\n\tApplicationRef\n} from \"@angular/core\";\n\n@Injectable()\nexport class NotificationDisplayService {\n\tconstructor(protected applicationRef: ApplicationRef) {}\n\n\t/**\n\t * Programatically closes notification based on `notificationRef`.\t *\n\t */\n\tclose(notificationRef: any) {\n\t\tif (notificationRef.hostView) {\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.applicationRef.detachView(notificationRef.hostView);\n\t\t\t\tnotificationRef.destroy();\n\t\t\t}, 200);\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tComponentRef,\n\tViewChild,\n\tHostBinding\n} from \"@angular/core\";\n\nimport { NotificationContent } from \"./notification-content.interface\";\nimport { I18n } from \"./../i18n/i18n.module\";\nimport { NotificationDisplayService } from \"./notification-display.service\";\nimport { of } from \"rxjs\";\n\n/**\n * Notification messages are displayed toward the top of the UI and do not interrupt user’s work.\n *\n * [See demo](../../?path=/story/notification--basic)\n *\n * <example-url>../../iframe.html?id=notification--basic</example-url>\n *\n * @export\n * @class Notification\n */\n@Component({\n\tselector: \"ibm-notification\",\n\ttemplate: `\n\t\t<div class=\"bx--inline-notification__details\">\n\t\t\t<ibm-icon-error-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'error'\"\n\t\t\t\tclass=\"bx--inline-notification__icon\">\n\t\t\t</ibm-icon-error-filled16>\n\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'warning'\"\n\t\t\t\tclass=\"bx--inline-notification__icon\">\n\t\t\t</ibm-icon-warning-filled16>\n\t\t\t<ibm-icon-checkmark-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'success'\"\n\t\t\t\tclass=\"bx--inline-notification__icon\">\n\t\t\t</ibm-icon-checkmark-filled16>\n\t\t\t<div class=\"bx--inline-notification__text-wrapper\">\n\t\t\t\t<p [innerHTML]=\"notificationObj.title\" class=\"bx--inline-notification__title\"></p>\n\t\t\t\t<p [innerHTML]=\"notificationObj.message\" class=\"bx--inline-notification__subtitle\"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<button\n\t\t\t(click)=\"onClose()\"\n\t\t\tclass=\"bx--inline-notification__close-button\"\n\t\t\t[attr.aria-label]=\"notificationObj.closeLabel | async\"\n\t\t\ttype=\"button\">\n\t\t\t<ibm-icon-close16 class=\"bx--inline-notification__close-icon\"></ibm-icon-close16>\n\t\t</button>\n\t`\n})\nexport class Notification {\n\t/**\n\t * Can have `type`, `title`, and `message` members.\n\t *\n\t * `type` can be one of `\"info\"`, `\"warning\"`, `\"error\"`, `\"success\"`\n\t *\n\t * `message` is the message to display\n\t */\n\t@Input() get notificationObj(): NotificationContent {\n\t\treturn this._notificationObj;\n\t}\n\tset notificationObj(obj: NotificationContent) {\n\t\tif (obj.closeLabel) {\n\t\t\tobj.closeLabel = of(obj.closeLabel);\n\t\t}\n\t\tthis._notificationObj = Object.assign({}, this.defaultNotificationObj, obj);\n\t}\n\n\t/**\n\t * Emits on close.\n\t */\n\t@Output() close: EventEmitter<any> = new EventEmitter();\n\n\tcomponentRef: ComponentRef<Notification>;\n\n\t@ViewChild(\"notification\") notification;\n\n\t@HostBinding(\"attr.id\") notificationID = \"notification\";\n\t@HostBinding(\"class.bx--inline-notification\") notificationClass = true;\n\t@HostBinding(\"attr.role\") role = \"alert\";\n\n\t@HostBinding(\"class.bx--inline-notification--error\") get isError() { return this.notificationObj.type === \"error\"; }\n\t@HostBinding(\"class.bx--inline-notification--info\") get isInfo() { return this.notificationObj.type === \"info\"; }\n\t@HostBinding(\"class.bx--inline-notification--success\") get isSuccess() { return this.notificationObj.type === \"success\"; }\n\t@HostBinding(\"class.bx--inline-notification--warning\") get isWarning() { return this.notificationObj.type === \"warning\"; }\n\n\tprotected defaultNotificationObj = {\n\t\ttitle: \"\",\n\t\tmessage: \"\",\n\t\ttype: \"info\",\n\t\tcloseLabel: this.i18n.get(\"NOTIFICATION.CLOSE_BUTTON\")\n\t};\n\tprotected _notificationObj: NotificationContent = Object.assign({}, this.defaultNotificationObj);\n\n\tconstructor(protected notificationDisplayService: NotificationDisplayService, protected i18n: I18n) {}\n\n\t/**\n\t * Emits close event.\n\t */\n\tonClose() {\n\t\tthis.close.emit();\n\t}\n\n\tdestroy() {\n\t\tthis.notificationDisplayService.close(this);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOnInit,\n\tHostBinding\n} from \"@angular/core\";\n\nimport { ToastContent } from \"./notification-content.interface\";\nimport { Notification } from \"./notification.component\";\nimport { ExperimentalService } from \"./../experimental.module\";\nimport { NotificationDisplayService } from \"./notification-display.service\";\nimport { I18n } from \"./../i18n/i18n.module\";\n\n/**\n * Toast messages are displayed toward the top of the UI and do not interrupt user’s work.\n *\n * [See demo](../../?path=/story/notification--toast)\n *\n * <example-url>../../iframe.html?id=notification--toast</example-url>\n *\n * @export\n * @class Toast\n * @extends {Notification}\n * @implements {OnInit}\n */\n@Component({\n\tselector: \"ibm-toast\",\n\ttemplate: `\n\t\t<ibm-icon-error-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'error'\"\n\t\t\t\tclass=\"bx--toast-notification__icon\">\n\t\t\t</ibm-icon-error-filled16>\n\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'warning'\"\n\t\t\t\tclass=\"bx--toast-notification__icon\">\n\t\t\t</ibm-icon-warning-filled16>\n\t\t\t<ibm-icon-checkmark-filled16\n\t\t\t\t*ngIf=\"notificationObj.type === 'success'\"\n\t\t\t\tclass=\"bx--toast-notification__icon\">\n\t\t\t</ibm-icon-checkmark-filled16>\n\t\t<div class=\"bx--toast-notification__details\">\n\t\t\t<h3 class=\"bx--toast-notification__title\" [innerHTML]=\"notificationObj.title\"></h3>\n\t\t\t<p class=\"bx--toast-notification__subtitle\" [innerHTML]=\"notificationObj.subtitle\"></p>\n\t\t\t<p class=\"bx--toast-notification__caption\" [innerHTML]=\"notificationObj.caption\"></p>\n\t\t</div>\n\t\t<button\n\t\t\tclass=\"bx--toast-notification__close-button\"\n\t\t\ttype=\"button\"\n\t\t\t[attr.aria-label]=\"notificationObj.closeLabel\"\n\t\t\t(click)=\"onClose()\">\n\t\t\t<ibm-icon-close16 class=\"bx--toast-notification__close-icon\"></ibm-icon-close16>\n\t\t</button>\n\t`\n})\nexport class Toast extends Notification implements OnInit {\n\t/**\n\t * Can have `type`, `title`, `subtitle`, and `caption` members.\n\t *\n\t * `type` can be one of `\"error\"`, `\"info\"`, `\"warning\"`, or `\"success\"`\n\t */\n\t@Input() notificationObj: ToastContent;\n\n\t@HostBinding(\"attr.id\") toastID = \"notification\";\n\t@HostBinding(\"class.bx--toast-notification\") toastClass = true;\n\t@HostBinding(\"attr.role\") role = \"alert\";\n\n\t@HostBinding(\"class.bx--toast-notification--error\") get isError() { return this.notificationObj[\"type\"] === \"error\"; }\n\t@HostBinding(\"class.bx--toast-notification--info\") get isInfo() { return this.notificationObj[\"type\"] === \"info\"; }\n\t@HostBinding(\"class.bx--toast-notification--success\") get isSuccess() { return this.notificationObj[\"type\"] === \"success\"; }\n\t@HostBinding(\"class.bx--toast-notification--warning\") get isWarning() { return this.notificationObj[\"type\"] === \"warning\"; }\n\n\tget isExperimental() {\n\t\treturn this.experimental.isExperimental;\n\t}\n\n\tconstructor(\n\t\tprotected notificationDisplayService: NotificationDisplayService,\n\t\tprotected i18n: I18n,\n\t\tprotected experimental: ExperimentalService) {\n\t\tsuper(notificationDisplayService, i18n);\n\t}\n\n\tngOnInit() {\n\t\tif (!this.notificationObj.closeLabel) {\n\t\t\tthis.notificationObj.closeLabel = this.i18n.get().NOTIFICATION.CLOSE_BUTTON;\n\t\t}\n\t}\n}\n","import {\n\tApplicationRef,\n\tComponentFactory,\n\tComponentFactoryResolver,\n\tComponentRef,\n\tEventEmitter,\n\tInjectable,\n\tInjector,\n\tOnDestroy\n} from \"@angular/core\";\n\nimport { NotificationContent, ToastContent } from \"./notification-content.interface\";\nimport { Notification } from \"./notification.component\";\nimport { Toast } from \"./toast.component\";\n\n/**\n * Provides a way to use the notification component.\n *\n * Notifications are displayed toward the top of the UI and do not interrupt the user’s work.\n *\n * @export\n * @class NotificationService\n */\n@Injectable()\nexport class NotificationService implements OnDestroy {\n\t/**\n\t * An array containing `ComponentRef`s to all the notifications this service instance\n\t * is responsible for.\n\t *\n\t */\n\tpublic notificationRefs = new Array<ComponentRef<any>>();\n\tpublic onClose: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Constructs NotificationService.\n\t *\n\t * @param {Injector} injector\n\t * @param {ComponentFactoryResolver} componentFactoryResolver\n\t * @param {ApplicationRef} applicationRef\n\t */\n\tconstructor(\n\t\tprotected injector: Injector,\n\t\tprotected componentFactoryResolver: ComponentFactoryResolver,\n\t\tprotected applicationRef: ApplicationRef) {\n\t}\n\n\t/**\n\t * Shows the notification based on the `notificationObj`.\n\t *\n\t * @param {any} notificationObj Can have `type`, `message`, `target`, `duration` and `smart` members.\n\t *\n\t * **Members:**\n\t *\n\t * * `type` can be one of `\"info\"`, `\"warning\"`, `\"danger\"`, `\"success\"`\n\t * * `message` is message for notification to display\n\t * * `target` is css selector defining an element to append notification to. If not provided,\n\t * `showNotification()` creates a place for the notification in `body`\n\t * * `duration` is number of ms to close the notification after. If used in combination with `smart`,\n\t * it's added to the calculated timeout\n\t * * `smart`, set to `true` if you want to use smart notification.\n\t *\n\t * **Example:**\n\t * ```typescript\n\t * // Info notification, saying \"Sample message.\" added to the element with id notification-container\n\t * // uses smart timeout with added duration of 1 second.\n\t * {\n\t *\ttype: \"info\",\n\t *\tmessage: \"Sample message.\",\n\t *\ttarget: \"#notification-container\",\n\t *\tduration: 1000,\n\t *\tsmart: true\n\t * }\n\t * ```\n\t *\n\t * @param {any} [notificationComp=Notification] If provided, used to resolve component factory\n\t */\n\tshowNotification(notificationObj: NotificationContent | ToastContent, notificationComp = Notification) {\n\t\tconst componentFactory = this.componentFactoryResolver.resolveComponentFactory(notificationComp);\n\n\t\tlet notificationRef = componentFactory.create(this.injector);\n\t\tnotificationRef.instance.notificationObj = notificationObj as any; // typescript isn't being very smart here, so we type to any\n\t\tthis.notificationRefs.push(notificationRef);\n\n\t\tthis.onClose = notificationRef.instance.close;\n\t\tthis.applicationRef.attachView(notificationRef.hostView);\n\n\t\tif (notificationObj.target) {\n\t\t\tdocument.querySelector(notificationObj.target).appendChild(notificationRef.location.nativeElement);\n\t\t} else {\n\t\t\tlet body = document.querySelector(\"body\");\n\n\t\t\t// get or create a container for alert list\n\t\t\tlet notificationClassName = \"notification-overlay\";\n\t\t\tlet notificationList = body.querySelector(`.${notificationClassName}`);\n\t\t\tif (!notificationList) {\n\t\t\t\tnotificationList = document.createElement(\"div\");\n\t\t\t\tnotificationList.className = notificationClassName;\n\t\t\t\tbody.appendChild(notificationList);\n\t\t\t}\n\n\t\t\t// add the notification to the top of the list\n\t\t\tif (notificationList.firstChild) {\n\t\t\t\tnotificationList.insertBefore(notificationRef.location.nativeElement, notificationList.firstChild);\n\t\t\t} else {\n\t\t\t\tnotificationList.appendChild(notificationRef.location.nativeElement);\n\t\t\t}\n\t\t}\n\n\t\tif (notificationObj.duration && notificationObj.duration > 0) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.close(notificationRef);\n\t\t\t}, notificationObj.duration);\n\t\t}\n\n\t\tif (notificationObj.smart) {\n\t\t\t// let it disappear after calculated timeout\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.close(notificationRef);\n\t\t\t}, this.getSmartTimeout(notificationObj));\n\t\t}\n\n\t\tthis.onClose.subscribe(() => {\n\t\t\tthis.close(notificationRef);\n\t\t});\n\n\t\tnotificationRef.instance.componentRef = notificationRef;\n\t\treturn notificationRef.instance;\n\t}\n\n\tshowToast(notificationObj: NotificationContent | ToastContent, notificationComp = Toast) {\n\t\treturn this.showNotification(notificationObj, notificationComp as any);\n\t}\n\n\t/**\n\t * Programatically closes notification based on `notificationRef`.\n\t *\n\t * @param notificationRef `ComponentRef` of a notification or `Notification` component you wish to close\n\t */\n\tclose(notificationRef: any) {\n\t\tif (notificationRef) {\n\t\t\tif (notificationRef instanceof Notification) {\n\t\t\t\tthis.close(notificationRef.componentRef);\n\t\t\t} else {\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tthis.applicationRef.detachView(notificationRef.hostView);\n\t\t\t\t\tnotificationRef.destroy();\n\t\t\t\t\tconst index = this.notificationRefs.indexOf(notificationRef);\n\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\tthis.notificationRefs.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the amount of time user needs to read the message in the notification.\n\t *\n\t * @param {any} notificationObj Same object used to instantiate notification.\n\t *\n\t * In addition to `type` and `message` members, use `duration` member to add\n\t * some extra time (in ms) to timeout if you need to.\n\t * @returns {number} calculated timeout (in ms) for smart notification\n\t */\n\tgetSmartTimeout(notificationObj): number {\n\t\t// calculate timeout\n\t\tlet timeout = 600; // start with reaction time\n\n\t\t// custom duration\n\t\ttimeout += notificationObj.duration || 0;\n\n\t\t// message type\n\t\tswitch (notificationObj.type) {\n\t\t\tcase \"info\":\n\t\t\tcase \"success\":\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"danger\": {\n\t\t\t\ttimeout += 3000;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"warning\": {\n\t\t\t\ttimeout += 1500;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// message length\n\t\t// average reader reads around 200 words per minute, or it takes them ~0.3s per word\n\t\t// let's use 1.5 factor for below average speed readers and have 0.45s per word\n\t\tlet wordCount = notificationObj.message.trim().split(/\\s+/).length;\n\t\ttimeout += wordCount * 450;\n\n\t\treturn timeout;\n\t}\n\n\t/**\n\t * OnDestroy hook.\n\t *\n\t * Destroys all living notifications it is responsible for.\n\t *\n\t */\n\tngOnDestroy() {\n\t\tif (this.notificationRefs.length > 0) {\n\t\t\tfor (let i = 0; i < this.notificationRefs.length; i++) {\n\t\t\t\tlet notificationRef = this.notificationRefs[i];\n\t\t\t\tthis.applicationRef.detachView(notificationRef.hostView);\n\t\t\t\tnotificationRef.destroy();\n\t\t\t}\n\t\t\tthis.notificationRefs.length = 0;\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\nimport { ErrorFilled16Module } from \"@carbon/icons-angular/lib/error--filled/16\";\nimport { CheckmarkFilled16Module } from \"@carbon/icons-angular/lib/checkmark--filled/16\";\nimport { WarningFilled16Module } from \"@carbon/icons-angular/lib/warning--filled/16\";\n\nimport { Toast } from \"./toast.component\";\nimport { Notification } from \"./notification.component\";\nimport { NotificationService } from \"./notification.service\";\nimport { NotificationDisplayService } from \"./notification-display.service\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { ExperimentalModule } from \"./../experimental.module\";\n\nexport { NotificationService } from \"./notification.service\";\nexport { NotificationDisplayService } from \"./notification-display.service\";\nexport { Notification } from \"./notification.component\";\nexport { Toast } from \"./toast.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tNotification,\n\t\tToast\n\t],\n\texports: [\n\t\tNotification,\n\t\tToast\n\t],\n\tentryComponents: [Notification, Toast],\n\timports: [\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tExperimentalModule,\n\t\tClose16Module,\n\t\tErrorFilled16Module,\n\t\tCheckmarkFilled16Module,\n\t\tWarningFilled16Module\n\t],\n\tproviders: [NotificationService, NotificationDisplayService]\n})\nexport class NotificationModule {}\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CaretUp16 = /** @class */ (function () {\n function CaretUp16() {\n this.focusable = false;\n }\n CaretUp16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-caret-up16\",\n template: \"\\n <svg\\n ibmIconCaretUp16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CaretUp16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CaretUp16;\n}());\nexport { CaretUp16 };\nvar CaretUp16Directive = /** @class */ (function () {\n function CaretUp16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CaretUp16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M4 10l4-4 4 4z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CaretUp16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"caret-up16-\" + CaretUp16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"caret-up16-\" + CaretUp16Directive.titleIdCounter);\n }\n };\n CaretUp16Directive.titleIdCounter = 0;\n CaretUp16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCaretUp16]\"\n },] },\n ];\n /** @nocollapse */\n CaretUp16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CaretUp16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CaretUp16Directive;\n}());\nexport { CaretUp16Directive };\nvar CaretUp16Module = /** @class */ (function () {\n function CaretUp16Module() {\n }\n CaretUp16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CaretUp16,\n CaretUp16Directive\n ],\n exports: [\n CaretUp16,\n CaretUp16Directive\n ]\n },] },\n ];\n return CaretUp16Module;\n}());\nexport { CaretUp16Module };\n//# sourceMappingURL=16.js.map","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CaretDown16 = /** @class */ (function () {\n function CaretDown16() {\n this.focusable = false;\n }\n CaretDown16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-caret-down16\",\n template: \"\\n <svg\\n ibmIconCaretDown16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CaretDown16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CaretDown16;\n}());\nexport { CaretDown16 };\nvar CaretDown16Directive = /** @class */ (function () {\n function CaretDown16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CaretDown16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M12 6l-4 4-4-4z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CaretDown16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"caret-down16-\" + CaretDown16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"caret-down16-\" + CaretDown16Directive.titleIdCounter);\n }\n };\n CaretDown16Directive.titleIdCounter = 0;\n CaretDown16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCaretDown16]\"\n },] },\n ];\n /** @nocollapse */\n CaretDown16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CaretDown16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CaretDown16Directive;\n}());\nexport { CaretDown16Directive };\nvar CaretDown16Module = /** @class */ (function () {\n function CaretDown16Module() {\n }\n CaretDown16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CaretDown16,\n CaretDown16Directive\n ],\n exports: [\n CaretDown16,\n CaretDown16Directive\n ]\n },] },\n ];\n return CaretDown16Module;\n}());\nexport { CaretDown16Module };\n//# sourceMappingURL=16.js.map","import {\n\tComponent,\n\tInput,\n\tHostBinding,\n\tEventEmitter,\n\tOutput,\n\tTemplateRef\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\n\n/**\n * Used to emit changes performed on number input components.\n * @export\n * @class NumberChange\n */\nexport class NumberChange {\n\t/**\n\t * Contains the `Number` that has been changed.\n\t * @type {Number}\n\t * @memberof NumberChange\n\t */\n\tsource: Number;\n\t/**\n\t * The value of the `Number` field encompassed in the `NumberChange` class.\n\t * @type {number}\n\t * @memberof NumberChange\n\t */\n\tvalue: number;\n}\n\n/**\n * [See demo](../../?path=/story/number--basic)\n *\n * <example-url>../../iframe.html?id=number--basic</example-url>\n *\n * @export\n * @class Number\n * @implements {ControlValueAccessor}\n */\n@Component({\n\tselector: \"ibm-number\",\n\ttemplate: `\n\t\t<label *ngIf=\"skeleton && label\" class=\"bx--label bx--skeleton\"></label>\n\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t</label>\n\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t</div>\n\t\t<div\n\t\t\tdata-numberinput\n\t\t\t[attr.data-invalid]=\"(invalid ? true : null)\"\n\t\t\tclass=\"bx--number\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--number--light': theme === 'light',\n\t\t\t\t'bx--number--nolabel': !label,\n\t\t\t\t'bx--number--helpertext': helperText,\n\t\t\t\t'bx--skeleton' : skeleton\n\t\t\t}\">\n\t\t\t<div class=\"bx--number__input-wrapper\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t[id]=\"id\"\n\t\t\t\t\t[value]=\"value\"\n\t\t\t\t\t[attr.min]=\"min\"\n\t\t\t\t\t[attr.max]=\"max\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t[required]=\"required\"\n\t\t\t\t\t(input)=\"onNumberInputChange($event)\"/>\n\t\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t\t*ngIf=\"!skeleton && invalid\"\n\t\t\t\t\tclass=\"bx--number__invalid\"\n\t\t\t\t\tstyle=\"display: inherit;\">\n\t\t\t\t</ibm-icon-warning-filled16>\n\t\t\t\t<div *ngIf=\"!skeleton\" class=\"bx--number__controls\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"bx--number__control-btn up-icon\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\t(click)=\"onIncrement()\">\n\t\t\t\t\t\t<ibm-icon-caret-up16></ibm-icon-caret-up16>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"bx--number__control-btn down-icon\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\taria-atomic=\"true\"\n\t\t\t\t\t\t(click)=\"onDecrement()\">\n\t\t\t\t\t\t<ibm-icon-caret-down16></ibm-icon-caret-down16>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Number,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Number implements ControlValueAccessor {\n\t/**\n\t * Variable used for creating unique ids for number input components.\n\t */\n\tstatic numberCount = 0;\n\n\t@HostBinding(\"class.bx--form-item\") containerClass = true;\n\n\t/**\n\t * `light` or `dark` number input theme.\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * Set to `true` for a disabled number input.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a loading number component.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an invalid number component.\n\t */\n\t@Input() invalid = false;\n\t/**\n\t * The unique id for the number component.\n\t */\n\t@Input() id = `number-${Number.numberCount}`;\n\t/**\n\t * Reflects the required attribute of the `input` element.\n\t */\n\t@Input() required: boolean;\n\t/**\n\t * Sets the value attribute on the `input` element.\n\t */\n\t@Input() value = 0;\n\t/**\n\t * Sets the min attribute on the `input` element.\n\t */\n\t@Input() min = null;\n\t/**\n\t * Sets the max attribute on the `input` element.\n\t */\n\t@Input() max = null;\n\t/**\n\t * Sets the text inside the `label` tag.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Sets the optional helper text.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Sets the invalid text.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Emits event notifying other classes when a change in state occurs in the input.\n\t */\n\t@Output() change = new EventEmitter<NumberChange>();\n\n\t/**\n\t * Creates an instance of `Number`.\n\t * @memberof Number\n\t */\n\tconstructor() {\n\t\tNumber.numberCount++;\n\t}\n\n\t/**\n\t * This is the initial value set to the component\n\t * @param value The input value.\n\t */\n\tpublic writeValue(value: any) {\n\t\tthis.value = value;\n\t}\n\n\t/**\n\t * Sets a method in order to propagate changes back to the form.\n\t * @param {any} fn\n\t * @memberof Number\n\t */\n\tpublic registerOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registers a callback to be triggered when the control has been touched.\n\t * @param fn Callback to be triggered when the number input is touched.\n\t */\n\tpublic registerOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/**\n\t * Sets the disabled state through the model\n\t */\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.\n\t * @memberof Number\n\t */\n\tonTouched: () => any = () => { };\n\n\t/**\n\t * Method set in `registerOnChange` to propagate changes back to the form.\n\t * @memberof Number\n\t */\n\tpropagateChange = (_: any) => { };\n\n\t/**\n\t * Adds 1 to the current `value`.\n\t */\n\tonIncrement(): void {\n\t\tif (this.max === null || this.value < this.max) {\n\t\t\tthis.value++;\n\t\t\tthis.emitChangeEvent();\n\t\t}\n\t}\n\n\t/**\n\t * Subtracts 1 to the current `value`.\n\t */\n\tonDecrement(): void {\n\t\tif (this.min === null || this.value > this.min) {\n\t\t\tthis.value--;\n\t\t\tthis.emitChangeEvent();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a class of `NumberChange` to emit the change in the `Number`.\n\t */\n\temitChangeEvent(): void {\n\t\tlet event = new NumberChange();\n\t\tevent.source = this;\n\t\tevent.value = this.value;\n\t\tthis.change.emit(event);\n\t\tthis.propagateChange(this.value);\n\t}\n\n\tonNumberInputChange(event) {\n\t\tthis.value = event.target.value;\n\t\tthis.emitChangeEvent();\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { CaretUp16Module } from \"@carbon/icons-angular/lib/caret--up/16\";\nimport { CaretDown16Module } from \"@carbon/icons-angular/lib/caret--down/16\";\nimport { WarningFilled16Module } from \"@carbon/icons-angular/lib/warning--filled/16\";\n\n// imports\nimport { Number } from \"./number.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tNumber\n\t],\n\texports: [\n\t\tNumber\n\t],\n\timports: [\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tCaretUp16Module,\n\t\tCaretDown16Module,\n\t\tWarningFilled16Module\n\t]\n})\nexport class NumberModule { }\n\nexport { Number };\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CaretLeft16 = /** @class */ (function () {\n function CaretLeft16() {\n this.focusable = false;\n }\n CaretLeft16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-caret-left16\",\n template: \"\\n <svg\\n ibmIconCaretLeft16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CaretLeft16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CaretLeft16;\n}());\nexport { CaretLeft16 };\nvar CaretLeft16Directive = /** @class */ (function () {\n function CaretLeft16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CaretLeft16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M11 12L6 8l5-4z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CaretLeft16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"caret-left16-\" + CaretLeft16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"caret-left16-\" + CaretLeft16Directive.titleIdCounter);\n }\n };\n CaretLeft16Directive.titleIdCounter = 0;\n CaretLeft16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCaretLeft16]\"\n },] },\n ];\n /** @nocollapse */\n CaretLeft16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CaretLeft16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CaretLeft16Directive;\n}());\nexport { CaretLeft16Directive };\nvar CaretLeft16Module = /** @class */ (function () {\n function CaretLeft16Module() {\n }\n CaretLeft16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CaretLeft16,\n CaretLeft16Directive\n ],\n exports: [\n CaretLeft16,\n CaretLeft16Directive\n ]\n },] },\n ];\n return CaretLeft16Module;\n}());\nexport { CaretLeft16Module };\n//# sourceMappingURL=16.js.map","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CaretRight16 = /** @class */ (function () {\n function CaretRight16() {\n this.focusable = false;\n }\n CaretRight16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-caret-right16\",\n template: \"\\n <svg\\n ibmIconCaretRight16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CaretRight16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CaretRight16;\n}());\nexport { CaretRight16 };\nvar CaretRight16Directive = /** @class */ (function () {\n function CaretRight16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CaretRight16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M6 4l5 4-5 4z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CaretRight16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"caret-right16-\" + CaretRight16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"caret-right16-\" + CaretRight16Directive.titleIdCounter);\n }\n };\n CaretRight16Directive.titleIdCounter = 0;\n CaretRight16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCaretRight16]\"\n },] },\n ];\n /** @nocollapse */\n CaretRight16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CaretRight16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CaretRight16Directive;\n}());\nexport { CaretRight16Directive };\nvar CaretRight16Module = /** @class */ (function () {\n function CaretRight16Module() {\n }\n CaretRight16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CaretRight16,\n CaretRight16Directive\n ],\n exports: [\n CaretRight16,\n CaretRight16Directive\n ]\n },] },\n ];\n return CaretRight16Module;\n}());\nexport { CaretRight16Module };\n//# sourceMappingURL=16.js.map","import { PaginationModel } from \"./pagination.module\";\nimport {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\n\nimport { I18n, Overridable } from \"./../i18n/i18n.module\";\nimport { ExperimentalService } from \"./../experimental.module\";\nimport { merge } from \"./../utils/object\";\n\nexport interface PaginationTranslations {\n\tITEMS_PER_PAGE: string;\n\tOPEN_LIST_OF_OPTIONS: string;\n\tBACKWARD: string;\n\tFORWARD: string;\n\tTOTAL_ITEMS: string;\n\tTOTAL_PAGES: string;\n\tOF_LAST_PAGES: string;\n}\n\n/**\n * Use pagination when you have multiple pages of data to handle.\n *\n * [See demo](../../?path=/story/pagination--basic)\n *\n * ```html\n * <ibm-pagination [model]=\"model\" (selectPage)=\"selectPage($event)\"></ibm-pagination>\n * ```\n *\n * In your `selectPage()` method set the `model.currentPage` to selected page, _after_\n * you load the page.\n *\n * ```typescript\n * selectPage(page) {\n * \t// ... your code to load the page goes here\n *\n * \tthis.model.currentPage = page;\n *\n * \t// ... anything you want to do after page selection changes goes here\n * }\n * ```\n *\n * <example-url>../../iframe.html?id=pagination--basic</example-url>\n *\n * @export\n * @class Pagination\n */\n@Component({\n\tselector: \"ibm-pagination\",\n\ttemplate: `\n\t<div\n\t\tclass=\"bx--pagination\"\n\t\t[ngClass]=\"{\n\t\t\t'bx--skeleton': skeleton\n\t\t}\">\n\t\t<!-- left skeleton div -->\n\t\t<div *ngIf=\"skeleton\" class=\"bx--pagination__left\">\n\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 70px\"></p>\n\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 35px\"></p>\n\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 105px\"></p>\n\t\t</div>\n\n\t\t<div *ngIf=\"!skeleton\" class=\"bx--pagination__left\">\n\t\t\t<label class=\"bx--pagination__text\" [for]=\"itemsPerPageSelectId\">\n\t\t\t\t{{itemsPerPageText.subject | async}}\n\t\t\t</label>\n\t\t\t<div class=\"bx--form-item\">\n\t\t\t\t<div class=\"bx--select bx--select--inline\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--select__item-count': isExperimental\n\t\t\t\t\t}\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t[id]=\"itemsPerPageSelectId\"\n\t\t\t\t\t\t[(ngModel)]=\"itemsPerPage\"\n\t\t\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t\t\t<option\n\t\t\t\t\t\t\tclass=\"bx--select-option\"\n\t\t\t\t\t\t\t*ngFor=\"let option of itemsPerPageOptions\"\n\t\t\t\t\t\t\t[value]=\"option\">\n\t\t\t\t\t\t\t\t{{ option }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-chevron-down16\n\t\t\t\t\t\tstyle=\"display: inherit;\"\n\t\t\t\t\t\tinnerClass=\"bx--select__arrow\"\n\t\t\t\t\t\t[ariaLabel]=\"optionsListText.subject | async\">\n\t\t\t\t\t</ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<span *ngIf=\"!pagesUnknown\" class=\"bx--pagination__text\">\n\t\t\t\t<span *ngIf=\"!isExperimental\">|&nbsp;</span>\n\t\t\t\t{{totalItemsText.subject | i18nReplace:{start: startItemIndex, end: endItemIndex, total: model.totalDataLength } | async}}\n\t\t\t</span>\n\t\t\t<span *ngIf=\"pagesUnknown\" class=\"bx--pagination__text\">\n\t\t\t\t<span *ngIf=\"!isExperimental\">|&nbsp;</span>\n\t\t\t\t{{totalItemsUnknownText.subject | i18nReplace:{start: startItemIndex, end: endItemIndex } | async}}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- right skeleton div -->\n\t\t<div *ngIf=\"skeleton\" class=\"bx--pagination__right\">\n\t\t\t<p class=\"bx--skeleton__text\" style=\"width: 70px\"></p>\n\t\t</div>\n\n\t\t<div *ngIf=\"!skeleton\" class=\"bx--pagination__right\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--pagination--inline': !isExperimental\n\t\t\t}\">\n\n\t\t\t<div *ngIf=\"!pageInputDisabled\" class=\"bx--form-item\">\n\t\t\t\t<div class=\"bx--select bx--select--inline\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--select__page-number' : isExperimental\n\t\t\t\t}\">\n\t\t\t\t\t<label [for]=\"currentPageSelectId\" class=\"bx--label bx--visually-hidden\">{{itemsPerPageText.subject | async}}</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\t*ngIf=\"pageOptions.length > pageSelectThreshold\"\n\t\t\t\t\t\tstyle=\"padding-right: 1rem; margin-right: 1rem;\"\n\t\t\t\t\t\t[id]=\"currentPageSelectId\"\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\t[max]=\"pageOptions.length\"\n\t\t\t\t\t\tclass=\"bx--select-input\"\n\t\t\t\t\t\t[(ngModel)]=\"currentPage\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t*ngIf=\"pageOptions.length <= pageSelectThreshold\"\n\t\t\t\t\t\t[id]=\"currentPageSelectId\"\n\t\t\t\t\t\tclass=\"bx--select-input\"\n\t\t\t\t\t\t[(ngModel)]=\"currentPage\">\n\t\t\t\t\t\t<option *ngFor=\"let page of pageOptions; let i = index;\" class=\"bx--select-option\" [value]=\"i + 1\">{{i + 1}}</option>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-chevron-down16\n\t\t\t\t\t\t*ngIf=\"pageOptions.length <= 1000\"\n\t\t\t\t\t\tstyle=\"display: inherit;\"\n\t\t\t\t\t\tinnerClass=\"bx--select__arrow\"\n\t\t\t\t\t\t[ariaLabel]=\"optionsListText.subject | async\">\n\t\t\t\t\t</ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<span *ngIf=\"!pageInputDisabled && !pagesUnknown\" class=\"bx--pagination__text\">\n\t\t\t\t{{ofLastPagesText.subject | i18nReplace: {last: lastPage} | async}}\n\t\t\t</span>\n\t\t\t<span *ngIf=\"!pageInputDisabled && pagesUnknown\" class=\"bx--pagination__text\">\n\t\t\t\t{{pageText.subject | async}} {{currentPage}}\n\t\t\t</span>\n\t\t\t<button\n\t\t\t\tclass=\"bx--pagination__button bx--pagination__button--backward\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--pagination__button--no-index': currentPage <= 1 || disabled\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.aria-label]=\"backwardText.subject | async\"\n\t\t\t\t(click)=\"selectPage.emit(previousPage)\"\n\t\t\t\t[disabled]=\"(currentPage <= 1 || disabled ? true : null)\">\n\t\t\t\t<ibm-icon-caret-left16></ibm-icon-caret-left16>\n\t\t\t</button>\n\n\t\t\t<button\n\t\t\t\tclass=\"bx--pagination__button bx--pagination__button--forward\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--pagination__button--no-index': currentPage >= lastPage || disabled\n\t\t\t\t}\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[attr.aria-label]=\"forwardText.subject | async\"\n\t\t\t\t(click)=\"selectPage.emit(nextPage)\"\n\t\t\t\t[disabled]=\"(currentPage >= lastPage || disabled ? true : null)\">\n\t\t\t\t<ibm-icon-caret-right16></ibm-icon-caret-right16>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n\t`\n})\nexport class Pagination {\n\tstatic paginationCounter = 0;\n\n\t/**\n\t * Set to `true` for a loading pagination component.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * `PaginationModel` with the information about pages you're controlling.\n\t *\n\t * @type {Model}\n\t */\n\t@Input() model: PaginationModel;\n\t/**\n \t * Set to `true` to disable the backward/forward buttons.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` to disable the select box that changes the page.\n\t */\n\t@Input() pageInputDisabled = false;\n\t/**\n\t * Set to `true` if the total number of items is unknown.\n\t */\n\t@Input() pagesUnknown = false;\n\t@Input() pageSelectThreshold = 1000;\n\n\t/**\n\t * Expects an object that contains some or all of:\n\t * ```\n\t * {\n\t *\t\t\"ITEMS_PER_PAGE\": \"Items per page:\",\n\t *\t\t\"OPEN_LIST_OF_OPTIONS\": \"Open list of options\",\n\t *\t\t\"BACKWARD\": \"Backward\",\n\t *\t\t\"FORWARD\": \"Forward\",\n\t *\t\t\"TOTAL_ITEMS\": \"{{start}}-{{end}} of {{total}} items\",\n\t *\t\t\"TOTAL_PAGES\": \"{{current}} of {{last}} pages\",\n\t *\t\t\"OF_LAST_PAGES\": \"of {{last}} pages\"\n\t * }\n\t * ```\n\t */\n\t@Input()\n\tset translations (value: PaginationTranslations) {\n\t\tconst valueWithDefaults = merge(this.i18n.getMultiple(\"PAGINATION\"), value);\n\t\tthis.itemsPerPageText.override(valueWithDefaults.ITEMS_PER_PAGE);\n\t\tthis.optionsListText.override(valueWithDefaults.OPEN_LIST_OF_OPTIONS);\n\t\tthis.backwardText.override(valueWithDefaults.BACKWARD);\n\t\tthis.forwardText.override(valueWithDefaults.FORWARD);\n\t\tthis.totalItemsText.override(valueWithDefaults.TOTAL_ITEMS);\n\t\tthis.totalItemsUnknownText.override(valueWithDefaults.TOTAL_ITEMS_UNKNOWN);\n\t\tthis.totalPagesText.override(valueWithDefaults.TOTAL_PAGES);\n\t\tthis.pageText.override(valueWithDefaults.PAGE);\n\t\tthis.ofLastPagesText.override(valueWithDefaults.OF_LAST_PAGES);\n\t}\n\n\t/**\n\t * Options for items per page select\n\t *\n\t * A default array of options will be defined: [10, 20, 30, 40, 50]\n\t */\n\t@Input() itemsPerPageOptions: number[] = [10, 20, 30, 40, 50];\n\n\t/**\n\t * Emits the new page number.\n\t *\n\t * You should tie into this and update `model.currentPage` once the fresh\n\t * data is finally loaded.\n\t */\n\t@Output() selectPage = new EventEmitter<number>();\n\n\tget itemsPerPage() {\n\t\treturn this.model.pageLength;\n\t}\n\tset itemsPerPage(value) {\n\t\tthis.model.pageLength = Number(value);\n\t\tthis.currentPage = 1; // reset page\n\t}\n\n\tget currentPage() {\n\t\treturn this.model.currentPage;\n\t}\n\tset currentPage(value) {\n\t\tvalue = Number(value);\n\t\t// emits the value to allow the user to update current page\n\t\t// in the model once the page is loaded\n\t\tthis.selectPage.emit(value);\n\t}\n\t/**\n\t * The last page number to display in the pagination view.\n\t */\n\tget lastPage(): number {\n\t\tconst last = Math.ceil(this.model.totalDataLength / this.model.pageLength);\n\t\treturn last > 0 ? last : 1;\n\t}\n\n\tget startItemIndex() {\n\t\treturn this.endItemIndex > 0 ? (this.currentPage - 1) * this.model.pageLength + 1 : 0;\n\t}\n\n\tget endItemIndex() {\n\t\tconst projectedEndItemIndex = this.currentPage * this.model.pageLength;\n\n\t\treturn projectedEndItemIndex < this.model.totalDataLength ? projectedEndItemIndex : this.model.totalDataLength;\n\t}\n\n\t/**\n\t * The previous page number to navigate to, from the current page.\n\t */\n\tget previousPage(): number {\n\t\treturn this.currentPage <= 1 ? 1 : this.currentPage - 1;\n\t}\n\n\t/**\n\t * The next page number to navigate to, from the current page.\n\t */\n\tget nextPage(): number {\n\t\tconst lastPage = this.lastPage;\n\t\treturn this.currentPage >= lastPage ? lastPage : this.currentPage + 1;\n\t}\n\n\tget isExperimental() {\n\t\treturn this.experimental.isExperimental;\n\t}\n\n\tget pageOptions() {\n\t\tif (this._pageOptions.length !== this.model.totalDataLength) {\n\t\t\tthis._pageOptions = Array(Math.ceil(this.model.totalDataLength / this.itemsPerPage));\n\t\t}\n\t\treturn this._pageOptions;\n\t}\n\n\titemsPerPageSelectId = `pagination-select-items-per-page-${Pagination.paginationCounter}`;\n\tcurrentPageSelectId = `pagination-select-current-page-${Pagination.paginationCounter}`;\n\n\titemsPerPageText = this.i18n.getOverridable(\"PAGINATION.ITEMS_PER_PAGE\");\n\toptionsListText = this.i18n.getOverridable(\"PAGINATION.OPEN_LIST_OF_OPTIONS\");\n\tbackwardText = this.i18n.getOverridable(\"PAGINATION.BACKWARD\");\n\tforwardText = this.i18n.getOverridable(\"PAGINATION.FORWARD\");\n\ttotalItemsText = this.i18n.getOverridable(\"PAGINATION.TOTAL_ITEMS\");\n\ttotalItemsUnknownText = this.i18n.getOverridable(\"PAGINATION.TOTAL_ITEMS_UNKNOWN\");\n\ttotalPagesText = this.i18n.getOverridable(\"PAGINATION.TOTAL_PAGES\");\n\tpageText = this.i18n.getOverridable(\"PAGINATION.PAGE\");\n\tofLastPagesText = this.i18n.getOverridable(\"PAGINATION.OF_LAST_PAGES\");\n\n\tprotected _pageOptions = [];\n\n\tconstructor(protected i18n: I18n, protected experimental: ExperimentalService) {\n\t\tPagination.paginationCounter++;\n\t}\n}\n","export class PaginationModel {\n\t/**\n\t * Tracks the current page.\n\t *\n\t * @type {number}\n\t * @memberof PaginationModel\n\t */\n\tcurrentPage: number;\n\n\t/**\n\t * Length of page.\n\t *\n\t * @type {number}\n\t * @memberof PaginationModel\n\t */\n\tpageLength: number;\n\n\t/**\n\t * Absolute total number of items needed to paginate.\n\t *\n\t * @protected\n\t * @type {number}\n\t * @memberof PaginationModel\n\t */\n\ttotalDataLength: number;\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\nimport { CaretLeft16Module } from \"@carbon/icons-angular/lib/caret--left/16\";\nimport { CaretRight16Module } from \"@carbon/icons-angular/lib/caret--right/16\";\n\nimport { Pagination } from \"./pagination.component\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { ExperimentalModule } from \"./../experimental.module\";\n\nexport { PaginationModel } from \"./pagination-model.class\";\nexport { Pagination } from \"./pagination.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tPagination\n\t],\n\texports: [\n\t\tPagination\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tI18nModule,\n\t\tExperimentalModule,\n\t\tChevronDown16Module,\n\t\tCaretLeft16Module,\n\t\tCaretRight16Module\n\t]\n})\nexport class PaginationModule {}\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar CheckmarkOutline16 = /** @class */ (function () {\n function CheckmarkOutline16() {\n this.focusable = false;\n }\n CheckmarkOutline16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-checkmark-outline16\",\n template: \"\\n <svg\\n ibmIconCheckmarkOutline16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n CheckmarkOutline16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return CheckmarkOutline16;\n}());\nexport { CheckmarkOutline16 };\nvar CheckmarkOutline16Directive = /** @class */ (function () {\n function CheckmarkOutline16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n CheckmarkOutline16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z\\\"></path><path d=\\\"M7 10.8L4.5 8.3l.8-.8L7 9.2l3.7-3.7.8.8z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n CheckmarkOutline16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"checkmark-outline16-\" + CheckmarkOutline16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"checkmark-outline16-\" + CheckmarkOutline16Directive.titleIdCounter);\n }\n };\n CheckmarkOutline16Directive.titleIdCounter = 0;\n CheckmarkOutline16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconCheckmarkOutline16]\"\n },] },\n ];\n /** @nocollapse */\n CheckmarkOutline16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n CheckmarkOutline16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return CheckmarkOutline16Directive;\n}());\nexport { CheckmarkOutline16Directive };\nvar CheckmarkOutline16Module = /** @class */ (function () {\n function CheckmarkOutline16Module() {\n }\n CheckmarkOutline16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n CheckmarkOutline16,\n CheckmarkOutline16Directive\n ],\n exports: [\n CheckmarkOutline16,\n CheckmarkOutline16Directive\n ]\n },] },\n ];\n return CheckmarkOutline16Module;\n}());\nexport { CheckmarkOutline16Module };\n//# sourceMappingURL=16.js.map","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Warning16 = /** @class */ (function () {\n function Warning16() {\n this.focusable = false;\n }\n Warning16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-warning16\",\n template: \"\\n <svg\\n ibmIconWarning16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Warning16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Warning16;\n}());\nexport { Warning16 };\nvar Warning16Directive = /** @class */ (function () {\n function Warning16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Warning16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z\\\"></path><path d=\\\"M7.5 4h1v5h-1zm.5 6.2c-.4 0-.8.3-.8.8s.3.8.8.8c.4 0 .8-.3.8-.8s-.4-.8-.8-.8z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Warning16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"warning16-\" + Warning16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"warning16-\" + Warning16Directive.titleIdCounter);\n }\n };\n Warning16Directive.titleIdCounter = 0;\n Warning16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconWarning16]\"\n },] },\n ];\n /** @nocollapse */\n Warning16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Warning16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Warning16Directive;\n}());\nexport { Warning16Directive };\nvar Warning16Module = /** @class */ (function () {\n function Warning16Module() {\n }\n Warning16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Warning16,\n Warning16Directive\n ],\n exports: [\n Warning16,\n Warning16Directive\n ]\n },] },\n ];\n return Warning16Module;\n}());\nexport { Warning16Module };\n//# sourceMappingURL=16.js.map","import { Component, Input } from \"@angular/core\";\nimport { ExperimentalService } from \"./../experimental.module\";\nimport { Step } from \"./progress-indicator-step.interface\";\n\n/**\n * [See demo](../../?path=/story/progress-indicator--basic)\n *\n * <example-url>../../iframe.html?id=progress-indicator--basic</example-url>\n *\n * @export\n * @class ProgressIndicator\n */\n@Component({\n\tselector: \"ibm-progress-indicator\",\n\ttemplate: `\n\t<ul\n\t\tdata-progress\n\t\tdata-progress-current\n\t\tclass=\"bx--progress\"\n\t\t[ngClass]=\"{\n\t\t\t'bx--skeleton': skeleton,\n\t\t\t'bx--progress--vertical': (orientation === 'vertical')\n\t\t}\">\n\t\t<li\n\t\t\tclass=\"bx--progress-step bx--progress-step--{{step.state[0]}}\"\n\t\t\t*ngFor=\"let step of steps\"\n\t\t\t[ngClass]=\"{'bx--progress-step--disabled' : step.disabled}\">\n\t\t\t<div class=\"bx--progress-step-button bx--progress-step-button--unclickable\" role=\"button\" tabindex=\"-1\">\n\t\t\t\t<ibm-icon-checkmark-outline16 *ngIf=\"step.state == 'complete'\"></ibm-icon-checkmark-outline16>\n\t\t\t\t<svg *ngIf=\"step.state == 'current'\">\n\t\t\t\t\t<path *ngIf=\"isExperimental\" d=\"M 7, 7 m -7, 0 a 7,7 0 1,0 14,0 a 7,7 0 1,0 -14,0\" ></path>\n\t\t\t\t</svg>\n\t\t\t\t<svg *ngIf=\"step.state == 'incomplete'\">\n\t\t\t\t\t<path\n\t\t\t\t\t\t*ngIf=\"isExperimental\"\n\t\t\t\t\t\td=\"M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z\">\n\t\t\t\t\t</path>\n\t\t\t\t</svg>\n\t\t\t\t<ibm-icon-warning16 *ngIf=\"step.state.includes('error')\" innerClass=\"bx--progress__warning\"></ibm-icon-warning16>\n\t\t\t\t<p\n\t\t\t\t\tclass=\"bx--progress-label\"\n\t\t\t\t\t*ngIf=\"step.tooltip\"\n\t\t\t\t\t[ibmTooltip]=\"step.tooltip.content\"\n\t\t\t\t\t[trigger]=\"step.tooltip.trigger\"\n\t\t\t\t\t[placement]=\"step.tooltip.placement\"\n\t\t\t\t\t[title]=\"step.tooltip.title\"\n\t\t\t\t\t[gap]=\"step.tooltip.gap\"\n\t\t\t\t\t[appendInline]=\"step.tooltip.appendInline\"\n\t\t\t\t\t[data]=\"step.tooltip.data\">\n\t\t\t\t\t{{step.text}}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"bx--progress-label\" *ngIf=\"!step.tooltip\">{{step.text}}</p>\n\t\t\t\t<p *ngIf=\"step.optionalText\" class=\"bx--progress-optional\">{{step.optionalText}}</p>\n\t\t\t\t<span class=\"bx--progress-line\"></span>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n\t`\n})\nexport class ProgressIndicator {\n\tstatic skeletonSteps(stepCount: number) {\n\t\tconst steps = [];\n\t\tfor (let i = 0; i < stepCount; i++) {\n\t\t\tsteps.push({\"state\": [\"incomplete\"]});\n\t\t}\n\n\t\treturn steps;\n\t}\n\n\t@Input() steps: Array<Step>;\n\t@Input() orientation: \"horizontal\" | \"vertical\" = \"horizontal\";\n\t@Input() skeleton = false;\n\n\t@Input() get current() {\n\t\treturn this.steps.findIndex(step => step.state.includes(\"current\"));\n\t}\n\tset current(current: number) {\n\t\tif (current === undefined || current < 0) {\n\t\t\tfor (let i = 0; i < this.steps.length; i++) {\n\t\t\t\tthis.steps[i].state[0] = \"incomplete\";\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (current > this.steps.length - 1) {\n\t\t\tfor (let i = 0; i < this.steps.length; i++) {\n\t\t\t\tthis.steps[i].state[0] = \"complete\";\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis.steps[current].state[0] = \"current\";\n\t\tfor (let i = 0; i < current; i++) {\n\t\t\tthis.steps[i].state[0] = \"complete\";\n\t\t}\n\t\tfor (let i = current + 1; i < this.steps.length; i++) {\n\t\t\tthis.steps[i].state[0] = \"incomplete\";\n\t\t}\n\t}\n\n\tget isExperimental() {\n\t\treturn this.experimental.isExperimental;\n\t}\n\n\tconstructor(protected experimental: ExperimentalService) {}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CheckmarkOutline16Module } from \"@carbon/icons-angular/lib/checkmark--outline/16\";\nimport { Warning16Module } from \"@carbon/icons-angular/lib/warning/16\";\n\nimport { ProgressIndicator } from \"./progress-indicator.component\";\nimport { DialogModule } from \"./../dialog/dialog.module\";\nimport { ExperimentalModule } from \"./../experimental.module\";\n\nexport { ProgressIndicator } from \"./progress-indicator.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tProgressIndicator\n\t],\n\texports: [\n\t\tProgressIndicator\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tDialogModule,\n\t\tExperimentalModule,\n\t\tCheckmarkOutline16Module,\n\t\tWarning16Module\n\t]\n})\nexport class ProgressIndicatorModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Search16 = /** @class */ (function () {\n function Search16() {\n this.focusable = false;\n }\n Search16.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-search16\",\n template: \"\\n <svg\\n ibmIconSearch16\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Search16.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Search16;\n}());\nexport { Search16 };\nvar Search16Directive = /** @class */ (function () {\n function Search16Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Search16Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" aria-hidden=\\\"true\\\"><path d=\\\"M15 14.3L10.7 10c1.9-2.3 1.6-5.8-.7-7.7S4.2.7 2.3 3 .7 8.8 3 10.7c2 1.7 5 1.7 7 0l4.3 4.3.7-.7zM2 6.5C2 4 4 2 6.5 2S11 4 11 6.5 9 11 6.5 11 2 9 2 6.5z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Search16Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"search16-\" + Search16Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"search16-\" + Search16Directive.titleIdCounter);\n }\n };\n Search16Directive.titleIdCounter = 0;\n Search16Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconSearch16]\"\n },] },\n ];\n /** @nocollapse */\n Search16Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Search16Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Search16Directive;\n}());\nexport { Search16Directive };\nvar Search16Module = /** @class */ (function () {\n function Search16Module() {\n }\n Search16Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Search16,\n Search16Directive\n ],\n exports: [\n Search16,\n Search16Directive\n ]\n },] },\n ];\n return Search16Module;\n}());\nexport { Search16Module };\n//# sourceMappingURL=16.js.map","import {\n\tComponent,\n\tInput,\n\tEventEmitter,\n\tOutput,\n\tHostBinding,\n\tElementRef,\n\tHostListener,\n\tViewChild\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { I18n } from \"../i18n/i18n.module\";\n\n/**\n * @deprecated in favor of `valueChange`, to be removed in the next major carbon-components-angular version\n * Used to emit changes performed on search components.\n */\nexport class SearchChange {\n\t/**\n\t * Contains the `Search` that has been changed.\n\t */\n\tsource: Search;\n\t/**\n\t * The value of the `Search` field encompassed in the `SearchChange` class.\n\t */\n\tvalue: string;\n}\n\n/**\n * [See demo](../../?path=/story/search--basic)\n *\n * <example-url>../../iframe.html?id=search--basic</example-url>\n *\n * @export\n * @class Search\n * @implements {ControlValueAccessor}\n */\n@Component({\n\tselector: \"ibm-search\",\n\ttemplateUrl: \"search.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Search,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Search implements ControlValueAccessor {\n\t/**\n\t * Variable used for creating unique ids for search components.\n\t */\n\tstatic searchCount = 0;\n\n\t@HostBinding(\"class.bx--form-item\") get containerClass() { return !this.toolbar; }\n\n\t/**\n\t * `light` or `dark` search theme.\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * Size of the search field.\n\t */\n\t@Input() set size(value: \"sm\" | \"lg\" | \"xl\") {\n\t\tif (value === \"lg\") {\n\t\t\tconsole.warn(\"size `lg` has been deprecated and replaced by `xl`\");\n\t\t\tvalue = \"xl\";\n\t\t}\n\t\tthis._size = value;\n\t}\n\n\tget size(): \"sm\" | \"lg\" | \"xl\" {\n\t\treturn this._size;\n\t}\n\t/**\n\t * Set to `true` for a disabled search input.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a toolbar search component.\n\t */\n\t@Input() toolbar = false;\n\t/**\n\t * Set to `true` for a loading search component.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` to expand the toolbar search component.\n\t */\n\t@Input() active = false;\n\t/**\n\t * Specifies whether the search component is used in the table toolbar.\n\t */\n\t@Input() tableSearch = false;\n\t/**\n\t * Sets the name attribute on the `input` element.\n\t */\n\t@Input() name: string;\n\t/**\n\t * The unique id for the search component.\n\t */\n\t@Input() id = `search-${Search.searchCount}`;\n\t/**\n\t * Reflects the required attribute of the `input` element.\n\t */\n\t@Input() required: boolean;\n\t/**\n\t * Sets the value attribute on the `input` element.\n\t */\n\t@Input() value = \"\";\n\t/**\n\t * Sets the autocomplete attribute on the `input` element.\n\t * For refernece: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#Values\n\t */\n\t@Input() autocomplete = \"on\";\n\t/**\n\t * Sets the text inside the `label` tag.\n\t */\n\t@Input() label = this.i18n.get().SEARCH.LABEL;\n\t/**\n\t * Sets the placeholder attribute on the `input` element.\n\t */\n\t@Input() placeholder = this.i18n.get().SEARCH.PLACEHOLDER;\n\t/**\n\t * Used to set the `title` attribute of the clear button.\n\t */\n\t@Input() clearButtonTitle = this.i18n.get().SEARCH.CLEAR_BUTTON;\n\t/**\n\t * @deprecated in favor of `valueChange`, to be removed in the next major carbon-components-angular version\n\t * Emits event notifying other classes when a change in state occurs in the input.\n\t */\n\t@Output() change = new EventEmitter<SearchChange>();\n\t/**\n\t * Emits an event when value is changed.\n\t */\n\t@Output() valueChange = new EventEmitter<string>();\n\t/**\n\t * Emits an event when the clear button is clicked.\n\t */\n\t@Output() clear = new EventEmitter();\n\n\t@ViewChild(\"input\") inputRef: ElementRef;\n\n\tprotected _size: \"sm\" | \"xl\" = \"xl\";\n\n\t/**\n\t * Creates an instance of `Search`.\n\t * @param i18n The i18n translations.\n\t */\n\tconstructor(protected elementRef: ElementRef, protected i18n: I18n) {\n\t\tSearch.searchCount++;\n\t}\n\n\t/**\n\t * This is the initial value set to the component\n\t * @param value The input value.\n\t */\n\tpublic writeValue(value: any) {\n\t\tthis.value = value;\n\t}\n\n\t/**\n\t * Sets a method in order to propagate changes back to the form.\n\t */\n\tpublic registerOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registers a callback to be triggered when the control has been touched.\n\t * @param fn Callback to be triggered when the search input is touched.\n\t */\n\tpublic registerOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/**\n\t * Called when search input is blurred. Needed to properly implement `ControlValueAccessor`.\n\t */\n\tonTouched: () => any = () => {};\n\n\t/**\n\t * Method set in `registerOnChange` to propagate changes back to the form.\n\t */\n\tpropagateChange = (_: any) => {};\n\n\t/**\n\t * Called when text is written in the input.\n\t * @param {string} search The input text.\n\t */\n\tonSearch(search: string) {\n\t\tthis.value = search;\n\t\tthis.doValueChange();\n\t}\n\n\t/**\n\t * Called when clear button is clicked.\n\t */\n\tclearSearch(): void {\n\t\tthis.value = \"\";\n\t\tthis.clear.emit();\n\t\tthis.propagateChange(this.value);\n\t}\n\n\tdoValueChange() {\n\t\tlet event = new SearchChange();\n\t\tevent.source = this;\n\t\tevent.value = this.value;\n\t\tthis.change.emit(event);\n\t\tthis.valueChange.emit(this.value);\n\t\tthis.propagateChange(this.value);\n\t}\n\n\topenSearch() {\n\t\tthis.active = true;\n\t\tsetTimeout(() => this.inputRef.nativeElement.focus());\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyDown(event: KeyboardEvent) {\n\t\tif (this.toolbar) {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tthis.active = false;\n\t\t\t} else if (event.key === \"Enter\") {\n\t\t\t\tthis.openSearch();\n\t\t\t}\n\t\t}\n\t}\n\n\t@HostListener(\"focusout\", [\"$event\"])\n\tfocusOut(event) {\n\t\tif (this.toolbar &&\n\t\t\tthis.inputRef.nativeElement.value === \"\" &&\n\t\t\tevent.relatedTarget === null) {\n\t\t\tthis.active = false;\n\t\t}\n\t}\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { Search16Module } from \"@carbon/icons-angular/lib/search/16\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\n\n// imports\nimport { I18nModule } from \"../i18n/i18n.module\";\nimport { Search } from \"./search.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tSearch\n\t],\n\texports: [\n\t\tSearch\n\t],\n\timports: [\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tSearch16Module,\n\t\tClose16Module\n\t]\n})\nexport class SearchModule { }\n\nexport { Search };\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tViewChild,\n\tElementRef,\n\tHostListener,\n\tEventEmitter,\n\tTemplateRef\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n/**\n * `ibm-select` provides a styled `select` component.\n *\n * [See demo](../../?path=/story/select--basic)\n *\n * Example:\n *\n * ```\n * <ibm-select [(ngModel)]=\"model\">\n * \t<option value=\"default\" disabled selected hidden>Choose an option</option>\n * \t<option value=\"option1\">Option 1</option>\n *\t<option value=\"option2\">Option 2</option>\n * \t<option value=\"option3\">Option 3</option>\n * </ibm-select>\n *\t```\n *\n * <example-url>../../iframe.html?id=select--basic</example-url>\n *\n * @export\n * @class Select\n * @implements {ControlValueAccessor}\n */\n@Component({\n\tselector: \"ibm-select\",\n\ttemplate: `\n\t\t<div class=\"bx--form-item\">\n\t\t\t<div\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--select--inline': display === 'inline',\n\t\t\t\t\t'bx--select--light': theme === 'light',\n\t\t\t\t\t'bx--skeleton': skeleton\n\t\t\t\t}\"\n\t\t\t\tclass=\"bx--select\"\n\t\t\t\tstyle=\"width: 100%\">\n\t\t\t\t<label *ngIf=\"skeleton && label\" [for]=\"id\" class=\"bx--label bx--skeleton\"></label>\n\t\t\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<div *ngIf=\"helperText\" class=\"bx--form__helper-text\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx--select-input__wrapper\" [attr.data-invalid]=\"(invalid ? true : null)\">\n\t\t\t\t\t<select\n\t\t\t\t\t\t#select\n\t\t\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t\t</select>\n\t\t\t\t\t<ibm-icon-warning-filled16\n\t\t\t\t\t\t*ngIf=\"!skeleton && invalid\"\n\t\t\t\t\t\tclass=\"bx--select__invalid-icon\"\n\t\t\t\t\t\tstyle=\"display: inherit;\">\n\t\t\t\t\t</ibm-icon-warning-filled16>\n\t\t\t\t\t<ibm-icon-chevron-down16 *ngIf=\"!skeleton\" class=\"bx--select__arrow\" style=\"display: inherit;\"></ibm-icon-chevron-down16>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"invalid\" class=\"bx--form-requirement\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t[data-invalid] ~ .bx--select__arrow {\n\t\t\tbottom: 2.25rem;\n\t\t}\n\t`],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Select,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Select implements ControlValueAccessor {\n\t/**\n\t * Tracks the total number of selects instantiated. Used to generate unique IDs\n\t */\n\tstatic selectCount = 0;\n\n\t/**\n\t * `inline` or `default` select displays\n\t */\n\t@Input() display: \"inline\" | \"default\" = \"default\";\n\t/**\n\t * Label for the select. Appears above the input.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Optional helper text that appears under the label.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Sets the invalid text.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`\n\t */\n\t@Input() id = `select-${Select.selectCount++}`;\n\t/**\n\t * Set to true to disable component.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to true for a loading select.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an invalid select component.\n\t */\n\t@Input() invalid = false;\n\n\t/**\n\t * `light` or `dark` select theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * emits the selected options `value`\n\t */\n\t@Output() selected = new EventEmitter();\n\n\t@ViewChild(\"select\") select: ElementRef;\n\n\tget value() {\n\t\treturn this.select.nativeElement.value;\n\t}\n\n\tset value(v) {\n\t\tthis.select.nativeElement.value = v;\n\t}\n\n\t/**\n\t * Receives a value from the model.\n\t */\n\twriteValue(obj: any) {\n\t\tthis.value = obj;\n\t}\n\n\t/**\n\t * Registers a listener that notifies the model when the control updates\n\t */\n\tregisterOnChange(fn: any) {\n\t\tthis.onChangeHandler = fn;\n\t}\n\n\t/**\n\t * Registers a listener that notifies the model when the control is blurred\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedHandler = fn;\n\t}\n\n\t/**\n\t * Sets the disabled state through the model\n\t */\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Handles the change event from the `select`.\n\t * Sends events to the change handler and emits a `selected` event.\n\t */\n\tonChange(event) {\n\t\tthis.onChangeHandler(event.target.value);\n\t\tthis.selected.emit(event.target.value);\n\t}\n\n\t/**\n\t * Listens for the host blurring, and notifies the model\n\t */\n\t@HostListener(\"blur\")\n\tblur() {\n\t\tthis.onTouchedHandler();\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n\n\t/**\n\t * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`\n\t */\n\tprotected onChangeHandler = (_: any) => { };\n\tprotected onTouchedHandler = () => { };\n}\n","import { Directive, HostBinding } from \"@angular/core\";\n\n@Directive({\n\t// tslint:disable-next-line\n\tselector: \"option\"\n})\nexport class Option {\n\t@HostBinding(\"class\") inputClass = \"bx--select-option\";\n}\n","import { Directive, HostBinding } from \"@angular/core\";\n\n@Directive({\n\t// tslint:disable-next-line\n\tselector: \"optgroup\"\n})\nexport class OptGroup {\n\t@HostBinding(\"class\") inputClass = \"bx--select-option\";\n}\n","// modules\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\nimport { WarningFilled16Module } from \"@carbon/icons-angular/lib/warning--filled/16\";\n\n// imports\nimport { Select } from \"./select.component\";\nimport { Option } from \"./option.directive\";\nimport { OptGroup } from \"./optgroup.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tSelect,\n\t\tOption,\n\t\tOptGroup\n\t],\n\texports: [\n\t\tSelect,\n\t\tOption,\n\t\tOptGroup\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tChevronDown16Module,\n\t\tWarningFilled16Module\n\t]\n})\nclass SelectModule { }\n\nexport { Select, Option, OptGroup, SelectModule };\n","import {\n\tComponent,\n\tHostBinding,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tOnDestroy,\n\tViewChild,\n\tElementRef,\n\tTemplateRef\n} from \"@angular/core\";\nimport { fromEvent, Subscription } from \"rxjs\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n/**\n * Used to select from ranges of values. [See here](https://www.carbondesignsystem.com/components/slider/usage) for usage information.\n *\n * [See demo](../../?path=/story/slider--advanced)\n *\n * The simplest possible slider usage looks something like:\n * ```html\n * <ibm-slider></ibm-slider>\n * ```\n *\n * That will render a slider without labels or alternative value input. Labels can be provided by\n * elements with `[minLabel]` and `[maxLabel]` attributes, and an `input` (may use the `ibmInput` directive) can be supplied\n * for use as an alternative value field.\n *\n * ex:\n * ```html\n * <!-- full example -->\n * <ibm-slider>\n *\t\t<span minLabel>0GB</span>\n *\t\t<span maxLabel>100GB</span>\n *\t\t<input/>\n *\t</ibm-slider>\n * <!-- with just an input -->\n * <ibm-slider>\n *\t\t<input/>\n *\t</ibm-slider>\n * <!-- with just one label -->\n * <ibm-slider>\n *\t\t<span maxLabel>Maximum</span>\n *\t</ibm-slider>\n * ```\n *\n * Slider supports `NgModel` by default, as well as two way binding to the `value` input.\n *\n * <example-url>../../iframe.html?id=slider--advanced</example-url>\n */\n@Component({\n\tselector: \"ibm-slider\",\n\ttemplate: `\n\t\t<ng-container *ngIf=\"!skeleton; else skeletonTemplate\">\n\t\t\t<label *ngIf=\"label\" for=\"slider\" class=\"bx--label\">\n\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t</label>\n\t\t\t<div class=\"bx--slider-container\">\n\t\t\t\t<label [id]=\"bottomRangeId\" class=\"bx--slider__range-label\">\n\t\t\t\t\t<ng-content select=\"[minLabel]\"></ng-content>\n\t\t\t\t</label>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"bx--slider\"\n\t\t\t\t\t[ngClass]=\"{'bx--slider--disabled': disabled}\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#thumb\n\t\t\t\t\t\tclass=\"bx--slider__thumb\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t(mousedown)=\"onMouseDown($event)\"\n\t\t\t\t\t\t(keydown)=\"onKeyDown($event)\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\t#track\n\t\t\t\t\t\tclass=\"bx--slider__track\"\n\t\t\t\t\t\t(click)=\"onClick($event)\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\t#filledTrack\n\t\t\t\t\t\tclass=\"bx--slider__filled-track\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\t#range\n\t\t\t\t\t\taria-label=\"slider\"\n\t\t\t\t\t\tclass=\"bx--slider__input\"\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\t[step]=\"step\"\n\t\t\t\t\t\t[min]=\"min\"\n\t\t\t\t\t\t[max]=\"max\"\n\t\t\t\t\t\t[value]=\"value.toString()\">\n\t\t\t\t</div>\n\t\t\t\t<label [id]=\"topRangeId\" class=\"bx--slider__range-label\">\n\t\t\t\t\t<ng-content select=\"[maxLabel]\"></ng-content>\n\t\t\t\t</label>\n\t\t\t\t<ng-content select=\"input\"></ng-content>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<ng-template #skeletonTemplate>\n\t\t\t<label *ngIf=\"label\" class=\"bx--label bx--skeleton\"></label>\n\t\t\t<div class=\"bx--slider-container bx--skeleton\">\n\t\t\t\t<span class=\"bx--slider__range-label\"></span>\n\t\t\t\t<div class=\"bx--slider\">\n\t\t\t\t\t<div class=\"bx--slider__thumb\"></div>\n\t\t\t\t\t<div class=\"bx--slider__track\"></div>\n\t\t\t\t\t<div class=\"bx--slider__filled-track\"></div>\n\t\t\t\t</div>\n\t\t\t\t<span class=\"bx--slider__range-label\"></span>\n\t\t\t</div>\n\t\t</ng-template>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Slider,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Slider implements AfterViewInit, OnDestroy, ControlValueAccessor {\n\t/** Used to generate unique IDs */\n\tprivate static count = 0;\n\t/** The lower bound of our range */\n\t@Input() set min(v) {\n\t\tif (!v) { return; }\n\t\tthis._min = v;\n\t\t// force the component to update\n\t\tthis.value = this.value;\n\t}\n\tget min() {\n\t\treturn this._min;\n\t}\n\t/** The upper bound of our range */\n\t@Input() set max(v) {\n\t\tif (!v) { return; }\n\t\tthis._max = v;\n\t\t// force the component to update\n\t\tthis.value = this.value;\n\t}\n\n\tget max() {\n\t\treturn this._max;\n\t}\n\t/** The interval for our range */\n\t@Input() step = 1;\n\t/** Set the initial value. Available for two way binding */\n\t@Input() set value(v) {\n\t\tif (!v) {\n\t\t\tv = this.min;\n\t\t}\n\n\t\tif (v > this.max) {\n\t\t\tv = this.max;\n\t\t}\n\n\t\tif (v < this.min) {\n\t\t\tv = this.min;\n\t\t}\n\n\t\tthis._value = v;\n\n\t\tif (this.thumb) {\n\t\t\tthis.thumb.nativeElement.style.left = `${this.getFractionComplete(v) * 100}%`;\n\t\t}\n\n\t\tif (this.filledTrack) {\n\t\t\tthis.filledTrack.nativeElement.style.transform = `translate(0%, -50%) ${this.scaleX(this.getFractionComplete(v))}`;\n\t\t}\n\n\t\tif (this.input) {\n\t\t\tthis.input.value = v.toString();\n\t\t}\n\n\t\tthis.propagateChange(v);\n\t\tthis.valueChange.emit(v);\n\t}\n\n\tget value() {\n\t\treturn this._value;\n\t}\n\t/** Base ID for the slider. The min and max labels get IDs `${this.id}-bottom-range` and `${this.id}-top-range` respectively */\n\t@Input() id = `slider-${Slider.count++}`;\n\t/** Value used to \"multiply\" the `step` when using arrow keys to select values */\n\t@Input() shiftMultiplier = 4;\n\t/** Set to `true` for a loading slider */\n\t@Input() skeleton = false;\n\t/** Sets the text inside the `label` tag */\n\t@Input() label: string | TemplateRef<any>;\n\t/** Set to `true` for a slider without arrow key interactions. */\n\t@Input() disableArrowKeys = false;\n\t/** Disables the range visually and functionally */\n\t@Input() set disabled(v) {\n\t\tthis._disabled = v;\n\t\t// for some reason `this.input` never exists here, so we have to query for it here too\n\t\tconst input = this.elementRef.nativeElement.querySelector(\"input:not([type=range])\");\n\t\tif (input) {\n\t\t\tinput.disabled = v;\n\t\t}\n\t}\n\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\t/** Emits every time a new value is selected */\n\t@Output() valueChange: EventEmitter<number> = new EventEmitter();\n\t@HostBinding(\"class.bx--form-item\") hostClass = true;\n\t@ViewChild(\"thumb\") thumb: ElementRef;\n\t@ViewChild(\"track\") track: ElementRef;\n\t@ViewChild(\"filledTrack\") filledTrack: ElementRef;\n\t@ViewChild(\"range\") range: ElementRef;\n\n\tpublic bottomRangeId = `${this.id}-bottom-range`;\n\tpublic topRangeId = `${this.id}-top-range`;\n\tpublic fractionComplete = 0;\n\n\tprotected isMouseDown = false;\n\t/** Array of event subscriptions so we can batch unsubscribe in `ngOnDestroy` */\n\tprotected eventSubscriptions: Array<Subscription> = [];\n\tprotected input: HTMLInputElement;\n\tprotected _min = 0;\n\tprotected _max = 100;\n\tprotected _value = this.min;\n\tprotected _disabled = false;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\t// bind mousemove and mouseup to the document so we don't have issues tracking the mouse\n\t\tthis.eventSubscriptions.push(fromEvent(document, \"mousemove\").subscribe(this.onMouseMove.bind(this)));\n\t\tthis.eventSubscriptions.push(fromEvent(document, \"mouseup\").subscribe(this.onMouseUp.bind(this)));\n\n\t\t// apply any values we got from before the view initialized\n\t\tthis.value = this.value;\n\n\t\t// TODO: ontouchstart/ontouchmove/ontouchend\n\n\t\t// set up the optional input\n\t\tthis.input = this.elementRef.nativeElement.querySelector(\"input:not([type=range])\");\n\t\tif (this.input) {\n\t\t\tthis.input.type = \"number\";\n\t\t\tthis.input.classList.add(\"bx--slider-text-input\");\n\t\t\tthis.input.classList.add(\"bx--text-input\");\n\t\t\tthis.input.setAttribute(\"aria-labelledby\", `${this.bottomRangeId} ${this.topRangeId}`);\n\t\t\tthis.input.value = this.value.toString();\n\t\t\t// bind events on our optional input\n\t\t\tthis.eventSubscriptions.push(fromEvent(this.input, \"change\").subscribe(this.onChange.bind(this)));\n\t\t\tthis.eventSubscriptions.push(fromEvent(this.input, \"focus\").subscribe(this.onFocus.bind(this)));\n\t\t}\n\t}\n\n\t/** Clean up our DOMEvent subscriptions */\n\tngOnDestroy() {\n\t\tthis.eventSubscriptions.forEach(subscription => {\n\t\t\tsubscription.unsubscribe();\n\t\t});\n\t}\n\n\t/** Send changes back to the model */\n\tpropagateChange = (_: any) => { };\n\n\t/** Register a change propagation function for `ControlValueAccessor` */\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/** Callback to notify the model when our input has been touched */\n\tonTouched: () => any = () => { };\n\n\t/** Register a callback to notify when our input has been touched */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/** Receives a value from the model */\n\twriteValue(v: any) {\n\t\tthis.value = v;\n\t}\n\n\t/**\n\t * Returns the amount of \"completeness\" of a value as a fraction of the total track width\n\t */\n\tgetFractionComplete(value: number) {\n\t\tif (!this.track) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst trackWidth = this.track.nativeElement.getBoundingClientRect().width;\n\t\treturn this.convertToPx(value) / trackWidth;\n\t}\n\n\t/** Helper function to return the CSS transform `scaleX` function */\n\tscaleX(complete) {\n\t\treturn `scaleX(${complete})`;\n\t}\n\n\t/** Converts a given px value to a \"real\" value in our range */\n\tconvertToValue(pxAmount) {\n\t\t// basic concept borrowed from carbon-components\n\t\t// ref: https://github.com/IBM/carbon-components/blob/43bf3abdc2f8bdaa38aa84e0f733adde1e1e8894/src/components/slider/slider.js#L147-L151\n\t\tconst range = this.max - this.min;\n\t\tconst trackWidth = this.track.nativeElement.getBoundingClientRect().width;\n\t\tconst unrounded = pxAmount / trackWidth;\n\t\tconst rounded = Math.round((range * unrounded) / this.step) * this.step;\n\t\treturn rounded + this.min;\n\t}\n\n\t/** Converts a given \"real\" value to a px value we can update the view with */\n\tconvertToPx(value) {\n\t\tif (!this.track) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst trackWidth = this.track.nativeElement.getBoundingClientRect().width;\n\t\tif (value >= this.max) {\n\t\t\treturn trackWidth;\n\t\t}\n\n\t\tif (value <= this.min) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// account for value shifting by subtracting min from value and max\n\t\treturn Math.round(trackWidth * ((value - this.min) / (this.max - this.min)));\n\t}\n\n\t/**\n\t * Increments the value by the step value, or the step value multiplied by the `multiplier` argument.\n\t *\n\t * @argument multiplier Defaults to `1`, multiplied with the step value.\n\t */\n\tincrementValue(multiplier = 1) {\n\t\tthis.value = this.value + (this.step * multiplier);\n\t}\n\n\t/**\n\t * Decrements the value by the step value, or the step value multiplied by the `multiplier` argument.\n\t *\n\t * @argument multiplier Defaults to `1`, multiplied with the step value.\n\t */\n\tdecrementValue(multiplier = 1) {\n\t\tthis.value = this.value - (this.step * multiplier);\n\t}\n\n\t/** Change handler for the optional input */\n\tonChange(event) {\n\t\tthis.value = event.target.value;\n\t}\n\n\t/** Handles clicks on the range track, and setting the value to it's \"real\" equivalent */\n\tonClick(event) {\n\t\tif (this.disabled) { return; }\n\t\tconst trackLeft = this.track.nativeElement.getBoundingClientRect().left;\n\t\tthis.value = this.convertToValue(event.clientX - trackLeft);\n\t}\n\n\t/** Focus handler for the optional input */\n\tonFocus({target}) {\n\t\ttarget.select();\n\t}\n\n\t/** Mouse move handler. Responsible for updating the value and visual selection based on mouse movement */\n\tonMouseMove(event) {\n\t\tif (this.disabled || !this.isMouseDown) { return; }\n\t\tconst track = this.track.nativeElement.getBoundingClientRect();\n\t\tif (\n\t\t\tevent.clientX - track.left <= track.width\n\t\t\t&& event.clientX - track.left >= 0\n\t\t) {\n\t\t\tthis.value = this.convertToValue(event.clientX - track.left);\n\t\t}\n\n\t\t// if the mouse is beyond the max, set the value to `max`\n\t\tif (event.clientX - track.left > track.width) {\n\t\t\tthis.value = this.max;\n\t\t}\n\n\t\t// if the mouse is below the min, set the value to `min`\n\t\tif (event.clientX - track.left < 0) {\n\t\t\tthis.value = this.min;\n\t\t}\n\t}\n\n\t/** Enables the `onMouseMove` handler */\n\tonMouseDown(event) {\n\t\tevent.preventDefault();\n\t\tif (this.disabled) { return; }\n\t\tthis.thumb.nativeElement.focus();\n\t\tthis.isMouseDown = true;\n\t}\n\n\t/** Disables the `onMouseMove` handler */\n\tonMouseUp() {\n\t\tthis.isMouseDown = false;\n\t}\n\n\t/** Calls `incrementValue` for ArrowRight and ArrowUp, `decrementValue` for ArrowLeft and ArrowDown */\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (this.disableArrowKeys) {\n\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tconst multiplier = event.shiftKey ? this.shiftMultiplier : 1;\n\t\tif (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n\t\t\tthis.decrementValue(multiplier);\n\t\t}\n\n\t\tif (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n\t\t\tthis.incrementValue(multiplier);\n\t\t}\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { Slider } from \"./slider.component\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n\tdeclarations: [Slider],\n\texports: [Slider],\n\timports: [CommonModule]\n})\nclass SliderModule {}\n\nexport {\n\tSliderModule,\n\tSlider\n};\n","import { Component, HostBinding, Input } from \"@angular/core\";\n\n/**\n * `ListColumn` represents a single column in a `StructuredList`.\n *\n * `ListColumn`s can be used in a `ListHeader` to specify the column headers, or in `ListRow`s to specify the column data.\n *\n * Example:\n * ```html\n * <ibm-list-column nowrap=\"true\">Column 1</ibm-list-column>\n * ```\n */\n@Component({\n\tselector: \"ibm-list-column\",\n\ttemplate: `\n\t\t<span *ngIf=\"skeleton\"></span>\n\t\t<ng-content></ng-content>\n\t`\n})\nexport class ListColumn {\n\t@Input() skeleton = false;\n\n\t@HostBinding(\"class.bx--structured-list-th\") isHeaderColumn = true;\n\t@HostBinding(\"class.bx--structured-list-td\") isBodyColumn = true;\n\t/**\n\t * Applies `white-space: nowrap` to the content of this `ListColumn`\n\t */\n\t@HostBinding(\"class.bx--structured-list-content--nowrap\") @Input() nowrap = false;\n}\n","import {\n\tComponent,\n\tHostBinding,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tInput,\n\tHostListener,\n\tViewChild,\n\tElementRef,\n\tEventEmitter,\n\tOutput\n} from \"@angular/core\";\nimport { ListColumn } from \"./list-column.component\";\n\n/**\n * `ListRow` provides a container for the `ListColumn`s that make up the body of a structured list.\n *\n * Example:\n * ```html\n * \t<ibm-list-row>\n *\t\t<ibm-list-column>Row 1</ibm-list-column>\n *\t\t<ibm-list-column nowrap=\"true\">Row One</ibm-list-column>\n *\t\t<ibm-list-column>\n *\t\t\tLorem ipsum dolor sit amet,\n *\t\t\tconsectetur adipiscing elit. Nunc dui magna,\n *\t\t\tfinibus id tortor sed, aliquet bibendum augue.\n *\t\t\tAenean posuere sem vel euismod dignissim. Nulla ut cursus dolor.\n *\t\t\tPellentesque vulputate nisl a porttitor interdum.\n *\t\t</ibm-list-column>\n *\t</ibm-list-row>\n * ```\n */\n@Component({\n\tselector: \"ibm-list-row\",\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t\t<ng-container *ngIf=\"selection\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\tclass=\"bx--structured-list-input\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[value]=\"value\"\n\t\t\t\t[name]=\"name\"\n\t\t\t\t[title]=\"label\"\n\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t[checked]=\"selected\"/>\n\t\t\t<div class=\"bx--structured-list-td\">\n\t\t\t\t<ibm-icon-checkmark-filled16 class=\"bx--structured-list-svg\"></ibm-icon-checkmark-filled16>\n\t\t\t</div>\n\t\t</ng-container>\n\t`\n})\nexport class ListRow implements AfterContentInit {\n\t@Input() @HostBinding(\"class.bx--structured-list-row--selected\") selected = false;\n\t/**\n\t * Applies an accessible label to the row. Defaults to no label.\n\t */\n\t@Input() @HostBinding(\"attr.aria-label\") label;\n\t/**\n\t * The value for the row. Returned via `ngModel` or `selected` event on the containing `StructuredList`.\n\t */\n\t@Input() value;\n\t/**\n\t * Internal event used to notify the containing `StructuredList` of changes.\n\t */\n\t@Output() change: EventEmitter<Event> = new EventEmitter();\n\n\t/**\n\t * Set by the containing `StructuredList`. Enables or disables row level selection features.\n\t */\n\tselection = false;\n\t/**\n\t * Set by the containing `StructuredList`. When `selection = true`, used for the `name` property on the radio input.\n\t */\n\tname = \"list\";\n\n\t@HostBinding(\"class.bx--structured-list-row\") wrapper = true;\n\t@HostBinding(\"attr.tabindex\") tabindex = this.selection ? \"0\" : null;\n\n\t@ContentChildren(ListColumn) columns: QueryList<ListColumn>;\n\n\t@ViewChild(\"input\") input: ElementRef;\n\n\tngAfterContentInit() {\n\t\tthis.columns.forEach(column => {\n\t\t\tcolumn.isBodyColumn = true;\n\t\t\tcolumn.isHeaderColumn = false;\n\t\t});\n\t}\n\n\t@HostListener(\"click\")\n\tonclick() {\n\t\tif (!this.selection) { return false; }\n\t\tthis.input.nativeElement.click();\n\t}\n\n\tonChange(event) {\n\t\tthis.change.emit(event);\n\t}\n}\n","import {\n\tComponent,\n\tHostBinding,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tInput\n} from \"@angular/core\";\nimport { ListColumn } from \"./list-column.component\";\n\n/**\n * `ListHeader` provides a container for the `ListColumn`s that make up the header of a structured list.\n *\n * Example:\n * ```html\n * \t<ibm-list-header>\n *\t\t<ibm-list-column nowrap=\"true\">Column 1</ibm-list-column>\n *\t\t<ibm-list-column nowrap=\"true\">Column 2</ibm-list-column>\n *\t\t<ibm-list-column>Column 3</ibm-list-column>\n *\t</ibm-list-header>\n * ```\n */\n@Component({\n\tselector: \"ibm-list-header\",\n\ttemplate: `\n\t\t<div class=\"bx--structured-list-row bx--structured-list-row--header-row\">\n\t\t\t<ng-content></ng-content>\n\t\t\t<div *ngIf=\"selection\" class=\"bx--structured-list-th\"></div>\n\t\t</div>\n\t`\n})\nexport class ListHeader implements AfterContentInit {\n\t@HostBinding(\"class.bx--structured-list-thead\") wrapper = true;\n\n\t@Input()\n\tset skeleton(value: any) {\n\t\tthis._skeleton = value;\n\t\tthis.updateChildren();\n\t}\n\n\tget skeleton(): any {\n\t\treturn this._skeleton;\n\t}\n\n\t@ContentChildren(ListColumn) columns: QueryList<ListColumn>;\n\n\t/**\n\t * Set by the containing `StructuredList`. Adds a dummy header for the selection column when set to true.\n\t */\n\tselection = false;\n\n\tprotected _skeleton = false;\n\n\tngAfterContentInit() {\n\t\tthis.columns.forEach(column => {\n\t\t\tcolumn.isBodyColumn = false;\n\t\t\tcolumn.isHeaderColumn = true;\n\t\t});\n\t\tthis.updateChildren();\n\t}\n\n\tprotected updateChildren() {\n\t\tif (this.columns) {\n\t\t\tthis.columns.toArray().forEach(child => child.skeleton = this.skeleton);\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { ListRow } from \"./list-row.component\";\nimport { ListHeader } from \"./list-header.component\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\n\n/**\n * Structured Lists represent related tabular data. For larger datasets consider a full `Table`.\n *\n * [See demo](../../?path=/story/structured-list--basic)\n *\n * See [structured-list/usage](https://www.carbondesignsystem.com/components/structured-list/usage) for usage guidance.\n *\n * A basic structued list looks something like:\n * ```html\n *\t<ibm-structured-list>\n *\t\t<ibm-list-header>\n *\t\t\t<ibm-list-column nowrap=\"true\">Column 1</ibm-list-column>\n *\t\t\t<ibm-list-column nowrap=\"true\">Column 2</ibm-list-column>\n *\t\t\t<ibm-list-column>Column 3</ibm-list-column>\n *\t\t</ibm-list-header>\n *\t\t<ibm-list-row>\n *\t\t\t<ibm-list-column>Row 1</ibm-list-column>\n *\t\t\t<ibm-list-column nowrap=\"true\">Row One</ibm-list-column>\n *\t\t\t<ibm-list-column>\n *\t\t\t\tLorem ipsum dolor sit amet,\n *\t\t\t\tconsectetur adipiscing elit. Nunc dui magna,\n *\t\t\t\tfinibus id tortor sed, aliquet bibendum augue.\n *\t\t\t\tAenean posuere sem vel euismod dignissim. Nulla ut cursus dolor.\n *\t\t\t\tPellentesque vulputate nisl a porttitor interdum.\n *\t\t\t</ibm-list-column>\n *\t\t</ibm-list-row>\n *\t\t<ibm-list-row>\n *\t\t\t<ibm-list-column>Row 2</ibm-list-column>\n *\t\t\t<ibm-list-column nowrap=\"true\">Row Two</ibm-list-column>\n *\t\t\t<ibm-list-column>\n *\t\t\t\tLorem ipsum dolor sit amet,\n *\t\t\t\tconsectetur adipiscing elit. Nunc dui magna,\n *\t\t\t\tfinibus id tortor sed, aliquet bibendum augue.\n *\t\t\t\tAenean posuere sem vel euismod dignissim. Nulla ut cursus dolor.\n *\t\t\t\tPellentesque vulputate nisl a porttitor interdum.\n *\t\t\t</ibm-list-column>\n *\t\t</ibm-list-row>\n *\t</ibm-structured-list>\n * ```\n *\n * <example-url>../../iframe.html?id=structured-list--basic</example-url>\n *\n * @export\n * @class StructuredList\n * @implements {AfterContentInit}\n * @implements {ControlValueAccessor}\n */\n@Component({\n\tselector: \"ibm-structured-list\",\n\ttemplate: `\n\t\t<section\n\t\t\tclass=\"bx--structured-list\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--structured-list--border': border,\n\t\t\t\t'bx--structured-list--selection': selection,\n\t\t\t\t'bx--structured-list--condensed': condensed,\n\t\t\t\t'bx--structured-list-content--nowrap': nowrap,\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\">\n\t\t\t<ng-content select=\"ibm-list-header\"></ng-content>\n\t\t\t<div class=\"bx--structured-list-tbody\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</section>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: StructuredList,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class StructuredList implements AfterContentInit, ControlValueAccessor {\n\t/**\n\t * A counter to provide unique default values.\n\t */\n\tstatic listCount = 0;\n\t/**\n\t * Set to `true` to enable radio like selection of the rows.\n\t */\n\t@Input() selection = false;\n\t/**\n\t * Set to `true` to apply a border and white background.\n\t */\n\t@Input() border = false;\n\t/**\n\t * Set to `true` to apply a condensed style to the headers and rows.\n\t */\n\t@Input() condensed = false;\n\t/**\n\t * Set to `true` to apply `white-space: nowrap` on _all_ conent.\n\t */\n\t@Input() nowrap = false;\n\t/**\n\t * Used when `selection = true` as the row radio group `name`\n\t */\n\t@Input() name = `structured-list-${StructuredList.listCount++}`;\n\n\t/**\n\t * Sets the skeleton value for all `ListHeader` to the skeleton value of `StructuredList`.\n\t */\n\t@Input()\n\tset skeleton(value: any) {\n\t\tthis._skeleton = value;\n\t\tthis.updateChildren();\n\t}\n\n\t/**\n\t * Returns the skeleton value in the `StructuredList` if there is one.\n\t */\n\tget skeleton(): any {\n\t\treturn this._skeleton;\n\t}\n\n\t/**\n\t * Emits an event when the row selection changes.\n\t *\n\t * Emits an object that looks like:\n\t * ```javascript\n\t * {\n\t * \tvalue: \"something\",\n\t * \tselected: true,\n\t * \tname: \"structured-list-1\"\n\t * }\n\t * ```\n\t */\n\t@Output() selected: EventEmitter<{value: string, selected: boolean, name: string}> = new EventEmitter();\n\n\t@ContentChildren(ListRow) rows: QueryList<ListRow>;\n\t@ContentChildren(ListHeader) headers: QueryList<ListHeader>;\n\n\tprotected _skeleton = false;\n\n\tonChange = (_: any) => { };\n\n\tonTouched = () => { };\n\n\tngAfterContentInit() {\n\t\tconst setSelection = (rowOrHeader: ListRow | ListHeader) => {\n\t\t\trowOrHeader.selection = this.selection;\n\t\t};\n\n\t\tthis.headers.forEach(setSelection);\n\t\tthis.rows.forEach(row => {\n\t\t\tsetSelection(row);\n\t\t\trow.name = this.name;\n\t\t\trow.change.subscribe(() => {\n\t\t\t\tthis.selected.emit({\n\t\t\t\t\tvalue: row.value,\n\t\t\t\t\tselected: row.selected,\n\t\t\t\t\tname: this.name\n\t\t\t\t});\n\t\t\t\tthis.onChange(row.value);\n\t\t\t});\n\t\t});\n\t\tthis.updateChildren();\n\t}\n\n\twriteValue(value: any) {\n\t\tif (!this.rows) { return; }\n\t\tthis.rows.forEach(row => {\n\t\t\tif (row.value === value) {\n\t\t\t\trow.selected = true;\n\t\t\t} else {\n\t\t\t\trow.selected = false;\n\t\t\t}\n\t\t});\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n\n\tprotected updateChildren() {\n\t\tif (this.headers) {\n\t\t\tthis.headers.toArray().forEach(child => child.skeleton = this.skeleton);\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { CheckmarkFilled16Module } from \"@carbon/icons-angular/lib/checkmark--filled/16\";\n\nimport { StructuredList } from \"./structured-list.component\";\nimport { ListRow } from \"./list-row.component\";\nimport { ListHeader } from \"./list-header.component\";\nimport { ListColumn } from \"./list-column.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tStructuredList,\n\t\tListRow,\n\t\tListHeader,\n\t\tListColumn\n\t],\n\texports: [\n\t\tStructuredList,\n\t\tListRow,\n\t\tListHeader,\n\t\tListColumn\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tCheckmarkFilled16Module\n\t]\n})\nclass StructuredListModule { }\n\nexport {\n\tStructuredListModule,\n\tStructuredList,\n\tListRow,\n\tListHeader,\n\tListColumn\n};\n","import { TableItem } from \"./table-item.class\";\nimport {\n\tEventEmitter,\n\tTemplateRef\n} from \"@angular/core\";\n\nexport class TableHeaderItem {\n\t/**\n\t * Defines if column under this TableHeaderItem should be displayed.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tvisible = true;\n\n\t/**\n\t * Disables sorting by default.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tsorted = false;\n\n\t/**\n\t * Enables sorting on click by default.\n\t * If false then this column won't show a sorting arrow at all.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tsortable = true;\n\n\t/**\n\t * Number of applied filters.\n\t *\n\t * `filter()` should set it to appropriate number.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tfilterCount = 0;\n\n\t/**\n\t * Attach a class to the column, both the header and column cells.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tclassName: string;\n\n\t/**\n\t * Style for the column, applied to every element in the column.\n\t *\n\t * ngStyle-like format\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tstyle = {};\n\n\t/**\n\t * If true, sort is set to ascending, if false descending will be true.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tset ascending(asc) {\n\t\tthis._ascending = asc;\n\t}\n\tget ascending() {\n\t\treturn this._ascending;\n\t}\n\n\t/**\n\t * If true, sort is set to descending, if false ascending will be true.\n\t *\n\t * @memberof TableHeaderItem\n\t */\n\tset descending(desc) {\n\t\tthis._ascending = !desc;\n\t}\n\tget descending() {\n\t\treturn !this._ascending;\n\t}\n\n\t/**\n\t * Data for the header item.\n\t *\n\t * @type {*}\n\t * @memberof TableHeaderItem\n\t */\n\tdata: any;\n\n\t/**\n\t * Data for the header item for general usage in the controller.\n\t * For example, which `field` is this column related to.\n\t *\n\t * @type {*}\n\t * @memberof TableHeaderItem\n\t */\n\tmetadata: any;\n\n\t/**\n\t * Used to display data in a desired way.\n\t *\n\t * If not provided, displays data as a simple string.\n\t *\n\t * Usage:\n\t *\n\t * In a component where you're using the table create a template like:\n\t *\n\t * ```html\n\t * <ng-template #customHeaderTemplate let-data=\"data\">\n\t * \t\t<i><a [routerLink]=\"data.link\">{{data.name}}</a></i>\n\t * </ng-template>\n\t * ```\n\t * where we assume your data contains `link` and `name`. `let-data=\"data\"` is\n\t * necessary for you to be able to access item's data in the template.\n\t *\n\t * Create `ViewChild` property with:\n\t *\n\t * ```typescript\n\t * (at)ViewChild(\"customHeaderTemplate\")\n\t * protected customHeaderTemplate: TemplateRef<any>;\n\t * ```\n\t *\n\t * Set the template to the header item, for example:\n\t *\n\t * ```typescript\n\t * this.model.header = [\n\t * \t\tnew TableHeaderItem({data: {name: \"Custom header\", link: \"/table\"}, template: this.customHeaderTemplate})\n\t * ];\n\t * ```\n\t * @type {TemplateRef<any>}\n\t * @memberof TableHeaderItem\n\t */\n\ttemplate: TemplateRef<any>;\n\n\t/**\n\t * Used as a template for popover filter.\n\t *\n\t * `let-popover=\"popover\"` will give you access to popover component and allow you to\n\t * manipulate it if needed.\n\t *\n\t * `let-filter=\"filter\"` will give you access to the \"filter\". The main takeaway is\n\t * store the data you need to `filter.data`. You will be able to access it as\n\t * `this.filterData.data` from your `filter()` function when you extend `TableHeaderItem`\n\t *\n\t * Example:\n\t * ```html\n\t * <ng-template #filter let-popover=\"popover\">\n\t * \t<ibm-label class=\"first-label\">\n\t * \t\tValue\n\t * \t\t<input type=\"text\" [(ngModel)]=\"filter1\" class=\"input-field\">\n\t * \t</ibm-label>\n\t * </ng-template>\n\t *\n\t * <ng-template #filterFooter let-popover=\"popover\" let-filter=\"data\">\n\t * \t<button class=\"btn--primary\" (click)=\"filter.data = filter1; popover.onClose()\">Apply</button>\n\t * \t<button class=\"btn--secondary\" (click)=\"popover.onClose()\">Cancel</button>\n\t * </ng-template>\n\t * ```\n\t *\n\t * Set the template with, for example:\n\t * ```typescript\n\t * new FilterableHeaderItem({\n\t * \tfilterTemplate: this.filter,\n\t *\tfilterFooter: this.filterFooter\n\t * })\n\t * ```\n\t *\n\t * ```typescript\n\t * class FilterableHeaderItem extends TableHeaderItem {\n\t * \t// custom filter function\n\t * \tfilter(item: TableItem): boolean {\n\t * \t\tif (typeof item.data === \"string\" && item.data.indexOf(this.filterData.data) >= 0) {\n\t * \t\t\tthis.filterCount = 1;\n\t * \t\t\treturn false;\n\t * \t\t}\n\t * \t\tthis.filterCount = 0;\n\t * \t\treturn true;\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * @type {TemplateRef<any>}\n\t * @memberof TableHeaderItem\n\t */\n\tfilterTemplate: TemplateRef<any>;\n\n\t/**\n\t * Used along with `filterTemplate` to construct the filter popover\n\t *\n\t * @type {TemplateRef<any>}\n\t * @memberof TableHeaderItem\n\t */\n\tfilterFooter: TemplateRef<any>;\n\n\t/**\n\t * This is where you store your data when applying filter.\n\t *\n\t * It is the actual object you have access to with `let-filter=\"data\"` in your template.\n\t *\n\t * Make sure to store data in `filter.data` in your template, and you will have it\n\t * available in `filterData.data` in your extension of `TableHeaderItem`.\n\t *\n\t * Because angular and object references.\n\t *\n\t * @type {*}\n\t * @memberof TableHeaderItem\n\t */\n\tfilterData: any;\n\n\t/**\n\t * used in `ascending`\n\t *\n\t * @protected\n\t * @memberof TableHeaderItem\n\t */\n\tprotected _ascending = true;\n\n\t/**\n\t * Creates an instance of TableHeaderItem.\n\t * @param {*} [rawData]\n\t * @memberof TableHeaderItem\n\t */\n\tconstructor(rawData?: any) {\n\t\t// defaults so we dont leave things empty\n\t\tconst defaults = {\n\t\t\tdata: \"\",\n\t\t\tvisible: this.visible,\n\t\t\tstyle: this.style,\n\t\t\tfilterCount: this.filterCount,\n\t\t\tfilterData: {data: \"\"}\n\t\t};\n\t\t// fill our object with provided props, and fallback to defaults\n\t\tconst data = Object.assign({}, defaults, rawData);\n\t\tfor (let property of Object.getOwnPropertyNames(data)) {\n\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\tthis[property] = data[property];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Used for sorting rows of the table.\n\t *\n\t * Override to enable different sorting.\n\t *\n\t * @param {TableItem} one\n\t * @param {TableItem} two\n\t * @returns {number}\n\t * < 0 if `one` should go before `two`\n\t * > 0 if `one` shoulg go after `two`\n\t * 0 if it doesn't matter (they are the same)\n\t * @memberof TableHeaderItem\n\t */\n\tcompare(one: TableItem, two: TableItem): number {\n\t\tif (one.data < two.data) {\n\t\t\treturn -1;\n\t\t} else if (one.data > two.data) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Used to filter rows in the table.\n\t *\n\t * Override to make a custom filter.\n\t *\n\t * Even though there is just one filter function, there can be multiple filters.\n\t * When implementing filter, set `filterCount` before returning.\n\t *\n\t * @param {TableItem} item\n\t * @returns {boolean}\n\t * `true` to hide the row\n\t * `false` to show the row\n\t * @memberof TableHeaderItem\n\t */\n\tfilter(item: TableItem): boolean {\n\t\tthis.filterCount = 0;\n\t\treturn false;\n\t}\n}\n","import {\n\tTemplateRef\n} from \"@angular/core\";\n\nexport class TableItem {\n\t/**\n\t * Data for the table item.\n\t *\n\t * @type {*}\n\t * @memberof TableItem\n\t */\n\tdata: any;\n\n\t/**\n\t * Data for the expanded part of the row.\n\t *\n\t * You only need to set it for the first item in the row.\n\t *\n\t * @type {*}\n\t * @memberof TableItem\n\t */\n\texpandedData: any;\n\n\t/**\n\t * Used to display data in a desired way.\n\t *\n\t * If not provided, displays data as a simple string.\n\t *\n\t * Usage:\n\t *\n\t * In a component where you're using the table create a template like:\n\t *\n\t * ```html\n\t * <ng-template #customItemTemplate let-data=\"data\">\n\t * \t<i><a [routerLink]=\"data.link\">{{data.name}}</a></i>\n\t * </ng-template>\n\t * ```\n\t * where we assume your data contains `link` and `name`. `let-data=\"data\"` is\n\t * necessary for you to be able to access item's data in the template.\n\t *\n\t * Create `ViewChild` property with:\n\t *\n\t * ```typescript\n\t * (at)ViewChild(\"customItemTemplate\")\n\t * protected customItemTemplate: TemplateRef<any>;\n\t * ```\n\t *\n\t * Set the template to the table item, for example:\n\t *\n\t * ```typescript\n\t * this.model.data = [\n\t * \t[new TableItem({data: {name: \"Custom item\", link: \"/table\"}, template: this.customItemTemplate})]\n\t * ];\n\t * ```\n\t *\n\t * @type {TemplateRef<any>}\n\t * @memberof TableItem\n\t */\n\ttemplate: TemplateRef<any>;\n\n\t/**\n\t * Template for rendering `expandedData`\n\t *\n\t * You only need to set it for the first item in the row.\n\t *\n\t * @type {TemplateRef<any>}\n\t * @memberof TableItem\n\t */\n\texpandedTemplate: TemplateRef<any>;\n\n\t/**\n\t * Creates an instance of TableItem.\n\t * @param {*} [rawData]\n\t * @memberof TableItem\n\t */\n\tconstructor(rawData?: any) {\n\t\t// defaults so we dont leave things empty\n\t\tconst defaults = {\n\t\t\tdata: \"\"\n\t\t};\n\t\t// fill our object with provided props, and fallback to defaults\n\t\tconst data = Object.assign({}, defaults, rawData);\n\t\tthis.data = data.data;\n\t\tthis.expandedData = data.expandedData;\n\t\tthis.template = data.template;\n\t\tthis.expandedTemplate = data.expandedTemplate;\n\t}\n}\n","let _scrollbarWidth = -1;\n\nexport function getScrollbarWidth() {\n\t// lets not recreate this whole thing every time\n\tif (_scrollbarWidth >= 0) {\n\t\treturn _scrollbarWidth;\n\t}\n\n\t// do the calculations the first time\n\tconst outer = document.createElement(\"div\");\n\touter.style.visibility = \"hidden\";\n\touter.style.width = \"100px\";\n\touter.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n\n\tdocument.body.appendChild(outer);\n\n\tconst widthNoScroll = outer.offsetWidth;\n\t// force scrollbars\n\touter.style.overflow = \"scroll\";\n\n\t// add innerdiv\n\tconst inner = document.createElement(\"div\");\n\tinner.style.width = \"100%\";\n\touter.appendChild(inner);\n\n\tconst widthWithScroll = inner.offsetWidth;\n\n\t// remove divs\n\touter.parentNode.removeChild(outer);\n\n\t_scrollbarWidth = widthNoScroll - widthWithScroll;\n\treturn _scrollbarWidth;\n}\n","import {\n\tComponent,\n\tApplicationRef,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tAfterViewInit,\n\tTemplateRef\n} from \"@angular/core\";\nimport { Subscription, fromEvent, Observable } from \"rxjs\";\n\nimport { TableModel } from \"./table.module\";\nimport { TableHeaderItem } from \"./table-header-item.class\";\nimport { TableItem } from \"./table-item.class\";\nimport { getScrollbarWidth } from \"../common/utils\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\nimport { I18n, Overridable } from \"./../i18n/i18n.module\";\nimport { merge } from \"./../utils/object\";\n\nexport interface TableTranslations {\n\tFILTER: string;\n\tEND_OF_DATA: string;\n\tSCROLL_TOP: string;\n\tCHECKBOX_HEADER: string;\n\tCHECKBOX_ROW: string;\n}\n\n/**\n * Build your table with this component by extending things that differ from default.\n *\n * [See demo](../../?path=/story/table--basic)\n *\n * Instead of the usual write-your-own-html approach you had with `<table>`,\n * carbon table uses model-view-controller approach.\n *\n * Here, you create a view (with built-in controller) and provide it a model.\n * Changes you make to the model are reflected in the view. Provide same model you use\n * in the table to the `<ibm-pagination>` components.\n * They provide a different view over the same data.\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-table [model]=\"model\"></ibm-table>\n * ```\n *\n * ```typescript\n * public model = new TableModel();\n *\n * this.model.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: \"qwer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"zwer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})]\n * ];\n * ```\n *\n * ## Customization\n *\n * If you have custom data in your table, you need a way to display it. You can do that\n * by providing a template to `TableItem`.\n *\n * ```html\n * <ng-template #customTableItemTemplate let-data=\"data\">\n * \t<a [routerLink]=\"data.link\">{{data.name}} {{data.surname}}</a>\n * </ng-template>\n * ```\n *\n * ```typescript\n * customTableItemTemplate: TemplateRef<any>;\n *\n * this.customModel.data = [\n * \t[new TableItem({data: \"asdf\"}), new TableItem({data: {name: \"Lessy\", link: \"/table\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"swer\"})],\n * \t[new TableItem({data: \"bsdf\"}), new TableItem({data: {name: \"Alice\", surname: \"Bob\"}, template: this.customTableItemTemplate})],\n * \t[new TableItem({data: \"csdf\"}), new TableItem({data: \"twer\"})],\n * ];\n * ```\n *\n * ### Sorting and filtering\n *\n * In case you need custom sorting and/or filtering you should subclass `TableHeaderItem`\n * and override needed functions.\n *\n * ```typescript\n * class FilterableHeaderItem extends TableHeaderItem {\n * \t// custom filter function\n * \tfilter(item: TableItem): boolean {\n * \t\tif (typeof item.data === \"string\" && item.data.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.name && item.data.name.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0 ||\n * \t\titem.data.surname && item.data.surname.toLowerCase().indexOf(this.filterData.data.toLowerCase()) >= 0) {\n * \t\t\treturn false;\n * \t\t}\n * \t\treturn true;\n * \t}\n *\n * \tset filterCount(n) {}\n * \tget filterCount() {\n * \t\treturn (this.filterData && this.filterData.data && this.filterData.data.length > 0) ? 1 : 0;\n * \t}\n *\n * \t// used for custom sorting\n * \tcompare(one: TableItem, two: TableItem) {\n * \t\tconst stringOne = (one.data.name || one.data.surname || one.data).toLowerCase();\n * \t\tconst stringTwo = (two.data.name || two.data.surname || two.data).toLowerCase();\n *\n * \t\tif (stringOne > stringTwo) {\n * \t\t\treturn 1;\n * \t\t} else if (stringOne < stringTwo) {\n * \t\t\treturn -1;\n * \t\t} else {\n * \t\t\treturn 0;\n * \t\t}\n * \t}\n * }\n * ```\n *\n * See `TableHeaderItem` class for more information.\n *\n * ## No data template\n *\n * When table has no data to show, it can show a message you provide it instead.\n *\n * ```html\n * <ibm-table [model]=\"model\">No data.</ibm-table>\n * ```\n *\n * ... will show `No data.` message, but you can get creative and provide any template you want\n * to replace table's default `tbody`.\n *\n * ## Use pagination as table footer\n *\n * ```html\n * <ibm-pagination [model]=\"model\" (selectPage)=\"selectPage($event)\"></ibm-pagination>\n * ```\n *\n * `selectPage()` function should fetch the data from backend, create new `data`, apply it to `model.data`,\n * and update `model.currentPage`.\n *\n * If the data your server returns is a two dimensional array of objects, it would look something like this:\n *\n * ```typescript\n * selectPage(page) {\n * \tthis.getPage(page).then((data: Array<Array<any>>) => {\n * \t\t// set the data and update page\n * \t\tthis.model.data = this.prepareData(data);\n * \t\tthis.model.currentPage = page;\n * \t});\n * }\n *\n * protected prepareData(data: Array<Array<any>>) {\n * \t// create new data from the service data\n * \tlet newData = [];\n * \tdata.forEach(dataRow => {\n * \t\tlet row = [];\n * \t\tdataRow.forEach(dataElement => {\n * \t\t\trow.push(new TableItem({\n * \t\t\t\tdata: dataElement,\n * \t\t\t\ttemplate: typeof dataElement === \"string\" ? undefined : this.paginationTableItemTemplate\n * \t\t\t\t// your template can handle all the data types so you don't have to conditionally set it\n * \t\t\t\t// you can also set different templates for different columns based on index\n * \t\t\t}));\n * \t\t});\n * \t\tnewData.push(row);\n * \t});\n * \treturn newData;\n * }\n * ```\n *\n * <example-url>../../iframe.html?id=table--basic</example-url>\n *\n * @export\n * @class Table\n * @implements {AfterContentChecked}\n */\n@Component({\n\tselector: \"ibm-table\",\n\ttemplate: `\n\t<table\n\tclass=\"bx--data-table bx--data-table--sort\"\n\t[ngClass]=\"{\n\t\t'bx--data-table--compact': size === 'sm',\n\t\t'bx--data-table--tall': size === 'lg',\n\t\t'bx--data-table--zebra': striped,\n\t\t'bx--skeleton': skeleton\n\t}\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t</th>\n\t\t\t\t<th\n\t\t\t\t\tclass=\"bx--table-column-checkbox\"\n\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t(click)=\"setCheckboxIndex()\"\n\t\t\t\t\tstyle=\"width: 10px;\">\n\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t[(ngModel)]=\"selectAllCheckbox\"\n\t\t\t\t\t\t[indeterminate]=\"selectAllCheckboxSomeSelected\"\n\t\t\t\t\t\t[attr.aria-label]=\"checkboxHeaderLabel.subject | async\"\n\t\t\t\t\t\t(change)=\"onSelectAllCheckboxChange()\">\n\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t</th>\n\t\t\t\t<ng-container *ngFor=\"let column of model.header; let i = index\">\n\t\t\t\t\t<th\n\t\t\t\t\t\t[ngClass]='{\"thead_action\": column.filterTemplate || this.sort.observers.length > 0}'\n\t\t\t\t\t\t*ngIf=\"column.visible\"\n\t\t\t\t\t\t[class]=\"column.className\"\n\t\t\t\t\t\t[ngStyle]=\"column.style\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[draggable]=\"columnsDraggable\"\n\t\t\t\t\t\t(dragstart)=\"columnDragStart($event, i)\"\n\t\t\t\t\t\t(dragend)=\"columnDragEnd($event, i)\"\n\t\t\t\t\t\t(click)=\"setIndex(i)\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnsResizable\"\n\t\t\t\t\t\t\tclass=\"column-resize-handle\"\n\t\t\t\t\t\t\t(mousedown)=\"columnResizeStart($event, column)\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"bx--table-sort\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length > 0 && column.sortable\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"(column.sorted && column.ascending ? getSortDescendingLabel() : getSortAscendingLabel()) | async\"\n\t\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'bx--table-sort--active': column.sorted,\n\t\t\t\t\t\t\t\t'bx--table-sort--ascending': column.ascending\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t(click)=\"sort.emit(i)\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t*ngIf=\"!column.template\"\n\t\t\t\t\t\t\t\t[title]=\"column.data\"\n\t\t\t\t\t\t\t\ttabindex=\"-1\">\n\t\t\t\t\t\t\t\t{{column.data}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M12.3 9.3l-3.8 3.8V1h-1v12.1L3.7 9.3 3 10l5 5 5-5z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"bx--table-sort__icon-unsorted\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<path d=\"M13.8 10.3L12 12.1V2h-1v10.1l-1.8-1.8-.7.7 3 3 3-3zM4.5 2l-3 3 .7.7L4 3.9V14h1V3.9l1.8 1.8.7-.7z\"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"bx--table-header-label\"\n\t\t\t\t\t\t\t*ngIf=\"!skeleton && this.sort.observers.length === 0 || (this.sort.observers.length > 0 && !column.sortable)\">\n\t\t\t\t\t\t\t<span *ngIf=\"!column.template\" [title]=\"column.data\">{{column.data}}</span>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{data: column.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t[ngClass]=\"{'active': column.filterCount > 0}\"\n\t\t\t\t\t\t\t*ngIf=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t[ibmTooltip]=\"column.filterTemplate\"\n\t\t\t\t\t\t\ttrigger=\"click\"\n\t\t\t\t\t\t\t[title]=\"filterTitle.subject | async\"\n\t\t\t\t\t\t\tplacement=\"bottom,top\"\n\t\t\t\t\t\t\t[data]=\"column.filterData\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tclass=\"icon--sm\"\n\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 16 16\">\n\t\t\t\t\t\t\t\t<path d=\"M0 0v3l6 8v5h4v-5l6-8V0H0zm9 10.7V15H7v-4.3L1.3 3h13.5L9 10.7z\"/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span *ngIf=\"column.filterCount > 0\">\n\t\t\t\t\t\t\t\t{{column.filterCount}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t*ngIf=\"columnsDraggable && isColumnDragging\"\n\t\t\t\t\t\tclass=\"drop-area\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'left'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-left\"></div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-left\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'left', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'left', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'left', i)\">\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"drop-area-right\"\n\t\t\t\t\t\t\t(dragenter)=\"columnDragEnter($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragleave)=\"columnDragLeave($event, 'right', i)\"\n\t\t\t\t\t\t\t(dragover)=\"columnDragover($event, 'right', i)\"\n\t\t\t\t\t\t\t(drop)=\"columnDrop($event, 'right', i)\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"columnDraggedHoverIndex == i && columnDraggedPosition == 'right'\"\n\t\t\t\t\t\t\tclass=\"drop-indicator-right\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</ng-container>\n\t\t\t\t<th *ngIf=\"!skeleton && stickyHeader\" [ngStyle]=\"{'width': scrollbarWidth + 'px', 'padding': 0, 'border': 0}\">\n\t\t\t\t\t<!--\n\t\t\t\t\t\tScrollbar pushes body to the left so this header column is added to push\n\t\t\t\t\t\tthe title bar the same amount and keep the header and body columns aligned.\n\t\t\t\t\t-->\n\t\t\t\t</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody\n\t\t*ngIf=\"!noData; else noDataTemplate\"\n\t\t[ngStyle]=\"{'overflow-y': 'scroll'}\"\n\t\t(scroll)=\"onScroll($event)\">\n\t\t\t<ng-container *ngFor=\"let row of model.data; let i = index\">\n\t\t\t\t<tr *ngIf=\"!model.isRowFiltered(i)\"\n\t\t\t\t\t(click)=\"onRowSelect(i)\"\n\t\t\t\t\t[attr.data-parent-row]=\"(model.isRowExpandable(i) ? 'true' : null)\"\n\t\t\t\t\t[class]=\"model.rowsClass[i] ? model.rowsClass[i] : null\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--data-table--selected': model.rowsSelected[i],\n\t\t\t\t\t\t'bx--parent-row': model.isRowExpandable(i),\n\t\t\t\t\t\t'bx--expandable-row': model.rowsExpanded[i],\n\t\t\t\t\t\t'tbody_row--selectable': enableSingleSelect,\n\t\t\t\t\t\t'tbody_row--success': !model.rowsSelected[i] && model.rowsContext[i] === 'success',\n\t\t\t\t\t\t'tbody_row--warning': !model.rowsSelected[i] && model.rowsContext[i] === 'warning',\n\t\t\t\t\t\t'tbody_row--info': !model.rowsSelected[i] && model.rowsContext[i] === 'info',\n\t\t\t\t\t\t'tbody_row--error': !model.rowsSelected[i] && model.rowsContext[i] === 'error'\n\t\t\t\t\t}\">\n\t\t\t\t\t<td\n\t\t\t\t\t*ngIf=\"model.hasExpandableRows()\"\n\t\t\t\t\tclass=\"bx--table-expand\"\n\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t[attr.data-previous-value]=\"(model.rowsExpanded[i] ? 'collapsed' : null)\"\n\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t*ngIf=\"!skeleton && model.isRowExpandable(i)\"\n\t\t\t\t\t\tclass=\"bx--table-expand__button\"\n\t\t\t\t\t\t[attr.aria-label]=\"getExpandButtonAriaLabel() | async\"\n\t\t\t\t\t\t(click)=\"model.expandRow(i, !model.rowsExpanded[i])\">\n\t\t\t\t\t\t\t<ibm-icon-chevron-right16 innerClass=\"bx--table-expand__svg\"></ibm-icon-chevron-right16>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td\n\t\t\t\t\t\t*ngIf=\"!skeleton && showSelectionColumn\"\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t(click)=\"setCheckboxIndex()\">\n\t\t\t\t\t\t<ibm-checkbox\n\t\t\t\t\t\t\tinline=\"true\"\n\t\t\t\t\t\t\t[aria-label]=\"checkboxRowLabel.subject | i18nReplace:getSelectionLabelValue(row) | async\"\n\t\t\t\t\t\t\t[size]=\"size !== ('lg' ? 'sm' : 'md')\"\n\t\t\t\t\t\t\t[(ngModel)]=\"model.rowsSelected[i]\"\n\t\t\t\t\t\t\t(change)=\"onRowCheckboxChange(i)\">\n\t\t\t\t\t\t</ibm-checkbox>\n\t\t\t\t\t</td>\n\t\t\t\t\t<ng-container *ngFor=\"let item of row; let j = index\">\n\t\t\t\t\t\t<td *ngIf=\"model.header[j].visible\"\n\t\t\t\t\t\t\t[class]=\"model.header[j].className\"\n\t\t\t\t\t\t\t[ngStyle]=\"model.header[j].style\"\n\t\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t\t(click)=\"setIndex(j)\">\n\t\t\t\t\t\t\t<span *ngIf=\"skeleton && i === 0\"></span>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!skeleton && !item.template\">{{item.data}}</ng-container>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"item.template\" [ngTemplateOutletContext]=\"{data: item.data}\">\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</tr>\n\t\t\t\t<tr\n\t\t\t\t*ngIf=\"model.rowsExpanded[i] && !model.isRowFiltered(i)\"\n\t\t\t\tclass=\"bx--expandable-row\"\n\t\t\t\tibmExpandedRowHover\n\t\t\t\t[attr.data-child-row]=\"(model.rowsExpanded[i] ? 'true' : null)\">\n\t\t\t\t\t<td\n\t\t\t\t\t\t[ibmDataGridFocus]=\"isDataGrid\"\n\t\t\t\t\t\t[(columnIndex)]=\"columnIndex\"\n\t\t\t\t\t\t[attr.colspan]=\"row.length + 2\"\n\t\t\t\t\t\t(click)=\"setExpandIndex($event)\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!firstExpandedTemplateInRow(row)\">{{firstExpandedDataInRow(row)}}</ng-container>\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"firstExpandedTemplateInRow(row)\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{data: firstExpandedDataInRow(row)}\">\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</ng-container>\n\t\t</tbody>\n\t\t<ng-template #noDataTemplate><ng-content></ng-content></ng-template>\n\t\t<tfoot>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"footerTemplate\">\n\t\t\t</ng-template>\n\t\t\t<tr *ngIf=\"this.model.isLoading\">\n\t\t\t\t<td class=\"table_loading-indicator\">\n\t\t\t\t\t<div class=\"bx--loading bx--loading--small\">\n\t\t\t\t\t\t<svg class=\"bx--loading__svg\" viewBox=\"-75 -75 150 150\">\n\t\t\t\t\t\t\t<circle class=\"bx--loading__stroke\" cx=\"0\" cy=\"0\" r=\"37.5\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr *ngIf=\"this.model.isEnd\">\n\t\t\t\t<td class=\"table_end-indicator\">\n\t\t\t\t\t<h5>{{endOfDataText.subject | async}}</h5>\n\t\t\t\t\t<button (click)=\"scrollToTop($event)\" class=\"btn--secondary-sm\">\n\t\t\t\t\t\t{{scrollTopText.subject | async}}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tfoot>\n\t</table>\n\t`\n})\nexport class Table implements AfterViewInit {\n\t/**\n\t * Creates a skeleton model with a row and column count specified by the user\n\t *\n\t * Example:\n\t *\n\t * ```typescript\n\t * this.model = Table.skeletonModel(5, 5);\n\t * ```\n\t *\n\t * @param {number} rowCount\n\t * @param {number} columnCount\n\t */\n\tstatic skeletonModel(rowCount: number, columnCount: number) {\n\t\tconst model = new TableModel();\n\t\tlet header = new Array<TableHeaderItem>();\n\t\tlet data = new Array<Array<TableItem>>();\n\t\tlet row = new Array<TableItem>();\n\n\t\tfor (let i = 0; i < columnCount; i++) {\n\t\t\theader.push(new TableHeaderItem());\n\t\t\trow.push(new TableItem());\n\t\t}\n\t\tfor (let i = 0; i < rowCount - 1; i++) {\n\t\t\tdata.push(row);\n\t\t}\n\n\t\tmodel.header = header;\n\t\tmodel.data = data;\n\t\treturn model;\n\t}\n\n\tstatic setTabIndex(element: HTMLElement, index: -1 | 0) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort\")) {\n\t\t\tfocusElementList[1].tabIndex = index;\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].tabIndex = index;\n\t\t} else {\n\t\t\telement.tabIndex = index;\n\t\t}\n\t}\n\n\t/**\n\t * Size of the table rows.\n\t *\n\t * @type {(\"sm\" | \"md\" | \"lg\")}\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Set to `true` for a loading table.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for a data grid with keyboard interactions.\n\t */\n\t@Input() isDataGrid = false;\n\n\t/**\n\t * `TableModel` with data the table is to display.\n\t *\n\t * @type {TableModel}\n\t */\n\t@Input()\n\tset model(m: TableModel) {\n\t\tif (this._model) {\n\t\t\tthis._model.dataChange.unsubscribe();\n\t\t\tthis._model.rowsSelectedChange.unsubscribe();\n\t\t}\n\n\t\tthis._model = m;\n\t\tthis._model.rowsSelectedChange.subscribe(() => this.updateSelectAllCheckbox());\n\t\tthis._model.dataChange.subscribe(() => {\n\t\t\tthis.updateSelectAllCheckbox();\n\t\t\tif (this.isDataGrid) {\n\t\t\t\tthis.handleTabIndex();\n\t\t\t}\n\t\t});\n\t\tif (this.isDataGrid) {\n\t\t\tthis._model.rowsExpandedChange.subscribe(() => {\n\t\t\t\t// Allows the expanded row to have a focus state when it exists in the DOM\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst expandedRows = this.elementRef.nativeElement.querySelectorAll(\".bx--expandable-row:not(.bx--parent-row)\");\n\t\t\t\t\tArray.from<any>(expandedRows).forEach(row => {\n\t\t\t\t\t\tif (row.firstElementChild.tabIndex === undefined || row.firstElementChild.tabIndex !== -1) {\n\t\t\t\t\t\t\trow.firstElementChild.tabIndex = -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tget model(): TableModel {\n\t\treturn this._model;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @deprecated in the next major carbon-components-angular version in favour of\n\t * `showSelectionColumn` because of new attribute `enableSingleSelect`\n\t * please use `showSelectionColumn` instead\n\t */\n\t@Input()\n\tset enableRowSelect(value: boolean) {\n\t\tthis.showSelectionColumn = value;\n\t}\n\n\tget enableRowSelect () {\n\t\treturn this.showSelectionColumn;\n\t}\n\n\t/**\n\t * Controls whether to show the selection checkboxes column or not.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() showSelectionColumn = true;\n\n\t/**\n\t * Controls whether to enable multiple or single row selection.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() enableSingleSelect = false;\n\n\t/**\n\t * Distance (in px) from the bottom that view has to reach before\n\t * `scrollLoad` event is emitted.\n\t *\n\t * @type {number}\n\t */\n\t@Input() scrollLoadDistance = 0;\n\n\t/**\n\t * Set to `true` to enable users to resize columns.\n\t *\n\t * Works for columns with width set in pixels.\n\t *\n\t */\n\t@Input() columnsResizable = false;\n\n\t/**\n\t * Set to `true` to enable users to drag and drop columns.\n\t *\n\t * Changing the column order in table changes table model. Be aware of it when you add additional data\n\t * to the model.\n\t *\n\t */\n\t@Input() columnsDraggable = false;\n\n\t@Input()\n\tset expandButtonAriaLabel(value: string | Observable<string>) {\n\t\tthis._expandButtonAriaLabel.override(value);\n\t}\n\tget expandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.value;\n\t}\n\t@Input()\n\tset sortDescendingLabel(value: string | Observable<string>) {\n\t\tthis._sortDescendingLabel.override(value);\n\t}\n\tget sortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.value;\n\t}\n\t@Input()\n\tset sortAscendingLabel(value: string | Observable<string>) {\n\t\tthis._sortAscendingLabel.override(value);\n\t}\n\tget sortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.value;\n\t}\n\n\t/**\n\t * Expects an object that contains some or all of:\n\t * ```\n\t * {\n\t *\t\t\"FILTER\": \"Filter\",\n\t *\t\t\"END_OF_DATA\": \"You've reached the end of your content\",\n\t *\t\t\"SCROLL_TOP\": \"Scroll to top\",\n\t *\t\t\"CHECKBOX_HEADER\": \"Select all rows\",\n\t *\t\t\"CHECKBOX_ROW\": \"Select row\"\n\t * }\n\t * ```\n\t */\n\t@Input()\n\tset translations (value) {\n\t\tconst valueWithDefaults = merge(this.i18n.getMultiple(\"TABLE\"), value);\n\t\tthis.filterTitle.override(valueWithDefaults.FILTER);\n\t\tthis.endOfDataText.override(valueWithDefaults.END_OF_DATA);\n\t\tthis.scrollTopText.override(valueWithDefaults.SCROLL_TOP);\n\t\tthis.checkboxHeaderLabel.override(valueWithDefaults.CHECKBOX_HEADER);\n\t\tthis.checkboxRowLabel.override(valueWithDefaults.CHECKBOX_ROW);\n}\n\n\tcheckboxHeaderLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_HEADER\");\n\tcheckboxRowLabel = this.i18n.getOverridable(\"TABLE.CHECKBOX_ROW\");\n\tendOfDataText = this.i18n.getOverridable(\"TABLE.END_OF_DATA\");\n\tscrollTopText = this.i18n.getOverridable(\"TABLE.SCROLL_TOP\");\n\tfilterTitle = this.i18n.getOverridable(\"TABLE.FILTER\");\n\n\t/**\n\t * Controls if all checkboxes are viewed as selected.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckbox = false;\n\n\t/**\n\t * Controls the indeterminate state of the header checkbox.\n\t *\n\t * @type {boolean}\n\t */\n\tselectAllCheckboxSomeSelected = false;\n\n\t/**\n\t * Set to `false` to remove table rows (zebra) stripes.\n\t *\n\t * @type {boolean}\n\t */\n\t@Input() striped = true;\n\n\t/**\n\t * Set to `true` to stick the header to the top of the table\n\t */\n\t@Input() stickyHeader = false;\n\n\t/**\n\t * Set footer template to customize what is displayed in the tfoot section of the table\n\t */\n\t@Input() footerTemplate: TemplateRef<any>;\n\n\t/**\n\t * Used to populate the row selection checkbox label with a useful value if set.\n\t *\n\t * Example:\n\t * ```\n\t * <ibm-table [selectionLabelColumn]=\"0\"></ibm-table>\n\t * <!-- results in aria-label=\"Select first column value\"\n\t * (where \"first column value\" is the value of the first column in the row -->\n\t * ```\n\t */\n\t@Input() selectionLabelColumn: number;\n\n\t/**\n\t * Emits an index of the column that wants to be sorted.\n\t *\n\t */\n\t@Output() sort = new EventEmitter<number>();\n\n\t/**\n\t * Emits if all rows are selected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() selectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if all rows are deselected.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() deselectAll = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is selected.\n\t *\n\t * @param {Object} ({model: this.model, selectedRowIndex: index})\n\t */\n\t@Output() selectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits if a single row is deselected.\n\t *\n\t * @param {Object} ({model: this.model, deselectedRowIndex: index})\n\t */\n\t@Output() deselectRow = new EventEmitter<Object>();\n\n\t/**\n\t * Emits when table requires more data to be loaded.\n\t *\n\t * @param {TableModel} model\n\t */\n\t@Output() scrollLoad = new EventEmitter<TableModel>();\n\n\tget noData() {\n\t\treturn !this.model.data ||\n\t\t\tthis.model.data.length === 0 ||\n\t\t\tthis.model.data.length === 1 && this.model.data[0].length === 0;\n\t}\n\n\tcolumnIndex = 0;\n\n\tpublic isColumnDragging = false;\n\tpublic columnDraggedHoverIndex = -1;\n\tpublic columnDraggedPosition = \"\";\n\n\tprotected _model: TableModel;\n\n\tprotected _expandButtonAriaLabel = this.i18n.getOverridable(\"TABLE.EXPAND_BUTTON\");\n\tprotected _sortDescendingLabel = this.i18n.getOverridable(\"TABLE.SORT_DESCENDING\");\n\tprotected _sortAscendingLabel = this.i18n.getOverridable(\"TABLE.SORT_ASCENDING\");\n\n\tprotected columnResizeWidth: number;\n\tprotected columnResizeMouseX: number;\n\tprotected mouseMoveSubscription: Subscription;\n\tprotected mouseUpSubscription: Subscription;\n\n\t/**\n\t * Creates an instance of Table.\n\t *\n\t * @param {ApplicationRef} applicationRef\n\t */\n\tconstructor(protected elementRef: ElementRef, protected applicationRef: ApplicationRef, protected i18n: I18n) {}\n\n\tngAfterViewInit() {\n\t\tif (this.isDataGrid) {\n\t\t\tthis.handleTabIndex();\n\t\t}\n\t}\n\n\tcolumnResizeStart(event, column) {\n\t\tthis.columnResizeWidth = parseInt(column.style.width, 10);\n\t\tthis.columnResizeMouseX = event.clientX;\n\t\tevent.preventDefault();\n\n\t\tthis.mouseMoveSubscription = fromEvent(document.body, \"mousemove\").subscribe(event => {\n\t\t\tthis.columnResizeProgress(event, column);\n\t\t});\n\t\tthis.mouseUpSubscription = fromEvent(document.body, \"mouseup\").subscribe(event => {\n\t\t\tthis.columnResizeEnd(event, column);\n\t\t});\n\t}\n\n\tcolumnResizeProgress(event, column) {\n\t\tconst move = event.clientX - this.columnResizeMouseX;\n\t\tcolumn.style.width = `${this.columnResizeWidth + move}px`;\n\t}\n\n\tcolumnResizeEnd(event, column) {\n\t\tthis.mouseMoveSubscription.unsubscribe();\n\t\tthis.mouseUpSubscription.unsubscribe();\n\t}\n\n\tonRowSelect(index: number) {\n\t\tif (!this.showSelectionColumn && this.enableSingleSelect) {\n\t\t\tthis.model.rowsSelected.forEach((element, index) => {\n\t\t\t\tthis.model.selectRow(index, false);\n\t\t\t});\n\t\t\tthis.model.selectRow(index, !this.model.rowsSelected[index]);\n\t\t\tthis.onRowCheckboxChange(index);\n\t\t}\n\t}\n\n\tupdateSelectAllCheckbox() {\n\t\tconst selectedRowsCount = this.model.selectedRowsCount();\n\n\t\tif (selectedRowsCount <= 0) {\n\t\t\t// reset select all checkbox if nothing selected\n\t\t\tthis.selectAllCheckbox = false;\n\t\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\t} else if (selectedRowsCount < this.model.data.length) {\n\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered whenever the header checkbox is clicked.\n\t * Updates all the checkboxes in the table view.\n\t * Emits the `selectAll` or `deselectAll` event.\n\t *\n\t */\n\tonSelectAllCheckboxChange() {\n\t\tthis.applicationRef.tick(); // give app time to process the click if needed\n\n\t\tif (this.selectAllCheckboxSomeSelected) {\n\t\t\tthis.selectAllCheckbox = false; // clear all boxes\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t} else if (this.selectAllCheckbox) {\n\t\t\tthis.selectAll.emit(this.model);\n\t\t} else {\n\t\t\tthis.deselectAll.emit(this.model);\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\n\t\tfor (let i = 0; i < this.model.rowsSelected.length; i++) {\n\t\t\tthis.model.rowsSelected[i] = this.selectAllCheckbox;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when a single row is clicked.\n\t * Updates the header checkbox state.\n\t * Emits the `selectRow` or `deselectRow` event.\n\t *\n\t * @param {number} index\n\t * @returns\n\t */\n\tonRowCheckboxChange(index: number) {\n\t\tlet startValue = this.model.rowsSelected[0];\n\n\t\tif (this.model.rowsSelected[index]) {\n\t\t\tthis.selectRow.emit({model: this.model, selectedRowIndex: index});\n\t\t} else {\n\t\t\tthis.deselectRow.emit({model: this.model, deselectedRowIndex: index});\n\t\t}\n\n\t\tfor (let i = 1; i < this.model.rowsSelected.length; i++) {\n\t\t\tlet one = this.model.rowsSelected[i];\n\n\t\t\tif (!!one !== !!startValue) { // !! essentially converts to boolean and we want undefined to be false\n\t\t\t\t// set indeterminate\n\t\t\t\tthis.selectAllCheckbox = false;\n\t\t\t\tthis.selectAllCheckboxSomeSelected = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selectAllCheckboxSomeSelected = false;\n\t\tthis.selectAllCheckbox = startValue;\n\t}\n\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tonScroll(event) {\n\t\tconst distanceFromBottom = event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop;\n\n\t\tif (distanceFromBottom <= this.scrollLoadDistance) {\n\t\t\tthis.scrollLoad.emit(this.model);\n\t\t} else {\n\t\t\tthis.model.isEnd = false;\n\t\t}\n\t}\n\n\tcolumnDragStart(event, columnIndex) {\n\t\tthis.isColumnDragging = true;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tevent.dataTransfer.setData(\"columnIndex\", JSON.stringify(columnIndex));\n\t}\n\n\tcolumnDragEnd(event, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t}\n\n\tcolumnDragEnter(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = position;\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t}\n\n\tcolumnDragLeave(event, position, columnIndex) {\n\t\tthis.columnDraggedPosition = \"\";\n\t}\n\n\tcolumnDragover(event, position, columnIndex) {\n\t\tthis.columnDraggedHoverIndex = columnIndex;\n\t\tthis.columnDraggedPosition = position;\n\n\t\t// needed to tell browser to allow dropping\n\t\tevent.preventDefault();\n\t}\n\n\tcolumnDrop(event, position, columnIndex) {\n\t\tthis.isColumnDragging = false;\n\t\tthis.columnDraggedHoverIndex = -1;\n\t\tthis.columnDraggedPosition = \"\";\n\n\t\tthis.model.moveColumn(\n\t\t\tparseInt(event.dataTransfer.getData(\"columnIndex\"), 10),\n\t\t\tcolumnIndex + (position === \"right\" ? 1 : 0)\n\t\t);\n\t}\n\n\tget scrollbarWidth() {\n\t\treturn getScrollbarWidth();\n\t}\n\n\tfirstExpandedDataInRow(row) {\n\t\tconst found = row.find(d => d.expandedData);\n\t\tif (found) {\n\t\t\treturn found.expandedData;\n\t\t}\n\t\treturn found;\n\t}\n\n\tfirstExpandedTemplateInRow(row) {\n\t\tconst found = row.find(d => d.expandedTemplate);\n\t\tif (found) {\n\t\t\treturn found.expandedTemplate;\n\t\t}\n\t\treturn found;\n\t}\n\t/**\n\t * Triggered when the user scrolls on the `<tbody>` element.\n\t * Emits the `scrollLoad` event.\n\t *\n\t * @param {any} event\n\t */\n\tscrollToTop(event) {\n\t\tevent.target.parentElement.parentElement.parentElement.parentElement.children[1].scrollTop = 0;\n\t\tthis.model.isEnd = false;\n\t}\n\n\thandleTabIndex() {\n\t\tsetTimeout(() => {\n\t\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement, tabbableSelectorIgnoreTabIndex);\n\t\t\tif (focusElementList.length > 0) {\n\t\t\t\tfocusElementList.forEach(tabbable => {\n\t\t\t\t\ttabbable.tabIndex = -1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tArray.from<HTMLElement>(this.elementRef.nativeElement.querySelectorAll(\"td, th\")).forEach(cell => Table.setTabIndex(cell, -1));\n\n\t\t\tconst rows = this.elementRef.nativeElement.firstElementChild.rows;\n\t\t\tif (Array.from(rows[0].querySelectorAll(\"th\")).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\tTable.setTabIndex(rows[0].querySelector(\"th\"), 0);\n\t\t\t} else {\n\t\t\t\tTable.setTabIndex(rows[1].querySelector(\"td\"), 0);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetIndex(columnIndex) {\n\t\tif (this.model.hasExpandableRows() && this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 2;\n\t\t} else if (this.model.hasExpandableRows() || this.showSelectionColumn) {\n\t\t\tthis.columnIndex = columnIndex + 1;\n\t\t}\n\t}\n\n\tsetCheckboxIndex() {\n\t\tif (this.model.hasExpandableRows()) {\n\t\t\tthis.columnIndex = 1;\n\t\t} else {\n\t\t\tthis.columnIndex = 0;\n\t\t}\n\t}\n\n\tsetExpandIndex(event) {\n\t\tthis.columnIndex = 0;\n\t}\n\n\tgetSelectionLabelValue(row: TableItem[]) {\n\t\tif (!this.selectionLabelColumn) {\n\t\t\treturn { value: this.i18n.get().TABLE.ROW };\n\t\t}\n\t\treturn { value: row[this.selectionLabelColumn].data };\n\t}\n\n\tgetExpandButtonAriaLabel() {\n\t\treturn this._expandButtonAriaLabel.subject;\n\t}\n\tgetSortDescendingLabel() {\n\t\treturn this._sortDescendingLabel.subject;\n\t}\n\tgetSortAscendingLabel() {\n\t\treturn this._sortAscendingLabel.subject;\n\t}\n}\n","import {\n\tEventEmitter\n} from \"@angular/core\";\n\nimport { PaginationModel } from \"./../pagination/pagination-model.class\";\nimport { TableHeaderItem } from \"./table-header-item.class\";\nimport { TableItem } from \"./table-item.class\";\n\nexport class TableModel implements PaginationModel {\n\t/**\n\t * Sets data of the table.\n\t *\n\t * Make sure all rows are the same length to keep the column count accurate.\n\t *\n\t * @memberof TableModel\n\t */\n\tset data(newData: Array<Array<TableItem>>) {\n\t\tif (!newData || (Array.isArray(newData) && newData.length === 0) ) {\n\t\t\tnewData = [[]];\n\t\t}\n\n\t\tthis._data = newData;\n\n\t\t// init rowsSelected\n\t\tthis.rowsSelected = new Array<boolean>(this._data.length);\n\t\tthis.rowsExpanded = new Array<boolean>(this._data.length);\n\n\t\t// init rowsContext\n\t\tthis.rowsContext = new Array<string>(this._data.length);\n\n\t\t// init rowsClass\n\t\tthis.rowsClass = new Array<string>(this._data.length);\n\n\t\t// only create a fresh header if necessary (header doesn't exist or differs in length)\n\t\tif (this.header == null || (this.header.length !== this._data[0].length && this._data[0].length > 0)) {\n\t\t\tlet header = new Array<TableHeaderItem>();\n\t\t\tfor (let i = 0; i < this._data[0].length; i++) {\n\t\t\t\theader.push(new TableHeaderItem());\n\t\t\t}\n\t\t\tthis.header = header;\n\t\t}\n\n\t\tthis.dataChange.emit();\n\t}\n\n\tdataChange = new EventEmitter();\n\trowsSelectedChange = new EventEmitter();\n\trowsExpandedChange = new EventEmitter();\n\n\t/**\n\t * Gets the full data.\n\t *\n\t * You can use it to alter individual `TableItem`s but if you need to change\n\t * table structure, use `addRow()` and/or `addColumn()`\n\t *\n\t * @readonly\n\t * @memberof TableModel\n\t */\n\tget data() {\n\t\treturn this._data;\n\t}\n\n\t/**\n\t * Contains information about selection state of rows in the table.\n\t *\n\t * @type {Array<boolean>}\n\t * @memberof TableModel\n\t */\n\trowsSelected: Array<boolean>;\n\n\t/**\n\t * Contains information about expanded state of rows in the table.\n\t *\n\t * @type {Array<boolean>}\n\t * @memberof TableModel\n\t */\n\trowsExpanded: Array<boolean>;\n\n\t/**\n\t * Contains information about the context of the row.\n\t *\n\t * It affects styling of the row to reflect the context.\n\t *\n\t * string can be one of `\"success\" | \"warning\" | \"info\" | \"error\" | \"\"` and it's\n\t * empty or undefined by default\n\t *\n\t * @type {Array<string>}\n\t * @memberof TableModel\n\t */\n\trowsContext: Array<string>;\n\n\t/**\n\t * Contains class name(s) of the row.\n\t *\n\t * It affects styling of the row to reflect the appended class name(s).\n\t *\n\t * It's empty or undefined by default\n\t *\n\t * @type {Array<string>}\n\t * @memberof TableModel\n\t */\n\trowsClass: Array<string>;\n\n\t/**\n\t * Contains information about the header cells of the table.\n\t *\n\t * @type {Array<TableHeaderItem>}\n\t * @memberof TableModel\n\t */\n\theader: Array<TableHeaderItem>;\n\n\t/**\n\t * Tracks the current page of the table.\n\t *\n\t * @type {number}\n\t * @memberof TableModel\n\t */\n\tcurrentPage: number;\n\n\t/**\n\t * Length of page of the table.\n\t *\n\t * @type {number}\n\t * @memberof TableModel\n\t */\n\tpageLength: number;\n\n\t/**\n\t * Set to true when there is no more data to load in the table\n\t *\n\t * @type {boolean}\n\t * @memberof TableModel\n\t */\n\tisEnd = false;\n\n\t/**\n\t * Set to true when lazy loading to show loading indicator\n\t *\n\t * @type {boolean}\n\t * @memberof TableModel\n\t */\n\tisLoading = false;\n\n\t/**\n\t * Absolute total number of rows of the table.\n\t *\n\t * @protected\n\t * @type {number}\n\t * @memberof TableModel\n\t */\n\tprotected _totalDataLength: number;\n\n\t/**\n\t * Manually set data length in case the data in the table doesn't\n\t * correctly reflect all the data that table is to disply.\n\t *\n\t * Example: if you have multiple pages of data that table will display\n\t * but you're loading one at a time.\n\t *\n\t * Set to `null` to reset to default behaviour.\n\t *\n\t * @memberof TableModel\n\t */\n\tset totalDataLength(length: number) {\n\t\tthis._totalDataLength = length;\n\t}\n\n\t/**\n\t * Total length of data that table has access to, or the amount manually set\n\t *\n\t * @memberof TableModel\n\t */\n\tget totalDataLength() {\n\t\t// if manually set data length\n\t\tif (this._totalDataLength && this._totalDataLength >= 0) {\n\t\t\treturn this._totalDataLength;\n\t\t}\n\n\t\t// if empty dataset\n\t\tif (this.data && this.data.length === 1 && this.data[0].length === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * Used in `data`\n\t *\n\t * @protected\n\t * @type {Array<Array<TableItem>>}\n\t * @memberof TableModel\n\t */\n\tprotected _data: Array<Array<TableItem>> = [[]];\n\n\t/**\n\t * Returns how many rows is currently selected\n\t *\n\t * @returns {number}\n\t * @memberof TableModel\n\t */\n\tselectedRowsCount(): number {\n\t\tlet count = 0;\n\t\tif (this.rowsSelected) {\n\t\t\tthis.rowsSelected.forEach(rowSelected => {\n\t\t\t\tif (rowSelected) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn count;\n\t}\n\n\t/**\n\t * Returns how many rows is currently expanded\n\t *\n\t * @returns {number}\n\t * @memberof TableModel\n\t */\n\texpandedRowsCount(): number {\n\t\tlet count = 0;\n\t\tif (this.rowsExpanded) {\n\t\t\tthis.rowsExpanded.forEach(rowExpanded => {\n\t\t\t\tif (rowExpanded) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn count;\n\t}\n\n\t/**\n\t * Returns `index`th row of the table.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {number} index\n\t * @returns {Array<TableItem>}\n\t * @memberof TableModel\n\t */\n\trow(index: number): Array<TableItem> {\n\t\treturn this.data[this.realRowIndex(index)];\n\t}\n\n\t/**\n\t * Adds a row to the `index`th row or appends to table if index not provided.\n\t *\n\t * If row is shorter than other rows or not provided, it will be padded with\n\t * empty `TableItem` elements.\n\t *\n\t * If row is longer than other rows, others will be extended to match so no data is lost.\n\t *\n\t * If called on an empty table with no parameters, it creates a 1x1 table.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {Array<TableItem>} row\n\t * @param {number} [index]\n\t * @memberof TableModel\n\t */\n\taddRow(row?: Array<TableItem>, index?: number) {\n\t\t// if table empty create table with row\n\t\tif (!this.data || this.data.length === 0 || this.data[0].length === 0) {\n\t\t\tlet newData = new Array<Array<TableItem>>();\n\t\t\tnewData.push(row ? row : [new TableItem()]); // row or one empty one column row\n\t\t\tthis.data = newData;\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet realRow = row;\n\t\tconst columnCount = this.data[0].length;\n\n\t\tif (row == null) {\n\t\t\trealRow = new Array<TableItem>();\n\t\t\tfor (let i = 0; i < columnCount; i++) {\n\t\t\t\trealRow.push(new TableItem());\n\t\t\t}\n\t\t}\n\n\t\tif (realRow.length < columnCount) {\n\t\t\t// extend the length of realRow\n\t\t\tconst difference = columnCount - realRow.length;\n\t\t\tfor (let i = 0; i < difference; i++) {\n\t\t\t\trealRow.push(new TableItem());\n\t\t\t}\n\t\t} else if (realRow.length > columnCount) {\n\t\t\t// extend the length of header\n\t\t\tlet difference = realRow.length - this.header.length;\n\t\t\tfor (let j = 0; j < difference; j++) {\n\t\t\t\tthis.header.push(new TableHeaderItem());\n\t\t\t}\n\t\t\t// extend the length of every other row\n\t\t\tfor (let i = 0; i < this.data.length; i++) {\n\t\t\t\tlet currentRow = this.data[i];\n\t\t\t\tdifference = realRow.length - currentRow.length;\n\t\t\t\tfor (let j = 0; j < difference; j++) {\n\t\t\t\t\tcurrentRow.push(new TableItem());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (index == null) {\n\t\t\tthis.data.push(realRow);\n\n\t\t\t// update rowsSelected property for length\n\t\t\tthis.rowsSelected.push(false);\n\n\t\t\t// update rowsExpanded property for length\n\t\t\tthis.rowsExpanded.push(false);\n\n\t\t\t// update rowsContext property for length\n\t\t\tthis.rowsContext.push(undefined);\n\n\t\t\t// update rowsClass property for length\n\t\t\tthis.rowsClass.push(undefined);\n\t\t} else {\n\t\t\tconst ri = this.realRowIndex(index);\n\t\t\tthis.data.splice(ri, 0, realRow);\n\n\t\t\t// update rowsSelected property for length\n\t\t\tthis.rowsSelected.splice(ri, 0, false);\n\n\t\t\t// update rowsExpanded property for length\n\t\t\tthis.rowsExpanded.splice(ri, 0, false);\n\n\t\t\t// update rowsContext property for length\n\t\t\tthis.rowsContext.splice(ri, 0, undefined);\n\n\t\t\t// update rowsClass property for length\n\t\t\tthis.rowsClass.splice(ri, 0, undefined);\n\t\t}\n\n\t\tthis.dataChange.emit();\n\t}\n\n\t/**\n\t * Deletes `index`th row.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {number} index\n\t * @memberof TableModel\n\t */\n\tdeleteRow(index: number) {\n\t\tconst rri = this.realRowIndex(index);\n\t\tthis.data.splice(rri, 1);\n\t\tthis.rowsSelected.splice(rri, 1);\n\t\tthis.rowsExpanded.splice(rri, 1);\n\t\tthis.rowsContext.splice(rri, 1);\n\t\tthis.rowsClass.splice(rri, 1);\n\n\t\tthis.dataChange.emit();\n\t}\n\n\thasExpandableRows() {\n\t\treturn this.data.some(data => data.some(d => d.expandedData)); // checking for some in 2D array\n\t}\n\n\tisRowExpandable(index: number) {\n\t\treturn this.data[index].some(d => d.expandedData);\n\t}\n\n\t/**\n\t * Returns `index`th column of the table.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {number} index\n\t * @returns {Array<TableItem>}\n\t * @memberof TableModel\n\t */\n\tcolumn(index: number): Array<TableItem> {\n\t\tlet column = new Array<TableItem>();\n\t\tconst ri = this.realColumnIndex(index);\n\t\tconst rc = this.data.length;\n\n\t\tfor (let i = 0; i < rc; i++) {\n\t\t\tconst row = this.data[i];\n\t\t\tcolumn.push(row[ri]);\n\t\t}\n\n\t\treturn column;\n\t}\n\n\t/**\n\t * Adds a column to the `index`th column or appends to table if index not provided.\n\t *\n\t * If column is shorter than other columns or not provided, it will be padded with\n\t * empty `TableItem` elements.\n\t *\n\t * If column is longer than other columns, others will be extended to match so no data is lost.\n\t *\n\t * If called on an empty table with no parameters, it creates a 1x1 table.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {Array<TableItem>} column\n\t * @param {number} [index]\n\t * @memberof TableModel\n\t */\n\taddColumn(column?: Array<TableItem>, index?: number) {\n\t\t// if table empty create table with row\n\t\tif (!this.data || this.data.length === 0 || this.data[0].length === 0) {\n\t\t\tlet newData = new Array<Array<TableItem>>();\n\t\t\tif (column == null) {\n\t\t\t\tnewData.push([new TableItem()]);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < column.length; i++) {\n\t\t\t\t\tlet item = column[i];\n\t\t\t\t\tnewData.push([item]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.data = newData;\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet rc = this.data.length; // row count\n\t\tlet ci = this.realColumnIndex(index);\n\n\t\t// append missing rows\n\t\tfor (let i = 0; column != null && i < column.length - rc; i++) {\n\t\t\tthis.addRow();\n\t\t}\n\t\trc = this.data.length;\n\t\tif (index == null) {\n\t\t\t// append to end\n\t\t\tfor (let i = 0; i < rc; i++) {\n\t\t\t\tlet row = this.data[i];\n\t\t\t\trow.push(column == null || column[i] == null ? new TableItem() : column[i]);\n\t\t\t}\n\t\t\t// update header if not already set by user\n\t\t\tif (this.header.length < this.data[0].length) {\n\t\t\t\tthis.header.push(new TableHeaderItem());\n\t\t\t}\n\t\t} else {\n\t\t\tif (index >= this.data[0].length) {\n\t\t\t\t// if trying to append\n\t\t\t\tci++;\n\t\t\t}\n\t\t\t// insert\n\t\t\tfor (let i = 0; i < rc; i++) {\n\t\t\t\tlet row = this.data[i];\n\t\t\t\trow.splice(ci, 0, column == null || column[i] == null ? new TableItem() : column[i]);\n\t\t\t}\n\t\t\t// update header if not already set by user\n\t\t\tif (this.header.length < this.data[0].length) {\n\t\t\t\tthis.header.splice(ci, 0, new TableHeaderItem());\n\t\t\t}\n\t\t}\n\n\t\tthis.dataChange.emit();\n\t}\n\n\t/**\n\t * Deletes `index`th column.\n\t *\n\t * Negative index starts from the end. -1 being the last element.\n\t *\n\t * @param {number} index\n\t * @memberof TableModel\n\t */\n\tdeleteColumn(index: number) {\n\t\tconst rci = this.realColumnIndex(index);\n\t\tconst rowCount = this.data.length;\n\t\tfor (let i = 0; i < rowCount; i++) {\n\t\t\tthis.data[i].splice(rci, 1);\n\t\t}\n\t\t// update header if not already set by user\n\t\tif (this.header.length > this.data[0].length) {\n\t\t\tthis.header.splice(rci, 1);\n\t\t}\n\n\t\tthis.dataChange.emit();\n\t}\n\n\tmoveColumn(indexFrom: number, indexTo: number) {\n\t\tconst headerFrom = this.header[indexFrom];\n\n\t\tthis.addColumn(this.column(indexFrom), indexTo);\n\t\tthis.deleteColumn(indexFrom + (indexTo < indexFrom ? 1 : 0));\n\n\t\tthis.header[indexTo + (indexTo > indexFrom ? -1 : 0)] = headerFrom;\n\t}\n\n\t/**\n\t * Sorts the data currently present in the model based on `compare()`\n\t *\n\t * Direction is set by `ascending` and `descending` properties of `TableHeaderItem`\n\t * in `index`th column.\n\t *\n\t * @param {number} index The column based on which it's sorting\n\t * @memberof TableModel\n\t */\n\tsort(index: number) {\n\t\tthis.pushRowStateToModelData();\n\t\tthis.data.sort((a, b) => (this.header[index].descending ? -1 : 1) * this.header[index].compare(a[index], b[index]));\n\t\tthis.popRowStateFromModelData();\n\t\tthis.header.forEach(column => column.sorted = false);\n\t\tthis.header[index].sorted = true;\n\t}\n\n\t/**\n\t * Appends `rowsSelected` and `rowsExpanded` info to model data.\n\t *\n\t * When sorting rows, do this first so information about row selection\n\t * gets sorted with the other row info.\n\t *\n\t * Call `popRowSelectionFromModelData()` after sorting to make everything\n\t * right with the world again.\n\t *\n\t * @memberof TableModel\n\t */\n\tpushRowStateToModelData() {\n\t\tfor (let i = 0; i < this.data.length; i++) {\n\t\t\tconst rowSelectedMark = new TableItem();\n\t\t\trowSelectedMark.data = this.rowsSelected[i];\n\t\t\tthis.data[i].push(rowSelectedMark);\n\n\t\t\tconst rowExpandedMark = new TableItem();\n\t\t\trowExpandedMark.data = this.rowsExpanded[i];\n\t\t\tthis.data[i].push(rowExpandedMark);\n\n\t\t\tconst rowContext = new TableItem();\n\t\t\trowContext.data = this.rowsContext[i];\n\t\t\tthis.data[i].push(rowContext);\n\n\t\t\tconst rowClass = new TableItem();\n\t\t\trowClass.data = this.rowsClass[i];\n\t\t\tthis.data[i].push(rowClass);\n\t\t}\n\t}\n\n\t/**\n\t * Restores `rowsSelected` from data pushed by `pushRowSelectionToModelData()`\n\t *\n\t * Call after sorting data (if you previously pushed to maintain selection order)\n\t * to make everything right with the world again.\n\t *\n\t * @memberof TableModel\n\t */\n\tpopRowStateFromModelData() {\n\t\tfor (let i = 0; i < this.data.length; i++) {\n\t\t\tthis.rowsClass[i] = this.data[i].pop().data;\n\t\t\tthis.rowsContext[i] = this.data[i].pop().data;\n\t\t\tthis.rowsExpanded[i] = !!this.data[i].pop().data;\n\t\t\tthis.rowsSelected[i] = !!this.data[i].pop().data;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if row is filtered out.\n\t *\n\t * @param {number} index\n\t * @returns {boolean} true if any of the filters in header filters out the `index`th row\n\t * @memberof TableModel\n\t */\n\tisRowFiltered(index: number) {\n\t\tconst ind = this.realRowIndex(index);\n\t\treturn this.header.some((item, i) => item.filter(this.row(ind)[i]));\n\t}\n\n\t/**\n\t * Select/deselect `index`th row based on value\n\t *\n\t * @param index\n\t * @param value\n\t */\n\tselectRow(index, value = true) {\n\t\tthis.rowsSelected[index] = value;\n\t\tthis.rowsSelectedChange.emit(index);\n\t}\n\n\t/**\n\t * Expands/Collapses `index`th row based on value\n\t *\n\t * @param index\n\t * @param value\n\t */\n\texpandRow(index, value = true) {\n\t\tthis.rowsExpanded[index] = value;\n\t\tthis.rowsExpandedChange.emit(index);\n\t}\n\n\t/**\n\t * Gets the true index of a row based on it's relative position.\n\t * Like in Python, positive numbers start from the top and\n\t * negative numbers start from the bottom.\n\t *\n\t * @protected\n\t * @param {number} index\n\t * @returns {number}\n\t * @memberof TableModel\n\t */\n\tprotected realRowIndex(index: number): number {\n\t\treturn this.realIndex(index, this.data.length);\n\t}\n\n\t/**\n\t * Gets the true index of a column based on it's relative position.\n\t * Like in Python, positive numbers start from the top and\n\t * negative numbers start from the bottom.\n\t *\n\t * @protected\n\t * @param {number} index\n\t * @returns {number}\n\t * @memberof TableModel\n\t */\n\tprotected realColumnIndex(index: number): number {\n\t\treturn this.realIndex(index, this.data[0].length);\n\t}\n\n\t/**\n\t * Generic function to calculate the real index of something.\n\t * Used by `realRowIndex()` and `realColumnIndex()`\n\t *\n\t * @protected\n\t * @param {number} index\n\t * @param {number} length\n\t * @returns {number}\n\t * @memberof TableModel\n\t */\n\tprotected realIndex(index: number, length: number): number {\n\t\tif (index == null) {\n\t\t\treturn length - 1;\n\t\t} else if (index >= 0) {\n\t\t\treturn index >= length ? length - 1 : index;\n\t\t} else {\n\t\t\treturn -index >= length ? 0 : length + index;\n\t\t}\n\t}\n}\n","import { TableModel } from \"../table-model.class\";\nimport { Component, Input } from \"@angular/core\";\nimport { I18n, Overridable } from \"../../i18n/i18n.module\";\n\n/**\n * The table toolbar is reserved for global table actions such as table settings, complex filter, export, or editing table data.\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-table-toolbar [model]=\"model\">\n *\t\t<ibm-table-toolbar-actions>\n *\t\t\t<button ibmButton=\"primary\">\n *\t\t\t\tDelete\n *\t\t\t\t<ibm-icon-delete16 class=\"bx--btn__icon\"></ibm-icon-delete16>\n *\t\t\t</button>\n *\t\t\t<button ibmButton=\"primary\">\n *\t\t\t\tSave\n *\t\t\t\t<ibm-icon-save16 class=\"bx--btn__icon\"></ibm-icon-save16>\n *\t\t\t</button>\n *\t\t\t<button ibmButton=\"primary\">\n *\t\t\t\tDownload\n *\t\t\t\t<ibm-icon-download16 class=\"bx--btn__icon\"></ibm-icon-download16>\n *\t\t\t</button>\n *\t\t</ibm-table-toolbar-actions>\n *\t\t\t<ibm-table-toolbar-content>\n *\t\t\t<ibm-table-toolbar-search [expandable]=\"true\"></ibm-table-toolbar-search>\n *\t\t\t<button ibmButton=\"toolbar-action\">\n *\t\t\t\t<ibm-icon-settings16 class=\"bx--toolbar-action__icon\"></ibm-icon-settings16>\n *\t\t\t</button>\n *\t\t\t<button ibmButton=\"primary\" size=\"sm\">\n *\t\t\t\tPrimary Button\n *\t\t\t\t<ibm-icon-add20 class=\"bx--btn__icon\"></ibm-icon-add20>\n *\t\t\t</button>\n *\t\t</ibm-table-toolbar-content>\n *\t</ibm-table-toolbar>\n * ```\n *\n */\n@Component({\n\tselector: \"ibm-table-toolbar\",\n\ttemplate: `\n\t<section class=\"bx--table-toolbar\">\n\t\t<div\n\t\t\tclass=\"bx--batch-actions\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--batch-actions--active': selected\n\t\t\t}\"\n\t\t\t[attr.aria-label]=\"actionBarLabel.subject | async\">\n\t\t\t<div class=\"bx--action-list\">\n\t\t\t\t<ng-content select=\"ibm-table-toolbar-actions\"></ng-content>\n\t\t\t\t<button ibmButton=\"primary\" class=\"bx--batch-summary__cancel\" (click)=\"onCancel()\">{{_cancelText.subject | async}}</button>\n\t\t\t</div>\n\t\t\t<div class=\"bx--batch-summary\">\n\t\t\t\t<p class=\"bx--batch-summary__para\">\n\t\t\t\t\t<span>{{count}}</span> items selected\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<ng-content></ng-content>\n\t</section>\n\t`\n})\nexport class TableToolbar {\n\t@Input() model: TableModel;\n\n\t@Input() set ariaLabel (value: { ACTION_BAR: string }) {\n\t\tthis.actionBarLabel.override(value.ACTION_BAR);\n\t}\n\t@Input() set cancelText(value: { CANCEL: string }) {\n\t\tthis._cancelText.override(value.CANCEL);\n\t}\n\tget cancelText(): { CANCEL: string } {\n\t\treturn { CANCEL: this._cancelText.value as string };\n\t}\n\tactionBarLabel = this.i18n.getOverridable(\"TABLE_TOOLBAR.ACTION_BAR\");\n\t_cancelText = this.i18n.getOverridable(\"TABLE_TOOLBAR.CANCEL\");\n\n\tconstructor(protected i18n: I18n) {}\n\n\tget count() {\n\t\treturn this.model.totalDataLength > 0 ? this.model.rowsSelected.reduce((previous, current) => previous + (current ? 1 : 0), 0) : 0;\n\t}\n\tget selected() {\n\t\treturn this.model.totalDataLength > 0 ? this.model.rowsSelected.some(item => item) : false;\n\t}\n\n\tonCancel() {\n\t\tfor (let i = 0; i < this.model.rowsSelected.length; i++) {\n\t\t\tthis.model.selectRow(i, false);\n\t\t}\n\t}\n}\n","import { Component, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-table-container\",\n\ttemplate: `<ng-content></ng-content>`\n})\nexport class TableContainer {\n\t@HostBinding(\"class.bx--data-table-container\") containerClass = true;\n}\n","import { Component, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-table-header\",\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`\n})\nexport class TableHeader {\n\t@HostBinding(\"class.bx--data-table-header\") headerClass = true;\n\t@HostBinding(\"style.display\") displayStyle = \"block\";\n}\n","import { Directive, HostBinding } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[ibmTableHeaderTitle]\"\n})\nexport class TableHeaderTitle {\n\t@HostBinding(\"class.bx--data-table-header__title\") titleClass = true;\n}\n","import { Directive, HostBinding } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[ibmTableHeaderDescription]\"\n})\nexport class TableHeaderDescription {\n\t@HostBinding(\"class.bx--data-table-header__description\") descriptionClass = true;\n}\n","import { Component, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-table-toolbar-actions\",\n\ttemplate: `<ng-content></ng-content>`\n})\nexport class TableToolbarActions {}\n","import { Search } from \"./../../search/search.component\";\nimport {\n\tComponent,\n\tHostBinding,\n\tInput,\n\tOnInit\n} from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-table-toolbar-search\",\n\ttemplateUrl: \"../../search/search.component.html\"\n})\nexport class TableToolbarSearch extends Search implements OnInit {\n\ttableSearch = true;\n\n\t@HostBinding(\"class.bx--toolbar-search-container-expandable\") @Input() expandable = false;\n\n\t@HostBinding(\"class.bx--toolbar-search-container-persistent\") get persistentClass() { return !this.expandable; }\n\n\t@HostBinding(\"class.bx--toolbar-search-container-active\") get activeClass() {\n\t\treturn this.active && (this.value !== null || this.value !== \"\");\n\t}\n\n\tngOnInit() {\n\t\tthis.size = \"sm\";\n\t\tif (this.expandable) {\n\t\t\tthis.toolbar = true;\n\t\t}\n\t}\n}\n","import { Component, HostBinding } from \"@angular/core\";\n\n@Component({\n\tselector: \"ibm-table-toolbar-content\",\n\ttemplate: `<ng-content></ng-content>`\n})\nexport class TableToolbarContent {\n\t@HostBinding(\"class.bx--toolbar-content\") class = true;\n}\n","import {\n\tDirective,\n\tInput,\n\tElementRef,\n\tHostListener,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { Table } from \"./table.component\";\nimport { getFocusElementList, tabbableSelectorIgnoreTabIndex } from \"../common/tab.service\";\n\n@Directive({\n\tselector: \"[ibmDataGridFocus]\"\n})\nexport class DataGridFocus {\n\t@Input() ibmDataGridFocus: boolean;\n\t@Input() set columnIndex(value: number) {\n\t\tconst shouldEmit = value !== this._columnIndex;\n\t\tthis._columnIndex = value;\n\t\tif (shouldEmit) {\n\t\t\tthis.columnIndexChange.emit(value);\n\t\t}\n\t}\n\tget columnIndex(): number {\n\t\treturn this._columnIndex;\n\t}\n\n\t@Output() columnIndexChange: EventEmitter<number> = new EventEmitter();\n\n\tprotected _columnIndex: number;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tfocus(element) {\n\t\tconst focusElementList = getFocusElementList(element, tabbableSelectorIgnoreTabIndex);\n\t\tif (element.firstElementChild && element.firstElementChild.classList.contains(\"bx--table-sort-v2\")) {\n\t\t\tfocusElementList[1].focus();\n\t\t} else if (focusElementList.length > 0) {\n\t\t\tfocusElementList[0].focus();\n\t\t} else {\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyDown(event: KeyboardEvent) {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst element = this.elementRef.nativeElement;\n\t\tconst rows = element.closest(\"table\").rows;\n\t\tconst closestTr = element.closest(\"tr\");\n\t\tlet rowIndex = Array.from(rows).indexOf(closestTr);\n\n\t\tconst headerRow = rows[0].querySelectorAll(\"th\");\n\n\t\tswitch (event.key) {\n\t\t\tcase \"Right\": // IE specific value\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tconst firstBodyRow = rows[1].querySelectorAll(\"td\");\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.nextElementSibling && Array.from(headerRow).indexOf(element.nextElementSibling) < firstBodyRow.length) {\n\t\t\t\t\tthis.columnIndex++;\n\t\t\t\t\tconst nextSibling = element.nextElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(nextSibling, 0);\n\t\t\t\t\tthis.focus(nextSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Left\": // IE specific value\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (element.previousElementSibling) {\n\t\t\t\t\tthis.columnIndex--;\n\t\t\t\t\tconst previousSibling = element.previousElementSibling;\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tTable.setTabIndex(previousSibling, 0);\n\t\t\t\t\tthis.focus(previousSibling);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Down\": // IE specific value\n\t\t\tcase \"ArrowDown\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (rowIndex < rows.length - 1) {\n\t\t\t\t\trowIndex++;\n\t\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td\");\n\t\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Up\": // IE specific value\n\t\t\tcase \"ArrowUp\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ((rowIndex === 1 && Array.from(headerRow).every(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length === 0)) ||\n\t\t\t\t\trowIndex === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\trowIndex--;\n\t\t\t\tconst row = rows[rowIndex].querySelectorAll(\"td, th\");\n\t\t\t\tif (rows[rowIndex].classList.contains(\"bx--expandable-row-v2\") && !rows[rowIndex].classList.contains(\"bx--parent-row-v2\")) {\n\t\t\t\t\tTable.setTabIndex(row[0], 0);\n\t\t\t\t\tthis.focus(row[0]);\n\t\t\t\t} else {\n\t\t\t\t\tif (this.columnIndex > row.length - 1) {\n\t\t\t\t\t\tthis.columnIndex = row.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tTable.setTabIndex(row[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(row[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.columnIndex = 0;\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tif (Array.from(headerRow).some(th => getFocusElementList(th, tabbableSelectorIgnoreTabIndex).length > 0)) {\n\t\t\t\t\t\tTable.setTabIndex(headerRow[0], 0);\n\t\t\t\t\t\tthis.focus(headerRow[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst firstBodyCell = rows[1].querySelectorAll(\"td\")[0];\n\t\t\t\t\t\tTable.setTabIndex(firstBodyCell, 0);\n\t\t\t\t\t\tthis.focus(firstBodyCell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst firstRowCell = rows[rowIndex].querySelectorAll(\"th, td\")[0];\n\t\t\t\t\tTable.setTabIndex(firstRowCell, 0);\n\t\t\t\t\tthis.focus(firstRowCell);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst lastRow = rows[rows.length - 1].querySelectorAll(\"td\");\n\t\t\t\tTable.setTabIndex(element, -1);\n\t\t\t\tif (event.ctrlKey) {\n\t\t\t\t\tthis.columnIndex = lastRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(lastRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(lastRow[this.columnIndex]);\n\t\t\t\t} else {\n\t\t\t\t\tconst currentRow = rows[rowIndex].querySelectorAll(\"th, td\");\n\t\t\t\t\tthis.columnIndex = currentRow.length - 1;\n\t\t\t\t\tTable.setTabIndex(currentRow[this.columnIndex], 0);\n\t\t\t\t\tthis.focus(currentRow[this.columnIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@HostListener(\"click\")\n\tonClick() {\n\t\tif (!this.ibmDataGridFocus) {\n\t\t\treturn;\n\t\t}\n\t\tconst focusElementList = getFocusElementList(this.elementRef.nativeElement.closest(\"table\"), tabbableSelectorIgnoreTabIndex);\n\t\tfocusElementList.forEach(element => Table.setTabIndex(element, -1));\n\t\tTable.setTabIndex(this.elementRef.nativeElement, 0);\n\t\tthis.focus(this.elementRef.nativeElement);\n\t}\n}\n","import {\n\tDirective,\n\tHostListener\n} from \"@angular/core\";\n\n@Directive({\n\tselector: \"[ibmExpandedRowHover]\"\n})\nexport class ExpandedRowHover {\n\t@HostListener(\"mouseenter\", [\"$event\"])\n\taddHoverClass(event) {\n\t\tevent.target.previousElementSibling.classList.add(\"bx--expandable-row--hover\");\n\t}\n\n\t@HostListener(\"mouseleave\", [\"$event\"])\n\tremoveHoverClass(event) {\n\t\tevent.target.previousElementSibling.classList.remove(\"bx--expandable-row--hover\");\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ChevronRight16Module } from \"@carbon/icons-angular/lib/chevron--right/16\";\nimport { Search16Module } from \"@carbon/icons-angular/lib/search/16\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\n\nimport { DialogModule } from \"./../dialog/dialog.module\";\nimport { NFormsModule } from \"./../forms/forms.module\";\nimport { ButtonModule, SearchModule } from \"../\";\n\nimport { Table } from \"./table.component\";\nimport { TableToolbar } from \"./toolbar/table-toolbar.component\";\nimport { TableContainer } from \"./table-container.component\";\nimport { TableHeader } from \"./header/table-header.component\";\nimport { TableHeaderTitle } from \"./header/table-header-title.directive\";\nimport { TableHeaderDescription } from \"./header/table-header-description.directive\";\nimport { TableToolbarActions } from \"./toolbar/table-toolbar-actions.component\";\nimport { TableToolbarSearch } from \"./toolbar/table-toolbar-search.component\";\nimport { TableToolbarContent } from \"./toolbar/table-toolbar-content.component\";\nimport { DataGridFocus } from \"./data-grid-focus.directive\";\nimport { ExpandedRowHover } from \"./expanded-row-hover.directive\";\n\nimport { I18nModule } from \"./../i18n/i18n.module\";\n\nexport { Table } from \"./table.component\";\nexport { TableModel } from \"./table-model.class\";\nexport { TableItem } from \"./table-item.class\";\nexport { TableHeaderItem } from \"./table-header-item.class\";\n\nexport { TableToolbar } from \"./toolbar/table-toolbar.component\";\nexport { TableContainer } from \"./table-container.component\";\nexport { TableHeader } from \"./header/table-header.component\";\nexport { TableHeaderTitle } from \"./header/table-header-title.directive\";\nexport { TableHeaderDescription } from \"./header/table-header-description.directive\";\nexport { TableToolbarActions } from \"./toolbar/table-toolbar-actions.component\";\nexport { TableToolbarSearch } from \"./toolbar/table-toolbar-search.component\";\nexport { TableToolbarContent } from \"./toolbar/table-toolbar-content.component\";\nexport { DataGridFocus } from \"./data-grid-focus.directive\";\nexport { ExpandedRowHover } from \"./expanded-row-hover.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tTable,\n\t\tTableToolbar,\n\t\tTableContainer,\n\t\tTableHeader,\n\t\tTableHeaderTitle,\n\t\tTableHeaderDescription,\n\t\tTableToolbarActions,\n\t\tTableToolbarSearch,\n\t\tTableToolbarContent,\n\t\tDataGridFocus,\n\t\tExpandedRowHover\n\t],\n\texports: [\n\t\tTable,\n\t\tTableToolbar,\n\t\tTableContainer,\n\t\tTableHeader,\n\t\tTableHeaderTitle,\n\t\tTableHeaderDescription,\n\t\tTableToolbarActions,\n\t\tTableToolbarSearch,\n\t\tTableToolbarContent,\n\t\tDataGridFocus,\n\t\tExpandedRowHover\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tNFormsModule,\n\t\tFormsModule,\n\t\tDialogModule,\n\t\tButtonModule,\n\t\tSearchModule,\n\t\tI18nModule,\n\t\tChevronRight16Module,\n\t\tSearch16Module,\n\t\tClose16Module\n\t]\n})\nexport class TableModule {}\n","import {\n\tComponent,\n\tOnInit,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tContentChild,\n\tTemplateRef,\n\tHostBinding\n} from \"@angular/core\";\n\n\nlet nextId = 0;\n\n/**\n* The `Tab` component is a child of the `Tabs` component.\n* It represents one `Tab` item and its content within a panel of other `Tab` items.\n*\n*\n* `Tab` takes a string or `TemplateRef` for the header, and any content for the body of the tab.\n* Disabled states should be handled by the application (ie. switch to the tab, but display some\n* indication as to _why_ the tab is disabled).\n*\n* When the tab is selected the `select` output will be triggered.\n* The `select` output will also be triggered for the active tab when the tabs are loaded or updated.\n*\n*\n* Tab with string header:\n*\n* ```html\n* <ibm-tab heading='tab1'>\n* \ttab 1 content\n* </ibm-tab>\n* ```\n*\n* Tab with custom header:\n*\n* ```html\n* <ng-template #tabHeading>\n* \t<ibm-icon\n* \t\ticon=\"facebook\"\n* \t\tsize=\"sm\"\n* \t\tstyle=\"margin-right: 7px;\">\n* \t</ibm-icon>\n* \tHello Tab 1\n* </ng-template>\n* <ibm-tabs>\n* \t<ibm-tab [heading]=\"tabHeading\">\n* \t\tTab 1 content <ibm-icon icon=\"alert\" size=\"lg\"></ibm-icon>\n* \t</ibm-tab>\n* \t<ibm-tab heading='Tab2'>\n* \t\tTab 2 content\n* \t</ibm-tab>\n* \t<ibm-tab heading='Tab3'>\n* \t\tTab 3 content\n* \t</ibm-tab>\n* </ibm-tabs>\n* ```\n*\n*\n* @export\n* @class Tab\n* @implements {OnInit}\n*/\n@Component({\n\tselector: \"ibm-tab\",\n\ttemplate: `\n\t\t<div\n\t\t\t[tabindex]=\"tabIndex\"\n\t\t\trole=\"tabpanel\"\n\t\t\t*ngIf=\"shouldRender()\"\n\t\t\t[ngStyle]=\"{'display': active ? null : 'none'}\"\n\t\t\t[attr.aria-labelledby]=\"id + '-header'\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t `\n})\nexport class Tab implements OnInit {\n\t/**\n\t * Boolean value reflects if the `Tab` is using a custom template for the heading.\n\t * Default value is false.\n\t */\n\tpublic headingIsTemplate = false;\n\n\t/**\n\t * The `Tab`'s title to be displayed or custom temaplate for the `Tab` heading.\n\t * @type {(string | TemplateRef<any>)}\n\t */\n\t@Input() heading: string | TemplateRef<any>;\n\t/**\n\t * Allows the user to pass data to the custom template for the `Tab` heading.\n\t */\n\t@Input() context: any;\n\t/**\n\t * Indicates whether the `Tab` is active/selected.\n\t * Determines whether it's `TabPanel` is rendered.\n\t */\n\t@Input() active = false;\n\t/**\n\t * Indicates whether or not the `Tab` item is disabled.\n\t */\n\t@Input() disabled = false;\n\n\t@Input() tabIndex = 0;\n\t// do we need id's?\n\t/**\n\t * Sets the id of the `Tab`. Will be uniquely generated if not provided.\n\t */\n\t@Input() id = `n-tab-${nextId++}`;\n\t/**\n\t * Set to true to have Tab items cached and not reloaded on tab switching.\n\t */\n\t@Input() cacheActive = false;\n\t/**\n\t * Value 'selected' to be emitted after a new `Tab` is selected.\n\t * @type {EventEmitter<void>}\n\t */\n\t@Output() selected: EventEmitter<void> = new EventEmitter<void>();\n\n\t/**\n\t * Used to set the id property on the element.\n\t */\n\t@HostBinding(\"attr.id\") attrClass = this.id;\n\n\t/**\n\t * Checks for custom heading template on initialization and updates the value\n\t * of the boolean 'headingIsTemplate'.\n\t */\n\tngOnInit() {\n\t\tif (this.heading instanceof TemplateRef) {\n\t\t\tthis.headingIsTemplate = true;\n\t\t}\n\t}\n\n\t/**\n\t * Emit the status of the `Tab`, specifically 'select' and 'selected' properties.\n\t */\n\tdoSelect() {\n\t\tthis.selected.emit();\n\t}\n\n\t/**\n \t* Returns value indicating whether this `Tab` should be rendered in a `TabPanel`.\n \t* @returns boolean\n \t*/\n\tshouldRender() {\n\t\treturn this.active || this.cacheActive;\n\t}\n}\n","import {\n\tComponent,\n\tQueryList,\n\tInput,\n\tHostListener,\n\tViewChild,\n\tContentChildren,\n\tAfterContentInit,\n\tViewChildren,\n\tElementRef\n} from \"@angular/core\";\n\nimport { Tab } from \"./tab.component\";\n\n\n/**\n * The `TabHeaders` component contains the `Tab` items and controls scroll functionality\n * if content has overflow.\n * @export\n * @class TabHeaders\n * @implements {AfterViewInit}\n */\n@Component({\n\tselector: \"ibm-tab-headers\",\n\ttemplate: `\n\t\t<nav\n\t\t\tclass=\"bx--tabs\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--skeleton': skeleton\n\t\t\t}\"\n\t\t\trole=\"navigation\"\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\">\n\t\t\t<div class=\"bx--tabs-trigger\" tabindex=\"0\" (click)=\"showTabList()\">\n\t\t\t\t<a href=\"javascript:void(0)\" class=\"bx--tabs-trigger-text\" tabindex=\"-1\">\n\t\t\t\t\t<ng-container *ngIf=\"!getSelectedTab().headingIsTemplate\">\n\t\t\t\t\t\t{{ getSelectedTab().heading }}\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t*ngIf=\"getSelectedTab().headingIsTemplate\"\n\t\t\t\t\t\t[ngTemplateOutlet]=\"getSelectedTab().heading\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</a>\n\t\t\t\t<svg width=\"10\" height=\"5\" viewBox=\"0 0 10 5\">\n\t\t\t\t\t<path d=\"M0 0l5 4.998L10 0z\" fill-rule=\"evenodd\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<ul\n\t\t\t\t#tabList\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'bx--tabs__nav--hidden': !tabListVisible\n\t\t\t\t}\"\n\t\t\t\tclass=\"bx--tabs__nav\"\n\t\t\t\trole=\"tablist\">\n\t\t\t\t<li role=\"presentation\">\n\t\t\t\t\t<ng-container *ngIf=\"contentBefore\" [ngTemplateOutlet]=\"contentBefore\"></ng-container>\n\t\t\t\t</li>\n\t\t\t\t<li\n\t\t\t\t\t*ngFor=\"let tab of tabs; let i = index;\"\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--tabs__nav-item--selected': tab.active,\n\t\t\t\t\t\t'bx--tabs__nav-item--disabled': tab.disabled\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"bx--tabs__nav-item\"\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t(click)=\"selectTab(tabItem, tab, i)\">\n\t\t\t\t\t<a\n\t\t\t\t\t\t#tabItem\n\t\t\t\t\t\t[attr.aria-selected]=\"tab.active\"\n\t\t\t\t\t\t[attr.tabindex]=\"(tab.active?0:-1)\"\n\t\t\t\t\t\t[attr.aria-controls]=\"tab.id\"\n\t\t\t\t\t\t(focus)=\"onTabFocus(tabItem, i)\"\n\t\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t\tid=\"{{tab.id}}-header\"\n\t\t\t\t\t\tclass=\"bx--tabs__nav-link\"\n\t\t\t\t\t\thref=\"javascript:void(0)\"\n\t\t\t\t\t\trole=\"tab\">\n\t\t\t\t\t\t<ng-container *ngIf=\"!tab.headingIsTemplate\">\n\t\t\t\t\t\t\t{{ tab.heading }}\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t*ngIf=\"tab.headingIsTemplate\"\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"tab.heading\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{$implicit: tab.context}\">\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<li role=\"presentation\">\n\t\t\t\t\t<ng-container *ngIf=\"contentAfter\" [ngTemplateOutlet]=\"contentAfter\"></ng-container>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</nav>\n\t `\n})\n\nexport class TabHeaders implements AfterContentInit {\n\t/**\n\t * List of `Tab` components.\n\t */\n\t// disable the next line because we need to rename the input\n\t// tslint:disable-next-line\n\t@Input(\"tabs\") tabInput: QueryList<Tab>;\n\t/**\n\t * Set to 'true' to have `Tab` items cached and not reloaded on tab switching.\n\t * Duplicate from `n-tabs` to support standalone headers\n\t */\n\t@Input() cacheActive = false;\n\t/**\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\n\t */\n\t@Input() followFocus: boolean;\n\t/**\n\t * Set to `true` to put tabs in a loading state.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Sets the aria label on the nav element.\n\t */\n\t@Input() ariaLabel: string;\n\t/**\n\t * Sets the aria labelledby on the nav element.\n\t */\n\t@Input() ariaLabelledby: string;\n\n\t@Input() contentBefore;\n\t@Input() contentAfter;\n\n\t/**\n\t * Gets the Unordered List element that holds the `Tab` headings from the view DOM.\n\t */\n\t@ViewChild(\"tabList\") headerContainer;\n\t/**\n\t * ContentChild of all the n-tabs\n\t */\n\t@ContentChildren(Tab) tabQuery: QueryList<Tab>;\n\t/**\n\t * set to tabQuery if tabInput is empty\n\t */\n\tpublic tabs: QueryList<Tab>;\n\t/**\n\t * The index of the first visible tab.\n\t */\n\tpublic firstVisibleTab = 0;\n\t/**\n\t * The DOM element containing the `Tab` headings displayed.\n\t */\n\t@ViewChildren(\"tabItem\") allTabHeaders: QueryList<ElementRef>;\n\t/**\n\t * Controls the manual focusing done by tabbing through headings.\n\t */\n\tpublic currentSelectedTab: number;\n\tpublic tabListVisible = false;\n\n\t// keyboard accessibility\n\t/**\n\t * Controls the keydown events used for tabbing through the headings.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\tkeyboardInput(event) {\n\t\tlet tabsArray = Array.from<any>(this.tabs);\n\n\t\t// \"Right\" is an ie11 specific value\n\t\tif (event.key === \"Right\" || event.key === \"ArrowRight\") {\n\t\t\tif (this.currentSelectedTab < this.allTabHeaders.length - 1) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus) {\n\t\t\t\t\tthis.selectTab(event.target, tabsArray[this.currentSelectedTab + 1], this.currentSelectedTab);\n\t\t\t\t}\n\t\t\t\tthis.allTabHeaders.toArray()[this.currentSelectedTab + 1].nativeElement.focus();\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus) {\n\t\t\t\t\tthis.selectTab(event.target, tabsArray[0], 0);\n\t\t\t\t}\n\t\t\t\tthis.allTabHeaders.first.nativeElement.focus();\n\t\t\t}\n\t\t}\n\n\t\t// \"Left\" is an ie11 specific value\n\t\tif (event.key === \"Left\" || event.key === \"ArrowLeft\") {\n\t\t\tif (this.currentSelectedTab > 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus) {\n\t\t\t\t\tthis.selectTab(event.target, tabsArray[this.currentSelectedTab - 1], this.currentSelectedTab);\n\t\t\t\t}\n\t\t\t\tthis.allTabHeaders.toArray()[this.currentSelectedTab - 1].nativeElement.focus();\n\t\t\t} else {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (this.followFocus) {\n\t\t\t\t\tthis.selectTab(event.target, tabsArray[this.allTabHeaders.length - 1], this.allTabHeaders.length);\n\t\t\t\t}\n\t\t\t\tthis.allTabHeaders.toArray()[this.allTabHeaders.length - 1].nativeElement.focus();\n\t\t\t}\n\t\t}\n\n\t\tif (event.key === \"Home\") {\n\t\t\tevent.preventDefault();\n\t\t\tif (this.followFocus) {\n\t\t\t\tthis.selectTab(event.target, tabsArray[0], 0);\n\t\t\t}\n\t\t\tthis.allTabHeaders.toArray()[0].nativeElement.focus();\n\t\t}\n\n\t\tif (event.key === \"End\") {\n\t\t\tevent.preventDefault();\n\t\t\tif (this.followFocus) {\n\t\t\t\tthis.selectTab(event.target, tabsArray[this.allTabHeaders.length - 1], this.allTabHeaders.length);\n\t\t\t}\n\t\t\tthis.allTabHeaders.toArray()[this.allTabHeaders.length - 1].nativeElement.focus();\n\t\t}\n\n\t\t// `\"Spacebar\"` is IE11 specific value\n\t\tif ((event.key === \" \" || event.key === \"Spacebar\") && !this.followFocus) {\n\t\t\tthis.selectTab(event.target, tabsArray[this.currentSelectedTab], this.currentSelectedTab);\n\t\t}\n\t}\n\n\t@HostListener(\"focusout\", [\"$event\"])\n\tfocusOut(event) {\n\t\tif (this.tabListVisible && event.relatedTarget === null) {\n\t\t\tthis.tabListVisible = false;\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tif (!this.tabInput) {\n\t\t\tthis.tabs = this.tabQuery;\n\t\t} else {\n\t\t\tthis.tabs = this.tabInput;\n\t\t}\n\n\t\tthis.tabs.forEach(tab => tab.cacheActive = this.cacheActive);\n\t\tthis.tabs.changes.subscribe(() => {\n\t\t\tthis.setFirstTab();\n\t\t});\n\t\tthis.setFirstTab();\n\t}\n\n\t/**\n\t * Controls manually focusing tabs.\n\t */\n\tpublic onTabFocus(ref: HTMLElement, index: number) {\n\t\tthis.currentSelectedTab = index;\n\t\t// reset scroll left because we're already handling it\n\t\tthis.headerContainer.nativeElement.parentElement.scrollLeft = 0;\n\t}\n\n\tpublic getSelectedTab(): any {\n\t\tconst selected = this.tabs.find(tab => tab.active);\n\t\tif (selected) {\n\t\t\treturn selected;\n\t\t}\n\t\treturn {headingIsTemplate: false, heading: \"\"};\n\t}\n\n\tpublic showTabList() {\n\t\tthis.tabListVisible = true;\n\t}\n\n\t/**\n\t * Selects `Tab` 'tab' and moves it into view on the view DOM if it is not already.\n\t */\n\tpublic selectTab(ref: HTMLElement, tab: Tab, tabIndex: number) {\n\t\tif (tab.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// hide the tablist on mobile\n\t\tthis.tabListVisible = false;\n\t\tthis.currentSelectedTab = tabIndex;\n\t\tthis.tabs.forEach(_tab => _tab.active = false);\n\t\ttab.active = true;\n\t\ttab.doSelect();\n\t}\n\n\t/**\n\t * Determines which `Tab` is initially selected.\n\t */\n\tprotected setFirstTab() {\n\t\tsetTimeout(() => {\n\t\t\tlet firstTab = this.tabs.find(tab => tab.active);\n\t\t\tif (!firstTab && this.tabs.first) {\n\t\t\t\tfirstTab = this.tabs.first;\n\t\t\t\tfirstTab.active = true;\n\t\t\t}\n\t\t\tif (firstTab) {\n\t\t\t\tfirstTab.doSelect();\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tAfterContentInit,\n\tContentChild,\n\tQuery\n} from \"@angular/core\";\nimport { Tab } from \"./tab.component\";\nimport { TabHeaders } from \"./tab-headers.component\";\n\n\n/**\n * Build out your application's tabs using this component.\n * This is the parent of the `Tab` and `TabHeader` components.\n *\n * [See demo](../../?path=/story/tabs--basic)\n *\n * `Tabs` expects a set of `n-tab` elements\n *\n * ```html\n * <ibm-tabs>\n * \t<ibm-tab heading='tab1'>\n * \t\ttab 1 content\n * \t</ibm-tab>\n * \t<ibm-tab heading='tab1'>\n * \t\ttab 2 content\n * \t</ibm-tab>\n * \t<!-- ... -->\n * \t<ibm-tab heading='tab1'>\n * \t\ttab n content\n * \t</ibm-tab>\n * </ibm-tabs>\n * ```\n *\n * <example-url>../../iframe.html?id=tabs--basic</example-url>\n *\n * @export\n * @class Tabs\n * @implements {AfterContentInit}\n */\n@Component({\n\tselector: \"ibm-tabs\",\n\ttemplate: `\n\t\t\t<ibm-tab-headers\n\t\t\t\t*ngIf=\"hasTabHeaders() && position === 'top'\"\n\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t[tabs]=\"tabs\"\n\t\t\t\t[followFocus]=\"followFocus\"\n\t\t\t\t[cacheActive]=\"cacheActive\"\n\t\t\t\t[contentBefore]=\"before\"\n\t\t\t\t[contentAfter]=\"after\"\n\t\t\t\t[ariaLabel]=\"ariaLabel\"\n\t\t\t\t[ariaLabelledby]=\"ariaLabelledby\">\n\t\t\t</ibm-tab-headers>\n\t\t\t<ng-content></ng-content>\n\t\t\t<ng-template #before>\n\t\t\t\t<ng-content select=\"[before]\"></ng-content>\n\t\t\t</ng-template>\n\t\t\t<ng-template #after>\n\t\t\t\t<ng-content select=\"[after]\"></ng-content>\n\t\t\t</ng-template>\n\t\t\t<ibm-tab-headers\n\t\t\t\t*ngIf=\"hasTabHeaders() && position === 'bottom'\"\n\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t[tabs]=\"tabs\"\n\t\t\t\t[cacheActive]=\"cacheActive\">\n\t\t\t</ibm-tab-headers>\n\t `\n})\nexport class Tabs implements AfterContentInit {\n\t/**\n\t * Takes either the string value 'top' or 'bottom' to place TabHeader\n\t * relative to the `TabPanel`s.\n\t */\n\t@Input() position: \"top\" | \"bottom\" = \"top\";\n\t/**\n\t * Set to 'true' to have `Tab` items cached and not reloaded on tab switching.\n\t */\n\t@Input() cacheActive = false;\n\t/**\n\t * Set to 'true' to have tabs automatically activated and have their content displayed when they receive focus.\n\t */\n\t@Input() followFocus = true;\n\t/**\n\t * Set to `true` to put tabs in a loading state.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` to have the tabIndex of the all tabpanels be -1.\n\t */\n\t@Input() isNavigation = false;\n\t/**\n\t * Sets the aria label on the `TabHeader`s nav element.\n\t */\n\t@Input() ariaLabel: string;\n\t/**\n\t * Sets the aria labelledby on the `TabHeader`s nav element.\n\t */\n\t@Input() ariaLabelledby: string;\n\n\t/**\n\t * Maintains a `QueryList` of the `Tab` elements and updates if `Tab`s are added or removed.\n\t */\n\t@ContentChildren(Tab, { descendants: false }) tabs: QueryList<Tab>;\n\t/**\n\t * Content child of the projected header component\n\t */\n\t@ContentChild(TabHeaders) tabHeaders;\n\n\t/**\n\t * After content is initialized update `Tab`s to cache (if turned on) and set the initial\n\t * selected Tab item.\n\t */\n\tngAfterContentInit() {\n\t\tif (this.tabHeaders) {\n\t\t\tthis.tabHeaders.cacheActive = this.cacheActive;\n\t\t}\n\n\t\tthis.tabs.forEach(tab => {\n\t\t\ttab.tabIndex = this.isNavigation ? -1 : 0;\n\t\t});\n\t}\n\n\t/**\n\t * true if the n-tab's are passed directly to the component as children\n\t */\n\thasTabHeaders() {\n\t\treturn this.tabs.length > 0;\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Tabs } from \"./tabs.component\";\nimport { Tab } from \"./tab.component\";\nimport { TabHeaders } from \"./tab-headers.component\";\n\n\nexport { Tabs } from \"./tabs.component\";\nexport { Tab } from \"./tab.component\";\nexport { TabHeaders } from \"./tab-headers.component\";\n\n\n@NgModule({\n\tdeclarations: [\n\t\tTabs,\n\t\tTab,\n\t\tTabHeaders\n\t],\n\texports: [\n\t\tTabs,\n\t\tTab,\n\t\tTabHeaders\n\t],\n\timports: [\n\t\tCommonModule\n\t]\n})\nexport class TabsModule {}\n","import {\n\tComponent,\n\tInput,\n\tHostBinding\n} from \"@angular/core\";\n\n/**\n * Supported tag types for carbon v10\n */\nexport type TagType = \"red\" | \"magenta\" | \"purple\" | \"blue\" | \"cyan\" | \"teal\" | \"green\" | \"gray\" | \"cool-gray\" | \"warm-gray\";\n\n/**\n * Component that represents a tag for labelling/categorizing using keywords\n *\n * [See demo](../../?path=/story/tag--basic)\n *\n * <example-url>../../iframe.html?id=tag--basic</example-url>\n *\n * @export\n * @class Tag\n */\n@Component({\n\tselector: \"ibm-tag\",\n\ttemplate: `<ng-content></ng-content>`\n})\nexport class Tag {\n\t/**\n\t * type of the tag determines the styling\n\t *\n\t * Reference `TagType` for v9 applications, and `TagTypeExperimental` for v10/v9 experimental mode applications\n\t */\n\t@Input() type: TagType = \"gray\";\n\n\t@Input() class = \"\";\n\n\t@HostBinding(\"attr.class\") get attrClass() {\n\t\treturn `bx--tag bx--tag--${this.type} ${this.class}`;\n\t}\n}\n","import {\n\tComponent,\n\tOutput,\n\tEventEmitter,\n\tHostBinding\n} from \"@angular/core\";\nimport { Tag } from \"./tag.component\";\n\n@Component({\n\tselector: \"ibm-tag-filter\",\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t\t<svg\n\t\t\t(click)=\"close.emit()\"\n\t\t\tfocusable=\"false\"\n\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\tstyle=\"will-change: transform;\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-label=\"Clear filter\"\n\t\t\twidth=\"16\"\n\t\t\theight=\"16\"\n\t\t\tviewBox=\"0 0 16 16\"\n\t\t\trole=\"img\">\n\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t</svg>\n\t`\n})\nexport class TagFilter extends Tag {\n\t/**\n\t * Function for close/delete the tag\n\t */\n\t@Output() close = new EventEmitter<any>();\n\n\t@HostBinding(\"attr.class\") get attrClass() {\n\t\treturn `bx--tag bx--tag--filter bx--tag--${this.type} ${this.class}`;\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Close16Module } from \"@carbon/icons-angular/lib/close/16\";\n\nimport { Tag } from \"./tag.component\";\nimport { TagFilter } from \"./tag-filter.component\";\n\nexport * from \"./tag.component\";\n\n@NgModule({\n\tdeclarations: [ Tag, TagFilter ],\n\texports: [ Tag, TagFilter ],\n\timports: [ CommonModule, Close16Module ]\n})\nexport class TagModule { }\n","import {\n\tComponent,\n\tHostBinding\n} from \"@angular/core\";\n\n/**\n * Build application's tiles using this component.\n *\n * [See demo](../../?path=/story/tiles--basic)\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-tile>\n * \t\ttile content\n * </ibm-tile>\n * ```\n *\n * <example-url>../../iframe.html?id=tiles--basic</example-url>\n *\n * @export\n * @class Tile\n * @implements {OnInit}\n */\n@Component({\n\tselector: \"ibm-tile\",\n\ttemplate: `<ng-content></ng-content>`\n})\nexport class Tile {\n\t@HostBinding(\"class.bx--tile\") tileClass = true;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license Angular v6.1.0\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n\nimport { __values, __assign, __extends, __spread } from 'tslib';\nimport { Component, ɵisObservable, ɵisPromise, NgModuleRef, InjectionToken, NgModuleFactory, isDevMode, Attribute, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2, ChangeDetectorRef, ContentChildren, ComponentFactoryResolver, EventEmitter, Output, ViewContainerRef, Compiler, Injectable, Injector, NgModuleFactoryLoader, ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Inject, NgModule, NgProbeToken, Optional, SkipSelf, SystemJsNgModuleLoader, Version } from '@angular/core';\nimport { from, of, EmptyError, Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { concatAll, every, last, map, mergeAll, catchError, first, mergeMap, concatMap, reduce, filter } from 'rxjs/operators';\nimport { LocationStrategy, APP_BASE_HREF, HashLocationStrategy, LOCATION_INITIALIZED, Location, PathLocationStrategy, PlatformLocation, ViewportScroller } from '@angular/common';\nimport { ɵgetDOM } from '@angular/platform-browser';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Base for events the Router goes through, as opposed to events tied to a specific\n * Route. `RouterEvent`s will only be fired one time for any given navigation.\n *\n * Example:\n *\n * ```\n * class MyService {\n * constructor(public router: Router, logger: Logger) {\n * router.events.filter(e => e instanceof RouterEvent).subscribe(e => {\n * logger.log(e.id, e.url);\n * });\n * }\n * }\n * ```\n *\n * @experimental\n */\nvar RouterEvent = /** @class */ (function () {\n function RouterEvent(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url) {\n this.id = id;\n this.url = url;\n }\n return RouterEvent;\n}());\n/**\n * @description\n *\n * Represents an event triggered when a navigation starts.\n *\n *\n */\nvar NavigationStart = /** @class */ (function (_super) {\n __extends(NavigationStart, _super);\n function NavigationStart(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n navigationTrigger, \n /** @docsNotRequired */\n restoredState) {\n if (navigationTrigger === void 0) { \n /** @docsNotRequired */\n navigationTrigger = 'imperative'; }\n if (restoredState === void 0) { \n /** @docsNotRequired */\n restoredState = null; }\n var _this = _super.call(this, id, url) || this;\n _this.navigationTrigger = navigationTrigger;\n _this.restoredState = restoredState;\n return _this;\n }\n /** @docsNotRequired */\n NavigationStart.prototype.toString = function () { return \"NavigationStart(id: \" + this.id + \", url: '\" + this.url + \"')\"; };\n return NavigationStart;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents an event triggered when a navigation ends successfully.\n *\n *\n */\nvar NavigationEnd = /** @class */ (function (_super) {\n __extends(NavigationEnd, _super);\n function NavigationEnd(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n return _this;\n }\n /** @docsNotRequired */\n NavigationEnd.prototype.toString = function () {\n return \"NavigationEnd(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"')\";\n };\n return NavigationEnd;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents an event triggered when a navigation is canceled.\n *\n *\n */\nvar NavigationCancel = /** @class */ (function (_super) {\n __extends(NavigationCancel, _super);\n function NavigationCancel(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n reason) {\n var _this = _super.call(this, id, url) || this;\n _this.reason = reason;\n return _this;\n }\n /** @docsNotRequired */\n NavigationCancel.prototype.toString = function () { return \"NavigationCancel(id: \" + this.id + \", url: '\" + this.url + \"')\"; };\n return NavigationCancel;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents an event triggered when a navigation fails due to an unexpected error.\n *\n *\n */\nvar NavigationError = /** @class */ (function (_super) {\n __extends(NavigationError, _super);\n function NavigationError(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n error) {\n var _this = _super.call(this, id, url) || this;\n _this.error = error;\n return _this;\n }\n /** @docsNotRequired */\n NavigationError.prototype.toString = function () {\n return \"NavigationError(id: \" + this.id + \", url: '\" + this.url + \"', error: \" + this.error + \")\";\n };\n return NavigationError;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents an event triggered when routes are recognized.\n *\n *\n */\nvar RoutesRecognized = /** @class */ (function (_super) {\n __extends(RoutesRecognized, _super);\n function RoutesRecognized(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n _this.state = state;\n return _this;\n }\n /** @docsNotRequired */\n RoutesRecognized.prototype.toString = function () {\n return \"RoutesRecognized(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"', state: \" + this.state + \")\";\n };\n return RoutesRecognized;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents the start of the Guard phase of routing.\n *\n * @experimental\n */\nvar GuardsCheckStart = /** @class */ (function (_super) {\n __extends(GuardsCheckStart, _super);\n function GuardsCheckStart(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n _this.state = state;\n return _this;\n }\n GuardsCheckStart.prototype.toString = function () {\n return \"GuardsCheckStart(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"', state: \" + this.state + \")\";\n };\n return GuardsCheckStart;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents the end of the Guard phase of routing.\n *\n * @experimental\n */\nvar GuardsCheckEnd = /** @class */ (function (_super) {\n __extends(GuardsCheckEnd, _super);\n function GuardsCheckEnd(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state, \n /** @docsNotRequired */\n shouldActivate) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n _this.state = state;\n _this.shouldActivate = shouldActivate;\n return _this;\n }\n GuardsCheckEnd.prototype.toString = function () {\n return \"GuardsCheckEnd(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"', state: \" + this.state + \", shouldActivate: \" + this.shouldActivate + \")\";\n };\n return GuardsCheckEnd;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents the start of the Resolve phase of routing. The timing of this\n * event may change, thus it's experimental. In the current iteration it will run\n * in the \"resolve\" phase whether there's things to resolve or not. In the future this\n * behavior may change to only run when there are things to be resolved.\n *\n * @experimental\n */\nvar ResolveStart = /** @class */ (function (_super) {\n __extends(ResolveStart, _super);\n function ResolveStart(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n _this.state = state;\n return _this;\n }\n ResolveStart.prototype.toString = function () {\n return \"ResolveStart(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"', state: \" + this.state + \")\";\n };\n return ResolveStart;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents the end of the Resolve phase of routing. See note on\n * `ResolveStart` for use of this experimental API.\n *\n * @experimental\n */\nvar ResolveEnd = /** @class */ (function (_super) {\n __extends(ResolveEnd, _super);\n function ResolveEnd(\n /** @docsNotRequired */\n id, \n /** @docsNotRequired */\n url, \n /** @docsNotRequired */\n urlAfterRedirects, \n /** @docsNotRequired */\n state) {\n var _this = _super.call(this, id, url) || this;\n _this.urlAfterRedirects = urlAfterRedirects;\n _this.state = state;\n return _this;\n }\n ResolveEnd.prototype.toString = function () {\n return \"ResolveEnd(id: \" + this.id + \", url: '\" + this.url + \"', urlAfterRedirects: '\" + this.urlAfterRedirects + \"', state: \" + this.state + \")\";\n };\n return ResolveEnd;\n}(RouterEvent));\n/**\n * @description\n *\n * Represents an event triggered before lazy loading a route config.\n *\n * @experimental\n */\nvar RouteConfigLoadStart = /** @class */ (function () {\n function RouteConfigLoadStart(\n /** @docsNotRequired */\n route) {\n this.route = route;\n }\n RouteConfigLoadStart.prototype.toString = function () { return \"RouteConfigLoadStart(path: \" + this.route.path + \")\"; };\n return RouteConfigLoadStart;\n}());\n/**\n * @description\n *\n * Represents an event triggered when a route has been lazy loaded.\n *\n * @experimental\n */\nvar RouteConfigLoadEnd = /** @class */ (function () {\n function RouteConfigLoadEnd(\n /** @docsNotRequired */\n route) {\n this.route = route;\n }\n RouteConfigLoadEnd.prototype.toString = function () { return \"RouteConfigLoadEnd(path: \" + this.route.path + \")\"; };\n return RouteConfigLoadEnd;\n}());\n/**\n * @description\n *\n * Represents the start of end of the Resolve phase of routing. See note on\n * `ChildActivationEnd` for use of this experimental API.\n *\n * @experimental\n */\nvar ChildActivationStart = /** @class */ (function () {\n function ChildActivationStart(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n }\n ChildActivationStart.prototype.toString = function () {\n var path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return \"ChildActivationStart(path: '\" + path + \"')\";\n };\n return ChildActivationStart;\n}());\n/**\n * @description\n *\n * Represents the start of end of the Resolve phase of routing. See note on\n * `ChildActivationStart` for use of this experimental API.\n *\n * @experimental\n */\nvar ChildActivationEnd = /** @class */ (function () {\n function ChildActivationEnd(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n }\n ChildActivationEnd.prototype.toString = function () {\n var path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return \"ChildActivationEnd(path: '\" + path + \"')\";\n };\n return ChildActivationEnd;\n}());\n/**\n * @description\n *\n * Represents the start of end of the Resolve phase of routing. See note on\n * `ActivationEnd` for use of this experimental API.\n *\n * @experimental\n */\nvar ActivationStart = /** @class */ (function () {\n function ActivationStart(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n }\n ActivationStart.prototype.toString = function () {\n var path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return \"ActivationStart(path: '\" + path + \"')\";\n };\n return ActivationStart;\n}());\n/**\n * @description\n *\n * Represents the start of end of the Resolve phase of routing. See note on\n * `ActivationStart` for use of this experimental API.\n *\n * @experimental\n */\nvar ActivationEnd = /** @class */ (function () {\n function ActivationEnd(\n /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n }\n ActivationEnd.prototype.toString = function () {\n var path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return \"ActivationEnd(path: '\" + path + \"')\";\n };\n return ActivationEnd;\n}());\n/**\n * @description\n *\n * Represents a scrolling event.\n */\nvar Scroll = /** @class */ (function () {\n function Scroll(\n /** @docsNotRequired */\n routerEvent, \n /** @docsNotRequired */\n position, \n /** @docsNotRequired */\n anchor) {\n this.routerEvent = routerEvent;\n this.position = position;\n this.anchor = anchor;\n }\n Scroll.prototype.toString = function () {\n var pos = this.position ? this.position[0] + \", \" + this.position[1] : null;\n return \"Scroll(anchor: '\" + this.anchor + \"', position: '\" + pos + \"')\";\n };\n return Scroll;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This component is used internally within the router to be a placeholder when an empty\n * router-outlet is needed. For example, with a config such as:\n *\n * `{path: 'parent', outlet: 'nav', children: [...]}`\n *\n * In order to render, there needs to be a component on this config, which will default\n * to this `EmptyOutletComponent`.\n */\nvar EmptyOutletComponent = /** @class */ (function () {\n function EmptyOutletComponent() {\n }\n EmptyOutletComponent.decorators = [\n { type: Component, args: [{ template: \"<router-outlet></router-outlet>\" }] }\n ];\n return EmptyOutletComponent;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Name of the primary outlet.\n *\n *\n */\nvar PRIMARY_OUTLET = 'primary';\nvar ParamsAsMap = /** @class */ (function () {\n function ParamsAsMap(params) {\n this.params = params || {};\n }\n ParamsAsMap.prototype.has = function (name) { return this.params.hasOwnProperty(name); };\n ParamsAsMap.prototype.get = function (name) {\n if (this.has(name)) {\n var v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n };\n ParamsAsMap.prototype.getAll = function (name) {\n if (this.has(name)) {\n var v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n };\n Object.defineProperty(ParamsAsMap.prototype, \"keys\", {\n get: function () { return Object.keys(this.params); },\n enumerable: true,\n configurable: true\n });\n return ParamsAsMap;\n}());\n/**\n * Convert a `Params` instance to a `ParamMap`.\n *\n *\n */\nfunction convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\nvar NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\nfunction navigationCancelingError(message) {\n var error = Error('NavigationCancelingError: ' + message);\n error[NAVIGATION_CANCELING_ERROR] = true;\n return error;\n}\nfunction isNavigationCancelingError(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\n// Matches the route configuration (`route`) against the actual URL (`segments`).\nfunction defaultUrlMatcher(segments, segmentGroup, route) {\n var parts = route.path.split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' &&\n (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n var posParams = {};\n // Check each config part against the actual URL\n for (var index = 0; index < parts.length; index++) {\n var part = parts[index];\n var segment = segments[index];\n var isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n }\n else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return { consumed: segments.slice(0, parts.length), posParams: posParams };\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar LoadedRouterConfig = /** @class */ (function () {\n function LoadedRouterConfig(routes, module) {\n this.routes = routes;\n this.module = module;\n }\n return LoadedRouterConfig;\n}());\nfunction validateConfig(config, parentPath) {\n if (parentPath === void 0) { parentPath = ''; }\n // forEach doesn't iterate undefined values\n for (var i = 0; i < config.length; i++) {\n var route = config[i];\n var fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath);\n }\n}\nfunction validateNode(route, fullPath) {\n if (!route) {\n throw new Error(\"\\n Invalid configuration of route '\" + fullPath + \"': Encountered undefined route.\\n The reason might be an extra comma.\\n\\n Example:\\n const routes: Routes = [\\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\\n { path: 'dashboard', component: DashboardComponent },, << two commas\\n { path: 'detail/:id', component: HeroDetailComponent }\\n ];\\n \");\n }\n if (Array.isArray(route)) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': Array cannot be specified\");\n }\n if (!route.component && !route.children && !route.loadChildren &&\n (route.outlet && route.outlet !== PRIMARY_OUTLET)) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': a componentless route without children or loadChildren cannot have a named outlet set\");\n }\n if (route.redirectTo && route.children) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': redirectTo and children cannot be used together\");\n }\n if (route.redirectTo && route.loadChildren) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': redirectTo and loadChildren cannot be used together\");\n }\n if (route.children && route.loadChildren) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': children and loadChildren cannot be used together\");\n }\n if (route.redirectTo && route.component) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': redirectTo and component cannot be used together\");\n }\n if (route.path && route.matcher) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': path and matcher cannot be used together\");\n }\n if (route.redirectTo === void 0 && !route.component && !route.children && !route.loadChildren) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"'. One of the following must be provided: component, redirectTo, children or loadChildren\");\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': routes must have either a path or a matcher specified\");\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': path cannot start with a slash\");\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n var exp = \"The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.\";\n throw new Error(\"Invalid configuration of route '{path: \\\"\" + fullPath + \"\\\", redirectTo: \\\"\" + route.redirectTo + \"\\\"}': please provide 'pathMatch'. \" + exp);\n }\n if (route.pathMatch !== void 0 && route.pathMatch !== 'full' && route.pathMatch !== 'prefix') {\n throw new Error(\"Invalid configuration of route '\" + fullPath + \"': pathMatch can only be set to 'prefix' or 'full'\");\n }\n if (route.children) {\n validateConfig(route.children, fullPath);\n }\n}\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n }\n else if (parentPath && !currentRoute.path) {\n return parentPath + \"/\";\n }\n else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n }\n else {\n return parentPath + \"/\" + currentRoute.path;\n }\n}\n/**\n * Makes a copy of the config and adds any default required properties.\n */\nfunction standardizeConfig(r) {\n var children = r.children && r.children.map(standardizeConfig);\n var c = children ? __assign({}, r, { children: children }) : __assign({}, r);\n if (!c.component && (children || c.loadChildren) && (c.outlet && c.outlet !== PRIMARY_OUTLET)) {\n c.component = EmptyOutletComponent;\n }\n return c;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction shallowEqualArrays(a, b) {\n if (a.length !== b.length)\n return false;\n for (var i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i]))\n return false;\n }\n return true;\n}\nfunction shallowEqual(a, b) {\n var k1 = Object.keys(a);\n var k2 = Object.keys(b);\n if (k1.length != k2.length) {\n return false;\n }\n var key;\n for (var i = 0; i < k1.length; i++) {\n key = k1[i];\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens single-level nested arrays.\n */\nfunction flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n/**\n * Return the last element of an array.\n */\nfunction last$1(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\nfunction forEach(map$$1, callback) {\n for (var prop in map$$1) {\n if (map$$1.hasOwnProperty(prop)) {\n callback(map$$1[prop], prop);\n }\n }\n}\nfunction waitForMap(obj, fn) {\n if (Object.keys(obj).length === 0) {\n return of({});\n }\n var waitHead = [];\n var waitTail = [];\n var res = {};\n forEach(obj, function (a, k) {\n var mapped = fn(k, a).pipe(map(function (r) { return res[k] = r; }));\n if (k === PRIMARY_OUTLET) {\n waitHead.push(mapped);\n }\n else {\n waitTail.push(mapped);\n }\n });\n // Closure compiler has problem with using spread operator here. So just using Array.concat.\n return of.apply(null, waitHead.concat(waitTail)).pipe(concatAll(), last(), map(function () { return res; }));\n}\n/**\n * ANDs Observables by merging all input observables, reducing to an Observable verifying all\n * input Observables return `true`.\n */\nfunction andObservables(observables) {\n return observables.pipe(mergeAll(), every(function (result) { return result === true; }));\n}\nfunction wrapIntoObservable(value) {\n if (ɵisObservable(value)) {\n return value;\n }\n if (ɵisPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createEmptyUrlTree() {\n return new UrlTree(new UrlSegmentGroup([], {}), {}, null);\n}\nfunction containsTree(container, containee, exact) {\n if (exact) {\n return equalQueryParams(container.queryParams, containee.queryParams) &&\n equalSegmentGroups(container.root, containee.root);\n }\n return containsQueryParams(container.queryParams, containee.queryParams) &&\n containsSegmentGroup(container.root, containee.root);\n}\nfunction equalQueryParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return shallowEqual(container, containee);\n}\nfunction equalSegmentGroups(container, containee) {\n if (!equalPath(container.segments, containee.segments))\n return false;\n if (container.numberOfChildren !== containee.numberOfChildren)\n return false;\n for (var c in containee.children) {\n if (!container.children[c])\n return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n}\nfunction containsQueryParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return Object.keys(containee).length <= Object.keys(container).length &&\n Object.keys(containee).every(function (key) { return containee[key] === container[key]; });\n}\nfunction containsSegmentGroup(container, containee) {\n return containsSegmentGroupHelper(container, containee, containee.segments);\n}\nfunction containsSegmentGroupHelper(container, containee, containeePaths) {\n if (container.segments.length > containeePaths.length) {\n var current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths))\n return false;\n if (containee.hasChildren())\n return false;\n return true;\n }\n else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths))\n return false;\n for (var c in containee.children) {\n if (!container.children[c])\n return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n }\n else {\n var current = containeePaths.slice(0, container.segments.length);\n var next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current))\n return false;\n if (!container.children[PRIMARY_OUTLET])\n return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next);\n }\n}\n/**\n * @description\n *\n * Represents the parsed URL.\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n *\n */\nvar UrlTree = /** @class */ (function () {\n /** @internal */\n function UrlTree(\n /** The root segment group of the URL tree */\n root, \n /** The query params of the URL */\n queryParams, \n /** The fragment of the URL */\n fragment) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n }\n Object.defineProperty(UrlTree.prototype, \"queryParamMap\", {\n get: function () {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n },\n enumerable: true,\n configurable: true\n });\n /** @docsNotRequired */\n UrlTree.prototype.toString = function () { return DEFAULT_SERIALIZER.serialize(this); };\n return UrlTree;\n}());\n/**\n * @description\n *\n * Represents the parsed URL segment group.\n *\n * See `UrlTree` for more information.\n *\n *\n */\nvar UrlSegmentGroup = /** @class */ (function () {\n function UrlSegmentGroup(\n /** The URL segments of this group. See `UrlSegment` for more information */\n segments, \n /** The list of children of this group */\n children) {\n var _this = this;\n this.segments = segments;\n this.children = children;\n /** The parent node in the url tree */\n this.parent = null;\n forEach(children, function (v, k) { return v.parent = _this; });\n }\n /** Whether the segment has child segments */\n UrlSegmentGroup.prototype.hasChildren = function () { return this.numberOfChildren > 0; };\n Object.defineProperty(UrlSegmentGroup.prototype, \"numberOfChildren\", {\n /** Number of child segments */\n get: function () { return Object.keys(this.children).length; },\n enumerable: true,\n configurable: true\n });\n /** @docsNotRequired */\n UrlSegmentGroup.prototype.toString = function () { return serializePaths(this); };\n return UrlSegmentGroup;\n}());\n/**\n * @description\n *\n * Represents a single URL segment.\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * ## Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n *\n */\nvar UrlSegment = /** @class */ (function () {\n function UrlSegment(\n /** The path part of a URL segment */\n path, \n /** The matrix parameters associated with a segment */\n parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n Object.defineProperty(UrlSegment.prototype, \"parameterMap\", {\n get: function () {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n },\n enumerable: true,\n configurable: true\n });\n /** @docsNotRequired */\n UrlSegment.prototype.toString = function () { return serializePath(this); };\n return UrlSegment;\n}());\nfunction equalSegments(as, bs) {\n return equalPath(as, bs) && as.every(function (a, i) { return shallowEqual(a.parameters, bs[i].parameters); });\n}\nfunction equalPath(as, bs) {\n if (as.length !== bs.length)\n return false;\n return as.every(function (a, i) { return a.path === bs[i].path; });\n}\nfunction mapChildrenIntoArray(segment, fn) {\n var res = [];\n forEach(segment.children, function (child, childOutlet) {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n forEach(segment.children, function (child, childOutlet) {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * @description\n *\n * Serializes and deserializes a URL string into a URL tree.\n *\n * The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See `DefaultUrlSerializer` for an example of a URL serializer.\n *\n *\n */\nvar UrlSerializer = /** @class */ (function () {\n function UrlSerializer() {\n }\n return UrlSerializer;\n}());\n/**\n * @description\n *\n * A default implementation of the `UrlSerializer`.\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n *\n */\nvar DefaultUrlSerializer = /** @class */ (function () {\n function DefaultUrlSerializer() {\n }\n /** Parses a url into a `UrlTree` */\n DefaultUrlSerializer.prototype.parse = function (url) {\n var p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n };\n /** Converts a `UrlTree` into a url */\n DefaultUrlSerializer.prototype.serialize = function (tree) {\n var segment = \"/\" + serializeSegment(tree.root, true);\n var query = serializeQueryParams(tree.queryParams);\n var fragment = typeof tree.fragment === \"string\" ? \"#\" + encodeUriFragment(tree.fragment) : '';\n return \"\" + segment + query + fragment;\n };\n return DefaultUrlSerializer;\n}());\nvar DEFAULT_SERIALIZER = new DefaultUrlSerializer();\nfunction serializePaths(segment) {\n return segment.segments.map(function (p) { return serializePath(p); }).join('/');\n}\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n var primary = segment.children[PRIMARY_OUTLET] ?\n serializeSegment(segment.children[PRIMARY_OUTLET], false) :\n '';\n var children_1 = [];\n forEach(segment.children, function (v, k) {\n if (k !== PRIMARY_OUTLET) {\n children_1.push(k + \":\" + serializeSegment(v, false));\n }\n });\n return children_1.length > 0 ? primary + \"(\" + children_1.join('//') + \")\" : primary;\n }\n else {\n var children = mapChildrenIntoArray(segment, function (v, k) {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [k + \":\" + serializeSegment(v, false)];\n });\n return serializePaths(segment) + \"/(\" + children.join('//') + \")\";\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s)\n .replace(/%40/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\nfunction decode(s) {\n return decodeURIComponent(s);\n}\n// Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \".\n// decodeURIComponent function will not decode \"+\" as a space.\nfunction decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\nfunction serializePath(path) {\n return \"\" + encodeUriSegment(path.path) + serializeMatrixParams(path.parameters);\n}\nfunction serializeMatrixParams(params) {\n return Object.keys(params)\n .map(function (key) { return \";\" + encodeUriSegment(key) + \"=\" + encodeUriSegment(params[key]); })\n .join('');\n}\nfunction serializeQueryParams(params) {\n var strParams = Object.keys(params).map(function (name) {\n var value = params[name];\n return Array.isArray(value) ?\n value.map(function (v) { return encodeUriQuery(name) + \"=\" + encodeUriQuery(v); }).join('&') :\n encodeUriQuery(name) + \"=\" + encodeUriQuery(value);\n });\n return strParams.length ? \"?\" + strParams.join(\"&\") : '';\n}\nvar SEGMENT_RE = /^[^\\/()?;=#]+/;\nfunction matchSegments(str) {\n var match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nvar QUERY_PARAM_RE = /^[^=?&#]+/;\n// Return the name of the query param at the start of the string or an empty string\nfunction matchQueryParams(str) {\n var match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = /^[^?&#]+/;\n// Return the value of the query param at the start of the string or an empty string\nfunction matchUrlQueryParamValue(str) {\n var match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nvar UrlParser = /** @class */ (function () {\n function UrlParser(url) {\n this.url = url;\n this.remaining = url;\n }\n UrlParser.prototype.parseRootSegment = function () {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n };\n UrlParser.prototype.parseQueryParams = function () {\n var params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n };\n UrlParser.prototype.parseFragment = function () {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n };\n UrlParser.prototype.parseChildren = function () {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n var segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n var children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n var res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n };\n // parse a segment with its matrix parameters\n // ie `name;k1=v1;k2`\n UrlParser.prototype.parseSegment = function () {\n var path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new Error(\"Empty path url segment cannot have parameters: '\" + this.remaining + \"'.\");\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n };\n UrlParser.prototype.parseMatrixParams = function () {\n var params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n };\n UrlParser.prototype.parseParam = function (params) {\n var key = matchSegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n var value = '';\n if (this.consumeOptional('=')) {\n var valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n };\n // Parse a single query parameter `name[=value]`\n UrlParser.prototype.parseQueryParam = function (params) {\n var key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n var value = '';\n if (this.consumeOptional('=')) {\n var valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n var decodedKey = decodeQuery(key);\n var decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n var currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n }\n else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n };\n // parse `(a/b//outlet_name:c/d)`\n UrlParser.prototype.parseParens = function (allowPrimary) {\n var segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n var path = matchSegments(this.remaining);\n var next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new Error(\"Cannot parse url '\" + this.url + \"'\");\n }\n var outletName = undefined;\n if (path.indexOf(':') > -1) {\n outletName = path.substr(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n }\n else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n var children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :\n new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n };\n UrlParser.prototype.peekStartsWith = function (str) { return this.remaining.startsWith(str); };\n // Consumes the prefix when it is present and returns whether it has been consumed\n UrlParser.prototype.consumeOptional = function (str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n };\n UrlParser.prototype.capture = function (str) {\n if (!this.consumeOptional(str)) {\n throw new Error(\"Expected \\\"\" + str + \"\\\".\");\n }\n };\n return UrlParser;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NoMatch = /** @class */ (function () {\n function NoMatch(segmentGroup) {\n this.segmentGroup = segmentGroup || null;\n }\n return NoMatch;\n}());\nvar AbsoluteRedirect = /** @class */ (function () {\n function AbsoluteRedirect(urlTree) {\n this.urlTree = urlTree;\n }\n return AbsoluteRedirect;\n}());\nfunction noMatch(segmentGroup) {\n return new Observable(function (obs) { return obs.error(new NoMatch(segmentGroup)); });\n}\nfunction absoluteRedirect(newTree) {\n return new Observable(function (obs) { return obs.error(new AbsoluteRedirect(newTree)); });\n}\nfunction namedOutletsRedirect(redirectTo) {\n return new Observable(function (obs) { return obs.error(new Error(\"Only absolute redirects can have named outlets. redirectTo: '\" + redirectTo + \"'\")); });\n}\nfunction canLoadFails(route) {\n return new Observable(function (obs) { return obs.error(navigationCancelingError(\"Cannot load children because the guard of the route \\\"path: '\" + route.path + \"'\\\" returned false\")); });\n}\n/**\n * Returns the `UrlTree` with the redirection applied.\n *\n * Lazy modules are loaded along the way.\n */\nfunction applyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n return new ApplyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config).apply();\n}\nvar ApplyRedirects = /** @class */ (function () {\n function ApplyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n this.configLoader = configLoader;\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n this.config = config;\n this.allowRedirects = true;\n this.ngModule = moduleInjector.get(NgModuleRef);\n }\n ApplyRedirects.prototype.apply = function () {\n var _this = this;\n var expanded$ = this.expandSegmentGroup(this.ngModule, this.config, this.urlTree.root, PRIMARY_OUTLET);\n var urlTrees$ = expanded$.pipe(map(function (rootSegmentGroup) { return _this.createUrlTree(rootSegmentGroup, _this.urlTree.queryParams, _this.urlTree.fragment); }));\n return urlTrees$.pipe(catchError(function (e) {\n if (e instanceof AbsoluteRedirect) {\n // after an absolute redirect we do not apply any more redirects!\n _this.allowRedirects = false;\n // we need to run matching, so we can fetch all lazy-loaded modules\n return _this.match(e.urlTree);\n }\n if (e instanceof NoMatch) {\n throw _this.noMatchError(e);\n }\n throw e;\n }));\n };\n ApplyRedirects.prototype.match = function (tree) {\n var _this = this;\n var expanded$ = this.expandSegmentGroup(this.ngModule, this.config, tree.root, PRIMARY_OUTLET);\n var mapped$ = expanded$.pipe(map(function (rootSegmentGroup) {\n return _this.createUrlTree(rootSegmentGroup, tree.queryParams, tree.fragment);\n }));\n return mapped$.pipe(catchError(function (e) {\n if (e instanceof NoMatch) {\n throw _this.noMatchError(e);\n }\n throw e;\n }));\n };\n ApplyRedirects.prototype.noMatchError = function (e) {\n return new Error(\"Cannot match any routes. URL Segment: '\" + e.segmentGroup + \"'\");\n };\n ApplyRedirects.prototype.createUrlTree = function (rootCandidate, queryParams, fragment) {\n var _a;\n var root = rootCandidate.segments.length > 0 ?\n new UrlSegmentGroup([], (_a = {}, _a[PRIMARY_OUTLET] = rootCandidate, _a)) :\n rootCandidate;\n return new UrlTree(root, queryParams, fragment);\n };\n ApplyRedirects.prototype.expandSegmentGroup = function (ngModule, routes, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.expandChildren(ngModule, routes, segmentGroup)\n .pipe(map(function (children) { return new UrlSegmentGroup([], children); }));\n }\n return this.expandSegment(ngModule, segmentGroup, routes, segmentGroup.segments, outlet, true);\n };\n // Recursively expand segment groups for all the child outlets\n ApplyRedirects.prototype.expandChildren = function (ngModule, routes, segmentGroup) {\n var _this = this;\n return waitForMap(segmentGroup.children, function (childOutlet, child) { return _this.expandSegmentGroup(ngModule, routes, child, childOutlet); });\n };\n ApplyRedirects.prototype.expandSegment = function (ngModule, segmentGroup, routes, segments, outlet, allowRedirects) {\n var _this = this;\n return of.apply(void 0, __spread(routes)).pipe(map(function (r) {\n var expanded$ = _this.expandSegmentAgainstRoute(ngModule, segmentGroup, routes, r, segments, outlet, allowRedirects);\n return expanded$.pipe(catchError(function (e) {\n if (e instanceof NoMatch) {\n // TODO(i): this return type doesn't match the declared Observable<UrlSegmentGroup> -\n // talk to Jason\n return of(null);\n }\n throw e;\n }));\n }), concatAll(), first(function (s) { return !!s; }), catchError(function (e, _) {\n if (e instanceof EmptyError || e.name === 'EmptyError') {\n if (_this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new UrlSegmentGroup([], {}));\n }\n throw new NoMatch(segmentGroup);\n }\n throw e;\n }));\n };\n ApplyRedirects.prototype.noLeftoversInUrl = function (segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n };\n ApplyRedirects.prototype.expandSegmentAgainstRoute = function (ngModule, segmentGroup, routes, route, paths, outlet, allowRedirects) {\n if (getOutlet(route) !== outlet) {\n return noMatch(segmentGroup);\n }\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(ngModule, segmentGroup, route, paths);\n }\n if (allowRedirects && this.allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, paths, outlet);\n }\n return noMatch(segmentGroup);\n };\n ApplyRedirects.prototype.expandSegmentAgainstRouteUsingRedirect = function (ngModule, segmentGroup, routes, route, segments, outlet) {\n if (route.path === '**') {\n return this.expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet);\n }\n return this.expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet);\n };\n ApplyRedirects.prototype.expandWildCardWithParamsAgainstRouteUsingRedirect = function (ngModule, routes, route, outlet) {\n var _this = this;\n var newTree = this.applyRedirectCommands([], route.redirectTo, {});\n if (route.redirectTo.startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return this.lineralizeSegments(route, newTree).pipe(mergeMap(function (newSegments) {\n var group = new UrlSegmentGroup(newSegments, {});\n return _this.expandSegment(ngModule, group, routes, newSegments, outlet, false);\n }));\n };\n ApplyRedirects.prototype.expandRegularSegmentAgainstRouteUsingRedirect = function (ngModule, segmentGroup, routes, route, segments, outlet) {\n var _this = this;\n var _a = match(segmentGroup, route, segments), matched = _a.matched, consumedSegments = _a.consumedSegments, lastChild = _a.lastChild, positionalParamSegments = _a.positionalParamSegments;\n if (!matched)\n return noMatch(segmentGroup);\n var newTree = this.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);\n if (route.redirectTo.startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return this.lineralizeSegments(route, newTree).pipe(mergeMap(function (newSegments) {\n return _this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(segments.slice(lastChild)), outlet, false);\n }));\n };\n ApplyRedirects.prototype.matchSegmentAgainstRoute = function (ngModule, rawSegmentGroup, route, segments) {\n var _this = this;\n if (route.path === '**') {\n if (route.loadChildren) {\n return this.configLoader.load(ngModule.injector, route)\n .pipe(map(function (cfg) {\n route._loadedConfig = cfg;\n return new UrlSegmentGroup(segments, {});\n }));\n }\n return of(new UrlSegmentGroup(segments, {}));\n }\n var _a = match(rawSegmentGroup, route, segments), matched = _a.matched, consumedSegments = _a.consumedSegments, lastChild = _a.lastChild;\n if (!matched)\n return noMatch(rawSegmentGroup);\n var rawSlicedSegments = segments.slice(lastChild);\n var childConfig$ = this.getChildConfig(ngModule, route);\n return childConfig$.pipe(mergeMap(function (routerConfig) {\n var childModule = routerConfig.module;\n var childConfig = routerConfig.routes;\n var _a = split(rawSegmentGroup, consumedSegments, rawSlicedSegments, childConfig), segmentGroup = _a.segmentGroup, slicedSegments = _a.slicedSegments;\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n var expanded$_1 = _this.expandChildren(childModule, childConfig, segmentGroup);\n return expanded$_1.pipe(map(function (children) { return new UrlSegmentGroup(consumedSegments, children); }));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new UrlSegmentGroup(consumedSegments, {}));\n }\n var expanded$ = _this.expandSegment(childModule, segmentGroup, childConfig, slicedSegments, PRIMARY_OUTLET, true);\n return expanded$.pipe(map(function (cs) {\n return new UrlSegmentGroup(consumedSegments.concat(cs.segments), cs.children);\n }));\n }));\n };\n ApplyRedirects.prototype.getChildConfig = function (ngModule, route) {\n var _this = this;\n if (route.children) {\n // The children belong to the same module\n return of(new LoadedRouterConfig(route.children, ngModule));\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedConfig !== undefined) {\n return of(route._loadedConfig);\n }\n return runCanLoadGuard(ngModule.injector, route).pipe(mergeMap(function (shouldLoad) {\n if (shouldLoad) {\n return _this.configLoader.load(ngModule.injector, route)\n .pipe(map(function (cfg) {\n route._loadedConfig = cfg;\n return cfg;\n }));\n }\n return canLoadFails(route);\n }));\n }\n return of(new LoadedRouterConfig([], ngModule));\n };\n ApplyRedirects.prototype.lineralizeSegments = function (route, urlTree) {\n var res = [];\n var c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(route.redirectTo);\n }\n c = c.children[PRIMARY_OUTLET];\n }\n };\n ApplyRedirects.prototype.applyRedirectCommands = function (segments, redirectTo, posParams) {\n return this.applyRedirectCreatreUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n };\n ApplyRedirects.prototype.applyRedirectCreatreUrlTree = function (redirectTo, urlTree, segments, posParams) {\n var newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n };\n ApplyRedirects.prototype.createQueryParams = function (redirectToParams, actualParams) {\n var res = {};\n forEach(redirectToParams, function (v, k) {\n var copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n var sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n }\n else {\n res[k] = v;\n }\n });\n return res;\n };\n ApplyRedirects.prototype.createSegmentGroup = function (redirectTo, group, segments, posParams) {\n var _this = this;\n var updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n var children = {};\n forEach(group.children, function (child, name) {\n children[name] = _this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n };\n ApplyRedirects.prototype.createSegments = function (redirectTo, redirectToSegments, actualSegments, posParams) {\n var _this = this;\n return redirectToSegments.map(function (s) { return s.path.startsWith(':') ? _this.findPosParam(redirectTo, s, posParams) :\n _this.findOrReturn(s, actualSegments); });\n };\n ApplyRedirects.prototype.findPosParam = function (redirectTo, redirectToUrlSegment, posParams) {\n var pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos)\n throw new Error(\"Cannot redirect to '\" + redirectTo + \"'. Cannot find '\" + redirectToUrlSegment.path + \"'.\");\n return pos;\n };\n ApplyRedirects.prototype.findOrReturn = function (redirectToUrlSegment, actualSegments) {\n var e_1, _a;\n var idx = 0;\n try {\n for (var actualSegments_1 = __values(actualSegments), actualSegments_1_1 = actualSegments_1.next(); !actualSegments_1_1.done; actualSegments_1_1 = actualSegments_1.next()) {\n var s = actualSegments_1_1.value;\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (actualSegments_1_1 && !actualSegments_1_1.done && (_a = actualSegments_1.return)) _a.call(actualSegments_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return redirectToUrlSegment;\n };\n return ApplyRedirects;\n}());\nfunction runCanLoadGuard(moduleInjector, route) {\n var canLoad = route.canLoad;\n if (!canLoad || canLoad.length === 0)\n return of(true);\n var obs = from(canLoad).pipe(map(function (injectionToken) {\n var guard = moduleInjector.get(injectionToken);\n return wrapIntoObservable(guard.canLoad ? guard.canLoad(route) : guard(route));\n }));\n return andObservables(obs);\n}\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if ((route.pathMatch === 'full') && (segmentGroup.hasChildren() || segments.length > 0)) {\n return { matched: false, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n return { matched: true, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n var matcher = route.matcher || defaultUrlMatcher;\n var res = matcher(segments, segmentGroup, route);\n if (!res) {\n return {\n matched: false,\n consumedSegments: [],\n lastChild: 0,\n positionalParamSegments: {},\n };\n }\n return {\n matched: true,\n consumedSegments: res.consumed,\n lastChild: res.consumed.length,\n positionalParamSegments: res.posParams,\n };\n}\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n var s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptySegments(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathRedirects(segmentGroup, slicedSegments, config)) {\n var s = new UrlSegmentGroup(segmentGroup.segments, addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments: slicedSegments };\n }\n return { segmentGroup: segmentGroup, slicedSegments: slicedSegments };\n}\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n var c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\nfunction addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n var e_2, _a;\n var res = {};\n try {\n for (var routes_1 = __values(routes), routes_1_1 = routes_1.next(); !routes_1_1.done; routes_1_1 = routes_1.next()) {\n var r = routes_1_1.value;\n if (isEmptyPathRedirect(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (routes_1_1 && !routes_1_1.done && (_a = routes_1.return)) _a.call(routes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return __assign({}, children, res);\n}\nfunction createChildrenForEmptySegments(routes, primarySegmentGroup) {\n var e_3, _a;\n var res = {};\n res[PRIMARY_OUTLET] = primarySegmentGroup;\n try {\n for (var routes_2 = __values(routes), routes_2_1 = routes_2.next(); !routes_2_1.done; routes_2_1 = routes_2.next()) {\n var r = routes_2_1.value;\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (routes_2_1 && !routes_2_1.done && (_a = routes_2.return)) _a.call(routes_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return res;\n}\nfunction containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, segments, routes) {\n return routes.some(function (r) { return isEmptyPathRedirect(segmentGroup, segments, r) && getOutlet(r) !== PRIMARY_OUTLET; });\n}\nfunction containsEmptyPathRedirects(segmentGroup, segments, routes) {\n return routes.some(function (r) { return isEmptyPathRedirect(segmentGroup, segments, r); });\n}\nfunction isEmptyPathRedirect(segmentGroup, segments, r) {\n if ((segmentGroup.hasChildren() || segments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo !== undefined;\n}\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Tree = /** @class */ (function () {\n function Tree(root) {\n this._root = root;\n }\n Object.defineProperty(Tree.prototype, \"root\", {\n get: function () { return this._root.value; },\n enumerable: true,\n configurable: true\n });\n /**\n * @internal\n */\n Tree.prototype.parent = function (t) {\n var p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n };\n /**\n * @internal\n */\n Tree.prototype.children = function (t) {\n var n = findNode(t, this._root);\n return n ? n.children.map(function (t) { return t.value; }) : [];\n };\n /**\n * @internal\n */\n Tree.prototype.firstChild = function (t) {\n var n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n };\n /**\n * @internal\n */\n Tree.prototype.siblings = function (t) {\n var p = findPath(t, this._root);\n if (p.length < 2)\n return [];\n var c = p[p.length - 2].children.map(function (c) { return c.value; });\n return c.filter(function (cc) { return cc !== t; });\n };\n /**\n * @internal\n */\n Tree.prototype.pathFromRoot = function (t) { return findPath(t, this._root).map(function (s) { return s.value; }); };\n return Tree;\n}());\n// DFS for the node matching the value\nfunction findNode(value, node) {\n var e_1, _a;\n if (value === node.value)\n return node;\n try {\n for (var _b = __values(node.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var node_1 = findNode(value, child);\n if (node_1)\n return node_1;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return null;\n}\n// Return the path to the node with the given value using DFS\nfunction findPath(value, node) {\n var e_2, _a;\n if (value === node.value)\n return [node];\n try {\n for (var _b = __values(node.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return [];\n}\nvar TreeNode = /** @class */ (function () {\n function TreeNode(value, children) {\n this.value = value;\n this.children = children;\n }\n TreeNode.prototype.toString = function () { return \"TreeNode(\" + this.value + \")\"; };\n return TreeNode;\n}());\n// Return the list of T indexed by outlet name\nfunction nodeChildrenAsMap(node) {\n var map$$1 = {};\n if (node) {\n node.children.forEach(function (child) { return map$$1[child.value.outlet] = child; });\n }\n return map$$1;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Represents the state of the router.\n *\n * RouterState is a tree of activated routes. Every node in this tree knows about the \"consumed\" URL\n * segments, the extracted parameters, and the resolved data.\n *\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * See `ActivatedRoute` for more information.\n *\n *\n */\nvar RouterState = /** @class */ (function (_super) {\n __extends(RouterState, _super);\n /** @internal */\n function RouterState(root, \n /** The current snapshot of the router state */\n snapshot) {\n var _this = _super.call(this, root) || this;\n _this.snapshot = snapshot;\n setRouterState(_this, root);\n return _this;\n }\n RouterState.prototype.toString = function () { return this.snapshot.toString(); };\n return RouterState;\n}(Tree));\nfunction createEmptyState(urlTree, rootComponent) {\n var snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n var emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n var emptyParams = new BehaviorSubject({});\n var emptyData = new BehaviorSubject({});\n var emptyQueryParams = new BehaviorSubject({});\n var fragment = new BehaviorSubject('');\n var activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\nfunction createEmptyStateSnapshot(urlTree, rootComponent) {\n var emptyParams = {};\n var emptyData = {};\n var emptyQueryParams = {};\n var fragment = '';\n var activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, urlTree.root, -1, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet. An `ActivatedRoute` can also be used to traverse the router state tree.\n *\n * ```\n * @Component({...})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: Observable<string> = route.params.map(p => p.id);\n * const url: Observable<string> = route.url.map(segments => segments.join(''));\n * // route.data includes both `data` and `resolve`\n * const user = route.data.map(d => d.user);\n * }\n * }\n * ```\n *\n *\n */\nvar ActivatedRoute = /** @class */ (function () {\n /** @internal */\n function ActivatedRoute(\n /** An observable of the URL segments matched by this route */\n url, \n /** An observable of the matrix parameters scoped to this route */\n params, \n /** An observable of the query parameters shared by all the routes */\n queryParams, \n /** An observable of the URL fragment shared by all the routes */\n fragment, \n /** An observable of the static and resolved data of this route. */\n data, \n /** The outlet name of the route. It's a constant */\n outlet, \n /** The component of the route. It's a constant */\n // TODO(vsavkin): remove |string\n component, futureSnapshot) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n }\n Object.defineProperty(ActivatedRoute.prototype, \"routeConfig\", {\n /** The configuration used to match this route */\n get: function () { return this._futureSnapshot.routeConfig; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"root\", {\n /** The root of the router state */\n get: function () { return this._routerState.root; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"parent\", {\n /** The parent of this route in the router state tree */\n get: function () { return this._routerState.parent(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"firstChild\", {\n /** The first child of this route in the router state tree */\n get: function () { return this._routerState.firstChild(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"children\", {\n /** The children of this route in the router state tree */\n get: function () { return this._routerState.children(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"pathFromRoot\", {\n /** The path from the root of the router state tree to this route */\n get: function () { return this._routerState.pathFromRoot(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"paramMap\", {\n get: function () {\n if (!this._paramMap) {\n this._paramMap = this.params.pipe(map(function (p) { return convertToParamMap(p); }));\n }\n return this._paramMap;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRoute.prototype, \"queryParamMap\", {\n get: function () {\n if (!this._queryParamMap) {\n this._queryParamMap =\n this.queryParams.pipe(map(function (p) { return convertToParamMap(p); }));\n }\n return this._queryParamMap;\n },\n enumerable: true,\n configurable: true\n });\n ActivatedRoute.prototype.toString = function () {\n return this.snapshot ? this.snapshot.toString() : \"Future(\" + this._futureSnapshot + \")\";\n };\n return ActivatedRoute;\n}());\n/**\n * Returns the inherited params, data, and resolve for a given route.\n * By default, this only inherits values up to the nearest path-less or component-less route.\n * @internal\n */\nfunction inheritedParamsDataResolve(route, paramsInheritanceStrategy) {\n if (paramsInheritanceStrategy === void 0) { paramsInheritanceStrategy = 'emptyOnly'; }\n var pathFromRoot = route.pathFromRoot;\n var inheritingStartingFrom = 0;\n if (paramsInheritanceStrategy !== 'always') {\n inheritingStartingFrom = pathFromRoot.length - 1;\n while (inheritingStartingFrom >= 1) {\n var current = pathFromRoot[inheritingStartingFrom];\n var parent_1 = pathFromRoot[inheritingStartingFrom - 1];\n // current route is an empty path => inherits its parent's params and data\n if (current.routeConfig && current.routeConfig.path === '') {\n inheritingStartingFrom--;\n // parent is componentless => current route should inherit its params and data\n }\n else if (!parent_1.component) {\n inheritingStartingFrom--;\n }\n else {\n break;\n }\n }\n }\n return flattenInherited(pathFromRoot.slice(inheritingStartingFrom));\n}\n/** @internal */\nfunction flattenInherited(pathFromRoot) {\n return pathFromRoot.reduce(function (res, curr) {\n var params = __assign({}, res.params, curr.params);\n var data = __assign({}, res.data, curr.data);\n var resolve = __assign({}, res.resolve, curr._resolvedData);\n return { params: params, data: data, resolve: resolve };\n }, { params: {}, data: {}, resolve: {} });\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to\n * traverse the router state tree.\n *\n * ```\n * @Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n *\n */\nvar ActivatedRouteSnapshot = /** @class */ (function () {\n /** @internal */\n function ActivatedRouteSnapshot(\n /** The URL segments matched by this route */\n url, \n /** The matrix parameters scoped to this route */\n params, \n /** The query parameters shared by all the routes */\n queryParams, \n /** The URL fragment shared by all the routes */\n fragment, \n /** The static and resolved data of this route */\n data, \n /** The outlet name of the route */\n outlet, \n /** The component of the route */\n component, routeConfig, urlSegment, lastPathIndex, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._urlSegment = urlSegment;\n this._lastPathIndex = lastPathIndex;\n this._resolve = resolve;\n }\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"root\", {\n /** The root of the router state */\n get: function () { return this._routerState.root; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"parent\", {\n /** The parent of this route in the router state tree */\n get: function () { return this._routerState.parent(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"firstChild\", {\n /** The first child of this route in the router state tree */\n get: function () { return this._routerState.firstChild(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"children\", {\n /** The children of this route in the router state tree */\n get: function () { return this._routerState.children(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"pathFromRoot\", {\n /** The path from the root of the router state tree to this route */\n get: function () { return this._routerState.pathFromRoot(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"paramMap\", {\n get: function () {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ActivatedRouteSnapshot.prototype, \"queryParamMap\", {\n get: function () {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n },\n enumerable: true,\n configurable: true\n });\n ActivatedRouteSnapshot.prototype.toString = function () {\n var url = this.url.map(function (segment) { return segment.toString(); }).join('/');\n var matched = this.routeConfig ? this.routeConfig.path : '';\n return \"Route(url:'\" + url + \"', path:'\" + matched + \"')\";\n };\n return ActivatedRouteSnapshot;\n}());\n/**\n * @description\n *\n * Represents the state of the router at a moment in time.\n *\n * This is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n *\n */\nvar RouterStateSnapshot = /** @class */ (function (_super) {\n __extends(RouterStateSnapshot, _super);\n /** @internal */\n function RouterStateSnapshot(\n /** The url from which this snapshot was created */\n url, root) {\n var _this = _super.call(this, root) || this;\n _this.url = url;\n setRouterState(_this, root);\n return _this;\n }\n RouterStateSnapshot.prototype.toString = function () { return serializeNode(this._root); };\n return RouterStateSnapshot;\n}(Tree));\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(function (c) { return setRouterState(state, c); });\n}\nfunction serializeNode(node) {\n var c = node.children.length > 0 ? \" { \" + node.children.map(serializeNode).join(', ') + \" } \" : '';\n return \"\" + node.value + c;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n */\nfunction advanceActivatedRoute(route) {\n if (route.snapshot) {\n var currentSnapshot = route.snapshot;\n var nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n route.queryParams.next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n route.fragment.next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n route.params.next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n route.url.next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n route.data.next(nextSnapshot.data);\n }\n }\n else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n route.data.next(route._futureSnapshot.data);\n }\n}\nfunction equalParamsAndUrlSegments(a, b) {\n var equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n var parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch &&\n (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createRouterState(routeReuseStrategy, curr, prevState) {\n var root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n var value = prevState.value;\n value._futureSnapshot = curr.value;\n var children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n }\n else {\n var detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);\n if (detachedRouteHandle) {\n var tree = detachedRouteHandle.route;\n setFutureSnapshotsOfActivatedRoutes(curr, tree);\n return tree;\n }\n else {\n var value = createActivatedRoute(curr.value);\n var children = curr.children.map(function (c) { return createNode(routeReuseStrategy, c); });\n return new TreeNode(value, children);\n }\n }\n}\nfunction setFutureSnapshotsOfActivatedRoutes(curr, result) {\n if (curr.value.routeConfig !== result.value.routeConfig) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot created from a different route');\n }\n if (curr.children.length !== result.children.length) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot with a different number of children');\n }\n result.value._futureSnapshot = curr.value;\n for (var i = 0; i < curr.children.length; ++i) {\n setFutureSnapshotsOfActivatedRoutes(curr.children[i], result.children[i]);\n }\n}\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(function (child) {\n var e_1, _a;\n try {\n for (var _b = __values(prevState.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var p = _c.value;\n if (routeReuseStrategy.shouldReuseRoute(p.value.snapshot, child.value)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createUrlTree(route, urlTree, commands, queryParams, fragment) {\n if (commands.length === 0) {\n return tree(urlTree.root, urlTree.root, urlTree, queryParams, fragment);\n }\n var nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(urlTree.root, new UrlSegmentGroup([], {}), urlTree, queryParams, fragment);\n }\n var startingPosition = findStartingPosition(nav, urlTree, route);\n var segmentGroup = startingPosition.processChildren ?\n updateSegmentGroupChildren(startingPosition.segmentGroup, startingPosition.index, nav.commands) :\n updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);\n return tree(startingPosition.segmentGroup, segmentGroup, urlTree, queryParams, fragment);\n}\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\nfunction tree(oldSegmentGroup, newSegmentGroup, urlTree, queryParams, fragment) {\n var qp = {};\n if (queryParams) {\n forEach(queryParams, function (value, name) {\n qp[name] = Array.isArray(value) ? value.map(function (v) { return \"\" + v; }) : \"\" + value;\n });\n }\n if (urlTree.root === oldSegmentGroup) {\n return new UrlTree(newSegmentGroup, qp, fragment);\n }\n return new UrlTree(replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), qp, fragment);\n}\nfunction replaceSegment(current, oldSegment, newSegment) {\n var children = {};\n forEach(current.children, function (c, outletName) {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n }\n else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nvar Navigation = /** @class */ (function () {\n function Navigation(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new Error('Root segment cannot have matrix parameters');\n }\n var cmdWithOutlet = commands.find(function (c) { return typeof c === 'object' && c != null && c.outlets; });\n if (cmdWithOutlet && cmdWithOutlet !== last$1(commands)) {\n throw new Error('{outlets:{}} has to be the last command');\n }\n }\n Navigation.prototype.toRoot = function () {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n };\n return Navigation;\n}());\n/** Transforms commands to a normalized `Navigation` */\nfunction computeNavigation(commands) {\n if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n var numberOfDoubleDots = 0;\n var isAbsolute = false;\n var res = commands.reduce(function (res, cmd, cmdIdx) {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n var outlets_1 = {};\n forEach(cmd.outlets, function (commands, name) {\n outlets_1[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return __spread(res, [{ outlets: outlets_1 }]);\n }\n if (cmd.segmentPath) {\n return __spread(res, [cmd.segmentPath]);\n }\n }\n if (!(typeof cmd === 'string')) {\n return __spread(res, [cmd]);\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach(function (urlPart, partIndex) {\n if (partIndex == 0 && urlPart === '.') ;\n else if (partIndex == 0 && urlPart === '') { // '/a'\n isAbsolute = true;\n }\n else if (urlPart === '..') { // '../a'\n numberOfDoubleDots++;\n }\n else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return __spread(res, [cmd]);\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nvar Position = /** @class */ (function () {\n function Position(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n return Position;\n}());\nfunction findStartingPosition(nav, tree, route) {\n if (nav.isAbsolute) {\n return new Position(tree.root, true, 0);\n }\n if (route.snapshot._lastPathIndex === -1) {\n return new Position(route.snapshot._urlSegment, true, 0);\n }\n var modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n var index = route.snapshot._lastPathIndex + modifier;\n return createPositionApplyingDoubleDots(route.snapshot._urlSegment, index, nav.numberOfDoubleDots);\n}\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n var g = group;\n var ci = index;\n var dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = g.parent;\n if (!g) {\n throw new Error('Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\nfunction getPath(command) {\n if (typeof command === 'object' && command != null && command.outlets) {\n return command.outlets[PRIMARY_OUTLET];\n }\n return \"\" + command;\n}\nfunction getOutlets(commands) {\n var _a, _b;\n if (!(typeof commands[0] === 'object'))\n return _a = {}, _a[PRIMARY_OUTLET] = commands, _a;\n if (commands[0].outlets === undefined)\n return _b = {}, _b[PRIMARY_OUTLET] = commands, _b;\n return commands[0].outlets;\n}\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n var m = prefixedWith(segmentGroup, startIndex, commands);\n var slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n var g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] =\n new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n }\n else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n }\n else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else {\n var outlets_2 = getOutlets(commands);\n var children_1 = {};\n forEach(outlets_2, function (commands, outlet) {\n if (commands !== null) {\n children_1[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n forEach(segmentGroup.children, function (child, childOutlet) {\n if (outlets_2[childOutlet] === undefined) {\n children_1[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children_1);\n }\n}\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n var currentCommandIndex = 0;\n var currentPathIndex = startIndex;\n var noMatch = { match: false, pathIndex: 0, commandIndex: 0 };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length)\n return noMatch;\n var path = segmentGroup.segments[currentPathIndex];\n var curr = getPath(commands[currentCommandIndex]);\n var next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined)\n break;\n if (curr && next && (typeof next === 'object') && next.outlets === undefined) {\n if (!compare(curr, next, path))\n return noMatch;\n currentCommandIndex += 2;\n }\n else {\n if (!compare(curr, {}, path))\n return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return { match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex };\n}\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n var paths = segmentGroup.segments.slice(0, startIndex);\n var i = 0;\n while (i < commands.length) {\n if (typeof commands[i] === 'object' && commands[i].outlets !== undefined) {\n var children = createNewSegmentChildren(commands[i].outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n var p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, commands[0]));\n i++;\n continue;\n }\n var curr = getPath(commands[i]);\n var next = (i < commands.length - 1) ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n }\n else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\nfunction createNewSegmentChildren(outlets) {\n var children = {};\n forEach(outlets, function (commands, outlet) {\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\nfunction stringify(params) {\n var res = {};\n forEach(params, function (v, k) { return res[k] = \"\" + v; });\n return res;\n}\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar CanActivate = /** @class */ (function () {\n function CanActivate(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n return CanActivate;\n}());\nvar CanDeactivate = /** @class */ (function () {\n function CanDeactivate(component, route) {\n this.component = component;\n this.route = route;\n }\n return CanDeactivate;\n}());\n/**\n * This class bundles the actions involved in preactivation of a route.\n */\nvar PreActivation = /** @class */ (function () {\n function PreActivation(future, curr, moduleInjector, forwardEvent) {\n this.future = future;\n this.curr = curr;\n this.moduleInjector = moduleInjector;\n this.forwardEvent = forwardEvent;\n this.canActivateChecks = [];\n this.canDeactivateChecks = [];\n }\n PreActivation.prototype.initialize = function (parentContexts) {\n var futureRoot = this.future._root;\n var currRoot = this.curr ? this.curr._root : null;\n this.setupChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n };\n PreActivation.prototype.checkGuards = function () {\n var _this = this;\n if (!this.isDeactivating() && !this.isActivating()) {\n return of(true);\n }\n var canDeactivate$ = this.runCanDeactivateChecks();\n return canDeactivate$.pipe(mergeMap(function (canDeactivate) { return canDeactivate ? _this.runCanActivateChecks() : of(false); }));\n };\n PreActivation.prototype.resolveData = function (paramsInheritanceStrategy) {\n var _this = this;\n if (!this.isActivating())\n return of(null);\n return from(this.canActivateChecks)\n .pipe(concatMap(function (check) { return _this.runResolve(check.route, paramsInheritanceStrategy); }), reduce(function (_, __) { return _; }));\n };\n PreActivation.prototype.isDeactivating = function () { return this.canDeactivateChecks.length !== 0; };\n PreActivation.prototype.isActivating = function () { return this.canActivateChecks.length !== 0; };\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n */\n PreActivation.prototype.setupChildRouteGuards = function (futureNode, currNode, contexts, futurePath) {\n var _this = this;\n var prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(function (c) {\n _this.setupRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]));\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n forEach(prevChildren, function (v, k) {\n return _this.deactivateRouteAndItsChildren(v, contexts.getContext(k));\n });\n };\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n */\n PreActivation.prototype.setupRouteGuards = function (futureNode, currNode, parentContexts, futurePath) {\n var future = futureNode.value;\n var curr = currNode ? currNode.value : null;\n var context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n var shouldRunGuardsAndResolvers = this.shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers);\n if (shouldRunGuardsAndResolvers) {\n this.canActivateChecks.push(new CanActivate(futurePath));\n }\n else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, currNode, parentContexts, futurePath);\n }\n if (shouldRunGuardsAndResolvers) {\n var outlet = context.outlet;\n this.canDeactivateChecks.push(new CanDeactivate(outlet.component, curr));\n }\n }\n else {\n if (curr) {\n this.deactivateRouteAndItsChildren(currNode, context);\n }\n this.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, null, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, null, parentContexts, futurePath);\n }\n }\n };\n PreActivation.prototype.shouldRunGuardsAndResolvers = function (curr, future, mode) {\n switch (mode) {\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n };\n PreActivation.prototype.deactivateRouteAndItsChildren = function (route, context) {\n var _this = this;\n var children = nodeChildrenAsMap(route);\n var r = route.value;\n forEach(children, function (node, childName) {\n if (!r.component) {\n _this.deactivateRouteAndItsChildren(node, context);\n }\n else if (context) {\n _this.deactivateRouteAndItsChildren(node, context.children.getContext(childName));\n }\n else {\n _this.deactivateRouteAndItsChildren(node, null);\n }\n });\n if (!r.component) {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n else if (context && context.outlet && context.outlet.isActivated) {\n this.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n }\n else {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n };\n PreActivation.prototype.runCanDeactivateChecks = function () {\n var _this = this;\n return from(this.canDeactivateChecks)\n .pipe(mergeMap(function (check) { return _this.runCanDeactivate(check.component, check.route); }), every(function (result) { return result === true; }));\n };\n PreActivation.prototype.runCanActivateChecks = function () {\n var _this = this;\n return from(this.canActivateChecks)\n .pipe(concatMap(function (check) { return andObservables(from([\n _this.fireChildActivationStart(check.route.parent),\n _this.fireActivationStart(check.route), _this.runCanActivateChild(check.path),\n _this.runCanActivate(check.route)\n ])); }), every(function (result) { return result === true; }));\n // this.fireChildActivationStart(check.path),\n };\n /**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\n PreActivation.prototype.fireActivationStart = function (snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n };\n /**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\n PreActivation.prototype.fireChildActivationStart = function (snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n };\n PreActivation.prototype.runCanActivate = function (future) {\n var _this = this;\n var canActivate = future.routeConfig ? future.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0)\n return of(true);\n var obs = from(canActivate).pipe(map(function (c) {\n var guard = _this.getToken(c, future);\n var observable;\n if (guard.canActivate) {\n observable = wrapIntoObservable(guard.canActivate(future, _this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, _this.future));\n }\n return observable.pipe(first());\n }));\n return andObservables(obs);\n };\n PreActivation.prototype.runCanActivateChild = function (path) {\n var _this = this;\n var future = path[path.length - 1];\n var canActivateChildGuards = path.slice(0, path.length - 1)\n .reverse()\n .map(function (p) { return _this.extractCanActivateChild(p); })\n .filter(function (_) { return _ !== null; });\n return andObservables(from(canActivateChildGuards).pipe(map(function (d) {\n var obs = from(d.guards).pipe(map(function (c) {\n var guard = _this.getToken(c, d.node);\n var observable;\n if (guard.canActivateChild) {\n observable = wrapIntoObservable(guard.canActivateChild(future, _this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, _this.future));\n }\n return observable.pipe(first());\n }));\n return andObservables(obs);\n })));\n };\n PreActivation.prototype.extractCanActivateChild = function (p) {\n var canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0)\n return null;\n return { node: p, guards: canActivateChild };\n };\n PreActivation.prototype.runCanDeactivate = function (component, curr) {\n var _this = this;\n var canDeactivate = curr && curr.routeConfig ? curr.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0)\n return of(true);\n var canDeactivate$ = from(canDeactivate).pipe(mergeMap(function (c) {\n var guard = _this.getToken(c, curr);\n var observable;\n if (guard.canDeactivate) {\n observable =\n wrapIntoObservable(guard.canDeactivate(component, curr, _this.curr, _this.future));\n }\n else {\n observable = wrapIntoObservable(guard(component, curr, _this.curr, _this.future));\n }\n return observable.pipe(first());\n }));\n return canDeactivate$.pipe(every(function (result) { return result === true; }));\n };\n PreActivation.prototype.runResolve = function (future, paramsInheritanceStrategy) {\n var resolve = future._resolve;\n return this.resolveNode(resolve, future).pipe(map(function (resolvedData) {\n future._resolvedData = resolvedData;\n future.data = __assign({}, future.data, inheritedParamsDataResolve(future, paramsInheritanceStrategy).resolve);\n return null;\n }));\n };\n PreActivation.prototype.resolveNode = function (resolve, future) {\n var _this = this;\n var keys = Object.keys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n if (keys.length === 1) {\n var key_1 = keys[0];\n return this.getResolver(resolve[key_1], future).pipe(map(function (value) {\n var _a;\n return _a = {}, _a[key_1] = value, _a;\n }));\n }\n var data = {};\n var runningResolvers$ = from(keys).pipe(mergeMap(function (key) {\n return _this.getResolver(resolve[key], future).pipe(map(function (value) {\n data[key] = value;\n return value;\n }));\n }));\n return runningResolvers$.pipe(last(), map(function () { return data; }));\n };\n PreActivation.prototype.getResolver = function (injectionToken, future) {\n var resolver = this.getToken(injectionToken, future);\n return resolver.resolve ? wrapIntoObservable(resolver.resolve(future, this.future)) :\n wrapIntoObservable(resolver(future, this.future));\n };\n PreActivation.prototype.getToken = function (token, snapshot) {\n var config = closestLoadedConfig(snapshot);\n var injector = config ? config.module.injector : this.moduleInjector;\n return injector.get(token);\n };\n return PreActivation;\n}());\nfunction closestLoadedConfig(snapshot) {\n if (!snapshot)\n return null;\n for (var s = snapshot.parent; s; s = s.parent) {\n var route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NoMatch$1 = /** @class */ (function () {\n function NoMatch() {\n }\n return NoMatch;\n}());\nfunction recognize(rootComponentType, config, urlTree, url, paramsInheritanceStrategy, relativeLinkResolution) {\n if (paramsInheritanceStrategy === void 0) { paramsInheritanceStrategy = 'emptyOnly'; }\n if (relativeLinkResolution === void 0) { relativeLinkResolution = 'legacy'; }\n return new Recognizer(rootComponentType, config, urlTree, url, paramsInheritanceStrategy, relativeLinkResolution)\n .recognize();\n}\nvar Recognizer = /** @class */ (function () {\n function Recognizer(rootComponentType, config, urlTree, url, paramsInheritanceStrategy, relativeLinkResolution) {\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.url = url;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n this.relativeLinkResolution = relativeLinkResolution;\n }\n Recognizer.prototype.recognize = function () {\n try {\n var rootSegmentGroup = split$1(this.urlTree.root, [], [], this.config, this.relativeLinkResolution).segmentGroup;\n var children = this.processSegmentGroup(this.config, rootSegmentGroup, PRIMARY_OUTLET);\n var root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(__assign({}, this.urlTree.queryParams)), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, this.urlTree.root, -1, {});\n var rootNode = new TreeNode(root, children);\n var routeState = new RouterStateSnapshot(this.url, rootNode);\n this.inheritParamsAndData(routeState._root);\n return of(routeState);\n }\n catch (e) {\n return new Observable(function (obs) { return obs.error(e); });\n }\n };\n Recognizer.prototype.inheritParamsAndData = function (routeNode) {\n var _this = this;\n var route = routeNode.value;\n var i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(function (n) { return _this.inheritParamsAndData(n); });\n };\n Recognizer.prototype.processSegmentGroup = function (config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(config, segmentGroup);\n }\n return this.processSegment(config, segmentGroup, segmentGroup.segments, outlet);\n };\n Recognizer.prototype.processChildren = function (config, segmentGroup) {\n var _this = this;\n var children = mapChildrenIntoArray(segmentGroup, function (child, childOutlet) { return _this.processSegmentGroup(config, child, childOutlet); });\n checkOutletNameUniqueness(children);\n sortActivatedRouteSnapshots(children);\n return children;\n };\n Recognizer.prototype.processSegment = function (config, segmentGroup, segments, outlet) {\n var e_1, _a;\n try {\n for (var config_1 = __values(config), config_1_1 = config_1.next(); !config_1_1.done; config_1_1 = config_1.next()) {\n var r = config_1_1.value;\n try {\n return this.processSegmentAgainstRoute(r, segmentGroup, segments, outlet);\n }\n catch (e) {\n if (!(e instanceof NoMatch$1))\n throw e;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (config_1_1 && !config_1_1.done && (_a = config_1.return)) _a.call(config_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return [];\n }\n throw new NoMatch$1();\n };\n Recognizer.prototype.noLeftoversInUrl = function (segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n };\n Recognizer.prototype.processSegmentAgainstRoute = function (route, rawSegment, segments, outlet) {\n if (route.redirectTo)\n throw new NoMatch$1();\n if ((route.outlet || PRIMARY_OUTLET) !== outlet)\n throw new NoMatch$1();\n var snapshot;\n var consumedSegments = [];\n var rawSlicedSegments = [];\n if (route.path === '**') {\n var params = segments.length > 0 ? last$1(segments).parameters : {};\n snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze(__assign({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), outlet, route.component, route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + segments.length, getResolve(route));\n }\n else {\n var result = match$1(rawSegment, route, segments);\n consumedSegments = result.consumedSegments;\n rawSlicedSegments = segments.slice(result.lastChild);\n snapshot = new ActivatedRouteSnapshot(consumedSegments, result.parameters, Object.freeze(__assign({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), outlet, route.component, route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + consumedSegments.length, getResolve(route));\n }\n var childConfig = getChildConfig(route);\n var _a = split$1(rawSegment, consumedSegments, rawSlicedSegments, childConfig, this.relativeLinkResolution), segmentGroup = _a.segmentGroup, slicedSegments = _a.slicedSegments;\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n var children_1 = this.processChildren(childConfig, segmentGroup);\n return [new TreeNode(snapshot, children_1)];\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return [new TreeNode(snapshot, [])];\n }\n var children = this.processSegment(childConfig, segmentGroup, slicedSegments, PRIMARY_OUTLET);\n return [new TreeNode(snapshot, children)];\n };\n return Recognizer;\n}());\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort(function (a, b) {\n if (a.value.outlet === PRIMARY_OUTLET)\n return -1;\n if (b.value.outlet === PRIMARY_OUTLET)\n return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\nfunction getChildConfig(route) {\n if (route.children) {\n return route.children;\n }\n if (route.loadChildren) {\n return route._loadedConfig.routes;\n }\n return [];\n}\nfunction match$1(segmentGroup, route, segments) {\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n throw new NoMatch$1();\n }\n return { consumedSegments: [], lastChild: 0, parameters: {} };\n }\n var matcher = route.matcher || defaultUrlMatcher;\n var res = matcher(segments, segmentGroup, route);\n if (!res)\n throw new NoMatch$1();\n var posParams = {};\n forEach(res.posParams, function (v, k) { posParams[k] = v.path; });\n var parameters = res.consumed.length > 0 ? __assign({}, posParams, res.consumed[res.consumed.length - 1].parameters) :\n posParams;\n return { consumedSegments: res.consumed, lastChild: res.consumed.length, parameters: parameters };\n}\nfunction checkOutletNameUniqueness(nodes) {\n var names = {};\n nodes.forEach(function (n) {\n var routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n var p = routeWithSameOutletName.url.map(function (s) { return s.toString(); }).join('/');\n var c = n.value.url.map(function (s) { return s.toString(); }).join('/');\n throw new Error(\"Two segments cannot have the same outlet name: '\" + p + \"' and '\" + c + \"'.\");\n }\n names[n.value.outlet] = n.value;\n });\n}\nfunction getSourceSegmentGroup(segmentGroup) {\n var s = segmentGroup;\n while (s._sourceSegment) {\n s = s._sourceSegment;\n }\n return s;\n}\nfunction getPathIndexShift(segmentGroup) {\n var s = segmentGroup;\n var res = (s._segmentIndexShift ? s._segmentIndexShift : 0);\n while (s._sourceSegment) {\n s = s._sourceSegment;\n res += (s._segmentIndexShift ? s._segmentIndexShift : 0);\n }\n return res - 1;\n}\nfunction split$1(segmentGroup, consumedSegments, slicedSegments, config, relativeLinkResolution) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n var s_1 = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(segmentGroup, consumedSegments, config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n s_1._sourceSegment = segmentGroup;\n s_1._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s_1, slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n var s_2 = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children, relativeLinkResolution));\n s_2._sourceSegment = segmentGroup;\n s_2._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s_2, slicedSegments: slicedSegments };\n }\n var s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments: slicedSegments };\n}\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children, relativeLinkResolution) {\n var e_2, _a;\n var res = {};\n try {\n for (var routes_1 = __values(routes), routes_1_1 = routes_1.next(); !routes_1_1.done; routes_1_1 = routes_1.next()) {\n var r = routes_1_1.value;\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet$1(r)]) {\n var s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n if (relativeLinkResolution === 'legacy') {\n s._segmentIndexShift = segmentGroup.segments.length;\n }\n else {\n s._segmentIndexShift = consumedSegments.length;\n }\n res[getOutlet$1(r)] = s;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (routes_1_1 && !routes_1_1.done && (_a = routes_1.return)) _a.call(routes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return __assign({}, children, res);\n}\nfunction createChildrenForEmptyPaths(segmentGroup, consumedSegments, routes, primarySegment) {\n var e_3, _a;\n var res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n primarySegment._sourceSegment = segmentGroup;\n primarySegment._segmentIndexShift = consumedSegments.length;\n try {\n for (var routes_2 = __values(routes), routes_2_1 = routes_2.next(); !routes_2_1.done; routes_2_1 = routes_2.next()) {\n var r = routes_2_1.value;\n if (r.path === '' && getOutlet$1(r) !== PRIMARY_OUTLET) {\n var s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n res[getOutlet$1(r)] = s;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (routes_2_1 && !routes_2_1.done && (_a = routes_2.return)) _a.call(routes_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return res;\n}\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(function (r) { return emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet$1(r) !== PRIMARY_OUTLET; });\n}\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(function (r) { return emptyPathMatch(segmentGroup, slicedSegments, r); });\n}\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo === undefined;\n}\nfunction getOutlet$1(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\nfunction getData(route) {\n return route.data || {};\n}\nfunction getResolve(route) {\n return route.resolve || {};\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Provides a way to customize when activated routes get reused.\n *\n * @experimental\n */\nvar RouteReuseStrategy = /** @class */ (function () {\n function RouteReuseStrategy() {\n }\n return RouteReuseStrategy;\n}());\n/**\n * Does not detach any subtrees. Reuses routes as long as their route config is the same.\n */\nvar DefaultRouteReuseStrategy = /** @class */ (function () {\n function DefaultRouteReuseStrategy() {\n }\n DefaultRouteReuseStrategy.prototype.shouldDetach = function (route) { return false; };\n DefaultRouteReuseStrategy.prototype.store = function (route, detachedTree) { };\n DefaultRouteReuseStrategy.prototype.shouldAttach = function (route) { return false; };\n DefaultRouteReuseStrategy.prototype.retrieve = function (route) { return null; };\n DefaultRouteReuseStrategy.prototype.shouldReuseRoute = function (future, curr) {\n return future.routeConfig === curr.routeConfig;\n };\n return DefaultRouteReuseStrategy;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @docsNotRequired\n * @experimental\n */\nvar ROUTES = new InjectionToken('ROUTES');\nvar RouterConfigLoader = /** @class */ (function () {\n function RouterConfigLoader(loader, compiler, onLoadStartListener, onLoadEndListener) {\n this.loader = loader;\n this.compiler = compiler;\n this.onLoadStartListener = onLoadStartListener;\n this.onLoadEndListener = onLoadEndListener;\n }\n RouterConfigLoader.prototype.load = function (parentInjector, route) {\n var _this = this;\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n var moduleFactory$ = this.loadModuleFactory(route.loadChildren);\n return moduleFactory$.pipe(map(function (factory) {\n if (_this.onLoadEndListener) {\n _this.onLoadEndListener(route);\n }\n var module = factory.create(parentInjector);\n return new LoadedRouterConfig(flatten(module.injector.get(ROUTES)).map(standardizeConfig), module);\n }));\n };\n RouterConfigLoader.prototype.loadModuleFactory = function (loadChildren) {\n var _this = this;\n if (typeof loadChildren === 'string') {\n return from(this.loader.load(loadChildren));\n }\n else {\n return wrapIntoObservable(loadChildren()).pipe(mergeMap(function (t) {\n if (t instanceof NgModuleFactory) {\n return of(t);\n }\n else {\n return from(_this.compiler.compileModuleAsync(t));\n }\n }));\n }\n };\n return RouterConfigLoader;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Provides a way to migrate AngularJS applications to Angular.\n *\n * @experimental\n */\nvar UrlHandlingStrategy = /** @class */ (function () {\n function UrlHandlingStrategy() {\n }\n return UrlHandlingStrategy;\n}());\n/**\n * @experimental\n */\nvar DefaultUrlHandlingStrategy = /** @class */ (function () {\n function DefaultUrlHandlingStrategy() {\n }\n DefaultUrlHandlingStrategy.prototype.shouldProcessUrl = function (url) { return true; };\n DefaultUrlHandlingStrategy.prototype.extract = function (url) { return url; };\n DefaultUrlHandlingStrategy.prototype.merge = function (newUrlPart, wholeUrl) { return newUrlPart; };\n return DefaultUrlHandlingStrategy;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction defaultErrorHandler(error) {\n throw error;\n}\nfunction defaultMalformedUriErrorHandler(error, urlSerializer, url) {\n return urlSerializer.parse('/');\n}\n/**\n * @internal\n */\nfunction defaultRouterHook(snapshot, runExtras) {\n return of(null);\n}\n/**\n * @description\n *\n * Provides the navigation and url manipulation capabilities.\n *\n * See `Routes` for more details and examples.\n *\n * @ngModule RouterModule\n *\n *\n */\nvar Router = /** @class */ (function () {\n /**\n * Creates the router service.\n */\n // TODO: vsavkin make internal after the final is out.\n function Router(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config) {\n var _this = this;\n this.rootComponentType = rootComponentType;\n this.urlSerializer = urlSerializer;\n this.rootContexts = rootContexts;\n this.location = location;\n this.config = config;\n this.navigations = new BehaviorSubject(null);\n this.navigationId = 0;\n this.events = new Subject();\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See `ErrorHandler` for more information.\n */\n this.errorHandler = defaultErrorHandler;\n /**\n * Malformed uri error handler is invoked when `Router.parseUrl(url)` throws an\n * error due to containing an invalid character. The most common case would be a `%` sign\n * that's not encoded and is not part of a percent encoded sequence.\n */\n this.malformedUriErrorHandler = defaultMalformedUriErrorHandler;\n /**\n * Indicates if at least one navigation happened.\n */\n this.navigated = false;\n this.lastSuccessfulId = -1;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * @internal\n */\n this.hooks = {\n beforePreactivation: defaultRouterHook,\n afterPreactivation: defaultRouterHook\n };\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n */\n this.urlHandlingStrategy = new DefaultUrlHandlingStrategy();\n this.routeReuseStrategy = new DefaultRouteReuseStrategy();\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n */\n this.onSameUrlNavigation = 'ignore';\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n */\n this.paramsInheritanceStrategy = 'emptyOnly';\n /**\n * Defines when the router updates the browser URL. The default behavior is to update after\n * successful navigation. However, some applications may prefer a mode where the URL gets\n * updated at the beginning of navigation. The most common use case would be updating the\n * URL early so if navigation fails, you can show an error message with the URL that failed.\n * Available options are:\n *\n * - `'deferred'`, the default, updates the browser URL after navigation has finished.\n * - `'eager'`, updates browser URL at the beginning of navigation.\n */\n this.urlUpdateStrategy = 'deferred';\n /**\n * See {@link RouterModule} for more information.\n */\n this.relativeLinkResolution = 'legacy';\n var onLoadStart = function (r) { return _this.triggerEvent(new RouteConfigLoadStart(r)); };\n var onLoadEnd = function (r) { return _this.triggerEvent(new RouteConfigLoadEnd(r)); };\n this.ngModule = injector.get(NgModuleRef);\n this.resetConfig(config);\n this.currentUrlTree = createEmptyUrlTree();\n this.rawUrlTree = this.currentUrlTree;\n this.configLoader = new RouterConfigLoader(loader, compiler, onLoadStart, onLoadEnd);\n this.routerState = createEmptyState(this.currentUrlTree, this.rootComponentType);\n this.processNavigations();\n }\n /**\n * @internal\n * TODO: this should be removed once the constructor of the router made internal\n */\n Router.prototype.resetRootComponentType = function (rootComponentType) {\n this.rootComponentType = rootComponentType;\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = this.rootComponentType;\n };\n /**\n * Sets up the location change listener and performs the initial navigation.\n */\n Router.prototype.initialNavigation = function () {\n this.setUpLocationChangeListener();\n if (this.navigationId === 0) {\n this.navigateByUrl(this.location.path(true), { replaceUrl: true });\n }\n };\n /**\n * Sets up the location change listener.\n */\n Router.prototype.setUpLocationChangeListener = function () {\n var _this = this;\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.locationSubscription) {\n this.locationSubscription = this.location.subscribe(function (change) {\n var rawUrlTree = _this.parseUrl(change['url']);\n var source = change['type'] === 'popstate' ? 'popstate' : 'hashchange';\n var state = change.state && change.state.navigationId ?\n { navigationId: change.state.navigationId } :\n null;\n setTimeout(function () { _this.scheduleNavigation(rawUrlTree, source, state, { replaceUrl: true }); }, 0);\n });\n }\n };\n Object.defineProperty(Router.prototype, \"url\", {\n /** The current url */\n get: function () { return this.serializeUrl(this.currentUrlTree); },\n enumerable: true,\n configurable: true\n });\n /** @internal */\n Router.prototype.triggerEvent = function (e) { this.events.next(e); };\n /**\n * Resets the configuration used for navigation and generating links.\n *\n * ### Usage\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n */\n Router.prototype.resetConfig = function (config) {\n validateConfig(config);\n this.config = config.map(standardizeConfig);\n this.navigated = false;\n this.lastSuccessfulId = -1;\n };\n /** @docsNotRequired */\n Router.prototype.ngOnDestroy = function () { this.dispose(); };\n /** Disposes of the router */\n Router.prototype.dispose = function () {\n if (this.locationSubscription) {\n this.locationSubscription.unsubscribe();\n this.locationSubscription = null;\n }\n };\n /**\n * Applies an array of commands to the current url tree and creates a new url tree.\n *\n * When given an activate route, applies the given commands starting from the route.\n * When not given a route, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it, you\n * // can do the following:\n *\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n * ```\n */\n Router.prototype.createUrlTree = function (commands, navigationExtras) {\n if (navigationExtras === void 0) { navigationExtras = {}; }\n var relativeTo = navigationExtras.relativeTo, queryParams = navigationExtras.queryParams, fragment = navigationExtras.fragment, preserveQueryParams = navigationExtras.preserveQueryParams, queryParamsHandling = navigationExtras.queryParamsHandling, preserveFragment = navigationExtras.preserveFragment;\n if (isDevMode() && preserveQueryParams && console && console.warn) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n var a = relativeTo || this.routerState.root;\n var f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n var q = null;\n if (queryParamsHandling) {\n switch (queryParamsHandling) {\n case 'merge':\n q = __assign({}, this.currentUrlTree.queryParams, queryParams);\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n }\n else {\n q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n return createUrlTree(a, this.currentUrlTree, commands, q, f);\n };\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * In opposite to `navigate`, `navigateByUrl` takes a whole URL\n * and does not apply any delta to the current one.\n */\n Router.prototype.navigateByUrl = function (url, extras) {\n if (extras === void 0) { extras = { skipLocationChange: false }; }\n var urlTree = url instanceof UrlTree ? url : this.parseUrl(url);\n var mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, 'imperative', null, extras);\n };\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current\n * URL.\n */\n Router.prototype.navigate = function (commands, extras) {\n if (extras === void 0) { extras = { skipLocationChange: false }; }\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n };\n /** Serializes a `UrlTree` into a string */\n Router.prototype.serializeUrl = function (url) { return this.urlSerializer.serialize(url); };\n /** Parses a string into a `UrlTree` */\n Router.prototype.parseUrl = function (url) {\n var urlTree;\n try {\n urlTree = this.urlSerializer.parse(url);\n }\n catch (e) {\n urlTree = this.malformedUriErrorHandler(e, this.urlSerializer, url);\n }\n return urlTree;\n };\n /** Returns whether the url is activated */\n Router.prototype.isActive = function (url, exact) {\n if (url instanceof UrlTree) {\n return containsTree(this.currentUrlTree, url, exact);\n }\n var urlTree = this.parseUrl(url);\n return containsTree(this.currentUrlTree, urlTree, exact);\n };\n Router.prototype.removeEmptyProps = function (params) {\n return Object.keys(params).reduce(function (result, key) {\n var value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n };\n Router.prototype.processNavigations = function () {\n var _this = this;\n this.navigations\n .pipe(concatMap(function (nav) {\n if (nav) {\n _this.executeScheduledNavigation(nav);\n // a failed navigation should not stop the router from processing\n // further navigations => the catch\n return nav.promise.catch(function () { });\n }\n else {\n return of(null);\n }\n }))\n .subscribe(function () { });\n };\n Router.prototype.scheduleNavigation = function (rawUrl, source, state, extras) {\n var lastNavigation = this.navigations.value;\n // If the user triggers a navigation imperatively (e.g., by using navigateByUrl),\n // and that navigation results in 'replaceState' that leads to the same URL,\n // we should skip those.\n if (lastNavigation && source !== 'imperative' && lastNavigation.source === 'imperative' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a popstate was emitted first.\n if (lastNavigation && source == 'hashchange' && lastNavigation.source === 'popstate' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a hashchange was emitted first.\n if (lastNavigation && source == 'popstate' && lastNavigation.source === 'hashchange' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n var resolve = null;\n var reject = null;\n var promise = new Promise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n var id = ++this.navigationId;\n this.navigations.next({ id: id, source: source, state: state, rawUrl: rawUrl, extras: extras, resolve: resolve, reject: reject, promise: promise });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch(function (e) { return Promise.reject(e); });\n };\n Router.prototype.executeScheduledNavigation = function (_a) {\n var _this = this;\n var id = _a.id, rawUrl = _a.rawUrl, extras = _a.extras, resolve = _a.resolve, reject = _a.reject, source = _a.source, state = _a.state;\n var url = this.urlHandlingStrategy.extract(rawUrl);\n var urlTransition = !this.navigated || url.toString() !== this.currentUrlTree.toString();\n if ((this.onSameUrlNavigation === 'reload' ? true : urlTransition) &&\n this.urlHandlingStrategy.shouldProcessUrl(rawUrl)) {\n if (this.urlUpdateStrategy === 'eager' && !extras.skipLocationChange) {\n this.setBrowserUrl(rawUrl, !!extras.replaceUrl, id);\n }\n this.events\n .next(new NavigationStart(id, this.serializeUrl(url), source, state));\n Promise.resolve()\n .then(function (_) { return _this.runNavigate(url, rawUrl, !!extras.skipLocationChange, !!extras.replaceUrl, id, null); })\n .then(resolve, reject);\n // we cannot process the current URL, but we could process the previous one =>\n // we need to do some cleanup\n }\n else if (urlTransition && this.rawUrlTree &&\n this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)) {\n this.events\n .next(new NavigationStart(id, this.serializeUrl(url), source, state));\n Promise.resolve()\n .then(function (_) { return _this.runNavigate(url, rawUrl, false, false, id, createEmptyState(url, _this.rootComponentType).snapshot); })\n .then(resolve, reject);\n }\n else {\n this.rawUrlTree = rawUrl;\n resolve(null);\n }\n };\n Router.prototype.runNavigate = function (url, rawUrl, skipLocationChange, replaceUrl, id, precreatedState) {\n var _this = this;\n if (id !== this.navigationId) {\n this.events\n .next(new NavigationCancel(id, this.serializeUrl(url), \"Navigation ID \" + id + \" is not equal to the current navigation id \" + this.navigationId));\n return Promise.resolve(false);\n }\n return new Promise(function (resolvePromise, rejectPromise) {\n // create an observable of the url and route state snapshot\n // this operation do not result in any side effects\n var urlAndSnapshot$;\n if (!precreatedState) {\n var moduleInjector = _this.ngModule.injector;\n var redirectsApplied$ = applyRedirects(moduleInjector, _this.configLoader, _this.urlSerializer, url, _this.config);\n urlAndSnapshot$ = redirectsApplied$.pipe(mergeMap(function (appliedUrl) {\n return recognize(_this.rootComponentType, _this.config, appliedUrl, _this.serializeUrl(appliedUrl), _this.paramsInheritanceStrategy, _this.relativeLinkResolution)\n .pipe(map(function (snapshot) {\n _this.events\n .next(new RoutesRecognized(id, _this.serializeUrl(url), _this.serializeUrl(appliedUrl), snapshot));\n return { appliedUrl: appliedUrl, snapshot: snapshot };\n }));\n }));\n }\n else {\n urlAndSnapshot$ = of({ appliedUrl: url, snapshot: precreatedState });\n }\n var beforePreactivationDone$ = urlAndSnapshot$.pipe(mergeMap(function (p) {\n if (typeof p === 'boolean')\n return of(p);\n return _this.hooks\n .beforePreactivation(p.snapshot, {\n navigationId: id,\n appliedUrlTree: url,\n rawUrlTree: rawUrl, skipLocationChange: skipLocationChange, replaceUrl: replaceUrl,\n })\n .pipe(map(function () { return p; }));\n }));\n // run preactivation: guards and data resolvers\n var preActivation;\n var preactivationSetup$ = beforePreactivationDone$.pipe(map(function (p) {\n if (typeof p === 'boolean')\n return p;\n var appliedUrl = p.appliedUrl, snapshot = p.snapshot;\n var moduleInjector = _this.ngModule.injector;\n preActivation = new PreActivation(snapshot, _this.routerState.snapshot, moduleInjector, function (evt) { return _this.triggerEvent(evt); });\n preActivation.initialize(_this.rootContexts);\n return { appliedUrl: appliedUrl, snapshot: snapshot };\n }));\n var preactivationCheckGuards$ = preactivationSetup$.pipe(mergeMap(function (p) {\n if (typeof p === 'boolean' || _this.navigationId !== id)\n return of(false);\n var appliedUrl = p.appliedUrl, snapshot = p.snapshot;\n _this.triggerEvent(new GuardsCheckStart(id, _this.serializeUrl(url), _this.serializeUrl(appliedUrl), snapshot));\n return preActivation.checkGuards().pipe(map(function (shouldActivate) {\n _this.triggerEvent(new GuardsCheckEnd(id, _this.serializeUrl(url), _this.serializeUrl(appliedUrl), snapshot, shouldActivate));\n return { appliedUrl: appliedUrl, snapshot: snapshot, shouldActivate: shouldActivate };\n }));\n }));\n var preactivationResolveData$ = preactivationCheckGuards$.pipe(mergeMap(function (p) {\n if (typeof p === 'boolean' || _this.navigationId !== id)\n return of(false);\n if (p.shouldActivate && preActivation.isActivating()) {\n _this.triggerEvent(new ResolveStart(id, _this.serializeUrl(url), _this.serializeUrl(p.appliedUrl), p.snapshot));\n return preActivation.resolveData(_this.paramsInheritanceStrategy).pipe(map(function () {\n _this.triggerEvent(new ResolveEnd(id, _this.serializeUrl(url), _this.serializeUrl(p.appliedUrl), p.snapshot));\n return p;\n }));\n }\n else {\n return of(p);\n }\n }));\n var preactivationDone$ = preactivationResolveData$.pipe(mergeMap(function (p) {\n if (typeof p === 'boolean' || _this.navigationId !== id)\n return of(false);\n return _this.hooks\n .afterPreactivation(p.snapshot, {\n navigationId: id,\n appliedUrlTree: url,\n rawUrlTree: rawUrl, skipLocationChange: skipLocationChange, replaceUrl: replaceUrl,\n })\n .pipe(map(function () { return p; }));\n }));\n // create router state\n // this operation has side effects => route state is being affected\n var routerState$ = preactivationDone$.pipe(map(function (p) {\n if (typeof p === 'boolean' || _this.navigationId !== id)\n return false;\n var appliedUrl = p.appliedUrl, snapshot = p.snapshot, shouldActivate = p.shouldActivate;\n if (shouldActivate) {\n var state = createRouterState(_this.routeReuseStrategy, snapshot, _this.routerState);\n return { appliedUrl: appliedUrl, state: state, shouldActivate: shouldActivate };\n }\n else {\n return { appliedUrl: appliedUrl, state: null, shouldActivate: shouldActivate };\n }\n }));\n _this.activateRoutes(routerState$, _this.routerState, _this.currentUrlTree, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise);\n });\n };\n /**\n * Performs the logic of activating routes. This is a synchronous process by default. While this\n * is a private method, it could be overridden to make activation asynchronous.\n */\n Router.prototype.activateRoutes = function (state, storedState, storedUrl, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise) {\n var _this = this;\n // applied the new router state\n // this operation has side effects\n var navigationIsSuccessful;\n state\n .forEach(function (p) {\n if (typeof p === 'boolean' || !p.shouldActivate || id !== _this.navigationId || !p.state) {\n navigationIsSuccessful = false;\n return;\n }\n var appliedUrl = p.appliedUrl, state = p.state;\n _this.currentUrlTree = appliedUrl;\n _this.rawUrlTree = _this.urlHandlingStrategy.merge(_this.currentUrlTree, rawUrl);\n _this.routerState = state;\n if (_this.urlUpdateStrategy === 'deferred' && !skipLocationChange) {\n _this.setBrowserUrl(_this.rawUrlTree, replaceUrl, id);\n }\n new ActivateRoutes(_this.routeReuseStrategy, state, storedState, function (evt) { return _this.triggerEvent(evt); })\n .activate(_this.rootContexts);\n navigationIsSuccessful = true;\n })\n .then(function () {\n if (navigationIsSuccessful) {\n _this.navigated = true;\n _this.lastSuccessfulId = id;\n _this.events\n .next(new NavigationEnd(id, _this.serializeUrl(url), _this.serializeUrl(_this.currentUrlTree)));\n resolvePromise(true);\n }\n else {\n _this.resetUrlToCurrentUrlTree();\n _this.events\n .next(new NavigationCancel(id, _this.serializeUrl(url), ''));\n resolvePromise(false);\n }\n }, function (e) {\n if (isNavigationCancelingError(e)) {\n _this.navigated = true;\n _this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n _this.events\n .next(new NavigationCancel(id, _this.serializeUrl(url), e.message));\n resolvePromise(false);\n }\n else {\n _this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n _this.events\n .next(new NavigationError(id, _this.serializeUrl(url), e));\n try {\n resolvePromise(_this.errorHandler(e));\n }\n catch (ee) {\n rejectPromise(ee);\n }\n }\n });\n };\n Router.prototype.setBrowserUrl = function (url, replaceUrl, id) {\n var path = this.urlSerializer.serialize(url);\n if (this.location.isCurrentPathEqualTo(path) || replaceUrl) {\n this.location.replaceState(path, '', { navigationId: id });\n }\n else {\n this.location.go(path, '', { navigationId: id });\n }\n };\n Router.prototype.resetStateAndUrl = function (storedState, storedUrl, rawUrl) {\n this.routerState = storedState;\n this.currentUrlTree = storedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n this.resetUrlToCurrentUrlTree();\n };\n Router.prototype.resetUrlToCurrentUrlTree = function () {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), '', { navigationId: this.lastSuccessfulId });\n };\n return Router;\n}());\nvar ActivateRoutes = /** @class */ (function () {\n function ActivateRoutes(routeReuseStrategy, futureState, currState, forwardEvent) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n }\n ActivateRoutes.prototype.activate = function (parentContexts) {\n var futureRoot = this.futureState._root;\n var currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n };\n // De-activate the child route that are not re-used for the future state\n ActivateRoutes.prototype.deactivateChildRoutes = function (futureNode, currNode, contexts) {\n var _this = this;\n var children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(function (futureChild) {\n var childOutletName = futureChild.value.outlet;\n _this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n forEach(children, function (v, childName) {\n _this.deactivateRouteAndItsChildren(v, contexts);\n });\n };\n ActivateRoutes.prototype.deactivateRoutes = function (futureNode, currNode, parentContext) {\n var future = futureNode.value;\n var curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n var context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n }\n else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n };\n ActivateRoutes.prototype.deactivateRouteAndItsChildren = function (route, parentContexts) {\n if (this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n }\n else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n };\n ActivateRoutes.prototype.detachAndStoreRouteSubtree = function (route, parentContexts) {\n var context = parentContexts.getContext(route.value.outlet);\n if (context && context.outlet) {\n var componentRef = context.outlet.detach();\n var contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, { componentRef: componentRef, route: route, contexts: contexts });\n }\n };\n ActivateRoutes.prototype.deactivateRouteAndOutlet = function (route, parentContexts) {\n var _this = this;\n var context = parentContexts.getContext(route.value.outlet);\n if (context) {\n var children = nodeChildrenAsMap(route);\n var contexts_1 = route.value.component ? context.children : parentContexts;\n forEach(children, function (v, k) { return _this.deactivateRouteAndItsChildren(v, contexts_1); });\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n }\n };\n ActivateRoutes.prototype.activateChildRoutes = function (futureNode, currNode, contexts) {\n var _this = this;\n var children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(function (c) {\n _this.activateRoutes(c, children[c.value.outlet], contexts);\n _this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n };\n ActivateRoutes.prototype.activateRoutes = function (futureNode, currNode, parentContexts) {\n var future = futureNode.value;\n var curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n var context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n }\n else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n var context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n var stored = this.routeReuseStrategy.retrieve(future.snapshot);\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRouteNodeAndItsChildren(stored.route);\n }\n else {\n var config = parentLoadedConfig(future.snapshot);\n var cmpFactoryResolver = config ? config.module.componentFactoryResolver : null;\n context.route = future;\n context.resolver = cmpFactoryResolver;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, cmpFactoryResolver);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n };\n return ActivateRoutes;\n}());\nfunction advanceActivatedRouteNodeAndItsChildren(node) {\n advanceActivatedRoute(node.value);\n node.children.forEach(advanceActivatedRouteNodeAndItsChildren);\n}\nfunction parentLoadedConfig(snapshot) {\n for (var s = snapshot.parent; s; s = s.parent) {\n var route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n if (route && route.component)\n return null;\n }\n return null;\n}\nfunction validateCommands(commands) {\n for (var i = 0; i < commands.length; i++) {\n var cmd = commands[i];\n if (cmd == null) {\n throw new Error(\"The requested path contains \" + cmd + \" segment at index \" + i);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Lets you link to specific routes in your app.\n *\n * Consider the following route configuration:\n * `[{ path: 'user/:name', component: UserCmp }]`.\n * When linking to this `user/:name` route, you use the `RouterLink` directive.\n *\n * If the link is static, you can use the directive as follows:\n * `<a routerLink=\"/user/bob\">link to user component</a>`\n *\n * If you use dynamic values to generate the link, you can pass an array of path\n * segments, followed by the params for each segment.\n *\n * For instance `['/team', teamId, 'user', userName, {details: true}]`\n * means that we want to generate a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one\n * (e.g., `['/team/11/user', userName, {details: true}]`).\n *\n * The first segment name can be prepended with `/`, `./`, or `../`:\n * * If the first segment begins with `/`, the router will look up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router will\n * instead look in the children of the current activated route.\n * * And if the first segment begins with `../`, the router will go up one level.\n *\n * You can set query params and fragment as follows:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">\n * link to user component\n * </a>\n * ```\n * RouterLink will use these to generate this link: `/user/bob#education?debug=true`.\n *\n * (Deprecated in v4.0.0 use `queryParamsHandling` instead) You can also tell the\n * directive to preserve the current query params and fragment:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" preserveQueryParams preserveFragment>\n * link to user component\n * </a>\n * ```\n *\n * You can tell the directive to how to handle queryParams, available options are:\n * - `'merge'`: merge the queryParams into the current queryParams\n * - `'preserve'`: preserve the current queryParams\n * - default/`''`: use the queryParams only\n *\n * Same options for {@link NavigationExtras#queryParamsHandling\n * NavigationExtras#queryParamsHandling}.\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">\n * link to user component\n * </a>\n * ```\n *\n * The router link directive always treats the provided input as a delta to the current url.\n *\n * For instance, if the current url is `/user/(box//aux:team)`.\n *\n * Then the following link `<a [routerLink]=\"['/user/jim']\">Jim</a>` will generate the link\n * `/user/(jim//aux:team)`.\n *\n * See {@link Router#createUrlTree createUrlTree} for more information.\n *\n * @ngModule RouterModule\n *\n *\n */\nvar RouterLink = /** @class */ (function () {\n function RouterLink(router, route, tabIndex, renderer, el) {\n this.router = router;\n this.route = route;\n this.commands = [];\n if (tabIndex == null) {\n renderer.setAttribute(el.nativeElement, 'tabindex', '0');\n }\n }\n Object.defineProperty(RouterLink.prototype, \"routerLink\", {\n set: function (commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RouterLink.prototype, \"preserveQueryParams\", {\n /**\n * @deprecated 4.0.0 use `queryParamsHandling` instead.\n */\n set: function (value) {\n if (isDevMode() && console && console.warn) {\n console.warn('preserveQueryParams is deprecated!, use queryParamsHandling instead.');\n }\n this.preserve = value;\n },\n enumerable: true,\n configurable: true\n });\n RouterLink.prototype.onClick = function () {\n var extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return true;\n };\n Object.defineProperty(RouterLink.prototype, \"urlTree\", {\n get: function () {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n },\n enumerable: true,\n configurable: true\n });\n RouterLink.decorators = [\n { type: Directive, args: [{ selector: ':not(a)[routerLink]' },] }\n ];\n /** @nocollapse */\n RouterLink.ctorParameters = function () { return [\n { type: Router },\n { type: ActivatedRoute },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n { type: Renderer2 },\n { type: ElementRef }\n ]; };\n RouterLink.propDecorators = {\n queryParams: [{ type: Input }],\n fragment: [{ type: Input }],\n queryParamsHandling: [{ type: Input }],\n preserveFragment: [{ type: Input }],\n skipLocationChange: [{ type: Input }],\n replaceUrl: [{ type: Input }],\n routerLink: [{ type: Input }],\n preserveQueryParams: [{ type: Input }],\n onClick: [{ type: HostListener, args: ['click',] }]\n };\n return RouterLink;\n}());\n/**\n * @description\n *\n * Lets you link to specific routes in your app.\n *\n * See `RouterLink` for more information.\n *\n * @ngModule RouterModule\n *\n *\n */\nvar RouterLinkWithHref = /** @class */ (function () {\n function RouterLinkWithHref(router, route, locationStrategy) {\n var _this = this;\n this.router = router;\n this.route = route;\n this.locationStrategy = locationStrategy;\n this.commands = [];\n this.subscription = router.events.subscribe(function (s) {\n if (s instanceof NavigationEnd) {\n _this.updateTargetUrlAndHref();\n }\n });\n }\n Object.defineProperty(RouterLinkWithHref.prototype, \"routerLink\", {\n set: function (commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RouterLinkWithHref.prototype, \"preserveQueryParams\", {\n set: function (value) {\n if (isDevMode() && console && console.warn) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n this.preserve = value;\n },\n enumerable: true,\n configurable: true\n });\n RouterLinkWithHref.prototype.ngOnChanges = function (changes) { this.updateTargetUrlAndHref(); };\n RouterLinkWithHref.prototype.ngOnDestroy = function () { this.subscription.unsubscribe(); };\n RouterLinkWithHref.prototype.onClick = function (button, ctrlKey, metaKey, shiftKey) {\n if (button !== 0 || ctrlKey || metaKey || shiftKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n var extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return false;\n };\n RouterLinkWithHref.prototype.updateTargetUrlAndHref = function () {\n this.href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree));\n };\n Object.defineProperty(RouterLinkWithHref.prototype, \"urlTree\", {\n get: function () {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n },\n enumerable: true,\n configurable: true\n });\n RouterLinkWithHref.decorators = [\n { type: Directive, args: [{ selector: 'a[routerLink]' },] }\n ];\n /** @nocollapse */\n RouterLinkWithHref.ctorParameters = function () { return [\n { type: Router },\n { type: ActivatedRoute },\n { type: LocationStrategy }\n ]; };\n RouterLinkWithHref.propDecorators = {\n target: [{ type: HostBinding, args: ['attr.target',] }, { type: Input }],\n queryParams: [{ type: Input }],\n fragment: [{ type: Input }],\n queryParamsHandling: [{ type: Input }],\n preserveFragment: [{ type: Input }],\n skipLocationChange: [{ type: Input }],\n replaceUrl: [{ type: Input }],\n href: [{ type: HostBinding }],\n routerLink: [{ type: Input }],\n preserveQueryParams: [{ type: Input }],\n onClick: [{ type: HostListener, args: ['click', ['$event.button', '$event.ctrlKey', '$event.metaKey', '$event.shiftKey'],] }]\n };\n return RouterLinkWithHref;\n}());\nfunction attrBoolValue(s) {\n return s === '' || !!s;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n *\n * @description\n *\n * Lets you add a CSS class to an element when the link's route becomes active.\n *\n * This directive lets you add a CSS class to an element when the link's route\n * becomes active.\n *\n * Consider the following example:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * When the url is either '/user' or '/user/bob', the active-link class will\n * be added to the `a` tag. If the url changes, the class will be removed.\n *\n * You can set more than one class, as follows:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>\n * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>\n * ```\n *\n * You can configure RouterLinkActive by passing `exact: true`. This will add the classes\n * only when the url matches the link exactly.\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:\n * true}\">Bob</a>\n * ```\n *\n * You can assign the RouterLinkActive instance to a template variable and directly check\n * the `isActive` status.\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">\n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * </a>\n * ```\n *\n * Finally, you can apply the RouterLinkActive directive to an ancestor of a RouterLink.\n *\n * ```\n * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">\n * <a routerLink=\"/user/jim\">Jim</a>\n * <a routerLink=\"/user/bob\">Bob</a>\n * </div>\n * ```\n *\n * This will set the active-link class on the div tag if the url is either '/user/jim' or\n * '/user/bob'.\n *\n * @ngModule RouterModule\n *\n *\n */\nvar RouterLinkActive = /** @class */ (function () {\n function RouterLinkActive(router, element, renderer, cdr) {\n var _this = this;\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.classes = [];\n this.isActive = false;\n this.routerLinkActiveOptions = { exact: false };\n this.subscription = router.events.subscribe(function (s) {\n if (s instanceof NavigationEnd) {\n _this.update();\n }\n });\n }\n RouterLinkActive.prototype.ngAfterContentInit = function () {\n var _this = this;\n this.links.changes.subscribe(function (_) { return _this.update(); });\n this.linksWithHrefs.changes.subscribe(function (_) { return _this.update(); });\n this.update();\n };\n Object.defineProperty(RouterLinkActive.prototype, \"routerLinkActive\", {\n set: function (data) {\n var classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(function (c) { return !!c; });\n },\n enumerable: true,\n configurable: true\n });\n RouterLinkActive.prototype.ngOnChanges = function (changes) { this.update(); };\n RouterLinkActive.prototype.ngOnDestroy = function () { this.subscription.unsubscribe(); };\n RouterLinkActive.prototype.update = function () {\n var _this = this;\n if (!this.links || !this.linksWithHrefs || !this.router.navigated)\n return;\n Promise.resolve().then(function () {\n var hasActiveLinks = _this.hasActiveLinks();\n if (_this.isActive !== hasActiveLinks) {\n _this.isActive = hasActiveLinks;\n _this.classes.forEach(function (c) {\n if (hasActiveLinks) {\n _this.renderer.addClass(_this.element.nativeElement, c);\n }\n else {\n _this.renderer.removeClass(_this.element.nativeElement, c);\n }\n });\n }\n });\n };\n RouterLinkActive.prototype.isLinkActive = function (router) {\n var _this = this;\n return function (link) {\n return router.isActive(link.urlTree, _this.routerLinkActiveOptions.exact);\n };\n };\n RouterLinkActive.prototype.hasActiveLinks = function () {\n return this.links.some(this.isLinkActive(this.router)) ||\n this.linksWithHrefs.some(this.isLinkActive(this.router));\n };\n RouterLinkActive.decorators = [\n { type: Directive, args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n },] }\n ];\n /** @nocollapse */\n RouterLinkActive.ctorParameters = function () { return [\n { type: Router },\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n ]; };\n RouterLinkActive.propDecorators = {\n links: [{ type: ContentChildren, args: [RouterLink, { descendants: true },] }],\n linksWithHrefs: [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] }],\n routerLinkActiveOptions: [{ type: Input }],\n routerLinkActive: [{ type: Input }]\n };\n return RouterLinkActive;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Store contextual information about a `RouterOutlet`\n *\n *\n */\nvar OutletContext = /** @class */ (function () {\n function OutletContext() {\n this.outlet = null;\n this.route = null;\n this.resolver = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n return OutletContext;\n}());\n/**\n * Store contextual information about the children (= nested) `RouterOutlet`\n *\n *\n */\nvar ChildrenOutletContexts = /** @class */ (function () {\n function ChildrenOutletContexts() {\n // contexts for child outlets, by name.\n this.contexts = new Map();\n }\n /** Called when a `RouterOutlet` directive is instantiated */\n ChildrenOutletContexts.prototype.onChildOutletCreated = function (childName, outlet) {\n var context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n };\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n */\n ChildrenOutletContexts.prototype.onChildOutletDestroyed = function (childName) {\n var context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n }\n };\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n */\n ChildrenOutletContexts.prototype.onOutletDeactivated = function () {\n var contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n };\n ChildrenOutletContexts.prototype.onOutletReAttached = function (contexts) { this.contexts = contexts; };\n ChildrenOutletContexts.prototype.getOrCreateContext = function (childName) {\n var context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n };\n ChildrenOutletContexts.prototype.getContext = function (childName) { return this.contexts.get(childName) || null; };\n return ChildrenOutletContexts;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Acts as a placeholder that Angular dynamically fills based on the current router state.\n *\n * ```\n * <router-outlet></router-outlet>\n * <router-outlet name='left'></router-outlet>\n * <router-outlet name='right'></router-outlet>\n * ```\n *\n * A router outlet will emit an activate event any time a new component is being instantiated,\n * and a deactivate event when it is being destroyed.\n *\n * ```\n * <router-outlet\n * (activate)='onActivate($event)'\n * (deactivate)='onDeactivate($event)'></router-outlet>\n * ```\n * @ngModule RouterModule\n *\n *\n */\nvar RouterOutlet = /** @class */ (function () {\n function RouterOutlet(parentContexts, location, resolver, name, changeDetector) {\n this.parentContexts = parentContexts;\n this.location = location;\n this.resolver = resolver;\n this.changeDetector = changeDetector;\n this.activated = null;\n this._activatedRoute = null;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n this.name = name || PRIMARY_OUTLET;\n parentContexts.onChildOutletCreated(this.name, this);\n }\n RouterOutlet.prototype.ngOnDestroy = function () { this.parentContexts.onChildOutletDestroyed(this.name); };\n RouterOutlet.prototype.ngOnInit = function () {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n var context = this.parentContexts.getContext(this.name);\n if (context && context.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n }\n else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.resolver || null);\n }\n }\n }\n };\n Object.defineProperty(RouterOutlet.prototype, \"isActivated\", {\n get: function () { return !!this.activated; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RouterOutlet.prototype, \"component\", {\n get: function () {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return this.activated.instance;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RouterOutlet.prototype, \"activatedRoute\", {\n get: function () {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return this._activatedRoute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RouterOutlet.prototype, \"activatedRouteData\", {\n get: function () {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n RouterOutlet.prototype.detach = function () {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n this.location.detach();\n var cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n return cmp;\n };\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n RouterOutlet.prototype.attach = function (ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n };\n RouterOutlet.prototype.deactivate = function () {\n if (this.activated) {\n var c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n };\n RouterOutlet.prototype.activateWith = function (activatedRoute, resolver) {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n var snapshot = activatedRoute._futureSnapshot;\n var component = snapshot.routeConfig.component;\n resolver = resolver || this.resolver;\n var factory = resolver.resolveComponentFactory(component);\n var childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n var injector = new OutletInjector(activatedRoute, childContexts, this.location.injector);\n this.activated = this.location.createComponent(factory, this.location.length, injector);\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.activateEvents.emit(this.activated.instance);\n };\n RouterOutlet.decorators = [\n { type: Directive, args: [{ selector: 'router-outlet', exportAs: 'outlet' },] }\n ];\n /** @nocollapse */\n RouterOutlet.ctorParameters = function () { return [\n { type: ChildrenOutletContexts },\n { type: ViewContainerRef },\n { type: ComponentFactoryResolver },\n { type: String, decorators: [{ type: Attribute, args: ['name',] }] },\n { type: ChangeDetectorRef }\n ]; };\n RouterOutlet.propDecorators = {\n activateEvents: [{ type: Output, args: ['activate',] }],\n deactivateEvents: [{ type: Output, args: ['deactivate',] }]\n };\n return RouterOutlet;\n}());\nvar OutletInjector = /** @class */ (function () {\n function OutletInjector(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n OutletInjector.prototype.get = function (token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n };\n return OutletInjector;\n}());\n\n/**\n*@license\n*Copyright Google Inc. All Rights Reserved.\n*\n*Use of this source code is governed by an MIT-style license that can be\n*found in the LICENSE file at https://angular.io/license\n*/\n/**\n * @description\n *\n * Provides a preloading strategy.\n *\n * @experimental\n */\nvar PreloadingStrategy = /** @class */ (function () {\n function PreloadingStrategy() {\n }\n return PreloadingStrategy;\n}());\n/**\n * @description\n *\n * Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * ```\n * RouteModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * @experimental\n */\nvar PreloadAllModules = /** @class */ (function () {\n function PreloadAllModules() {\n }\n PreloadAllModules.prototype.preload = function (route, fn) {\n return fn().pipe(catchError(function () { return of(null); }));\n };\n return PreloadAllModules;\n}());\n/**\n * @description\n *\n * Provides a preloading strategy that does not preload any modules.\n *\n * This strategy is enabled by default.\n *\n * @experimental\n */\nvar NoPreloading = /** @class */ (function () {\n function NoPreloading() {\n }\n NoPreloading.prototype.preload = function (route, fn) { return of(null); };\n return NoPreloading;\n}());\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n *\n */\nvar RouterPreloader = /** @class */ (function () {\n function RouterPreloader(router, moduleLoader, compiler, injector, preloadingStrategy) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n var onStartLoad = function (r) { return router.triggerEvent(new RouteConfigLoadStart(r)); };\n var onEndLoad = function (r) { return router.triggerEvent(new RouteConfigLoadEnd(r)); };\n this.loader = new RouterConfigLoader(moduleLoader, compiler, onStartLoad, onEndLoad);\n }\n RouterPreloader.prototype.setUpPreloading = function () {\n var _this = this;\n this.subscription =\n this.router.events\n .pipe(filter(function (e) { return e instanceof NavigationEnd; }), concatMap(function () { return _this.preload(); }))\n .subscribe(function () { });\n };\n RouterPreloader.prototype.preload = function () {\n var ngModule = this.injector.get(NgModuleRef);\n return this.processRoutes(ngModule, this.router.config);\n };\n // TODO(jasonaden): This class relies on code external to the class to call setUpPreloading. If\n // this hasn't been done, ngOnDestroy will fail as this.subscription will be undefined. This\n // should be refactored.\n RouterPreloader.prototype.ngOnDestroy = function () { this.subscription.unsubscribe(); };\n RouterPreloader.prototype.processRoutes = function (ngModule, routes) {\n var e_1, _a;\n var res = [];\n try {\n for (var routes_1 = __values(routes), routes_1_1 = routes_1.next(); !routes_1_1.done; routes_1_1 = routes_1.next()) {\n var route = routes_1_1.value;\n // we already have the config loaded, just recurse\n if (route.loadChildren && !route.canLoad && route._loadedConfig) {\n var childConfig = route._loadedConfig;\n res.push(this.processRoutes(childConfig.module, childConfig.routes));\n // no config loaded, fetch the config\n }\n else if (route.loadChildren && !route.canLoad) {\n res.push(this.preloadConfig(ngModule, route));\n // recurse into children\n }\n else if (route.children) {\n res.push(this.processRoutes(ngModule, route.children));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (routes_1_1 && !routes_1_1.done && (_a = routes_1.return)) _a.call(routes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return from(res).pipe(mergeAll(), map(function (_) { return void 0; }));\n };\n RouterPreloader.prototype.preloadConfig = function (ngModule, route) {\n var _this = this;\n return this.preloadingStrategy.preload(route, function () {\n var loaded$ = _this.loader.load(ngModule.injector, route);\n return loaded$.pipe(mergeMap(function (config) {\n route._loadedConfig = config;\n return _this.processRoutes(config.module, config.routes);\n }));\n });\n };\n RouterPreloader.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n RouterPreloader.ctorParameters = function () { return [\n { type: Router },\n { type: NgModuleFactoryLoader },\n { type: Compiler },\n { type: Injector },\n { type: PreloadingStrategy }\n ]; };\n return RouterPreloader;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar RouterScroller = /** @class */ (function () {\n function RouterScroller(router, \n /** @docsNotRequired */ viewportScroller, options) {\n if (options === void 0) { options = {}; }\n this.router = router;\n this.viewportScroller = viewportScroller;\n this.options = options;\n this.lastId = 0;\n this.lastSource = 'imperative';\n this.restoredId = 0;\n this.store = {};\n }\n RouterScroller.prototype.init = function () {\n // we want to disable the automatic scrolling because having two places\n // responsible for scrolling results race conditions, especially given\n // that browser don't implement this behavior consistently\n if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.setHistoryScrollRestoration('manual');\n }\n this.routerEventsSubscription = this.createScrollEvents();\n this.scrollEventsSubscription = this.consumeScrollEvents();\n };\n RouterScroller.prototype.createScrollEvents = function () {\n var _this = this;\n return this.router.events.subscribe(function (e) {\n if (e instanceof NavigationStart) {\n // store the scroll position of the current stable navigations.\n _this.store[_this.lastId] = _this.viewportScroller.getScrollPosition();\n _this.lastSource = e.navigationTrigger;\n _this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;\n }\n else if (e instanceof NavigationEnd) {\n _this.lastId = e.id;\n _this.scheduleScrollEvent(e, _this.router.parseUrl(e.urlAfterRedirects).fragment);\n }\n });\n };\n RouterScroller.prototype.consumeScrollEvents = function () {\n var _this = this;\n return this.router.events.subscribe(function (e) {\n if (!(e instanceof Scroll))\n return;\n // a popstate event. The pop state event will always ignore anchor scrolling.\n if (e.position) {\n if (_this.options.scrollPositionRestoration === 'top') {\n _this.viewportScroller.scrollToPosition([0, 0]);\n }\n else if (_this.options.scrollPositionRestoration === 'enabled') {\n _this.viewportScroller.scrollToPosition(e.position);\n }\n // imperative navigation \"forward\"\n }\n else {\n if (e.anchor && _this.options.anchorScrolling === 'enabled') {\n _this.viewportScroller.scrollToAnchor(e.anchor);\n }\n else if (_this.options.scrollPositionRestoration !== 'disabled') {\n _this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n });\n };\n RouterScroller.prototype.scheduleScrollEvent = function (routerEvent, anchor) {\n this.router.triggerEvent(new Scroll(routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null, anchor));\n };\n RouterScroller.prototype.ngOnDestroy = function () {\n if (this.routerEventsSubscription) {\n this.routerEventsSubscription.unsubscribe();\n }\n if (this.scrollEventsSubscription) {\n this.scrollEventsSubscription.unsubscribe();\n }\n };\n return RouterScroller;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Contains a list of directives\n *\n *\n */\nvar ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, EmptyOutletComponent];\n/**\n * @description\n *\n * Is used in DI to configure the router.\n *\n *\n */\nvar ROUTER_CONFIGURATION = new InjectionToken('ROUTER_CONFIGURATION');\n/**\n * @docsNotRequired\n */\nvar ROUTER_FORROOT_GUARD = new InjectionToken('ROUTER_FORROOT_GUARD');\nvar ROUTER_PROVIDERS = [\n Location,\n { provide: UrlSerializer, useClass: DefaultUrlSerializer },\n {\n provide: Router,\n useFactory: setupRouter,\n deps: [\n ApplicationRef, UrlSerializer, ChildrenOutletContexts, Location, Injector,\n NgModuleFactoryLoader, Compiler, ROUTES, ROUTER_CONFIGURATION,\n [UrlHandlingStrategy, new Optional()], [RouteReuseStrategy, new Optional()]\n ]\n },\n ChildrenOutletContexts,\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },\n RouterPreloader,\n NoPreloading,\n PreloadAllModules,\n { provide: ROUTER_CONFIGURATION, useValue: { enableTracing: false } },\n];\nfunction routerNgProbeToken() {\n return new NgProbeToken('Router', Router);\n}\n/**\n * @usageNotes\n *\n * RouterModule can be imported multiple times: once per lazily-loaded bundle.\n * Since the router deals with a global shared resource--location, we cannot have\n * more than one router service active.\n *\n * That is why there are two ways to create the module: `RouterModule.forRoot` and\n * `RouterModule.forChild`.\n *\n * * `forRoot` creates a module that contains all the directives, the given routes, and the router\n * service itself.\n * * `forChild` creates a module that contains all the directives and the given routes, but does not\n * include the router service.\n *\n * When registered at the root, the module should be used as follows\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * For submodules and lazy loaded submodules the module should be used as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @description\n *\n * Adds router directives and providers.\n *\n * Managing state transitions is one of the hardest parts of building applications. This is\n * especially true on the web, where you also need to ensure that the state is reflected in the URL.\n * In addition, we often want to split applications into multiple bundles and load them on demand.\n * Doing this transparently is not trivial.\n *\n * The Angular router solves these problems. Using the router, you can declaratively specify\n * application states, manage state transitions while taking care of the URL, and load bundles on\n * demand.\n *\n * [Read this developer guide](https://angular.io/docs/ts/latest/guide/router.html) to get an\n * overview of how the router should be used.\n *\n *\n */\nvar RouterModule = /** @class */ (function () {\n // Note: We are injecting the Router so it gets created eagerly...\n function RouterModule(guard, router) {\n }\n /**\n * Creates a module with all the router providers and directives. It also optionally sets up an\n * application listener to perform an initial navigation.\n *\n * Options (see `ExtraOptions`):\n * * `enableTracing` makes the router log all its internal events to the console.\n * * `useHash` enables the location strategy that uses the URL fragment instead of the history\n * API.\n * * `initialNavigation` disables the initial navigation.\n * * `errorHandler` provides a custom error handler.\n * * `preloadingStrategy` configures a preloading strategy (see `PreloadAllModules`).\n * * `onSameUrlNavigation` configures how the router handles navigation to the current URL. See\n * `ExtraOptions` for more details.\n * * `paramsInheritanceStrategy` defines how the router merges params, data and resolved data\n * from parent to child routes.\n */\n RouterModule.forRoot = function (routes, config) {\n return {\n ngModule: RouterModule,\n providers: [\n ROUTER_PROVIDERS,\n provideRoutes(routes),\n {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n },\n { provide: ROUTER_CONFIGURATION, useValue: config ? config : {} },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n deps: [\n PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], ROUTER_CONFIGURATION\n ]\n },\n {\n provide: RouterScroller,\n useFactory: createRouterScroller,\n deps: [Router, ViewportScroller, ROUTER_CONFIGURATION]\n },\n {\n provide: PreloadingStrategy,\n useExisting: config && config.preloadingStrategy ? config.preloadingStrategy :\n NoPreloading\n },\n { provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },\n provideRouterInitializer(),\n ],\n };\n };\n /**\n * Creates a module with all the router directives and a provider registering routes.\n */\n RouterModule.forChild = function (routes) {\n return { ngModule: RouterModule, providers: [provideRoutes(routes)] };\n };\n RouterModule.decorators = [\n { type: NgModule, args: [{\n declarations: ROUTER_DIRECTIVES,\n exports: ROUTER_DIRECTIVES,\n entryComponents: [EmptyOutletComponent]\n },] }\n ];\n /** @nocollapse */\n RouterModule.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ROUTER_FORROOT_GUARD,] }] },\n { type: Router, decorators: [{ type: Optional }] }\n ]; };\n return RouterModule;\n}());\nfunction createRouterScroller(router, viewportScroller, config) {\n if (config.scrollOffset) {\n viewportScroller.setOffset(config.scrollOffset);\n }\n return new RouterScroller(router, viewportScroller, config);\n}\nfunction provideLocationStrategy(platformLocationStrategy, baseHref, options) {\n if (options === void 0) { options = {}; }\n return options.useHash ? new HashLocationStrategy(platformLocationStrategy, baseHref) :\n new PathLocationStrategy(platformLocationStrategy, baseHref);\n}\nfunction provideForRootGuard(router) {\n if (router) {\n throw new Error(\"RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.\");\n }\n return 'guarded';\n}\n/**\n * @description\n *\n * Registers routes.\n *\n * ### Example\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)],\n * providers: [provideRoutes(EXTRA_ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n *\n */\nfunction provideRoutes(routes) {\n return [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, multi: true, useValue: routes },\n { provide: ROUTES, multi: true, useValue: routes },\n ];\n}\nfunction setupRouter(ref, urlSerializer, contexts, location, injector, loader, compiler, config, opts, urlHandlingStrategy, routeReuseStrategy) {\n if (opts === void 0) { opts = {}; }\n var router = new Router(null, urlSerializer, contexts, location, injector, loader, compiler, flatten(config));\n if (urlHandlingStrategy) {\n router.urlHandlingStrategy = urlHandlingStrategy;\n }\n if (routeReuseStrategy) {\n router.routeReuseStrategy = routeReuseStrategy;\n }\n if (opts.errorHandler) {\n router.errorHandler = opts.errorHandler;\n }\n if (opts.malformedUriErrorHandler) {\n router.malformedUriErrorHandler = opts.malformedUriErrorHandler;\n }\n if (opts.enableTracing) {\n var dom_1 = ɵgetDOM();\n router.events.subscribe(function (e) {\n dom_1.logGroup(\"Router Event: \" + e.constructor.name);\n dom_1.log(e.toString());\n dom_1.log(e);\n dom_1.logGroupEnd();\n });\n }\n if (opts.onSameUrlNavigation) {\n router.onSameUrlNavigation = opts.onSameUrlNavigation;\n }\n if (opts.paramsInheritanceStrategy) {\n router.paramsInheritanceStrategy = opts.paramsInheritanceStrategy;\n }\n if (opts.urlUpdateStrategy) {\n router.urlUpdateStrategy = opts.urlUpdateStrategy;\n }\n if (opts.relativeLinkResolution) {\n router.relativeLinkResolution = opts.relativeLinkResolution;\n }\n return router;\n}\nfunction rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * To initialize the router properly we need to do in two steps:\n *\n * We need to start the navigation in a APP_INITIALIZER to block the bootstrap if\n * a resolver or a guards executes asynchronously. Second, we need to actually run\n * activation in a BOOTSTRAP_LISTENER. We utilize the afterPreactivation\n * hook provided by the router to do that.\n *\n * The router navigation starts, reaches the point when preactivation is done, and then\n * pauses. It waits for the hook to be resolved. We then resolve it only in a bootstrap listener.\n */\nvar RouterInitializer = /** @class */ (function () {\n function RouterInitializer(injector) {\n this.injector = injector;\n this.initNavigation = false;\n this.resultOfPreactivationDone = new Subject();\n }\n RouterInitializer.prototype.appInitializer = function () {\n var _this = this;\n var p = this.injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n return p.then(function () {\n var resolve = null;\n var res = new Promise(function (r) { return resolve = r; });\n var router = _this.injector.get(Router);\n var opts = _this.injector.get(ROUTER_CONFIGURATION);\n if (_this.isLegacyDisabled(opts) || _this.isLegacyEnabled(opts)) {\n resolve(true);\n }\n else if (opts.initialNavigation === 'disabled') {\n router.setUpLocationChangeListener();\n resolve(true);\n }\n else if (opts.initialNavigation === 'enabled') {\n router.hooks.afterPreactivation = function () {\n // only the initial navigation should be delayed\n if (!_this.initNavigation) {\n _this.initNavigation = true;\n resolve(true);\n return _this.resultOfPreactivationDone;\n // subsequent navigations should not be delayed\n }\n else {\n return of(null);\n }\n };\n router.initialNavigation();\n }\n else {\n throw new Error(\"Invalid initialNavigation options: '\" + opts.initialNavigation + \"'\");\n }\n return res;\n });\n };\n RouterInitializer.prototype.bootstrapListener = function (bootstrappedComponentRef) {\n var opts = this.injector.get(ROUTER_CONFIGURATION);\n var preloader = this.injector.get(RouterPreloader);\n var routerScroller = this.injector.get(RouterScroller);\n var router = this.injector.get(Router);\n var ref = this.injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n if (this.isLegacyEnabled(opts)) {\n router.initialNavigation();\n }\n else if (this.isLegacyDisabled(opts)) {\n router.setUpLocationChangeListener();\n }\n preloader.setUpPreloading();\n routerScroller.init();\n router.resetRootComponentType(ref.componentTypes[0]);\n this.resultOfPreactivationDone.next(null);\n this.resultOfPreactivationDone.complete();\n };\n RouterInitializer.prototype.isLegacyEnabled = function (opts) {\n return opts.initialNavigation === 'legacy_enabled' || opts.initialNavigation === true ||\n opts.initialNavigation === undefined;\n };\n RouterInitializer.prototype.isLegacyDisabled = function (opts) {\n return opts.initialNavigation === 'legacy_disabled' || opts.initialNavigation === false;\n };\n RouterInitializer.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n RouterInitializer.ctorParameters = function () { return [\n { type: Injector }\n ]; };\n return RouterInitializer;\n}());\nfunction getAppInitializer(r) {\n return r.appInitializer.bind(r);\n}\nfunction getBootstrapListener(r) {\n return r.bootstrapListener.bind(r);\n}\n/**\n * A token for the router initializer that will be called after the app is bootstrapped.\n *\n * @experimental\n */\nvar ROUTER_INITIALIZER = new InjectionToken('Router Initializer');\nfunction provideRouterInitializer() {\n return [\n RouterInitializer,\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: getAppInitializer,\n deps: [RouterInitializer]\n },\n { provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener, deps: [RouterInitializer] },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER },\n ];\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar VERSION = new Version('6.1.0');\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ROUTER_FORROOT_GUARD as ɵangular_packages_router_router_a, RouterInitializer as ɵangular_packages_router_router_h, createRouterScroller as ɵangular_packages_router_router_c, getAppInitializer as ɵangular_packages_router_router_i, getBootstrapListener as ɵangular_packages_router_router_j, provideForRootGuard as ɵangular_packages_router_router_e, provideLocationStrategy as ɵangular_packages_router_router_d, provideRouterInitializer as ɵangular_packages_router_router_k, rootRoute as ɵangular_packages_router_router_g, routerNgProbeToken as ɵangular_packages_router_router_b, setupRouter as ɵangular_packages_router_router_f, RouterScroller as ɵangular_packages_router_router_n, Tree as ɵangular_packages_router_router_l, TreeNode as ɵangular_packages_router_router_m, RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, Scroll, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, EmptyOutletComponent as ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, flatten as ɵflatten };\n//# sourceMappingURL=router.js.map\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tOptional\n} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n/**\n * Build application's clickable tiles using this component.\n *\n * ## Basic usage\n *\n * ```html\n * <ibm-clickable-tile>\n * \t\ttile content\n * </ibm-clickable-tile>\n * ```\n */\n@Component({\n\tselector: \"ibm-clickable-tile\",\n\ttemplate: `\n\t<a\n\t\tibmLink\n\t\tclass=\"bx--tile bx--tile--clickable\"\n\t\ttabindex=\"0\"\n\t\t(click)=\"navigate($event)\"\n\t\t[href]=\"href\"\n\t\t[attr.target]=\"target\"\n\t\t[attr.aria-disabled]=\"disabled\">\n\t\t<ng-content></ng-content>\n\t</a>`\n})\nexport class ClickableTile {\n\t/**\n\t * Sets the `href` attribute on the `ibm-clickable-tile` element.\n\t */\n\t@Input() href = \"#\";\n\n\t/**\n\t * Sets the `target` attribute on the `ibm-clickable-tile` element.\n\t */\n\t@Input() target: string;\n\n\t/**\n\t * Set to `true` to disable the clickable tile.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * Array of commands to send to the router when the link is activated\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() route: any[];\n\n\t/**\n\t * Router options. Used in conjunction with `route`\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() routeExtras: any;\n\n\t/**\n\t * Emits the navigation status promise when the link is activated\n\t */\n\t@Output() navigation = new EventEmitter<Promise<boolean>>();\n\n\tconstructor(@Optional() protected router: Router) {}\n\n\tnavigate(event) {\n\t\tif (this.router && this.route) {\n\t\t\tevent.preventDefault();\n\t\t\tconst status = this.router.navigate(this.route, this.routeExtras);\n\t\t\tthis.navigation.emit(status);\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tElementRef,\n\tAfterContentInit\n} from \"@angular/core\";\nimport { I18n, Overridable } from \"./../i18n/i18n.module\";\nimport { merge } from \"./../utils/object\";\n\nexport interface ExpandableTileTranslations {\n\tEXPAND: string;\n\tCOLLAPSE: string;\n}\n\n@Component({\n\tselector: \"ibm-expandable-tile\",\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"bx--tile bx--tile--expandable\"\n\t\t\t[ngClass]=\"{'bx--tile--is-expanded' : expanded}\"\n\t\t\t[ngStyle]=\"{'max-height': expandedHeight + 'px'}\"\n\t\t\trole=\"button\"\n\t\t\ttabindex=\"0\"\n\t\t\t(click)=\"onClick()\">\n\t\t\t<button [attr.aria-label]=\"(expanded ? collapse : expand).subject | async\" class=\"bx--tile__chevron\">\n\t\t\t\t<svg *ngIf=\"!expanded\" width=\"12\" height=\"7\" viewBox=\"0 0 12 7\" role=\"img\">\n\t\t\t\t\t<title>{{expand.subject | async}}</title>\n\t\t\t\t\t<path fill-rule=\"nonzero\" d=\"M6.002 5.55L11.27 0l.726.685L6.003 7 0 .685.726 0z\"/>\n\t\t\t\t</svg>\n\t\t\t\t<svg *ngIf=\"expanded\" width=\"12\" height=\"7\" viewBox=\"0 0 12 7\" role=\"img\">\n\t\t\t\t\t<title>{{collapse.subject | async}}</title>\n\t\t\t\t\t<path fill-rule=\"nonzero\" d=\"M6.002 5.55L11.27 0l.726.685L6.003 7 0 .685.726 0z\"/>\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t\t<div class=\"bx--tile-content\">\n\t\t\t\t<ng-content select=\".bx--tile-content__above-the-fold\"></ng-content>\n\t\t\t\t<ng-content select=\".bx--tile-content__below-the-fold\"></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t`\n})\nexport class ExpandableTile implements AfterContentInit {\n\t@Input() expanded = false;\n\t/**\n\t * Expects an object that contains some or all of:\n\t * ```\n\t * {\n\t *\t\t\"EXPAND\": \"Expand\",\n\t *\t\t\"COLLAPSE\": \"Collapse\",\n\t * }\n\t * ```\n\t */\n\t@Input()\n\tset translations(value: ExpandableTileTranslations) {\n\t\tconst valueWithDefaults = merge(this.i18n.getMultiple(\"TILES\"), value);\n\t\tthis.expand.override(valueWithDefaults.EXPAND);\n\t\tthis.collapse.override(valueWithDefaults.COLLAPSE);\n\t}\n\n\ttileMaxHeight = 0;\n\telement = this.elementRef.nativeElement;\n\n\texpand = this.i18n.getOverridable(\"TILES.EXPAND\");\n\tcollapse = this.i18n.getOverridable(\"TILES.COLLAPSE\");\n\n\tconstructor(protected i18n: I18n, protected elementRef: ElementRef) {}\n\n\tngAfterContentInit() {\n\t\tthis.updateMaxHeight();\n\t}\n\n\tget expandedHeight() {\n\t\treturn this.tileMaxHeight + parseInt(getComputedStyle(this.element.querySelector(\".bx--tile\")).paddingBottom, 10);\n\t}\n\n\tupdateMaxHeight() {\n\t\tif (this.expanded) {\n\t\t\tthis.tileMaxHeight = this.element.querySelector(\".bx--tile-content\").getBoundingClientRect().height;\n\t\t} else {\n\t\t\tthis.tileMaxHeight = this.element.querySelector(\".bx--tile-content__above-the-fold\").getBoundingClientRect().height;\n\t\t}\n\t}\n\n\tonClick() {\n\t\tthis.expanded = !this.expanded;\n\t\tthis.updateMaxHeight();\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tViewChild\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { I18n } from \"./../i18n/i18n.module\";\n\n@Component({\n\tselector: \"ibm-selection-tile\",\n\ttemplate: `\n\t\t<label\n\t\t\tclass=\"bx--tile bx--tile--selectable\"\n\t\t\ttabindex=\"0\"\n\t\t\t[for]=\"id\"\n\t\t\t[ngClass]=\"{'bx--tile--is-selected' : selected}\"\n\t\t\t[attr.aria-label]=\"i18n.get('TILES.TILE') | async\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\tclass=\"bx--tile-input\"\n\t\t\t\t[id]=\"id\"\n\t\t\t\t[type]=\"(multiple ? 'checkbox': 'radio')\"\n\t\t\t\t[value]=\"value\"\n\t\t\t\t[name]=\"name\"\n\t\t\t\t(change)=\"onChange($event)\"/>\n\t\t\t<div class=\"bx--tile__checkmark\">\n\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<path d=\"M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm3.646-10.854L6.75 10.043 4.354 7.646l-.708.708 3.104 3.103 5.604-5.603-.708-.708z\"\n\t\t\t\t\t\tfill-rule=\"evenodd\"/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<div class=\"bx--tile-content\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</label>\n\t`\n})\nexport class SelectionTile {\n\tstatic tileCount = 0;\n\t/**\n\t * The unique id for the input.\n\t */\n\t@Input() id = `tile-${SelectionTile.tileCount}`;\n\t/**\n\t * Updating the state of the input to match the state of the parameter passed in.\n\t * Set to `true` if this tile should be selected.\n\t */\n\t@Input() set selected(value: boolean) {\n\t\tif (!this.input) { return; }\n\t\tthis.input.nativeElement.checked = value ? true : null;\n\t}\n\n\tget selected() {\n\t\tif (!this.input) { return; }\n\t\treturn this.input.nativeElement.checked;\n\t}\n\t/**\n\t * The value for the tile. Returned via `ngModel` or `selected` event on the containing `TileGroup`.\n\t */\n\t@Input() value: string;\n\t/**\n\t * Internal event used to notify the containing `TileGroup` of changes.\n\t */\n\t@Output() change: EventEmitter<Event> = new EventEmitter();\n\n\t/**\n\t * Set by the containing `TileGroup`. Used for the `name` property on the input.\n\t */\n\tname: string;\n\t/**\n\t * Defines whether or not the `SelectionTile` supports selecting multiple tiles as opposed to single\n\t * tile selection.\n\t */\n\tmultiple: boolean;\n\n\t@ViewChild(\"input\") input;\n\n\tconstructor(public i18n: I18n) {\n\t\tSelectionTile.tileCount++;\n\t}\n\n\tonChange(event) {\n\t\tthis.change.emit(event);\n\t}\n}\n\n\n","import {\n\tComponent,\n\tAfterContentInit,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding,\n\tContentChildren,\n\tQueryList,\n\tOnDestroy\n} from \"@angular/core\";\nimport { SelectionTile } from \"./selection-tile.component\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { TileSelection } from \"./tile-selection.interface\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n\tselector: \"ibm-tile-group\",\n\ttemplate: `<ng-content select=\"ibm-selection-tile\"></ng-content>`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: TileGroup,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class TileGroup implements AfterContentInit, OnDestroy {\n\tstatic tileGroupCount = 0;\n\t/**\n\t * The tile group `name`\n\t */\n\t@Input() name = `tile-group-${TileGroup.tileGroupCount}`;\n\t/**\n\t * Set to `true` to support multiple tile selection\n\t */\n\t@Input() multiple = false;\n\n\t/**\n\t * Emits an event when the tile selection changes.\n\t *\n\t * Emits an object that looks like:\n\t * ```javascript\n\t * {\n\t * \tvalue: \"something\",\n\t * \tselected: true,\n\t * \tname: \"tile-group-1\"\n\t * }\n\t * ```\n\t */\n\t@Output() selected: EventEmitter<TileSelection> = new EventEmitter();\n\n\t@HostBinding(\"class.bx--tile-group\") tileGroupClass = true;\n\n\t@ContentChildren(SelectionTile) selectionTiles: QueryList<SelectionTile>;\n\n\tprotected unsubscribe$ = new Subject<void>();\n\tprotected unsubscribeTiles$ = new Subject<void>();\n\n\tconstructor() {\n\t\tTileGroup.tileGroupCount++;\n\t}\n\n\tonChange = (_: any) => { };\n\n\tonTouched = () => { };\n\n\tngAfterContentInit() {\n\t\tconst updateTiles = () => {\n\t\t\t// remove old subscriptions\n\t\t\tthis.unsubscribeTiles$.next();\n\n\t\t\t// react to changes\n\t\t\tthis.selectionTiles.forEach(tile => {\n\t\t\t\ttile.name = this.name;\n\t\t\t\ttile.change\n\t\t\t\t\t.pipe(takeUntil(this.unsubscribeTiles$))\n\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\tthis.selected.emit({\n\t\t\t\t\t\t\tvalue: tile.value,\n\t\t\t\t\t\t\tselected: tile.selected,\n\t\t\t\t\t\t\tname: this.name\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.onChange(tile.value);\n\t\t\t\t\t});\n\t\t\t\ttile.multiple = this.multiple;\n\t\t\t});\n\t\t};\n\t\tupdateTiles();\n\n\t\tthis.selectionTiles.changes\n\t\t\t.pipe(takeUntil(this.unsubscribe$))\n\t\t\t.subscribe(_ => updateTiles());\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\n\t\t// takes care of tile subscriptions when tile-group dies\n\t\tthis.unsubscribeTiles$.next();\n\t\tthis.unsubscribeTiles$.complete();\n\t}\n\n\twriteValue(value: any) {\n\t\tif (!this.selectionTiles) { return; }\n\t\tthis.selectionTiles.forEach(tile => {\n\t\t\tif (tile.value === value) {\n\t\t\t\ttile.selected = true;\n\t\t\t} else {\n\t\t\t\ttile.selected = false;\n\t\t\t}\n\t\t});\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouched = fn;\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Tile } from \"./tile.component\";\nimport { ClickableTile } from \"./clickable-tile.component\";\nimport { ExpandableTile } from \"./expandable-tile.component\";\nimport { SelectionTile } from \"./selection-tile.component\";\nimport { TileGroup } from \"./tile-group.component\";\nimport { I18nModule } from \"./../i18n/i18n.module\";\nimport { LinkModule } from \"./../link/link.module\";\n\nexport { Tile } from \"./tile.component\";\nexport { ClickableTile } from \"./clickable-tile.component\";\nexport { ExpandableTile } from \"./expandable-tile.component\";\nexport { SelectionTile } from \"./selection-tile.component\";\nexport { TileGroup } from \"./tile-group.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tTile,\n\t\tClickableTile,\n\t\tExpandableTile,\n\t\tSelectionTile,\n\t\tTileGroup\n\t],\n\texports: [\n\t\tTile,\n\t\tClickableTile,\n\t\tExpandableTile,\n\t\tSelectionTile,\n\t\tTileGroup\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tLinkModule\n\t]\n})\nexport class TilesModule {}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding,\n\tTemplateRef\n} from \"@angular/core\";\n\n/**\n * [See demo](../../?path=/story/time-picker--simple)\n *\n * <example-url>../../iframe.html?id=time-picker--simple</example-url>\n *\n * @export\n * @class TimePicker\n */\n@Component({\n\tselector: \"ibm-timepicker\",\n\ttemplate: `\n\t\t\t<div class=\"bx--time-picker__input\">\n\t\t\t\t<label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"bx--label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</label>\n\t\t\t\t<input\n\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t'bx--text-input--light': theme === 'light',\n\t\t\t\t\t\t'bx--skeleton': skeleton\n\t\t\t\t\t}\"\n\t\t\t\t\t[value]=\"value\"\n\t\t\t\t\t[placeholder]=\"placeholder\"\n\t\t\t\t\t[pattern]=\"pattern\"\n\t\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\tmaxlength=\"5\"\n\t\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclass=\"bx--time-picker__input-field bx--text-input\">\n\t\t\t</div>\n\t\t\t<ng-content></ng-content>\n\t`\n})\nexport class TimePicker {\n\t/**\n\t * Tracks the total number of selects instantiated. Used to generate unique IDs\n\t */\n\tstatic timePickerCount = 0;\n\n\t@HostBinding(\"class.bx--time-picker\") timePicker = true;\n\n\t@Input() label: string | TemplateRef<any>;\n\t@Input() placeholder = \"hh:mm\";\n\t@Input() pattern = \"(1[012]|[0-9]):[0-5][0-9]\";\n\t@Input() id = `timepicker-${TimePicker.timePickerCount++}`;\n\t@Input() disabled = false;\n\t@Input() value: string;\n\n\t/**\n\t * Set to true for a loading select.\n\t */\n\t@Input() skeleton = false;\n\n\t/**\n\t * `light` or `dark` select theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@Output() valueChange: EventEmitter<string> = new EventEmitter();\n\n\tonChange(event) {\n\t\tthis.valueChange.emit(event.target.value);\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tHostBinding,\n\tTemplateRef\n} from \"@angular/core\";\nimport { Select } from \"../select/select.component\";\n\n/**\n * [See demo](../../?path=/story/time-picker-select--simple)\n *\n * <example-url>../../iframe.html?id=time-picker-select--simple</example-url>\n *\n * @export\n * @class TimePickerSelect\n * @extends {Select}\n */\n@Component({\n\tselector: \"ibm-timepicker-select\",\n\ttemplate: `\n\t\t\t<label *ngIf=\"!skeleton && label\" [attr.for]=\"id\" class=\"bx--label bx--visually-hidden\">{{label}}</label>\n\t\t\t<select\n\t\t\t\t#select\n\t\t\t\t[attr.id]=\"id\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t(change)=\"onChange($event)\"\n\t\t\t\tclass=\"bx--select-input\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</select>\n\t\t\t<ibm-icon-chevron-down16 *ngIf=\"!skeleton\" class=\"bx--select__arrow\"></ibm-icon-chevron-down16>\n\t`\n})\nexport class TimePickerSelect extends Select {\n\t@HostBinding(\"class.bx--select\") timeSelect = true;\n\t@HostBinding(\"class.bx--time-picker__select\") timePickerSelect = true;\n\n\t@Input() id = `timepicker-select-${TimePickerSelect.selectCount++}`;\n\n\t/**\n\t * Set to true for a loading select.\n\t */\n\t@Input() skeleton = false;\n\n\t/**\n\t * `light` or `dark` select theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\n\t@Input() label: string;\n\n\t@HostBinding(\"class.bx--skeleton\") timePickerSelectSkeleton = this.skeleton;\n\n\t@HostBinding(\"class.bx--select--light\") get timePickerSelectLight() {\n\t\treturn this.theme === \"light\";\n\t}\n\n\t@Output() valueChange: EventEmitter<string> = new EventEmitter();\n\n\tonChange(event) {\n\t\tthis.valueChange.emit(event.target.value);\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TimePickerSelect } from \"./timepicker-select.component\";\nimport { SelectModule } from \"../select/select.module\";\nimport { ChevronDown16Module } from \"@carbon/icons-angular/lib/chevron--down/16\";\n\n@NgModule({\n\tdeclarations: [\n\t\tTimePickerSelect\n\t],\n\texports: [\n\t\tTimePickerSelect\n\t],\n\timports: [\n\t\tSelectModule,\n\t\tCommonModule,\n\t\tChevronDown16Module\n\t]\n})\nexport class TimePickerSelectModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { TimePicker } from \"./timepicker.component\";\nimport { TimePickerSelectModule } from \"../timepicker-select/timepicker-select.module\";\n\n@NgModule({\n\tdeclarations: [\n\t\tTimePicker\n\t],\n\texports: [\n\t\tTimePicker\n\t],\n\timports: [\n\t\tTimePickerSelectModule,\n\t\tCommonModule\n\t]\n})\nexport class TimePickerModule { }\n","import { NgModule, Component, Directive, ElementRef, Input } from \"@angular/core\";\nimport { getAttributes } from \"@carbon/icon-helpers\";\nvar Close20 = /** @class */ (function () {\n function Close20() {\n this.focusable = false;\n }\n Close20.decorators = [\n { type: Component, args: [{\n selector: \"ibm-icon-close20\",\n template: \"\\n <svg\\n ibmIconClose20\\n [ariaLabel]=\\\"ariaLabel\\\"\\n [ariaLabelledby]=\\\"ariaLabelledby\\\"\\n [ariaHidden]=\\\"ariaHidden\\\"\\n [title]=\\\"title\\\"\\n [isFocusable]=\\\"focusable\\\"\\n [attr.class]=\\\"innerClass\\\">\\n </svg>\\n \"\n },] },\n ];\n Close20.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n focusable: [{ type: Input }],\n innerClass: [{ type: Input }]\n };\n return Close20;\n}());\nexport { Close20 };\nvar Close20Directive = /** @class */ (function () {\n function Close20Directive(elementRef) {\n this.elementRef = elementRef;\n this.isFocusable = false;\n }\n Close20Directive.prototype.ngAfterViewInit = function () {\n var svg = this.elementRef.nativeElement;\n svg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n var domParser = new DOMParser();\n var rawSVG = \"<svg focusable=\\\"false\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" style=\\\"will-change: transform;\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 32 32\\\" aria-hidden=\\\"true\\\"><path d=\\\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z\\\"></path></svg>\";\n var svgElement = domParser.parseFromString(rawSVG, \"image/svg+xml\").documentElement;\n var node = svgElement.firstChild;\n while (node) {\n // importNode makes a clone of the node\n // this ensures we keep looping over the nodes in the parsed document\n svg.appendChild(svg.ownerDocument.importNode(node, true));\n node = node.nextSibling;\n }\n var attributes = getAttributes({\n width: 20,\n height: 20,\n viewBox: \"0 0 32 32\",\n title: this.title,\n \"aria-label\": this.ariaLabel,\n \"aria-labelledby\": this.ariaLabelledby,\n \"aria-hidden\": this.ariaHidden,\n focusable: this.isFocusable.toString()\n });\n var attrKeys = Object.keys(attributes);\n for (var i = 0; i < attrKeys.length; i++) {\n var key = attrKeys[i];\n var value = attributes[key];\n if (key === \"title\") {\n continue;\n }\n if (value) {\n svg.setAttribute(key, value);\n }\n }\n if (attributes.title) {\n var title = document.createElement(\"title\");\n title.textContent = attributes.title;\n Close20Directive.titleIdCounter++;\n title.setAttribute(\"id\", \"close20-\" + Close20Directive.titleIdCounter);\n svg.appendChild(title);\n svg.setAttribute(\"aria-labelledby\", \"close20-\" + Close20Directive.titleIdCounter);\n }\n };\n Close20Directive.titleIdCounter = 0;\n Close20Directive.decorators = [\n { type: Directive, args: [{\n selector: \"[ibmIconClose20]\"\n },] },\n ];\n /** @nocollapse */\n Close20Directive.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n Close20Directive.propDecorators = {\n ariaLabel: [{ type: Input }],\n ariaLabelledby: [{ type: Input }],\n ariaHidden: [{ type: Input }],\n title: [{ type: Input }],\n isFocusable: [{ type: Input }]\n };\n return Close20Directive;\n}());\nexport { Close20Directive };\nvar Close20Module = /** @class */ (function () {\n function Close20Module() {\n }\n Close20Module.decorators = [\n { type: NgModule, args: [{\n declarations: [\n Close20,\n Close20Directive\n ],\n exports: [\n Close20,\n Close20Directive\n ]\n },] },\n ];\n return Close20Module;\n}());\nexport { Close20Module };\n//# sourceMappingURL=20.js.map","import { Component, Input } from \"@angular/core\";\nimport { I18n } from \"../../i18n/i18n.module\";\n\n/**\n * A fixed header and navigation.\n * Header may contain a Hamburger menu to toggle the side navigation, navigation actions,\n * and global actions (generally in the form of `Panel`s).\n *\n * [See demo](../../?path=/story/ui-shell--header)\n *\n * <example-url>../../iframe.html?id=ui-shell--header</example-url>\n *\n * @export\n * @class Header\n */\n@Component({\n\tselector: \"ibm-header\",\n\ttemplate: `\n\t\t<header\n\t\t\tclass=\"bx--header\"\n\t\t\trole=\"banner\"\n\t\t\t[attr.aria-label]=\"brand + ' ' + name\">\n\t\t\t<a\n\t\t\t\tclass=\"bx--skip-to-content\"\n\t\t\t\t[href]=\"skipTo\"\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t{{ i18n.get(\"UI_SHELL.SKIP_TO\") | async }}\n\t\t\t</a>\n\t\t\t<ng-content select=\"ibm-hamburger\"></ng-content>\n\t\t\t<a class=\"bx--header__name\" href=\"#\">\n\t\t\t\t<span class=\"bx--header__name--prefix\">{{brand}}&nbsp;</span>\n\t\t\t\t{{name}}\n\t\t\t</a>\n\t\t\t<ng-content></ng-content>\n\t\t</header>\n\t`\n})\nexport class Header {\n\t/**\n\t * ID in the main body content to jump to. Used by keyboard and screen reader users to skip the header content.\n\t */\n\t@Input() skipTo: string;\n\t/**\n\t * Label that shows to the right of the `brand` text. Generally a product name.\n\t */\n\t@Input() name: string;\n\t/**\n\t * Top level branding. Defaults to \"IBM\"\n\t */\n\t@Input() brand = \"IBM\";\n\n\tconstructor(public i18n: I18n) { }\n}\n","import {\n\tComponent,\n\tInput,\n\tOptional,\n\tEventEmitter,\n\tOutput\n} from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { Router } from \"@angular/router\";\n\n/**\n * Individual item in the header. May be used a direct child of `HeaderNavigation` or `HeaderMenu`\n */\n@Component({\n\tselector: \"ibm-header-item\",\n\ttemplate: `\n\t\t<li style=\"height: 100%\">\n\t\t\t<a\n\t\t\t\tclass=\"bx--header__menu-item\"\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[href]=\"href\"\n\t\t\t\t(click)=\"navigate($event)\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</a>\n\t\t</li>\n\t`\n})\nexport class HeaderItem {\n\t@Input() set href(v: string) {\n\t\tthis._href = v;\n\t}\n\n\tget href() {\n\t\treturn this.domSanitizer.bypassSecurityTrustUrl(this._href) as string;\n\t}\n\n\t/**\n\t * Array of commands to send to the router when the link is activated\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() route: any[];\n\n\t/**\n\t * Router options. Used in conjunction with `route`\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() routeExtras: any;\n\n\t/**\n\t * Emits the navigation status promise when the link is activated\n\t */\n\t@Output() navigation = new EventEmitter<Promise<boolean>>();\n\n\tprotected _href = \"javascript:void(0)\";\n\n\tconstructor(protected domSanitizer: DomSanitizer, @Optional() protected router: Router) { }\n\n\tnavigate(event) {\n\t\tif (this.router && this.route) {\n\t\t\tevent.preventDefault();\n\t\t\tconst status = this.router.navigate(this.route, this.routeExtras);\n\t\t\tthis.navigation.emit(status);\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tHostListener,\n\tElementRef\n} from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\n/**\n * Dropdown menu container for navigation items.\n */\n@Component({\n\tselector: \"ibm-header-menu\",\n\ttemplate: `\n\t\t<li\n\t\t\tclass=\"bx--header__submenu\"\n\t\t\tstyle=\"height: 100%\">\n\t\t\t<a\n\t\t\t\tclass=\"bx--header__menu-item bx--header__menu-title\"\n\t\t\t\t[href]=\"href\"\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t[attr.aria-expanded]=\"expanded\">\n\t\t\t\t{{title}}\n\t\t\t\t<svg class=\"bx--header__menu-arrow\" width=\"12\" height=\"7\" aria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M6.002 5.55L11.27 0l.726.685L6.003 7 0 .685.726 0z\" />\n\t\t\t\t</svg>\n\t\t\t</a>\n\t\t\t<ul class=\"bx--header__menu\" role=\"menu\" [attr.aria-label]=\"title\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</ul>\n\t\t</li>\n\t`\n})\nexport class HeaderMenu {\n\t@Input() title: string;\n\t@Input() set href(v: string) {\n\t\tthis._href = v;\n\t}\n\n\tget href() {\n\t\treturn this.domSanitizer.bypassSecurityTrustUrl(this._href) as string;\n\t}\n\t@Input() trigger: \"click\" | \"mouseover\" = \"click\";\n\n\tpublic expanded = false;\n\n\tprotected _href = \"javascript:void(0)\";\n\n\tconstructor(protected domSanitizer: DomSanitizer, protected elementRef: ElementRef) { }\n\n\t@HostListener(\"click\")\n\tonClick() {\n\t\tif (this.trigger === \"click\") {\n\t\t\tthis.expanded = !this.expanded;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseover\")\n\tonMouseOver() {\n\t\tif (this.trigger === \"mouseover\") {\n\t\t\tthis.expanded = true;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseout\")\n\tonMouseOut() {\n\t\tif (this.trigger === \"mouseover\") {\n\t\t\tthis.expanded = false;\n\t\t}\n\t}\n\n\t@HostListener(\"focusout\", [\"$event\"])\n\tonFocusOut(event) {\n\t\tif (!this.elementRef.nativeElement.contains(event.relatedTarget)) {\n\t\t\tthis.expanded = false;\n\t\t}\n\t}\n}\n","import { Component, HostBinding, Input } from \"@angular/core\";\n\n/**\n * Container for header navigation items\n */\n@Component({\n\tselector: \"ibm-header-navigation\",\n\ttemplate: `\n\t\t<nav class=\"bx--header__nav\" [attr.aria-label]=\"ariaLabel\">\n\t\t\t<ul class=\"bx--header__menu-bar\" role=\"menubar\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</ul>\n\t\t</nav>\n\t`\n})\nexport class HeaderNavigation {\n\t@HostBinding(\"style.height.%\") height = 100;\n\n\t@Input() ariaLabel: string;\n}\n","import { Component, HostBinding } from \"@angular/core\";\n\n/**\n * Container for `HeaderAction`s.\n */\n@Component({\n\tselector: \"ibm-header-global\",\n\ttemplate: `\n\t\t<ng-content></ng-content>\n\t`\n})\nexport class HeaderGlobal {\n\t@HostBinding(\"class.bx--header__global\") hostClass = true;\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\n\n/**\n * Contained by `HeaderGlobal`. Generally used to trigger `Panel`s\n */\n@Component({\n\tselector: \"ibm-header-action\",\n\ttemplate: `\n\t\t<button\n\t\t\tclass=\"bx--header__action\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--header__action--active': active\n\t\t\t}\"\n\t\t\t[attr.aria-label]=\"title\"\n\t\t\t[title]=\"title\"\n\t\t\t(click)=\"onClick()\">\n\t\t\t<ng-content></ng-content>\n\t\t\t<svg ibmIconClose20 class=\"bx--navigation-menu-panel-collapse-icon\"></svg>\n\t\t</button>\n\t`\n})\nexport class HeaderAction {\n\t/**\n\t * Title. Populates the aria-label as well as the browser `title` tooltip\n\t */\n\t@Input() title = \"\";\n\t/**\n\t * Toggles the active state. May be used to toggle a `Panel`s active state.\n\t */\n\t@Input() active = false;\n\t/**\n\t * \"Change\" emitter to allow double binding to the `active` Input.\n\t */\n\t@Input() activeChange = new EventEmitter<boolean>();\n\t/**\n\t * Emits when the action has been clicked.\n\t */\n\t@Output() selected = new EventEmitter<boolean>();\n\n\tonClick() {\n\t\tthis.active = !this.active;\n\t\tthis.selected.emit(this.active);\n\t\tthis.activeChange.emit(this.active);\n\t}\n}\n","import {\n\tComponent,\n\tOutput,\n\tEventEmitter,\n\tInput\n} from \"@angular/core\";\nimport { I18n } from \"../../i18n/i18n.module\";\n\n/**\n * A toggle for the side navigation\n */\n@Component({\n\tselector: \"ibm-hamburger\",\n\ttemplate: `\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"doClick()\"\n\t\t\t[ngClass]=\"{'bx--header__action--active': active}\"\n\t\t\tclass=\"bx--header__menu-trigger bx--header__action bx--header__menu-toggle\"\n\t\t\t[attr.aria-label]=\"i18n.get('UI_SHELL.HEADER.MENU') | async\"\n\t\t\t[attr.title]=\"i18n.get('UI_SHELL.HEADER.MENU') | async\">\n\n\t\t\t<svg *ngIf=\"!active\" aria-hidden=\"true\" width=\"20\" height=\"20\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n\t\t\t\t<path d=\"M4 6h24v2H4zm0 18h24v2H4zm0-9h24v2H4z\" />\n\t\t\t</svg>\n\n\t\t\t<svg *ngIf=\"active\" aria-hidden=\"true\" height=\"20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z\" />\n\t\t\t</svg>\n\t\t</button>\n\t`\n})\nexport class Hamburger {\n\t/**\n\t * Controls the active/selected state for the `Hamburger` menu.\n\t */\n\t@Input() active = false;\n\n\t/**\n\t * `EventEmitter` to notify parent components of menu click events.\n\t */\n\t@Output() selected: EventEmitter<Object> = new EventEmitter<Object>();\n\n\tconstructor(public i18n: I18n) { }\n\n\t/**\n\t * Emit the Hamburger click event upwards.\n\t */\n\tpublic doClick() {\n\t\tthis.selected.emit(this.active);\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { Close20Module } from \"@carbon/icons-angular/lib/close/20\";\n\nimport { I18nModule } from \"./../../i18n/i18n.module\";\n\nimport { Header } from \"./header.component\";\nimport { HeaderItem } from \"./header-item.component\";\nimport { HeaderMenu } from \"./header-menu.component\";\nimport { HeaderNavigation } from \"./header-navigation.component\";\nimport { HeaderGlobal } from \"./header-global.component\";\nimport { HeaderAction } from \"./header-action.component\";\n\nimport { Hamburger } from \"./hamburger.component\";\n\nexport {\n\tHeader,\n\tHeaderItem,\n\tHeaderMenu,\n\tHeaderNavigation,\n\tHeaderGlobal,\n\tHeaderAction,\n\tHamburger\n};\n\n@NgModule({\n\tdeclarations: [\n\t\tHeader,\n\t\tHeaderItem,\n\t\tHeaderMenu,\n\t\tHeaderNavigation,\n\t\tHeaderGlobal,\n\t\tHeaderAction,\n\t\tHamburger\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tClose20Module\n\t],\n\texports: [\n\t\tHeader,\n\t\tHeaderItem,\n\t\tHeaderMenu,\n\t\tHeaderNavigation,\n\t\tHeaderGlobal,\n\t\tHeaderAction,\n\t\tHamburger\n\t]\n})\nexport class HeaderModule { }\n","import {\n\tComponent,\n\tHostBinding,\n\tInput,\n\tViewEncapsulation\n} from \"@angular/core\";\nimport { I18n } from \"../../i18n/i18n.module\";\n\n/**\n * `Sidenav` is a fixed left navigation that may contain `SideNavItem`s or `SideNavMenu`s\n *\n * [See demo](../../?path=/story/ui-shell--side-navigation)\n *\n * <example-url>../../iframe.html?id=ui-shell--side-navigation</example-url>\n *\n * @export\n * @class SideNav\n */\n@Component({\n\tselector: \"ibm-sidenav\",\n\ttemplate: `\n\t\t<nav\n\t\t\tclass=\"bx--side-nav__navigation\"\n\t\t\trole=\"navigation\"\n\t\t\t[attr.aria-label]=\"i18n.get('UI_SHELL.SIDE_NAV.LABEL')\">\n\t\t\t<ng-content select=\"ibm-sidenav-header\"></ng-content>\n\t\t\t<ul class=\"bx--side-nav__items\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</ul>\n\t\t\t<footer class=\"bx--side-nav__footer\">\n\t\t\t\t<button\n\t\t\t\t\t*ngIf=\"allowExpansion\"\n\t\t\t\t\tclass=\"bx--side-nav__toggle\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t[title]=\"(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async\"\n\t\t\t\t\t(click)=\"toggle()\">\n\t\t\t\t\t<div class=\"bx--side-nav__icon\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t*ngIf=\"expanded\"\n\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4l6.6 6.6L8 22.6 9.4 24l6.6-6.6 6.6 6.6 1.4-1.4-6.6-6.6L24 9.4z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t*ngIf=\"!expanded\"\n\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t<path d=\"M22 16L12 26l-1.4-1.4 8.6-8.6-8.6-8.6L12 6z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"bx--assistive-text\">\n\t\t\t\t\t\t{{(expanded ? i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_CLOSE') : i18n.get('UI_SHELL.SIDE_NAV.TOGGLE_OPEN')) | async}}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</footer>\n\t\t</nav>\n\t`,\n\tencapsulation: ViewEncapsulation.None\n})\nexport class SideNav {\n\t@HostBinding(\"attr.role\") role = \"complementary\";\n\t@HostBinding(\"class.bx--side-nav\") hostClass = true;\n\t/**\n\t * Controls the expanded (`true`) or collapsed (`false`) state when on a small screen.\n\t */\n\t@HostBinding(\"class.bx--side-nav--expanded\") @Input() expanded = true;\n\t/**\n\t * Controls the hidden (`true`) or visible (`false`) state\n\t */\n\t@HostBinding(\"class.bx--side-nav--hidden\") @Input() hidden = false;\n\t@HostBinding(\"class.bx--side-nav--ux\") ux = true;\n\t@Input() allowExpansion = false;\n\n\tconstructor(public i18n: I18n) { }\n\n\ttoggle() {\n\t\tthis.expanded = !this.expanded;\n\t}\n}\n","import { Component, Input } from \"@angular/core\";\nimport { ListItem } from \"../../dropdown/dropdown.module\";\nimport { I18n } from \"../../i18n/i18n.module\";\n\n/**\n * @deprecated Until futher notice. Will be removed in a future version.\n */\n@Component({\n\tselector: \"ibm-sidenav-header\",\n\ttemplate: `\n\t\t<header class=\"bx--side-nav__header\">\n\t\t\t<div class=\"bx--side-nav__icon\">\n\t\t\t\t<ng-content select=\"[icon]\"></ng-content>\n\t\t\t</div>\n\t\t\t<div class=\"bx--side-nav__details\">\n\t\t\t\t<h2 class=\"bx--side-nav__title\" [title]=\"title\">{{title}}</h2>\n\t\t\t\t<div class=\"bx--side-nav__switcher\">\n\t\t\t\t\t<label class=\"bx--assistive-text\" [for]=\"switcherId\">\n\t\t\t\t\t\t{{i18n.get('UI_SHELL.SIDE_NAV.SWITCHER') | async}}\n\t\t\t\t\t</label>\n\t\t\t\t\t<select [id]=\"switcherId\" class=\"bx--side-nav__select\">\n\t\t\t\t\t\t<option class=\"bx--side-nav__option\" disabled=\"\" value=\"\" selected=\"\" hidden=\"\">\n\t\t\t\t\t\t\t{{i18n.get('UI_SHELL.SIDE_NAV.SWITCHER') | async}}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t*ngFor=\"let option of options\"\n\t\t\t\t\t\t\tclass=\"bx--side-nav__option\"\n\t\t\t\t\t\t\t[value]=\"(option.value ? option.value : option.content)\">\n\t\t\t\t\t\t\t{{option.content}}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t\t<div class=\"bx--side-nav__switcher-chevron\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t<path d=\"M16 22L6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z\"></path>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</header>\n\t`\n})\nexport class SideNavHeader {\n\t@Input() title: string;\n\t@Input() options: ListItem[];\n\tpublic switcherId = \"sidenav-switcher\";\n\n\tconstructor(public i18n: I18n) { }\n}\n","import {\n\tComponent,\n\tInput,\n\tOptional,\n\tOutput,\n\tEventEmitter\n} from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { Router } from \"@angular/router\";\n\n/**\n * `SideNavItem` can either be a child of `SideNav` or `SideNavMenu`\n */\n@Component({\n\tselector: \"ibm-sidenav-item\",\n\ttemplate: `\n\t\t<li [ngClass]=\"{\n\t\t\t'bx--side-nav__item': !isSubMenu,\n\t\t\t'bx--side-nav__menu-item': isSubMenu\n\t\t}\"\n\t\t[attr.role]=\"(isSubMenu ? 'none' : null)\">\n\t\t\t<a\n\t\t\t\tclass=\"bx--side-nav__link\"\n\t\t\t\t[href]=\"href\"\n\t\t\t\t[attr.role]=\"(isSubMenu ? 'menuitem' : null)\"\n\t\t\t\t[attr.aria-current]=\"(active ? 'page' : null)\"\n\t\t\t\t(click)=\"navigate($event)\">\n\t\t\t\t<div *ngIf=\"!isSubMenu\" class=\"bx--side-nav__icon\">\n\t\t\t\t\t<ng-content select=\"[icon]\"></ng-content>\n\t\t\t\t</div>\n\t\t\t\t<span class=\"bx--side-nav__link-text\">\n\t\t\t\t\t<ng-content></ng-content>\n\t\t\t\t</span>\n\t\t\t</a>\n\t\t</li>\n\t`\n})\nexport class SideNavItem {\n\t/**\n\t * Link for the item. NOTE: *do not* pass unsafe or untrusted values, this has the potential to open you up to XSS attacks\n\t */\n\t@Input() set href(v: string) {\n\t\tthis._href = v;\n\t}\n\n\tget href() {\n\t\treturn this.domSanitizer.bypassSecurityTrustUrl(this._href) as string;\n\t}\n\n\t/**\n\t * Toggles the active (current page) state for the link.\n\t */\n\t@Input() active = false;\n\n\t/**\n\t * Array of commands to send to the router when the link is activated\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() route: any[];\n\n\t/**\n\t * Router options. Used in conjunction with `route`\n\t * See: https://angular.io/api/router/Router#navigate\n\t */\n\t@Input() routeExtras: any;\n\n\t/**\n\t * Emits the navigation status promise when the link is activated\n\t */\n\t@Output() navigation = new EventEmitter<Promise<boolean>>();\n\n\tisSubMenu = false;\n\n\tprotected _href = \"javascript:void(0)\";\n\n\tconstructor(protected domSanitizer: DomSanitizer, @Optional() protected router: Router) {}\n\n\tnavigate(event) {\n\t\tif (this.router && this.route) {\n\t\t\tevent.preventDefault();\n\t\t\tconst status = this.router.navigate(this.route, this.routeExtras);\n\t\t\tthis.navigation.emit(status);\n\t\t}\n\t}\n}\n","import {\n\tAfterContentInit,\n\tComponent,\n\tContentChildren,\n\tInput,\n\tQueryList\n} from \"@angular/core\";\nimport { SideNavItem } from \"./sidenav-item.component\";\n\n/**\n * `SideNavMenu` provides a method to group `SideNavItem`s under a common heading.\n */\n@Component({\n\tselector: \"ibm-sidenav-menu\",\n\ttemplate: `\n\t\t<li class=\"bx--side-nav__item bx--side-nav__item--icon\">\n\t\t\t<button\n\t\t\t\t(click)=\"toggle()\"\n\t\t\t\tclass=\"bx--side-nav__submenu\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t[attr.aria-expanded]=\"expanded\"\n\t\t\t\ttype=\"button\">\n\t\t\t\t<div class=\"bx--side-nav__icon\">\n\t\t\t\t\t<ng-content select=\"[icon]\"></ng-content>\n\t\t\t\t</div>\n\t\t\t\t<span class=\"bx--side-nav__submenu-title\">{{title}}</span>\n\t\t\t\t<div class=\"bx--side-nav__icon bx--side-nav__icon--small bx--side-nav__submenu-chevron\">\n\t\t\t\t\t<svg\n\t\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t<path d=\"M16 22L6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t\t<ul class=\"bx--side-nav__menu\" role=\"menu\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</ul>\n\t\t</li>\n\t`\n})\nexport class SideNavMenu implements AfterContentInit {\n\t/**\n\t * Heading for the gorup\n\t */\n\t@Input() title: string;\n\t/**\n\t * Controls the visibility of the child `SideNavItem`s\n\t */\n\t@Input() expanded = false;\n\n\t@ContentChildren(SideNavItem) sidenavItems: QueryList<SideNavItem>;\n\n\tngAfterContentInit() {\n\t\tthis.sidenavItems.forEach(item => {\n\t\t\titem.isSubMenu = true;\n\t\t});\n\t}\n\n\ttoggle() {\n\t\tthis.expanded = !this.expanded;\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { I18nModule } from \"./../../i18n/i18n.module\";\n\nimport { SideNav } from \"./sidenav.component\";\nimport { SideNavHeader } from \"./sidenav-header.component\";\nimport { SideNavItem } from \"./sidenav-item.component\";\nimport { SideNavMenu } from \"./sidenav-menu.component\";\n\nexport {\n\tSideNav,\n\tSideNavHeader,\n\tSideNavItem,\n\tSideNavMenu\n};\n\n@NgModule({\n\tdeclarations: [\n\t\tSideNav,\n\t\tSideNavHeader,\n\t\tSideNavItem,\n\t\tSideNavMenu\n\t],\n\timports: [CommonModule, I18nModule],\n\texports: [\n\t\tSideNav,\n\t\tSideNavHeader,\n\t\tSideNavItem,\n\t\tSideNavMenu\n\t]\n})\nexport class SideNavModule { }\n","import { Component, Input } from \"@angular/core\";\n\n/**\n * `Panel` is a component that can be used to display content on the right side of the screen.\n * `Panel`s are generally activated by and linked to a `HeaderAction` component.\n */\n@Component({\n\tselector: \"ibm-panel\",\n\ttemplate: `\n\t\t<aside\n\t\t\tclass=\"bx--panel--overlay\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--panel--expanded': expanded\n\t\t\t}\">\n\t\t\t<ng-content></ng-content>\n\t\t</aside>\n\t`\n})\nexport class Panel {\n\t/**\n\t * Controls the visibility of the panel\n\t */\n\t@Input() expanded = false;\n}\n","import { Component, HostBinding, Input } from \"@angular/core\";\n\n/**\n * @deprecated `ibm-product-x` selectors and components are deprecated and will be removed in the next major version\n */\n@Component({\n\tselector: \"ibm-product-switcher\",\n\ttemplate: `\n\t\t<div class=\"bx--product-switcher__search\">\n\t\t\t<ng-content select=\"ibm-search\"></ng-content>\n\t\t</div>\n\t\t<p class=\"bx--product-switcher__subheader\">{{header}}</p>\n\t\t<ng-content></ng-content>\n\t`\n})\nexport class ProductSwitcher {\n\t@Input() header = \"\";\n\t@HostBinding(\"class.bx--product-switcher\") hostClass = true;\n}\n","import { Component } from \"@angular/core\";\n\n/**\n * Container for switcher items.\n *\n * ```html\n * <ibm-switcher-list>\n * \t<ibm-switcher-list-item>one</ibm-switcher-list-item>\n * \t<ibm-switcher-list-item [active]=\"true\">two</ibm-switcher-list-item>\n * \t<ibm-switcher-list-item>three</ibm-switcher-list-item>\n * </ibm-switcher-list>\n * ```\n *\n * **Note**: `ibm-product-x` selectors and components are deprecated and will be removed in the next major version\n */\n@Component({\n\tselector: \"ibm-switcher-list, ibm-product-switcher-list\",\n\ttemplate: `\n\t\t<ul class=\"bx--switcher__item\">\n\t\t\t<ng-content></ng-content>\n\t\t</ul>\n\t`\n})\nexport class SwitcherList {}\n","import { Component, Input } from \"@angular/core\";\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\";\n\n/**\n * Represents an item in a switcher list.\n *\n * **Note:** `ibm-product-x` selectors and components are deprecated and will be removed in the next major version\n */\n@Component({\n\tselector: \"ibm-switcher-list-item, ibm-product-switcher-list-item, ibm-product-switcher-item\",\n\ttemplate: `\n\t\t<a\n\t\t\tclass=\"bx--switcher__item-link\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'bx--switcher__item-link--selected': active\n\t\t\t}\"\n\t\t\t[href]=\"href\">\n\t\t\t<ng-content></ng-content>\n\t\t</a>\n\t`\n})\nexport class SwitcherListItem {\n\t/**\n\t * Enables the \"active\" state for an item. Commonly used to indicate the current page or selection.\n\t */\n\t@Input() active = false;\n\n\t/**\n\t * Optional link for the underlying anchor.\n\t */\n\t@Input() set href(value: string) {\n\t\tthis._href = value;\n\t}\n\n\tget href() {\n\t\treturn this.domSanitizer.bypassSecurityTrustUrl(this._href) as string;\n\t}\n\n\tprotected _href = \"javascript:void(0)\";\n\n\tconstructor(protected domSanitizer: DomSanitizer) { }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { I18nModule } from \"./../../i18n/i18n.module\";\n\nimport { Panel } from \"./panel.component\";\nimport { ProductSwitcher } from \"./product-switcher.component\";\nimport { SwitcherList } from \"./switcher-list.component\";\nimport { SwitcherListItem } from \"./switcher-list-item.component\";\n\nexport {\n\tPanel,\n\tProductSwitcher,\n\tSwitcherList,\n\tSwitcherListItem\n};\n\n@NgModule({\n\tdeclarations: [\n\t\tPanel,\n\t\tProductSwitcher,\n\t\tSwitcherList,\n\t\tSwitcherListItem\n\t],\n\timports: [CommonModule, I18nModule],\n\texports: [\n\t\tPanel,\n\t\tProductSwitcher,\n\t\tSwitcherList,\n\t\tSwitcherListItem\n\t]\n})\nexport class PanelModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { I18nModule } from \"./../i18n/i18n.module\";\n\nimport { HeaderModule } from \"./header/header.module\";\nimport { SideNavModule } from \"./sidenav/sidenav.module\";\nimport { PanelModule } from \"./panel/panel.module\";\n\nexport * from \"./header/header.module\";\nexport * from \"./sidenav/sidenav.module\";\nexport * from \"./panel/panel.module\";\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tI18nModule,\n\t\tHeaderModule,\n\t\tSideNavModule,\n\t\tPanelModule\n\t],\n\texports: [\n\t\tHeaderModule,\n\t\tSideNavModule,\n\t\tPanelModule\n\t]\n})\nexport class UIShellModule { }\n","export * from \"./accordion/accordion.module\";\nexport * from \"./breadcrumb/breadcrumb.module\";\nexport * from \"./button/button.module\";\nexport * from \"./checkbox/checkbox.module\";\nexport * from \"./code-snippet/code-snippet.module\";\nexport * from \"./combobox/combobox.module\";\nexport * from \"./content-switcher/content-switcher.module\";\nexport * from \"./datepicker/datepicker.module\";\nexport * from \"./dialog/dialog.module\";\nexport * from \"./documentation-component/documentation.module\";\nexport * from \"./dropdown/dropdown.module\";\nexport * from \"./experimental.module\";\nexport * from \"./file-uploader/file-uploader.module\";\nexport * from \"./forms/forms.module\";\nexport * from \"./grid/grid.module\";\nexport * from \"./i18n/i18n.module\";\nexport * from \"./inline-loading/inline-loading.module\";\nexport * from \"./input/input.module\";\nexport * from \"./link/link.module\";\nexport * from \"./list/list.module\";\nexport * from \"./loading/loading.module\";\nexport * from \"./modal/modal.module\";\nexport * from \"./notification/notification.module\";\nexport * from \"./number-input/number.module\";\nexport * from \"./pagination/pagination.module\";\nexport * from \"./placeholder/placeholder.module\";\nexport * from \"./progress-indicator/progress-indicator.module\";\nexport * from \"./radio/radio.module\";\nexport * from \"./search/search.module\";\nexport * from \"./select/select.module\";\nexport * from \"./slider/slider.module\";\nexport * from \"./structured-list/structured-list.module\";\nexport * from \"./table/table.module\";\nexport * from \"./tabs/tabs.module\";\nexport * from \"./tag/tag.module\";\nexport * from \"./tiles/tiles.module\";\nexport * from \"./timepicker/timepicker.module\";\nexport * from \"./timepicker-select/timepicker-select.module\";\nexport * from \"./ui-shell/ui-shell.module\";\n"],"sourceRoot":""}