{"version":3,"sources":["webpack:///./app/javascript/src/listGroupSelect.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/javascript/src/ErrorBoundary.js","webpack:///./app/javascript/src/Script.js","webpack:///./app/javascript/src/flight-store.js","webpack:///./app/javascript/src/newCaseDetails.js","webpack:///./app/javascript/src/accountMenu/index.js","webpack:///./app/javascript/src/cluster-tree/constants.js","webpack:///./app/javascript/src/cluster-tree/LastCheckedContext.js","webpack:///./app/javascript/src/cluster-tree/components/IndeterminateCheckbox.js","webpack:///./app/javascript/src/cluster-tree/components/ClusterPart.js","webpack:///./app/javascript/src/cluster-tree/components/Component.js","webpack:///./app/javascript/src/cluster-tree/LastCheckedProvider.js","webpack:///./app/javascript/src/cluster-tree/components/Forest.js","webpack:///./app/javascript/src/cluster-tree/components/ResultsTree.js","webpack:///./app/javascript/src/cluster-tree/model.js","webpack:///./app/javascript/src/cluster-tree/index.js","webpack:///./app/javascript/src/omnisearch/components/CaseSearchResult.js","webpack:///./app/javascript/src/omnisearch/components/SearchResult.js","webpack:///./app/javascript/src/omnisearch/components/ComponentSearchResult.js","webpack:///./app/javascript/src/omnisearch/components/SiteSearchResult.js","webpack:///./app/javascript/src/omnisearch/components/Omnisearch.js","webpack:///./app/javascript/src/asset-vis/components/Container.js","webpack:///./app/javascript/src/asset-vis/components/Asset.js","webpack:///./app/javascript/src/asset-vis/components/AssetGroup.js","webpack:///./app/javascript/src/asset-vis/components/Category.js","webpack:///./app/javascript/src/asset-vis/components/AssetVisualiser.js","webpack:///./app/javascript/src/utils.js","webpack:///./app/javascript/src/Loading.js","webpack:///./app/javascript/src/asset-vis/components/RenderedAssetContainer.js","webpack:///./app/javascript/src/asset-vis/components/AssetContainer.js","webpack:///./app/javascript/src/asset-vis/components/Component.js","webpack:///./app/javascript/src/asset-vis/components/AssetContainerVisualiser.js","webpack:///./app/javascript/src/events/components/MarkdownField.js","webpack:///./app/javascript/src/events/components/EventWindowForm.js","webpack:///./app/javascript/src/events/components/EventCalendar.js","webpack:///./app/javascript/src/events/constraints.js","webpack:///./app/javascript/src/events/components/EventWindowsForm.js","webpack:///./app/javascript/src/events/components/MetadataForm.js","webpack:///./app/javascript/src/events/components/RailsFormMeta.js","webpack:///./app/javascript/src/events/components/EventForm.js","webpack:///./app/javascript/src/faqsearch/components/FaqItemCard.js","webpack:///./app/javascript/src/faqsearch/components/PaginationControls.js","webpack:///./app/javascript/src/faqsearch/components/FaqSearch.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/src/omnisearch/index.js","webpack:///./app/javascript/src/faqsearch/index.js","webpack:///./app/javascript/src/fullcalendar/index.js","webpack:///./app/javascript/src/asset-vis/index.js","webpack:///./app/javascript/src/events/index.js","webpack:///./app/javascript/src/emoji-mart.js"],"names":["document","addEventListener","SingleSelectionStrategy","form","inputName","list","this","input","find","get","$","attr","type","name","appendTo","li","removeAllHighlights","val","data","addClass","removeClass","MultipleSelectionStrategy","value","hiddenTag","remove","init","parents","selectionStrategy","each","idx","on","event","hasClass","deselect","select","preventDefault","modal","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","ErrorBoundary","props","state","hasError","error","fallback","children","React","Component","defaultProps","class","Script","suspender","cache","src","wrapPromise","Promise","reject","script","createElement","onload","onerror","body","appendChild","set","promise","result","status","then","r","read","Map","getAuthToken","auth","selectors","ssoToken","authStore","getState","getCurrentUser","currentUserSelector","FlightStore","lazy","root","querySelector","dataset","ReactDOM","render","size","showLoginForm","newCaseDetails","debug","mkDebug","NewCaseDetails","issueSelect","fieldGroupsByIssueId","buildFieldGroups","comment","Comment","issueSelected","bind","preventSubmissionWithoutAnyDetails","removeEventListener","issueIds","querySelectorAll","forEach","option","push","reduce","accum","issueId","fieldsForIssue","IssueFieldGroup","selectedIssueId","selectedOptions","selectedFieldGroup","isEmpty","hasMandatoryFields","showFieldsForSelectedIssue","hideCaseDetails","setRequired","setTitle","showCaseDetails","style","display","filledIn","anyFieldFilledIn","removeRequired","forceRequired","hide","show","fields","field","IssueField","addRequired","length","some","isOptional","domNode","required","optional","trim","heading","textarea","title","innerText","window","Modals","privacyPolicyUrl","termsUrl","SelectionState","LastCheckedContext","createContext","IndeterminateCheckbox","el","indeterminate","prevProps","rest","Consumer","onClick","ev","shiftClick","ref","context","clicked","lastChecked","shiftKey","siblings","closest","Array","prototype","includes","call","thisIndex","indexOf","previousIndex","targets","slice","Math","min","max","isParent","checkbox","checkboxParent","checked","click","ClusterPartTreeEntry","hideDecommissioned","part","icon","selectionState","selfPending","selfSelected","toggleSelectionState","decommissioned","ident","hasChildren","selected","useState","expanded","setExpanded","classes","classnames","childrenShouldBePruned","className","htmlFor","onChange","child","key","component","pending","LastCheckedProvider","Provider","updateLastChecked","newLastChecked","setState","components","ResultPart","isExpanded","relevantChildren","filter","c","ulClasses","onMouseUp","selections","ClusterPart","spec","parent","supportType","anyChildrenSelected","selfAndAllChildrenSelected","onSelectionStateChange","every","ignoreHandler","setAllSelected","anyChildren","Asset","AssetGroup","assets","a","componentChildren","assetGroupChildren","assetGroups","agc","AssetGroupCategory","groupsAndUngrouped","ug","concat","Pseudogroup","allChildren","selectedChildren","groups","ag","_extractSelectedChildrenInner","acc","ClusterTree","initialTree","decommissionedDefault","componentList","allSitesContext","dispatchEvent","setHideDecommissioned","evt","CustomEvent","detail","selectedItems","allowDecommissioned","klass","createPortal","target","getElementById","Forest","ResultsTree","createClusterTree","rootElement","index","JSON","parse","clusterTree","initialised","fixDropdownClusterTree","_","tree","dropdown","clickEvent","contains","STATE_ICONS","CaseStateBadge","RESULT_RENDERERS","model","hasShortcode","hasParent","GenericResult","gid","SearchResult","SpecificResult","abortController","renderSuggestion","fetchSuggestions","query","loadingFunc","suggestionFunc","abort","abortSignal","AbortController","signal","q","fetch","method","stringify","credentials","headers","response","ok","json","statusText","err","DOMException","getSuggestionValue","suggestion","Omnisearch","suggestions","setSuggestions","isLoading","setLoading","queryString","setQueryString","inputProps","placeholder","highlightFirstSuggestion","onSuggestionsClearRequested","onSuggestionsFetchRequested","onSuggestionSelected","stopPropagation","url","location","renderInputComponent","autoComplete","disabled","Container","href","Collapse","isOpen","POWER_STATES","MAINTENANCE_STATES","powerClassname","power_state","undefined","maintenanceClassname","maintenance_state","asset","classNames","metadata","link","group","showDecommissioned","Category","category","setShowDecommissioned","Fragment","FormGroup","check","Label","Input","getAndDenormalise","denormaliseAPIResponse","record","relationships","entries","relationship","objects","isArray","ac","included","i","Loading","calculateColumnBound","bound","reverseView","attributes","container","inverseBound","Inner","styled","div","propTypes","PropTypes","object","isRequired","columnSpan","RenderedAsset","Blurry","AnonymousAsset","AnonymousContainer","x_capacity","y_capacity","RenderedAssetContainer","setActiveContainer","child_containers","cc","ParentLink","tabIndex","AssetContainer","containerID","setContainer","loading","setReverseView","useEffect","parent_container","ContainerOption","nestingLevel","padStart","ContainerSelection","containers","onSelect","containersById","topLevelContainers","for","preselect","setContainerID","handleHistoryChange","selectContainer","newUrl","hashid","pathname","match","history","pushState","AssetContainerVisualiser","componentID","setComponent","options","siteID","editor","createRef","configureEditor","current","role","require","DATE_FORMAT","TIME_FORMAT","EventWindowForm","highlighted","onDelete","onUpdate","showDelete","updateWindow","attrs","idPrefix","startFieldID","endFieldID","parsedStart","moment","parsedEnd","earliestStart","businessAdd","expiry_range","earliestEnd","clone","add","duration","dateFormat","isValidDate","date","isSameOrAfter","startOf","newDate","_isAMomentObject","start_time","timeFormat","end_time","Button","color","mapTime","time","format","mapWindow","highlightedIndex","w","backgroundColor","textColor","start","end","editable","windowIndex","fetchEventsForCalendar","info","onSuccess","onFailure","URL","origin","searchParams","append","startStr","endStr","allEvents","eventID","popoverTitle","popoverContent","postProcessCalendar","EventCalendar","onCreate","onViewChange","onWindowClick","windows","calendarRef","handleUpdate","extendedProps","setTimeout","api","getApi","updateSize","scrollToTime","datesRender","arg","view","activeStart","activeEnd","defaultView","eventBorderColor","eventClick","eventDrop","eventResize","eventSources","events","firstDay","height","plugins","bootstrapPlugin","interactionPlugin","momentPlugin","timeGridPlugin","unselect","selectable","selectAllow","validRange","subtract","views","timeGridWeek","allDaySlot","columnHeaderFormat","nowIndicator","scrollTime","boundWindowToEvent","clonedWindow","newStart","setWindows","currentDisplayStart","setHighlightedIndex","onWindowUpdate","boundWindow","myWindows","splice","onWindowDelete","oldWindows","suggestedStart","nextBusinessDay","hour","minute","addNewWindow","MetadataElement","fieldID","fieldName","defaultValue","help","MetadataForm","md","RailsFormMeta","_authenticity_token","Subtitle","kase","actionName","availableTypes","availableCases","relatedCase","stateEvent","statefulEvent","setStatefulEvent","eventWindows","durationTotalMins","durationHours","floor","durationMins","updateEvent","newEvent","boundWindowsToEvent","case_id","Form","action","fluid","Row","Col","xs","t","classList","display_id","MarkdownField","description","rows","parseInt","EventWindowsForm","reportValidity","confirm","submit","classesMapping","associations","consultancyPossible","question","_source","answer","highlighting","dangerouslySetInnerHTML","__html","team","text","toLowerCase","linkPath","FaqItemCardButton","page","totalPages","FaqSearch","originalQueryString","setOriginalQueryString","successfulQuery","setSuccessfulQuery","total","pages","existing_count","counts","setCounts","setPage","associationParams","param","queryInput","faqChooseTeamHelper","scrollToTop","offsetPosition","getBoundingClientRect","top","pageYOffset","scrollTo","behavior","selectedPage","pagination","searchString","ajax","authenticity_token","done","content","results","fail","xhr","alert","onSubmit","fontSize","FaqItemCard","_id","PaginationControls","renderPaginationControls","previousSeenAccount","addOnAuthChangeCallback","account","reload","b","l","store","dispatch","registration","actions","startSignUp","renderFaqSearch","calendarEl","eventsUrl","calendarFeed","Calendar","dayGridPlugin","listPlugin","header","left","center","right","eventRender","popover","html","trigger","placement","test","initCalendar","AssetVisualiser","initAssetVisualiser","componentId","initAssetContainerVisualiser","EventForm","initEventForm","emojiMart","element","Picker","unmountComponentAtNode"],"mappings":"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","file":"js/application-6d16004df596a5b996e4.chunk.js","sourcesContent":["document.addEventListener('DOMContentLoaded', () => {\n class SingleSelectionStrategy {\n constructor(form, inputName, list) {\n this.list = list;\n this.input = form.find(`[name=\"${inputName}\"]`);\n if (!this.input.get(0)) {\n this.input = $('').attr({\n type: 'hidden',\n name: inputName,\n }).appendTo(form);\n }\n }\n\n select(li) {\n this.removeAllHighlights();\n this.input.val(li.data('id'));\n li.addClass('active');\n }\n\n deselect(li) {\n this.removeAllHighlights();\n this.input.val('');\n }\n\n removeAllHighlights() {\n const items = this.list.find('li');\n items.removeClass('active');\n }\n }\n\n class MultipleSelectionStrategy {\n constructor(form, inputName) {\n this.form = form;\n this.inputName = inputName;\n }\n\n select(li) {\n $('').attr({\n type: 'hidden',\n name: this.inputName,\n value: li.data('id'),\n }).appendTo(this.form);\n li.addClass('active');\n }\n\n deselect(li) {\n const hiddenTag = this.form.find(\n `[name=\"${this.inputName}\"][value=\"${li.data('id')}\"]`\n );\n li.removeClass('active');\n hiddenTag.remove();\n }\n }\n\n $(\"[data-list-group-select]\").each(init);\n $(\"[data-load-content-from]\").on(\"loadContent.loaded\", (event, modal) => {\n $(modal).find(\"[data-list-group-select]\").each(init);\n });\n\n function init() {\n const list = $(this);\n const inputName = list.data('list-group-select-input-name');\n const form = list.parents('form');\n const strategyFactory = list.data('list-group-select-multiple') ?\n MultipleSelectionStrategy :\n SingleSelectionStrategy;\n const selectionStrategy = new strategyFactory(form, inputName, list);\n\n const items = list.find('li');\n items.each((idx, li) => {\n li = $(li);\n li.on('click', (event) => {\n const unSetting = li.hasClass('active');\n if (unSetting) {\n selectionStrategy.deselect(li);\n } else {\n selectionStrategy.select(li);\n }\n event.preventDefault();\n });\n });\n };\n});\n","var map = {\n\t\"./af\": 406,\n\t\"./af.js\": 406,\n\t\"./ar\": 407,\n\t\"./ar-dz\": 408,\n\t\"./ar-dz.js\": 408,\n\t\"./ar-kw\": 409,\n\t\"./ar-kw.js\": 409,\n\t\"./ar-ly\": 410,\n\t\"./ar-ly.js\": 410,\n\t\"./ar-ma\": 411,\n\t\"./ar-ma.js\": 411,\n\t\"./ar-sa\": 412,\n\t\"./ar-sa.js\": 412,\n\t\"./ar-tn\": 413,\n\t\"./ar-tn.js\": 413,\n\t\"./ar.js\": 407,\n\t\"./az\": 414,\n\t\"./az.js\": 414,\n\t\"./be\": 415,\n\t\"./be.js\": 415,\n\t\"./bg\": 416,\n\t\"./bg.js\": 416,\n\t\"./bm\": 417,\n\t\"./bm.js\": 417,\n\t\"./bn\": 418,\n\t\"./bn-bd\": 419,\n\t\"./bn-bd.js\": 419,\n\t\"./bn.js\": 418,\n\t\"./bo\": 420,\n\t\"./bo.js\": 420,\n\t\"./br\": 421,\n\t\"./br.js\": 421,\n\t\"./bs\": 422,\n\t\"./bs.js\": 422,\n\t\"./ca\": 423,\n\t\"./ca.js\": 423,\n\t\"./cs\": 424,\n\t\"./cs.js\": 424,\n\t\"./cv\": 425,\n\t\"./cv.js\": 425,\n\t\"./cy\": 426,\n\t\"./cy.js\": 426,\n\t\"./da\": 427,\n\t\"./da.js\": 427,\n\t\"./de\": 428,\n\t\"./de-at\": 429,\n\t\"./de-at.js\": 429,\n\t\"./de-ch\": 430,\n\t\"./de-ch.js\": 430,\n\t\"./de.js\": 428,\n\t\"./dv\": 431,\n\t\"./dv.js\": 431,\n\t\"./el\": 432,\n\t\"./el.js\": 432,\n\t\"./en-au\": 433,\n\t\"./en-au.js\": 433,\n\t\"./en-ca\": 434,\n\t\"./en-ca.js\": 434,\n\t\"./en-gb\": 435,\n\t\"./en-gb.js\": 435,\n\t\"./en-ie\": 436,\n\t\"./en-ie.js\": 436,\n\t\"./en-il\": 437,\n\t\"./en-il.js\": 437,\n\t\"./en-in\": 438,\n\t\"./en-in.js\": 438,\n\t\"./en-nz\": 439,\n\t\"./en-nz.js\": 439,\n\t\"./en-sg\": 440,\n\t\"./en-sg.js\": 440,\n\t\"./eo\": 441,\n\t\"./eo.js\": 441,\n\t\"./es\": 442,\n\t\"./es-do\": 443,\n\t\"./es-do.js\": 443,\n\t\"./es-mx\": 444,\n\t\"./es-mx.js\": 444,\n\t\"./es-us\": 445,\n\t\"./es-us.js\": 445,\n\t\"./es.js\": 442,\n\t\"./et\": 446,\n\t\"./et.js\": 446,\n\t\"./eu\": 447,\n\t\"./eu.js\": 447,\n\t\"./fa\": 448,\n\t\"./fa.js\": 448,\n\t\"./fi\": 449,\n\t\"./fi.js\": 449,\n\t\"./fil\": 450,\n\t\"./fil.js\": 450,\n\t\"./fo\": 451,\n\t\"./fo.js\": 451,\n\t\"./fr\": 452,\n\t\"./fr-ca\": 453,\n\t\"./fr-ca.js\": 453,\n\t\"./fr-ch\": 454,\n\t\"./fr-ch.js\": 454,\n\t\"./fr.js\": 452,\n\t\"./fy\": 455,\n\t\"./fy.js\": 455,\n\t\"./ga\": 456,\n\t\"./ga.js\": 456,\n\t\"./gd\": 457,\n\t\"./gd.js\": 457,\n\t\"./gl\": 458,\n\t\"./gl.js\": 458,\n\t\"./gom-deva\": 459,\n\t\"./gom-deva.js\": 459,\n\t\"./gom-latn\": 460,\n\t\"./gom-latn.js\": 460,\n\t\"./gu\": 461,\n\t\"./gu.js\": 461,\n\t\"./he\": 462,\n\t\"./he.js\": 462,\n\t\"./hi\": 463,\n\t\"./hi.js\": 463,\n\t\"./hr\": 464,\n\t\"./hr.js\": 464,\n\t\"./hu\": 465,\n\t\"./hu.js\": 465,\n\t\"./hy-am\": 466,\n\t\"./hy-am.js\": 466,\n\t\"./id\": 467,\n\t\"./id.js\": 467,\n\t\"./is\": 468,\n\t\"./is.js\": 468,\n\t\"./it\": 469,\n\t\"./it-ch\": 470,\n\t\"./it-ch.js\": 470,\n\t\"./it.js\": 469,\n\t\"./ja\": 471,\n\t\"./ja.js\": 471,\n\t\"./jv\": 472,\n\t\"./jv.js\": 472,\n\t\"./ka\": 473,\n\t\"./ka.js\": 473,\n\t\"./kk\": 474,\n\t\"./kk.js\": 474,\n\t\"./km\": 475,\n\t\"./km.js\": 475,\n\t\"./kn\": 476,\n\t\"./kn.js\": 476,\n\t\"./ko\": 477,\n\t\"./ko.js\": 477,\n\t\"./ku\": 478,\n\t\"./ku.js\": 478,\n\t\"./ky\": 479,\n\t\"./ky.js\": 479,\n\t\"./lb\": 480,\n\t\"./lb.js\": 480,\n\t\"./lo\": 481,\n\t\"./lo.js\": 481,\n\t\"./lt\": 482,\n\t\"./lt.js\": 482,\n\t\"./lv\": 483,\n\t\"./lv.js\": 483,\n\t\"./me\": 484,\n\t\"./me.js\": 484,\n\t\"./mi\": 485,\n\t\"./mi.js\": 485,\n\t\"./mk\": 486,\n\t\"./mk.js\": 486,\n\t\"./ml\": 487,\n\t\"./ml.js\": 487,\n\t\"./mn\": 488,\n\t\"./mn.js\": 488,\n\t\"./mr\": 489,\n\t\"./mr.js\": 489,\n\t\"./ms\": 490,\n\t\"./ms-my\": 491,\n\t\"./ms-my.js\": 491,\n\t\"./ms.js\": 490,\n\t\"./mt\": 492,\n\t\"./mt.js\": 492,\n\t\"./my\": 493,\n\t\"./my.js\": 493,\n\t\"./nb\": 494,\n\t\"./nb.js\": 494,\n\t\"./ne\": 495,\n\t\"./ne.js\": 495,\n\t\"./nl\": 496,\n\t\"./nl-be\": 497,\n\t\"./nl-be.js\": 497,\n\t\"./nl.js\": 496,\n\t\"./nn\": 498,\n\t\"./nn.js\": 498,\n\t\"./oc-lnc\": 499,\n\t\"./oc-lnc.js\": 499,\n\t\"./pa-in\": 500,\n\t\"./pa-in.js\": 500,\n\t\"./pl\": 501,\n\t\"./pl.js\": 501,\n\t\"./pt\": 502,\n\t\"./pt-br\": 503,\n\t\"./pt-br.js\": 503,\n\t\"./pt.js\": 502,\n\t\"./ro\": 504,\n\t\"./ro.js\": 504,\n\t\"./ru\": 505,\n\t\"./ru.js\": 505,\n\t\"./sd\": 506,\n\t\"./sd.js\": 506,\n\t\"./se\": 507,\n\t\"./se.js\": 507,\n\t\"./si\": 508,\n\t\"./si.js\": 508,\n\t\"./sk\": 509,\n\t\"./sk.js\": 509,\n\t\"./sl\": 510,\n\t\"./sl.js\": 510,\n\t\"./sq\": 511,\n\t\"./sq.js\": 511,\n\t\"./sr\": 512,\n\t\"./sr-cyrl\": 513,\n\t\"./sr-cyrl.js\": 513,\n\t\"./sr.js\": 512,\n\t\"./ss\": 514,\n\t\"./ss.js\": 514,\n\t\"./sv\": 515,\n\t\"./sv.js\": 515,\n\t\"./sw\": 516,\n\t\"./sw.js\": 516,\n\t\"./ta\": 517,\n\t\"./ta.js\": 517,\n\t\"./te\": 518,\n\t\"./te.js\": 518,\n\t\"./tet\": 519,\n\t\"./tet.js\": 519,\n\t\"./tg\": 520,\n\t\"./tg.js\": 520,\n\t\"./th\": 521,\n\t\"./th.js\": 521,\n\t\"./tk\": 522,\n\t\"./tk.js\": 522,\n\t\"./tl-ph\": 523,\n\t\"./tl-ph.js\": 523,\n\t\"./tlh\": 524,\n\t\"./tlh.js\": 524,\n\t\"./tr\": 525,\n\t\"./tr.js\": 525,\n\t\"./tzl\": 526,\n\t\"./tzl.js\": 526,\n\t\"./tzm\": 527,\n\t\"./tzm-latn\": 528,\n\t\"./tzm-latn.js\": 528,\n\t\"./tzm.js\": 527,\n\t\"./ug-cn\": 529,\n\t\"./ug-cn.js\": 529,\n\t\"./uk\": 530,\n\t\"./uk.js\": 530,\n\t\"./ur\": 531,\n\t\"./ur.js\": 531,\n\t\"./uz\": 532,\n\t\"./uz-latn\": 533,\n\t\"./uz-latn.js\": 533,\n\t\"./uz.js\": 532,\n\t\"./vi\": 534,\n\t\"./vi.js\": 534,\n\t\"./x-pseudo\": 535,\n\t\"./x-pseudo.js\": 535,\n\t\"./yo\": 536,\n\t\"./yo.js\": 536,\n\t\"./zh-cn\": 537,\n\t\"./zh-cn.js\": 537,\n\t\"./zh-hk\": 538,\n\t\"./zh-hk.js\": 538,\n\t\"./zh-mo\": 539,\n\t\"./zh-mo.js\": 539,\n\t\"./zh-tw\": 540,\n\t\"./zh-tw.js\": 540\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1196;","import React from 'react';\n\nconst DefaultErrorMessage = () => (\n
\n
\n

An error has occurred

\n

\n Unfortunately there has been a problem handling your request. Please\n try again and, if problems persist, help us to more quickly rectify\n the problem by opening a support case under your Flight Center Service\n and letting us know what you were trying to do when the error\n occurred.\n

\n
\n
\n);\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static defaultProps = {\n fallback: DefaultErrorMessage,\n };\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n // componentDidCatch(error, errorInfo) {\n // // XXX Add sentry error reporting here.\n // }\n\n render() {\n if (this.state.hasError) {\n if (typeof this.props.fallback === 'function') {\n return this.props.fallback();\n }\n return this.props.fallback;\n }\n\n return this.props.children; \n }\n}\n\nexport default ErrorBoundary;\n","import React, { useEffect, useState } from 'react';\n\n// Load script at given `src`, execute children *after* script has been\n// successfully loaded.\n//\n// This class interacts with React.Suspense to avoid rendering its children\n// until the given script has been successfully loaded. E.g.,\n//\n// Waiting for script to load...

}>\n// \n//
\n//\nclass Script extends React.Component {\n static cache = new Map();\n\n static wrapPromise(promise) {\n let status = \"pending\";\n let result;\n let suspender = promise.then(\n r => {\n status = \"success\";\n result = r;\n },\n e => {\n status = \"error\";\n result = e;\n }\n );\n return {\n read() {\n if (status === \"pending\") {\n throw suspender;\n } else if (status === \"error\") {\n throw result;\n } else if (status === \"success\") {\n return result;\n }\n }\n };\n }\n\n constructor(props) {\n super(props);\n let suspender = Script.cache.get(props.src);\n if ( suspender == null ) {\n suspender = Script.wrapPromise(new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = props.src;\n script.onload = () => resolve(script);\n script.onerror = reject;\n document.body.appendChild(script);\n }));\n Script.cache.set(props.src, suspender);\n }\n }\n\n render() {\n const suspender = Script.cache.get(this.props.src);\n suspender.read();\n\n if (typeof this.props.children === 'function') {\n return this.props.children();\n }\n return this.props.children;\n }\n};\n\nexport default Script;\n","import React, {lazy, Suspense} from 'react';\nimport ReactDOM from 'react-dom';\nimport { DelaySpinner } from 'flight-reactware';\nimport { auth, showLoginForm, store as authStore } from 'flight-account-menu';\n\nimport ErrorBoundary from './ErrorBoundary';\nimport Script from './Script';\n\nfunction getAuthToken() {\n return auth.selectors.ssoToken(authStore.getState());\n}\nfunction getCurrentUser() {\n return auth.selectors.currentUserSelector(authStore.getState());\n}\n\n\nconst FlightStore = lazy(\n () => import(/*webpackChunkName: \"flight-store\" */ 'flight-store-lib')\n);\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const root = document.querySelector('#flight-store');\n if (root != null) {\n const dataset = root.dataset;\n ReactDOM.render(\n \n }>\n \n \n ,\n root,\n );\n }\n});\n","import mkDebug from 'debug';\nconst debug = mkDebug('FC:NewCaseDetails');\n\n// Wraps the details section on the new case page.\n//\n// - Shows and hides the issue fields for the selected issue.\n// - Adjusts the comment as appropriate for the selected issue.\n// - Prevents submission of the form without any details.\n//\nclass NewCaseDetails {\n constructor(form) {\n this.form = form;\n this.issueSelect = this.form.querySelector('[data-issue-field-select]');\n this.fieldGroupsByIssueId = this.buildFieldGroups();\n this.comment = new Comment(form);\n\n this.issueSelected = this.issueSelected.bind(this);\n this.preventSubmissionWithoutAnyDetails = this.preventSubmissionWithoutAnyDetails.bind(this);\n this.issueSelect.addEventListener('change', this.issueSelected);\n this.form.addEventListener('input', this.preventSubmissionWithoutAnyDetails);\n this.issueSelected();\n }\n\n removeEventListeners() {\n this.issueSelect.removeEventListener('change', this.issueSelected);\n this.form.removeEventListener('input', this.preventSubmissionWithoutAnyDetails);\n }\n\n buildFieldGroups() {\n const issueIds = [];\n this.issueSelect.querySelectorAll('option').forEach((option) => {\n if (option.value !== \"\") {\n issueIds.push(option.value);\n }\n });\n return issueIds.reduce(\n (accum, issueId) => {\n const fieldsForIssue = this.form.querySelectorAll(`[data-issue-field=\"${issueId}\"]`);\n accum[issueId] = new IssueFieldGroup(issueId, fieldsForIssue);\n return accum;\n },\n {},\n );\n }\n\n issueSelected() {\n const selectedIssueId = this.issueSelect.selectedOptions[0].value;\n this.selectedFieldGroup = this.fieldGroupsByIssueId[selectedIssueId];\n debug(\"Selected issue %s. Field groups %O\", selectedIssueId, this.selectedFieldGroup);\n\n if (this.selectedFieldGroup) {\n debug(\n 'Selected field group %s empty',\n this.selectedFieldGroup.isEmpty() ? 'IS' : 'IS NOT'\n );\n debug(\n 'Selected field group %s mandatory fields',\n this.selectedFieldGroup.hasMandatoryFields() ? 'HAS' : 'DOES NOT HAVE'\n );\n }\n\n this.showFieldsForSelectedIssue();\n if (this.selectedFieldGroup == null || this.selectedFieldGroup.isEmpty()) {\n this.hideCaseDetails();\n this.comment.setRequired(true)\n this.comment.setTitle('Supporting information');\n } else if (this.selectedFieldGroup.hasMandatoryFields()) {\n this.showCaseDetails();\n this.comment.setRequired(false);\n this.comment.setTitle('Additional information');\n } else {\n // An issue with all optional fields.\n this.showCaseDetails();\n this.comment.setTitle('Additional information');\n this.preventSubmissionWithoutAnyDetails();\n }\n }\n\n hideCaseDetails() {\n this.form.querySelector('#case-details-label').style.display = 'none';\n this.form.querySelector('#case-details').style.display = 'none';\n }\n\n showCaseDetails() {\n this.form.querySelector('#case-details-label').style.display = '';\n this.form.querySelector('#case-details').style.display = '';\n }\n\n // The selected issue could have some fields which are all optional. If\n // this is the case, the user must fill out at least one. We ensure that is\n // the case by making them all required, until at least one is filled out.\n preventSubmissionWithoutAnyDetails() {\n if (this.selectedFieldGroup == null\n || this.selectedFieldGroup.isEmpty()\n || this.selectedFieldGroup.hasMandatoryFields()\n ) { return; }\n\n debug(\"Preventing submission without any details\")\n if (this.comment.filledIn() || this.selectedFieldGroup.anyFieldFilledIn()) {\n debug(\"Some details provided. Removing required.\")\n this.comment.setRequired(false);\n this.selectedFieldGroup.removeRequired();\n } else {\n debug(\"No details provided. Forcing required.\")\n this.comment.setRequired(true);\n this.selectedFieldGroup.forceRequired();\n }\n }\n\n showFieldsForSelectedIssue() {\n Object.keys(this.fieldGroupsByIssueId).forEach((issueId) => {\n const fieldGroup = this.fieldGroupsByIssueId[issueId];\n fieldGroup.hide();\n });\n if (this.selectedFieldGroup != null) {\n this.selectedFieldGroup.show();\n }\n }\n}\n\n// Wraps the issue fields belonging to a single issue as shown on the new case\n// page.\nclass IssueFieldGroup {\n constructor(issueId, fields) {\n this.issueId;\n this.fields = [];\n fields.forEach((field) => {\n this.fields.push(new IssueField(field));\n });\n }\n\n hide() {\n this.fields.forEach(field => field.hide());\n this.removeRequired();\n }\n\n show() {\n this.fields.forEach(field => field.show());\n this.fields.forEach(field => field.addRequired());\n }\n\n removeRequired() {\n this.fields.forEach(field => field.removeRequired());\n }\n\n forceRequired() {\n this.fields.forEach(field => field.forceRequired());\n }\n\n isEmpty() {\n return this.fields.length === 0;\n }\n\n hasMandatoryFields() {\n if (this.isEmpty()) {\n return false;\n }\n return this.fields.some(field => !field.isOptional());\n }\n\n anyFieldFilledIn() {\n return this.fields.some(field => field.filledIn());\n }\n}\n\n// Wraps a single issue field as shown on the new case page.\nclass IssueField {\n constructor(field) {\n this.domNode = field;\n this.input = this.domNode.querySelector('[data-issue-field-input]');\n }\n\n hide() {\n this.domNode.style.display = 'none';\n }\n\n show() {\n this.domNode.style.display = '';\n }\n\n // Remove the `required` attribute from the DOM node.\n removeRequired() {\n debug(\"Removing required for %O\", this.input);\n this.input.required = false;\n }\n\n // Add the `required` attribute to the DOM node if this field is required\n // when its issue is selected.\n addRequired() {\n debug(\"Setting required for %O to %s\", this.input, !this.isOptional());\n this.input.required = !this.isOptional();\n }\n\n forceRequired() {\n debug(\"Forcing required for %O\", this.input);\n this.input.required = true;\n }\n\n isOptional() {\n return this.input.dataset.optional === \"true\";\n }\n\n filledIn() {\n return this.input.value.trim() !== \"\"\n }\n}\n\nclass Comment {\n constructor(form) {\n this.heading = form.querySelector(\"[data-comment-label-heading]\");\n this.textarea = form.querySelector('#case_details');\n }\n\n filledIn() {\n return this.textarea.value.trim() !== \"\"\n }\n\n setRequired(required) {\n debug(\"Set comment required to %s\", required);\n this.textarea.required = required;\n }\n\n setTitle(title) {\n this.heading.innerText = title;\n }\n}\n\nlet newCaseDetails;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const form = document.querySelector('#new_case');\n if (form) {\n newCaseDetails = new NewCaseDetails(form);\n window.newCaseDetails = newCaseDetails;\n }\n});\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {\n AccountMenu,\n ModalContainer,\n addOnAuthChangeCallback,\n showLoginForm,\n registration,\n store\n} from 'flight-account-menu';\nimport 'flight-account-menu/dist/index.css';\n\nconst Modals = () => (\n \n);\n\nexport const initAccountMenu = () => {\n\n let previousSeenAccount = null;\n\n addOnAuthChangeCallback(\n (account) => {\n if (previousSeenAccount !== null && account !== previousSeenAccount) {\n window.location.reload();\n }\n previousSeenAccount = account;\n }\n );\n\n ReactDOM.render(, document.getElementById('flight-account-menu'));\n ReactDOM.render(, document.getElementById('flight-account-modal-container'));\n\n document.querySelectorAll('[data-login-button]').forEach(\n b => b.addEventListener('click', showLoginForm)\n );\n\n document.querySelectorAll('[data-signup-link]').forEach(\n l => l.addEventListener('click', () => store.dispatch(registration.actions.startSignUp()))\n );\n\n};\n","export const SelectionState = {\n UNSELECTED: 0,\n SOME_CHILDREN: 1,\n SELF_ONLY: 2,\n SELF_AND_CHILDREN: 3\n};\n","import React, { createContext } from 'react';\n\nconst LastCheckedContext = createContext();\n\nexport default LastCheckedContext;\n","import React from 'react';\nimport LastCheckedContext from '../LastCheckedContext';\n\nexport default class IndeterminateCheckbox extends React.Component {\n componentDidMount() {\n this.el.indeterminate = this.props.indeterminate;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.indeterminate !== this.props.indeterminate) {\n this.el.indeterminate = this.props.indeterminate;\n }\n }\n\n render() {\n const { indeterminate, ...rest } = this.props;\n return (\n \n {(value) => (\n this.shiftClick(ev, value)} ref={el => this.el = el} />\n )}\n \n );\n }\n\n shiftClick(event, context){\n let clicked = this.el;\n let lastChecked = context[\"lastChecked\"];\n if(lastChecked === null){\n context[\"updateLastChecked\"](clicked);\n } \n else {\n if(event.shiftKey){\n let siblings = lastChecked.closest(\"ul\").querySelectorAll(\".form-check-input\");\n if(Array.prototype.includes.call(siblings, clicked) && siblings.length > 2) {\n let thisIndex = Array.prototype.indexOf.call(siblings, clicked);\n let previousIndex = Array.prototype.indexOf.call(siblings, lastChecked);\n let targets = Array.prototype.slice.call(siblings, Math.min(thisIndex, previousIndex), Math.max(thisIndex, previousIndex) +1);\n let isParent = clicked.id.includes(\"Group\") || clicked.id.includes(\"all\")\n Array.prototype.forEach.call(targets, function (checkbox) {\n let checkboxParent = checkbox.id.includes(\"Group\") || checkbox.id.includes(\"all\")\n if(checkbox.checked != clicked.checked && checkboxParent === isParent) {\n checkbox.click();\n }\n });\n }\n }\n context[\"updateLastChecked\"](clicked);\n }\n }\n}\n\nIndeterminateCheckbox.defaultProps = {\n indeterminate: false,\n};\n","import React, { useState } from 'react';\n\nimport classnames from 'classnames';\nimport { SelectionState } from \"../constants\";\nimport IndeterminateCheckbox from \"./IndeterminateCheckbox\";\n\nconst ClusterPartTreeEntry = (\n {\n hideDecommissioned,\n part: {\n id, name, icon, type, children, selectionState, selfSelected, selfPending, toggleSelectionState, decommissioned\n }\n }\n) => {\n\n const ident = `${type}-${id}`;\n\n const hasChildren = children.length > 0;\n\n const selected = selectionState();\n\n const [ expanded, setExpanded ] = useState(!hasChildren || selected > 0);\n\n const classes = classnames(\n 'cluster-part',\n {\n 'pending': selfPending,\n 'selected': selected === SelectionState.SELF_ONLY || selected === SelectionState.SELF_AND_CHILDREN,\n 'text-muted': decommissioned\n }\n );\n\n const childrenShouldBePruned = !(expanded || selected > SelectionState.UNSELECTED);\n\n if (decommissioned && hideDecommissioned) {\n return null;\n } else {\n return (\n
  • \n {\n hasChildren ?\n setExpanded(!expanded)}\n type='button'\n >\n \n : null\n }\n
    \n \n
    \n \n {name}\n \n \n
    \n
    \n {\n hasChildren && !childrenShouldBePruned ?\n \n {\n children.map(\n child => (\n \n )\n )\n }\n \n : null\n }\n
  • \n );\n }\n};\n\nexport default ClusterPartTreeEntry;\n\n","import React from 'react';\n\nimport ClusterPart from \"./ClusterPart\";\n\nexport default ({ component, hideDecommissioned, selected, pending }) => {\n\n return (\n \n );\n}\n","import React from 'react';\nimport LastCheckedContext from './LastCheckedContext';\n\nexport class LastCheckedProvider extends React.Component {\n state = {\n lastChecked: null\n };\n\n render(){\n return (\n {\n this.setState({\n lastChecked: newLastChecked\n });\n }\n }\n }\n >\n {this.props.children}\n \n );\n }\n}\n","import React, { Fragment } from 'react';\n\nimport Component from \"./Component\";\nimport { LastCheckedProvider } from '../LastCheckedProvider';\n\nexport default ({ components, hideDecommissioned, selected, pending }) => (\n \n {\n components.map(\n component => (\n \n )\n )\n }\n \n);\n","import React, { Fragment, useState } from 'react';\nimport classnames from 'classnames';\nimport { SelectionState } from '../constants';\n\nconst ResultPart = ({ hideDecommissioned, part }) => {\n const selectionState = part.selectionState();\n\n const [ isExpanded, setExpanded ] = useState(true);\n\n const classes = classnames({\n 'text-muted': !part.selfSelected,\n 'pending': part.selfPending\n });\n\n const relevantChildren = part.children.filter(\n c => c.selectionState() !== SelectionState.UNSELECTED\n );\n\n const ulClasses = classnames(\n 'fa-ul',\n 'collapse',\n {\n 'show': isExpanded\n }\n );\n\n if (part.decommissioned && hideDecommissioned) {\n return null;\n } else {\n return (\n
  • \n {\n relevantChildren.length > 0 ?\n setExpanded(!isExpanded)}\n type='button'\n >\n \n : null\n }\n \n \n { part.name }\n \n
      \n {\n relevantChildren.map(\n c => \n )\n }\n
    \n
  • \n );\n }\n};\n\nexport default ({ selections, hideDecommissioned }) => selections.length > 0 ? (\n \n {\n selections.map(\n part => \n )\n }\n \n) :
  • None
  • ;\n","import { SelectionState } from \"./constants\";\n\nexport class ClusterPart {\n constructor(spec, parent) {\n this.id = spec.id;\n this.name = spec.name;\n this.icon = spec.icon;\n this.type = spec.type;\n this.selfSelected = spec.selected || false;\n this.supportType = spec.supportType;\n this.selfPending = spec.pending;\n this.decommissioned = spec.decommissioned || false;\n\n this.children = [];\n\n this.parent = parent;\n\n this.anyChildrenSelected = this.anyChildrenSelected.bind(this);\n this.selfAndAllChildrenSelected = this.selfAndAllChildrenSelected.bind(this);\n this.selectionState = this.selectionState.bind(this);\n this.toggleSelectionState = this.toggleSelectionState.bind(this);\n this.onSelectionStateChange = this.onSelectionStateChange.bind(this);\n }\n\n anyChildrenSelected() {\n return this.children.some(\n c => c.selfSelected || (c.anyChildrenSelected && c.anyChildrenSelected())\n );\n }\n\n selfAndAllChildrenSelected() {\n if (this.children.length === 0) {\n return this.selfSelected;\n }\n return this.selfSelected && this.children.every(\n c => c.selfAndAllChildrenSelected()\n );\n }\n\n setAllSelected(selected, ignoreHandler=false) {\n this.children.forEach(c => c.setAllSelected(selected, true));\n this.selfSelected = selected;\n if (!ignoreHandler) {\n this.onSelectionStateChange();\n }\n }\n\n selectionState() {\n const anyChildren = this.anyChildrenSelected();\n if (this.selfSelected) {\n if (anyChildren) {\n return SelectionState.SELF_AND_CHILDREN;\n }\n return SelectionState.SELF_ONLY;\n }\n else if (anyChildren) {\n return SelectionState.SOME_CHILDREN;\n }\n return SelectionState.UNSELECTED;\n }\n\n toggleSelectionState() {\n this.selfSelected = !this.selfSelected;\n this.onSelectionStateChange();\n }\n\n onSelectionStateChange() {\n if (this.parent && this.parent.onSelectionStateChange) {\n this.parent.onSelectionStateChange()\n }\n }\n}\n\nclass Asset extends ClusterPart {\n}\n\nclass AssetGroup extends ClusterPart {\n constructor(spec, parent) {\n super(spec, parent);\n this.children = spec.assets.map(a => new Asset(a, this));\n }\n\n toggleSelectionState() {\n const current = this.selectionState();\n\n switch (current) {\n case SelectionState.UNSELECTED:\n case SelectionState.SOME_CHILDREN:\n this.selfSelected = true;\n break;\n case SelectionState.SELF_ONLY:\n this.setAllSelected(this.children.length > 0, true);\n break;\n case SelectionState.SELF_AND_CHILDREN:\n this.setAllSelected(!this.selfAndAllChildrenSelected(), true);\n break;\n }\n\n this.onSelectionStateChange();\n\n }\n}\n\nexport class Component extends ClusterPart {\n constructor(spec, parent) {\n super(spec, parent);\n\n const componentChildren = spec.components.map(c => new Component(c, this));\n const assetGroupChildren = spec.assetGroups.map(agc => new AssetGroupCategory(agc, this));\n const ungrouped = spec.assets.map(ug => new Asset(ug, this));\n const groupsAndUngrouped = ungrouped.concat(assetGroupChildren);\n\n if (componentChildren.length > 0) {\n this.children.push(\n new Pseudogroup({\n id: this.id,\n type: 'allcomponents',\n name: 'Components',\n icon: 'fa-gears',\n children: componentChildren\n }, this)\n );\n }\n\n if (groupsAndUngrouped.length > 0) {\n this.children.push(\n new Pseudogroup({\n id: this.id,\n type: 'allassets',\n name: 'Assets',\n icon: 'fa-cubes',\n children: groupsAndUngrouped\n }, this)\n )\n }\n }\n\n toggleSelectionState() {\n const current = this.selectionState();\n\n switch (current) {\n case SelectionState.UNSELECTED:\n case SelectionState.SOME_CHILDREN:\n this.selfSelected = true;\n break;\n case SelectionState.SELF_ONLY:\n // If we have no children, just do a simple toggle\n this.setAllSelected(this.children.length > 0, true);\n break;\n case SelectionState.SELF_AND_CHILDREN:\n const allChildren = this.selfAndAllChildrenSelected();\n this.setAllSelected(!allChildren, true);\n break;\n }\n\n this.onSelectionStateChange();\n }\n}\n\nexport class Pseudogroup extends ClusterPart {\n constructor(spec, parent) {\n super(spec, parent);\n this.children = spec.children;\n }\n\n setAllSelected(selected, ignoreHandler=false) {\n // We never want a pseudogroup to mark itself selected\n this.children.forEach(c => c.setAllSelected(selected, true));\n if (!ignoreHandler) {\n this.onSelectionStateChange();\n }\n }\n\n selfAndAllChildrenSelected() {\n if (this.children.length === 0) {\n return true;\n }\n return this.children.every(\n c => c.selfAndAllChildrenSelected()\n );\n }\n\n selectionState() {\n const selectedChildren = this.children.filter(c => c.selectionState() > SelectionState.UNSELECTED);\n const minChildSelectionState = selectedChildren.length > 0 ?\n Math.min(...selectedChildren.map(c => c.selectionState())) :\n SelectionState.UNSELECTED;\n\n if (minChildSelectionState >= SelectionState.SELF_ONLY && selectedChildren.length === this.children.length) {\n return SelectionState.SELF_AND_CHILDREN;\n }\n else if (selectedChildren.length > 0) {\n return SelectionState.SOME_CHILDREN;\n }\n return SelectionState.UNSELECTED;\n }\n\n toggleSelectionState() {\n const current = this.selectionState();\n switch (current) {\n case SelectionState.UNSELECTED:\n case SelectionState.SELF_ONLY:\n case SelectionState.SOME_CHILDREN:\n this.setAllSelected(true, true);\n this.selfSelected = false; // We never want a pseudogroup to consider itself selected\n\n break;\n case SelectionState.SELF_AND_CHILDREN:\n this.setAllSelected(false, true);\n break;\n }\n\n this.onSelectionStateChange();\n }\n}\n\nclass AssetGroupCategory extends Pseudogroup {\n constructor(spec, parent) {\n super(spec, parent);\n this.children = spec.groups.map(ag => new AssetGroup(ag, this));\n }\n\n selectionState() {\n const selectedChildren = this.children.filter(c => c.selectionState() > SelectionState.UNSELECTED);\n const minChildSelectionState = selectedChildren.length > 0 ?\n Math.min(...selectedChildren.map(c => c.selectionState())) :\n SelectionState.UNSELECTED;\n\n if (minChildSelectionState > SelectionState.SELF_ONLY && selectedChildren.length === this.children.length) {\n return SelectionState.SELF_AND_CHILDREN;\n }\n else if (selectedChildren.length > 0) {\n return SelectionState.SOME_CHILDREN;\n }\n return SelectionState.UNSELECTED;\n }\n\n toggleSelectionState() {\n const current = this.selectionState();\n switch (current) {\n case SelectionState.UNSELECTED:\n case SelectionState.SELF_ONLY:\n // Select only immediate children (e.g. asset groups)\n this.children.forEach(\n c => c.selfSelected = true\n );\n break;\n case SelectionState.SOME_CHILDREN:\n // Select all asset groups and assets\n this.setAllSelected(true, true);\n\n break;\n case SelectionState.SELF_AND_CHILDREN:\n // Select nothing\n this.setAllSelected(false, true);\n break;\n }\n this.selfSelected = false; // We never want a pseudogroup to consider itself selected\n\n this.onSelectionStateChange();\n }\n}\n","import React, { Fragment } from 'react';\nimport ReactDOM from 'react-dom';\nimport Forest from \"./components/Forest\";\nimport ResultsTree from \"./components/ResultsTree\";\n\nimport { Component } from './model';\n\nimport { LastCheckedProvider } from './LastCheckedProvider';\n\nconst _extractSelectedChildrenInner = (acc, component) => {\n if (component.selfSelected) {\n acc.push(component);\n }\n return acc.concat(component.children.reduce(_extractSelectedChildrenInner, []))\n};\n\n// Recursively extracts only those components that are directly (e.g. self)\n// selected.\nconst extractSelectedChildren = (components) => components.reduce(_extractSelectedChildrenInner, []);\n\nclass ClusterTree extends React.Component {\n constructor(props) {\n super(props);\n\n const { initialTree, decommissionedDefault, allSitesContext } = props;\n\n const componentList = initialTree.map(c => new Component(c, this));\n this.state = {\n components: componentList,\n hideDecommissioned: !decommissionedDefault,\n selections: componentList.filter(c => c.selectionState() > 0)\n };\n\n this.onSelectionStateChange = this.onSelectionStateChange.bind(this);\n this.dispatchEvent = this.dispatchEvent.bind(this);\n this.setHideDecommissioned = this.setHideDecommissioned.bind(this);\n }\n\n componentDidMount() {\n this.dispatchEvent();\n }\n\n onSelectionStateChange() {\n this.setState({\n selections: this.state.components.filter(c => c.selectionState() > 0)\n });\n this.dispatchEvent();\n }\n\n dispatchEvent() {\n const evt = new CustomEvent(\n 'clusterTreeUpdate',\n {\n detail: {\n selectedItems: extractSelectedChildren(this.state.components)\n }\n });\n document.dispatchEvent(evt);\n }\n\n setHideDecommissioned(hide) {\n this.setState({ hideDecommissioned: hide });\n }\n\n render() {\n const { hideDecommissioned } = this.state;\n const { allowDecommissioned } = this.props;\n const { allSitesContext } = this.props\n const klass = allSitesContext === true ? \"invisible-decommissioned-control\" : \"decommissioned-control\"\n\n return (\n \n { allowDecommissioned &&\n ReactDOM.createPortal(\n
    \n \n this.setHideDecommissioned(!e.target.checked)}\n className={'decommissioned-checkbox'}\n />\n
    ,\n document.getElementById('decommissioned-checkbox')\n )\n }\n \n \n {\n this.props.target ?\n ReactDOM.createPortal(\n ,\n this.props.target\n ) : null\n }\n \n
    \n );\n }\n}\n\n\nconst createClusterTree = (rootElement, index) => {\n const initialTree = JSON.parse(rootElement.dataset.clusterTree);\n const target = rootElement.dataset.target ? document.querySelector(rootElement.dataset.target) : null;\n const allowDecommissioned = JSON.parse(rootElement.dataset.allowDecommissioned);\n const decommissionedDefault = rootElement.dataset.decommissionedDefault ? \n JSON.parse(rootElement.dataset.decommissionedDefault) : false;\n const allSitesContext = rootElement.dataset.allSitesContext ? \n JSON.parse(rootElement.dataset.allSitesContext) : false;\n\n ReactDOM.render(\n ,\n rootElement\n );\n rootElement.dataset.initialised = true;\n};\n\nconst fixDropdownClusterTree = (_, tree) => {\n const dropdown = $(tree).closest('.dropdown');\n dropdown.on('hide.bs.dropdown', function(e) {\n if (e.clickEvent) {\n // If the original click event came from something inside the dropdown,\n // return false to cancel the hide and leave the dropdown showing.\n return !$.contains(dropdown[0], e.clickEvent.target);\n }\n })\n};\n\nexport const initClusterTrees = () => {\n document.querySelectorAll('[data-cluster-tree]').forEach( (t, index) => createClusterTree(t, index));\n $('.dropdown-menu .cluster-tree').on('click', fixDropdownClusterTree);\n\n $(\"[data-load-content-from]\").on(\"loadContent.loaded\", (event, dropdown) => {\n dropdown.querySelectorAll('[data-cluster-tree]').forEach( (t, index) => createClusterTree(t, index));\n $('.dropdown-menu .cluster-tree').each(fixDropdownClusterTree)\n });\n};\n","import React from 'react';\n\nconst STATE_ICONS = {\n 'queued': 'clock-o',\n 'open': 'circle-o',\n 'resolved': 'check-circle-o',\n 'verified': 'check-circle',\n 'closed': 'lock',\n 'notice': 'info-circle',\n 'rejected': 'times-circle'\n};\n\nconst CaseStateBadge = ({ state }) => {\n\n const icon = STATE_ICONS[state];\n\n return (\n \n { icon ? : null }\n \n {state}\n \n \n );\n};\n\nexport default ({ model }) => (\n \n \n \n \n {model['display_id']}\n \n \n \n \n {model['subject']}\n \n \n);\n","import React from 'react';\nimport CaseSearchResult from './CaseSearchResult';\nimport SiteSearchResult from \"./SiteSearchResult\";\nimport ComponentSearchResult from \"./ComponentSearchResult\";\n\nconst ErrorResult = () => (\n \n Search is currently unavailable\n \n);\n\nconst RESULT_RENDERERS = {\n 'cases': CaseSearchResult,\n 'components': ComponentSearchResult,\n 'error': ErrorResult,\n 'sites': SiteSearchResult\n};\n\nconst GenericResult = ({ model: { gid } }) => (\n Unknown search result type with GID {gid}\n);\n\nconst SearchResult = ({ result }) => {\n const SpecificResult = RESULT_RENDERERS[result['_index']] || GenericResult;\n\n return \n};\n\nexport default SearchResult;\n","import React from 'react';\n\nexport default ({ model }) => {\n const hasShortcode = !!model['shortcode'];\n const hasParent = !!model['parent'];\n return (\n \n \n \n \n {hasShortcode ? model['shortcode'] : model['name']}\n \n
    \n {\n model['support']['icon'] ? : null\n }\n {\n model['support']['type']\n }\n
    \n
    \n \n {\n hasShortcode ?\n model['namespaced_name']\n : hasParent ?\n model['parent']['name']\n : model['site']['name']\n }\n \n
    \n );\n}\n","import React from 'react';\n\nexport default ({ model }) => (\n \n \n \n \n {model['shortcode']}\n \n \n \n {model['name']}\n \n \n);\n","import React from 'react';\n\nimport Autosuggest from 'react-autosuggest';\nimport SearchResult from \"./SearchResult\";\n\nconst renderSuggestion = (result) => ;\n\nconst MIN_QUERY_LENGTH = 2;\n\nlet abortController;\n\nconst fetchSuggestions = (query, loadingFunc, suggestionFunc) => {\n if (abortController) {\n abortController.abort(); // Abort any in-progress fetches\n abortController = null;\n }\n if (!query || query.length < MIN_QUERY_LENGTH) {\n suggestionFunc([]);\n loadingFunc(false);\n return;\n }\n loadingFunc(true);\n\n abortController = new AbortController();\n const abortSignal = abortController.signal;\n\n const data = {\n q: query\n };\n\n fetch(\n '/search', {\n method: 'POST',\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n signal: abortSignal\n }\n ).then(\n response => {\n loadingFunc(false);\n if (response.ok) {\n return response.json();\n }\n else {\n suggestionFunc([{\n '_index': 'error',\n '_source': {\n error: response.statusText\n }\n }]);\n throw new Error(response.statusText);\n }\n }\n ).then(\n data => {\n suggestionFunc(data);\n abortController = null;\n }\n ).catch(\n err => {\n if (!err instanceof DOMException) {\n loadingFunc(false);\n // DOMException raised when fetch aborts\n throw(err);\n }\n }\n );\n};\n\nconst getSuggestionValue = (suggestion) => {\n return suggestion['_source']['gid'] || '';\n};\n\nconst Omnisearch = () => {\n\n const [suggestions, setSuggestions] = React.useState([]);\n const [isLoading, setLoading] = React.useState(false);\n const [queryString, setQueryString] = React.useState('');\n\n const renderInputComponent = inputProps => (\n
    \n \n
    \n fetchSuggestions(queryString, setLoading, setSuggestions)}\n >\n \n \n
    \n
    \n );\n\n return (\n setQueryString(e.target.value),\n placeholder: 'Search Flight Center...',\n value: queryString || ''\n }}\n getSuggestionValue={getSuggestionValue}\n highlightFirstSuggestion\n onSuggestionsClearRequested={\n () => setSuggestions([])\n }\n onSuggestionsFetchRequested={\n ({ value }) => fetchSuggestions(value, setLoading, setSuggestions)\n }\n onSuggestionSelected={\n (evt, { suggestion }) => {\n evt.stopPropagation();\n evt.preventDefault();\n\n if (suggestion['_index'] === 'error') {\n return false;\n }\n const url = suggestion['_source'].url;\n if (typeof(window) !== 'undefined' && url) {\n window.location = url;\n }\n }\n }\n renderInputComponent={renderInputComponent}\n renderSuggestion={renderSuggestion}\n suggestions={suggestions}\n />\n );\n};\n\nexport default Omnisearch;\n","import React from 'react';\nimport { Collapse } from 'reactstrap';\n\nconst Container = ({ children, className, href, icon, title }) => {\n\n const [expanded, setExpanded] = React.useState(true);\n return (\n
    \n
    \n setExpanded(!expanded)}\n type='button'\n >\n \n \n \n { title }\n \n
    \n \n
    \n { children }\n
    \n
    \n
    \n );\n};\n\nexport default Container;\n","import React from 'react';\nimport classNames from 'classnames';\n\nconst POWER_STATES = ['on', 'off'];\nconst MAINTENANCE_STATES = ['under_maintenance', 'investigating_problem'];\n\nconst Asset = ({ asset, className }) => (\n \n \n { asset.name }\n \n {\n POWER_STATES.indexOf(asset.metadata['power_state']) > -1 ? (\n \n ) : ''\n }\n {\n MAINTENANCE_STATES.indexOf(asset.metadata['maintenance_state']) > -1 ? (\n \n ) : ''\n }\n
    \n \n);\n\nfunction powerClassname(power_state){\n if (power_state === undefined) {\n return '';\n }\n const prefix = 'powered-';\n return prefix + power_state;\n};\n\nfunction maintenanceClassname(maintenance_state){\n if (maintenance_state === undefined) {\n return '';\n }\n return maintenance_state;\n};\n\n\nexport default Asset;\n","import React from 'react';\nimport Container from \"./Container\";\nimport Asset from \"./Asset\";\nimport classNames from \"classnames\";\n\nconst AssetGroup = ({ group, showDecommissioned }) => (\n \n
    \n {\n group.assets.filter(\n a => showDecommissioned || !a.decommissioned\n ).map(\n asset => (\n \n )\n )\n }\n
    \n \n);\n\nexport default AssetGroup;\n","import React from 'react';\nimport Container from \"./Container\";\nimport AssetGroup from \"./AssetGroup\";\n\nconst Category = ({ category, showDecommissioned }) => (\n \n {\n category.groups.filter(\n ag => showDecommissioned || !ag.decommissioned\n ).map(\n group => (\n \n )\n )\n }\n \n);\n\nexport default Category;\n","import React from 'react';\n\nimport { FormGroup, Input, Label } from 'reactstrap';\n\nimport Container from \"./Container\";\nimport Category from \"./Category\";\nimport AssetGroup from \"./AssetGroup\";\n\nexport default ({ data }) => {\n\n const [showDecommissioned, setShowDecommissioned] = React.useState(false);\n\n return (\n \n \n \n \n\n \n {\n (data.assets || []).length > 0 ?\n // These assets have no group. Let's create a fake one to hold them.\n showDecommissioned || !a.decommissioned),\n name: 'Assets',\n icon: 'fa-cubes'\n }}\n showDecommissioned={showDecommissioned}\n />\n :\n null\n }\n {\n (data.assetGroups || []).map(\n (agc) => (\n \n )\n )\n }\n \n \n );\n};\n","export const getAndDenormalise = (url) => {\n return new Promise(\n (resolve, reject) => {\n fetch(\n url,\n {\n credentials: 'include',\n headers: {\n 'Accept': 'application/vnd.api+json'\n }\n }\n ).then(\n response => response.json().then(\n data => {\n resolve(denormaliseAPIResponse(data));\n }\n )\n ).catch(\n err => reject(err)\n );\n }\n )\n}\n\nconst denormaliseAPIResponse = (response) => {\n const record = {\n ...response.data,\n relationships: {}\n };\n\n Object.entries(response.data.relationships).forEach(\n ([relationship, objects]) => {\n if (Array.isArray(objects.data)) {\n record.relationships[relationship] = objects.data.map(\n ac => {\n const included = response.included.find(\n i => i.type === ac.type && i.id === ac.id\n );\n\n if (included) {\n return denormaliseAPIResponse(\n {\n data: included,\n included: response.included\n }\n );\n }\n return ac;\n }\n );\n }\n else if (!objects.data) {\n record.relationships[relationship] = null;\n }\n else {\n record.relationships[relationship] = response.included.find(\n i => i.type === objects.data.type && i.id === objects.data.id\n ) || objects.data;\n }\n }\n );\n\n return record;\n}\n","import React from 'react';\n\nconst Loading = () => (\n
    \n \n Loading...\n
    \n);\n\nexport default Loading;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styled from 'styled-components';\nimport Asset from \"./Asset\";\n\nconst calculateColumnBound = (bound) => ({ parent, reverseView, ...props }) => {\n\n const attributes = props.asset ? props.asset : props.container.attributes;\n\n if (parent && reverseView) {\n const inverseBound = bound === 'start' ? 'end' : 'start';\n return 1 + parent.attributes['x_capacity'] - (attributes[`x_${inverseBound}_position`] || 0);\n }\n else {\n return 1 + (attributes[`x_${bound}_position`] || 0);\n }\n}\n\nconst Inner = styled.div`\n border: 1px solid black;\n \n min-height: ${ props => `${props.container.attributes['y_capacity'] * 2}rem` };\n margin: 0.5rem;\n \n display: grid;\n grid-template-columns: repeat(${ props => props.container.attributes['x_capacity']}, 1fr);\n grid-template-rows: auto repeat(${ props => props.container.attributes['y_capacity']}, 1fr);\n \n grid-row-start: ${ props => 2 + (props.container.attributes['y_start_position'] || 0) };\n grid-row-end: ${ props => 2 + (props.container.attributes['y_end_position'] || 0) };\n grid-column-start: ${ calculateColumnBound('start') };\n grid-column-end: ${ calculateColumnBound('end') };\n\n`;\n\nInner.propTypes = {\n container: PropTypes.object.isRequired\n};\n\nconst Label = styled.div`\n background-color: #2C3E50;\n color: white;\n grid-row: 1;\n grid-column: 1 / span ${ props => props.columnSpan };\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n`;\n\nconst RenderedAsset = styled(Asset)`\n grid-row-start: ${ props => 2 + (props.asset['y_start_position'] || 0) };\n grid-row-end: ${ props => 2 + (props.asset['y_end_position'] || 0) };\n grid-column-start: ${ calculateColumnBound ('start') };\n grid-column-end: ${ calculateColumnBound( 'end') };\n`;\n\nconst Blurry = styled.div`\n filter: blur(1px);\n`;\n\nconst AnonymousAsset = ({ onClick }) => (\n \n \n ---\n \n);\n\nconst AnonymousContainer = ({ onClick }) => (\n \n \n \n \n \n)\n\nconst RenderedAssetContainer = ({ container, parent, reverseView, setActiveContainer }) => {\n\n return (\n \n {setActiveContainer(container); e.stopPropagation(); e.preventDefault();}}\n columnSpan={container.attributes['x_capacity']}\n >\n {container.attributes.name}\n \n {\n container.relationships.child_containers.map(\n cc => (\n cc.attributes ? (\n \n ) : (\n setActiveContainer(container)}\n />\n )\n )\n )\n }\n {\n container.relationships.assets.map(\n a => (\n !!a.attributes ? (\n \n )\n : (\n setActiveContainer(container)}\n />\n )\n )\n )\n }\n \n )\n}\n\nexport default RenderedAssetContainer;\n","import React from 'react';\nimport {getAndDenormalise} from \"../../utils\";\nimport Loading from \"../../Loading\";\nimport RenderedAssetContainer from \"./RenderedAssetContainer\";\n\nconst ParentLink = ({ onClick, parent }) => (\n {e.preventDefault(); e.stopPropagation(); onClick(e);}}\n tabIndex={1}\n >\n \n Back to {parent.attributes.name}\n \n);\n\nconst AssetContainer = ({ containerID, setActiveContainer }) => {\n\n const [ container, setContainer ] = React.useState(null);\n const [ loading, setLoading ] = React.useState(false);\n const [ reverseView, setReverseView ] = React.useState(false);\n\n React.useEffect(\n () => {\n setLoading(true);\n getAndDenormalise(\n `/api/v2/asset-containers/${containerID}?include=assets,child_containers,parent_container,child_containers.assets,child_containers.child_containers`\n ).then(\n container => {\n setContainer(container);\n setLoading(false);\n }\n )\n },\n [containerID]\n );\n\n if (loading) {\n return ;\n }\n\n if (!container) {\n return null;\n }\n\n return (\n
    \n {\n container.relationships.parent_container ?\n (\n setActiveContainer(container.relationships.parent_container)}\n parent={container.relationships.parent_container}\n />\n )\n : null\n }\n
    \n

    \n {\n reverseView ? 'Rear' : 'Front'\n } view\n

    \n setReverseView(!reverseView)}\n type='button'\n >\n Switch view\n \n
    \n \n
    \n );\n}\n\nexport default AssetContainer;\n","import React from 'react';\nimport { FormGroup, Input, Label } from \"reactstrap\";\nimport AssetContainer from \"./AssetContainer\";\n\nconst ContainerOption = ({ container, nestingLevel=0 }) => (\n \n \n {\n container.relationships['child_containers'].map(\n cc => (\n \n )\n )\n }\n \n);\n\nconst ContainerSelection = ({ containers, onSelect, selected }) => {\n if (containers.length === 0) {\n return (\n

    This component has no physical layouts defined.

    \n )\n }\n\n const containersById = {};\n containers.forEach(\n container => {\n containersById[container.id] = container\n }\n );\n\n const topLevelContainers = containers.filter(\n ac => !ac.relationships['parent_container']\n );\n\n return (\n \n \n onSelect(containersById[e.target.value])}\n type='select'\n value={containersById[selected] ? selected : ''}\n >\n \n Select a layout...\n \n {\n topLevelContainers.map(\n ac => (\n \n )\n )\n }\n \n \n )\n}\n\nconst Component = ({ component, preselect }) => {\n\n const [containerID, setContainerID] = React.useState(preselect);\n\n React.useEffect(\n () => {\n const handleHistoryChange = (event) => {\n if (event.state && event.state.containerID) {\n setContainerID(event.state.containerID);\n }\n };\n window.addEventListener('popstate', handleHistoryChange);\n\n return () => {\n window.removeEventListener('popstate', handleHistoryChange);\n }\n },\n []\n );\n\n const selectContainer = (container) => {\n let newUrl = `./${container.attributes.hashid}`;\n if (window.location.pathname.match(/layouts$/)) {\n newUrl = `${window.location.pathname}/${container.attributes.hashid}`;\n }\n window.history.pushState(\n { containerID: container.id },\n '',\n newUrl\n );\n setContainerID(container.id);\n }\n\n return (\n
    \n

    Physical layouts for {component.attributes.name}

    \n\n \n\n {\n containerID !== '' ?\n \n : null\n }\n\n
    \n );\n};\n\nexport default Component;\n","import React from 'react';\nimport Component from \"./Component\";\nimport { getAndDenormalise } from \"../../utils\";\nimport Loading from \"../../Loading\";\n\nconst AssetContainerVisualiser = ({ componentID, preselect }) => {\n const [ component, setComponent ] = React.useState(null);\n const [ isLoading, setLoading ] = React.useState(true);\n\n React.useEffect(\n () => {\n setLoading(true);\n getAndDenormalise(\n `/api/v2/components/${componentID}?include=asset_containers`\n ).then(\n component => {\n setComponent(component);\n setLoading(false);\n }\n );\n },\n [componentID]\n );\n\n if (isLoading) {\n return ;\n }\n\n return (\n \n );\n}\n\nexport default AssetContainerVisualiser;\n","import React from 'react';\n\nexport default ({ onChange, options, siteID, value }) => {\n\n const editor = React.createRef();\n\n React.useEffect(\n () => {\n // I am very sorry for using jQuery within React. Please forgive me.\n // But it does somewhat neatly tie in to the existing Md preview system.\n window.configureEditor($(editor.current));\n },\n []\n );\n\n return (\n
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n\n
    \n \n \n Styling with Markdown is supported\n \n \n Showing Markdown preview\n \n \n Write\n \n \n Preview\n \n \n
    \n )\n}\n","import React from 'react';\n\nimport { Button, Label } from 'reactstrap';\nimport Datetime from 'react-datetime';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nrequire('react-datetime/css/react-datetime.css');\n\nconst DATE_FORMAT = 'ddd Do MMM YYYY';\nconst TIME_FORMAT = 'HH:mm';\n\nconst EventWindowForm = ({ event, highlighted, index, onDelete, onUpdate, showDelete, window }) => {\n\n const updateWindow = (attrs) => onUpdate({ ...window, ...attrs });\n\n const idPrefix = `event_event_windows_${index}`;\n const startFieldID = `${idPrefix}_start_time`;\n const endFieldID = `${idPrefix}_end_time`;\n\n const parsedStart = moment(window['start_time']);\n const parsedEnd = moment(window['end_time']);\n\n const earliestStart = moment().businessAdd(event.expiry_range, 'day');\n const earliestEnd = parsedStart.clone().add(event.duration, 'seconds');\n\n // NB These methods are only used to determine which dates are enabled in the\n // picker, not to restrict time entry; we therefore want to allow from the\n // start of the earliest valid day.\n const isValidStartDate = (date) => date.isSameOrAfter(earliestStart.clone().startOf('day'));\n const isValidEndDate = (date) => date.isSameOrAfter(earliestEnd.clone().startOf('day'));\n\n return (\n
    \n \n {index + 1}.\n \n \n newDate._isAMomentObject && updateWindow({ start_time: moment.max(earliestStart, newDate) })}\n timeFormat={TIME_FORMAT}\n value={parsedStart}\n />\n \n newDate._isAMomentObject && updateWindow({ end_time: moment.max(earliestEnd, newDate) })}\n timeFormat={TIME_FORMAT}\n value={parsedEnd}\n />\n {\n showDelete ?\n (\n \n \n \n )\n : null}\n {\n window.id ? : null\n }\n
    \n )\n};\n\nexport default EventWindowForm;\n","import React from 'react';\n\nimport FullCalendar from '@fullcalendar/react';\nimport moment from 'moment';\n\nimport bootstrapPlugin from \"@fullcalendar/bootstrap\";\nimport interactionPlugin from '@fullcalendar/interaction';\nimport momentPlugin from \"@fullcalendar/moment\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\n\nimport '@fullcalendar/core/main.css';\nimport '@fullcalendar/daygrid/main.css';\nimport '@fullcalendar/timegrid/main.css';\nimport '@fullcalendar/list/main.css';\nimport '@fullcalendar/bootstrap/main.css';\n\nconst postProcessCalendar = (event, allEvents) => allEvents.filter(\n e => e.id !== event.id && e.eventID !== event.id\n).map(\n e => ({\n ...e,\n popoverTitle: undefined,\n popoverContent: undefined,\n url: undefined,\n backgroundColor: '#CCCCCC'\n })\n);\n\nconst mapTime = (time) => {\n if (time._isAMomentObject) {\n return time.format()\n }\n return time;\n};\n\nconst mapWindow = highlightedIndex => (w, idx) => ({\n id: `window${idx}`,\n backgroundColor: highlightedIndex === idx ? '#3498db' : '#9fff9e',\n textColor: highlightedIndex === idx ? '#FFFFFF' : '#000000',\n start: mapTime(w['start_time']),\n end: mapTime(w['end_time']),\n title: `Availability window ${idx + 1}`,\n editable: true,\n windowIndex: idx\n});\n\nconst fetchEventsForCalendar = (event) => (info, onSuccess, onFailure) => {\n const url = new URL('/calendar.json', window.location.origin);\n\n url.searchParams.append('from', info.startStr);\n url.searchParams.append('to', info.endStr);\n\n fetch(\n url, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n }\n ).then(\n (response) => {\n if (response.ok) {\n response.json().then(\n allEvents => onSuccess(\n postProcessCalendar(event, allEvents)\n )\n );\n }\n else {\n onFailure(response);\n }\n\n }\n ).catch(onFailure)\n};\n\n\nconst EventCalendar = ({ earliestStart, event, highlightedIndex, onCreate, onUpdate, onViewChange, onWindowClick, windows }) => {\n\n const calendarRef = React.createRef();\n\n const handleUpdate = ({ event }) => {\n const windowIndex = event.extendedProps.windowIndex;\n onUpdate(windowIndex)({\n start_time: event.start,\n end_time: event.end,\n });\n };\n\n const handleCreate = ({ startStr, endStr }) => {\n calendarRef.current.getApi().unselect(); // https://github.com/fullcalendar/fullcalendar/issues/5266\n onCreate({\n start_time: startStr,\n end_time: endStr\n });\n };\n\n // https://github.com/fullcalendar/fullcalendar-react/issues/46\n const fixInitialRenderBug = React.useEffect(\n () => {\n setTimeout(\n () => {\n const api = calendarRef.current.getApi();\n api.updateSize();\n api.scrollToTime('08:30:00');\n },\n 100\n )\n },\n []\n );\n\n return (\n onViewChange(arg.view.activeStart, arg.view.activeEnd)}\n defaultView='timeGridWeek'\n eventBorderColor='black'\n eventClick={({ event }) => onWindowClick(event.extendedProps.windowIndex)}\n eventDrop={handleUpdate}\n eventResize={handleUpdate}\n eventSources={[\n {\n events: fetchEventsForCalendar(event)\n },\n {\n events: windows.map(mapWindow(highlightedIndex))\n }\n ]}\n firstDay={1}\n height={500}\n plugins={[ bootstrapPlugin, interactionPlugin, momentPlugin, timeGridPlugin]}\n ref={calendarRef}\n select={handleCreate}\n selectable\n selectAllow={({ start }) => moment(start).isSameOrAfter(earliestStart)}\n validRange={{ start: earliestStart.clone().subtract(1, 'day').format('YYYY-MM-DD') }}\n views={{\n timeGridWeek: {\n allDaySlot: false,\n columnHeaderFormat: 'ddd Do',\n nowIndicator: true,\n scrollTime: '08:30:00'\n }\n }}\n />\n );\n};\n\nexport default EventCalendar;\n","import moment from \"moment\";\n\nexport const boundWindowToEvent = (window, event) => {\n const clonedWindow = {...window};\n const earliestStart = moment().businessAdd(event.expiry_range, 'day');\n\n const parsedStart = moment(window['start_time']);\n const parsedEnd = moment(window['end_time']);\n\n const newStart = moment.max(parsedStart, earliestStart);\n clonedWindow['start_time'] = newStart.format();\n\n const earliestEnd = newStart.clone().add(event.duration, 'seconds');\n clonedWindow['end_time'] = moment.max(parsedEnd, earliestEnd).format();\n\n return clonedWindow;\n};\n\nexport const boundWindowsToEvent = (windows, event) => windows.map(w => boundWindowToEvent(w, event));\n","import React from 'react';\n\nimport moment from 'moment-business-days';\n\nimport EventWindowForm from \"./EventWindowForm\";\nimport EventCalendar from \"./EventCalendar\";\nimport { boundWindowToEvent } from \"../constraints\";\n\nconst earliestStart = event => moment().businessAdd(event['expiry_range']);\n\nconst addNewWindow = (event, oldWindows, currentDisplayStart) => {\n\n let suggestedStart = earliestStart(event).nextBusinessDay().hour(9).minute(0);\n if ( suggestedStart < currentDisplayStart ) {\n suggestedStart = moment(currentDisplayStart).hour(9).minute(0);\n }\n const duration = moment.duration(event.duration * 1000);\n const earliestEnd = suggestedStart.clone().add(duration);\n\n return (\n [\n ...oldWindows,\n {\n start_time: suggestedStart,\n end_time: earliestEnd\n }\n ]\n );\n};\n\nexport default ({ event, windows, setWindows }) => {\n\n let currentDisplayStart = null;\n\n const [highlightedIndex, setHighlightedIndex] = React.useState(null);\n\n const onWindowUpdate = idx => window => {\n const boundWindow = boundWindowToEvent(window, event);\n const myWindows = [...windows];\n if (idx >= 0) {\n myWindows.splice(idx, 1, boundWindow);\n }\n else {\n myWindows.push(boundWindow);\n }\n setWindows(myWindows);\n };\n\n const onWindowDelete = idx => () => {\n const myWindows = [...windows];\n myWindows.splice(idx, 1);\n setWindows(myWindows);\n setHighlightedIndex(null);\n };\n\n const onViewChange = (start, end) => {\n currentDisplayStart = start;\n };\n\n return (\n \n \n setHighlightedIndex(idx === highlightedIndex ? null : idx)}\n onCreate={onWindowUpdate(-1)}\n onUpdate={onWindowUpdate}\n onViewChange={onViewChange}\n windows={windows}\n />\n
    \n {\n windows.map(\n (w, idx) => (\n 1}\n window={w}\n />\n )\n )\n }\n
    \n setWindows(addNewWindow(event, windows, currentDisplayStart))}\n type=\"button\"\n >\n \n Add another\n \n
    \n )\n}\n","import React from 'react';\nimport { FormGroup, Input, Label } from 'reactstrap';\n\nconst MetadataElement = ({ event, index, metadata }) => {\n const fieldID = `field_${index}`;\n const fieldName = `fields[${index}]`;\n\n return (\n
    \n \n \n {\n !!metadata.help ?\n \n { metadata.help }\n \n : null\n }\n
    \n )\n};\n\nconst MetadataForm = ({ event, spec }) => {\n if (spec.length === 0) {\n return null;\n }\n return (\n \n \n
    \n {\n spec.map(\n (md, idx) => (\n \n )\n )\n }\n
    \n
    \n );\n};\n\nexport default MetadataForm;\n","import React from 'react';\n\nconst RailsFormMeta = () => {\n return (\n \n \n \n \n )\n};\n\nexport default RailsFormMeta;\n","import React, { Fragment } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Link } from 'react-router-dom';\n\nimport { Button, Col, Container, Form, FormGroup, Input, Label, Row } from 'reactstrap';\n\nimport MarkdownField from \"./MarkdownField\";\nimport EventWindowsForm from \"./EventWindowsForm\";\nimport MetadataForm from \"./MetadataForm\";\nimport RailsFormMeta from \"./RailsFormMeta\";\nimport { boundWindowsToEvent } from \"../constraints\";\n\nconst Subtitle = ({ kase }) => {\n if (!kase) {\n return null;\n }\n\n return (\n \n for \n {kase['display_id']}\n \n )\n};\n\nexport default ({ actionName, availableTypes, availableCases, event, relatedCase, stateEvent, target, windows }) => {\n\n const [statefulEvent, setStatefulEvent] = React.useState(event);\n const [eventWindows, setWindows] = React.useState(windows);\n\n const durationTotalMins = statefulEvent.duration / 60;\n const durationHours = Math.floor(durationTotalMins / 60);\n const durationMins = durationTotalMins % 60;\n\n const updateEvent = (attrs) => {\n const newEvent = { ...statefulEvent, ...attrs };\n setStatefulEvent(newEvent);\n if (attrs['duration'] || attrs['expiry_range']) {\n setWindows(boundWindowsToEvent(eventWindows, newEvent));\n }\n };\n\n const onSubmit = (event) => {\n const form = document.getElementById('event-form');\n if (!form.reportValidity()) {\n form.preventDefault();\n }\n if(statefulEvent.case_id === '' && document.body.classList.contains('admin')) {\n let submit = confirm(\"Are you sure you want to create an event without an existing case? \" + \n \"This will create a new site-level case.\");\n if(submit === true) {\n form.submit();\n } \n } else {\n form.submit();\n }\n }\n\n React.useEffect(\n () => {\n if (statefulEvent.case_id === null) {\n updateEvent({case_id: ''});\n }\n }\n );\n\n return (\n \n {\n (actionName === 'new') &&\n ReactDOM.createPortal(\n
    \n New event\n \n
    ,\n document.getElementById('subtitle')\n )\n }\n \n \n \n \n \n \n \n updateEvent({name: evt.target.value})}\n name='event[name]'\n required\n value={statefulEvent.name || ''}\n />\n \n \n \n updateEvent({type: evt.target.value})}\n name='event[type]'\n type='select'\n value={statefulEvent.type}\n >\n {\n Object.entries(availableTypes).map(\n ([t, spec], idx) => (\n \n )\n )\n }\n \n \n { actionName === 'new' &&\n document.body.classList.contains('admin') &&\n \n \n updateEvent({case_id: evt.target.value})}\n name='event[case_id]'\n type='select'\n value={statefulEvent.case_id || ''}\n disabled={actionName === 'edit'}\n >\n \n {\n Object.entries(availableCases).map(\n ([c, spec], idx) => (\n \n )\n )\n }\n \n \n }\n { !(document.body.classList.contains('admin')) &&\n \n }\n \n \n updateEvent({description: evt.target.value})}\n options={{\n id: 'event-description',\n name: 'event[description]',\n rows: 5,\n required: true\n }}\n siteID={statefulEvent['site_id']}\n />\n \n \n \n \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n The recipient will not be able to schedule an event in an\n availability window unless there is at least this much time\n before the start of the event.\n \n
    \n
    \n \n \n \n \n
    \n
    \n {\n stateEvent ? : null\n }\n {\n event.id ? : null\n }\n
    \n \n { event.id ? 'Save changes' : 'Create' }\n \n
    \n \n
    \n );\n}\n","import React from 'react';\n\nconst classesMapping = {\n \"Operations Team\": \"btn-success\",\n \"Engineering Team\": \"btn-warning\",\n \"Consultancy Team\": \"btn-danger\",\n};\n\nexport default ({ model, associations, consultancyPossible }) => {\n let question = model._source['question'];\n let answer = model._source['answer'];\n const highlighting = model['highlight'];\n if(highlighting != undefined) {\n if(highlighting['question']) question = highlighting['question'];\n if(highlighting['answer']) answer = highlighting['answer'];\n }\n\n return (\n
    \n
    \n

    \n

    \n { FaqItemCardButton(model, associations, consultancyPossible) }\n
    \n
    \n );\n}\n\nfunction FaqItemCardButton(model, associations, consultancyPossible) {\n const team = model._source[\"engineering_team\"];\n const disabled = team === \"Consultancy Team\" && consultancyPossible === \"false\";\n const classes = `btn ${classesMapping[team]} faq-item-link`;\n const text = `Create case with our ${team.toLowerCase()}`;\n if(disabled) {\n return(\n \n {text}\n \n )\n } else {\n const linkPath = `faq-items/${model._source[\"front_end_id\"]}${associations}`;\n return(\n \n {text}\n \n )\n }\n}\n\n","import React from 'react';\n\nexport default ({page, totalPages, fetchSuggestions}) => {\n\n const renderPrevious = () => {\n if(page === 1) return null;\n\n return (\n
  • \n fetchSuggestions(event, page - 1, true)}\n >\n «\n Previous\n \n
  • \n );\n };\n\n const renderNext = () => {\n if(page === totalPages) return null;\n\n return (\n
  • \n fetchSuggestions(event, page + 1, true)}\n >\n »\n Next\n \n
  • \n );\n };\n\n return (\n
    \n \n
    \n );\n}\n","import React from 'react';\nimport {useEffect} from 'react';\nimport FaqItemCard from \"./FaqItemCard\";\nimport PaginationControls from \"./PaginationControls\";\n\nconst FaqSearch = (props) => {\n const [suggestions, setSuggestions] = React.useState([]);\n const [isLoading, setLoading] = React.useState(false);\n const [queryString, setQueryString] = React.useState('');\n const [originalQueryString, setOriginalQueryString] = React.useState(queryString);\n const [successfulQuery, setSuccessfulQuery] = React.useState(false);\n const [counts, setCounts] = React.useState({total: 0, pages: 0, existing_count: 0});\n const [page, setPage] = React.useState(1);\n const associationParams = Object.keys(props.associations).length > 0 ? `?${$.param(props.associations)}` : '';\n const consultancyPossible = props.consultancyPossible;\n const queryInput = document.getElementById(\"issue-search-query\");\n const faqChooseTeamHelper = document.getElementById('faq-choose-team-helper');\n\n const scrollToTop = () => {\n const offset = 180;\n const elementPosition = queryInput.getBoundingClientRect().top;\n const offsetPosition = elementPosition + window.pageYOffset - offset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: \"smooth\"\n });\n }\n\n const fetchSuggestions = (event, selectedPage = page, pagination = false) => {\n if (event != null) event.preventDefault();\n if (!queryString || isLoading) {\n return;\n }\n setLoading(true);\n setSuggestions([]);\n setPage(selectedPage);\n let searchString = queryString;\n if (pagination) {\n scrollToTop();\n searchString = originalQueryString;\n } else {\n setOriginalQueryString(queryString);\n }\n $.ajax({\n url: 'faq-items/search',\n method: 'POST',\n data: {\n authenticity_token: window._authenticity_token,\n q: searchString,\n page: selectedPage,\n },\n }).done(function (content) {\n setSuccessfulQuery(true);\n setLoading(false);\n setCounts(content.counts);\n setSuggestions(content.results);\n }).fail(function (xhr) {\n setLoading(false);\n setSuccessfulQuery(false);\n alert(`Unable to get search results - ${xhr.status}: ${xhr.statusText}`);\n });\n };\n\n useEffect(() => {\n fetchSuggestions(null);\n }, []);\n\n const renderPaginationControls = () => {\n if (!isLoading && successfulQuery && counts.pages > 1) {\n return (\n \n )\n }\n };\n\n const displayFaqChooseTeamHelper = () => {\n if (isLoading) {\n faqChooseTeamHelper.style.display = \"none\";\n } else {\n faqChooseTeamHelper.style.display = \"block\";\n }\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n

    Search for your issue or question by keyword...

    \n
    \n

    ...Or drill down by topic

    \n
    \n
    fetchSuggestions(event, 1)}\n id=\"faq-search-form\" className=\"faq-search-element\"\n >\n
    \n setQueryString(event.target.value)}\n />\n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n Search by topic\n
    \n
    \n
    \n
    \n
    \n
    \n Loading...\n
    \n
    \n {counts.total > 1 ? `${counts.existing_count + 1} - ${counts.existing_count + suggestions.length} of ` : ''}\n {counts.total === 0 ? \"No\" : `${counts.total}`} matching result\n {counts.total === 0 || counts.total > 1 ? \"s\" : \"\"}\n
    \n
    \n
    \n {suggestions.map(result =>\n \n )}\n
    \n
    \n {renderPaginationControls()}\n {displayFaqChooseTeamHelper()}\n
    \n );\n};\n\nexport default FaqSearch;\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nimport 'core-js/stable';\n\nimport 'src/flight-store';\nimport emojiMart from 'src/emoji-mart';\nimport 'src/listGroupSelect';\nimport 'src/newCaseDetails';\nimport { initAccountMenu } from \"../src/accountMenu\";\nimport { initClusterTrees } from 'src/cluster-tree';\nimport { initCalendar } from 'src/fullcalendar';\nimport {renderOmnisearch} from \"../src/omnisearch\";\nimport {initAssetVisualiser, initAssetContainerVisualiser} from \"../src/asset-vis\";\nimport {initEventForm} from \"../src/events\";\nimport {renderFaqSearch} from \"../src/faqsearch\";\n\n// The deprecated styles from reactware can be imported by uncommenting these\n// lines.\n// import 'flight-reactware/styles/bootstrap-theme.css';\n// import 'flight-reactware/styles/flight.css';\n// import 'flight-reactware/styles/fonts.css';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n initAccountMenu();\n renderOmnisearch();\n renderFaqSearch();\n initClusterTrees();\n initCalendar();\n initAssetVisualiser(document.getElementById('assetVisualiser'));\n initAssetContainerVisualiser(document.getElementById('assetContainerVisualiser'));\n initEventForm();\n});\n\n// Export various things via `window` so that our javascript in\n// `app/assets/javascript` can reference it.\n\nwindow.emojiMart = emojiMart;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Omnisearch from './components/Omnisearch';\n\nexport const renderOmnisearch = () => {\n const target = document.querySelector('#omnisearch');\n\n if (target) {\n ReactDOM.render(\n ,\n target\n )\n }\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport FaqSearch from './components/FaqSearch';\n\nexport const renderFaqSearch = () => {\n const target = document.querySelector('#faq-search');\n\n if (target) {\n const associations = JSON.parse(target.dataset.associations);\n const consultancyPossible = target.dataset.consultancyPossible;\n ReactDOM.render(, target);\n }\n};\n","import { Calendar } from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport listPlugin from '@fullcalendar/list';\nimport bootstrapPlugin from '@fullcalendar/bootstrap';\nimport momentPlugin from '@fullcalendar/moment';\n\nimport '@fullcalendar/core/main.css';\nimport '@fullcalendar/daygrid/main.css';\nimport '@fullcalendar/timegrid/main.css';\nimport '@fullcalendar/list/main.css';\nimport '@fullcalendar/bootstrap/main.css';\n\nexport function initCalendar() {\n const calendarEl = document.getElementById('calendar-container');\n if (!calendarEl) return;\n const eventsUrl = calendarEl.dataset.calendarFeed || '/engineering/calendar_json';\n\n const calendar = new Calendar(calendarEl, {\n events: eventsUrl,\n plugins: [ dayGridPlugin, bootstrapPlugin, listPlugin, timeGridPlugin, momentPlugin],\n header: {\n left: 'prevYear,prev,next,nextYear today',\n center: 'title',\n right: 'dayGridMonth,timeGridWeek,listWeek'\n },\n height: 'parent',\n firstDay: 1, // Monday\n eventBorderColor: 'black',\n eventRender: function(info) {\n $(info.el).popover({\n html: true,\n title: info.event.extendedProps.popoverTitle,\n content: info.event.extendedProps.popoverContent,\n trigger: \"hover\",\n placement: \"top\",\n container: \"body\"\n });\n info.el.dataset.test = info.event.id;\n },\n views: {\n timeGridWeek: {\n allDaySlot: false,\n columnHeaderFormat: 'ddd Do',\n nowIndicator: true,\n scrollTime: '08:30:00'\n }\n }\n });\n\n calendar.render();\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AssetVisualiser, AssetContainerVisualiser } from \"./components\";\n\nexport const initAssetVisualiser = (target) => {\n if (target) {\n const data = JSON.parse(target.dataset.assets);\n ReactDOM.render(\n ,\n target\n )\n }\n};\n\nexport const initAssetContainerVisualiser = (target) => {\n if (target) {\n const componentID = target.dataset.componentId;\n const preselect = target.dataset.preselect;\n ReactDOM.render(\n ,\n target\n );\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { EventForm } from \"./components\";\n\nexport function initEventForm() {\n const target = document.getElementById('event-form-wrapper');\n if (target) {\n const data = target.dataset;\n ReactDOM.render(\n ,\n target\n )\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Picker } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css'\n\nexport default {\n show: (element, props={}) => {\n ReactDOM.render(\n React.createElement(Picker, props),\n element\n );\n },\n hide: (element) => ReactDOM.unmountComponentAtNode(element),\n};\n"],"sourceRoot":""}