{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/scripts/iris.ts","webpack:///(webpack)/buildin/global.js","webpack:///./src/scripts/accessability-detection.ts","webpack:///./src/scripts/component-factory.ts","webpack:///./src/scripts/component-manager.ts","webpack:///./src/scripts/logger.ts","webpack:///./src/scripts/utility.ts","webpack:///./src/scripts/components/calendar.ts","webpack:///./src/scripts/component.ts","webpack:///./src/scripts/dom.ts","webpack:///./src/scripts/date-util.ts","webpack:///./src/scripts/regional.ts","webpack:///./src/scripts/components/calendar-day.ts","webpack:///./src/scripts/keypress-handler.ts","webpack:///./src/scripts/components/collapsable.ts","webpack:///./src/scripts/components/expandable.ts","webpack:///./src/scripts/transition-handler.ts","webpack:///./src/scripts/components/synthetic-button.ts","webpack:///./src/scripts/components/compass.ts","webpack:///./src/scripts/focus-manager.ts","webpack:///./src/scripts/components/compass-step.ts","webpack:///./src/scripts/components/content-header.ts","webpack:///./src/scripts/components/content-header-item.ts","webpack:///./src/scripts/components/date.ts","webpack:///./src/scripts/components/drawer.ts","webpack:///./src/scripts/components/modal.ts","webpack:///./src/scripts/components/dropdown.ts","webpack:///./src/scripts/components/list-option.ts","webpack:///./src/scripts/components/list-item.ts","webpack:///./src/scripts/components/live-region.ts","webpack:///./src/scripts/components/list.ts","webpack:///./src/scripts/components/pagination.ts","webpack:///./src/scripts/components/popover.ts","webpack:///./src/scripts/components/prompt.ts","webpack:///./src/scripts/components/tab.ts","webpack:///./src/scripts/components/tab-list.ts","webpack:///./src/scripts/components/tab-navigation.ts","webpack:///./src/scripts/components/tooltip.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","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","accessability_detection_1","component_factory_1","component_manager_1","calendar_1","calendar_day_1","collapsable_1","compass_1","content_header_1","content_header_item_1","date_1","drawer_1","dropdown_1","list_1","list_item_1","list_option_1","live_region_1","pagination_1","popover_1","prompt_1","synthetic_button_1","tab_1","tab_list_1","tab_navigation_1","tooltip_1","logger_1","regional_1","dateUtility","dom","keyPressHandlers","utility","_global","window","global","IrisFramework","this","AccessabilityDetection","CollapsableComponent","factory","CompassComponent","ContentHeader","ContentHeaderComponent","ContentHeaderItem","DateComponent","DropdownComponent","Drawer","DrawerComponent","ListComponent","PaginationComponent","PopoverComponent","Prompt","PromptComponent","SyntheticButtonComponent","TabListComponent","TooltipComponent","CalendarComponent","CalendarDayComponent","ListItem","ListOption","LiveRegion","RegionSettings","TabComponent","TabNavigationComponent","ComponentFactory","ComponentManager","defaultManager","GenericComponentFactory","logger","version","init","dispatchEvent","document","body","iris","_accessabilityDetection","_irisOptions","autoInit","_initComponents","message","type","_getAutoInitElements","querySelector","filteredElementQuery","querySelectorAll","Popper","newOptions","assign","Iris","globalizeIris","Alkami","unglobalizeIris","default","iris_1","ready","g","Function","e","_this","_mouseClassName","_keyboardClassName","_isKeyPressed","_element","_handleKeyDown","toLowerCase","hasActiveElement","activeElement","isActiveElementWhitelisted","find","tagName","classList","remove","add","removeEventListener","addEventListener","_handleMouseDown","_handleKeyUp","contains","destroy","utility_1","createComponentFn","options","_createFn","_options","defaultQuerySelector","componentName","getComponentsByType","nodes","nodeList","defaultNodes","toArray","map","element","irisId","dataset","component","setAttribute","generateUniqueId","keys","components","findInstanceForElement","destroyComponent","refresh","cleanup","disposeZombieInstances","componentForElement","console","error","_super","componentConstructor","factoryOptions","defaultComponentOptions","__extends","_components","componentsOfType","values","forEach","componentArray","getOptions","push","destroyedComponents","componentToRemove","componentIndex","indexOf","splice","length","removeAttribute","irisIds","cleanedComponents","logTraceMessages","localStorage","getItem","messageObject","log","info","warn","Error","tip","debounce","func","wait","immediate","timeout","_a","_i","arguments","context","args","callNow","clearTimeout","setTimeout","apply","tokenRegex","format","string","replace","match","number","prefix","existingIds","id","Date","getTime","getElementById","getOrdinal","day","suffixes","isString","str","String","joinAttributeList","list","item","trim","join","range","rangeOrStart","maybeEnd","step","start","end","Array","_n","index","splitAttributeToList","attr","attribute","split","arrayLikeObject","result","slice","dispatchIrisEvent","eventName","detail","event","CustomEvent","isTouchDevice","documentElement","areArraysEqual","arr1","arr2","strict","every","item1","item2","once","fn","cb","_arguments","component_1","_updateMonthHeader","_calendarTitleElement","innerHTML","_nameOfMonth","_currentMonth","_currentYear","startDateLimit","startDate","convert","isCurrentYearEqualToStartDateYear","getUTCFullYear","isCurrentMonthLessThanOrEqualToStartDate","getUTCMonth","isCurrentYearLessThanStartDate","_prevMonthButtonElement","disabled","endDateLimit","endDate","isCurrentYearEqualToEndDateYear","isCurrentMonthGreaterThanOrEqualToEndDate","isCurrentYearGreaterThanEndDate","_nextMonthButtonElement","_mergeEventWithDefaults","eventObject","optionDefaults","eventDate","avatarIconClass","defaultAvatarIconClass","eventLabel","_previousMonthClickHandler","date","month","year","previousMonthClickEventName","currentMonth","currentYear","_nextMonthClickHandler","nextMonthClickEventName","_calendarChildSelectedHandler","_dayComponents","selected","selectedEventDayName","selectedDay","_calendarKeyboardNavigate","currentIndex","findIndex","x","direction","navigateAmount","left","right","up","down","targetDayComponent","focus","_events","calendarEvents","_todaysDate","_initDate","initDate","_generateCalendarHeader","_generateMonthRowsAndDays","_addEventListeners","calendarDay","calendarHeader","createElement","calendarTitleElement","_generateTitle","prevButtonElement","_generatePrevMonth","nextButtonElement","_generateNextMonth","appendChild","_calendarHeader","prepend","calendarTitle","append","prevMonthButton","prevMonthArrow","nextMonthButton","nextMonthArrow","_dispatchEvent","daysContainerElement","firstWeekday","_firstDayOfMonth","numberOfDays","_daysInMonth","weeks","_numberOfWeeks","daysOfTheWeekNames","_generateDaysOfTheWeekNames","dayRowsElements","rowIndex","row","spacer","eventOnThisDay","isSameDay","calendarLimitOptions","dayComponent","lastWeekDays","dayElement","fullDayNames","sun","mon","tue","wed","thu","fri","sat","namesOfTheWeek","findDayOfTheWeek","dayOfWeek","weekday","dateObj","eventsToAddOrUpdate","newOrUpdatedEvent","eventOnTheSameDayIndex","storedEvent","filter","getUTCDate","findMonthName","getDay","Math","ceil","_factoryOptions","_defaultComponentOptions","Component","__element","__options","__messageObject","instanceName","idPrefix","bubbles","cancelable","_log","siblingsOfElement","query","results","parentElement","el","firstElementChild","matches","nextElementSibling","ancestorsOfElement","classListContainsAll","classNameOrArray","classNames","className","classListContainsAny","createElementsFromHTML","htmlString","div","children","relatedElementByQuery","previousElementSibling","callback","contentLoadedHandler","readyState","doScroll","scrollIntoViewIfNeeded","centerIfNeeded","withinBounds","min","max","extent","parent","parentNode","area","makeArea","top","width","height","bottom","translate","y","relativeFromTo","lhsElement","rhsElement","newLeft","newTop","lhs","offsetParent","rhs","offsetLeft","clientLeft","offsetTop","clientTop","offsetWidth","offsetHeight","HTMLElement","scrollLeft","clientWidth","scrollTop","clientHeight","getViewPortBoundingRect","screenX","screenY","innerWidth","innerHeight","hasScrollbar","scrollHeight","scrollWidth","getScrollbarWidth","outer","style","visibility","widthNoScroll","overflow","inner","widthWithScroll","removeChild","setElementAttributes","handleOnce","eventListener","handler","removeChildNodes","childNodes","childElement","isVisible","getClientRects","FormattedDate","getDate","toString","padStart","daysOfTheWeek","findAbbrMonthName","getMonth","getFullYear","monthNames","dayOfMonth","inputDate","constructor","Number","NaN","d1","d2","firstDate","secondDate","compare","a","b","valueOf","isFinite","inRange","dateToCompare","abbreviatedMonthNames","settings","setting","concat","regions","defaultRegionId","defaultRegion","en","keypress_handler_1","today","calendarOptions","_clickHandler","_rippleAnimation","clientX","clientY","cancelBubble","_keypressHandler","_createKeypressEventListener","_date","_endDateLimit","_event","_selected","_startDateLimit","_today","_generateAndPopulateDayElement","_dayButtonElement","_removeEventListeners","_dayButtonWrapperElement","_generateNumberElement","_generateButtonAriaLabel","_generateLabelElement","avatarIconQuantity","_generateIcons","_setCurrentOrPastDay","_addAccessibilityAttributes","numberElement","innerText","ariaLabel","getAttribute","descriptionText","eventDayLabelElement","avatarMainElement","ariaLabelText","avatarIconElement","innerContainerElement","isToday","toggle","beforeToday","toISOString","_rippleElement","clientWidthAndHeight","calendarDayRect","getBoundingClientRect","floor","random","avatarContainer","avatarInnerRect","animation","transform","transition","_removeRipple","bool","ripple","navigate","createKeypressEventListener","spacebar","enter","handlers","keyCode","altKeyName","KEY_CODE_NAME_MAP","handlerKey","prop","handlerName","bubble","preventDefault","stopPropagation","simulateClickKeypressHandler","eventHandler","click","13","27","32","37","38","39","40","46","91","145","expandable_1","CollapsableComponentFactory","cachedComponent","targetElement","srcElement","target","elementType","toUpperCase","sourceElement","_closeButtonHandler","expanded","_expandStartHandler","_toggleChevron","_toggleRecordExpandedClass","_expandEndHandler","collapseStartClass","collapseTransitionClass","collapseEndClass","expandStartClass","expandTransitionClass","expandEndClass","defaultQuery","queryAttribute","_closeElement","chevronElement","collapsed","Expandable","transition_handler_1","_originalMaxHeight","targetAttribute","_transitionEndHandler","maxHeight","expandEndEvent","targetQuery","currentTarget","_cleanClasses","targetChangeEvent","oldTargetElement","hasAttribute","expandableTransitionSteps","expandStartEvent","elComputedStyle","getComputedStyle","elComputedDisplay","display","elComputedMaxHeight","elStyleDisplay","elStyleVisibility","elStylePosition","position","wantedHeight","getHeight","addClassString","removeClassString","afterTransitionEventName","transitionRunner","focusable","dom_1","defaultTransitionOptions","childWithTransitionSelector","mergeOptionsWithDefaults","toggleClasses","classString","transitionFinalizingHandler","transitionStep","transitionSteps","transitionHandler","shift","transitionElement","numberOfTransitionProperties","arrayToCount","test","origArray","countUniqueTransitionValues","transitionCounter","transitionHandlerFunction","_previousRole","focus_manager_1","compass_step_1","EVENT_ACTION_MAP","iris.compass.stepchange.after","action","stepKey","iris.compass.stepchange.before","iris.compass.done","CompassComponentFactory","createAsyncHandler","asyncCallSuccess","success","activeStep","nextStep","_cancelStepChange","_steps","_triggerNextElements","_triggerPreviousElements","_triggerDoneElements","_titleElements","_stepChangeHandler","actionEventListener","cancelStepChange","_mutationObserverHandler","records","_updateComponentState","_triggerDoneClickHandler","activateDone","_triggerNextClickHandler","activateNextStep","_triggerPreviousClickHandler","activatePreviousStep","stepChangeHandlers","_focusManager","FocusManager","_updateTriggerElements","_updateTitleElements","reset","_mutationObserver","MutationObserver","observe","attributes","childList","steps","active","oldStep","_step","_updateUI","setFocus","previousStep","_stepChangeHandlers","doneStep","stepById","nextStepId","previousStepId","_removeTriggerElementEvents","disableNext","triggerNextElements","_disableElement","disablePrevious","triggerPreviousElements","disableDone","triggerDoneElements","defaultActionHandlers","defaultActionHandler","actionHandlers","isFirst","_addTriggerElementEvents","_updateSteps","stepElement","autowireSteps","CompassStep","show","isAlreadyActive","setupTransition","title","titleElements","shownSelector","shownElements","hiddenSelector","hiddenElements","heirarchyOfSelectors","heirarchyOfFocusSelectors","previousFocusElement","focusElement","returnFocus","tabIndex","stepId","_getTransitionClassNames","isActive","transitionStartClass","transitioningClass","transitionEndClass","_b","allClassNames","done","parseFloat","transitionDuration","_contentHeaderChildren","_getSortableChildren","childSelector","undefined","sortable","_findChildItemInstance","child","_contentItemSelectedHandler","selectedContentHeaderInstance","childComponent","beforeParentEventName","beforeEventName","afterParentEventName","afterEventName","headerItemChild","childItem","_active","_describedbyElement","_sortDirection","_label","oppositeSortDirection","_resetComponent","_reverseDirectionalClasses","_removeDirectionalClasses","_addDirectionalClasses","_updateAriaAttributes","date_util_1","events","attributeName","datetime","_updateDate","dateFormat","_buildDateComponent","disconnect","params","numberString","parseInt","formattedDate","monthElement","yearElement","fullDate","abbreviatedMonth","elements","formatElements","D","M","Y","orderedElements","formatItem","formatElement","_focusLoopHandler","_open","_isMidTransition","_openEventAndAction","_closeEventAndAction","beforeOpenEvent","_logger","_openAction","_setFocus","beforeCloseEvent","_closeAction","_returnFocus","backdropElement","scrollbarWidth","borderRight","afterDrawerOpenHandler","afterOpenEvent","afterDrawerCloseHandler","afterCloseEvent","afterBackdropFadeHandler","optionalOpenEvent","optionalCloseEvent","Modal","_freeze","_escapeHandler","open","escape","_sourceElementClickHandler","_backdropElement","_triggerOpenElements","_triggerCloseElements","_modalTitleElement","_addAccessibility","_createEventListeners","contentElement","modalCloseElement","_listOptions","_listOptionsBlackListedAttributes","_lastExpandedState","oldListOptions","_updateListOptions","_manageHiddenInputs","selectedListOptions","listOption","_updateSelectedValueElement","_updateCaptureInputElement","_updateListHeader","listOptions","displayListContainerHeader","displayListContainerTitle","_documentClickHandler","_formResetHandler","_listItemSelectedHandler","listItem","listOptionElement","optionId","selectedListOption","_selectListOption","record","_statusRegion","globalStatusRegion","formElement","displayListContainerElement","selectedValueElement","captureInputElement","_listMaxHeight","selectedOptions","option","validity","dataListElement","subtree","activeDescendantId","displayListElement","activeListOption","displayListItem","broadcast","text","_captureInputElement","tabindex","aria-expanded","aria-owns","aria-haspopup","aria-describedby","placeholderElement","_chevronElement","dupeElement","_dataListElement","listElement","_displayListContainerElement","_displayListContainerHeader","displayListContainerClose","_displayListContainerTitle","_displayListContainerClose","_displayListElement","_manageExpandTransition","_placeholderElement","oldSelectedListOptions","sameListOptions","oldListOption","_dispatchDropdownEvent","_selectedValueElement","multiselect","selectedFn","val","selectedOption","labelElement","expand","dropdownExpandedTransitionSteps","dropdownCollapsedTransitionSteps","dropdownTransitionSteps","dropdownTransitionEventName","viewPortRect","elementRect","expandState","vals","_hiddenInputElements","hiddenInputElement","inputElement","required","_getActiveOptionIndex","activeOption","_selectActiveListOption","selectedOptionText","_labelElement","listOptionsConfig","optionAttributeBlacklist","blackListAttributes","dataListItemElements","oldItem","displayListItemElements","updateListItem","selectedViewElement","word","searchOptions","_word","moveActiveOption","activeOptionIndex","maxIndex","movedIndex","moveActiveOptionIndex","selectActiveListOption","tab","char","ariaSelectedDeprecationWarning","ariaDisabledDeprecationWarning","defaultBlackListAttributes","dupes","isGeneratedId","startsWith","_blackListAttributes","_displayListItem","displayListItemElement","createListOptionElement","checkboxContainer","_updateDisplayListItemContent","phoNode","cloneNode","textElement","displayContent","displayContentElement","textOrHtmlElement","selectedView","listContent","readOnly","_updateCheckbox","previousRole","role","checkboxElement","checked","politeness","VARIANTS","static","actionable","checkable","_listItems","_updateListRole","_updateListItems","_selectListItem","_decreaseActiveItemPosition","_increaseActiveItemPosition","_selectActiveItem","activeListItem","_blurHandler","_focusHandler","selectedListItems","listItems","_moveActiveItemPosition","activeIndex","activeListItemIndex","li","variant","oldSelectedListItems","selectedListItem","sameListItems","oldListItem","_dispatchChangeEvent","selectedItems","variants","_variant","componentClass","previousTabindex","listItemClass","listItemElement","activeListItemId","_navigationElement","_paginationSize","size","_initPageIndex","initPage","_currentPageIndex","items","itemArray","_paginatedArray","_originalItems","tempArray","createNavigation","pageIndex","_paginationButtons","paginationButton","_paginationTextfield","currentPage","firstButton","currentPageIndex","backButton","textfieldContainer","select","totalPageCounter","nextButton","lastButton","button","PLACEMENT","INDICATOR_POSITION","center","none","PopoverComponentFactory","documentClickHandler","closeOnLeave","_popper","placement","indicator","popperConfig","staticPlacement","modifiers","flip","enabled","scheduleUpdate","modal_1","narrowVariantDeprecationWarning","wideVariantDeprecationWarning","afterPromptOpenHandler","afterPromptCloseHandler","tabListElement","_fireActive","_tabListElement","_linkElement","tabRect","tabInnerRect","createTabElement","link","tabLink","TabListComponentFactory","leftIconClass","rightIconClass","getTabListByTabElement","tabElement","filteredComponentList","potentiallyEmptyArray","tabListComponent","tabs","_tabs","_updateTabs","_scrollHandler","closest","_navPressedHandler","tabInnerElement","buttonElement","tabstarts","tabComponent","amountToScroll","positionToScroll","array","reverse","scroll","behavior","_activateHandler","activeTab","_handleKeyPressListener","_keypressEventListener","_moveHighlightedTab","_tabInnerElement","_leftNavigation","_rightNavigation","findTabById","highlightedTabIndex","oldTabs","iconClassName","iconClassNames","isArray","iconElement","SIZE","auto","small","medium","large","_focused","_hovered","tooltipElement","_tooltipContentElement","content","_mouseEnterHandler","_displayTooltip","_mouseLeaveHandler","_tooltipElement","isInteractiveType","pastExpanded"],"mappings":"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","file":"iris.min.js","sourcesContent":[" \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 = 0);\n","import { AccessabilityDetection } from './accessability-detection';\nimport { IComponentOptions } from './component';\nimport { ComponentFactory, GenericComponentFactory, IComponentFactoryOptions } from './component-factory';\nimport { ComponentManager } from './component-manager';\nimport { CalendarComponent, ICalendarOptions } from './components/calendar';\nimport { CalendarDayComponent, ICalendarDayEvent } from './components/calendar-day';\nimport { CollapsableComponent, CollapsableComponentFactory } from './components/collapsable';\nimport { CompassComponent, CompassComponentFactory, ICompassComponentOptions } from './components/compass';\nimport { ContentHeaderComponent, IContentHeaderOptions } from './components/content-header';\nimport { ContentHeaderItem } from './components/content-header-item';\nimport { DateComponent, IDateComponentOptions } from './components/date';\nimport { DrawerComponent } from './components/drawer';\nimport { DropdownComponent, IDropdownComponentOptions } from './components/dropdown';\nimport { IListComponentOptions, ListComponent } from './components/list';\nimport { ListItem } from './components/list-item';\nimport { ListOption } from './components/list-option';\nimport { LiveRegion } from './components/live-region';\nimport { IModalOptions } from './components/modal';\nimport { IPaginationComponentOptions, PaginationComponent } from './components/pagination';\nimport { PopoverComponent, PopoverComponentFactory } from './components/popover';\nimport { PromptComponent } from './components/prompt';\nimport { ISyntheticButtonComponentOptions, SyntheticButtonComponent } from './components/synthetic-button';\nimport { TabComponent } from './components/tab';\nimport { TabListComponent, TabListComponentFactory } from './components/tab-list';\nimport { TabNavigationComponent } from './components/tab-navigation';\nimport { ITooltipComponentOptions, TooltipComponent } from './components/tooltip';\nimport { logger } from './logger';\nimport { RegionSettings } from './regional';\n\nimport * as dateUtility from './date-util';\nimport * as dom from './dom';\nimport * as keyPressHandlers from './keypress-handler';\nimport * as utility from './utility';\n\n// tslint:disable-next-line interface-name\nexport interface AlkamiFramework {\n\tIris: IrisFramework;\n}\n\nconst _global = ((typeof window !== 'undefined') ? window : global) as any;\n\n\nexport class IrisFramework {\n\tpublic AccessabilityDetection = AccessabilityDetection;\n\tpublic CollapsableComponent = CollapsableComponent.factory;\n\tpublic CompassComponent = CompassComponent.factory;\n\tpublic ContentHeader = ContentHeaderComponent.factory;\n\tpublic ContentHeaderComponent = ContentHeaderComponent.factory;\n\tpublic ContentHeaderItem = ContentHeaderItem;\n\tpublic DateComponent = DateComponent.factory;\n\tpublic DropdownComponent = DropdownComponent.factory;\n\tpublic Drawer = DrawerComponent.factory;\n\tpublic DrawerComponent = DrawerComponent.factory;\n\tpublic ListComponent = ListComponent.factory;\n\tpublic PaginationComponent = PaginationComponent.factory;\n\tpublic PopoverComponent = PopoverComponent.factory;\n\tpublic Prompt = PromptComponent.factory;\n\tpublic PromptComponent = PromptComponent.factory;\n\tpublic SyntheticButtonComponent = SyntheticButtonComponent.factory;\n\tpublic TabListComponent = TabListComponent.factory;\n\tpublic TooltipComponent = TooltipComponent.factory;\n\n\tpublic CalendarComponent = CalendarComponent.factory;\n\tpublic CalendarDayComponent = CalendarDayComponent;\n\tpublic ListItem = ListItem;\n\tpublic ListOption = ListOption;\n\tpublic LiveRegion = LiveRegion;\n\tpublic RegionSettings = RegionSettings;\n\tpublic TabComponent = TabComponent;\n\tpublic TabNavigationComponent = TabNavigationComponent;\n\n\tpublic ComponentFactory = ComponentFactory;\n\tpublic ComponentManager = ComponentManager.defaultManager;\n\tpublic GenericComponentFactory = GenericComponentFactory;\n\n\tpublic dateUtility = dateUtility;\n\tpublic dom = dom;\n\tpublic keyPressHandlers = keyPressHandlers;\n\tpublic logger = logger;\n\tpublic utility = utility;\n\tpublic readonly version = process.env.IRIS_VERSION;\n\n\tpublic init = function() {\n\t\t// Iris initialization begin\n\t\t// =============================================================================\n\t\tdom.dispatchEvent(document.body, 'iris.init.start', { iris: this });\n\t\tdom.dispatchEvent(document.body, 'irisinitstart', { iris: this });\n\n\t\tthis._accessabilityDetection = new AccessabilityDetection();\n\n\t\t// Component Initialization\n\t\t// =============================================================================\n\t\tdom.dispatchEvent(document.body, 'iris.init.component-start', { iris: this });\n\n\t\tif (this._irisOptions.autoInit) {\n\t\t\tthis._initComponents();\n\t\t}\n\n\t\tdom.dispatchEvent(document.body, 'iris.init.component-end', { iris: this });\n\n\t\tlogger({\n\t\t\tmessage: `Initialized Iris Framework version ${this.version}.`,\n\t\t\ttype: 'info',\n\t\t});\n\n\t\t// Iris initialization end\n\t\t// =============================================================================\n\t\tdom.dispatchEvent(document.body, 'irisinitend', { iris: this });\n\t\tdom.dispatchEvent(document.body, 'iris.init.end', { iris: this });\n\t};\n\n\t// This method takes the default query selector of a component and filters out the\n\t// ones intended to be manually init-ed.\n\tprivate _getAutoInitElements(querySelector: string): NodeListOf {\n\t\tconst filteredElementQuery = `${querySelector}:not([data-manual-init])`;\n\n\t\treturn document.querySelectorAll(filteredElementQuery);\n\t}\n\n\tprivate _initComponents() {\n\t\tthis.CollapsableComponent.init(this._getAutoInitElements(this.CollapsableComponent.querySelector));\n\t\tthis.CompassComponent.init(this._getAutoInitElements(this.CompassComponent.querySelector));\n\t\tthis.DateComponent.init(this._getAutoInitElements(this.DateComponent.querySelector));\n\t\tthis.DropdownComponent.init(this._getAutoInitElements(this.DropdownComponent.querySelector));\n\t\tthis.ListComponent.init(this._getAutoInitElements(this.ListComponent.querySelector));\n\t\tthis.PromptComponent.init(this._getAutoInitElements(this.PromptComponent.querySelector));\n\t\tthis.DrawerComponent.init(this._getAutoInitElements(this.DrawerComponent.querySelector));\n\t\tthis.SyntheticButtonComponent.init(this._getAutoInitElements(this.SyntheticButtonComponent.querySelector));\n\t\tthis.TabListComponent.init(this._getAutoInitElements(this.TabListComponent.querySelector));\n\n\t\tif (typeof Popper === 'undefined') {\n\t\t\tlogger({\n\t\t\t\tmessage: 'Popper.js is not available. It is required by the Iris Framework to use the Popover and Tooltip Components.',\n\t\t\t\ttype: 'warn',\n\t\t\t});\n\t\t} else {\n\t\t\tthis.PopoverComponent.init(this._getAutoInitElements(this.PopoverComponent.querySelector));\n\t\t\tthis.TooltipComponent.init(this._getAutoInitElements(this.TooltipComponent.querySelector));\n\t\t}\n\t}\n\n\tprivate _accessabilityDetection: AccessabilityDetection = null;\n\tprivate _irisOptions = {\n\t\tautoInit: true,\n\t};\n\n\tpublic get globalOptions() {\n\t\treturn this._irisOptions;\n\t}\n\n\tpublic set globalOptions(newOptions: object) {\n\t\tthis._irisOptions = Object.assign(this._irisOptions, newOptions);\n\t}\n\n\tpublic static Iris: IrisFramework = new IrisFramework();\n}\n\nexport function globalizeIris() {\n\t_global.Alkami = _global.Alkami || {} as AlkamiFramework;\n\t_global.Alkami.Iris = IrisFramework.Iris;\n}\nexport function unglobalizeIris() {\n\tdelete _global.Alkami.Iris;\n}\n\nexport const Iris = IrisFramework.Iris;\n\nexport default Iris;\n\nglobalizeIris();\nif (_global.window) {\n\tconst iris = IrisFramework.Iris;\n\tIris.dom.ready(() => { iris.init(); });\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\nexport class AccessabilityDetection {\n\n\tprivate _mouseClassName = 'iris-mouse-use-detected';\n\tprivate _keyboardClassName = 'iris-keyboard-use-detected';\n\tprivate _isKeyPressed = false;\n\tprivate _element = document.body;\n\n\tconstructor() {\n\t\tthis._element.classList.contains(this._keyboardClassName) ? this._handleKeyDown() : this._handleMouseDown();\n\t\tthis._handleKeyUp();\n\n\t\twindow.addEventListener('keyup', this._handleKeyUp);\n\t}\n\n\tpublic destroy() {\n\t\twindow.removeEventListener('keydown', this._handleKeyDown);\n\t\twindow.removeEventListener('mousedown', this._handleMouseDown);\n\t\twindow.removeEventListener('touchstart', this._handleMouseDown);\n\t\tthis._element.classList.remove(this._mouseClassName);\n\t\tthis._element.classList.remove(this._keyboardClassName);\n\t}\n\n\tprivate _handleKeyDown = (e?: KeyboardEvent) => {\n\t\t// If this isn't a keyboard event then bail out. (chrome does this on autofill)\n\t\tif (e && !e.key) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst key = (e && e.key.toLowerCase()) || null;\n\t\tconst whitelistedTypes = ['INPUT', 'TEXTAREA'];\n\t\tconst hasActiveElement = !!document.activeElement;\n\t\tconst isActiveElementWhitelisted = whitelistedTypes.find((tagName) => tagName === document.activeElement.tagName);\n\n\t\tif (key !== 'tab' && hasActiveElement && isActiveElementWhitelisted ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isKeyPressed = true;\n\t\tthis._element.classList.remove(this._mouseClassName);\n\t\tthis._element.classList.add(this._keyboardClassName);\n\t\twindow.removeEventListener('keydown', this._handleKeyDown);\n\t\twindow.addEventListener('mousedown', this._handleMouseDown);\n\t\twindow.addEventListener('touchstart', this._handleMouseDown);\n\t}\n\n\tprivate _handleKeyUp = () => {\n\t\tthis._isKeyPressed = false;\n\t}\n\n\tprivate _handleMouseDown = () => {\n\t\tif (this._isKeyPressed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._element.classList.add(this._mouseClassName);\n\t\tthis._element.classList.remove(this._keyboardClassName);\n\t\twindow.removeEventListener('mousedown', this._handleMouseDown);\n\t\twindow.removeEventListener('touchstart', this._handleMouseDown);\n\t\twindow.addEventListener('keydown', this._handleKeyDown);\n\t}\n\n}\n","import { Component, IComponentOptions } from './component';\nimport { ComponentManager, IComponentCache } from './component-manager';\n\nimport { logger } from './logger';\nimport { generateUniqueId, toArray } from './utility';\n\nexport interface IComponentFactoryOptions {\n\tdefaultQuerySelector: string;\n\tcomponentName: string;\n}\n\nexport abstract class ComponentFactory {\n\tprivate _createFn: (element: HTMLElement, options?: K) => T;\n\tprivate _options: IComponentFactoryOptions;\n\n\tprotected get defaultNodes(): NodeList {\n\t\treturn document.querySelectorAll(this._options.defaultQuerySelector);\n\t}\n\n\tconstructor(createComponentFn: (element: HTMLElement, options?: K) => T, options: IComponentFactoryOptions) {\n\t\tthis._createFn = createComponentFn;\n\t\tthis._options = options;\n\t}\n\n\n\t// Component property queries\n\t// =============================================================================\n\tpublic get componentName(): string {\n\t\treturn this._options.componentName;\n\t}\n\n\tpublic get querySelector(): string {\n\t\treturn this._options.defaultQuerySelector;\n\t}\n\n\tpublic get create(): (element: HTMLElement, options?: K) => T {\n\t\treturn this._createFn;\n\t}\n\n\n\t// Component manager queries\n\t// =============================================================================\n\tpublic get components(): IComponentCache {\n\t\treturn ComponentManager.defaultManager.getComponentsByType(this._options.componentName);\n\t}\n\n\n\t// Common component methods\n\t// =============================================================================\n\tpublic init(nodes?: Node | NodeList, options?: K): T[] {\n\t\tconst nodeList = nodes || this.defaultNodes;\n\n\t\treturn toArray(nodeList).map((element: HTMLElement) => {\n\t\t\t\tconst irisId = element.dataset.irisId;\n\t\t\t\tlet component = null;\n\n\t\t\t\tif (!irisId) {\n\t\t\t\t\t\telement.setAttribute('data-iris-id', generateUniqueId('iris', Object.keys(this.components)));\n\t\t\t\t}\n\n\t\t\t\t// If the element has an IrisId, ask the manager if there is an instance already for this specific component\n\t\t\t\tcomponent = ComponentManager.defaultManager.findInstanceForElement(irisId, this.componentName);\n\n\t\t\t\t// Only call the create function if a component doesn't already exist.\n\t\t\t\t// Also, once the component has been created, register it with the manager.\n\t\t\t\tif (!component) {\n\t\t\t\t\t\tcomponent = this.create(element, options);\n\t\t\t\t\t\tComponentManager.defaultManager.add(component);\n\t\t\t\t}\n\n\t\t\t\treturn component;\n\t\t});\n\t}\n\n\tpublic destroy(nodes?: Node | NodeList): T[] {\n\t\tconst nodeList = nodes || this.defaultNodes;\n\n\t\treturn ComponentManager.defaultManager.destroyComponent(nodeList, this.componentName);\n\t}\n\n\tpublic refresh(nodes?: Node | NodeList, options?: K): T[] {\n\t\tconst nodeList = nodes || this.defaultNodes;\n\n\t\tthis.destroy(nodeList);\n\t\tconst component = this.init(nodeList, options);\n\t\tthis.cleanup();\n\n\t\treturn component;\n\t}\n\n\t// Cleanup any zombies out there who aren't part of the active DOM.\n\tpublic cleanup() {\n\t\treturn ComponentManager.defaultManager.disposeZombieInstances(this.componentName);\n\t}\n\n\tpublic componentForElement(element: HTMLElement): T {\n\t\tif (!element) {\n\t\t\tconsole.error('No element was passed in, returning null');\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ComponentManager.defaultManager.findInstanceForElement(element.dataset.irisId, this.componentName);\n\t}\n}\n\nexport class GenericComponentFactory extends ComponentFactory {\n\tconstructor(\n\t\tcomponentConstructor: new(element: HTMLElement, options?: K) => T,\n\t\tfactoryOptions: IComponentFactoryOptions, defaultComponentOptions?: IComponentOptions\n\t) {\n\t\tsuper((element: HTMLElement, options?: K) => {\n\t\t\treturn new componentConstructor(element, Object.assign({ componentName: factoryOptions.componentName }, defaultComponentOptions, options));\n\t\t}, factoryOptions);\n\t}\n}\n","import { Component } from './component';\nimport { logger } from './logger';\nimport { toArray } from './utility';\n\nexport interface IComponentCache {\n [key: string]: any[];\n}\n\nexport class ComponentManager {\n protected _components: IComponentCache = {};\n\n public get components() {\n return this._components;\n }\n\n public getComponentsByType(componentName: string) {\n const componentsOfType: IComponentCache = {};\n\n Object.values(this._components).forEach((componentArray) => {\n componentArray.forEach((component) => {\n const irisId = component.element.dataset.irisId;\n\n if (component.getOptions().componentName === componentName) {\n if (!componentsOfType[irisId]) {\n componentsOfType[irisId] = [];\n }\n componentsOfType[irisId].push(component);\n }\n });\n });\n\n return componentsOfType;\n }\n\n public add(component: Component): void {\n const irisId = component.element.dataset.irisId;\n\n if (!irisId) {\n logger({\n component: 'Manager',\n message: 'No iris id on the element passed in.',\n type: 'warn'\n });\n }\n\n if (!this._components[irisId]) {\n this._components[irisId] = [];\n }\n\n this._components[irisId].push(component);\n }\n\n public destroyComponent(nodes: any, componentName: string) {\n const destroyedComponents: any[] = [];\n\n toArray(nodes).forEach((element: HTMLElement) => {\n const irisId = element.dataset.irisId;\n\n if (!this._components[irisId]) {\n logger({\n component: 'Manager',\n message: 'The irisId was not found in the registry.',\n type: 'warn'\n });\n\n return null;\n }\n\n const componentToRemove = this.findInstanceForElement(irisId, componentName);\n if (!componentToRemove) {\n logger({\n component: 'Manager',\n message: 'A matching component was not found in the registry.',\n type: 'warn'\n });\n\n return null;\n }\n\n // First destroy the component\n // NOTE: This could initiate another component destroy as well (i.e. collapsable and synthetic button)\n componentToRemove.destroy();\n\n // Next calculate the index of the component in the registry.\n // NOTE: This MUST happen after the destroy in case the index changes by removing a child component.\n const componentIndex = this._components[irisId].indexOf(componentToRemove);\n\n destroyedComponents.push(this._components[irisId].splice(componentIndex, 1)[0]);\n\n if (this._components[irisId].length === 0) {\n delete this._components[irisId];\n\n delete element.dataset.irisId;\n element.removeAttribute('data-iris-id');\n }\n });\n\n return destroyedComponents;\n }\n\n public disposeZombieInstances(componentName: string) {\n const irisIds = Object.keys(this._components);\n\n if (irisIds.length === 0) {\n logger({\n component: 'Manager',\n message: 'There are no irisIds to search through.',\n type: 'info'\n });\n\n return []; // Throw the warning and return an empty array.\n }\n\n const cleanedComponents: Component[] = [];\n\n irisIds.forEach((irisId: string) => {\n // First search the DOM for the element to see if it exists\n const element = document.querySelector(`[data-iris-id=\"${irisId}\"]`);\n\n // If it doesn't, it means that the element was removed from the DOM.\n // The most likely cause is a JavaScript framework of some kind.\n if (!element) {\n // If no components are listed under the irisId, it means we have most likely\n // already removed that key from a previous component's destroy method.\n // EX: Drawer destroying a synthetic button.\n // When this happens, give a log error and move on.\n if (!this._components[irisId]) {\n logger({\n component: 'Manager',\n message: `The component listing for Iris ID: ${irisId} doesn't exist.`,\n type: 'info'\n });\n\n return;\n }\n\n this._components[irisId].forEach((component: Component) => {\n if (componentName === component.getOptions().componentName) {\n this.destroyComponent(component.element, componentName);\n cleanedComponents.push(component);\n }\n });\n }\n });\n\n return cleanedComponents;\n }\n\n public findInstanceForElement(irisId: string, componentName: string) {\n if (!this._components[irisId]) {\n return null;\n }\n\n return this._components[irisId].find((component: Component) => componentName === component.getOptions().componentName || null);\n }\n\n public static defaultManager = new ComponentManager();\n}\n","export type IrisLoggerLevel = 'trace' | 'info' | 'log' | 'warn' | 'error';\n\nexport interface IrisLogger {\n\tcomponent?: string;\n\tmessage: string;\n\ttip?: string;\n\ttype: IrisLoggerLevel;\n}\n\n// Check the local storage for a TRACE key to enable trace messages.\n// TODO: Make this setting's value a bit more flexible.\nconst logTraceMessages = window.localStorage && window.localStorage.getItem('irisTrace') === 'true';\n\nexport function logger(messageObject: IrisLogger) {\n\tconst componentString = messageObject.component ? ` (${messageObject.component})` : '';\n\tlet message = `IRIS:${componentString} ${messageObject.message}`;\n\n\tswitch (messageObject.type) {\n\t\tcase 'trace':\n\t\t\tif (logTraceMessages) {\n\t\t\t\tmessage = `TRACE || ${message}`;\n\n\t\t\t\t// tslint:disable-next-line no-console\n\t\t\t\tconsole.log(message);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'info':\n\t\t\t// tslint:disable-next-line no-console\n\t\t\tconsole.info(message);\n\t\t\tbreak;\n\n\t\tcase 'log':\n\t\t\t// tslint:disable-next-line no-console\n\t\t\tconsole.log(message);\n\t\t\tbreak;\n\n\t\tcase 'warn':\n\t\t\t// tslint:disable-next-line no-console\n\t\t\tconsole.warn(message);\n\t\t\tbreak;\n\n\t\tcase 'error':\n\t\t\t// tslint:disable-next-line no-console\n\t\t\tconsole.error(new Error(message));\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\t// tslint:disable-next-line no-console\n\t\t\tconsole.warn('Message was of an unknown type. Something went wrong.');\n\t\t\tbreak;\n\t}\n\n\tif (messageObject.tip) {\n\t\t// tslint:disable-next-line no-console\n\t\tconsole.info(`TIP: ${messageObject.tip}`);\n\t}\n}\n","import { IrisLogger, logger } from './logger';\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// @source https://davidwalsh.name/javascript-debounce-function\n// @author David Walsh\nexport function debounce(func: (...args: any[]) => any | void, wait: number, immediate: boolean = false) {\n\tlet timeout: any;\n\treturn function(..._a: any[]) {\n\t\tconst context = this;\n\t\tconst args = arguments;\n\t\tconst later = function() {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) { func.apply(context, args); }\n\t\t};\n\t\tconst callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) { func.apply(context, args); }\n\t};\n}\n\nconst tokenRegex = /{(\\d+)}/g;\nexport function format(string: string, ...values: any[]) {\n\treturn string.replace(tokenRegex, (match, number) => {\n\t\treturn typeof values[number] !== 'undefined' ? values[number] : match;\n\t});\n}\n\nexport function generateUniqueId(prefix: string, existingIds?: string[]): string {\n\tconst id = prefix + '_' + (new Date()).getTime();\n\tconst exists = existingIds ? existingIds.indexOf(id) > -1 : document && document.getElementById(id);\n\n\tif (exists) {\n\t\treturn generateUniqueId(prefix, existingIds);\n\t}\n\n\treturn id;\n}\n\nexport function getOrdinal(day: number) {\n\tconst suffixes = ['th', 'st', 'nd', 'rd'];\n\tconst value = day % 100;\n\n\treturn day + (suffixes[(value - 20) % 10] || suffixes[value] || suffixes[0]);\n}\n\nexport function isString(str: any): boolean {\n\treturn (typeof str === 'string' || str instanceof String);\n}\n\nexport function joinAttributeList(list: string[]): string {\n\treturn list\n\t\t.map((item) => item.trim())\n\t\t.join(' ');\n}\n\n/* tslint:disable: unified-signatures */\nexport function range(start: number, end: number, step: number): number[];\nexport function range(start: number, end: number): number[];\nexport function range(range: number): number[];\nexport function range(rangeOrStart: number, maybeEnd?: number, step: number = 1): number[] {\n\tconst start = maybeEnd ? rangeOrStart : 0;\n\tconst end = maybeEnd || rangeOrStart;\n\n\treturn (Array.apply(null, { length: (end - start) / step }) as number[]).map((_n, index) => {\n\t\treturn (index * step) + start;\n\t});\n}\n/* tslint:enable */\n\nexport function splitAttributeToList(attr: string): string[] {\n\tconst attribute = (attr && attr.trim()) || '';\n\treturn attribute ? attribute.split(/\\s+/) : [];\n}\n\nexport function toArray(arrayLikeObject: any): any[] {\n\tif (!arrayLikeObject) {\n\t\t// tslint:disable-next-line\n\t\tconsole.warn('The object passed in was either null or undefined. Returning an empty array.');\n\t\treturn [];\n\t}\n\n\tconst result = Array.prototype.slice.call(arrayLikeObject);\n\n\t// if the slice comes back empty and there is not a length property\n\t// we can assume safely it's not an arrayLikeObject and just push it in.\n\t// if there is a length property then we will just return the empty array.\n\tif (result.length === 0 && typeof arrayLikeObject.length === 'undefined') {\n\t\tresult.push(arrayLikeObject);\n\t}\n\n\treturn result;\n}\n\nexport const dispatchIrisEvent = (item: HTMLElement, eventName: string, messageObject: IrisLogger, detail?: any): void => {\n\tconst event = new CustomEvent(eventName, {\n\t\tdetail: detail || item,\n\t});\n\n\titem.dispatchEvent(event);\n\n\tlogger({\n\t\tcomponent: messageObject.component,\n\t\tmessage: `Dispatching event ${event.type}`,\n\t\ttype: messageObject.type,\n\t});\n};\n\nexport function isTouchDevice() {\n\treturn 'ontouchstart' in document.documentElement;\n}\n\nexport function areArraysEqual(arr1: any[], arr2: any, strict: boolean = false): boolean {\n\tif (arr1.length !== arr2.length) {\n\t\treturn false;\n\t}\n\n\tif (strict) {\n\t\tfor (let i = arr1.length; i--;) {\n\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn arr1.every((item1: any) => !!arr2.find((item2: any) => item1 === item2));\n}\n\n// returns a function that will run the passed in function only once,\n// otherwise the result of that function will be returned.\n// @source https://davidwalsh.name/javascript-once\n// @author David Walsh\nexport function once(fn: (..._arguments: any[]) => any, context = this) {\n\tlet result: any;\n\tlet cb = fn;\n\n\t// tslint:disable-next-line: only-arrow-functions\n\treturn function(..._arguments: any[]) {\n\t\tif (cb) {\n\t\t\tresult = fn.apply(context, arguments);\n\t\t\tcb = null;\n\t\t}\n\n\t\treturn result;\n\t};\n}\n","import {Component, IComponentOptions} from '../component';\nimport { GenericComponentFactory, IComponentFactoryOptions } from '../component-factory';\nimport * as dateUtility from '../date-util';\nimport * as dom from '../dom';\nimport * as utility from '../utility';\nimport {CalendarDayComponent, ICalendarDayEvent} from './calendar-day';\n\nexport interface ICalendarOptions extends IComponentOptions {\n\tstartDateLimit: Date | string | null;\n\tendDateLimit: Date | string | null;\n\tcalendarEvents: ICalendarDayEvent[];\n\tdefaultAvatarIconClass?: string;\n\tselectedEventDayName: string;\n\tpreviousMonthClickEventName: string;\n\tnextMonthClickEventName: string;\n\tinitDate?: null | string;\n}\n\ninterface INavigationAmount {\n\tleft: number;\n\tright: number;\n\tup: number;\n\tdown: number;\n\t[key: string]: number;\n}\n\ninterface IFullDayNames {\n\tsun: string;\n\tmon: string;\n\ttue: string;\n\twed: string;\n\tthu: string;\n\tfri: string;\n\tsat: string;\n\t[key: string]: string;\n}\n\nexport class CalendarComponent extends Component {\n\tprivate _calendarHeader: HTMLElement;\n\tprivate _calendarTitleElement: HTMLElement;\n\tprivate _currentMonth: number;\n\tprivate _currentYear: number;\n\tprivate _dayComponents: CalendarDayComponent[];\n\tprivate _events: ICalendarDayEvent[];\n\tprivate _nextMonthButtonElement: HTMLButtonElement;\n\tprivate _options: ICalendarOptions;\n\tprivate _prevMonthButtonElement: HTMLButtonElement;\n\tprivate _todaysDate: Date;\n\tprivate _initDate: Date;\n\n\tconstructor(element: HTMLElement, options?: ICalendarOptions) {\n\t\tsuper(element, options);\n\n\t\t// Set private variables\n\t\tthis._events = options.calendarEvents;\n\t\tthis._options = options;\n\t\tthis._todaysDate = new Date();\n\t\tthis._initDate = options.initDate ? new Date(options.initDate) : this._todaysDate;\n\t\tthis._currentMonth = this._initDate.getUTCMonth();\n\t\tthis._currentYear = this._initDate.getUTCFullYear();\n\n\t\t// Generate the calendar markup\n\t\tthis._generateCalendarHeader();\n\t\tthis._generateMonthRowsAndDays();\n\n\t\t// Add event listeners\n\t\tthis._addEventListeners();\n\t}\n\n\tpublic destroy() {\n\t\tthis._dayComponents.forEach((calendarDay) => {\n\t\t\tcalendarDay.destroy();\n\t\t});\n\n\t\tthis._prevMonthButtonElement.removeEventListener('click', this._previousMonthClickHandler);\n\t\tthis._nextMonthButtonElement.removeEventListener('click', this._nextMonthClickHandler);\n\t\tthis.element.removeEventListener('_calendarDaySelected', this._calendarChildSelectedHandler);\n\t}\n\n\t// Element creator methods\n\t// =============================================================================\n\tprivate _generateCalendarHeader() {\n\t\t// build Header\n\t\tconst calendarHeader = document.createElement('div');\n\t\tcalendarHeader.classList.add('iris-calendar__header', 'flex', 'flex-items--center');\n\n\t\tconst calendarTitleElement = this._generateTitle();\n\t\tconst prevButtonElement = this._generatePrevMonth();\n\t\tconst nextButtonElement = this._generateNextMonth();\n\n\t\tcalendarHeader.appendChild(calendarTitleElement);\n\t\tcalendarHeader.appendChild(prevButtonElement);\n\t\tcalendarHeader.appendChild(nextButtonElement);\n\n\t\tthis._calendarHeader = calendarHeader;\n\t\tthis.element.prepend(calendarHeader);\n\t}\n\n\tprivate _generateTitle() {\n\t\t// calendar title\n\t\tconst calendarTitle = document.createElement('h2');\n\t\tcalendarTitle.classList.add('iris-calendar__header-title', 'mar--0');\n\t\tcalendarTitle.append(`${this._nameOfMonth(this._currentMonth)} ${this._currentYear}`);\n\n\t\tthis._calendarTitleElement = calendarTitle;\n\n\t\treturn calendarTitle;\n\t}\n\n\tprivate _generatePrevMonth() {\n\t\t// previous button arrow\n\t\tconst prevMonthButton = document.createElement('button');\n\t\tprevMonthButton.classList.add('iris-button', 'iris-button--ghost', 'iris-calendar__header-prev-month');\n\t\tprevMonthButton.setAttribute('aria-label', 'previous month');\n\n\t\tconst prevMonthArrow = document.createElement('span');\n\t\tprevMonthArrow.classList.add('iris-button__icon', 'font-icon-angle-left');\n\t\tprevMonthButton.appendChild(prevMonthArrow);\n\n\t\tthis._prevMonthButtonElement = prevMonthButton;\n\n\t\treturn prevMonthButton;\n\t}\n\n\tprivate _generateNextMonth() {\n\t\t// next month button arrow\n\t\tconst nextMonthButton = document.createElement('button');\n\t\tnextMonthButton.classList.add('iris-button', 'iris-button--ghost', 'iris-calendar__header-next-month');\n\t\tnextMonthButton.setAttribute('aria-label', 'next month');\n\n\t\tconst nextMonthArrow = document.createElement('span');\n\t\tnextMonthArrow.classList.add('iris-button__icon', 'font-icon-angle-right');\n\t\tnextMonthButton.appendChild(nextMonthArrow);\n\n\t\tthis._nextMonthButtonElement = nextMonthButton;\n\n\t\treturn nextMonthButton;\n\t}\n\n\tprivate _generateMonthRowsAndDays() {\n\t\tthis._dispatchEvent('iris.calendar.generate.start', { component: this });\n\n\t\t// Build DaysContainer\n\t\tconst daysContainerElement = document.createElement('div');\n\t\tdaysContainerElement.classList.add('iris-calendar__days');\n\t\tdaysContainerElement.setAttribute('role', 'grid');\n\n\t\tconst firstWeekday = this._firstDayOfMonth(this._currentMonth, this._currentYear);\n\t\tconst numberOfDays = this._daysInMonth(this._currentMonth, this._currentYear);\n\t\tconst weeks = this._numberOfWeeks(firstWeekday, numberOfDays);\n\n\t\tconst daysOfTheWeekNames = this._generateDaysOfTheWeekNames();\n\n\t\tdaysContainerElement.append(daysOfTheWeekNames);\n\n\t\t// build dayRowsElements\n\t\tconst dayRowsElements = utility.range(weeks).map((rowIndex) => {\n\t\t\tconst row = document.createElement('div');\n\t\t\trow.classList.add('iris-calendar__days-row');\n\t\t\trow.setAttribute('role', 'row');\n\t\t\trow.setAttribute('aria-rowindex', `${rowIndex}`);\n\n\t\t\tif (rowIndex === 0 && firstWeekday !== 0) {\n\t\t\t\tutility.range(firstWeekday).forEach((day) => {\n\t\t\t\t\tconst spacer = document.createElement('div');\n\t\t\t\t\tspacer.classList.add('iris-calendar__days-spacer');\n\t\t\t\t\tspacer.setAttribute('role', 'gridcell');\n\t\t\t\t\trow.appendChild(spacer);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdaysContainerElement.append(row);\n\t\t\treturn row;\n\t\t});\n\n\t\t// generate day component\n\t\tthis._dayComponents = utility.range(1, numberOfDays + 1).map((day: number) => {\n\t\t\tconst date = new Date(this._currentYear, this._currentMonth, day);\n\n\t\t\t// Search through the events object and look for an event that happens on this day\n\t\t\tconst eventOnThisDay = this._events.find((event) => {\n\t\t\t\tif (event.eventDate) {\n\t\t\t\t\treturn dateUtility.isSameDay(event.eventDate, date);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst calendarLimitOptions = {\n\t\t\t\tendDateLimit: this._options.endDateLimit,\n\t\t\t\tstartDateLimit: this._options.startDateLimit\n\t\t\t};\n\n\t\t\tconst dayComponent = new CalendarDayComponent(date, this._todaysDate, this._mergeEventWithDefaults(eventOnThisDay), calendarLimitOptions);\n\t\t\tconst rowIndex = this._numberOfWeeks(day, firstWeekday) - 1;\n\n\t\t\tdayRowsElements[rowIndex].append(dayComponent.element);\n\n\t\t\treturn dayComponent;\n\t\t});\n\n\t\tconst lastWeekDays = dayRowsElements[dayRowsElements.length - 1].querySelectorAll('.iris-day');\n\n\t\t// generate calendar days spacer\n\t\tif (lastWeekDays.length < 7) {\n\t\t\tutility.range(7 - lastWeekDays.length).forEach((day) => {\n\t\t\t\tconst dayElement = document.createElement('div');\n\t\t\t\tdayElement.classList.add('iris-calendar__days-spacer');\n\t\t\t\tdayRowsElements[dayRowsElements.length - 1].appendChild(dayElement);\n\t\t\t});\n\t\t}\n\t\tthis.element.append(daysContainerElement);\n\t\tthis._dispatchEvent('iris.calendar.generate.end', { component: this });\n\t}\n\n\tprivate _generateDaysOfTheWeekNames() {\n\t\tconst fullDayNames: IFullDayNames = {\n\t\t\tsun: 'Sunday',\n\t\t\tmon: 'Monday',\n\t\t\ttue: 'Tuesday',\n\t\t\twed: 'Wednesday',\n\t\t\tthu: 'Thursday',\n\t\t\tfri: 'Friday',\n\t\t\tsat: 'Saturday'\n\t\t};\n\n\t\t// build NameOfTheWeekComponent\n\t\tconst namesOfTheWeek = document.createElement('div');\n\t\tnamesOfTheWeek.classList.add('iris-calendar__days-header');\n\t\tnamesOfTheWeek.setAttribute('role', 'row');\n\n\t\tdateUtility.findDayOfTheWeek().forEach(function(dayOfWeek) {\n\t\t\tconst weekday = document.createElement('span');\n\t\t\tweekday.classList.add('iris-calendar__day-name');\n\t\t\tweekday.setAttribute('role', 'columnheader');\n\t\t\tweekday.innerHTML = `${fullDayNames[dayOfWeek]}${dayOfWeek}`;\n\t\t\tnamesOfTheWeek.append(weekday);\n\t\t});\n\n\t\treturn namesOfTheWeek;\n\t}\n\n\n\t// Public getters and setters\n\t// =============================================================================\n\tget date(): { month: number, year: number } {\n\t\treturn { month: this._currentMonth, year: this._currentYear };\n\t}\n\n\tset date(dateObj: { month: number, year: number }) {\n\t\t// Remove the current days and title to be regenerated\n\t\tthis.element.querySelector('.iris-calendar__days').remove();\n\n\t\t// Set the updated month and year for the generation functions\n\t\tconst date = new Date(dateObj.year, dateObj.month);\n\t\tthis._currentMonth = date.getUTCMonth();\n\t\tthis._currentYear = date.getUTCFullYear();\n\n\t\t// Re-create the header and days of the updated month\n\t\tthis._updateMonthHeader();\n\t\tthis._generateMonthRowsAndDays();\n\t}\n\n\tset events(eventsToAddOrUpdate: ICalendarDayEvent[]) {\n\t\t// Iterate over the list of events to update\n\t\teventsToAddOrUpdate.forEach((newOrUpdatedEvent) => {\n\t\t\t// TODO: Try to normalize these dates by converting to a date object before comparing.\n\t\t\tconst eventOnTheSameDayIndex = this._events.findIndex((storedEvent) => storedEvent.eventDate === newOrUpdatedEvent.eventDate);\n\n\t\t\t// If there is already an event with the same date as one we are attempting to update, merge with the existing one\n\t\t\tif (eventOnTheSameDayIndex >= 0) {\n\t\t\t\tthis._events[eventOnTheSameDayIndex] = Object.assign({}, this._events[eventOnTheSameDayIndex], newOrUpdatedEvent);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._events.push(newOrUpdatedEvent);\n\t\t});\n\n\t\tconst eventsInCurrentMonth = eventsToAddOrUpdate.filter((event) => {\n\t\t\tconst convertedEventDate = dateUtility.convert(event.eventDate) as Date;\n\n\t\t\treturn convertedEventDate.getUTCMonth() === this._currentMonth;\n\t\t});\n\n\t\tif (eventsInCurrentMonth.length > 0) {\n\t\t\t// TODO: Instead of rebuilding the entire calendar, just set the event object inside the matching children.\n\t\t\tthis.element.querySelector('.iris-calendar__days').remove();\n\t\t\tthis._generateMonthRowsAndDays();\n\t\t}\n\t}\n\n\tget childrenComponents() {\n\t\treturn this._dayComponents;\n\t}\n\n\n\t// Private helper methods\n\t// =============================================================================\n\tprivate _daysInMonth(month: number, year: number) {\n\t\treturn new Date(year, month + 1, 0).getUTCDate();\n\t}\n\n\tprivate _nameOfMonth(month: number) {\n\t\treturn dateUtility.findMonthName(month);\n\t}\n\n\tprivate _firstDayOfMonth(month: number, year: number) {\n\t\treturn new Date(year, month, 1).getDay();\n\t}\n\n\tprivate _numberOfWeeks(firstWeekday: number, numberOfDays: number) {\n\t\treturn Math.ceil((numberOfDays + firstWeekday) / 7);\n\t}\n\n\tprivate _updateMonthHeader = () => {\n\t\tthis._calendarTitleElement.innerHTML = `${this._nameOfMonth(this._currentMonth)} ${this._currentYear}`;\n\n\t\tif (this._options.startDateLimit) {\n\t\t\tconst startDate = dateUtility.convert(this._options.startDateLimit) as Date;\n\n\t\t\tconst isCurrentYearEqualToStartDateYear = this._currentYear === startDate.getUTCFullYear();\n\t\t\tconst isCurrentMonthLessThanOrEqualToStartDate = this._currentMonth <= startDate.getUTCMonth();\n\t\t\tconst isCurrentYearLessThanStartDate = this._currentYear < startDate.getUTCFullYear();\n\n\t\t\tif (isCurrentYearEqualToStartDateYear && isCurrentMonthLessThanOrEqualToStartDate || isCurrentYearLessThanStartDate) {\n\t\t\t\tthis._prevMonthButtonElement.disabled = true;\n\t\t\t} else {\n\t\t\t\tthis._prevMonthButtonElement.disabled = false;\n\t\t\t}\n\t\t}\n\n\t\tif (this._options.endDateLimit) {\n\t\t\tconst endDate = dateUtility.convert(this._options.endDateLimit) as Date;\n\n\t\t\tconst isCurrentYearEqualToEndDateYear = this._currentYear === endDate.getUTCFullYear();\n\t\t\tconst isCurrentMonthGreaterThanOrEqualToEndDate = this._currentMonth >= endDate.getUTCMonth();\n\t\t\tconst isCurrentYearGreaterThanEndDate = this._currentYear > endDate.getUTCFullYear();\n\n\t\t\tif (isCurrentYearEqualToEndDateYear && isCurrentMonthGreaterThanOrEqualToEndDate || isCurrentYearGreaterThanEndDate) {\n\t\t\t\tthis._nextMonthButtonElement.disabled = true;\n\t\t\t} else {\n\t\t\t\tthis._nextMonthButtonElement.disabled = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _mergeEventWithDefaults = (eventObject: ICalendarDayEvent) => {\n\t\tconst optionDefaults: ICalendarDayEvent = {\n\t\t\teventDate: null,\n\t\t\tavatarIconClass: this._options.defaultAvatarIconClass,\n\t\t\teventLabel: null,\n\t\t};\n\n\t\treturn Object.assign({}, optionDefaults, eventObject);\n\t}\n\n\n\t// Event Handlers\n\t// =============================================================================\n\tprivate _previousMonthClickHandler = () => {\n\t\tif (this._currentMonth === 0) {\n\t\t\tthis._currentMonth = 11;\n\t\t\tthis._currentYear--;\n\t\t} else {\n\t\t\tthis._currentMonth--;\n\t\t}\n\n\t\tthis.date = { month: this._currentMonth, year: this._currentYear };\n\n\t\tdom.dispatchEvent(this.element, this._options.previousMonthClickEventName, {\n\t\t\tcomponent: this,\n\t\t\tcurrentMonth: this._currentMonth,\n\t\t\tcurrentYear: this._currentYear,\n\t\t});\n\t}\n\n\tprivate _nextMonthClickHandler = () => {\n\t\tif (this._currentMonth === 11) {\n\t\t\tthis._currentMonth = 0;\n\t\t\tthis._currentYear++;\n\t\t} else {\n\t\t\tthis._currentMonth++;\n\t\t}\n\n\t\tthis.date = { month: this._currentMonth, year: this._currentYear };\n\n\t\tdom.dispatchEvent(this.element, this._options.nextMonthClickEventName, {\n\t\t\tcomponent: this,\n\t\t\tcurrentMonth: this._currentMonth,\n\t\t\tcurrentYear: this._currentYear,\n\t\t});\n\t}\n\n\tprivate _calendarChildSelectedHandler = (event: CustomEvent) => {\n\t\tthis._dayComponents.forEach((day) => {\n\t\t\tif (event.detail.component !== day && day.selected === true) {\n\t\t\t\tday.selected = false;\n\t\t\t}\n\t\t});\n\n\t\tdom.dispatchEvent(this.element, this._options.selectedEventDayName, {\n\t\t\tcomponent: this,\n\t\t\tselectedDay: event.detail.component,\n\t\t\tevent: event.detail.event\n\t\t});\n\t}\n\n\tprivate _calendarKeyboardNavigate = (event: CustomEvent) => {\n\t\tconst currentIndex = this._dayComponents.findIndex((x) => x.element === event.detail.component.element);\n\t\tconst direction = event.detail.direction;\n\t\tconst navigateAmount: INavigationAmount = {\n\t\t\tleft: currentIndex - 1,\n\t\t\tright: currentIndex + 1,\n\t\t\tup: currentIndex - 7,\n\t\t\tdown: currentIndex + 7\n\t\t};\n\t\tconst targetDayComponent = this._dayComponents[navigateAmount[direction]];\n\n\t\tif (targetDayComponent) {\n\t\t\ttargetDayComponent.element.querySelector('button').focus();\n\t\t}\n\t}\n\n\tprivate _addEventListeners() {\n\t\tthis._prevMonthButtonElement.addEventListener('click', this._previousMonthClickHandler);\n\t\tthis._nextMonthButtonElement.addEventListener('click', this._nextMonthClickHandler);\n\t\tthis.element.addEventListener('_calendarDaySelected', this._calendarChildSelectedHandler);\n\t\tthis.element.addEventListener('_calendarKeyboardNavigate', this._calendarKeyboardNavigate);\n\t}\n\n\n\t// Factory Functions\n\t// =============================================================================\n\tprivate static _factoryOptions: IComponentFactoryOptions = {\n\t\tdefaultQuerySelector: '.iris-calendar',\n\t\tcomponentName: 'CalendarComponent'\n\t};\n\n\tprivate static _defaultComponentOptions: ICalendarOptions = {\n\t\tstartDateLimit: null,\n\t\tendDateLimit: null,\n\t\tcalendarEvents: [],\n\t\tdefaultAvatarIconClass: null,\n\t\tselectedEventDayName: 'iris.calendar.day.selected',\n\t\tpreviousMonthClickEventName: 'iris.calendar.previous.month',\n\t\tnextMonthClickEventName: 'iris.calendar.next.month',\n\t};\n\n\tpublic static factory = new GenericComponentFactory(CalendarComponent, CalendarComponent._factoryOptions, CalendarComponent._defaultComponentOptions);\n}\n","import * as dom from './dom';\nimport { IrisLogger, IrisLoggerLevel, logger } from './logger';\nimport { generateUniqueId, toArray } from './utility';\nexport abstract class Component {\n\tpublic irisId: string;\n\tprivate __element: HTMLElement;\n\tprivate __options: IComponentOptions;\n\tprivate __messageObject: IrisLogger;\n\n\tconstructor(element: HTMLElement, options?: IComponentOptions) {\n\t\tthis.__element = element;\n\t\tthis.__options = options;\n\t\tthis.__messageObject = {\n\t\t\tcomponent: options.instanceName || this.getOptions().componentName,\n\t\t\tmessage: '',\n\t\t\ttype: 'trace'\n\t\t};\n\n\t\tif (!this.__element.id) {\n\t\t\tthis.__element.id = generateUniqueId(options.idPrefix || 'iris_component');\n\t\t}\n\t}\n\n\tpublic abstract destroy(): void;\n\n\tpublic get element() {\n\t\treturn this.__element;\n\t}\n\n\tpublic getOptions() { return this.__options; }\n\n\tprotected _dispatchEvent(eventName: string, detail: any = this.__element, element: HTMLElement = this.__element, messageObject: IrisLogger = this.__messageObject, bubbles: boolean = true, cancelable: boolean = true) {\n\t\tdom.dispatchEvent(element, eventName, detail, bubbles, cancelable);\n\n\t\tthis._log(`Dispatching event ${eventName} ${element.id ? '#' + element.id : ''}`);\n\t}\n\n\tprotected _log(message: string, type: IrisLoggerLevel = 'trace', tip?: string): void {\n\t\tlogger(Object.assign({}, this.__messageObject, { message, tip, type }));\n\t}\n}\n\nexport interface IComponentOptions {\n\tidPrefix?: string;\n\tinstanceName?: string;\n\tcomponentName?: string;\n}\n","import * as utility from './utility';\n\nexport function ancestorsOfElement(element: Element, query?: string): Element[] {\n\tconst results = [];\n\tlet el = element;\n\n\tdo {\n\t\tif (!query || el.matches(query)) {\n\t\t\tresults.push(el);\n\t\t}\n\n\t\tel = el.parentElement;\n\t} while (el);\n\n\treturn results;\n}\n\nexport function classListContainsAll(element: HTMLElement, classNameOrArray: string | string[]) {\n\tconst classNames: string[] = utility.toArray(classNameOrArray);\n\tconst filteredClasses = classNames.filter((className) => element.classList.contains(className));\n\n\treturn filteredClasses.length === classNames.length;\n}\n\nexport function classListContainsAny(element: HTMLElement, classNameOrArray: string | string[]) {\n\tconst classNames: string[] = utility.toArray(classNameOrArray);\n\tconst filteredClasses = classNames.filter((className) => element.classList.contains(className));\n\n\treturn filteredClasses.length > 0;\n}\n\nexport function createElementsFromHTML(htmlString: string): HTMLCollection {\n\tconst div = document.createElement('DIV');\n\tdiv.innerHTML = htmlString.trim();\n\n\treturn div.children;\n}\n\n// Returns an HTMLElement that is nearby the specified element described by the query string.\n// The function is trying to be helpful and determine your\n// intention as a user. If you use an ID we want to try from the document\n// scope because we assume you know exactly what you want, otherwise check\n// around the element to see if there is something close by.\n// this differs from Element.closest in that it's a limited scope search and won't\n// continue branching out to find an element.\n\nexport function relatedElementByQuery(element: HTMLElement, query: string): HTMLElement {\n\tif (!query) {\n\t\treturn null;\n\t}\n\n\t// if query is an ID we assume it's directly related and search the document for it.\n\tif (query.indexOf('#') === 0) {\n\t\treturn document.querySelector(query) as HTMLElement;\n\t}\n\n\t// if the next sibiling matches then it is the closest descendant.\n\tif (element.nextElementSibling && element.nextElementSibling.matches(query)) {\n\t\treturn element.nextElementSibling as HTMLElement;\n\t}\n\tif (element.previousElementSibling && element.previousElementSibling.matches(query)) {\n\t\treturn element.previousElementSibling as HTMLElement;\n\t}\n\n\t// if the closest siblings to the element don't match then lets check all of it's siblings!\n\treturn siblingsOfElement(element, query)[0] as HTMLElement || null;\n}\n\nexport function ready(callback: () => void): void {\n\tconst contentLoadedHandler = () => {\n\t\tdocument.removeEventListener('DOMContentLoaded', contentLoadedHandler);\n\t\tcallback();\n\t};\n\n\tif (document.readyState === 'complete' ||\n\t\t(document.readyState !== 'loading' &&\n\t\t\t!(document.documentElement as any).doScroll)) {\n\t\tcallback();\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', contentLoadedHandler);\n\t}\n}\n\nexport function scrollIntoViewIfNeeded(element: HTMLElement, centerIfNeeded: boolean = true) {\n\tfunction withinBounds(value: number, min: number, max: number, extent: number) {\n\t\tif (false === centerIfNeeded || max <= value + extent && value <= min + extent) {\n\t\t\treturn Math.min(max, Math.max(min, value));\n\t\t} else {\n\t\t\treturn (min + max) / 2;\n\t\t}\n\t}\n\n\tfunction makeArea(left: number, top: number, width: number, height: number) {\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tright: left + width,\n\t\t\tbottom: top + height,\n\t\t\ttranslate(x: number, y: number) {\n\t\t\t\treturn makeArea(x + left, y + top, width, height);\n\t\t\t},\n\t\t\trelativeFromTo(lhsElement: HTMLElement, rhsElement: HTMLElement) {\n\t\t\t\tlet newLeft = left;\n\t\t\t\tlet newTop = top;\n\t\t\t\tlet lhs = lhsElement.offsetParent as HTMLElement;\n\t\t\t\tlet rhs = rhsElement.offsetParent as HTMLElement;\n\t\t\t\tif (lhs === rhs) {\n\t\t\t\t\treturn area;\n\t\t\t\t}\n\t\t\t\tfor (; lhs; lhs = lhs.offsetParent as HTMLElement) {\n\t\t\t\t\tnewLeft += lhs.offsetLeft + lhs.clientLeft;\n\t\t\t\t\tnewTop += lhs.offsetTop + lhs.clientTop;\n\t\t\t\t}\n\t\t\t\tfor (; rhs; rhs = rhs.offsetParent as HTMLElement) {\n\t\t\t\t\tnewLeft -= rhs.offsetLeft + rhs.clientLeft;\n\t\t\t\t\tnewTop -= rhs.offsetTop + rhs.clientTop;\n\t\t\t\t}\n\t\t\t\treturn makeArea(newLeft, newTop, width, height);\n\t\t\t},\n\t\t};\n\t}\n\n\tlet parent = element.parentNode;\n\tlet area = makeArea(\n\t\telement.offsetLeft, element.offsetTop,\n\t\telement.offsetWidth, element.offsetHeight);\n\n\twhile (parent instanceof HTMLElement) {\n\t\tconst clientLeft = parent.offsetLeft + parent.clientLeft;\n\t\tconst clientTop = parent.offsetTop + parent.clientTop;\n\n\t\t// Make area relative to parent's client area.\n\t\tarea = area.\n\t\t\trelativeFromTo(element, parent).\n\t\t\ttranslate(-clientLeft, -clientTop);\n\n\t\tparent.scrollLeft = withinBounds(\n\t\t\tparent.scrollLeft,\n\t\t\tarea.right - parent.clientWidth, area.left,\n\t\t\tparent.clientWidth);\n\n\t\tparent.scrollTop = withinBounds(\n\t\t\tparent.scrollTop,\n\t\t\tarea.bottom - parent.clientHeight, area.top,\n\t\t\tparent.clientHeight);\n\n\t\t// Determine actual scroll amount by reading back scroll properties.\n\t\tarea = area.translate(clientLeft - parent.scrollLeft,\n\t\t\tclientTop - parent.scrollTop);\n\t\telement = parent;\n\t\tparent = element.parentNode;\n\t}\n}\n\nexport function siblingsOfElement(element: Element, query?: string): Element[] {\n\tconst results = [];\n\n\tif (element.parentElement) {\n\t\tlet el = element.parentElement.firstElementChild;\n\n\t\tdo {\n\t\t\tif (!query || el.matches(query)) {\n\t\t\t\tresults.push(el);\n\t\t\t}\n\n\t\t\tel = el.nextElementSibling;\n\t\t} while (el);\n\t}\n\n\treturn results;\n}\n\nexport function getViewPortBoundingRect(): ClientRect {\n\tconst x = window.screenX || 0;\n\tconst y = window.screenY || 0;\n\tconst width = window.innerWidth;\n\tconst height = window.innerHeight;\n\tconst top = y;\n\tconst left = x;\n\tconst bottom = y + height;\n\tconst right = x + width;\n\n\treturn { x, y, width, height, top, left, bottom, right } as ClientRect;\n}\n\nexport function hasScrollbar(element: HTMLElement = document.documentElement, type: 'vertical' | 'horizontal' | 'both' | 'either' = 'vertical') {\n\n\tif (type === 'vertical') {\n\t\treturn element.scrollHeight > element.clientHeight;\n\t}\n\n\tif (type === 'horizontal') {\n\t\treturn element.scrollWidth > element.clientWidth;\n\t}\n\n\tif (type === 'both') {\n\t\treturn element.scrollHeight > element.clientHeight && element.scrollWidth > element.clientWidth;\n\t}\n\n\treturn element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n}\n\nexport function getScrollbarWidth() {\n\tconst outer = document.createElement('div');\n\touter.style.visibility = 'hidden';\n\touter.style.width = '100px';\n\tdocument.body.appendChild(outer);\n\n\tconst widthNoScroll = outer.offsetWidth;\n\n\touter.style.overflow = 'scroll';\n\tconst inner = document.createElement('div');\n\tinner.style.width = '100%';\n\touter.appendChild(inner);\n\n\tconst widthWithScroll = inner.offsetWidth;\n\n\touter.parentNode.removeChild(outer);\n\n\treturn widthNoScroll - widthWithScroll;\n}\n\nexport function setElementAttributes(element: HTMLElement, map: { [key: string]: string }): void {\n\tObject.keys(map).forEach((key) => {\n\t\telement.setAttribute(key, map[key]);\n\t});\n}\n\nexport function dispatchEvent(element: HTMLElement, eventName: string, detail: any = {}, bubbles: boolean = true, cancelable: boolean = true): void {\n\tconst event = new CustomEvent(eventName, { bubbles, cancelable, detail });\n\telement.dispatchEvent(event);\n}\n\nexport function handleOnce(element: HTMLElement, eventName: string, eventListener: EventListener) {\n\tconst handler = function(event: Event) {\n\t\telement.removeEventListener(eventName, handler);\n\t\treturn eventListener.bind(this)(event);\n\t};\n\n\telement.addEventListener(eventName, handler);\n}\n\n// In IE11 when you set innerHTML = '' on a parent element it also clears out the innerHTML on all child nodes.\n// This method prevents that by removing each child node that is under the parent indivdually\n// https://stackoverflow.com/questions/25167593/why-does-ie-discard-the-innerhtml-children-of-a-dom-element-after-dom-changes\nexport function removeChildNodes(parentElement: HTMLElement): void {\n\tutility.toArray(parentElement.childNodes).forEach((childElement) => childElement.remove());\n}\n\n\n// checks to see if an element takes space.\n// https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js\nexport function isVisible(element: HTMLElement): boolean {\n\treturn !!( element.offsetWidth || element.offsetHeight || element.getClientRects().length );\n}\n","import { CalendarComponent } from './components/calendar';\nimport { RegionSettings } from './regional';\n\nexport class FormattedDate {\n\tpublic date: Date;\n\n\tconstructor(date: Date) {\n\t\tthis.date = date;\n\t}\n\n\tget dayOfMonth(): string {\n\t\treturn this.date.getDate().toString(10).padStart(2, '0');\n\t}\n\n\tget abbreviatedDay(): string {\n\t\treturn daysOfTheWeek[this.date.getDay()];\n\t}\n\n\tget abbreviatedMonth(): string {\n\t\treturn findAbbrMonthName()[this.date.getMonth()];\n\t}\n\n\tget year(): string {\n\t\treturn this.date.getFullYear().toString(10);\n\t}\n\n\tget fullDate(): string {\n\t\treturn `${monthNames[this.date.getMonth()]} ${this.dayOfMonth}, ${this.year}`;\n\t}\n}\n\n\n// Date Compare functions\n// =============================================================================\nexport function isSameDay(d1: Date | string, d2: Date | string): boolean {\n\tconst firstDate = typeof d1 === 'string' ? new Date(d1) : d1;\n\tconst secondDate = typeof d2 === 'string' ? new Date(d2) : d2;\n\n\treturn firstDate.getUTCFullYear() === secondDate.getUTCFullYear() &&\n\t\tfirstDate.getUTCMonth() === secondDate.getUTCMonth() &&\n\t\tfirstDate.getUTCDate() === secondDate.getUTCDate();\n}\n\nexport function convert(inputDate: any) {\n\t// Converts the date in d to a date-object. The input can be:\n\t// a date object: returned without modification\n\t// an array : Interpreted as [year,month,day]. NOTE: month is 0-11.\n\t// a number : Interpreted as number of milliseconds since 1 Jan 1970 (a timestamp)\n\t// a string : Any format supported by the javascript engine, like \"YYYY/MM/DD\", \"MM/DD/YYYY\", \"Jan 31 2009\" etc.\n\t// an object : Interpreted as an object with year, month and date attributes. **NOTE** month is 0-11.\n\tif (inputDate.constructor === Date) {\n\t\treturn inputDate as Date;\n\t} else if (inputDate.constructor === Array) {\n\t\treturn new Date(inputDate[0], inputDate[1], inputDate[2]);\n\t} else if (inputDate.constructor === Number) {\n\t\treturn new Date(inputDate);\n\t} else if (inputDate.constructor === String) {\n\t\treturn new Date(inputDate as string);\n\t} else if (typeof inputDate === 'object') {\n\t\treturn new Date(inputDate.year, inputDate.month, inputDate.date);\n\t} else {\n\t\treturn NaN;\n\t}\n}\n\nexport function compare(a: any, b: any) {\n\t// Compare two dates (could be of any type supported by the convert\n\t// function above) and returns:\n\t// -1 : if a < b\n\t// 0 : if a = b\n\t// 1 : if a > b\n\t// NaN : if a or b is an illegal date\n\tconst firstDate: number = convert(a).valueOf();\n\tconst secondDate: number = convert(b).valueOf();\n\n\tif (isFinite(firstDate) && isFinite(secondDate)) {\n\t\t// Number(boolean > boolean) coerces a boolean into a number\n\t\t// true = 1, false = 0\n\t\treturn (Number(firstDate > secondDate)) - (Number(firstDate < secondDate));\n\t}\n\n\treturn NaN;\n}\n\nexport function inRange(d: any, start: any, end: any) {\n\t// Checks if date in d is between dates in start and end.\n\t// Returns a boolean or NaN:\n\t// true : if d is between start and end (inclusive)\n\t// false : if d is before start or after end\n\t// NaN : if one or more of the dates is illegal.\n\tconst dateToCompare = convert(d).valueOf();\n\tconst startDate = convert(start).valueOf();\n\tconst endDate = convert(end).valueOf();\n\n\tif (isFinite(dateToCompare) && isFinite(startDate) && isFinite(endDate)) {\n\t\treturn (start <= d && d <= end);\n\t}\n\n\treturn NaN;\n}\n\n\n// Day, month, and year label arrays\n// =============================================================================\n\n// functions are in use for compatibility with regional language changes\n\nexport function findDayOfTheWeek() {\n\treturn [\n\t\tRegionSettings.format('calendar.dayofweekabbr.sunday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.monday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.tuesday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.wednesday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.thursday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.friday'),\n\t\tRegionSettings.format('calendar.dayofweekabbr.saturday')\n\t];\n};\n\nexport function findMonthName(month: number) {\n\tconst monthArr = [\n\t\tRegionSettings.format('calendar.month.january'),\n\t\tRegionSettings.format('calendar.month.february'),\n\t\tRegionSettings.format('calendar.month.march'),\n\t\tRegionSettings.format('calendar.month.april'),\n\t\tRegionSettings.format('calendar.month.may'),\n\t\tRegionSettings.format('calendar.month.june'),\n\t\tRegionSettings.format('calendar.month.july'),\n\t\tRegionSettings.format('calendar.month.august'),\n\t\tRegionSettings.format('calendar.month.september'),\n\t\tRegionSettings.format('calendar.month.october'),\n\t\tRegionSettings.format('calendar.month.november'),\n\t\tRegionSettings.format('calendar.month.december')\n\t];\n\n\treturn monthArr[month];\n};\n\nexport function findAbbrMonthName() {\n\treturn [\n\t\tRegionSettings.format('calendar.monthabbr.january'),\n\t\tRegionSettings.format('calendar.monthabbr.february'),\n\t\tRegionSettings.format('calendar.monthabbr.march'),\n\t\tRegionSettings.format('calendar.monthabbr.april'),\n\t\tRegionSettings.format('calendar.monthabbr.may'),\n\t\tRegionSettings.format('calendar.monthabbr.june'),\n\t\tRegionSettings.format('calendar.monthabbr.july'),\n\t\tRegionSettings.format('calendar.monthabbr.august'),\n\t\tRegionSettings.format('calendar.monthabbr.september'),\n\t\tRegionSettings.format('calendar.monthabbr.october'),\n\t\tRegionSettings.format('calendar.monthabbr.november'),\n\t\tRegionSettings.format('calendar.monthabbr.december')\n\t];\n};\n\n// consts are not currently in use by calandar.ts and exist to support legacy code\n\nexport const daysOfTheWeek = [\n\tRegionSettings.format('calendar.dayofweekabbr.sunday'),\n\tRegionSettings.format('calendar.dayofweekabbr.monday'),\n\tRegionSettings.format('calendar.dayofweekabbr.tuesday'),\n\tRegionSettings.format('calendar.dayofweekabbr.wednesday'),\n\tRegionSettings.format('calendar.dayofweekabbr.thursday'),\n\tRegionSettings.format('calendar.dayofweekabbr.friday'),\n\tRegionSettings.format('calendar.dayofweekabbr.saturday')\n];\n\nexport const monthNames = [\n\tRegionSettings.format('calendar.month.january'),\n\tRegionSettings.format('calendar.month.february'),\n\tRegionSettings.format('calendar.month.march'),\n\tRegionSettings.format('calendar.month.april'),\n\tRegionSettings.format('calendar.month.may'),\n\tRegionSettings.format('calendar.month.june'),\n\tRegionSettings.format('calendar.month.july'),\n\tRegionSettings.format('calendar.month.august'),\n\tRegionSettings.format('calendar.month.september'),\n\tRegionSettings.format('calendar.month.october'),\n\tRegionSettings.format('calendar.month.november'),\n\tRegionSettings.format('calendar.month.december')\n];\n\nexport const abbreviatedMonthNames = [\n\tRegionSettings.format('calendar.monthabbr.january'),\n\tRegionSettings.format('calendar.monthabbr.february'),\n\tRegionSettings.format('calendar.monthabbr.march'),\n\tRegionSettings.format('calendar.monthabbr.april'),\n\tRegionSettings.format('calendar.monthabbr.may'),\n\tRegionSettings.format('calendar.monthabbr.june'),\n\tRegionSettings.format('calendar.monthabbr.july'),\n\tRegionSettings.format('calendar.monthabbr.august'),\n\tRegionSettings.format('calendar.monthabbr.september'),\n\tRegionSettings.format('calendar.monthabbr.october'),\n\tRegionSettings.format('calendar.monthabbr.november'),\n\tRegionSettings.format('calendar.monthabbr.december')\n];\n","import * as utility from './utility';\n\nexport interface IRegions { [region: string]: RegionSettings; }\nexport type RegionLike = {[S in keyof RegionSettings]?: RegionSettings[S]}; // validate some JSON that is Region Like\n\nexport class RegionSettings {\n\tpublic 'dropdown.sr.focused': string = '{0}, {1} Combo box.';\n\tpublic 'dropdown.sr.selected': string = '{0} selected.';\n\tpublic 'dropdown.sr.unselected': string = '{0} unselected.';\n\tpublic 'dropdown.sr.active': string = '{0}, active.';\n\tpublic 'dropdown.sr.disabled': string = '{0}, active, disabled.';\n\tpublic 'dropdown.multiselect.selected': string = '{0} items selected';\n\n\tpublic 'calendar.dayofweekabbr.sunday': string = 'sun';\n\tpublic 'calendar.dayofweekabbr.monday': string = 'mon';\n\tpublic 'calendar.dayofweekabbr.tuesday': string = 'tue';\n\tpublic 'calendar.dayofweekabbr.wednesday': string = 'wed';\n\tpublic 'calendar.dayofweekabbr.thursday': string = 'thu';\n\tpublic 'calendar.dayofweekabbr.friday': string = 'fri';\n\tpublic 'calendar.dayofweekabbr.saturday': string = 'sat';\n\n\tpublic 'calendar.month.january': string = 'January';\n\tpublic 'calendar.month.february': string = 'February';\n\tpublic 'calendar.month.march': string = 'March';\n\tpublic 'calendar.month.april': string = 'April';\n\tpublic 'calendar.month.may': string = 'May';\n\tpublic 'calendar.month.june': string = 'June';\n\tpublic 'calendar.month.july': string = 'July';\n\tpublic 'calendar.month.august': string = 'August';\n\tpublic 'calendar.month.september': string = 'September';\n\tpublic 'calendar.month.october': string = 'October';\n\tpublic 'calendar.month.november': string = 'November';\n\tpublic 'calendar.month.december': string = 'December';\n\n\tpublic 'calendar.monthabbr.january': string = 'Jan';\n\tpublic 'calendar.monthabbr.february': string = 'Feb';\n\tpublic 'calendar.monthabbr.march': string = 'Mar';\n\tpublic 'calendar.monthabbr.april': string = 'Apr';\n\tpublic 'calendar.monthabbr.may': string = 'May';\n\tpublic 'calendar.monthabbr.june': string = 'Jun';\n\tpublic 'calendar.monthabbr.july': string = 'Jul';\n\tpublic 'calendar.monthabbr.august': string = 'Aug';\n\tpublic 'calendar.monthabbr.september': string = 'Sep';\n\tpublic 'calendar.monthabbr.october': string = 'Oct';\n\tpublic 'calendar.monthabbr.november': string = 'Nov';\n\tpublic 'calendar.monthabbr.december': string = 'Dec';\n\n\tpublic 'contentheader.item.ascendinglabel' = '{0} (ascending)';\n\tpublic 'contentheader.item.descendinglabel' = '{0} (descending)';\n\tpublic 'contentheader.item.neutrallabel' = '{0}';\n\tpublic 'contentheader.item.ascendingdirections' = 'Activate button to sort by {0} ascending.';\n\tpublic 'contentheader.item.descendingdirections' = 'Activate button to sort by {0} descending.';\n\n\tpublic 'list.sr.active': string = '{0}, active.';\n\tpublic 'list.sr.disabled': string = '{0}, active, disabled.';\n\tpublic 'list.sr.selected': string = '{0} selected.';\n\tpublic 'list.sr.unselected': string = '{0} unselected.';\n\n\tpublic 'tab.sr.selected': string = '{0} selected.';\n\n\tconstructor(settings = {} as RegionLike) {\n\t\tthis.apply(settings);\n\t}\n\n\tpublic apply(settings: RegionLike) {\n\t\tObject.keys(this).forEach((key) => {\n\t\t\tconst setting = (settings as any)[key];\n\n\t\t\tif (typeof setting !== 'undefined') {\n\t\t\t\t(this as any)[key] = setting;\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tpublic format(key: keyof RegionSettings, ...args: string[]) {\n\t\treturn utility.format((this as any)[key], ...args);\n\t}\n\n\tpublic static regions: IRegions = {\n\t\ten: new RegionSettings(),\n\t};\n\n\t// TODO: Attempt to know what language the user is using and pick it by default if it exists in the regions.\n\tpublic static defaultRegionId = 'en';\n\n\tpublic static get defaultRegion(): RegionSettings {\n\t\treturn RegionSettings.regions[RegionSettings.defaultRegionId];\n\t}\n\n\t// Trying to make Regional strings as easy as possible\n\t// These functions mimic the Object's but point to the default region.\n\n\tpublic static format(key: keyof RegionSettings, ...args: string[]) {\n\t\treturn RegionSettings.defaultRegion.format(key, ...args);\n\t}\n\n\tpublic static apply(settings: RegionLike) {\n\t\treturn RegionSettings.defaultRegion.apply(settings);\n\t}\n}\n","import * as dateUtility from '../date-util';\nimport * as dom from '../dom';\nimport { createKeypressEventListener, IKeyPressHandlers } from '../keypress-handler';\nimport * as utility from '../utility';\n\nexport interface ICalendarDayEvent {\n\teventDate: Date | string;\n\teventLabel: string | null;\n\tavatarIconClass?: string;\n\tavatarIconQuantity?: number;\n\tcustomData?: any;\n}\n\ninterface IParentCalendarOptions {\n\tendDateLimit: Date | string | null;\n\tstartDateLimit: Date | string | null;\n}\n\nexport class CalendarDayComponent {\n\tpublic element: HTMLDivElement;\n\n\tprivate _date: Date;\n\tprivate _dayButtonElement: HTMLButtonElement;\n\tprivate _dayButtonWrapperElement: HTMLDivElement;\n\tprivate _today: Date;\n\tprivate _event: ICalendarDayEvent;\n\tprivate _startDateLimit: Date | string | null;\n\tprivate _endDateLimit: Date | string | null;\n\tprivate _rippleElement: HTMLElement;\n\tprivate _selected: boolean;\n\n\tconstructor(date: Date, today: Date = new Date(), event: ICalendarDayEvent, calendarOptions: IParentCalendarOptions) {\n\t\t// Setting private variables\n\t\tthis._date = date;\n\t\tthis._endDateLimit = calendarOptions.endDateLimit;\n\t\tthis._event = event;\n\t\tthis._selected = false;\n\t\tthis._startDateLimit = calendarOptions.startDateLimit;\n\t\tthis._today = today;\n\n\t\t// Create starting element\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.classList.add('iris-day');\n\t\tthis.element.setAttribute('role', 'gridcell');\n\n\t\t// Create the inner elements of the day and append them to the main element.\n\t\tthis._generateAndPopulateDayElement();\n\t\tthis.element.append(this._dayButtonElement);\n\n\t\t// Add event listeners\n\t\tthis._addEventListeners();\n\t}\n\n\tpublic destroy() {\n\t\tthis._removeEventListeners();\n\t}\n\n\n\t// Element creator methods\n\t// =============================================================================\n\tprivate _generateAndPopulateDayElement() {\n\t\t// Generate the wrapper element\n\t\t// NOTE: This is needed because of a FireFox bug and how it handles flexbox inside of a button element\n\t\t// TODO: Remove when this bug is fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=1397768\n\t\tthis._dayButtonElement = document.createElement('button');\n\t\tthis._dayButtonElement.classList.add('iris-day__button');\n\t\tthis._dayButtonElement.setAttribute('aria-label', '');\n\n\t\tthis._dayButtonWrapperElement = document.createElement('div');\n\t\tthis._dayButtonWrapperElement.classList.add('iris-day__button-wrapper');\n\n\t\tthis._dayButtonElement.append(this._dayButtonWrapperElement);\n\n\t\t// Generate inner elements\n\t\tthis._generateNumberElement();\n\t\tthis._generateButtonAriaLabel();\n\n\t\tif (this._event.eventLabel) {\n\t\t\tthis._generateLabelElement(this._event);\n\t\t}\n\n\t\tif (this._event.avatarIconQuantity && this._event.avatarIconQuantity > 0) {\n\t\t\tthis._generateIcons(this._event);\n\t\t}\n\n\t\tthis._setCurrentOrPastDay();\n\t\tthis._addAccessibilityAttributes();\n\t}\n\n\tprivate _generateNumberElement() {\n\t\tconst numberElement = document.createElement('span');\n\t\tnumberElement.classList.add('iris-day__number');\n\t\tnumberElement.setAttribute('aria-hidden', 'true');\n\t\tnumberElement.innerText = this._date.getUTCDate().toString();\n\n\t\tthis._dayButtonWrapperElement.append(numberElement);\n\t}\n\n\tprivate _generateButtonAriaLabel() {\n\t\tconst ariaLabel = this._dayButtonElement.getAttribute('aria-label');\n\t\tconst descriptionText = `${dateUtility.findMonthName(this._date.getUTCMonth())} ${utility.getOrdinal(this._date.getUTCDate())}, ${this._date.getUTCFullYear()}`;\n\n\t\tthis._dayButtonElement.setAttribute('aria-label', ariaLabel.concat(descriptionText));\n\t}\n\n\tprivate _generateLabelElement(event: ICalendarDayEvent) {\n\t\t// Creating event day label element\n\t\tconst eventDayLabelElement = document.createElement('span');\n\t\tconst ariaLabel = this._dayButtonElement.getAttribute('aria-label');\n\n\t\teventDayLabelElement.innerText = this._event.eventLabel;\n\t\teventDayLabelElement.classList.add('iris-day__label', 'font-style--italic');\n\n\t\tthis._dayButtonWrapperElement.append(eventDayLabelElement);\n\t\tthis._dayButtonElement.setAttribute('aria-label', ariaLabel.concat(`, ${this._event.eventLabel}`));\n\n\t\tif (event.avatarIconQuantity && event.avatarIconQuantity) {\n\t\t\teventDayLabelElement.classList.add('truncate');\n\t\t}\n\t}\n\n\tprivate _generateIcons(event: ICalendarDayEvent) {\n\t\t// Creating the main avatar wrapper\n\t\tconst avatarMainElement = document.createElement('div');\n\t\tconst ariaLabel = this._dayButtonElement.getAttribute('aria-label');\n\t\tlet ariaLabelText = '';\n\n\t\tavatarMainElement.classList.add('iris-avatar', 'iris-day__icon', 'iris-day__avatar');\n\t\tavatarMainElement.setAttribute('data-size', 'xsmall');\n\n\t\t// Creating avatar icon\n\t\tconst avatarIconElement = document.createElement('span');\n\t\tavatarIconElement.classList.add('iris-avatar__icon', this._event.avatarIconClass);\n\n\t\t// Creating the inner avatar wrapper\n\t\tconst innerContainerElement = document.createElement('span');\n\t\tinnerContainerElement.classList.add('iris-avatar__inner');\n\t\tinnerContainerElement.appendChild(avatarIconElement);\n\n\t\tariaLabelText = ', one event';\n\n\t\tif (event.avatarIconQuantity === 2) {\n\t\t\tavatarMainElement.setAttribute('data-stack', '2');\n\t\t\tariaLabelText = ', two events';\n\t\t} else if (event.avatarIconQuantity >= 3) {\n\t\t\tavatarMainElement.setAttribute('data-stack', '3');\n\t\t\tariaLabelText = ', three or more events';\n\t\t}\n\n\t\tthis._dayButtonElement.setAttribute('aria-label', ariaLabel.concat(ariaLabelText));\n\n\t\t// Append the created elements\n\t\tavatarMainElement.appendChild(innerContainerElement);\n\t\tthis._dayButtonWrapperElement.append(avatarMainElement);\n\t}\n\n\tprivate _setCurrentOrPastDay() {\n\t\t// If this day is today, set a class of iris-day--today\n\t\tconst isToday = dateUtility.isSameDay(this._date, this._today);\n\t\tthis.element.classList.toggle('iris-day--today', isToday);\n\n\t\t// If this day is in the past, set a class of iris-day--past\n\t\tconst beforeToday = !isToday && this._date < this._today;\n\t\tthis.element.classList.toggle('iris-day--past', beforeToday);\n\n\t\t// If this day is before the valid start date, set an attribute of disabled\n\t\t// -1 as a return from the compare function indicates the date is before the start date limit\n\t\tif (this._startDateLimit && dateUtility.compare(this._date, this._startDateLimit) === -1) {\n\t\t\tthis.element.classList.add('disabled-day');\n\t\t\tthis._dayButtonElement.disabled = true;\n\t\t}\n\n\t\t// If this day is after the valid end date, set an attribute of disabled\n\t\t// 1 as a return from the compare function indicates the date is after the end date limit\n\t\tif (this._endDateLimit && dateUtility.compare(this._date, this._endDateLimit) === 1) {\n\t\t\tthis.element.classList.add('disabled-day');\n\t\t\tthis._dayButtonElement.disabled = true;\n\t\t}\n\t}\n\n\tprivate _addAccessibilityAttributes() {\n\t\tthis.element.setAttribute('data-day-of-week', this._date.getDay().toString());\n\t\tthis.element.setAttribute('aria-colindex', (this._date.getDay() + 1).toString());\n\t\tthis.element.setAttribute('data-calendar-date', this._date.toISOString().split('T', 1)[0]);\n\t}\n\n\tprivate _rippleAnimation(clientX: number, clientY: number) {\n\t\tif (!this._rippleElement && !this.element.classList.contains('disabled-day')) {\n\t\t\tthis._rippleElement = document.createElement('div');\n\t\t\tthis._rippleElement.classList.add('ripple');\n\t\t\tthis.element.append(this._rippleElement);\n\n\t\t\tconst clientWidthAndHeight = Math.max(this.element.clientWidth, this.element.clientHeight);\n\t\t\tconst calendarDayRect = this.element.getBoundingClientRect();\n\n\t\t\tclientX = clientX ? clientX : calendarDayRect.left + Math.floor(Math.random() * Math.floor(clientWidthAndHeight));\n\t\t\tclientY = clientY ? clientY : calendarDayRect.top + Math.floor(Math.random() * Math.floor(clientWidthAndHeight));\n\n\t\t\t// if calendar day have an icon the ripple animation must come from the avatar icon\n\t\t\tif (this._event.avatarIconQuantity && this._event.avatarIconQuantity > 0) {\n\t\t\t\tconst avatarContainer = this.element.querySelector('.iris-day__icon') as HTMLElement;\n\t\t\t\tconst avatarInner = avatarContainer.querySelector('.iris-avatar__inner') as HTMLElement;\n\t\t\t\tconst avatarInnerRect = avatarInner.getBoundingClientRect();\n\n\t\t\t\tthis._rippleElement.style.animation = 'none';\n\t\t\t\tthis._rippleElement.style.width = `${avatarInnerRect.width}px`;\n\t\t\t\tthis._rippleElement.style.height = `${avatarInnerRect.height}px`;\n\t\t\t\tthis._rippleElement.style.top = `${avatarContainer.offsetTop}px`;\n\t\t\t\tthis._rippleElement.style.left = `${avatarContainer.offsetLeft}px`;\n\t\t\t\tthis._rippleElement.style.transform = 'scale(0)';\n\t\t\t\tthis._rippleElement.style.transition = '0.3s';\n\t\t\t\tthis._rippleElement.style.transform = 'scale(18)';\n\t\t\t} else {\n\t\t\t\tthis._rippleElement.style.width = this._rippleElement.style.height = clientWidthAndHeight + 'px';\n\t\t\t\tthis._rippleElement.style.left = clientX - calendarDayRect.left - clientWidthAndHeight / 2 + 'px';\n\t\t\t\tthis._rippleElement.style.top = clientY - calendarDayRect.top - clientWidthAndHeight / 2 + 'px';\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeRipple() {\n\t\tthis._rippleElement.remove();\n\t\tthis._rippleElement = null;\n\t\tthis.element.classList.remove('selected');\n\t}\n\n\n\t// Public getters and setters\n\t// =============================================================================\n\tget date(): Date {\n\t\treturn this._date;\n\t}\n\n\tget event(): ICalendarDayEvent {\n\t\treturn this._event;\n\t}\n\n\tget isToday(): boolean {\n\t\tif (dateUtility.isSameDay(this._date, this._today)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tset selected(bool: boolean) {\n\t\t// If the selected state is the same, don't dispatch a new event.\n\t\tif (this._selected === bool) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._selected = bool;\n\n\t\tif (bool) {\n\t\t\tdom.dispatchEvent(this.element, '_calendarDaySelected', {\n\t\t\t\tcomponent: this,\n\t\t\t\tevent: this._event,\n\t\t\t});\n\t\t}\n\n\t\tif (!bool && this._rippleElement) {\n\t\t\tthis._removeRipple();\n\t\t}\n\t}\n\n\tget selected(): boolean {\n\t\treturn this._selected;\n\t}\n\n\n\t// Private helper methods\n\t// =============================================================================\n\tprivate _addEventListeners() {\n\t\tthis.element.addEventListener('click', this._clickHandler);\n\t\tthis._dayButtonElement.addEventListener('keydown', this._keypressHandler);\n\t}\n\n\tprivate _removeEventListeners() {\n\t\tthis.element.removeEventListener('click', this._clickHandler);\n\t\tthis._dayButtonElement.addEventListener('keydown', this._keypressHandler);\n\t\tthis._dayButtonElement.addEventListener('keydown', this._keypressHandler);\n\t}\n\n\tprivate _clickHandler = (event: MouseEvent) => {\n\t\tif (!this.element.classList.contains('disabled-day')) {\n\t\t\tthis.element.classList.add('selected');\n\n\t\t\tthis.selected = true;\n\t\t\tthis._rippleAnimation(event.clientX, event.clientY);\n\n\t\t\tevent.cancelBubble = true;\n\t\t}\n\t}\n\n\tprivate _keypressHandler = (event: Event) => { this._createKeypressEventListener()(event); };\n\n\tprivate _createKeypressEventListener(): EventListener {\n\n\t\tconst ripple = () => {\n\t\t\tthis.element.classList.add('selected');\n\t\t\tthis.selected = true;\n\t\t\tthis._rippleAnimation(null, null);\n\t\t\tevent.cancelBubble = true;\n\t\t};\n\n\t\tconst navigate = (direction: string) => {\n\t\t\tdom.dispatchEvent(this.element, '_calendarKeyboardNavigate', { component: this, direction });\n\t\t};\n\n\t\treturn createKeypressEventListener({\n\t\t\tup: () => navigate('up'),\n\t\t\tdown: () => navigate('down'),\n\t\t\tleft: () => navigate('left'),\n\t\t\tright: () => navigate('right'),\n\t\t\tspacebar: () => ripple(),\n\t\t\tenter: () => ripple(),\n\t\t} as IKeyPressHandlers) as EventListener;\n\t}\n}\n","export function createKeypressEventListener(handlers: IKeyPressHandlers): EventListener {\n\treturn function(e: KeyboardEvent) {\n\t\t// If this isn't a keyboard event then bail out. (chrome does this on autofill)\n\t\tif (e && !e.key) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keyCode = e.keyCode.toString();\n\t\tconst key = e.key.toLowerCase();\n\t\tconst altKeyName = (KEY_CODE_NAME_MAP[keyCode] || key).toLowerCase();\n\t\tlet handlerKey = Object.keys(handlers).find((prop: string) => {\n\t\t\tconst handlerName = prop.toLowerCase();\n\t\t\treturn handlerName === keyCode || handlerName === key || handlerName === altKeyName;\n\t\t});\n\n\t\t// if the key isn't in the list but we have 'default', we will run that instead.\n\t\tif (!handlerKey && handlers.default) {\n\t\t\thandlerKey = 'default';\n\t\t}\n\n\t\tif (handlerKey) {\n\t\t\tconst bubble = handlers[handlerKey].bind(this)(e);\n\t\t\tif (!bubble) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\n\t\t\treturn bubble;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\nexport function simulateClickKeypressHandler(element?: HTMLElement) {\n\tfunction eventHandler(event: Event) {\n\t\tconst target = element || (this as HTMLElement);\n\n\t\ttarget.click();\n\t\treturn false;\n\t}\n\n\treturn createKeypressEventListener({\n\t\tspacebar: eventHandler,\n\t\tenter: eventHandler,\n\t});\n}\n\nexport const KEY_CODE_NAME_MAP: { [key: string]: string } = {\n\t13: 'Enter',\n\t27: 'Escape',\n\t32: 'Spacebar',\n\t37: 'Left',\n\t38: 'Up',\n\t39: 'Right',\n\t40: 'Down',\n\t46: 'Del',\n\t91: 'OS',\n\t145: 'Scroll',\n};\n\nexport interface IKeyPressHandlers {\n\t[keyName: string]: EventListener;\n}\n","import { ComponentFactory } from '../component-factory';\nimport * as dom from '../dom';\nimport * as utility from '../utility';\nimport { Expandable, IExpandableComponentOptions } from './expandable';\nimport { SyntheticButtonComponent } from './synthetic-button';\n\nexport interface ICollapsableComponentOptions extends IExpandableComponentOptions {\n\ttargetElement: HTMLElement;\n}\n\nexport class CollapsableComponentFactory extends ComponentFactory {\n\n\tconstructor() {\n\t\tsuper((element: HTMLElement, options?: ICollapsableComponentOptions) => {\n\t\t\treturn new CollapsableComponent(element, Object.assign({ idPrefix: 'iris_collapsable', componentName: 'CollapsableComponent' }, options));\n\t\t}, { defaultQuerySelector: '[data-collapsable]', componentName: 'CollapsableComponent'});\n\t}\n\n\tpublic componentForElement(element: HTMLElement): CollapsableComponent {\n\t\tlet component = super.componentForElement(element);\n\n\t\tif (element && !component) {\n\t\t\tObject.values(this.components)\n\t\t\t\t.forEach((componentArray: CollapsableComponent[]) => {\n\t\t\t\t\tcomponentArray.forEach((cachedComponent) => {\n\t\t\t\t\t\tif (cachedComponent.getOptions().componentName === this.componentName &&\n\t\t\t\t\t\t\tcachedComponent.targetElement.id === element.id) {\n\t\t\t\t\t\t\t\tcomponent = cachedComponent;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\treturn component || null;\n\t}\n}\n\nexport class CollapsableComponent extends Expandable {\n\tprivate _closeElement: HTMLElement;\n\n\tconstructor(srcElement: HTMLElement, options?: ICollapsableComponentOptions) {\n\t\tsuper(srcElement, options);\n\n\t\tthis.collapseStartClass = 'iris-collapsable--collapse-start';\n\t\tthis.collapseTransitionClass = 'iris-collapsable--collapsing';\n\t\tthis.collapseEndClass = 'iris-collapsable--collapsed';\n\n\t\tthis.expandStartClass = 'iris-collapsable--expand-start';\n\t\tthis.expandTransitionClass = 'iris-collapsable--expanding';\n\t\tthis.expandEndClass = 'iris-collapsable--expanded';\n\n\t\tthis.idPrefix = 'iris_collapsable';\n\t\tthis.defaultQuery = '.iris-collapsable';\n\t\tthis.queryAttribute = 'data-collapsable';\n\n\t\tthis.targetElement = options.targetElement || this.targetElement;\n\n\t\tthis.sourceElement.addEventListener('click', this._clickHandler);\n\n\t\tif (this.sourceElement.tagName !== 'BUTTON') {\n\t\t\tSyntheticButtonComponent.factory.init(this.sourceElement);\n\t\t}\n\n\t\tif (this.targetElement) {\n\t\t\tthis._closeElement = this.targetElement.querySelector('[data-close]') as HTMLElement;\n\t\t}\n\n\t\tif (this._closeElement) {\n\t\t\tthis._closeElement.addEventListener('click', this._closeButtonHandler);\n\n\t\t\tif (this._closeElement.tagName !== 'BUTTON') {\n\t\t\t\tSyntheticButtonComponent.factory.init(this._closeElement);\n\t\t\t}\n\t\t}\n\n\t\tif (this.sourceElement.parentElement.matches('.iris-record')) {\n\t\t\tthis.sourceElement.parentElement.classList.add('iris-record--collapsable');\n\t\t}\n\n\t\tthis.sourceElement.addEventListener('expandstart', this._expandStartHandler);\n\t\tthis.sourceElement.addEventListener('expandend', this._expandEndHandler);\n\t\tthis._toggleChevron();\n\t}\n\n\tpublic destroy() {\n\t\tsuper.destroy();\n\n\t\tif (this.sourceElement) {\n\t\t\tthis.sourceElement.removeEventListener('click', this._clickHandler);\n\t\t\tthis.sourceElement.removeEventListener('expandstart', this._expandStartHandler);\n\t\t\tthis.sourceElement.removeEventListener('expandend', this._expandEndHandler);\n\n\t\t\tSyntheticButtonComponent.factory.destroy(this.sourceElement);\n\t\t}\n\n\t\tif (this._closeElement) {\n\t\t\tthis._closeElement.removeEventListener('click', this._closeButtonHandler);\n\n\t\t\tSyntheticButtonComponent.factory.destroy(this._closeElement);\n\t\t}\n\t}\n\n\tget group() {\n\t\treturn this.sourceElement.getAttribute('data-collapsable-group');\n\t}\n\n\tset group(str: string) {\n\t\tthis.sourceElement.setAttribute('data-collapsable-group', str);\n\t}\n\n\tprivate _clickHandler: EventListener = (event: Event) => {\n\t\tconst target = event.target as HTMLElement;\n\t\tconst elementType = target.tagName.toUpperCase();\n\t\tconst clickForMe = target === this.sourceElement || (target !== this.sourceElement && elementType !== 'BUTTON' && elementType !== 'A');\n\n\t\tif (clickForMe) {\n\t\t\tthis.toggle();\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate _closeButtonHandler: EventListener = (event: Event) => {\n\t\tthis.expanded = false;\n\t}\n\n\tprivate _expandStartHandler: EventListener = (event: CustomEvent) => {\n\t\tthis._toggleChevron();\n\n\t\tif (this.sourceElement.parentElement.matches('.iris-record')) {\n\t\t\tthis._toggleRecordExpandedClass();\n\t\t}\n\n\t\tconst detail = Object.assign({}, event.detail, { component: this });\n\t\tdom.dispatchEvent(this.sourceElement, 'iris.collapse.start', detail);\n\t}\n\n\tprivate _expandEndHandler: EventListener = (event: CustomEvent) => {\n\t\tconst detail = Object.assign({}, event.detail, { component: this });\n\t\tdom.dispatchEvent(this.sourceElement, 'collapse', detail);\n\t\tdom.dispatchEvent(this.sourceElement, 'iris.collapse.end', detail);\n\t}\n\n\tprivate _toggleChevron() {\n\t\tconst chevronElements = utility.toArray(this.sourceElement.querySelectorAll('.iris-chevron'));\n\t\tchevronElements.forEach((chevronElement: HTMLElement) => {\n\t\t\tchevronElement.classList.toggle('iris-chevron--up', this.expanded);\n\t\t\tchevronElement.classList.toggle('iris-chevron--down', this.collapsed);\n\t\t});\n\t}\n\n\tprivate _toggleRecordExpandedClass() {\n\t\tthis.sourceElement.parentElement.classList.toggle('iris-record--collapsable-expanded', this.expanded);\n\t}\n\n\tpublic static factory = new CollapsableComponentFactory();\n}\n","import { Component, IComponentOptions } from '../component';\nimport * as dom from '../dom';\nimport { ITransitionOptions, transitionRunner } from '../transition-handler';\nimport * as utility from '../utility';\n\nexport interface IExpandableComponentOptions extends IComponentOptions {\n\ttargetElement: HTMLElement;\n}\n\nexport class Expandable extends Component {\n\tprivate _originalMaxHeight: string = null;\n\tprivate _targetQuery: string;\n\n\tpublic collapseStartClass: string;\n\tpublic collapseTransitionClass: string;\n\tpublic collapseEndClass: string;\n\n\tpublic expandStartClass: string;\n\tpublic expandTransitionClass: string;\n\tpublic expandEndClass: string;\n\n\tpublic idPrefix: string = 'iris_expandable';\n\tpublic queryAttribute: string = 'data-expandable';\n\tpublic defaultQuery: string = '.iris-expandable';\n\tpublic targetAttribute: string = 'aria-controls';\n\n\n\tconstructor(sourceElement: HTMLElement, options?: IExpandableComponentOptions) {\n\t\tsuper(sourceElement, options);\n\n\t\tthis.sourceElement.setAttribute('aria-expanded', this.expanded.toString());\n\t\tthis.sourceElement.setAttribute('tabindex', '0');\n\t}\n\n\tget sourceElement(): HTMLElement {\n\t\treturn this.element;\n\t}\n\n\tget targetElement(): HTMLElement {\n\t\tconst targetElement = document.getElementById(this.sourceElement.getAttribute('aria-controls'));\n\n\t\tif (targetElement) {\n\t\t\treturn targetElement;\n\t\t}\n\n\t\tconst targetQuery = this.sourceElement.getAttribute(this.queryAttribute) || this.defaultQuery;\n\t\treturn dom.relatedElementByQuery(this.sourceElement, targetQuery);\n\t}\n\n\tset targetElement(targetElement: HTMLElement) {\n\t\tconst currentTarget = this.targetElement;\n\n\t\t// clean up the old\n\t\tthis._originalMaxHeight = null;\n\t\tif (currentTarget) {\n\t\t\tthis._cleanClasses(currentTarget);\n\t\t\tcurrentTarget.removeEventListener('transitionend', this._transitionEndHandler);\n\t\t}\n\n\t\tif (targetElement) {\n\t\t\ttargetElement.id = targetElement.id || utility.generateUniqueId(this.idPrefix);\n\t\t\ttargetElement.setAttribute('tabindex', '-1');\n\t\t\ttargetElement.classList.toggle(this.collapseEndClass, this.collapsed);\n\t\t\ttargetElement.classList.toggle(this.expandEndClass, this.expanded);\n\n\t\t\tthis.sourceElement.setAttribute('aria-controls', targetElement.id);\n\n\t\t\tthis._originalMaxHeight = targetElement.style.maxHeight || null;\n\t\t} else {\n\t\t\tthis.sourceElement.removeAttribute('aria-controls');\n\t\t}\n\n\t\tconst targetChangeEvent = new CustomEvent('targetchange', {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tdetail: {\n\t\t\t\toldTargetElement: currentTarget,\n\t\t\t\ttargetElement,\n\t\t\t\tcomponent: this,\n\t\t\t},\n\t\t});\n\n\t\tthis.sourceElement.dispatchEvent(targetChangeEvent);\n\t}\n\n\tget collapsed(): boolean {\n\t\treturn !this.expanded;\n\t}\n\n\tset collapsed(bool: boolean) {\n\t\tthis.expanded = !bool;\n\t}\n\n\tget expanded(): boolean {\n\t\treturn (this.sourceElement.getAttribute('aria-expanded') || '') === 'true';\n\t}\n\n\tset expanded(bool: boolean) {\n\t\tif (this.expanded === bool && this.sourceElement.hasAttribute('aria-expanded')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.sourceElement.setAttribute('aria-expanded', bool.toString());\n\n\t\t// Dispatch expandstart event.\n\t\tconst expandStartEvent = new CustomEvent('expandstart', {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tdetail: {\n\t\t\t\tsourceElement: this.sourceElement,\n\t\t\t\ttargetElement: this.targetElement,\n\t\t\t\texpanded: bool,\n\t\t\t\tcollapsed: !bool,\n\t\t\t\tcomponent: this,\n\t\t\t},\n\t\t});\n\n\t\tthis.sourceElement.dispatchEvent(expandStartEvent);\n\n\t\t// Clean up the element and add max-height property\n\t\tthis._cleanClasses(this.targetElement);\n\t\tthis.targetElement.style.maxHeight = this._originalMaxHeight || getHeight(this.targetElement) + 'px';\n\n\t\t// Transition steps\n\t\tlet expandableTransitionSteps: ITransitionOptions[];\n\n\t\tif (bool) {\n\t\t\texpandableTransitionSteps = [\n\t\t\t\t{\n\t\t\t\t\taddClassString: this.expandStartClass,\n\t\t\t\t\ttype: 'immediate',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\taddClassString: this.expandTransitionClass,\n\t\t\t\t\tremoveClassString: this.expandStartClass,\n\t\t\t\t\ttype: 'transition',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tafterTransitionEventName: 'iris.expandable.transition.complete',\n\t\t\t\t\taddClassString: this.expandEndClass,\n\t\t\t\t\tremoveClassString: this.expandTransitionClass,\n\t\t\t\t\ttype: 'immediate',\n\t\t\t\t},\n\t\t\t];\n\t\t} else {\n\t\t\texpandableTransitionSteps = [\n\t\t\t\t{\n\t\t\t\t\taddClassString: this.collapseStartClass,\n\t\t\t\t\ttype: 'immediate',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\taddClassString: this.collapseTransitionClass,\n\t\t\t\t\tremoveClassString: this.collapseStartClass,\n\t\t\t\t\ttype: 'transition',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tafterTransitionEventName: 'iris.expandable.transition.complete',\n\t\t\t\t\taddClassString: this.collapseEndClass,\n\t\t\t\t\tremoveClassString: this.collapseTransitionClass,\n\t\t\t\t\ttype: 'immediate',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tthis.targetElement.addEventListener('iris.expandable.transition.complete', this._transitionEndHandler);\n\t\ttransitionRunner(this.targetElement, expandableTransitionSteps);\n\n\t\tif (bool && this.focusable) {\n\t\t\tthis.targetElement.focus();\n\t\t}\n\t}\n\n\tget focusable() {\n\t\treturn (this.sourceElement.getAttribute('data-focus') || 'false') === 'true';\n\t}\n\n\tset focusable(bool: boolean) {\n\t\tthis.sourceElement.setAttribute('data-focus', bool.toString());\n\t}\n\n\tpublic toggle() {\n\t\tthis.expanded = !this.expanded;\n\t}\n\n\tpublic destroy() {\n\t\tif (this.sourceElement) {\n\t\t\tthis.sourceElement.removeAttribute('aria-expanded');\n\t\t}\n\n\t\tconst targetElement = this.targetElement;\n\n\t\tif (targetElement) {\n\t\t\tthis._cleanClasses(targetElement);\n\t\t\ttargetElement.removeEventListener('transitionend', this._transitionEndHandler);\n\t\t}\n\t}\n\n\t// remove any classes that don't need to be there.\n\tprivate _cleanClasses(element: HTMLElement) {\n\t\tconst classNames = [\n\t\t\tthis.collapseStartClass,\n\t\t\tthis.collapseTransitionClass,\n\t\t\tthis.collapseEndClass,\n\t\t\tthis.expandStartClass,\n\t\t\tthis.expandTransitionClass,\n\t\t\tthis.expandEndClass,\n\t\t].filter((className) => !!className); // remove any class Names that are null from the list.\n\n\t\telement.classList.remove(...classNames);\n\t}\n\n\tprivate _transitionEndHandler = (event: Event) => {\n\t\tthis.targetElement.removeEventListener('iris.expandable.transition.complete', this._transitionEndHandler);\n\t\tthis.targetElement.style.maxHeight = this._originalMaxHeight;\n\n\t\tconst expandEndEvent = new CustomEvent('expandend', {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tdetail: {\n\t\t\t\tsourceElement: this.sourceElement,\n\t\t\t\ttargetElement: this.targetElement,\n\t\t\t\texpanded: this.expanded,\n\t\t\t\tcollapsed: this.collapsed,\n\t\t\t\tcomponent: this,\n\t\t\t},\n\t\t});\n\n\t\tthis.sourceElement.dispatchEvent(expandEndEvent);\n\t}\n}\n\nfunction getHeight(el: HTMLElement): number {\n\tconst elComputedStyle = window.getComputedStyle(el);\n\tconst elComputedDisplay = elComputedStyle.display;\n\tconst elComputedMaxHeight = elComputedStyle.maxHeight.replace('px', '').replace('%', '');\n\n\tconst elStyleDisplay = el.style.display || null;\n\tconst elStyleVisibility = el.style.visibility || null;\n\tconst elStylePosition = el.style.position || null;\n\n\tlet wantedHeight = 0;\n\n\t// if its not hidden we just return normal height\n\tif (elComputedDisplay !== 'none' && elComputedMaxHeight !== '0') {\n\t\treturn el.offsetHeight;\n\t}\n\n\t// the element is hidden so:\n\t// making the el block so we can meassure its height but still be hidden\n\n\tel.style.position = 'absolute';\n\tel.style.visibility = 'hidden';\n\tel.style.display = 'block';\n\n\twantedHeight = el.offsetHeight;\n\n\t// reverting to the original values\n\tel.style.display = elStyleDisplay;\n\tel.style.position = elStylePosition;\n\tel.style.visibility = elStyleVisibility;\n\n\treturn wantedHeight;\n}\n","import { dispatchEvent } from './dom';\nimport { splitAttributeToList } from './utility';\n\n// Interface\n// =============================================================================\nexport interface ITransitionOptions {\n\tafterTransitionEventName?: string;\n\tchildWithTransitionSelector?: string;\n\taddClassString?: string;\n\tremoveClassString?: string;\n\ttype: 'immediate' | 'timeout' | 'transition';\n\twait?: number;\n}\n\n\n// Runner helper functions\n// =============================================================================\nconst defaultTransitionOptions: ITransitionOptions = {\n\tafterTransitionEventName: null,\n\tchildWithTransitionSelector: null,\n\taddClassString: null,\n\ttype: 'transition',\n\tremoveClassString: null,\n\twait: null,\n};\n\nconst mergeOptionsWithDefaults = (options: any[]): ITransitionOptions[] => {\n\t// Merge the options object with the set of default ones\n\treturn options.map((item: ITransitionOptions | string): ITransitionOptions => {\n\t\tif (typeof item === 'string') {\n\t\t\t// We assume this is an array of classnames\n\t\t\treturn Object.assign({}, defaultTransitionOptions, { className: item });\n\t\t}\n\n\t\treturn Object.assign({}, defaultTransitionOptions, item);\n\t});\n};\n\nconst toggleClasses = (element: HTMLElement, addClassString: string, removeClassString: string) => {\n\tif (addClassString) {\n\t\tconst addClassNameArray = splitAttributeToList(addClassString);\n\n\t\taddClassNameArray.forEach((classString) => {\n\t\t\telement.classList.toggle(classString, true);\n\t\t});\n\t}\n\n\tif (removeClassString) {\n\t\tconst removeClassNameArray = splitAttributeToList(removeClassString);\n\n\t\tremoveClassNameArray.forEach((classString) => {\n\t\t\telement.classList.toggle(classString, false);\n\t\t});\n\t}\n};\n\nconst countUniqueTransitionValues = (arrayToCount: string[]): number => {\n\tconst filteredArray = arrayToCount.map((item) => item.trim())\n\t\t.filter((item) => {\n\t\t\tconst prefixRegex = /(-webkit-|-moz-|-o-|-ms-)/;\n\n\t\t\t// With autoprefixer, there are additional prefixes that get added in.\n\t\t\t// We need to remove these prefixes to get an accurate count of transition properties.\n\t\t\treturn !prefixRegex.test(item);\n\t\t})\n\t\t// Filter again to only get unique values. In some cases we get returned a value of 'transform, transform'.\n\t\t.filter((item, index, origArray) => origArray.indexOf(item) === index);\n\n\treturn filteredArray.length;\n};\n\nconst transitionFinalizingHandler = (element: HTMLElement, transitionStep: ITransitionOptions, transitionSteps: ITransitionOptions[]) => {\n\t// Emit the after transition event name for this step\n\tif (transitionStep.afterTransitionEventName) {\n\t\tdispatchEvent(element, transitionStep.afterTransitionEventName);\n\t}\n\n\t// If there are more than 0 classes left, call the function recursively.\n\tif (transitionSteps.length) {\n\t\ttransitionHandler(element, transitionSteps);\n\t}\n};\n\nconst transitionHandler = (element: HTMLElement, transitionSteps: ITransitionOptions[]) => {\n\tconst transitionStep = transitionSteps.shift();\n\n\t// If immediate is set, go ahead and toggle the classes and call the finalize handler.\n\tif (transitionStep.type === 'immediate') {\n\t\ttoggleClasses(element, transitionStep.addClassString, transitionStep.removeClassString);\n\t\ttransitionFinalizingHandler(element, transitionStep, transitionSteps);\n\n\t\treturn;\n\t}\n\n\t// If there is a wait option set, just use a setTimeout instead of a transition event\n\tif (transitionStep.type === 'timeout' && transitionStep.wait !== null) {\n\t\tsetTimeout(() => {\n\t\t\ttoggleClasses(element, transitionStep.addClassString, transitionStep.removeClassString);\n\t\t\ttransitionFinalizingHandler(element, transitionStep, transitionSteps);\n\t\t}, transitionStep.wait);\n\n\t\treturn;\n\t}\n\n\t// If there are multiple properties being transitioned, we need to wait until all\n\t// have finished before moving to the next step.\n\tconst transitionElement: HTMLElement = element.querySelector(transitionStep.childWithTransitionSelector) || element;\n\tconst transitionProperty: string = window.getComputedStyle(transitionElement, null)['transition-property' as any] || '';\n\tconst numberOfTransitionProperties = countUniqueTransitionValues(transitionProperty.split(',')) - 1;\n\tlet transitionCounter = 0;\n\n\tconst transitionHandlerFunction = (event: Event) => {\n\t\t// If there are more properties than the current counter, bail out\n\t\tif (transitionCounter < numberOfTransitionProperties) {\n\t\t\ttransitionCounter++;\n\t\t\treturn;\n\t\t}\n\n\t\t// If not childWithTransitionSelector element and not the element who's event listener\n\t\t// is currently being invoked, bail out\n\t\tif (event.target !== transitionElement && event.target !== event.currentTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clean up the event listener to prevent duplicate events\n\t\telement.removeEventListener('transitionend', transitionHandlerFunction);\n\t\ttransitionFinalizingHandler(element, transitionStep, transitionSteps);\n\t};\n\n\telement.addEventListener('transitionend', transitionHandlerFunction);\n\ttoggleClasses(element, transitionStep.addClassString, transitionStep.removeClassString);\n};\n\n\n// Main runner\n// =============================================================================\nexport function transitionRunner(element: HTMLElement, options: ITransitionOptions[] | string[]) {\n\tconst transitionSteps = mergeOptionsWithDefaults(options);\n\n\ttransitionHandler(element, transitionSteps);\n}\n","import { Component, IComponentOptions } from '../component';\nimport { GenericComponentFactory, IComponentFactoryOptions } from '../component-factory';\nimport { simulateClickKeypressHandler } from '../keypress-handler';\n\n// tslint:disable-next-line no-empty-interface\nexport interface ISyntheticButtonComponentOptions extends IComponentOptions { }\n\nexport class SyntheticButtonComponent extends Component {\n\tprivate _previousRole: string = null;\n\n\tconstructor(element: HTMLElement, options?: ISyntheticButtonComponentOptions) {\n\t\tsuper(element, options);\n\n\t\tif (this.element.tagName !== 'BUTTON') {\n\t\t\tthis._previousRole = this.element.getAttribute('role') || null;\n\n\t\t\tif (this._previousRole === null) {\n\t\t\t\tthis.element.setAttribute('role', 'button');\n\t\t\t}\n\n\t\t\tthis.element.setAttribute('tabIndex', '0');\n\t\t\tthis.element.addEventListener('keydown', this._keypressHandler);\n\t\t}\n\t}\n\n\tpublic destroy() {\n\t\tif (this.element.tagName !== 'BUTTON') {\n\n\t\t\tif (this._previousRole === null) {\n\t\t\t\tthis.element.removeAttribute('role');\n\t\t\t} else {\n\t\t\t\tthis.element.setAttribute('role', this._previousRole);\n\t\t\t}\n\n\t\t\tthis.element.removeAttribute('tabIndex');\n\t\t\tthis.element.removeEventListener('keydown', this._keypressHandler);\n\t\t}\n\t}\n\n\tprivate _keypressHandler = simulateClickKeypressHandler();\n\n\tprivate static _factoryOptions: IComponentFactoryOptions = {\n\t\tdefaultQuerySelector: '[data-button-like]',\n\t\tcomponentName: 'SyntheticButtonComponent'\n\t};\n\n\tprivate static _defaultComponentOptions: ISyntheticButtonComponentOptions = {\n\t\tidPrefix: 'iris_synthetic_button',\n\t};\n\n\tpublic static factory = new GenericComponentFactory(SyntheticButtonComponent, SyntheticButtonComponent._factoryOptions, SyntheticButtonComponent._defaultComponentOptions);\n}\n","import { Component, IComponentOptions } from '../component';\nimport { GenericComponentFactory, IComponentFactoryOptions } from '../component-factory';\nimport * as dom from '../dom';\nimport { FocusManager } from '../focus-manager';\nimport * as utility from '../utility';\nimport { CompassStep } from './compass-step';\n\nexport interface ICompassComponentOptions extends IComponentOptions {\n\tstepChangeHandlers?: ICompassStepChangeHandlers;\n}\n\nexport interface ICompassStepChangeHandler {\n\tafter?: EventListener;\n\tbefore?: EventListener;\n\tdone?: EventListener;\n\tbuttons?: { [key: string]: string };\n}\n\nexport interface ICompassStepChangeHandlers {\n\t[key: string]: ICompassStepChangeHandler;\n}\n\nexport type CompassStepChangeAction = 'after' | 'before' | 'done';\nexport type CompassAsyncHandlerCallback = (success: () => void, event: CustomEvent, element: HTMLElement) => void;\n\n\nconst EVENT_ACTION_MAP = {\n\t'iris.compass.stepchange.after': { action: 'after', stepKey: 'activeStep' },\n\t'iris.compass.stepchange.before': { action: 'before', stepKey: 'nextStep' },\n\t'iris.compass.done': { action: 'done', stepKey: 'step' }\n} as { [key: string]: { action: CompassStepChangeAction, stepKey: string } };\n\n\nexport class CompassComponentFactory extends GenericComponentFactory {\n\tpublic createAsyncHandler(cb: CompassAsyncHandlerCallback): EventListener {\n\t\tlet asyncCallSuccess = false;\n\t\tlet component: CompassComponent;\n\t\tlet step: CompassStep;\n\n\t\tconst success = function() {\n\t\t\tasyncCallSuccess = true;\n\t\t\tcomponent.activeStep = step;\n\t\t};\n\n\t\treturn function(event: CustomEvent) {\n\t\t\tstep = event.detail.nextStep;\n\t\t\tcomponent = event.detail.component;\n\n\t\t\tif (!asyncCallSuccess) {\n\t\t\t\tcb(success, event, this);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tasyncCallSuccess = false;\n\t\t\treturn true;\n\t\t};\n\t}\n}\n\nexport class CompassComponent extends Component {\n\n\tprivate _cancelStepChange = false;\n\tprivate _focusManager: FocusManager;\n\tprivate _mutationObserver: MutationObserver;\n\tprivate _stepChangeHandlers: ICompassStepChangeHandlers;\n\tprivate _steps: CompassStep[] = [];\n\tprivate _triggerNextElements: HTMLElement[] = [];\n\tprivate _triggerPreviousElements: HTMLElement[] = [];\n\tprivate _triggerDoneElements: HTMLElement[] = [];\n\tprivate _titleElements: HTMLElement[] = [];\n\n\tconstructor(element: HTMLElement, options?: ICompassComponentOptions) {\n\t\tsuper(element, options);\n\t\tif (options.stepChangeHandlers) {\n\t\t\tthis.stepChangeHandlers = options.stepChangeHandlers;\n\t\t}\n\n\t\tthis._focusManager = new FocusManager(this.element, [\n\t\t\t[\n\t\t\t\t'input:not([type=hidden])',\n\t\t\t\t'select',\n\t\t\t\t'.iris-dropdown__capture-input',\n\t\t\t\t'.iris-compass-step[data-compass-active=\"true\"] .iris-compass-step__body button',\n\t\t\t],\n\t\t\t[\n\t\t\t\t'.iris-compass-step[data-compass-active=\"true\"]'\n\t\t\t],\n\t\t]);\n\n\t\tthis.element.addEventListener('iris.compass.stepchange.after', this._stepChangeHandler);\n\t\tthis.element.addEventListener('iris.compass.stepchange.before', this._stepChangeHandler);\n\t\tthis.element.addEventListener('iris.compass.done', this._stepChangeHandler);\n\n\t\tthis._updateTriggerElements();\n\t\tthis._updateTitleElements();\n\t\tthis._updateComponentState();\n\n\t\tthis.reset();\n\n\t\tthis._mutationObserver = new MutationObserver(this._mutationObserverHandler);\n\t\tthis._mutationObserver.observe(this.element, { attributes: true, childList: true });\n\t}\n\n\tpublic get activeStep(): CompassStep {\n\t\treturn this.steps.find((step) => step.active);\n\t}\n\n\tpublic set activeStep(step: CompassStep) {\n\t\tconst oldStep = this.activeStep;\n\n\t\tif (!(step || oldStep) || oldStep === step) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._dispatchEvent('iris.compass.stepchange.before', {\n\t\t\tactiveStep: oldStep,\n\t\t\tcomponent: this,\n\t\t\tnextStep: step\n\t\t});\n\n\n\t\tif (this._cancelStepChange) {\n\t\t\tthis._cancelStepChange = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.steps.forEach((_step) => _step.active = _step === step);\n\n\t\tthis._updateUI();\n\t\tthis._focusManager.setFocus();\n\n\t\tconst detail = {\n\t\t\tactiveStep: step,\n\t\t\tcomponent: this,\n\t\t\tpreviousStep: oldStep\n\t\t};\n\n\t\tthis._dispatchEvent('iris.compass.stepchange.after', detail);\n\t}\n\n\tpublic get autowireSteps() {\n\t\treturn this.element.hasAttribute('data-compass-autowire-steps') || false;\n\t}\n\n\tpublic get stepChangeHandlers() {\n\t\treturn this._stepChangeHandlers || {};\n\t}\n\n\tpublic set stepChangeHandlers(stepChangeHandlers: ICompassStepChangeHandlers) {\n\t\tthis._stepChangeHandlers = stepChangeHandlers;\n\t}\n\n\tpublic get steps(): CompassStep[] {\n\t\treturn this._steps;\n\t}\n\n\tpublic get titleElements() {\n\t\treturn this._titleElements;\n\t}\n\n\tpublic get triggerDoneElements() {\n\t\treturn this._triggerDoneElements;\n\t}\n\n\tpublic get triggerNextElements() {\n\t\treturn this._triggerNextElements;\n\t}\n\n\tpublic get triggerPreviousElements() {\n\t\treturn this._triggerPreviousElements;\n\t}\n\n\tpublic activateDone() {\n\t\tconst doneStep = this.activeStep;\n\t\tthis.activeStep = null;\n\n\t\tthis._dispatchEvent('iris.compass.done', { component: this, step: doneStep });\n\t}\n\n\tpublic activateNextStep(): CompassStep {\n\t\tif (!this.activeStep) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst step = this.stepById(this.activeStep.nextStepId);\n\n\t\tif (step) {\n\t\t\tstep.element.classList.add('iris-compass-step--next');\n\t\t\tthis.activeStep = step;\n\t\t}\n\n\t\treturn step;\n\t}\n\n\tpublic activatePreviousStep(): CompassStep {\n\t\tif (!this.activeStep) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst step = this.stepById(this.activeStep.previousStepId);\n\n\t\tif (step) {\n\t\t\tstep.element.classList.add('iris-compass-step--previous');\n\t\t\tthis.activeStep = step;\n\t\t}\n\n\t\treturn step;\n\t}\n\n\tpublic cancelStepChange(): void {\n\t\tthis._cancelStepChange = true;\n\t}\n\n\tpublic destroy(): void {\n\n\t\tthis.element.removeEventListener('iris.compass.stepchange.after', this._stepChangeHandler);\n\t\tthis.element.removeEventListener('iris.compass.stepchange.before', this._stepChangeHandler);\n\t\tthis.element.removeEventListener('iris.compass.done', this._stepChangeHandler);\n\n\t\tthis._removeTriggerElementEvents();\n\t\treturn;\n\t}\n\n\tpublic disableNext(bool: boolean) {\n\t\tthis.triggerNextElements.forEach((element) => this._disableElement(element, bool));\n\t}\n\n\tpublic disablePrevious(bool: boolean) {\n\t\tthis.triggerPreviousElements.forEach((element) => this._disableElement(element, bool));\n\t}\n\n\tpublic disableDone(bool: boolean) {\n\t\tthis.triggerDoneElements.forEach((element) => this._disableElement(element, bool));\n\t}\n\n\tpublic actionEventListener(id: string, action: CompassStepChangeAction): EventListener {\n\t\t// Determines if the handlers have an object with the id of the step.\n\t\t// If it does then use it's defined handler for that action\n\t\t// else if it isn't defined, use the default one if it's defined.\n\t\t// null handlers will be used to break from falling into default.\n\n\t\tconst defaultActionHandlers = this.stepChangeHandlers.default as ICompassStepChangeHandler;\n\t\tconst defaultActionHandler = defaultActionHandlers && defaultActionHandlers[action] as EventListener;\n\t\tconst actionHandlers = (this.stepChangeHandlers[id] || defaultActionHandlers) as ICompassStepChangeHandler;\n\n\t\tif (!actionHandlers) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst actionHandler = typeof actionHandlers[action] === 'undefined' ? defaultActionHandler : actionHandlers[action];\n\n\t\treturn actionHandler || null;\n\t}\n\n\tpublic reset(): void {\n\t\tthis.activeStep = null;\n\t\tthis.activeStep = this.steps.find((step) => step.isFirst) || this.steps[0];\n\t}\n\n\tpublic stepById(id: string): CompassStep {\n\t\treturn this.steps.find((step) => step.id === id) || null;\n\t}\n\n\tprivate _addTriggerElementEvents(): void {\n\t\tthis.triggerNextElements.forEach((element) => element.addEventListener('click', this._triggerNextClickHandler));\n\t\tthis.triggerPreviousElements.forEach((element) => element.addEventListener('click', this._triggerPreviousClickHandler));\n\t\tthis.triggerDoneElements.forEach((element) => element.addEventListener('click', this._triggerDoneClickHandler));\n\t}\n\n\tprivate _disableElement(element: HTMLElement, bool: boolean) {\n\t\tif (bool) {\n\t\t\telement.setAttribute('disabled', 'disabled');\n\t\t} else {\n\t\t\telement.removeAttribute('disabled');\n\t\t}\n\n\t\telement.setAttribute('aria-disabled', bool.toString());\n\t}\n\n\tprivate _removeTriggerElementEvents(): void {\n\t\tthis.triggerNextElements.forEach((element) => element.removeEventListener('click', this._triggerNextClickHandler));\n\t\tthis.triggerPreviousElements.forEach((element) => element.removeEventListener('click', this._triggerPreviousClickHandler));\n\t\tthis.triggerDoneElements.forEach((element) => element.removeEventListener('click', this._triggerDoneClickHandler));\n\t}\n\n\n\tprivate _updateComponentState(): void {\n\t\tthis._updateSteps();\n\t}\n\n\tprivate _updateTriggerElements(): void {\n\t\tthis._removeTriggerElementEvents();\n\n\t\tthis._triggerNextElements = utility.toArray(document.querySelectorAll(`#${this.element.id} [data-compass-action=\"next\"], [data-compass=\"${this.element.id}\"] [data-compass-action=\"next\"]`));\n\t\tthis._triggerPreviousElements = utility.toArray(document.querySelectorAll(`#${this.element.id} [data-compass-action=\"previous\"], [data-compass=\"${this.element.id}\"] [data-compass-action=\"previous\"]`));\n\t\tthis._triggerDoneElements = utility.toArray(document.querySelectorAll(`#${this.element.id} [data-compass-action=\"done\"], [data-compass=\"${this.element.id}\"] [data-compass-action=\"done\"]`));\n\n\t\tthis._addTriggerElementEvents();\n\t}\n\n\tprivate _updateTitleElements(): void {\n\t\tthis._titleElements = utility.toArray(document.querySelectorAll(`#${this.element.id} [data-compass-title], [data-compass=\"${this.element.id}\"] [data-compass-title]`));\n\t}\n\n\tprivate _updateSteps(): void {\n\t\tconst stepElements = utility.toArray(this.element.querySelectorAll('.iris-compass-step'));\n\n\t\tconst steps = stepElements.map((stepElement, index) => {\n\t\t\tif (this.autowireSteps && !stepElement.id) {\n\t\t\t\tstepElement.id = utility.generateUniqueId('iris_compass_step');\n\t\t\t}\n\n\t\t\tconst step = this._steps.find((oldStep) => oldStep.id === stepElement.id) || new CompassStep(stepElement);\n\n\t\t\treturn step;\n\t\t});\n\n\t\tif (this.autowireSteps) {\n\t\t\tsteps.forEach((step, index) => {\n\t\t\t\tif (this.autowireSteps) {\n\t\t\t\t\tconst nextStep = steps[index + 1];\n\t\t\t\t\tconst previousStep = steps[index - 1];\n\n\t\t\t\t\tstep.nextStepId = nextStep ? nextStep.element.id : null;\n\t\t\t\t\tstep.previousStepId = previousStep ? previousStep.element.id : null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._steps = steps;\n\t}\n\n\tprivate _updateUI(): void {\n\t\tconst activeStep = this.activeStep;\n\t\tconst active = (element: HTMLElement, show: boolean) => {\n\t\t\tconst isAlreadyActive = element.getAttribute('data-compass-active') === 'true';\n\n\t\t\tif (element.hasAttribute('data-compass-active') && show === isAlreadyActive) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.setAttribute('data-compass-active', show.toString());\n\t\t\telement.setAttribute('aria-hidden', (!show).toString());\n\t\t\tCompassStep.setupTransition(element, show);\n\t\t};\n\n\t\tconst title = (activeStep && activeStep.title) || '';\n\t\tthis.titleElements.forEach((element) => element.innerText = title);\n\n\t\tconst triggerElements = this.triggerPreviousElements.concat(this.triggerNextElements, this.triggerDoneElements);\n\n\t\ttriggerElements.forEach((element) => active(element,\n\t\t\t!!(activeStep && ((element.matches('[data-compass-action=\"next\"]') && activeStep.nextStepId) ||\n\t\t\t\t(element.matches('[data-compass-action=\"previous\"]') && activeStep.previousStepId) ||\n\t\t\t\t(element.matches('[data-compass-action=\"done\"]') && !activeStep.nextStepId)))\n\t\t));\n\n\t\tif (!activeStep) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst shownSelector = this.steps.map((step) => `[data-compass-step-show~=${step.id}]`).join(', ');\n\t\tconst shownElements = utility.toArray(document.querySelectorAll(shownSelector)) as HTMLElement[];\n\t\tconst hiddenSelector = this.steps.map((step) => `[data-compass-step-hide~=${step.id}]`).join(', ');\n\t\tconst hiddenElements = utility.toArray(document.querySelectorAll(hiddenSelector)) as HTMLElement[];\n\n\t\tshownElements.forEach((element) => active(element, element.matches(`[data-compass-step-show~=${activeStep.id}]`)));\n\t\thiddenElements.forEach((element) => active(element, !element.matches(`[data-compass-step-hide~=${activeStep.id}]`)));\n\t}\n\n\tprivate _stepChangeHandler = function(event: CustomEvent) {\n\t\tconst { action, stepKey } = EVENT_ACTION_MAP[event.type];\n\t\tconst component = event.detail.component as CompassComponent;\n\t\tconst step = event.detail[stepKey] as CompassStep;\n\n\t\tif (!step) { return; }\n\n\t\tconst handler = component.actionEventListener(step.id, action);\n\n\t\tif (!handler) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst result = handler.bind(this)(event);\n\n\t\tif (action === 'before' && result === false) {\n\t\t\tcomponent.cancelStepChange();\n\t\t}\n\n\t};\n\n\tprivate _mutationObserverHandler = (records: MutationRecord[]) => {\n\t\tthis._updateComponentState();\n\t}\n\n\tprivate _triggerDoneClickHandler = (event: MouseEvent) => {\n\t\tthis.activateDone();\n\t}\n\n\tprivate _triggerNextClickHandler = (event: MouseEvent) => {\n\t\tthis.activateNextStep();\n\t}\n\n\tprivate _triggerPreviousClickHandler = (event: MouseEvent) => {\n\t\tthis.activatePreviousStep();\n\t}\n\n\tprivate static _factoryOptions: IComponentFactoryOptions = {\n\t\tdefaultQuerySelector: '.iris-compass',\n\t\tcomponentName: 'CompassComponent'\n\t};\n\n\tprivate static _defaultComponentOptions: ICompassComponentOptions = {\n\t\tidPrefix: 'iris_compass',\n\t};\n\n\tpublic static factory = new CompassComponentFactory(CompassComponent, CompassComponent._factoryOptions, CompassComponent._defaultComponentOptions);\n}\n","import * as dom from './dom';\nimport { logger } from './logger';\nimport * as utility from './utility';\n\nexport class FocusManager {\n\tprivate _element: HTMLElement;\n\n\tconstructor(element: HTMLElement, heirarchyOfSelectors?: string[][]) {\n\t\tthis._element = element;\n\n\t\tif (heirarchyOfSelectors) {\n\t\t\tthis.heirarchyOfFocusSelectors = heirarchyOfSelectors;\n\t\t}\n\t}\n\n\tpublic heirarchyOfFocusSelectors: string[][] = [[]];\n\tpublic previousFocusElement: HTMLElement = null;\n\n\tpublic setFocus(focusElement?: HTMLElement) {\n\t\tthis.previousFocusElement = (document.activeElement || document.body) as HTMLElement;\n\t\tfocusElement = focusElement || this.focusElement;\n\n\t\ttry {\n\t\t\tfocusElement.focus();\n\t\t} catch (error) {\n\t\t\tlogger({\r\n\t\t\t\tcomponent: 'FocusHandler',\n\t\t\t\tmessage: 'Unable to focus on targeted element',\n\t\t\t\ttype: 'warn'\r\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic returnFocus() {\n\t\tif (!this.previousFocusElement) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is a standard focusable element (e.g.